Hi, Nice work pancake :D
BTW = has a new subcommand called '=<' =<[fd] cmd ; send output of local command to remote fd So, you can init tcp or udp servers, add them with '=+ tcp://' or '=+ udp://', and then redirect to them the radare output. For instance: ]> =+ tcp://<host>:<port>/ Connected to: <host> at port <port> 5 - tcp://<host>:<port>/ ]> =<5 cmd... Enjoy :) Kind regards, Nibble pancake <[email protected]> wrote: > The use of the = command from the radare shell can be done from > the shell using the connect:// URI. Maybe we will have to rename > or to make the remote io plugin handle connect:// and rap:// to > be conceptually more consistent. > > I have been working on the refactoring of the python implementation > of the radare protocol, so now it is possible to create a radare > server or client in pure python (without any dependency) and it is > also possible to use the analysis and standard api locally or > remotely by just changing the r.cmd() provider. I have pushed some > examples of use in the repository, but here there are some copypastas > of the not-yet finished API. > > import radapy > from string import * > > PORT = 8888 > > def fun_system(str): > print "CURRENT SEEK IS %d"%radapy.offset > return str > > def fun_open(file,flags): > return str > > def fun_seek(off,type): > return str > > def fun_write(buf): > print "WRITING %d bytes (%s)"%(len(buf),buf) > return 6 > > def fun_read(len): > global rs > print "READ %d bytes from %d\n"% (len, rs.offset) > str = "patata" > str = str[rs.offset:] > return str > > > # main > > #radapy.handle_cmd_open = fun_open > #radapy.handle_cmd_close = fun_close > rs = radapy.RapServer() > rs.handle_cmd_system = fun_system > rs.handle_cmd_read = fun_read > rs.handle_cmd_write = fun_write > rs.size = 10 > rs.listen_tcp (PORT) > > > [panc...@dazo radare]$ cat scripts/radapy_client.py > import sys > sys.path.append('.') > import radapy > > c = radapy.RapClient('localhost', 9999) > #c = RapClient('localhost', 9999) > fd = c.open("/bin/ls", 0) > print c.cmd("px") > #c.system("x") > c.close(fd) > c.disconnect() > > > > [panc...@dazo radare]$ cat scripts/standalone.py > hijack=1 > > import radare > import ranal > import radapy > > # r.cmd() hijacking > if hijack: > class Food: > def cmd(str): > global c > print "Command to run is (%s)"%str > return c.cmd(str) > cmd = staticmethod(cmd) > global r > radare.r = Food > > > c = radapy.RapClient("localhost", 9999) > > fd = c.open("/bin/ls", 0) > print c.cmd("px") > #r = Food > #r.cmd("#test") > print radare.r.cmd("pd 20") > radare.seek(33) > print radare.disasm(0, 10) > > # close > c.close(fd) > c.disconnect() > > > Nibble wrote: > > Hi, > > > > I've been playing a little with the remote protocol in radare and > > added a new command called '='. It allows to establish connections > > with several remote radares and interact with them. > > > > You can access to the help, as usual, through '=?': > > > > ]> =? > > = ; List hosts > > =[fd] cmd ; Exec cmd in host n > > =+ [proto://]host ; Add host (default protocol is rap://) > > =-[fd] ; Remove all hosts or host 'fd' > > ==[fd] ; Open remote session with host 'fd' > > NOTE: Last used host comes to be default > > Use 'q' to quit session > > > > But, lets introduce the command with a little example :) A typical > > remote session could be: > > > > - At remote <host1>: > > $ radare listen://:1234 > > - At remote <host2>: > > $ radare listen://:1234 > > - At localhost: > > $ radare <bin> > > ; Add hosts > > ]> =+ rap://<host1>:1234//bin/ls > > Connected to: <host1> at port 1234 > > waiting... ok > > 5 - rap://<host1>:1234//bin/ls > > ; Of course, you can open remote files in debug mode (or using > > any io ; plugin) specifying the uri when adding hosts: > > ]> =+ rap://<host2>:1234/dbg:///bin/ls > > Connected to: <host2> at port 1234 > > waiting... ok > > 5 - rap://<host1>:1234//bin/ls > > 6 - rap://<host2>:1234/dbg:///bin/ls > > ; Exec commands in host1 > > ]> =5 px > > ]> = s 0x666 > > ... > > ; Open a session with host2 > > ]> ==6 > > fd:6> !cont entrypoint > > ... > > fd:6> q > > ; Remove hosts (and close connections) > > ]> =- > > > > Enjoy! > > > > Regards, > > Nibble > > _______________________________________________ > > radare mailing list > > [email protected] > > http://lists.nopcode.org/listinfo.cgi/radare-nopcode.org > > > > > > _______________________________________________ > radare mailing list > [email protected] > http://lists.nopcode.org/listinfo.cgi/radare-nopcode.org _______________________________________________ radare mailing list [email protected] http://lists.nopcode.org/listinfo.cgi/radare-nopcode.org
