导航:首页 > 编程语言 > pythonscapy解析pcap

pythonscapy解析pcap

发布时间:2023-05-22 18:39:29

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

阅读全文

与pythonscapy解析pcap相关的资料

热点内容
python编程基础豆瓣 浏览:706
程序员乱码是什么意思 浏览:370
交友app怎么删除动态 浏览:90
男士穿衣哪个app好 浏览:36
如何把桌面软件改造成app 浏览:740
我的世界如何打开最近玩的服务器 浏览:384
程序员试用期汇报问题协助怎么写 浏览:129
抖音算法到底是什么 浏览:128
哪个vlan技术对报文加密 浏览:570
单片机定时电路 浏览:676
山西平台服务器云主机 浏览:700
按摩肚脐解压视频 浏览:991
php55安装教程 浏览:139
云服务器怎么查找本机域名 浏览:22
qd123y压缩机参数 浏览:387
程序员妈妈怀孕 浏览:492
金普国际编程 浏览:539
java什么是引用类型 浏览:946
这是命令吗txt 浏览:318
支付宝android包名 浏览:158