Skip to content

Instantly share code, notes, and snippets.

@sharpicx
Created October 7, 2025 20:16
Show Gist options
  • Save sharpicx/39f0853222ed87768e98e4dc341f6d58 to your computer and use it in GitHub Desktop.
Save sharpicx/39f0853222ed87768e98e4dc341f6d58 to your computer and use it in GitHub Desktop.
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])
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