关注 @pkt_kamene 获取最新消息。为 kamene 更新的原始文档
我们正在进行命名过渡(包括 github 仓库、pip 包名和 python 包名),随后将推出新功能。更多更新即将发布。
Kamene 已包含在 Network Security Toolkit 第 28 版中。自第 22 版起,它就以旧名称包含在 NST 中。
这是 scapy(http://www.secdev.org)的一个分支,最初开发目的是实现 python3 兼容性。自 2015 年起,它已在生产环境中用于 python3(而 secdev/scapy 在 2018 年才实现 python3 兼容性)。该分支于 2018 年更名为 kamene,以减少混淆。
以下功能最初在 kamene 中实现,其中一些可能已被 scapy 重新实现:
从源码树运行 python3 setup.py install 安装(使用 git clone https://github.com/phaethon/kamene.git 获取),或运行 pip3 install kamene 安装最新发布版本。
在所有非 Linux 操作系统上,发送和接收数据包需要安装 libpcap(不是 python 模块,只是 C 库),Windows 上则需要 winpcap 驱动。在某些操作系统和配置下,安装 libdnet 可以改善体验(MacOS 上:brew install libdnet)。Windows 上不需要 libdnet。在某些不太常见的配置下,netifaces 可以改善体验。
将数据包转换为字节时,请使用 bytes()(而不是 str())。大多数参数期望 bytes 值而不是 str 值,除非那些天然适合人类输入的参数(例如域名)。*
您可以通过运行 kamene 命令来使用 kamene,或者从交互式 python shell(python 或 ipython)或代码中将其作为库导入。
您可以从交互式 shell 尝试的简单示例:
from kamene.all import *
p = IP(dst = 'www.somesite.ex') / TCP(dport = 80) / Raw(b'Some raw bytes')
# 要查看数据包内容的字节形式,请使用 bytes(p) 而不是 str(p)
sr1(p)
注意 'www.somesite.ex' 是字符串,而 b'Some raw bytes' 是字节。域名是正常的人类输入,因此是字符串,原始数据包内容是字节数据。一旦开始使用,您会发现它比看起来更容易。
使用 ls() 列出所有支持的层。使用 lsc() 列出所有命令。
目前,可在 Linux、Darwin、Unix 等系统上运行。使用 python 3.4+ 在 Ubuntu、MacOS、FreeBSD、Windows 10 上进行测试。
与 scapy-http 模块 兼容
rdpcap 会将整个 pcap 文件读入内存。如果您需要处理大型文件并对每个数据包执行某些操作或计算统计信息,可以使用带迭代器接口的 PcapReader。
with PcapReader('filename.pcap') as pcap_reader:
for pkt in pcap_reader:
#对数据包执行某些操作