Scapy在python中被大量的使用,它主要處理和報文有關的東西。
Version 2.4.2
下載
pip install scapy
一些基礎內容
1.命令行輸入scapy,可以與之交互。
下面建立一個數據包
>>> test=IP()
>>> test.src
'127.0.0.1'
>>> test.dst
'127.0.0.1'
>>> test.ttl
64
可以看見使用IP()建立了一個數據包,它都會設有默認值。要設置值得時候,可以建立的時候就設置,如>>>test=IP(ttl=128)
或者建立之後更改
>>>test=IP()
>>>test.ttl=128
注意這裏IP要大寫。
2.
/
這個符號起到組合得作用。當使用該操作符時,下層可以根據其上層,使它的一個或多個默認字段被重載。(您仍可以賦予您想要的值)一個字符串也可以被用作原料層(raw layer)。
osi七層:
應用層
表示層
會話層
傳輸層
網絡層
數據鏈路層
物理層
3.處理pcap包
from scapy.all import *
a=rdpcap("/root/Desktop/1.pcapng")
for i in a:
if i.haslayer("TCP"):
info=i["TCP"].payload.original#the original payload is xxx.payload.original
print(info.decode("utf8","ignore"))
4.psdump,pdfdump
a=IP()
a.psdump() #變成圖像
a.pdfdump() #變成pdf
ls(pkt) 顯示出字段值的列表
pkt.command() 返回可以生成數據包的Scapy命令
pkt.summary() 一行摘要
5.發送數據包
send和sendp都能發送數據包,send()函數將會在第3層發送數據包,而sendp()函數將會工作在第2層。選擇合適的接口和正確的鏈路層協議都取決於你。
>>>send(IP())
6.發送和接收數據包
sr()發送和接收數據包。下面是示例:
sr1()也是用來發送和接收的,不過sr()返回的是元組。下面是示例:
7.SYN Scans
sr1(IP(dst="www.nmap.org")/TCP(dport=80,flags="S"))
其中TCP的flags=”S“表示SYN建立連接,補充一下(ACK表示響應,FIN表示關閉連接,RST表示重置,PSH表示有data數據傳輸)。
report_ports()這個函數,可以自動化SYN掃描。
a=report_ports("www.nmap.org",(79,81))
print(a)
掃描結果:
\begin{tabular}{|r|l|l|}
\hline
http & open & SA \\
\hline
\hline
finger & ? & unanswered \\
81 & ? & unanswered \\
\hline
\end{tabular}
8.traceroute
這是一個函數,可以直接用。
traceroute(target="www.baidu.com",maxttl=30,dport=80)
9.sniffing
help(sniff)一下,什麼都有。