Created
October 7, 2025 20:16
-
-
Save sharpicx/39f0853222ed87768e98e4dc341f6d58 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import importlib | |
| from functools import reduce | |
| BITSHIFTED = ["B", "I", "T", "S", "H", "I", "F", "T", "E", "D"] | |
| globals()["x"] = lambda k: eval(k) | |
| globals()["y"] = lambda k: exec(k) | |
| rrrrrrhrrrrrrrrrr = 0x42 | |
| rrrrrrrhrrrrrrrrr = 0x43 | |
| rrrrrrrrhrrrrrrrr = 0x44 | |
| rrrrrrrrrhrrrrrrr = 0x45 | |
| rrrrrrrrrrrrrrr = b"\x2e\x21\x2c" | |
| rrrrrrrrrrrrr = b"\x2e\x22\x2c" | |
| rrrrrrrrrrrrrrr = b"\x2e\x23\x2c" | |
| rrrrrrrrrrrrr = b"\x2e\x24\x2c" | |
| rrrrrrrrrrrrrrr = b"\x2e\x25\x2c" | |
| rrrrrrrrrrrrr = b"\x2e\x26\x2c" | |
| rrrrrrrrrrrrrr = b"\x2e\x27\x2c" | |
| ch = getattr( | |
| __builtins__, | |
| bytes(rrrrrrrrrr ^ rrrrrrhrrrrrrrrrr for rrrrrrrrrr in rrrrrrrrrrrrrr).decode(), | |
| ) | |
| # eval() | |
| join = str.__dict__["join"].__get__("", str) | |
| cycle = getattr(importlib.__import__("itertools", fromlist=["cycle"]), "cycle") | |
| key = [ | |
| 27, | |
| 44, | |
| 12, | |
| 95, | |
| 68, | |
| 33, | |
| 72, | |
| 7, | |
| 101, | |
| 156, | |
| 23, | |
| 48, | |
| 90, | |
| 64, | |
| 3, | |
| 37, | |
| 116, | |
| 81, | |
| 222, | |
| 14, | |
| 308, | |
| 19, | |
| 135, | |
| 276, | |
| 58, | |
| 200, | |
| 17, | |
| 66, | |
| 124, | |
| 9, | |
| 352, | |
| 71, | |
| 144, | |
| 99, | |
| 240, | |
| 5, | |
| 162, | |
| 28, | |
| 47, | |
| 180, | |
| 2, | |
| 54, | |
| 88, | |
| 121, | |
| 300, | |
| 11, | |
| 36, | |
| 76, | |
| 18, | |
| 400, | |
| ] | |
| x = lambda D, K: bytes(map(lambda t: t[0] ^ t[1], zip(D, cycle(K)))) | |
| def generate_hash(g, k, e="utf-8"): | |
| M = int("DEADBEEF", 16) | |
| r = bytes(map(lambda b: (b + 3) & 255, g.encode(e))) | |
| xrd = x(r, k.encode(e)) | |
| mi = lambda A, b: reduce( | |
| lambda a, kk: ( | |
| (lambda t: ((t * 33 + 0xD) & M) if ((b + (kk & 255)) % 3 == 0) else t)( | |
| ((a * 33 + 0xF) & M) if ((b + (kk & 255)) % 2 == 0) else a | |
| ) | |
| ), | |
| key, | |
| ((A * 131) ^ b) & M, | |
| ) | |
| acc = reduce(mi, xrd, 0) | |
| return f"{(acc & 0xFFFFFFFF):08x}" | |
| globals()["__".join(["se", "c2", "et"])] = lambda *z, **q: generate_hash(*z, **q) | |
| eth = join( | |
| [ | |
| chr( | |
| ch("{${#^@!({}&&#!@)(@%!))${($@&@%!!((^%)(*)^&*((%(}@&@#@}$%(!%(#&#!(@&$*") | |
| ), | |
| chr(0x6E), | |
| chr( | |
| ch( | |
| "%&&@@#}(*}@!%{#!*@$%@*$()%)@$!&{&@$#$^^)($($!{&@@@#%#&($)&@@)&(!$)^(!)%^*@()${@#!}%%#}}*$&){&)!^){*%^!(!!*%&}$*%^&})" | |
| ) | |
| ), | |
| chr(0b1100101), | |
| chr( | |
| ch( | |
| "$(^@&{*^#)(%**@%&})%)(@@#}(!!}}))^&^$$%^**^%{)){}%@#}!$}&)#)$!)&{){^*^(}(#(^)%*&%@#}*{!@!}^^&*((%*(#@*)$&^!}^@!!!(" | |
| ) | |
| ), | |
| chr(ch("(%#*)^{$@*#^**$%#!%*)^%{)@}*%%$*")), | |
| chr( | |
| ch( | |
| "&$}}#%&*$!}^^#!%)%}$&@#$%!}&#*{)@@^(*&%^&*^!}^)(#@@%*(!!{*%&&@*@!!@&#)(}@!!!$%{%{$}!%*(#{*&(*}{&%@!#(}&^!}%#({&%*^${" | |
| ) | |
| ), | |
| chr(0x68), | |
| chr(0b1100101), | |
| ] | |
| ) | |
| btc = join( | |
| [ | |
| chr(0b1101011), | |
| chr(0x65), | |
| chr(0b1111001), | |
| chr(ch("${(%&&@){}%&(#}#%}(%!#}*}{*$%&*^%%)*!(@^{){{^%@()^@$*$%^#(")), | |
| chr(ch("}@***$##&{%^*^)%@}&^&^(*}^!^*}^#")), | |
| ] | |
| ) | |
| a = input(eth + chr(0x20) + btc) | |
| b = join( | |
| [ | |
| chr(0x6E), | |
| chr(0x6F), | |
| BITSHIFTED[-3].lower(), | |
| chr( | |
| ch( | |
| "}#^*^!@^!!})*&@*#$!*}$%(&(%*!#((}#!}%@{$!*@@%%((&%{%@){!()&$%@{^#^(*)@(*%)}$@}(&@*%{{*##@%){@{}$$^%!$({{(^!){*^{)}{$!&" | |
| ) | |
| ), | |
| chr(0b1100101), | |
| chr(0x72), | |
| chr(0x79), | |
| chr( | |
| ch( | |
| "}%){$}@@}&!%$@)!*$*$)@#)%%{!!!}*!$(({(!%)%^%^#{(@(($@@)#&*^*}@*@*(#*)%$^($!{!!}^)@)#}^!(^{$)#{&)#)}^&#%^*@%&{!*(&*{" | |
| ) | |
| ), | |
| chr(0b1100101), | |
| chr( | |
| ch( | |
| "@}%&%&)@*)&&)$(#{%!^#%#}{%*}!}@#{%#@^^^({}{%!)%%@!&{#}$#@$&!%%(}!(#&$}#}##)^{(^*#*)}%{)#}}}%@(!}(!}" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| "{@%{#}^!(})$*#%^&){!}{$$^#}#}@{^@){*@)!@))*){#!}!$}&$}(&##*%##**{$&@@#}($^*{^!@%{@@$!{@@!&{$$})!*^{#&#&%@*})&^**(!" | |
| ) | |
| ), | |
| chr(0x65), | |
| chr( | |
| ch( | |
| ")}}(#^&@^^)&)$@)@^(@*}$%$#&(&^%)##%!*#$^&!*(&{^(!$^{{#*!@$&{)@!&#}%*#)(^!&(@)$@*{{$*}^{(*#)$##%^!$#!{*@&&%{$)*${#)!^" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| "}&*()($*%@)#@{^#%*&}&@&%*!%{$)!#%!@%$((#%{)@#&){{^}**@(^)*(%))*^&(!!!%*$*)%&{*@%*%!&{@%^@)#{@!}^^{&#${)@^)&" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| "%*&@)&}*)${)!&@$$(*})&)#{)@!*{)#^({($#&!}^)!(#}*@$%{#}{*($^{%##(#$#%^@&*#%&{#}%&!)@&*!^(*#%*@^)*#%*^)" | |
| ) | |
| ), | |
| chr(0x79), | |
| ] | |
| ) | |
| v = join( | |
| [ | |
| chr(0b1100101), | |
| chr(0x76), | |
| chr(0b1100001), | |
| chr( | |
| ch( | |
| "$*{*(&%!%$#^@!^!^%%****^}#@}!&$##)%$$#(@@(#(#}%@$!{}!(@#&}*&{((!}#!!^%{%${{#@#&&$*$}!{($({{*^^@*)(*%@**{}}(#" | |
| ) | |
| ), | |
| ] | |
| ) | |
| generate = join( | |
| [ | |
| chr( | |
| ch( | |
| "@$@!^^%*%)^!%}%&@%)@)($($}{!^%({#))^&)^@({&}}!$%&@!&&}&(@)(&&}}()^#)()*#}$){{(^&$*@$!@$$*!{{$@^" | |
| ) | |
| ), | |
| chr(0x5F), | |
| chr( | |
| ch( | |
| "*#!{!%@)#{)%%}!*#$}%!%!(^*#*%^${($!*%#{#(#)&*)@%#&*)&}#*&)%&@$)}^&@${)#*{@%!&^&$%@{(#%^)%)%%%^#&*^*({{(^(" | |
| ) | |
| ), | |
| chr(0b1101101), | |
| chr( | |
| ch( | |
| "@#%!(&##!^@%^#){&!}{^}(}#%@@)^@&)%!*#%&#@$(}(%@%%#^%@%!#})&}*!%@{!${&*&}}$^}$!^##@!^$*%)^($}{&$){!*@^##&$^)$({}@" | |
| ) | |
| ), | |
| chr(0x6F), | |
| chr(0x72), | |
| chr(0x74), | |
| chr( | |
| ch( | |
| "^!^{)(&{$&!&*)@)*)}&(#@%%%#(}%{*!)!^#@#&}}{)}$#${(*{&%^%{)(*(@})!@*)*^(}{)$$@)$@^((^{#{*(){&#^(" | |
| ) | |
| ), | |
| chr(0x5F), | |
| chr(0x28), | |
| chr(ch("@%{%&($%&{^{%}{#}*{%)})}#{@)!&}@*}&@%*!")), | |
| chr( | |
| ch( | |
| "#)%#{!)})(((&%#@!(*#**%%*(#^}{)!#^*&{%@&^!{(*#@@!^#$%#($&!}!!&^%!}$(@!%$!*${$$^@%{{#%^@&#{&@!^{#&&" | |
| ) | |
| ), | |
| chr(0x75), | |
| chr(0x69), | |
| chr( | |
| ch( | |
| "&^^#&}^{@^^{*$^^}$%&}@}^**}#{{(@^^{(%}$!%*)!{@*^%*%&%#{(!()%#$%#}!^{^}%$}@@{^#@${!(%{}}%*{{@$}&{#*{{!{^)#)&!" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| "&*@#}!{!%&^*#(@!@*%%^#{$&%{}})${{&(^))^$)}%}*(**@#^(@!}&#{*}{@$)!)!@!)^}{*(!#&{*!#!*{@}(#^%%}(%*!$!&{&}${{$)!&}($!!^" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| ")%{*@(%{@^#$!@)&$&}}%&{}&*#^)(}^#)%}!{@*#)$$$^{%#!#)^$%){${(%*#{!&%)##**#$*!$^)!!(}^&%$)$#}^)^&){#%!@#(&@" | |
| ) | |
| ), | |
| chr(0b1101110), | |
| chr(0x73), | |
| chr(0b100111), | |
| chr(0x29), | |
| chr(ch("^(}})(${#{*@@}@%*@$#}{)({^%}%@$)!&)*%)###((&}{")), | |
| chr( | |
| ch( | |
| "}@)())$@^{^#!}%*(@(}$#{*%{})&#$}&@*#${@^}#%@{@%#@$&!&(*$*&*}@)@!*$#}@$#*!!${@@!^}!@{{*!**@@#()!@{*!#)&%" | |
| ) | |
| ), | |
| chr(0b1101100), | |
| chr(0b1101111), | |
| chr(0b1100010), | |
| chr(0b1100001), | |
| chr(0b1101100), | |
| chr(0b1110011), | |
| chr(0b101000), | |
| chr(ch("%{*(#{#$@&(^@)#^@^$)@@{*#{$&^%&({}%@{*%*}")), | |
| chr(0x5B), | |
| chr(ch("}(($*}^@^}(#)}%})$$&%}&@})@}$##}#(&{}&)")), | |
| chr(0b1011111), | |
| chr(0b1011111), | |
| chr(ch("{$%$$*!)%###$)(!!^(^%&**{{^%$%*{^})##}(")), | |
| chr(0x2E), | |
| chr(0b1101010), | |
| chr( | |
| ch( | |
| "{&{}}^!%^*!*{(%)){!(*@}!^}&*^@@$*&)@&}#*&!@&!@!*{*!))%@})#$*}(^$)}#!!}*&&*$!!!}(}$#)^$}(&#)$&)($!)%@}%*%{))!)!^" | |
| ) | |
| ), | |
| chr(0x69), | |
| chr(0b1101110), | |
| chr(0b101000), | |
| chr(0b1011011), | |
| chr(0b100111), | |
| chr(0b1110011), | |
| chr( | |
| ch( | |
| "@(*}*@@&@($&}%*#!(*)!({%}(@*^)%!(%$$!^%*@@(#}%)@%%)#$!}(}((&$&%$!)&}!$&*}(*($&^({$$){%^^&&{$@{%$&^&#!" | |
| ) | |
| ), | |
| chr(0b100111), | |
| chr(ch(")!{)$!}}))^!$(^@}&{&&{#!$^&{{)%($#}({@@*!$(^")), | |
| chr(0x27), | |
| chr(0b1100011), | |
| chr(0x32), | |
| chr(ch("^)*$#}*}$@!#&#$({!$&#*#!#(!*{@&*)#$*&@{")), | |
| chr(0x2C), | |
| chr(0x27), | |
| chr( | |
| ch( | |
| "@!)!{@^*#$)%)^$^)}%({^}*^(}!(){{&({{#()#^{#&%!%%$^(#({^}*^%#}}}#^&(}}{{()@!$$&@{!!$$&$#@&%}^$*@{)&{#)" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| "}^*#{*&{$@*@}(*$((!@#}!${)^^(@$@#{))}{^{&#)*&%)^@{)###@&${^!(@(##(^{**$%%^$^^)}$!${#%(}})*({$({!!}#(}#@{!)&)}!!}}!^#" | |
| ) | |
| ), | |
| chr(ch("%#*^(${%(*!)^*!#}}&%}%%*)^){#()){&}}%&*")), | |
| chr(0b1011101), | |
| chr(0b101001), | |
| chr(0b1011101), | |
| ] | |
| ) | |
| c = int(eval(generate)(a, b).encode("utf-8").hex()) | |
| error_message = "".join( | |
| [ | |
| chr( | |
| ch( | |
| "!{#&%^!**)*&{)){&)}(!#!^#^}(@$!%&!&#(&&${%(@%&#(#}@*&()({$@^&!@}$**!)#@%*$#)&!" | |
| ) | |
| ), | |
| chr(0x6F), | |
| chr(0x74), | |
| chr(0x20), | |
| chr(0b1110001), | |
| chr( | |
| ch( | |
| "&%!#&}((#&{}^*(}*}!**%}(*!(!$!(@(!%*#({##)$&^%*!{%#)#@$}@$&*$(@&{%^#$!$*^)!*{{@%*!*^()(^(&)}!$}^@@$!(((!$(%%#@#!(}!$^" | |
| ) | |
| ), | |
| chr(0x69), | |
| chr(0b1110100), | |
| chr( | |
| ch( | |
| "}$^*!)&@&}})%)#$#($!(}*#@&@#%)$%*{@}@(!$^!!*}))$*$@!()&)@$}^@)$!*)}&}}!*$@&!$}^^!^#@&)#)$}&}{$^&@((@(" | |
| ) | |
| ), | |
| chr(0x2E), | |
| chr(ch(")$#!&%@^^)!@}$*%){^&#!(*})*@$&^#")), | |
| chr(ch("*@{((^&!!}{&{!}!}#{@^(}!)*}&*(((!!)}{$}(%($^&}{$!(}*}}%^}$*^&)#(%%(%")), | |
| chr( | |
| ch( | |
| "{*}!{^{)^#}*!}{&{{}!)()#@*^}{%){&)}*!%#&$$%{{}##}$#({&&*%&@&!#&}!@{{$@{@@@(@*%}()#&#*&@^}!%&%!(){$#(&{{$)%$#($)" | |
| ) | |
| ), | |
| chr(ch("()$(&&}!#!*)}(}$))##@$(#!&{!}(}*")), | |
| chr(0b1110011), | |
| chr(0x6F), | |
| chr( | |
| ch( | |
| "$%$%!&)}*&@^%$^#)*{@$%#((!^)&(%@($@!^{{(&&(@(()*!#$%}(#)!$$%({)!}&}@{&!)*!*{%{*#(#(%&@&!#{*&*$*{}^@*$%*@#^!})" | |
| ) | |
| ), | |
| chr(0x65), | |
| chr(0b100000), | |
| chr(0b1101101), | |
| chr( | |
| ch( | |
| "&^!!!*}!^%$*$}^&*#%%!#}@#%*^(&@$^%&$!#(}@)#{){*$@^*}@)^$%$#$!(${!^#))}{^&$#{!^^&!&^&^}@(^$%{#${)%$@}!!@^*&#{*%{" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| "%@&&(&{#(**}!$!^*}#(${^$@@!!^)&*^{))(^$)*&}&)##{^*#*$$&%{*$*(!)&@#%%#$%*#^@^$&@^@%)&*^)(@{)(*{@#**}(&(#($}!^^{@&@!" | |
| ) | |
| ), | |
| chr(0b1100101), | |
| chr(0b100000), | |
| chr(0x72), | |
| chr(0b1100101), | |
| chr(0x61), | |
| chr(0b1100100), | |
| chr(0x69), | |
| chr( | |
| ch( | |
| "%{%$()%!}^)*$}^^(*$})@@{((#!})}$%)#$&^)^^}*((!%{!&)^*#@$}%*!%)}#$($&}})}!!*(^{!!)%!@(}*#@%%^@@*#$$)#%(%^{@{@}$" | |
| ) | |
| ), | |
| chr(0b1100111), | |
| chr(0x2E), | |
| ] | |
| ) | |
| success_message = "".join( | |
| [ | |
| chr(0x43), | |
| chr( | |
| ch( | |
| "*((@@)(@#^@!)#&{(%**&%@}(^^#^%(@&^{&&&!!{&%)()){{($)%!#!%&)}@&%!%#*@$*)(#)%){%})){({#$)@@*))%}*)*!{)@{)$&@*$^&$" | |
| ) | |
| ), | |
| chr( | |
| ch( | |
| "^*!^&@}%{)!*#@#!{@!%@)%&&^$$(^*&)##}*(@)#}##&^}%#*}}$&{!)!}$@!}#*(!%(#)}!%%}%#@#}})#}%#&@&^(@$#)(#%&@*)!)&%%*$!!#&" | |
| ) | |
| ), | |
| chr(0b1110010), | |
| chr(0x65), | |
| chr(0x63), | |
| chr(0x74), | |
| chr(0b100001), | |
| chr(0x20), | |
| chr(0b1000111), | |
| chr(0x6F), | |
| chr(0b1101111), | |
| chr(0b1100100), | |
| chr(0x20), | |
| chr(0b1101010), | |
| chr(0x6F), | |
| chr(0x62), | |
| ] | |
| ) | |
| # messages = ( | |
| # "".join( | |
| # [ # | |
| # chr(ch("...")), | |
| # chr(0x6F), | |
| # chr(0x74), | |
| # ..., | |
| # ] | |
| # ), | |
| # "".join( | |
| # chr(0x43), | |
| # chr(ch("...")), | |
| # chr(0b1110010), | |
| # ..., | |
| # ] | |
| # ), | |
| # ) | |
| # index = int(not (c ^ 3434383461386363)) | |
| # print(messages[index]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from itertools import product | |
| from multiprocessing import Pool, cpu_count | |
| from functools import reduce | |
| from itertools import cycle | |
| from pwn import log | |
| import sys | |
| TARGET = bytes.fromhex("3434383461386363").decode().lower() | |
| KEY = b"notverysecretkey" | |
| TARGET = "4484a8cc" | |
| KEYLIST = [ | |
| 27,44,12,95,68,33,72,7,101,156,23,48,90,64,3,37,116,81,222,14,308,19,135, | |
| 276,58,200,17,66,124,9,352,71,144,99,240,5,162,28,47,180,2,54,88,121,300,11,36,76,18,400 | |
| ] | |
| def x(D,K): return bytes(a^b for a,b in zip(D, cycle(K))) | |
| def generate_hash(g, k=KEY, keylist=KEYLIST): | |
| M = int("DEADBEEF",16) | |
| r = bytes(((b+3)&0xFF) for b in g.encode('utf-8')) | |
| xrd = x(r, k) | |
| def mi(A,b): | |
| t = ((A * 131) ^ b) & M | |
| for kk in keylist: | |
| kk_byte = kk & 255 | |
| if ((b + kk_byte) % 2) == 0: | |
| t = ((t * 33 + 0xF) & M) | |
| if ((b + kk_byte) % 3) == 0: | |
| t = ((t * 33 + 0xD) & M) | |
| return t | |
| acc = 0 | |
| for bb in xrd: | |
| acc = mi(acc, bb) | |
| return f"{(acc & 0xFFFFFFFF):08x}" | |
| def worker(args): | |
| chunk, L = args | |
| for tup in chunk: | |
| s = ''.join(tup) | |
| if generate_hash(s) == TARGET: | |
| return s | |
| return None | |
| def generator(chars, L): | |
| for tup in product(chars, repeat=L): | |
| yield tup | |
| def run(L=3, chars=None, chunk_size=10000): | |
| if chars is None: | |
| chars = [chr(i) for i in range(32,127)] | |
| gen = generator(chars, L) | |
| pool = Pool(cpu_count()) | |
| tasks = [] | |
| chunk = [] | |
| for t in gen: | |
| chunk.append(t) | |
| if len(chunk) >= chunk_size: | |
| tasks.append((chunk, L)) | |
| chunk = [] | |
| if chunk: | |
| tasks.append((chunk, L)) | |
| for res in pool.imap_unordered(worker, tasks): | |
| if res: | |
| pool.terminate() | |
| log.info("FOUND: {}".format(res)) | |
| return res | |
| pool.close(); pool.join() | |
| log.warning("NOT FOUND") | |
| return None | |
| if __name__ == "__main__": | |
| for i in range(10): | |
| run(L=i) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment