python實現arp掃瞄

2022-03-01 05:12:16 字數 1830 閱讀 9680

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...