コンテンツにスキップ

Impacket ticketConverter.py

カテゴリ目次へ戻る / コマンド全体目次へ戻る

MIT/Heimdal の ccache と Windows の KRB-CRED(kirbi)を相互変換します。Base64 での入出力にも対応します。

項目内容
実装examples/ticketConverter.py
カテゴリKerberos / チケット処理
規模113 行
配布setup.py の scripts=examples/*.py によりスクリプトとしてインストール

オプションの最新の定義は python examples/ticketConverter.py -h で確認できます。

引数説明
input_fileFile in kirbi (KRB-CRED) or ccache format
output_fileOutput file
-b / --base64Decode input ticket from base64 with unwrap support

magic/header から入力形式を判定し、base64 指定時は wrapper や空白を除いて decode します。kirbi は CCache.loadKirbiFile() 経由で ccache へ、ccache は CCache.toKRBCRED() 経由で kirbi へ変換し、指定先へ保存します。既知形式でない場合は書き込みません。

ccache と kirbi は同じ Kerberos credential を異なる container model で表します。 ccache は複数 credential と principal/key/time 情報を保持でき、kirbi は KRB-CRED ASN.1 message として ticket list と encrypted part を持ちます。 変換は暗号を破る処理ではなく、保持されている ticket と session metadata を 別形式へ写し替える処理です。

入力判定は先頭 byte/header と ASN.1 構造に基づきます。--base64 では PEM 風 wrapper、空白、改行を除去して一時 binary としてから同じ判定へ渡します。 kirbi からは CCache.loadKirbiFile() が principal/time/key を credential entry へ移し、逆方向は toKRBCRED() が KRB-CRED の ticket-info を構築します。

形式間で完全に対応しない metadata や複数 credential の扱いがあるため、 出力が parse できるだけでなく、principal、session key、ticket byte 列、 validity time が round-trip 後も一致することを検証します。不明形式や base64 decode failure では出力 file を先に切り詰めないようにします。

シンボル位置責務を追う入口
parse_args()40モジュール関数
main()50モジュール関数
is_kirbi_file()83モジュール関数
is_ccache_file()89モジュール関数
convert_kirbi_to_ccache()95モジュール関数
convert_ccache_to_kirbi()100モジュール関数
base64_decode_with_unwrap()105モジュール関数
モジュール使用する主な名前
impacketversion
impacket.krb5.ccacheCCache
  • 主処理はローカルファイルの解析です。入力を信頼せず、offset、length、形式識別子を検証してからデータを参照してください。
  • オプションによりローカルファイルを作成または更新します。既存ファイルの扱いと秘密情報を含む出力の権限を確認してください。
  • 失敗時は、名前解決、接続、認証、サービスの状態、権限のどこで止まったかを、プロトコルのステータスから切り分けます。

impacket.krb5.ccache.CCache と標準 base64 / struct / tempfile のみが中心です。形式判定、変換、CLI は独立関数なので、round-trip test を追加しやすい構成です。

  • 構文: python -m py_compile examples/ticketConverter.py
  • CLI: python examples/ticketConverter.py -h
  • 関連テスト: tests/misc/test_ccache.py