Scapy模塊的學習

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)一下,什麼都有。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章