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