def ip_target(t): return str(ipaddress.ip_address(t.ipv4())) def save_certif(name): def _cb(t, lvl4sm, hsm, buf): with open("%s_%s" % (name, ip_target(t)), "wb+") as f: f.write(buf.tobytes()) return False return _cb engine = pynodescan.AsyncEngine(targets, 40000, 60) engine.set_lvl4_connected_callback( ProtoRouter({ tcp_22: pynodescan.protocols.SSH().on_certificate(save_certif( "ssh")).on_invalid_answer(lambda t, lvl4sm, hsm, buf: print( "SSH failed for %s" % ip_target(t))), tcp_443: pynodescan.protocols.SSL().on_certificate(save_certif("ssl")) })) try: engine.auto_save_state("scan_state.xml", 60) engine.launch() except KeyboardInterrupt: engine.save_state("scan_state.xml")
import pyleeloo import pynodescan import ipaddress targets = pynodescan.ReinjectableTargetStdin(pyleeloo.tcp_port(1245)) engine = pynodescan.AsyncEngine(targets, 1, 100) def ip2str(ip): return str(ipaddress.ip_address(ip)) def send_hello(self, target, lvl4sm, hsm): print("send hello to %s" % ip2str(target.ipv4())) s = "hello" target.send(s) return False n = 4 def finish(target, err): print("finished for %s/%s: %d" % (ip2str(target.ipv4()), str(target.port()), err)) global n if n > 0: targets.add_target(pynodescan.Target(target.ipv4(), pyleeloo.tcp_port(1246))) n -= 1 engine.set_lvl4_connected_callback(send_hello) engine.set_lvl4_finish_callback(finish) engine.launch()
import pyleeloo import pynodescan ips = pyleeloo.ip_list_intervals() ips.add("127.0.0.1") ports = pyleeloo.port_list_intervals() ports.add(pyleeloo.tcp_port(5555)) ports.add(pyleeloo.tcp_port(5556)) targets = pynodescan.IPV4TargetSet(ips, ports) engine = pynodescan.AsyncEngine(targets, 2, 60) def on_connect(t, l, h): print("on_connect %s" % str(t.port())) return True engine.set_lvl4_connected_callback(on_connect) def timeout_of_target(t): if t.port() == pyleeloo.tcp_port(5555): return 5 return 10 engine.set_timeout_of_target(timeout_of_target) engine.set_lvl4_finish_callback(lambda t, b, e: print("finish for %s/%d" %