Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pypacker — :package: Python向け最速かつ最もシンプルなパケット操作ライブラリ | Kitploit
ツール/GitLabGitLab/mike01/pypacker
パケットスニッフィングと分析ウェブプロキシと傍受ネットワークセキュリティペネトレーションテストユーティリティとフレームワークレッドチーミング
GitLabmike01/pypacker

pypacker

📦 Python向け最速かつ最もシンプルなパケット操作ライブラリ

リポジトリを見る
281823日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

一般情報

これはPypacker:Python向けの最速かつ最もシンプルな低レベルパケット操作ライブラリです。 以下の使用例を参照して、何ができるかを確認してください。

このプロジェクトを支援したい場合は、PayPal経由で Donate with PayPal できます。

Pypackerでできること

  • キーワードまたは生バイトからカスタムパケットを作成し、Pythonでデータを読み取り/変更: examples/create_packets.py
  • pcapファイルからのパケット読み取り/書き込み(Wireshark/tcpdump pcap形式のみ対応): examples/pcap_read_write.py
  • 複数のpcapファイルを1つのファイルにマージ。破損したpcapファイルの読み取りを試み、コールバックによるフィルタリングを許可: examples/pcap_merge.py
  • レイヤー2パケットの送受信: examples/send_receive_l2.py
  • MITMなどのパケットインターセプト(および変更): examples/interceptor3.py

前提条件

  • Python 3.x(CPython、Pypy、Jython、その他のインタプリタ)
  • オプション: netifaces >=0.10.6(ユーティリティ用)
  • オプション(インターセプター用):
    • CPython
    • NFQUEUEターゲットをカーネルでサポートするLinuxベースシステム。カーネル設定オプションの場所:
      • Networking Options -> Network packet filtering -> Core Netfilter -> NFQUEUE target
    • iptables(代わりにnftablesも可)
      • NFQUEUE関連のルールは、例: "iptables -I INPUT 1 -j NFQUEUE --queue-num 0" で追加可能
    • libnetfilter_queue ライブラリ(http://www.netfilter.org/projects/libnetfilter_queue 参照)

インストール

いくつかの例:

  • 最新バージョンをクローン
    • git clone https://gitlab.com/mike01/pypacker.git
    • cd pypacker
    • python setup.py install

pip/pypiは、複雑な認証メカニズムのため、もうサポートされていません。申し訳ありません。

使用例とドキュメント

参照:

  • 上記の例
  • ./examples ディレクトリ内の例
  • Gitlab Wiki: https://gitlab.com/mike01/pypacker/-/wikis/home

プロトコル自体(layerXYZ参照)には、一般的に多くのドキュメントはありません。それらはそれぞれのRFC/公式標準によって文書化されています。

テスト

テストは以下のように実行します:

  1. PypackerディレクトリをPYTHONPATHに追加。
  • cd pypacker
  • export PYTHONPATH=$(pwd):$PYTHONPATH
  1. テストを実行
  • python tests/test_pypacker.py

パフォーマンステスト結果:

root@kitploit:~
Hardware: Intel CPU, 4 Cores @ 3.2 GHz
Python: CPython v3.10

nr = new results on this machine
Rounds per test: 10000
=====================================
>>> Packet parsing (Ethernet + IP + UDP + DNS): Search UDP port
Time diff: 0.1409761905670166s
nr = 70933 p/s
>>> Packet parsing (Ethernet + IP + TCP + HTTP): Search TCP port
Time diff: 0.3157649040222168s
nr = 31669 p/s
>>> Packet parsing (Ethernet + IP + TCP + HTTP): Reading all header
Time diff: 0.5989120006561279s
nr = 16696 p/s
>>> Parsing first layer (IP + ICMP)
Time diff: 0.014587163925170898s
nr = 685534 p/s
>>> Creating/direct assigning (IP only header)
Time diff: 0.02884364128112793s
nr = 346696 p/s
>>> bin() without change (IP)
Time diff: 0.013646364212036133s
nr = 732795 p/s
>>> Output with change/checksum recalculation (IP)
Time diff: 0.07719659805297852s
nr = 129539 p/s
>>> Basic/first layer parsing (Ethernet + IP + TCP + HTTP)
Time diff: 0.019113540649414062s
nr = 523189 p/s
>>> Changing Triggerlist element value (Ethernet + IP + TCP + HTTP)
Time diff: 0.017654895782470703s
nr = 566415 p/s
>>> Changing dynamic field (Ethernet + IP + TCP + HTTP)
Time diff: 0.006037473678588867s
nr = 1656321 p/s
>>> Direct assigning and concatination (Ethernet + IP + TCP + HTTP)
Time diff: 0.2050457000732422s
nr = 48769 p/s
.>>> Performance test pypacker vs. dpkt vs. scapy
Comparing pypacker, dpkt and scapy performance (parsing Ethernet + IP + TCP + HTTP)
nr = new results on this machine
Rounds per test: 10000
>> Testing pypacker parsing speed
nr = 194382 p/s
>> Testing dpkt parsing speed
Could not execute dpkt tests: ModuleNotFoundError("No module named 'dpkt'")
>> Testing scapy parsing speed
nr = 2775 p/s

FAQ

残った質問については、バグとして報告してください(「質問」としてタグ付けされます)。

Q: Pypackerの速度はどのくらいですか?

A: 上記の結果を参照してください。自分のマシンでの詳細な結果を確認するには、テストを実行してください: python tests/test_pypacker.py PerfTestCase

Q: どのプロトコルがサポートされていますか?

A: 現在最小限サポートされているプロトコルは次のとおりです: Ethernet, Radiotap, IEEE80211, ARP, DNS, STP, PPP, OSPF, VRRP, DTP, IP, ICMP, PIM, IGMP, IPX, TCP, UDP, SCTP, HTTP, NTP, RTP, DHCP, RIP, SIP, Telnet, HSRP, Diameter, SSL, TPKT, Pmap, Radius, BGP

Q: [xyz]のサポート予定はありますか?

A: 新しい機能は、私が必要とするか、誰かが貢献した場合にPypackerに追加されます。将来のリリースで特定の機能のサポートを追加する正式な計画はありません。 貢献に関する一般的なガイドラインは、HACKINGファイルにあります。

Q: このプロジェクトにどのように貢献できますか?

A: バグ/機能リクエストにはGitlabのバグトラッカーを使用してください。新しいバグを報告する前に、既知のバグについてバグトラッカーを確認してください。パッチはプルリクエストで送信できます。

Q: PypackerをWindows 3.11/XP/7/8/mobileなどで使うと問題xyzが発生します。修正できますか?

A: 基本機能はどのOSでも動作するはずです。オプション機能(インターセプターなど)は問題を起こす可能性があります。

Q: Pypackerのライセンスは何ですか?

A: GPLv2ライセンスです(詳細はLICENSEファイルを参照)。

Q: copy.deepcopy(some_packet)を呼び出すと「TypeError: can't pickle Struct objects」という例外が発生します。

A: 以下の回避策を試して、Structオブジェクトをpickle可能にしてください:

root@kitploit:~
import struct, copyreg
def pickle_struct(s):
	return struct.Struct, (s.format,)

copyreg.pickle(struct.Struct, pickle_struct)

使用上のヒント

パフォーマンス関連

  • 最大限のパフォーマンスを得るには、以下のインデックス表記を使用して最下層の属性にアクセスしてください。 これにより、必要なレイヤーのみが遅延解析されます:
root@kitploit:~
pkt_eth, pkt_ip, pkt_tcp, pkt_http = pkt[
 	None,
	(None, lambda b: b.__class__ in [ip.IP, ip6.IP6]),
	(tcp.TCP, lambda c: c.dport==80),
	http.HTTP
]
...
  • "%s" または "%r" フォーマットを使用したパケット変換は避けてください。背後で解析がトリガーされます:
root@kitploit:~
pkt = Ethernet() + IP() + TCP()
# これにより全レイヤーが解析される
packet_print = "%s" % pkt
  • pkt[L] のような単一値のインデックス表記でレイヤーを検索するのは避けてください。Lが見つかるか最上位レイヤーに到達するまで全レイヤーを解析します:
root@kitploit:~
packet_found = pkt[Telnet]
# 代替: 複数値のインデックス表記を使用。これは一致しないレイヤーで解析を停止します:
packet_found = pkt[Ethernet,IP,TCP,Telnet]
  • pypyを使用する(完全なパケット解析に関してCPythonより約3倍高速)

  • さらにパフォーマンスを向上させるには、自動フィールドを無効にします(bin(...)の呼び出しに影響):

root@kitploit:~
pkt = ip.IP(src_s="1.2.3.4", dst_s="1.2.3.5") + tcp.TCP()
# IPおよびTCPのチェックサム計算(およびその他の更新)を無効にする(このパケットインスタンスのみ)
pkt.sum_au_active = False
pkt.tcp.sum_au_active = False
bts = pkt.bin(update_auto_fields=False)
  • 最大パフォーマンスを得るために受信/送信バッファを拡大する。これは以下のコマンドで実行できます (http://www.cyberciti.biz/faq/linux-tcp-tuning/ より):
root@kitploit:~
sysctl -w net.core.rmem_max=12582912
sysctl -w net.core.rmem_default=12582912
sysctl -w net.core.wmem_max=12582912
sysctl -w net.core.wmem_default=12582912
sysctl -w net.core.optmem_max=2048000
sysctl -w net.core.netdev_max_backlog=5000
sysctl -w net.unix.max_dgram_qlen=1000
sysctl -w net.ipv4.tcp_rmem="10240 87380 12582912"
sysctl -w net.ipv4.tcp_wmem="10240 87380 12582912"
sysctl -w net.ipv4.tcp_mem="21228 87380 12582912"
sysctl -w net.ipv4.udp_mem="21228 87380 12582912"
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_timestamps=1
sysctl -w net.ipv4.tcp_sack=1

その他関連

  • TCP/UDPストリームの組み立ては、パイプを使用したtsharkで行えます ("-i -" と "-z follow,prot,mode,filter[,range]" を使用)
  • キャプチャファイルを読み取るときに適切な「最下層レイヤー」を選択する: ファイルをWiresharkなどで開き、 データリンク層のパケット詳細を確認します。ほとんどの場合、これはおそらく layer12.ethernet.Ethernetで解析できるEthernet IIになります。 Wireshark/tsharkの "-i any" オプションでキャプチャした場合、これはLinux cooked captureになり、 layer12.linuxcc.LinuxCCで表現されます。
ツールをダウンロード