#!/usr/local/bin/python3
"""
對(duì)本局域網(wǎng)進(jìn)行ARP掃描 ARP (Address Resolution Protocol,ARP);
以太網(wǎng)MAC地址識(shí)別(如下):
主機(jī)在整個(gè)局域網(wǎng)廣播ARP請(qǐng)求消息,該ARP請(qǐng)求中包含目標(biāo)設(shè)備的IP地址;
局域網(wǎng)上的每一臺(tái)設(shè)備都會(huì)檢查該ARP請(qǐng)求,看該ARP請(qǐng)求中的IP地址是不是自己;
只有符合該IP地址的設(shè)備才會(huì)發(fā)送ARP響應(yīng);
ARP響應(yīng)該中包涵了ARP請(qǐng)求中的IP地址及對(duì)應(yīng)的MAC地址;
"""
"""
這里需要Scapy這個(gè)模塊
https://pypi.org/project/ 去這里下載scapy
或者去它官網(wǎng)https://scapy.net/ 下載
Scapy是一個(gè)功能強(qiáng)大的交互式包操作程序.它能夠偽造或解碼大量的協(xié)議包,
還有能發(fā)送,捕獲,匹配及回復(fù)各種大量的協(xié)議包.它還能輕松的處理大量的經(jīng)典任務(wù),
如掃描,跟蹤,探測(cè),單元測(cè)試,×××或網(wǎng)斷掃描;
并且它還能處理其它其它工具所無(wú)法處理的任務(wù),如發(fā)送無(wú)效幀及注入自己的802.11幀,
還有一些結(jié)合技術(shù)(如VLAN跳轉(zhuǎn)+ARP緩存中毒,WEP加密信道上的VoIP解碼等),
總之就是很強(qiáng)大
執(zhí)行本腳本時(shí) ,如果需要用sudo來(lái)執(zhí)行
"""
"""
ls() 列出所有的協(xié)議及協(xié)議選項(xiàng)
lsc() 列出所有scapy的命令函數(shù)
"""
"""
/操作符在兩層之間起到一個(gè)組合的作用。當(dāng)使用該操作符時(shí),
下層可以根據(jù)其上層,使它的一個(gè)或多個(gè)默認(rèn)字段被重載。
本例中需要用的下面幾個(gè)函數(shù)
>>>ls(Ether)
dst : DestMACField = (None)
src : SourceMACField = (None)
type : XShortEnumField = (36864)
#dst 目標(biāo)mac地址 6字節(jié) 48位 dst設(shè)置為ff:ff:ff:ff:ff:ff 為廣播設(shè)置
#src 源mac地址 6字節(jié) 48位
#type 以太網(wǎng)類型,用于標(biāo)識(shí)上一層使用的是什么協(xié)議;比如0800是IP協(xié)議,0806是ARP協(xié)議,8035是RARP協(xié)議
>>>ls(ARP)
hwtype : XShortField = (1)
ptype : XShortEnumField = (2048)
hwlen : FieldLenField = (None)
plen : FieldLenField = (None)
op : ShortEnumField = (1)
hwsrc : MultipleTypeField = (None)
psrc : MultipleTypeField = (None)
hwdst : MultipleTypeField = (None)
pdst : MultipleTypeField = (None)
#hwtype 硬件地址的類型,硬件地址不只以太網(wǎng)一種,是以太網(wǎng)類型時(shí)此值為1
#ptype 標(biāo)識(shí)上一層使用的是什么協(xié)議
#op 是操作類型字段,值為1,表示進(jìn)行ARP請(qǐng)求;值為2,表示進(jìn)行ARP應(yīng)答;值為3,表示進(jìn)行RARP請(qǐng)求;值為4,表示進(jìn)行RARP應(yīng)答。
#hwsrc 源mac地址
#psrc 源ip地址
#hwdst 目標(biāo)mac地址
#pdst 目標(biāo)ip地址
>>> srp1(pkt,timeout=1,verbose=0 )
#srp1 在第二層協(xié)議上發(fā)送及接收包并返回第一次的應(yīng)答
#pkt 構(gòu)建包的變量
#timeout=1 超時(shí)1秒就丟棄,實(shí)際時(shí)間看程序處理能力而定
#verbose=0 不顯示詳細(xì)信息
"""
from scapy.all import *
import sys,getopt,socket
def get_local_net():
#獲取主機(jī)名
hostname = socket.gethostname()
#獲取主機(jī)的局域網(wǎng)ip
localip = socket.gethostbyname(hostname)
localipnums = localip.split('.')
localipnums.pop()
localipnet = '.'.join(localipnums)
return localipnet
def get_vlan_ip_and_mac():
localnet = get_local_net()
result = []
for ipFix in range(1,254):
ip =localnet+"."+str(ipFix)
#組合協(xié)議包
arpPkt=Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip)
res = srp1(arpPkt,timeout=1,verbose=0)
if res:
result.append({"localIP":res.psrc,"mac":res.hwsrc})
return result
result = get_vlan_ip_and_mac()
print(result)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到太白網(wǎng)站設(shè)計(jì)與太白網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋太白地區(qū)。