scapy基本使用
scapy基本使用
官方手冊
官方介紹文檔
python官網(wǎng)
scapy模塊
from scapy.all import * //來自scapy.all文件,導(dǎo)入所有函數(shù)
python交互模式中:ls()=Ether、IP、ICMP、TCP、UDP、ARP 等等,查看可以配置的參數(shù)
1.構(gòu)建包:不同層之間用/分隔(常用)
Ether = Ether(src=“源mac”,dst=“目的mac”) //以太網(wǎng)層 = 二層
IP = IP(src=“源ip”,dst=“目的ip或者URL”) //IP層 = 三層
XY = ICMP()、TCP()、UDP() [都可以用dport=目的端口,sport=源端口]//協(xié)議封裝在IP層
ARP = ARP(hwsrc=‘二層源mac’,psrc=‘三層源IP’,hwdst=‘二層目的mac’,pdst=‘三層目的IP’) SJ = padding(load=‘x’*8) //數(shù)據(jù)位,填充 x乘8個(gè)
RandMAC() 任意MAC地址
RandIP() 任意IP地址
構(gòu)建二層包:(以Ether層開頭)
如:pkt=Ether/IP/ARP
構(gòu)建三層包:(以IP層開頭)
如:pkt=IP/XY/SJ
2.只發(fā)送
二層:sendp() //給定網(wǎng)卡接口
三層:send() //自動根據(jù)路由表進(jìn)行路由發(fā)送
如發(fā)二層包:
? sendp(pkt,iface=“eth0”,loop=1,inter=1 )
參數(shù):
pkt 構(gòu)建包的變量
iface=“eth0” 選擇網(wǎng)卡為eth0
loop=1 循環(huán)發(fā)送
inter=1 每隔1秒發(fā)送
timeout=1 超時(shí)1秒就丟棄,實(shí)際時(shí)間看程序處理能力而定
3.發(fā)送并返回
二層:
? srp() //發(fā)送包, 返回答復(fù)和沒有答復(fù)的包的數(shù)量
? srp1() //發(fā)送包, 返回只答復(fù)或者發(fā)送的包的詳細(xì)信息| .參數(shù),顯示這個(gè)參數(shù)的返回?cái)?shù)據(jù)
三層:
? sr( ) //發(fā)送包, 返回答復(fù)和沒有答復(fù)的包的數(shù)量
? sr1( ) //發(fā)送包, 返回只答復(fù)或者發(fā)送的包的詳細(xì)信息|.參數(shù),顯示這個(gè)參數(shù)的返回?cái)?shù)據(jù)
如二層發(fā)收包:
? srp1(pkt,timeout=1,verbose=0 )
參數(shù):
? pkt 構(gòu)建包的變量
? timeout=1 超時(shí)1秒就丟棄s,實(shí)際時(shí)間看程序處理能力而定
? verbose=0 不顯示詳細(xì)信息
教程中的包構(gòu)造方法:
srp(Ether(src=localmac,dst=‘FF:FF:FF:FF:FF:FF’)/ARP(op=1,hwsrc=localmac,hwdst=‘00:00:00:00:00:00’ , psrc=localip,pdst=ip_address),iface=ifname,verbose=False )
Scapy 常用函數(shù)說明
Ether() , IP() , TCP()
分別用于構(gòu)造以太幀,IP數(shù)據(jù)報(bào),TCP報(bào)文
raw()可以使報(bào)文以byte的形式打出來
總結(jié)
- 上一篇: ***我是如何通过华为面试的?群面+技术
- 下一篇: 基于线段的激光雷达单目曲面重建(ICRA