實驗環境
準備工作
**展示
import os
import re
from scapy.layers.l2 import ether,arp
from scapy.sendrecv import srp
pattern=
'\w\w:\w\w:\w\w:\w\w:\w\w:\w\w'
# \w匹配字母或數字或下劃線或漢字 等價於 '[^a-za-z0-9_]'。
unknown_mac=
'ff:ff:ff:ff:ff:ff'
defget_mac_address
(network)
: temp = os.popen(
'ifconfig '
+network)
#ifconfig後面要有空格,其實相當於在執行命令 ifconfig ens33
result=temp.readlines(
)for item in result:
condition=re.search(pattern,item)
#通過正則匹配篩選出mac位址
if condition:
return condition.group(0)
defget_ip_list
(ip)
: ip_list=
temp=
str(ip)
.split(
'.')
for i in
range(1
,255):
#這裡假設是在同一區域網內,ip前三個段相同,後面從1-2540]
+'.'
+temp[1]
+'.'
+temp[2]
+'.'
+str
(i))
return ip_list
defarp_scan
(local_ip,network=
'ens33'):
#最重要的部分,傳入本地ip位址和網絡卡名稱
mac=get_mac_address(network)
ip_list=get_ip_list(local_ip)
# 傳送arp請求包,op=1是請求,op=2是響應
temp=srp(ether(src=mac,dst=unknown_mac)
/ arp(op=
1,hwsrc=mac,hwdst=unknown_mac,psrc=local_ip,pdst=ip_list)
, iface=network,timeout=
1,verbose=
false
) result=temp[0]
.res
result_list=
number=
len(result)
for i in
range
(number)
: result_ip=result[i][1
].getlayer(arp)
.fields[
'psrc'
]#這裡result[i][1]是因為第二個包才是 is-at 包,result[i][0]是 who has包,是我們發出去的包
result_mac=result[i][1
].getlayer(arp)
.fields[
'hwsrc'
](result_ip,result_mac)
)return
(result_list)
if __name__ ==
'__main__'
: ip=
raw_input
('input the local ip:'
) network=
raw_input
('input the network:'
) result=arp_scan(ip,network)
for item in result:
print
('%-20s%-20s'
%(item[0]
,item[1]
))
結果顯示
注意的點
76 簡單命令組合抓取本主機IP
首先介紹乙個並不常用的命令 nl nl命令最基本的用法 為你將要檢視的檔案或者標準輸出新增行號 但務必注意的是 nl若不新增其他引數將忽略空行,不對其做行號遞增排序顯示 此外,nl 與cat n 作用類同 例如 root c7 3 cat data f1 ab root c7 3 nl data f...
zabbix自動發現主機
zabbix自動發現,在新增主機數量較多的情況很好用。從發現到新增完成需要經過以下幾個步驟。後面會將一些錯誤原因進行分析 1 建立自動發現規則 延遲選項盡量不要選擇時間過長,否則會導致主機發現時間很慢 2 建立動作,用來將自動發現的主機進行分組和鏈結模板 這個時候等待幾分鐘,會在zabbix介面 監...
用Nmap發現主機
首先了解埠狀態 常用 都是 open closed filtered 狀態 開啟 cmd 輸入 nmap a 192.168.11.11 後面是你的 ip 可以掃瞄開啟的埠狀態 a 是全掃瞄 下面介紹 發下主機的命令 下面一一介紹每個命令怎麼用 大部分防火牆不是 syn包 和ack 包同時禁止的 所...