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用パケット作成ツール。

リポジトリを見る
47941205年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Pig

Pig(Packet intruder generator の略)は、Linux パケットクラフティングツールです。 Pig を使用して、IDS/IPS などをテストできます。

Pig は、すぐに使用できる既知の攻撃シグネチャを多数提供しており、要件に応じてより具体的なものを追加してコレクションを拡張できます。

現時点では、TCP、UDP、ICMP に基づくトランスポート層を持つ IPv4 シグネチャを作成できます。 また、Ethernet フレームからパケットを構築するだけでなく、ARP プロトコルに基づくシグネチャも作成できます。

もし私の SPRING 2016 号の 2600 記事からここにたどり着いたなら、この小さな 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

ビルド方法

pig をビルドするには、Hefesto を使用する必要があります。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!!" ]

基本的に、すべてのシグネチャデータは角括弧 [ ... ] で囲む必要があります。

この領域内では、情報は field = data の形式で指定します。

コンピュータネットワークの経験があれば、表1 にリストされているフィールドの大部分が強い意味を持つことは間違いありません。これらのフィールドを使用して、さらにシグネチャを作成する必要があります。

表1: pig シグネチャフィールド。

フィールド意味プロトコルデータ型定義例
signatureシグネチャ名-文字列signature = "Udp flood"
eth.hwdstEthernet 宛先MACEthernetMACeth.hwdst = "00:de:ad:be:ef:00"
eth.hwsrcEthernet 送信元MACEthernetMACeth.hwsrc = "00:de:ad:be:ef:00"
eth.typeEther タイプEthernet数値eth.type = 0x0800
eth.payloadEthernet ペイロード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生存時間 (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 URG フラグTCPビットtcp.urg = 0
tcp.ackTCP ACK フラグTCPビットtcp.ack = 1
tcp.pshTCP PSH フラグTCPビットtcp.psh = 0
tcp.rstTCP RST フラグTCPビットtcp.rst = 0
tcp.synTCP SYN フラグTCPビットtcp.syn = 0
tcp.finTCP FIN フラグ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 送信元ハードウェアアドレスARPMACarp.hwsrc = "de:ad:be:ef:0:0"
arp.psrcARP 送信元プロトコルアドレスARPIPアドレスarp.psrc = 192.30.70.3
arp.hwdstARP 宛先ハードウェアアドレスARPMACarp.hwdst = "de:ad:be:ef:0:0"
arp.pdstARP 宛先プロトコルアドレスARPIPアドレスarp.pdst = 192.30.70.3

シグネチャを作成する際、すべてのデータを指定する必要はありません。パケットの最も関連する部分のみを指定すると、残りの部分はデフォルト値で埋められます。チェックサム は 常に 再計算されます。

ヒント: pigsty サブディレクトリを見てください。多くのシグネチャファイルが見つかり、新しいものを定義するのが非常に簡単であることがわかります。

IPアドレスの地理的指定

はい、可能です。この機能を使用するには、ip address タイプのフィールドに 表2 にリストされている値を指定するだけです。

表2: 地理的領域別IP。

ツールをダウンロード