Codierungen, Shift-Chiffre, Brute-Hashes und Bilderstellung mit PIL-Python. Problemlösung mit r0ot-mi Cryto. Teil 1

Bild

Dieser Artikel enthält Lösungen für die Codierung von ASCII- und Codierungs-UU-Aufgaben, die auf die Codierung abzielen, Hash Message Digest 5 und Hash SHA-2, um das inverse Bild des Hash zu finden, Shift-Chiffre - Shift-Chiffre und Pixel Madness, um das Bild zu erstellen.

Organisationsinformationen
Speziell für diejenigen, die etwas Neues lernen und sich in einem der Bereiche Informations- und Computersicherheit entwickeln möchten, werde ich über die folgenden Kategorien schreiben und sprechen:

  • PWN;
  • Kryptographie (Krypto);
  • Netzwerktechnologien (Netzwerk);
  • Reverse (Reverse Engineering);
  • Steganographie (Stegano);
  • Suche und Ausnutzung von WEB-Schwachstellen.

Darüber hinaus werde ich meine Erfahrungen in den Bereichen Computerforensik, Analyse von Malware und Firmware, Angriffe auf drahtlose Netzwerke und lokale Netzwerke, Durchführung von Pentests und Schreiben von Exploits teilen.

Damit Sie sich über neue Artikel, Software und andere Informationen informieren können, habe ich in Telegram einen Kanal und eine Gruppe eingerichtet, um alle Probleme im Bereich ICD zu diskutieren . Außerdem werde ich Ihre persönlichen Anfragen, Fragen, Vorschläge und Empfehlungen persönlich prüfen und alle beantworten .

Alle Informationen werden nur zu Bildungszwecken bereitgestellt. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die jemandem durch die Verwendung von Kenntnissen und Methoden entstehen, die durch das Studium dieses Dokuments erworben wurden.

Codierung - ASCII


Beginnen wir mit dem allerersten Job - Encoding-ASCII.

Bild

Wir gehen zur eigentlichen Aufgabe über. Wir sehen eine Folge von 16. Zeichen. Die allererste Annahme ist ein reguläres Hex (alle Zeichen sind in der 16. Form).

Bild

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

Bild

Wir bekommen die Antwort und gehen weiter.

Codierung - UU


Bild

Wir gehen zur eigentlichen Aufgabe über. Trotz des Hinweises im Namen der Aufgabe ist es einfach, Dateien in UUE (Codierung zum Übertragen von Dateien, die keine Textdaten enthalten) zu unterscheiden - sie beginnen in der Zeile:

 Begin_--_- 

Bild

 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() 

Bild

Wir übergeben die Flagge.

Hash - Message Digest 5


Bild

Wir werden gebeten, den Prototyp für den md5-Hash zu finden. Dies kann einfach über diese Site (https://md5decrypt.net/) erfolgen. Aber wir verwenden zu Schulungszwecken natürlich Hashcat. Verwenden Sie dazu die folgenden Parameter und Codes:

  • -a 0 - Suche im Wörterbuch;
  • -m 0 - Hash-Typ MD5;
  • File.hash - eine Datei mit einem Hash;
  • rockyou.txt - unser Wörterbuch;
  • --force - Fehler ignorieren.

Bild

Wir fahren mit der nächsten Aufgabe fort.

Hash - SHA-2


Bild

Als Antwort müssen Sie den SHA1-Hash aus dem umgekehrten Bild dieses Hashs angeben. Tatsache ist, dass dies ein zusätzlicher Charakter ist.

Bild

Löschen Sie es. Um den Hashing-Algorithmus zu bestimmen, verwenden wir das Hash-Programm.

Bild

Von den vorgestellten Algorithmen ist der wahrscheinlichste SHA-256. Hashcat hat gezeigt, wie man eine solche Aufgabe mit Hashcat löst. Jetzt werden wir dies tun
Website .

Bild

Es bleibt SHA-1 von dieser Linie zu nehmen.

 from hashlib import * sha1('4dM1n').hexdigest() 

Bild

Chiffre verschieben


Bild

Nun, mit dem Verschlüsselungsalgorithmus helfen sie uns. Dieselbe Caesar-Chiffre, nur die Verschiebung tritt nicht im Bereich von Null bis zur Länge des Alphabets auf, sondern gemäß allen möglichen 256 Werten eines Bytes. Wir werden ein Programm schreiben, das jedes Zeichen zuerst um 1, dann um 2 usw. verschiebt. bis zu 255.

 s = open('ch7.bin', 'r').read() for x in range(255): “”.join( chr((ord(y) + x)%256 ) ) for y in s) 

Bild

Unter den Zeilen finden wir die, die die Antwort enthält.

Bild

Pixel Wahnsinn


Bild

Wir bekommen mehrere Ausdrücke und am Ende sagen sie, dass 0 weiß und 1 schwarz ist. Das Ergebnis sollte höchstwahrscheinlich ein Bild sein. Ich nehme an, dass Sie im Ausdruck nicht multiplizieren müssen, sondern die erforderliche Anzahl von Malen eines bestimmten Zeichens wiederholen müssen.

Sie können einen Ausdruck schnell mit der Funktion eval ausführen, müssen jedoch zuerst das Format 0x1 in '0' * 1 ändern.

 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) 

Bild

Erstellen Sie nun ein Bild mit der PIL-Bibliothek. Fügen wir den folgenden Code hinzu, bearbeiten Sie ihn und öffnen Sie das resultierende Bild.

 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') 

Bild

Ich zoomte auf das Bild und las das Wort LÖSUNG. Tatsächlich gibt es mehr Stege als Krypten. Dieser Artikel wird höchstwahrscheinlich nur für Anfänger interessant sein.

Immer komplizierter ... Sie können sich uns per Telegramm anschließen . Dort können Sie Ihre eigenen Themen vorschlagen und über die Themenauswahl für die folgenden Artikel abstimmen.

Source: https://habr.com/ru/post/de472628/


All Articles