32 lines
784 B
Python
32 lines
784 B
Python
import sys
|
|
import time
|
|
|
|
def eprint(*args, **kwargs):
|
|
print(*args, file=sys.stderr, **kwargs)
|
|
|
|
def create_r2_byte_pattern(sig):
|
|
tokens = sig.split()
|
|
r2_tokens = []
|
|
for token in tokens:
|
|
if token == "?":
|
|
r2_tokens.append("..")
|
|
else:
|
|
r2_tokens.append(token)
|
|
return "".join(r2_tokens)
|
|
|
|
def sync_r2_output(r2):
|
|
"""
|
|
For some fucking reason r2pipe output gets desynced from the start,
|
|
making the result of every command what the previous command should
|
|
have returned.
|
|
|
|
Read stuff from the process pipe until it stops being stupid.
|
|
"""
|
|
for i in range(10):
|
|
p = r2.process.stdout.read(1)
|
|
if len(p) > 0:
|
|
break
|
|
time.sleep(1)
|
|
output = r2.cmd(f"?vi 123").strip()
|
|
if output != "123":
|
|
raise Exception("R2 state never got synced") |