mirror of
https://github.com/radareorg/radare2-r2pipe.git
synced 2026-11-09 04:29:33 -10:00
86 lines
1.7 KiB
Python
86 lines
1.7 KiB
Python
#
|
|
# Author:
|
|
# - Sergi Alvarez
|
|
# - [email protected]
|
|
#
|
|
# Requires:
|
|
# - r2 from git
|
|
# - r2pipe 0.9.0
|
|
# - r2pm -i lang-python
|
|
# - Python 2 or 3
|
|
#
|
|
# HowTo:
|
|
# - Run r2 -c=h /bin/ls
|
|
# - Run r2 -C http://localhost:9090/cmd/
|
|
# - Run r2 -i talkto.py /bin/ls
|
|
#
|
|
|
|
import r2pipe
|
|
|
|
try:
|
|
r2 = r2pipe.open()
|
|
r2.cmd("e cfg.user=pancake")
|
|
r2.cmd("e cfg.log=true")
|
|
|
|
r2.cmd("T this is me")
|
|
r2.cmd("CC hello world")
|
|
logs = r2.cmd("T")
|
|
print (logs)
|
|
except:
|
|
print ("You need r2pm -i lang-python")
|
|
pass
|
|
|
|
last = ""
|
|
last2 = ""
|
|
r2r = r2pipe.open("http://localhost:9090")
|
|
r2r.cmd("e cfg.log=true")
|
|
print r2r.cmd("o")
|
|
|
|
|
|
def pull():
|
|
global last2
|
|
print "PULL"
|
|
items = r2r.cmdj("Tj%s" % (last2))
|
|
print "Syncing %s" % (last2)
|
|
if len(items) > 0:
|
|
print "ITEMS"
|
|
for (id, msg) in items:
|
|
print ("MUST RUN IN LOCAL %s" % (msg))
|
|
r2.cmd("e cfg.log=0")
|
|
r2.cmd(msg[1:])
|
|
r2.cmd("e cfg.log=1")
|
|
if id > last2 or last2 == "":
|
|
last2 = id
|
|
last2 = last2 + 1
|
|
|
|
|
|
def runmsg(msg):
|
|
if msg[0] == ":":
|
|
print ("RUN REMOTE %s" % (msg))
|
|
r2r.cmd(msg[1:])
|
|
elif msg[0] == "<":
|
|
print ("CHAT %s" % (msg))
|
|
else:
|
|
print ("UNK %s" % (msg))
|
|
|
|
|
|
def sync():
|
|
global last
|
|
print "Syncing %s" % (last)
|
|
items = r2.cmdj("Tj%s" % (last))
|
|
if len(items) > 0:
|
|
print "ITEMS"
|
|
for (id, msg) in items:
|
|
runmsg(msg)
|
|
if id > last or last == "":
|
|
last = id
|
|
last = last + 1
|
|
print ("LAST %s" % (last))
|
|
pull()
|
|
|
|
|
|
# initialize
|
|
r2.cmd('"e cmd.log=#!python -e sync()"')
|
|
r2.cmd('"e cmd.prompt=#!python -e sync()"')
|
|
r2.cmd('"e cmd.vprompt=#!python -e sync()"')
|