初探Scapy

參照的文檔

<br />

構(gòu)造數(shù)據(jù)包

在 Scapy 中可以用特別簡(jiǎn)單的方法來構(gòu)造一個(gè)數(shù)據(jù)包,比如構(gòu)造一個(gè) IP 包,并傳入一些參數(shù):

構(gòu)造的IP包

使用 / 可以將不同的包進(jìn)行組合:

三個(gè)層的包的組合(注:HTTP HEADER 約定以 \r\n\r\n 結(jié)尾)

除了一個(gè)數(shù)據(jù)包一個(gè)數(shù)據(jù)包地構(gòu)造,Scapy 還支持同時(shí)構(gòu)造多個(gè)數(shù)據(jù)包:

同時(shí)構(gòu)造多個(gè)數(shù)據(jù)包

此外,使用 fuzz 函數(shù)可以快速構(gòu)造隨機(jī)模板,同時(shí)保證其它參數(shù)是正確的,如:

fuzz 函數(shù)

在此構(gòu)造中,IP 層是普通的,而 UDP 和 NTP 層是 fuzz 的。因此,除了 UDP 和校驗(yàn)和必須正確和 UDP 的目標(biāo)端口必須是 123(NTP 協(xié)議要求)之外,其他的都是隨機(jī)的
<br />

發(fā)送數(shù)據(jù)包

構(gòu)造好了數(shù)據(jù)包之后,是時(shí)候把它們發(fā)出去了。Scapy 提供了基于第三層即網(wǎng)絡(luò)層的 send 函數(shù),和基于第二層即數(shù)據(jù)鏈路層的 sendp 函數(shù),這意味著,使用 sen
![Uploading Screenshot from 2016-05-13 20-27-49_682712.png . . .]
d 函數(shù)不需要我們考慮路由和第二層的細(xì)節(jié),而使用 sendp 函數(shù)需要我們指定發(fā)送數(shù)據(jù)包的網(wǎng)卡和鏈路層的協(xié)議。

send 和 sendp 函數(shù)

接受數(shù)據(jù)包

在 Scapy 中使用 sr 函數(shù)、sr1 函數(shù)來發(fā)送和接收第三層的數(shù)據(jù)包(IP, ARP等),而 srp 函數(shù)用于發(fā)送和接受第二層的數(shù)據(jù)包(Ethernet,802.3等)

例如,我們向 bing.com 發(fā)送一個(gè) ICMP 包:

sr 函數(shù)是 Scapy 的核心,這個(gè)函數(shù)返回兩個(gè)列表,第一個(gè)列表是收到應(yīng)答的包和其對(duì)應(yīng)的應(yīng)答,第二個(gè)列表是未收到應(yīng)答的包,通常,我們需要調(diào)用別的函數(shù)來使得這兩個(gè)返回值更易于閱讀,如:

如果遠(yuǎn)程主機(jī)對(duì)于應(yīng)答的速率有限制,我們可以通過設(shè)置 inter 參數(shù)來設(shè)置發(fā)送相鄰兩個(gè)包直接的時(shí)間間隔,此外,我們可以通過設(shè)置 timeout 參數(shù)來設(shè)置等待應(yīng)答的超時(shí)時(shí)間,還可以設(shè)置 retry 參數(shù)來設(shè)置重試次數(shù)。在 Scapy 中,如果 retry = 3,那么 Scapy 會(huì)嘗試發(fā)送未應(yīng)答的包 3 次,如果 retry = -3 ,Scapy 會(huì)一直發(fā)送未應(yīng)答的包直到?jīng)]有更多的答案是相同的包 3 次(表示沒有理解這句話,原文是:If retry is -3, scapy will resend unanswered packets until no more answer is given for the same set of unanswered packets 3 times in a row.)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容