當前位置:首頁 » 編程語言 » pcapypython

pcapypython

發布時間: 2023-01-04 21:00:07

『壹』 python 解析數據包用哪個庫好 主要解析http的數據包

用urllib, urllib2, httplib, httplib2,都看一下吧,有這四個,你要的功能應該都差不多能實現了。

『貳』 libpcap庫基本使用教程(python、C語言)

[TOC]

// 待補充

返回第一個適合的網路介面名稱,沒有找到的話返回-1。

返回所有的網路介面名稱。

打開監聽的設備, 返回一個可供操作的捕獲句柄。

將捕獲句柄設置為「非阻塞」或者「阻塞」模式,具體取決於nonblock參數為非零或零。另外pcap_getnonblock(p, errbuf)函數可用於獲取當前模式狀態。

獲取設備的網路掩碼。

用於將字元串str編譯為過濾器程序。

設置過濾器程序。

一次只抓取一個包。

『叄』 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 客戶端

『肆』 求教python程序調用scapy模塊的問題

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

『伍』 python3.2 下的抓包庫。。無論是pypcap還是scapy。貌似都沒有py3的版本。。跪求一個可以python3用

有一個py3kcap是pycap的封裝版本,可以用於python3版本。

給你一個使用的示例代碼:

#!/usr/bin/env python3.2
import ctypes,sys
from ctypes.util import find_library
#pcap = ctypes.cdll.LoadLibrary("libpcap.so")
pcap = None
if(find_library("libpcap") == None):
print("We are here!")
pcap = ctypes.cdll.LoadLibrary("libpcap.so")
else:
pcap = ctypes.cdll.LoadLibrary(find_library("libpcap"))
# required so we can access bpf_program->bf_insns
"""
struct bpf_program {
u_int bf_len;
struct bpf_insn *bf_insns;}
"""
class bpf_program(ctypes.Structure):
_fields_ = [("bf_len", ctypes.c_int),("bf_insns", ctypes.c_void_p)]
class sockaddr(ctypes.Structure):
_fields_=[("sa_family",ctypes.c_uint16),("sa_data",ctypes.c_char*14)]
class pcap_pkthdr(ctypes.Structure):
_fields_ = [("tv_sec", ctypes.c_long), ("tv_usec", ctypes.c_long), ("caplen", ctypes.c_uint), ("len", ctypes.c_uint)]

pkthdr = pcap_pkthdr()
program = bpf_program()
# prepare args
snaplen = ctypes.c_int(1500)
#buf = ctypes.c_char_p(filter)
optimize = ctypes.c_int(1)
mask = ctypes.c_uint()
net = ctypes.c_uint()
to_ms = ctypes.c_int(100000)
promisc = ctypes.c_int(1)
filter = bytes(str("port 80"), 'ascii')
buf = ctypes.c_char_p(filter)
errbuf = ctypes.create_string_buffer(256)
pcap_close = pcap.pcap_close
pcap_lookupdev = pcap.pcap_lookupdev
pcap_lookupdev.restype = ctypes.c_char_p
#pcap_lookupnet(dev, &net, &mask, errbuf)
pcap_lookupnet = pcap.pcap_lookupnet
#pcap_t *pcap_open_live(const char *device, int snaplen,int promisc, int to_ms,
#char *errbuf
pcap_open_live = pcap.pcap_open_live
#int pcap_compile(pcap_t *p, struct bpf_program *fp,const char *str, int optimize,
#bpf_u_int32 netmask)
pcap_compile = pcap.pcap_compile
#int pcap_setfilter(pcap_t *p, struct bpf_program *fp);
pcap_setfilter = pcap.pcap_setfilter
#const u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h);
pcap_next = pcap.pcap_next
# int pcap_compile_nopcap(int snaplen, int linktype, struct bpf_program *program,
# const char *buf, int optimize, bpf_u_int32 mask);
pcap_geterr = pcap.pcap_geterr
pcap_geterr.restype = ctypes.c_char_p
#check for default lookup device
dev = pcap_lookupdev(errbuf)
#override it for now ..
dev = bytes(str("wlan0"), 'ascii')
if(dev):
print("{0} is the default interface".format(dev))
else:
print("Was not able to find default interface")

if(pcap_lookupnet(dev,ctypes.byref(net),ctypes.byref(mask),errbuf) == -1):
print("Error could not get netmask for device {0}".format(errbuf))
sys.exit(0)
else:
print("Got Required netmask")
handle = pcap_open_live(dev,snaplen,promisc,to_ms,errbuf)
if(handle is False):
print("Error unable to open session : {0}".format(errbuf.value))
sys.exit(0)
else:
print("Pcap open live worked!")
if(pcap_compile(handle,ctypes.byref(program),buf,optimize,mask) == -1):
# this requires we call pcap_geterr() to get the error
err = pcap_geterr(handle)
print("Error could not compile bpf filter because {0}".format(err))
else:
print("Filter Compiled!")
if(pcap_setfilter(handle,ctypes.byref(program)) == -1):
print("Error couldn't install filter {0}".format(errbuf.value))
sys.exit(0)
else:
print("Filter installed!")
if(pcap_next(handle,ctypes.byref(pkthdr)) == -1):
err = pcap_geterr(handle)
print("ERROR pcap_next: {0}".format(err))
print("Got {0} bytes of data".format(pkthdr.len))
pcap_close(handle)

『陸』 winpcap在python3中的使用,求助

from ctypes import *
from winpcapy import *
import time
import sys
import string
import platform

if platform.python_version()[0] == "3":
raw_input=input
#/* prototype of the packet handler */
#void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);
PHAND=CFUNCTYPE(None,POINTER(c_ubyte),POINTER(pcap_pkthdr),POINTER(c_ubyte))

## Callback function invoked by libpcap for every incoming packet
def _packet_handler(param,header,pkt_data):
## convert the timestamp to readable format
local_tv_sec = header.contents.ts.tv_sec
ltime=time.localtime(local_tv_sec);
timestr=time.strftime("%H:%M:%S", ltime)
print
print("%s,%.6d len:%d" % (timestr, header.contents.ts.tv_usec, header.contents.len))

packet_handler=PHAND(_packet_handler)
alldevs=POINTER(pcap_if_t)()
errbuf= create_string_buffer(PCAP_ERRBUF_SIZE)
## Retrieve the device list
if (pcap_findalldevs(byref(alldevs), errbuf) == -1):
print ("Error in pcap_findalldevs: %s\n" % errbuf.value)
sys.exit(1)
## Print the list
i=0
try:
d=alldevs.contents
except:
print ("Error in pcap_findalldevs: %s" % errbuf.value)
print ("Maybe you need admin privilege?\n")
sys.exit(1)
while d:
i=i+1
print("%d. %s" % (i, d.name))
if (d.description):
print (" (%s)\n" % (d.description))
else:
print (" (No description available)\n")
if d.next:
d=d.next.contents
else:
d=False

if (i==0):
print ("\nNo interfaces found! Make sure WinPcap is installed.\n")
sys.exit(-1)
print ("Enter the interface number (1-%d):" % (i))
inum= raw_input('--> ')
if inum in string.digits:
inum=int(inum)
else:
inum=0
if ((inum < 1) | (inum > i)):
print ("\nInterface number out of range.\n")
## Free the device list
pcap_freealldevs(alldevs)
sys.exit(-1)
## Jump to the selected adapter
d=alldevs
for i in range(0,inum-1):
d=d.contents.next
## Open the device
## Open the adapter
d=d.contents
adhandle = pcap_open_live(d.name,65536,1,1000,errbuf)
if (adhandle == None):
print("\nUnable to open the adapter. %s is not supported by Pcap-WinPcap\n" % d.contents.name)
## Free the device list
pcap_freealldevs(alldevs)
sys.exit(-1)
print("\nlistening on %s...\n" % (d.description))
## At this point, we don't need any more the device list. Free it
pcap_freealldevs(alldevs)
## start the capture (we take only 15 packets)
pcap_loop(adhandle, 15, packet_handler, None)
pcap_close(adhandle)

這是WINPCAPY自帶的例子。

『柒』 python怎樣讀取pcap文件

程序如下:

#!/usr/bin/env python
#coding=utf-8
#讀取pcap文件,解析相應的信息,為了在記事本中顯示的方便,把二進制的信息
import struct
fpcap = open('test.pcap','rb')
ftxt = open('result.txt','w')
string_data = fpcap.read()
#pcap文件包頭解析
pcap_header = {}
pcap_header['magic_number'] = string_data[0:4]
pcap_header['version_major'] = string_data[4:6]
pcap_header['version_minor'] = string_data[6:8]
pcap_header['thiszone'] = string_data[8:12]
pcap_header['sigfigs'] = string_data[12:16]
pcap_header['snaplen'] = string_data[16:20]
pcap_header['linktype'] = string_data[20:24]
#把pacp文件頭信息寫入result.txt
ftxt.write("Pcap文件的包頭內容如下: \n")
for key in ['magic_number','version_major','version_minor','thiszone',
'sigfigs','snaplen','linktype']:
ftxt.write(key+ " : " + repr(pcap_header[key])+'\n')

#pcap文件的數據包解析
step = 0
packet_num = 0
packet_data = []
pcap_packet_header = {}
i =24
while(i<len(string_data)):

#數據包頭各個欄位
pcap_packet_header['GMTtime'] = string_data[i:i+4]
pcap_packet_header['MicroTime'] = string_data[i+4:i+8]
pcap_packet_header['caplen'] = string_data[i+8:i+12]
pcap_packet_header['len'] = string_data[i+12:i+16]
#求出此包的包長len
packet_len = struct.unpack('I',pcap_packet_header['len'])[0]
#寫入此包數據
packet_data.append(string_data[i+16:i+16+packet_len])
i = i+ packet_len+16
packet_num+=1

#把pacp文件里的數據包信息寫入result.txt
for i in range(packet_num):
#先寫每一包的包頭
ftxt.write("這是第"+str(i)+"包數據的包頭和數據:"+'\n')
for key in ['GMTtime','MicroTime','caplen','len']:
ftxt.write(key+' : '+repr(pcap_packet_header[key])+'\n')
#再寫數據部分
ftxt.write('此包的數據內容'+repr(packet_data[i])+'\n')
ftxt.write('一共有'+str(packet_num)+"包數據"+'\n')

ftxt.close()
fpcap.close()

最終得到的result文件如下所示:欄位顯示的都是十六進制,其中的數據部分和wireshark打開,顯示的十六進制窗口一樣。

『捌』 哪裡可以下載到支持python2.7的pcapy呢望山下載的都是支持python2.5的。跪求支持python2.7的pcapy。

1.用google搜:
Pcapy - Corelabs site
可以找到該網頁。
2.去下載裡面的zip的源碼包,比如
pcapy-0.10.8.zip
3.然後解壓,運行cmd,手動執行:
setup.py install
4。如果不會安裝,那麼參考:
【總結】Python安裝第三方的庫、package的方法

(此處不給貼地址,請自己用google搜帖子標題,即可找到帖子地址)

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:517
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:20
linux485 發布:2025-07-05 14:38:28 瀏覽:299
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:751
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:428
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:689
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:235
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:681
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:279
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:828