Hacks & CrackmesTests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.
Encryptme
Diskussion: Encryptme im Forum Hacks & Crackmes, in der Kategorie Software Home; Ich habe mir mal gedacht bei den ganzen Hack & Crackme's könnte man auch mal was entschlüsseln:
Code:
(:11_;*_;6<7_5:+%+_9->8,+_0=_2:61:_<>/,30<4+>,+:_4>/*++_6,+_*1;_(>-*2_6<7_61_+:3:8->22,+&3:_,<7-:6=:_4022>_4>11_6<7_;6<7_=:-*768:1_,+0/_1:61_2:61:_+>,+:-+*-_6,+_)0334022:1_61_0-;1*18_*1;_2>1_4>11_1*-_;:1_):-,<73*:,,:3+:1_+:'+_)01_8-0,,=*<7,+>=:1_:618:-2>,,:1_3:,:1
Ich ...
Kann man wohl nur hätte ich auch Kleinschreibung verwendet währen da Zeichen raus gekommen, die kein Mensch angezeigt bekommt.
Da hier irgendwie keiner lösen will:
loesung
Mein Skript wandelt die Zeichen in Ascii code um und macht dann eine Bitweise XOR mit 127. Auf gut Deutsch alle 1 werden durch 0 ersetzt und andersrum.
Wer es mal sehen will:
Code:
#Dieses Programm steht unter einer Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. Weitere informationen im Steinhagetvollblog
text = "7>330_/:+:-"
asciiz = 0
asciin = 0
crypted = ""
for buchstaben in text:
#Buchstaben in ascii-code umwandeln:
asciiz = ord(buchstaben)
#Das ist ein Binaere XOR-Verkuenpfung mit 127, im 2er System 1111111, dadurch werden alle 1 durch 0 ersetzt und andersrum
asciin = asciiz^127
crypted += chr(asciin)
print crypted
da die Zeichen relativ "gleichhäufig" vorkommen, habe ich erstmal auf etwas "Cäsarartiges" getippt - also XOR/ADD. Und da ich sonst keinen Schimmer in Cryptoanalyse habe, einfach gebruteforced. Damit ich nicht alle 512 mögliche Lösungen sichten muss, noch eine Zusatzroutine geschrieben, die den Sonderzeichengehalt in der Lösung berechnet und nur Lösungen unter einem gewissen Schwellwert ausgibt:
SICStus Prolog
Code:
:-use_module(library(lists)).
crypted("(:11_;*_;6<7_5:+%+_9->8,+_0=_2:61:_<>/,30<4+>,+:_4>/*++_6,+_*1;_(>-*2_6<7_61_+:3:8->22,+&3:_,<7-:6=:_4022>_4>11_6<7_;6<7_=:-*768:1_,+0/_1:61_2:61:_+>,+:-+*-_6,+_)0334022:1_61_0-;1*18_*1;_2>1_4>11_1*-_;:1_):-,<73*:,,:3+:1_+:'+_)01_8-0,,=*<7,+>=:1_:618:-2>,,:1_3:,:1").
operator(Op,X,Y):-Y is X\Op. %Siscstus XOR
%operator(Op,X,Y):-Y is X+Op.
op_list(Op,Result):-crypted(List),maplist(operator(Op),List,Result).
char(C,0):- C>="0",C=<"9";C>="a",C=<"z";C>="A",C=<"Z",!.
char(_,1).
stats(List,Badchars):- maplist(char,List,Statlist),
sumlist(Statlist,Bad),length(List,Len),Badchars is Bad/Len.
encrypt(End,End).
encrypt(Count,End):-Count<End,op_list(Count,Result),
stats(Result,Bad), (Bad<0.15,format('Key:~d, ~s\n',[Count,Result]);true) ,
NCount is Count+1,encrypt(NCount,End).
mit etwas rumprobieren findet man heraus, dass der Schwellwert 15% (Bad<0.15) betragen sollte, damit man weder von Lösungsmöglichkeiten erschlagen und noch die eigentliche Lösung angezeigt bekommt.
Ausgabe:
Code:
?- encrypt(1,255).
Key:95 wenn_du_dich_jetzt_fragst_ob_meine_capslocktaste_kaputt_ist_und_warum_ich_in_telegrammstyle_schreibe_komma_kann_ich_dich_beruhigen_stop_nein_meine_tastertur_ist_vollkommen_in_ordnung_und_man_kann_nur_den_verschluesselten_text_von_grossbuchstaben_eingermassen_lesen
Key:104, @RYY7SB7S^T_7]RCMC7QEVPDC7XU7ZR^YR7TVGD[XT\CVDCR7\VGBCC7^DC7BYS7@VEBZ7^T_7^Y7CR[RPEVZZDCN[R7DT_ER^UR7\XZZV7\VYY7^T_7S^T_7UREB_^PRY7DCXG7YR^Y7ZR^YR7CVDCRECBE7^DC7AX[[\XZZRY7^Y7XESYBYP7BYS7ZVY7\VYY7YBE7SRY7AREDT_[BRDDR[CRY7CROC7AXY7PEXDDUBT_DCVURY7R^YPREZVDDRY7[RDRY
Key:127, WENN DU DICH JETZT FRAGST OB MEINE CAPSLOCKTASTE KAPUTT IST UND WARUM ICH IN TELEGRAMMSTYLE SCHREIBE KOMMA KANN ICH DICH BERUHIGEN STOP NEIN MEINE TASTERTUR IST VOLLKOMMEN IN ORDNUNG UND MAN KANN NUR DEN VERSCHLUESSELTEN TEXT VON GROSSBUCHSTABEN EINGERMASSEN LESEN
yes
| ?-
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.