SCAPY官方教程十
来源:http://www.tudoupe.com时间:2022-07-11
一、故障排除
常见问题
1.无法在监测模式下嗅/插入数据包。
监测模式的使用取决于平台。
使用Libpcap
libpcap为了在监控模式中创建一个插座,Scapy必须以不同的方式呼叫。 你必须通过monitor=True任何开接口的调用(send...sniff)或你自己的Scapy插座(conf.L2Socket...)Native Linux(禁用 libpcap):您应该自行将接口设置为监控模式。我个人喜欢为此使用 iwconfig (替换
monitor为managed禁用):如果你正在使用Npcap:请注意,Npcap
npcap-0.9983早在 2019 年就破坏了 802.11 实用程序。它尚未修复(截至 Npcap 0.9994),因此在此期间,请使用 npcap-0.9982.exe
许多适配器不支持监视模式,尤其是在 Windows 上,或者可能错误地报告标题。请参阅 有关此的 Wireshark 文档
如果您的适配器可以与 Wireshark 一起使用,但不能与 Scapy 一起使用,我们会尽力完成这项工作,请随时报告问题。
2.TCP连接被Scapy或我的内核重新安装。
核子不知道Scapy在背后做什么。如果Scapy发送SYN,目标返回SYN-ACK,你的内核看到它,它将返回一个RST。为防止这种情况,请使用本地防火墙规则(例如Linux的NetFilter)。Scapy不关心本地防火墙。
3.无法 ping 127.0.0.1(或 ::1)。Scapy 不适用于环回接口上的 127.0.0.1(或 ::1)。
反弹接口是一个非常特殊的接口。通过它的数据包不是真正组装和未组装的。内核将数据包传送到其目的地,同时,内部结构仍保存着。你看到的只是假的,让你感觉一切都很好。核子不知道Scapy在背后做什么。因此,您在反弹接口上看到的也是错误的。除非这是来自当地的结构。因此,核核心永远不会接受它。`tcpdump -i lo`
在Linux上,与本地IPv4应用程序进行通信,你需要在顶层构建包,使用PF_INET/SOCK_RAW接口而不是PF_PACKET/SOCK_RAW接口(或在Linux以外的其他系统上同等):
使用IPv6,您可以执行以下简单的操作:
在Windows、BSD和macOS上,首先必须停止使用本地防火墙并设置它``conf.iface`下面的命令可以用于循环返回接口:
4.BPF滤波器不正常,我在pp链接上
这是一个众所周知的错误。BPF滤波器必须使用pp链接的不同极化编译。如果使用libpcap(将用于编译BPF滤波器),而不是使用本地Linux支持(PF_PACKET接口),它可能会起作用。
5.traceroute() 不起作用。我在一个ppp链接上
这是一个众所周知的错误。请参阅 BPF 过滤器不起作用。我在一个ppp链接上
为了解决这个问题,请使用nofilter=1:
6.图形很难看/字体太大/图像被切断了。
快速修复:使用png格式:
升级到最新的GraphViz版本。
尝试提供不同的DPI选项(例如50,70,75,96,101,125):
如果有效,则可以使它永久:
您也可以将此行放入~/.scapy_startup.py文件中
二、获取帮助
常见问题在回答常见问题中得到答案。
如需要更多帮助,请参阅:
The Gitter channel
The GitHub repository
在scapy.ml(at)secdev.org
(
archive
,
RSS, NNTP
) 也有一个低流量的邮件列表。通过发送邮件订阅
scapy.ml-subscribe(at)secdev.org。
我们鼓励您发送问题 、 错误报告 、 建议 、 想法 、 Skype酷的使用等.
Scapy API 具体请参考:
Scapy API reference — Scapy 2.4.5. documentation
三、 Scapy发展
项目组织
Scapy使用Git版本控制系统开发。Scapy的参考库位于 GitHub - secdev/scapy: Scapy: the Python-based interactive packet manipulation program & library. Supports Python 2 & Python 3.
项目管理由 Github 完成。它提供了一个可自由编辑的 Wiki (请贡献!),可以引用项目中的票证、变更集和文件。它还提供票证管理服务,用于避免忘记补丁或错误。
如何贡献
在 Scapy 中发现错误? 添加一张票 。
改进此文档。
创建一个新的层并将其共享在邮件列表中, 或创建一个拉动请求.
对新的回归测试作出贡献。
在数据包样本页上上传新的协议数据包样本.
四、 改进帮助文档
文档可以以多种方式改进:
将文档字符串添加到源代码中。
将使用例子添加到文档中。
添加文档字符串
稀疏的源代码很难解释该函数在做什么。 文档字符串通过添加解释和预期输入和输出参数来节省层级开发者和寻找高级功能的用户的时间。
类文档字符串的例子scapy.fields.FlagsField:
它将包含一个简短的单行描述类,然后还有一些说明如何使用它。 如果使用doctest 格式有意义,你可以添加一个使用例子。最后,可以在 sphinx文件 然后添加经典的 python 签名。
这个任务与编译非回归单元测试相结合。
文档
改善该文档的内容的一个方法是保持它与最新版本的Scapy同步。 您也可以通过添加自己的使用例子或直接从现有的Scapy演示脚本中收集它们来帮助。
五、 使用UTScapy测试
UTScapy是什么?
UTScapy 是一个小型 Python 程序,它读取测试活动,使用 Scapy 运行活动并生成指示测试状态的报告。报告可以是以下四种格式之一:文本、ansi、HTML 或 LaTeX。
UTScapy有三个基本测试容器,一个单元测试,测试组和测试活动。单元测试是一个由Scapy或Scapy导数运行的Scapy命令列表。单元测试中的最后命令的评价将决定单元测试的最终结果。测试集是一个具有某种关联的单元测试集。测试活动包括一个或多个测试组。测试集和单元测试可以分配关键字来形成逻辑子集。运行活动时,测试可以按关键字选择。这允许用户在需要的子组内运行测试。
对每个单元测试、测试组和活动,测试CRC32将计算并显示为测试签名。这个测试签名足以确定实际测试运行是预期的,而不是已修改的。如果你正处理试图修改或摧毁文件而不修改CRC32的恶意人员,这将用于计算整个文件的SHA1总数。
测试活动的语法
表1显示UTScapy正在寻找的语法索引。语法注释必须出现在被测试的文本文件的每个行中作为第一个字符。语法注释背后的文本描述是一个由UTScapy解释的参数。没有预定义语法注释的行将被视为Python命令,假设是它们出现在单元测试的范围内。UTScapy 将拒绝在正确的上下文之外出现一个没有语法注释的行,并发出警告。
|
语法说明符 |
定义 |
|---|---|
'%' |
给出测试活动的名称。 |
'+' |
宣布新的测试组。 |
'=' |
宣布新的单元测试。 |
'~' |
宣布当前单元测试的关键词。 |
'*' |
表示将列入报告的评论。 |
'#' |
例句说明译员丢弃了. |
表1-UTScapy语法注释
测试报告中所载的评论具有语境.每个注释将与最终定义的测试容器连接 — — 即单个单元测试、测试集或测试活动。将与某一容器相关的若干评论连结在一起,并在测试容器公告后直接出现在报告中。在宣布测试活动之前,应对测试文件提出一般意见。关于测试活动的评论,他们必须在测试活动说明之后出现,但在任何测试组或单元测试之前.测试集的注释应在定义该集的第一个单元测试之前出现。
测试活动的一般格式如下表:
Python 语句通过缺少定义的 UTScapy 语法说明符来识别。Python 语句直接馈送到 Python 解释器,就好像在交互式 Scapy shell 中操作一样(interact)。允许骑自行车、重复使用和调节,但必须以空行结束。测试组可以由多个单元测试组成,还可以为每个活动定义多个测试集。甚至可以在特定测试定义文件中进行多个测试活动。使用关键字可以测试整个活动子集。例如,在开发和测试活动期间,用户可能想使用“调试”这个关键字来标记正在开发的新测试。一旦测试成功地达到他们所希望的结论,你可以删除“调试”关键字。你可以使用诸如"回归"或"有限"等关键字。
需要注意的是,UTScapy使用最后的Python文中的真值作为它是否通过或失败的指示器。最后一行可能包含多个逻辑测试。如果结果是零或错误,则测试失败。否则,测试通过。如果需要,assert()项可以用来强制计算中间值。
UTScapy的语法在表3 - UTScapy命令行语法中显示:
表3-UTScapy命令行语法
所有参数都是可选的,没有相关参数值的参数可以连串在一起(即.–lqF)。如果未指定测试文件,则测试定义来自 <STDIN>。同样,如果输出文件没有指定,则将其定向到 <STDOUT>。默认输出格式是ansi。表4列出参数、相关参数值和它们对UTScapy的影响。
|
争论 |
参数值 |
UTScapy的意义 |
|---|---|---|
-t |
testfile | 定义测试活动的输入测试文件(默认 = <STDIN>) |
-o |
output_file | 用于输出测试活动结果的文件(默认 = <STDOUT>) |
-F |
test | ansi,HTML,LaTeX,格式化输出报告(默认=ansi) |
-l |
在本地生成报告关联文件。对于 HTML,生成 JavaScript 和样式表 |
|
-F |
默认情况下,失败的测试实例将在HTML输出中扩展 |
|
-d |
在执行活动之前,打印活动列表 |
|
-D |
打印活动清单并停止。 不执行 |
|
-C |
不计算测试签名 |
|
-q |
执行测试时不要在屏幕上更新测试进度 |
|
静音模式 |
||
-n |
testnum | 只执行按数目列出的测试。 可以使用-d或-D检索测试代码。 测试可以以逗号分隔列表的形式列出,并可能包括范围(例如1、3、7、12) |
-m |
module | 在执行测试之前加载模块。在测试 Scapy 的衍生作品时很有用。注意:旨在作为“__main__”执行的派生作品不会被 UTScapy 调用为“__main__”。 |
-k |
kw1, kw2, … | 仅包括带有关键字“kw1”的测试。可以指定多个关键字。 |
-K |
kw1, kw2, … | 不使用"kw1"关键字测试。可以指定多个关键字。 |
表4-UTScapy参数
表5显示了一个简单的测试活动,包括多个测试集定义。 此外,还指定了允许执行有限数量的测试实例的关键字。assert()测试3和5中使用的句子用于检查中间结果。 测试2和5由于设计而失败。
查看Scapy的例子,请参阅UTScapy: Unit Testing with Scapy。 在页面底部的例子中切开并将其插入到文件中
demo_campaign.txt然后运行UTScapy:
检查文件中生成的输出demo_campaign.html。
使用毒素测试 Scapy
该tox该命令简化了Scapy的测试,它将自动创建一个虚拟环境并安装必要的Python模块。
例如,在新的Debian安装中,下列命令将自动启动所有Scapy单元测试,没有任何外部依赖:
除非您指定-e选项,否则它将触发所有在Python版本中可用的单元测试。
为了您的方便和包维护者,我们提供了一个仅在单一(默认的Python)环境中运行托克斯的实用工具,并且没有外部依赖:
. uts文件的VIM语法被亮化
将所有文件从scapy/doc/syntax/vim_uts_syntax/ftdetect和复制scapy/doc/syntax/vim_uts_syntax/syntax到~/.vim/并保留文件夹结构。
如果ftdetect/filetype.vim已经存在,您可能需要手动修改此文件。
这些命令将执行安装:
或者,安装脚本scapy/doc/syntax/vim_uts_syntax/会自动进行安装。
六、 释放 Scapy
在底部,Scapy版本被表示为签名Git标签。 在签名提交之前,想要创建发行的维护者必须:
检查有关的Travis和AppVeyor测试是否合格
./run_scapy在本地运行跑
tox在BSD上运行单元测试,使用源代码的“Vagrant”设置
scapy/doc/vagrant_ci/
V2.4.例如,下列命令可以用于签字和发布版本:
发布候选(RC)也可以完成。例如,第一个 RC 将被标记为 v2.4.3rc1 和 message 。2.4.3 Release Candidate #1
在发布和上传到PyPi之前,您必须author_emailinsetup.py更改维护者为执行释放的地址,然后你可以使用下列命令:
相关新闻
- 2023-04-16 2台电脑怎么共享(2台电脑怎么共享
- 2023-04-16 主板检测卡代码(电脑主板检测卡代
- 2023-04-16 dnf未响应(dnf未响应老是上不去)
- 2023-04-16 ppoe(pppoe拨号上网)
- 2023-04-16 网速不稳定(网速不稳定是路由器的
- 2023-04-16 wds状态(Wds状态成功)
- 2023-04-16 光标键(光标键不动了怎么办)
- 2023-04-16 电脑提速(电脑提速100倍的方法)
- 2023-04-16 切换用户(切换用户怎么切换回来
- 2023-04-16 数据包是什么(产品数据包是什么
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
