from scapy.all import * from random import randint import time,ipaddress,threading from optparse import OptionParser
def ICMP_Ping(addr): RandomID=randint(1,65534) packet = IP(dst=addr, ttl=64, id=RandomID) / ICMP(id=RandomID, seq=RandomID) / "lyshark" respon = sr1(packet,timeout=3,verbose=0) if respon: print("[+] --> {}".format(str(respon[IP].src)))
def TraceRouteTTL(addr): for item in range(1,128): RandomID=randint(1,65534) packet = IP(dst=addr, ttl=item, id=RandomID) / ICMP(id=RandomID, seq=RandomID) respon = sr1(packet,timeout=3,verbose=0) if respon != None: ip_src = str(respon[IP].src) if ip_src != addr: print("[+] --> {}".format(str(respon[IP].src))) else: print("[+] --> {}".format(str(respon[IP].src))) return 1 else: print("[-] --> TimeOut") time.sleep(1)
def Banner(): print(" _ ____ _ _ ") print(" | | _ _/ ___|| |__ __ _ _ __| | __") print(" | | | | | \___ \| '_ \ / _` | '__| |/ /") print(" | |__| |_| |___) | | | | (_| | | | < ") print(" |_____\__, |____/|_| |_|\__,_|_| |_|\_\\") print(" |___/ \n") print("E-Mail: me@lyshark.com")
if __name__== "__main__": Banner() parser = OptionParser() parser.add_option("--mode",dest="mode",help="选择使用的工具模式<ping/trace>") parser.add_option("-a","--addr",dest="addr",help="指定一个IP地址或范围") (options,args) = parser.parse_args() print("By: LyShark.com") if options.mode == "ping": net = ipaddress.ip_network(str(options.addr)) for item in net: t = threading.Thread(target=ICMP_Ping,args=(str(item),)) t.start() elif options.mode == "trace": TraceRouteTTL(str(options.addr)) else: parser.print_help()
|