
Este artículo contiene soluciones de tareas de codificación ASCII y codificación UU destinadas a la codificación, Hash Message Digest 5 y Hash SHA-2, para encontrar la imagen inversa del hash, Shift Cipher, shift Cipher y Pixel Madness, para componer la imagen.
Información organizacionalEspecialmente para aquellos que desean aprender algo nuevo y desarrollarse en cualquiera de las áreas de información y seguridad informática, escribiré y hablaré sobre las siguientes categorías:
- PWN;
- criptografía (criptografía);
- tecnologías de red (Red);
- inversa (ingeniería inversa);
- esteganografía (Stegano);
- búsqueda y explotación de vulnerabilidades WEB.
Además de esto, compartiré mi experiencia en informática forense, análisis de malware y firmware, ataques a redes inalámbricas y redes de área local, realización de pentests y escritura de exploits.
Para que pueda conocer nuevos artículos, software y otra información, creé un
canal en Telegram y un
grupo para discutir cualquier problema en el campo de ICD. Además, consideraré personalmente sus solicitudes personales, preguntas, sugerencias y recomendaciones
personalmente y responderé a todos .
Toda la información se proporciona solo con fines educativos. El autor de este documento no tiene ninguna responsabilidad por los daños causados a alguien como resultado del uso de los conocimientos y métodos obtenidos como resultado de estudiar este documento.
Codificación - ASCII
Comencemos con el primer trabajo: codificación-ASCII.

Pasamos a la tarea misma. Vemos una secuencia de 16 caracteres. La primera suposición es un hexadecimal regular (todos los caracteres se presentan en la 16ª forma).

s = "4C6520666C6167206465206365206368616C6C656E6765206573743A203261633337363438316165353436636436383964356239313237356433323465" s.decode("hex")

Obtenemos la respuesta y seguimos adelante.
Codificación - UU

Pasamos a la tarea misma. Incluso a pesar de la sugerencia en el nombre de la tarea, es fácil distinguir archivos en UUE (codificación para transferir archivos que contienen datos que no son de texto): comienzan desde la línea:
Begin_--_-

s = '''begin 644 root-me_challenge_uudeview B5F5R>2!S:6UP;&4@.RD*4$%34R`](%5,5%)!4TE-4$Q%"@`` ` end''' f = open('./uu.enc', 'w') f.write(s) f.close() import uu uu.decode('uu.enc', 'uu.dec') ans = open('uu.dec', 'r').read()

Entregamos la bandera.
Hash - Resumen de mensaje 5

Se nos pide que encontremos el prototipo para el hash md5. Esto se puede hacer fácilmente usando este sitio (https://md5decrypt.net/). Pero nosotros, para fines de capacitación, por supuesto, usamos hashcat. Para hacer esto, use los siguientes parámetros y códigos:
- -a 0: busca en el diccionario;
- -m 0 - tipo hash MD5;
- File.hash: un archivo con un hash;
- rockyou.txt - nuestro diccionario;
- --force - ignora los errores.

Pasamos a la siguiente tarea.
Hash - SHA-2

Como respuesta, debe proporcionar el hash SHA1 de la imagen inversa de este hash. El hecho es que este es un personaje extra.

Eliminarlo Para determinar el algoritmo de hash, utilizamos el programa hashid.

De los algoritmos presentados, el más probable SHA-256. Hashcat mostró cómo resolver tal tarea usando hashcat, ahora lo haremos usando esto
sitio .

Queda por tomar SHA-1 de esta línea.
from hashlib import * sha1('4dM1n').hexdigest()

Cifrado de cambio

Bueno, con el algoritmo de cifrado, nos ayudan. El mismo Caesar Cipher, solo el cambio no ocurre en el rango de cero a la longitud del alfabeto, sino de acuerdo con todos los 256 valores posibles de un byte. Escribiremos un programa que primero cambie cada carácter por 1, luego por 2, etc. hasta 255.
s = open('ch7.bin', 'r').read() for x in range(255): “”.join( chr((ord(y) + x)%256 ) ) for y in s)

Entre las líneas encontramos la que contiene la respuesta.

Pixel Madness

Se nos dan varias expresiones, y al final dicen que 0 es blanco y 1 es negro. Lo más probable es que el resultado sea una imagen. Supongo que en la expresión no necesitas multiplicar, sino repetir el número requerido de veces un cierto carácter.
Puede ejecutar rápidamente una expresión usando la función eval, pero primero debe cambiar el formato 0x1 a '0' * 1.
s = ''''0x3+1x1+0x1+0x1+0x7+1x2+0x15+1x1+0x8+1x1+0x8+1x1+0x1+1x1+0x1+1x1+0x1+1x1+0x1+1x1+0x3+1x1+0x1+1x1+0x3+1x1+0x1+1x4+0x2+1x1+0x25 '0x2+1x1+0x4+1x1+0x4+1x3+0x1+1x2+0x2+1x8+0x11+1x4+0x1+1x3+0x6+1x2+0x4+1x1+0x4+1x2+0x7+1x4+0x4+1x2+0x7+1x2+0x3+1x2+0x3 '0x3+1x1+0x2+1x1+0x2+1x1+0x11+1x2+0x2+1x3+0x7+1x1+0x4+1x2+0x2+1x2+0x7+1x1+0x6+1x1+0x2+1x1+0x4+1x3+0x1+1x1+0x4+1x1+0x2+1x1+0x2+1x1+0x3+1x1+0x2+1x3+0x2+1x2+0x3 '1x1+0x2+1x1+0x4+1x1+0x2+1x1+0x1+1x1+0x2+1x1+0x2+1x1+0x1+1x2+0x2+1x2+0x1+1x2+0x3+1x1+0x3+1x1+0x2+1x2+0x1+1x3+0x3+1x1+0x2+1x1+0x4+1x2+0x1+1x1+0x4+1x1+0x3+1x2+0x12+1x2+0x1+1x1+0x3+1x7+0x3 '0x3+1x1+0x7+1x1+0x1+1x1+0x4+1x1+0x2+1x2+0x2+1x2+0x4+1x1+0x2+1x1+0x1+1x2+0x1+1x8+0x1+1x1+0x4+1x1+0x5+1x1+0x3+1x2+0x2+1x1+0x1+1x2+0x2+1x1+0x3+1x2+0x9+1x1+0x1+1x2+0x2+1x3+0x2+1x1 '0x7+1x1+0x4+1x1+0x4+1x1+0x1+1x1+0x1+1x7+0x3+1x1+0x1+1x2+0x3+1x1+0x1+1x6+0x1+1x1+0x3+1x1+0x2+1x1+0x14+1x2+0x8+1x1+0x10+1x2+0x3+1x2+0x1+1x1+0x1 '0x6+1x5+0x4+1x1+0x7+1x1+0x2+1x1+0x3+1x2+0x4+1x1+0x8+1x1+0x3+1x2+0x1+1x2+0x3+1x1+0x8+1x1+0x2+1x2+0x1+1x1+0x3+1x7+0x5+1x2+0x2+1x1+0x2+1x2+0x3 '0x1+1x1+0x2+1x1+0x1+1x2+0x5+1x1+0x6+1x2+0x3+1x1+0x2+1x1+0x1+1x2+0x20+1x8+0x1+1x1+0x1+1x1+0x4+1x2+0x3+1x1+0x2+1x2+0x3+1x2+0x7+1x2+0x3+1x2+0x4 '0x2+1x1+0x3+1x5+0x5+1x2+0x7+1x1+0x4+1x2+0x2+1x1+0x2+1x2+0x1+1x1+0x3+1x1+0x6+1x2+0x2+1x2+0x3+1x2+0x2+1x3+0x1+1x1+0x6+1x3+0x3+1x5+0x3+1x1+0x4+1x1+0x5 '0x4+1x2+0x3+1x2+0x3+1x1+0x5+1x2+0x2+1x1+0x1+1x1+0x1+1x1+0x1+1x2+0x9+1x1+0x3+1x1+0x2+1x1+0x1+1x1+0x2+1x1+0x1+1x2+0x2+1x1+0x2+1x1+0x1+1x1+0x4+1x3+0x1+1x1+0x2+1x2+0x3+1x2+0x3+1x1+0x5+1x1+0x4+1x1+0x2 '0x6+1x5+0x4+1x1+0x1+1x1+0x2+1x2+0x6+1x1+0x1+1x7+0x4+1x3+0x3+1x1+0x4+1x1+0x2+1x2+0x4+1x1+0x6+1x1+0x6+1x8+0x3+1x1+0x5+1x1+0x7 '0x2+1x1+0x3+1x6+0x4+1x1+0x1+1x3+0x4+1x1+0x2+1x2+0x4+1x1+0x5+1x1+0x2+1x1+0x3+1x2+0x3+1x1+0x2+1x3+0x1+1x1+0x2+1x2+0x3+1x3+0x2+1x3+0x9+1x1+0x4+1x2+0x7+1x2''' s = s.replace("x", "'*").replace("+","+'") examp = s.split('\n') bits = [eval(i) for i in examp] print(bits)

Ahora cree una imagen usando la biblioteca PIL. Agreguemos el siguiente código, edítelo y abra la imagen resultante.
from PIL import Image width, height = len(bits[0]), len(bits) pic = Image.new('RGB', (width, height)) pix = pic.load() for i in range(height): for j in range(width): pix[j,i] = ( bits[i][j]=='0' and (255,255,255) or (0,0,0) ) pic.save('pixel.png')

Acerqué la imagen, leí la palabra SOLUCIÓN. De hecho, hay más estrategias que criptas. Este artículo será interesante, muy probablemente, solo para principiantes.
Más y más complicado ... Puedes unirte a nosotros en
Telegram . Allí puede proponer sus propios temas y votar sobre la elección de los temas para los siguientes artículos.