パケット / レジストリ / ESE / NTFS
Windows セッション系とは別に、Impacket は汎用パケット codec と オフラインストレージパーサを持ちます。
ImpactPacket — 階層パケット
Section titled “ImpactPacket — 階層パケット”実装: ImpactPacket.py、
ImpactDecoder.py。
Structure とは別系統です。各層が親子リンクを持つオブジェクトで、
get_packet() が wire byte を返します。
| 層 | モジュール / クラス |
|---|---|
| Ethernet / Linux SLL | ImpactPacket.Ethernet など |
| IPv4 / TCP / UDP / ICMP / IGMP / ARP | ImpactPacket |
| IPv6 | IP6.py、IP6_Address.py、IP6_Extension_Headers.py |
| ICMPv6 / NDP | ICMP6.py、NDP.py |
| 802.11 / WEP / WPA | dot11.py、Dot11Crypto.py |
| DHCP / DNS / EAP / WPS / HTTP | 各モジュール |
| pcap | pcapfile.py、pcap_linktypes.py |
ImpactDecoder は link type に応じて Ethernet または Linux cooked
(SLL) から積み上げます。sniff が
pcapy 経由でこれを使います。sniffer
は raw socket から IP を直接 decode します。
ping / ping6
は OS の ping を呼ばず、header を自前で組み立てて
IP_HDRINCL raw socket に渡します。checksum は Impacket 側で計算します。
応答が無いことは host down の証明ではありません。
split は pcap を IPv4 TCP の
4-tuple ごとに分けます。pcapy は setup.py に宣言されていません。
802.11 は管理フレーム、データフレーム、RadioTap、WEP/WPA の
テストが tests/dot11/ にあります。CLI 例はほとんど無く、ライブラリ
単体の利用が中心です。
レジストリ hive
Section titled “レジストリ hive”winregistry.py は REGF を read/write
します。get_registry_parser(file, isRemote) が入口です。
| 操作 | 用途 |
|---|---|
findKey / enumKey / enumValues | 探索 |
getValue / setValue | 値 |
getClass | キークラス名。boot key 計算に必須 |
close | 一時ファイル後始末 |
registry-read がローカル
read-only CLI、reg は
rrp RPC の遠隔操作、samedit は
SAM hive を inplace で書き換えます。
hive はセル (nk/vk/sk/lf) のヒープです。短い read と壊れた cell を
「値が空」と扱わないでください。.reg エクスポートは metadata が足りず、
boot key や SAM 鍵導出には使えません。
ESE (ESENT)
Section titled “ESE (ESENT)”ese.py は Extensible Storage Engine です。
NTDS (ntds.dit)、一部の Windows 内部 DB がこの形式です。
esentutl は catalog、raw page、
table row を読みます。NTDSHashes のオフライン経路も同じパーサです。
ページチェックサム、long value、インデックスは完全実装ではありません。
未知ページ種別を通常行として decode しないでください。
ntfs-read は raw volume / image を read-only で開き、ディレクトリ、named stream、hex dump、抽出をします。 MFT を辿る実装で、書き込みやジャーナル再生はありません。 スパース、圧縮、暗号化 ($EFS) は限定的です。取得データを通常ファイルと 同じ権限で扱わないでください。
その他の補助モジュール
Section titled “その他の補助モジュール”| モジュール | 内容 |
|---|---|
uuid.py | RPC UUID の bin ↔ string。endian に注意 |
nt_errors.py / hresult_errors.py / system_errors.py | ステータス文字列化 |
helper.py | 小さな変換 |
version.py | CLI バナー |
crypto.py | AES-CMAC、SP 800-108 KDF、SAM/LSA 秘密の加復号 |
http.py | 最小 HTTP。relay などが利用 |
dhcp.py / dns.py | パケット構造 |
変更時の確認
Section titled “変更時の確認”- ImpactPacket の親子リンクと checksum offload を壊さない
- IPv6 拡張ヘッダの順序は
IP6_Extension_Headersのテストを見る - hive / ESE / NTFS は read-only 経路と in-place write 経路を混ぜない
- 関連テスト:
tests/ImpactPacket/、tests/dot11/、tests/misc/

