网络网络安全【免费下载链接】scapyScapy: the Python-based interactive packet manipulation program library.项目地址https://gitcode.com/gh_mirrors/sc/scapy点击查看免费下载AGENTS.md是 Scapy 仓库为 AI Agent以及任何在 checkout 中工作的自动化工具准备的操作手册它并不取代CONTRIBUTING.md而是与之配套的日常执行细则。本文基于该文档并结合仓库内 UTScapy 测试解析器、tox.ini、test/run_tests等源码系统讲解 Agent 在 Scapy 仓库中如何写代码、放代码、写测试、跑检查、处理生成文件与上报安全漏洞帮助读者掌握一套可直接照做的协作工作流。定位AGENTS.md 与 CONTRIBUTING.md 的分工AGENTS.md 开篇即明确自己的角色它是 Scapy 贡献指南在具体 checkout 中的运行伴侣operational companion而非替代品。二者分工如下CONTRIBUTING.md定义编码规范、测试要求、AI 辅助报告与 PR 的提交规则等章程AGENTS.md面向在此仓库中工作的 Agent给出可执行的日常约束——代码放哪里、函数怎么声明、异常怎么处理、测试怎么写、命令怎么跑。对 Agent 而言正确的做法是先遵循 CONTRIBUTING.md 的规范再用 AGENTS.md 的细则逐条执行。仓库中.github/skills/目录下还提供了两个技能文件scapy-packet-fields与scapy-security-audit的 SKILL.md分别用于指导包/字段/绑定/层测试的写法以及安全审计流程属于上述两文档的补充素材。Agent 编码准则从代码风格到异常处理AGENTS.md 为 Agent 写代码设定了四条硬性准则遵循既有模式编辑某个文件时模仿该文件已有的代码模式编辑 layer 时模仿scapy/layers/或scapy/contrib/中相似 layer 的写法。不为简单检查声明函数优先保证代码可读性而不是为了减少重复而过度抽象永远不要声明只被调用一次的函数除非它是公开 API。禁止静默吞掉异常不允许try: ... except Exception: pass或裸except: pass。必须捕获具体异常类型如(AttributeError, OSError)。当异常属于意外情况时用scapy.error.log_runtime.debug(...)或对应模块的子 logger 记录例如 j1939 模块用log_j1939.debug(...)只有当确有必要抑制时才在注释中明确说明原因。WARNING 及以上级别只用于 bug 或意外行为。注意热路径开销在 Scapy 核心代码如 scapy/packet.py中要格外在意 CPU 与内存成本——报文初始化是典型的热路径。第 3 条在源码中有直接佐证scapy/error.py 定义了log_runtime logging.getLogger(scapy.runtime)及其频率过滤器这正是文档建议用于记录意外异常的运行时 loggerlog_scapy则是 Scapy 的顶层 logger默认级别为 WARNING。因此用 debug 记录意外异常、用 warning 标记 bug的分级用法与源码实现完全对应。代码放对位置layers、contrib 与 modules 的边界放对位置是 Scapy 贡献的核心原则之一。AGENTS.md 给出了清晰的判定标准layer 的定义一个 layer 是带fields_desc列表的Packet子类。在 scapy/contrib/automotive/autosar/pdu.py 中可以看到标准形态——PDU与PDUTransport两个Packet子类各自携带fields_desc。scapy/layers/与scapy/contrib/的分工layers/放常见网络中出现的协议contrib/放不常见或特定领域协议。依赖方向是单向的scapy/layers/内的代码不得importscapy/contrib/而 contrib 代码可以 import 任意位置。contrib 模块通过load_contrib()加载而不是默认的 layer 加载器。功能归属与协议相关的功能放在对应协议的模块中其他功能可以放在scapy/modules/或scapy/contrib/。这一约束在测试中也可见load_contrib(automotive.autosar.pdu, globals_dictglobals())见 test/contrib/automotive/autosar/pdu.uts演示了测试里如何显式加载 contrib 层。提交、PR 与安全公告消息的硬性要求对于 Agent 编写的 commit message、PR 描述或安全公告AGENTS.md 要求严格遵守以下规则违规可能直接导致报告被驳回使用完全中性的英语只陈述事实禁止使用最高级/夸大措辞superlatives信息保持极简一两句话说明 bug附上复现问题的代码或 pcap可选地给出修复建议到此为止使用指向所讨论代码行的 github 链接假定读者/维护者已经熟悉大部分代码不要铺陈背景不要谈论测试是否通过或覆盖率——这些由 CI 展示必须披露 AI 辅助写作例如在消息末尾注明*This message was written with the help of AI (GPT-5.6-Cyber).*。这条中性语言 最小信息 强制披露的组合本质上是把 AI 生成内容纳入可审计、可复现的流程值得任何用 Agent 协作的开源项目借鉴。添加 UTScapy 测试格式、示例与运行测试框架与文件组织Scapy 的测试套件使用UTScapy编写.uts测试活动campaign统一放在 test/ 目录下。UTScapy 的解析逻辑位于 scapy/tools/UTscapy.py 的parse_campaign_file()逐行解析特殊前缀指令前缀含义源码处理parse_campaign_file#注释整行跳过if line[0] #: continue%声明一个 campaign测试活动标题test_campaign.title line[1:].strip()开启一个新的 test set测试集创建TestSet并加入 campaign声明一个 unit test单元测试必须位于 test set 内创建UnitTest若此时无 test set 则抛出错误~给 campaign/test set/unit test 打关键字调用add_keywords(line[1:].split())*给测试/测试集/campaign 追加注释按层级写入 comments其他单元测试内的 Python 代码行追加到test.test若不在任何测试内且非空则报错AGENTS.md 给出的标准 campaign 骨架如下% Packet regression Build and dissect Round trip ~ protocol_keyword packet Protocol(fieldvalue) decoded Protocol(bytes(packet)) decoded.field value规则要点%、、分别开始一个 campaign、test set 与 unit test~分配关键字单元测试内无前缀的行是 Python 代码最后一个表达式的真值决定测试结果。真实示例可参考 test/contrib/automotive/autosar/pdu.uts其中 Defaults test、 Build test pdu_id等单元测试内直接写p PDU()、assert p.pdu_id 0这样的断言语句。运行测试的命令开发阶段可以直接针对受影响的 campaign 运行例如./test/run_tests -t test/contrib/automotive/autosar/pdu.uts -K tshark -N在仓库根目录、已安装 Python 与 tox 的前提下运行完整可移植测试套件./test/run_tests从 test/run_tests 的实现可以看到无参数时run_tests会调用bash .config/ci/test.sh并设置一组默认排除关键字-K tcpdump -K wireshark -K tshark -K ci_only ...见 test/run_tests以禁用依赖外部软件的测试带参数时则直接转交scapy/tools/UTscapy.py执行。-t指定目标.uts文件-K排除带某关键字的测试如tshark-N禁用交互提示这些参数在 UTscapy 的命令行解析中生效。新增/修改测试的准则不要新建.uts文件只要已存在包含该 layer 测试的文件就向其中添加只有该 layer 从未有过测试时才新建。就近放置新测试应放在与相同或相似功能测试相邻的位置保持上下文相关。检查源码改动flake8 与 mypy 的对齐方式修改代码后要按 CONTRIBUTING.md 的风格与约定自查。AGENTS.md 特别强调flake8 与 CI 的配置对齐flake8 检查scapy/行宽上限88 列并在 tox.ini 的[flake8]段配置了ignore E203, E731, W504, W503以及针对具体文件的per-file-ignores例如scapy/tools/UTscapy.py:E501、scapy/contrib/eigrp.py:E501同时exclude掉scapy/libs/ethertypes.py与scapy/layers/msrpce/raw/*。CI 在Python 3.12下调用 lint 与 type-check 环境tox.ini 中的[testenv:flake8]与[testenv:mypy]分别执行flake8 scapy/与.config/mypy/mypy_check.py linux/win32。由于tox.ini并未为这些环境选定 Python 3.12 解释器需要为 Python 3.12 安装 tox 并显式调用以与 CI 一致python3.12 -m tox -e flake8 python3.12 -m tox -e mypymypy 环境会同时运行 Linux 与 Windows 两种配置mypy_check.py linux与mypy_check.py win32。不要手工编辑生成内容仓库中部分文件是自动生成的手工编辑会被覆盖或破坏生成链AGENTS.md 明确禁止scapy/layers/msrpce/raw/这些文件头部标注This file is auto-generated by midl-to-scapy, do not modify.如 scapy/layers/msrpce/raw/ept.py由 MIDL 接口定义经midl-to-scapy生成禁止直接修改。编码数据文件scapy/libs/bluetoothids.py、scapy/libs/manuf.py、scapy/libs/ethertypes.py中的数据必须通过配套的生成脚本更新——即 scapy/tools/generate_bluetooth.py、generate_manuf.py、generate_ethertypes.py。以 generate_bluetooth.py 为例脚本从公开的 Bluetooth SIG 列表读取数据并直接覆写../libs/bluetoothids.py这与 tox 的apitree环境忽略这些文件、flake8 排除ethertypes.py的做法相互印证说明它们被当作产物而非源码对待。潜在安全漏洞的上报流程若改动过程中发现疑似安全问题按SECURITY.md进行严重性分级与上报可使用.github/skills/scapy-security-audit/SKILL.md技能辅助审计用 AI 研究/发现的安全问题必须附带可复现问题的代码并在 GitHub Advisories 私有仓库中起草包含修复补丁的 PR若确实无法提供复现代码则必须简要说明原因。这条规则与前述提交消息最小化 强制披露 AI 参与一脉相承安全修复的可复现性与可审计性被放在最高优先级。小结Agent 在 Scapy 仓库的合规工作流综合全文一个合规的 Agent 工作流可归纳为动手前读 CONTRIBUTING.md 掌握章程读 AGENTS.md 掌握细则必要时调用.github/skills/中的技能文件写代码遵循既有模式不写一次性的私有函数用具体异常类型捕获并记录log_runtime.debug把新协议放进正确的layers/或contrib/目录并遵守依赖方向写测试向已有的.uts文件就近追加 UTScapy 测试用%///~组织 campaign并以最后一行表达式的真值作为断言本地验证./test/run_tests -t 目标.uts ...跑受影响用例用python3.12 -m tox -e flake8与python3.12 -m tox -e mypy对齐 CI提交中性语言、极简内容、附复现证据、强制披露 AI 辅助绝不手改生成文件安全问题按 SECURITY.md 流程附代码与补丁上报。这套规范的价值在于它把AI 参与开源贡献从模糊的期望落成了可检查、可执行的清单任何 Agent 或人类贡献者按此操作都能与 Scapy 的 CI 与维护流程无缝对接。赞分享网络网络安全【免费下载链接】scapyScapy: the Python-based interactive packet manipulation program library.项目地址https://gitcode.com/gh_mirrors/sc/scapy点击查看免费下载相关推荐Tambo AI Monorepo 开发规范与 AI Agent 协作指南从仓库结构到工程实践的完整解读Tambo AI Monorepo 开发规范与 AI Agent 协作指南从仓库结构到工程实践的完整解读 本指南基于 Tambo AI 开源仓库根目录的 AG人工智能AI AgentAI 应用前端后端MCP 服务Pyrefly 仓库 Agent 协作指南从目录架构到测试规范的完整开发手册Pyrefly 仓库 Agent 协作指南从目录架构到测试规范的完整开发手册 Pyrefly 是一个用 Rust 编写的 Python 快速类型检查器与语言服开发工具静态分析IDE代码质量Expo 仓库的 Agent 开发工作流et CLI、红绿测试与提交规范的完整实践Expo 仓库的 Agent 开发工作流et CLI、红绿测试与提交规范的完整实践 本文基于 Expo 仓库中的 Agent 指令文档 .claude/CLA移动开发前端跨平台原生移动创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
