from scapy.all import *import sys,getopt,socket
def get_local_net():
#獲取網段。如:192.168.50
try:
s = socket.socket(socket.af_inet, socket.sock_dgram)
s.connect(('8.8.8.8', 80))
# 獲取本機ip。如:192.168.50.110
ip = s.getsockname()[0]
ippre_list = ip.split(r".")
ippre_list.pop()
# 獲取網段字串。如:192.168.50
ipnet = '.'.join(ippre_list)
except exception:
ipnet = false
finally:
s.close()
return ipnet
def get_vlan_ip_and_mac(locnet,start_num=1,end_num=255):
# 通過arp協議掃瞄,發現本網段存活ip和mac
result =
localnet = locnet
scansum=int(end_num)-int(start_num)+1
print("%s.%s - %s.%s 共計 %s 個被掃瞄ip"% (localnet,start_num,localnet,end_num,scansum))
print()
counter=1
# 如果無法識別本網段,則退出掃瞄
if not localnet:
print("掃瞄終止:無法識別本網段。")
return result
for ipfix in range(start_num,end_num+1):
# 構造本網段的ip。如:192.168.50.20
ip =localnet+"."+str(ipfix)
# 組合協議包
# 通過 '/' 可疊加多個協議層(左底層到右上層),如ether()/ip()/udp()/dns()
arppkt=ether(dst="ff:ff:ff:ff:ff:ff")/arp(pdst=ip)
# 傳送arp請求,並獲取響應結果。設定1s超時。
res = srp1(arppkt,timeout=1,verbose=0)
# 如果ip存活
if res:
print("%3d --> %s %s"%(counter,ip, res.hwsrc))
counter+=1
# 如果ip不存活
else:
print("%3d --> %s"%(counter,ip))
counter+=1
return result
if __name__ == '__main__':
locnet=get_local_net()
print("一、開始掃瞄本網段(%s.xx)活動的ip" % locnet )
# 掃瞄ip起始和終止範圍
start_num=126
end_num=135
# 開始掃瞄
result = get_vlan_ip_and_mac(locnet,start_num,end_num)
print()
print("二、mac表彙總清單(活動ip共計 %s個):" % len(result))
for dic in result:
print(dic)
Python 實現ZmapScan 掃瞄
python是一門很好的用來編寫滲透指令碼的語言,擁有很多成熟的庫,我們可以直接拿來使用。我們今天來看一下如何用python實現乙個簡單的zamp掃瞄器。zmap掃瞄器由durumeric領導密西根大學研究團隊開發,掃瞄速度很快,可以在45分鐘內掃瞄全網ipv4位址。這種掃瞄的原理就是不進行三次握手...
Scapy程式設計例項之ARP掃瞄
arp協議 全稱 addressresolutionprotocol,中文名稱 位址解析協議 是乙個通過解析網路層位址來找尋資料鏈路層位址的網路傳輸協議 通過 ip 位址找到 mac位址 arp 協議作為乙個重要的定址協議,只要是執行在乙太網上的主機,都必定不會遮蔽它,因此 arp 是乙個掃瞄區域網...
python實現埠掃瞄
一 import socket import multiprocessing def ports ports service 獲取常用埠對應的服務名稱 for port in list range 1,100 143,145,113,443,445,3389,8080 try ports servi...