1. python,scapy,rdpcap模塊缺失問題
你可以參考一下:
Python 2.7.3 (default, Apr 10 2013, 05:09:49)
[GCC 4.7.2] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> from scapy.all import *
WARNING: No route found for IPv6 destination :: (no default route?)
>>> IP()
<IP |>
>>> target="ww w.b ai.c om"
>>> target="ww w.d u.co m/30"
>>> ip=IP(dst=target)
>>> ip
<IP dst=Net('ww w.ba i.c om/30') |>
>>> [p for p in ip]
[<IP dst=61.135.169.104 |>, <IP dst=61.135.169.105 |>, <IP dst=61.135.169.106 |>, <IP dst=61.135.169.107 |>]
>>>
2. python的scapy模塊,嗅探時輸出的[TCP].payload亂碼如何解決
scapy 模塊安裝
今天因為要用到scapy 模塊就進行安裝:
windows:
pip install scapy
成功安裝。
mac:
pip install scapy1
竟然提示許可權問題,於是
sudo pip install scapy1
還是報錯permission denied
於是上網查詢,發現原來是mac 系統的sip 機制導致。
參考:參考鏈接
sudo pip install scapy --user -U1
安裝成功。
scapy 模塊使用
安裝完成,進行使用。
>>python >>import scapy12
沒有問題,我以為安裝成功,於是開始寫代碼。
參考代碼鏈接:
結果發現在導入模塊的時候後出錯:
from scapy.all import *1
如果遇到模塊不存在的錯誤,只需要 pip install XX 安裝對應的模塊即可。
mac就遇到此類錯誤:
importError: No mole named pcapy1
那就安裝pcapy模塊,遇到同樣的許可權問題,使用:
pip install pcapy --user -U1
安裝完之後還出現錯誤:
ImportError: No mole nam
3. 求教python程序調用scapy模塊的問題
如題所說,最近在學習scapy,一個小程序
#! /usr/bin/env python
import sys
from scapy.all import sr1,IP,ICMP
p=sr1(IP(dst=sys.argv[1])/ICMP())
if p:
p.show()
運行時總提示
importError: no mole named scapy.layer
無法調用這個模塊呀,怎麼設置路徑呀?跪求大神呀!
首先得確認libs有這個個scapy。
自己在系統里看看就知道了 ls /usr/lib64/python2.7/dist-packages/
4. Python滲透測試工具都有哪些
網路
Scapy, Scapy3k: 發送,嗅探,分析和偽造網路數據包。可用作互動式包處理程序或單獨作為一個庫
pypcap, Pcapy, pylibpcap: 幾個不同 libpcap 捆綁的python庫
libdnet: 低級網路路由,包括埠查看和乙太網幀的轉發
dpkt: 快速,輕量數據包創建和分析,面向基本的 TCP/IP 協議
Impacket: 偽造和解碼網路數據包,支持高級協議如 NMB 和 SMB
pynids: libnids 封裝提供網路嗅探,IP 包碎片重組,TCP 流重組和埠掃描偵查
Dirtbags py-pcap: 無需 libpcap 庫支持讀取 pcap 文件
flowgrep: 通過正則表達式查找數據包中的 Payloads
Knock Subdomain Scan: 通過字典枚舉目標子域名
SubBrute: 快速的子域名枚舉工具
Mallory: 可擴展的 TCP/UDP 中間人代理工具,可以實時修改非標准協議
Pytbull: 靈活的 IDS/IPS 測試框架(附帶超過300個測試樣例)
調試和逆向工程
Paimei: 逆向工程框架,包含PyDBG, PIDA , pGRAPH
Immunity Debugger: 腳本 GUI 和命令行調試器
mona.py: Immunity Debugger 中的擴展,用於代替 pvefindaddr
IDAPython: IDA pro 中的插件,集成 Python 編程語言,允許腳本在 IDA Pro 中執行
PyEMU: 全腳本實現的英特爾32位模擬器,用於惡意軟體分析
pefile: 讀取並處理 PE 文件
pydasm: Python 封裝的libdasm
PyDbgEng: Python 封裝的微軟 Windows 調試引擎
uhooker: 截獲 DLL 或內存中任意地址可執行文件的 API 調用
diStorm: AMD64 下的反匯編庫
python-ptrace: Python 寫的使用 ptrace 的調試器
vdb/vtrace: vtrace 是用 Python 實現的跨平台調試 API, vdb 是使用它的調試器
Androguard: 安卓應用程序的逆向分析工具
Capstone: 一個輕量級的多平台多架構支持的反匯編框架。支持包括ARM,ARM64,MIPS和x86/x64平台
PyBFD: GNU 二進制文件描述(BFD)庫的 Python 介面
Fuzzing
Sulley: 一個模糊器開發和模糊測試的框架,由多個可擴展的構件組成的
Peach Fuzzing Platform: 可擴展的模糊測試框架(v2版本 是用 Python 語言編寫的)
antiparser: 模糊測試和故障注入的 API
TAOF: (The Art of Fuzzing, 模糊的藝術)包含 ProxyFuzz, 一個中間人網路模糊測試工具
untidy: 針對 XML 模糊測試工具
Powerfuzzer: 高度自動化和可完全定製的 Web 模糊測試工具
SMUDGE: 純 Python 實現的網路協議模糊測試
Mistress: 基於預設模式,偵測實時文件格式和偵測畸形數據中的協議
Fuzzbox: 媒體多編碼器的模糊測試
Forensic Fuzzing Tools: 通過生成模糊測試用的文件,文件系統和包含模糊測試文件的文件系統,來測試取證工具的魯棒性
Windows IPC Fuzzing Tools: 使用 Windows 進程間通信機制進行模糊測試的工具
WSBang: 基於 Web 服務自動化測試 SOAP 安全性
Construct: 用於解析和構建數據格式(二進制或文本)的庫
fuzzer.py(feliam): 由 Felipe Andres Manzano 編寫的簡單模糊測試工具
Fusil: 用於編寫模糊測試程序的 Python 庫
Web
Requests: 優雅,簡單,人性化的 HTTP 庫
HTTPie: 人性化的類似 cURL 命令行的 HTTP 客戶端
ProxMon: 處理代理日誌和報告發現的問題
WSMap: 尋找 Web 伺服器和發現文件
Twill: 從命令行界面瀏覽網頁。支持自動化網路測試
Ghost.py: Python 寫的 WebKit Web 客戶端
Windmill: Web 測試工具幫助你輕松實現自動化調試 Web 應用
FunkLoad: Web 功能和負載測試
spynner: Python 寫的 Web瀏覽模塊支持 Javascript/AJAX
python-spidermonkey: 是 Mozilla JS 引擎在 Python 上的移植,允許調用 Javascript 腳本和函數
mitmproxy: 支持 SSL 的 HTTP 代理。可以在控制台介面實時檢查和編輯網路流量
pathod/pathoc: 變態的 HTTP/S 守護進程,用於測試和折磨 HTTP 客戶端
5. python截取無人機UDP包,如何解析內容
PYTHON首先要安裝scapy模塊
PY3的安裝scapy-python3,使用PIP安裝就好了,注意,PY3無法使用pyinstaller打包文件,PY2正常
PY2的安裝scapy,比較麻煩
!
6. Scapy 中文文檔:三、使用方法
Scapy的交互shell是運行在一個終端會話當中。因為需要root許可權才能發送數據包,所以我們在這里使用 sudo
在Windows當中,請打開命令提示符( cmd.exe ),並確保您擁有管理員許可權:
如果您沒有安裝所有的可選包,Scapy將會告訴你有些功能不可用:
雖然沒有安裝,但發送和接收數據包的基本功能仍能有效。
本節將會告訴您一些Scapy的功能。讓我們按上文所述打開Scapy,親自嘗試些例子吧。
讓我們來建立一個數據包試一試
/ 操作符在兩層之間起到一個組合的作用。當使用該操作符時,下層可以根據其上層,使它的一個或多個默認欄位被重載。(您仍可以賦予您想要的值)一個字元串也可以被用作原料層( raw layer )。
每一個數據包都可以被建立或分解(注意:在Python中 _ (下劃線)是上一條語句執行的結果):
我們看到一個分解的數據包將其所有的欄位填充。那是因為我認為,附加有原始字元串的欄位都有它自身的價值。如果這太冗長, hide_defaults() 方法將會刪除具有默認值的欄位:
你可以從PCAP文件中讀取數據包,並將其寫入到一個PCAP文件中。
如果您已經安裝PyX,您可以做一個數據包的圖形PostScript/ PDF轉儲(見下面醜陋的PNG圖像,PostScript/PDF則具有更好的質量...)
目前我們只是生成一個數據包。讓我們看看如何輕易地定製一組數據包。整個數據包的每一個欄位(甚至是網路層次)都可以是一組。在這里隱含地定義了一組數據包的概念,意即是使用所有區域之間的笛卡爾乘積來生成的一組數據包。
某些操作(如修改一個數據包中的字元串)無法對於一組數據包使用。在這些情況下,如果您忘記展開您的數據包集合,只有您忘記生成的列表中的第一個元素會被用於組裝數據包。
現在我們知道了如何處理數據包。讓我們來看看如何發送它們。 send() 函數將會在第3層發送數據包。也就是說它會為你處理路由和第2層的數據。 sendp() 函數將會工作在第2層。選擇合適的介面和正確的鏈路層協議都取決於你。
fuzz() 函數可以通過一個具有隨機值、數據類型合適的對象,來改變任何默認值,但該值不能是被計算的(像校驗和那樣)。這使得可以快速建立循環模糊化測試模板。在下面的例子中,IP層是正常的,UDP層和NTP層被fuzz。UDP的校驗和是正確的,UDP的目的埠被NTP重載為123,而且NTP的版本被更變為4.其他所有的埠將被隨機分組:
現在讓我們做一些有趣的事情。 sr() 函數是用來發送數據包和接收應答。該函數返回一對數據包及其應答,還有無應答的數據包。 sr1() 函數是一種變體,用來返回一個應答數據包。發送的數據包必須是第3層報文(IP,ARP等)。 srp() 則是使用第2層報文(乙太網,802.3等)。
DNS查詢( rd = recursion desired)。主機192.168.5.1是我的DNS伺服器。注意從我Linksys來的非空填充具有Etherleak缺陷:
發送和接收函數族是scapy中的核心部分。它們返回一對兩個列表。第一個就是發送的數據包及其應答組成的列表,第二個是無應答數據包組成的列表。為了更好地呈現它們,它們被封裝成一個對象,並且提供了一些便於操作的方法:
如果對於應答數據包有速度限制,你可以通過 inter 參數來設置兩個數據包之間等待的時間間隔。如果有些數據包丟失了,或者設置時間間隔不足以滿足要求,你可以重新發送所有無應答數據包。你可以簡單地對無應答數據包列表再調用一遍函數,或者去設置 retry 參數。如果retry設置為3,scapy會對無應答的數據包重復發送三次。如果retry設為-3,scapy則會一直發送無應答的數據包,直到。 timeout 參數設置在最後一個數據包發出去之後的等待時間:
在Scapy提示符中執行一下命令,可以對經典的SYN Scan初始化:
以上向Google的80埠發送了一個SYN數據包,會在接收到一個應答後退出:
從以上的輸出中可以看出,Google返回了一個SA(SYN-ACK)標志位,表示80埠是open的。
使用其他標志位掃描一下系統的440到443埠:
或者
可以對收集的數據包進行摘要(summary),來快速地瀏覽響應:
以上顯示了我們在掃描過程中的請求應答對。我們也可以用一個循環只顯示我們感興趣的信息:
可以使用 make_table() 函數建立一個表格,更好地顯示多個目標信息:
在以上的例子中,如果接收到作為響應的ICMP數據包而不是預期的TCP數據包,就會列印出ICMP差錯類型(error type)。
對於更大型的掃描,我們可能對某個響應感興趣,下面的例子就只顯示設置了"SA"標志位的數據包:
如果我們想對響應進行專業分析,我們可以使用使用以下的命令顯示哪些埠是open的:
對於更大型的掃描,我們可以建立一個埠開放表:
如果以上的方法還不夠,Scapy還包含一個 report_ports() 函數,該函數不僅可以自動化SYN scan,而且還會對收集的結果以LaTeX形式輸出:
TCP路由追蹤:
注意:TCP路由跟蹤和其他高級函數早已被構造好了:
發送和接收數據包的過程是相當復雜的。
我們可以簡單地捕獲數據包,或者是克隆tcpmp或tethereal的功能。如果沒有指定interface,則會 在所有的interface上進行嗅探:
對於控制輸出信息,我們可以使用 sprintf() 函數:
我們可以嗅探並進行被動操作系統指紋識別:
猜測操作系統版本前的數字為猜測的精確度。
演示一下bpf過濾器和sprintf()方法:
這兒有一個例子來實現類似(h)ping的功能:你一直發送同樣的數據包集合來觀察是否發生變化:
通常可以將數據包保存為pcap文件以備後用,或者是供其他的應用程序使用:
還原之前保存的pcap文件:
或者
Scapy允許你以不同的十六進制格式輸出編碼的數據包。
使用 hexmp() 函數會以經典的hexmp格式輸出數據包:
使用 import_hexcap() 函數可以將以上的hexmp重新導入到Scapy中:
使用 str() 函數可以將整個數據包轉換成十六進制字元串:
通過選擇合適的起始層(例如 Ether() ),我們可以重新導入十六進制字元串。
使用 export_object() 函數,Scapy可以數據包轉換成base64編碼的Python數據結構:
使用 import_object() 函數,可以將以上輸出重新導入到Scapy中:
最後可以使用 save_session() 函數來保存所有的session變數:
使用 load_session() 函數,在下一次你啟動Scapy的時候你就能載入保存的session:
現在我們來演示一下 make_table() 函數的功能。該函數的需要一個列表和另一個函數(返回包含三個元素的元組)作為參數。第一個元素是表格x軸上的一個值,第二個元素是y軸上的值,第三個原始則是坐標(x,y)對應的值,其返回結果為一個表格。這個函數有兩個變種, make_lined_table() 和 make_tex_table() 來復制/粘貼到你的LaTeX報告中。這些函數都可以作為一個結果對象的方法:
在這里,我們可以看到一個多機並行的traceroute(Scapy的已經有一個多TCP路由跟蹤功能,待會兒可以看到):
這里有個更復雜的例子:從他們的IPID欄位中識別主機。我們可以看到172.20.80.200隻有22埠做出了應答,而172.20.80.201則對所有的埠都有應答,而且172.20.80.197對25埠沒有應答,但對其他埠都有應答。
你在使用TTL和顯示接收到的TTL等情況下,它可以很輕松地幫你識別網路拓撲結構。
現在Scapy有自己的路由表了,所以將你的數據包以不同於操作系統的方式路由:
我們可以很容易地將收集起來的數據繪製成Gnuplot。(清確保你已經安裝了Gnuplot-py和Gnuplot)例如,我們可以通過觀察圖案知道負載平衡器用了多少個不同的IP堆棧:
Scapy也有強大的TCP traceroute功能。並不像其他traceroute程序那樣,需要等待每個節點的回應才去下一個節點,scapy會在同一時間發送所有的數據包。其缺點就是不知道什麼時候停止(所以就有maxttl參數),其巨大的優點就是,只用了不到3秒,就可以得到多目標的traceroute結果:
最後一行實際上是該函數的返回結果:traceroute返回一個對象和無應答數據包列表。traceroute返回的是一個經典返回對象更加特殊的版本(實際上是一個子類)。我們可以將其保存以備後用,或者是進行一些例如檢查填充的更深層次的觀察:
和其他返回對象一樣,traceroute對象也可以相加:
Traceroute返回對象有一個非常實用的功能:他們會將得到的所有路線做成一個有向圖,並用AS組織路線。你需要安裝graphviz。在默認情況下會使用ImageMagick顯示圖形。
如果你安裝了VPython,你就可以用3D來表示traceroute。右邊的按鈕是旋轉圖案,中間的按鈕是放大縮小,左邊的按鈕是移動圖案。如果你單擊一個球,它的IP地址就會出現/消失。如果你按住Ctrl單擊一個球,就會掃描21,22,23,25,80和443埠,並顯示結果:
frame injection的前提是你的無線網卡和驅動得正確配置好。
7. python程序分析pcap文件的丟包率問題,
使用scapy、scapy_http就可以方便的對pcap包中的http數據包進行解析
#!/usr/bin/env python
try:
import scapy.all as scapy
except ImportError:
import scapy
try:
# This import works from the project directory
import scapy_http.http
except ImportError:
# If you installed this package via pip, you just need to execute this
from scapy.layers import http
packets = scapy.rdpcap('f:\\abc123.pcap')
for p in packets:
print '=' * 78
[python] view plain
#print p.show()
for f in p.payload.fields_desc:
if f.name == 'src' or f.name == 'dst':
ct = scapy.conf.color_theme
vcol = ct.field_value
fvalue = p.payload.getfieldval(f.name)
reprval = f.i2repr(p.payload,fvalue)
print "%s : %s" % (f.name, reprval)
for f in p.payload.payload.fields_desc:
if f.name == 'load':
ct = scapy.conf.color_theme
vcol = ct.field_value
fvalue = p.payload.getfieldval(f.name)
reprval = f.i2repr(p.payload,fvalue)
print "%s : %s" % (f.name, reprval)
其中,p為數據包,scapy_http將其分為:
Ethernet->TCP->RAW三個層次,
使用p.show()函數可以列印出如下結果:
###[ Ethernet ]###
dst = 02:00:00:00:00:39
src = 00:00:00:01:02:09
type = 0x800
###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 1014
id = 7180
flags =
frag = 0L
ttl = 45
proto = tcp
chksum = 0xbbf9
src = 126.209.59.13
dst = 121.113.176.25
\options \
###[ Raw ]###
load = '.....'
第一層是網路層,包含源、目的mac、ip協議號,第二層是tcp層,第三層包含埠號、http報文
其中每一層均為上一層的payload成員
8. python scapy 能拿到請求與響應體嗎
最近一直在使用做流量分析,今天把 scapy 部分做一個總結。 python 的 scapy 庫衡氏可以方便的抓包與解析包,無奈資料很少,官方例子有限,大神博客很少提及, 經過一番嘗試後,總結以下幾點用法以便大家以後使用。
python scapy 抓包與解析
轉載請註明來自:b0t0w1』blog
## 安裝
作為初學者,關心的首先是如何安裝,本人電腦系統是 fedora, 建議使用 linux。 推薦下載 pip,直接:(當然得在 su 許可權下)
pip install scapy1
第六個連接並沒有 Raw 數據,訪問出錯, 第七個有 Raw 數據,可以得到報文信息。
使用離線數據包
pcap = sniff(offline = "xx/xx.pcap")`1