2 Star 2 Fork 1

xiaoxinwt / scapy-docs-zh

Clone or download
8.md
Copy Edit Web IDE Raw Normal History
布客飞龙   compelete 2017-01-22
# Scapy 开发> 译者:[飞龙](https://github.com/wizardforcel)> 原文:[Scapy development](http://www.secdev.org/projects/scapy/doc/development.html)> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)## 项目组织Scapy 开发使用 Mercurial 版本控制系统。 Scapy 的参考资料库位于 <http://hg.secdev.org/scapy/>项目管理由 Trac 完成。 Trac 在 Scapy 的参考资料库中工作。 它提供了一个可以自由编辑的 Wiki(请贡献!),可以引用项目的 ticket,变更集,文件。 它还提供了一个 ticket 管理服务,用于避免遗忘补丁或错误。Mercurial 的分布式工作方式使 Philippe 可提供两个仓库,任何人都可以提交:Scapy [社区仓库](http://hg.secdev.org/scapy-com)和 Scapy [Windows 端口仓库](http://hg.secdev.org/scapy-com)## 如何贡献+ 在 Scapy 中发现了一个错误?[添加 ticket](http://trac.secdev.org/scapy/newticket)+ 改进此文档。
布客飞龙   fix 2017-01-22
+ 编写一个新的协议层,并在邮件列表上分享。或者在 bugtracker 上将其添加为改进。
布客飞龙   compelete 2017-01-22
+ 贡献新的[回归测试](http://trac.secdev.org/scapy/wiki/RegressionTests)+[封包样例](http://trac.secdev.org/scapy/wiki/PacketsSamples)页面上为新协议上传封包样例。## 使用 UTScapy 测试### 什么是 UTScapy?UTScapy 是一个小型 Python 程序,它读取测试活动,使用 Scapy 运行活动,并生成一个指示测试状态的报告。报告可以是四种格式之一,即 text,ansi,HTML 或 LaTeX。UTScapy 存在三个基本测试容器,单元测试,测试集和测试活动。单元测试是 Scapy 命令列表,由 Scapy 或 Scapy 的派生作品运行。在单元测试中最后一个命令的评估,将确定单个单元测试的最终结果。测试集是一组具有某种关联的单元测试。测试活动由一或多个测试集组成。测试集和单元测试可以被赋予关键字来形成逻辑分组。运行测试活动时,可以按关键字选择测试。这允许用户在期望的分组内运行测试。对于每个单元测试,测试集和活动,测试的 CRC32 被计算并显​​示为该测试的签名。该测试签名足以确定实际测试按预期运行而没有修改。如果你遇到的一些恶意用户,试图修改或损坏文件,而不改变 CRC32,全局 SHA1 会在整个文件计算。### 活动的语法表 1 显示了 UTScapy 正在寻找的语法指标。 在定义测试的文本文件的每一行中,语法限定符必须是第一个字符。 由 UTScapy 解释的参数是遵循语法限定符的文本描述。 在没有前导语法限定符的情况下出现的行将被视为 Python 命令,前提是它们出现在单元测试的上下文中。 没有语法限定符,并出现在正确上下文之外的行将被 UTScapy 拒绝,并且将发出警告。| 语法限定符 | 定义 || --- | --- || `%` | 提供测试活动的名称 || `+` | 声明新的测试集 || `=` | 声明新的单元测试 || `~` | 为当前单元测试声明关键字 || `*` | 表示需要在报告中包含的注释 || `#` | 测试用例的注解,会被解释器忽略 |表 1 - UTScapy 语法限定符在测试报告中的注释有一个上下文。 每个注释将与最后定义的测试容器相关联 - 这是单个单元测试,测试集或测试活动。 与特定容器相关联的多个注释将连接在一起,并将直接显示在测试容器声明后的报告中。 在声明测试活动之前,应该会显示测试文件的一般注释。 对于与测试活动相关联的注释,它们必须位于声明测试活动之后,但在任何测试集或单元测试之前出现。 测试集的注释应在集合的第一个单元测试的定义之前出现。测试活动的通用格式如下表所示:```% Test Campaign Name* Comment describing this campaign+ Test Set 1* comments for test set 1= Unit Test 1~ keywords* Comments for unit test 1# Python statements followa = 1print aa == 1```Python 语句由缺少定义的 UTScapy 语法限定符来标识。 Python 语句直接提供给 Python 解释器,就像在交互式 Scapy shell(交互)中操作一样。循环,迭代和条件是允许的,但必须以空行终止。测试集可以包括多个单元测试,并且可以为每个活动定义多个测试集。甚至可以在特定测试定义文件中包含多个测试活动。使用关键字可以测试整个活动的子集。例如,在测试活动的开发期间,用户可能希望使用关键词“debug”来标记正在开发的新测试。一旦测试成功运行出他们想要的结果,关键字“debug”可以被删除。也可以使用诸如“regression”或“limited”的关键词。重要的是要注意,UTScapy 使用来自最后一个 Python 语句的真值作为测试是通过还是失败的指示符。最后一行可能出现多个逻辑测试。如果结果为 0 或`False`,则测试失败。否则,测试通过。如果需要,使用`assert()`语句可以强制中间值的求值。UTScapy 的语法如表 3 所示 - UTScapy 命令行语法:```[root@localhost scapy]# ./UTscapy.py –hUsage: UTscapy [-m module] [-f {text|ansi|HTML|LaTeX}] [-o output_file]               [-t testfile] [-k keywords [-k ...]] [-K keywords [-K ...]]               [-l] [-d|-D] [-F] [-q[q]]-l              : generate local files-F              : expand only failed tests-d              : dump campaign-D              : dump campaign and stop-C              : don't calculate CRC and SHA-q              : quiet mode-qq             : [silent mode]-n <testnum>    : only tests whose numbers are given (eg. 1,3-7,12)-m <module>     : additional module to put in the namespace-k <kw1>,<kw2>,...      : include only tests with one of those keywords (can be used many times)-K <kw1>,<kw2>,...      : remove tests with one of those keywords (can be used many times)```表 3 - UTScapy 命令行语法所有参数都是可选的。 没有相关联的参数值的参数可以串在一起(即`-lqF`)。 如果未指定测试文件,则测试定义来自`<STDIN>`。 类似地,如果没有指定输出文件,则它被定向到`<STDOUT>`。 默认输出格式为“ansi”。 表 4 列出了参数,相关联的参数值及其对 UTScapy 的含义。| 参数 | 参数值 | 对 UTScapy 的含义 |
布客飞龙   gitbook 2017-01-22
| --- | --- | --- |
布客飞龙   compelete 2017-01-22
| -t | `testfile` | 定义测试活动的测试文件(默认为`<STDIN>`) || -o | `output_file` | 测试活动结果的输出文件(默认为`<STDOUT>`) || -f | `test` | `ansi``HTML``LaTeX`,输出报告的格式(默认为`ansi`) || -l |   | 在本地生成报告的相关文件。对于 HTML,生成 JavaScript 和样式表 || -F |   | 默认情况下,失败的测试用例会在 HTML 输出中展开 || -d |   | 在执行活动之前打印测试活动的简短列表。 || -D |   | 打印测试活动的简短列表并停止。不执行测试活动。 || -C |   | 不要计算测试签名 || -q |   | 在测试执行时,不要在屏幕上显示测试流程 || -qq |   | 静默模式 || -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 显示了具有多个测试集定义的简单测试活动。 此外,关键字指定了仅允许执行有限数量的测试用例。 注意在测试 3 和 5 中使用`assert()`语句来检查中间结果。 测试 2 和 5 为失败而设计。```% Example Test Campaign# Comment describing this campaign## To run this campaign, try:#   ./UTscapy.py -t example_campaign.txt -f html -o example_campaign.html -F#* This comment is associated with the test campaign and will appear* in the produced output.+ Test Set 1= Unit Test 1~ test_set_1 simplea = 1print a= Unit test 2~ test_set_1 simple* this test will failb = 2a == b= Unit test 3~ test_set_1 hardera = 1b = 2c = "hello"assert (a != b)c == "hello"+ Test Set 2= Unit Test 4~ test_set_2 harderb = 2d = bd is b= Unit Test 5~ test_set_2 harder hardesta = 2b = 3d = 4e = (a * b)**d# The following statement evaluates to False but is not last; continuee == 6# assert evaluates to False; stop test and failassert (e == 7)e == 1296= Unit Test 6~ test_set_2 hardestprint ee == 1296```为了查看以 Scapy 为目标的示例,请访问 <http://www.secdev.org/projects/UTscapy>。将页面底部的示例复制粘贴到文件`demo_campaign.txt`,并对它运行 UTScapy:```./UTscapy.py -t demo_campaign.txt -f html -o demo_campaign.html –F -l```在文件`demo_campaign.html`中检测生成的结果。
CSS
1
https://gitee.com/xiaoxinwt/scapy-docs-zh.git
git@gitee.com:xiaoxinwt/scapy-docs-zh.git
xiaoxinwt
scapy-docs-zh
scapy-docs-zh
master

Search