python指令碼 主機發現

2021-10-18 10:14:28 字數 2237 閱讀 6965

實驗環境

準備工作

**展示

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 包同時禁止的 所...