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