Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pig — 一个Linux数据包制作工具。 | Kitploit
工具/GitHubGitHub/rafael-santiago/pig
IDS/IPS规避网络安全渗透测试
GitHubrafael-santiago/pig

pig

一个Linux数据包制作工具。

查看仓库
47941145年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Pig

Pig(可理解为 Packet(数据包) intruder(入侵者) generator(生成器))是一个 Linux 数据包构造工具。 你可以用 Pig 测试你的 IDS/IPS 以及其他东西。

Pig 内置了大量已知的攻击特征签名可直接使用,你还可以根据自身需求扩展这个集合, 加入更具体的内容。

截至目前,它可以创建基于 TCP、UDP 和 ICMP 传输层的 IPv4 签名。 你也可以创建基于 ARP 协议的签名,甚至从 Ethernet 帧开始构建整个数据包。

如果你是通过我在 2600 2016 年春季 期刊 的文章来到这里, 请继续阅读以下文档章节,因为这只小 Pig 从那以后一直在进化。

如何克隆此仓库?

非常简单:

[email protected]:~/src# git clone https://github.com/rafael-santiago/pig pig
[email protected]:~/src# cd pig
[email protected]:~/src/pig# git submodule update --init

如何构建?

你需要使用 Hefesto 来构建 pig。按照步骤让 Hefesto 在你的系统上正常工作后,进入 pig 的 src 子目录并运行以下命令:

[email protected]:~/src/pig/src# hefesto

执行后,你应该能在 src/bin 路径下找到 pig 二进制文件。你可以从 src/bin 相对路径使用它,或者 安装它。

如果构建时遇到问题,建议阅读 BUILD.md 中的一些备注。

如何安装?

安装时,你需要进入 src 子目录,然后调用:

[email protected]:~/src/pig/src# hefesto --install

卸载时,同样在 src 子目录下调用:

[email protected]:~/src/pig/src# hefesto --uninstall

Pigsty 文件

Pigsty 文件 是纯文本文件,你可以在其中定义一组数据包签名。需要遵循特定的语法。下面是一个 pigsty 文件的示例:

[ signature   =      "Hello",
  ip.version  =            4,
  ip.ihl      =            5,
  ip.tos      =            0,
  ip.src      = 192.30.70.10,
  ip.dst      =  192.30.70.3,
  ip.protocol =           17,
  udp.dst     =         1008,
  udp.src     =        32000,
  udp.payload =    "Hello!!" ]

基本上,所有签名数据必须放在方括号 [ ... ] 内。

在这个区域内,信息通过 域 = 数据 的模式提供。

如果你有一些计算机网络经验,表 1 中列出的大部分字段对你来说应该很熟悉。你需要使用这些字段来创建后续的签名。

表 1:pig 签名字段。

字段含义协议数据类型示例定义
signature签名名称-字符串signature = "Udp flood"
eth.hwdst以太网目标 MACEthernetMAC 地址eth.hwdst = "00:de:ad:be:ef:00"
eth.hwsrc以太网源 MACEthernetMAC 地址eth.hwsrc = "00:de:ad:be:ef:00"
eth.type以太类型Ethernet数字eth.type = 0x0800
eth.payload以太网负载Ethernet字符串eth.payload = "f\x00ob\x04r"
ip.versionIP 版本IP数字ip.version = 4
ip.ihl互联网头部长度IP数字ip.ihl = 5
ip.tos服务类型IP数字ip.tos = 0
ip.tlen总长度IP数字ip.tlen = 20
ip.id数据包 IDIP数字ip.id = 0xbeef
ip.flagsIP 标志IP数字ip.flags = 4
ip.offset分片偏移IP数字ip.offset = 0
ip.ttl生存时间IP数字ip.ttl = 64
ip.protocol协议IP数字ip.protocol = 6
ip.checksum校验和IP数字ip.checksum = 0
ip.src源地址IPIP 地址ip.src = 192.30.70.3
ip.dst目标地址IPIP 地址ip.dst = 192.30.70.3
ip.payloadIP 原始负载IP字符串ip.payload = "\x01\x02"
tcp.src源端口TCP数字tcp.src = 80
tcp.dst目标端口TCP数字tcp.dst = 21
tcp.seqno序列号TCP数字tcp.seqno = 10202
tcp.ackno确认号TCP数字tcp.ackno = 10200
tcp.sizeTCP 长度TCP数字tcp.size = 4
tcp.reservTCP 保留字段TCP数字tcp.reserv = 0
tcp.urgTCP 紧急标志TCP位tcp.urg = 0
tcp.ackTCP 确认标志TCP位tcp.ack = 1
tcp.pshTCP 推送标志TCP位tcp.psh = 0
tcp.rstTCP 复位标志TCP位tcp.rst = 0
tcp.synTCP 同步标志TCP位tcp.syn = 0
tcp.finTCP 结束标志TCP位tcp.fin = 0
tcp.wsizeTCP 窗口大小TCP数字tcp.wsize = 0
tcp.checksum校验和TCP数字tcp.checksum = 0
tcp.urgp紧急指针TCP数字tcp.urgp = 0
tcp.payload负载TCP字符串tcp.payload = "\x01abc"
udp.src源端口UDP数字udp.src = 53
udp.dst目标端口UDP数字udp.dst = 7
udp.sizeUDP 长度UDP数字udp.size = 8
udp.checksum校验和UDP数字udp.checksum = 0
udp.payload负载UDP数字udp.payload = "boo!"
icmp.typeICMP 类型ICMP数字icmp.type = 0
icmp.codeICMP 代码ICMP数字icmp.code = 0
icmp.checksum校验和ICMP数字icmp.checksum = 0
icmp.payload负载ICMP字符串icmp.payload = "ping!"
arp.hwtypeARP 硬件类型ARP数字arp.hwtype = 0x1
arp.ptypeARP 协议类型ARP数字arp.ptype = 0x0800
arp.hwlenARP 硬件长度ARP数字arp.hwlen = 6
arp.opcodeARP 操作码ARP数字arp.opcode = 2
arp.hwsrcARP 源硬件地址ARPMAC 地址arp.hwsrc = "de:ad:be:ef:0:0"
arp.psrcARP 源协议地址ARPIP 地址arp.psrc = 192.30.70.3
arp.hwdstARP 目标硬件地址ARPMAC 地址arp.hwdst = "de:ad:be:ef:0:0"
arp.pdstARP 目标协议地址ARPIP 地址arp.pdst = 192.30.70.3

创建签名时,你不需要指定所有数据。如果只指定最相关的数据包部分,剩余部分将用默认值填充。校验和 始终 会被重新计算。

提示:查看子目录 pigsty。你会找到大量签名文件,并且会发现定义新的签名非常简单。

按地理区域指定 IP 地址

是的,这是可能的。要使用此功能,你只需在 IP 地址 类型的字段中填写表 2 中列出的值。

表 2:按地理区域的 IP。

要使用的值含义
north-american-ip北美的 IP 地址
south-american-ip南美的 IP 地址
asian-ip亚洲的 IP 地址
european-ip欧洲的 IP 地址

指定自己的地址

你可以在任何 IP 地址 类型的字段中使用 user-defined-ip 作为值。在这种情况下,你需要使用命令行选项 --targets。参见 使用 pig 部分了解更多信息。

贡献更多数据包签名

如果你创建了你认为除了自身环境之外也具有相关性的 pigsty 文件,请提交 pull request 以便将这些有用的文件包含进来。提前感谢!

使用 pig

Pig 的使用非常直接,需要提供四个基本选项:

  • --signatures
  • --gateway
  • --net-mask
  • --lo-iface

你想了解更多每个选项的细节吧?……那就来吧:

下载工具