Eiji James Yoshidaの記録

パケット作りが趣味のセキュリティ技術者の記録(2006年9月6日執筆開始)。当ブログはGoogle AnalyticsとAmazonアソシエイトを利用しています。

キャプチャファイルのSLLをEthernetに書き換える方法

WiresharkなどでインタフェースをanyにするとL2がEthernetではなくSLL(Linux cooked-mode capture)になってしまいキャプチャファイルが他のツールで読めなくなることがあるので、SLLをEthernetに書き換える方法をメモ。

tcprewrite --dlt=enet --enet-dmac=送信先MACアドレス --enet-smac=送信元MACアドレス --infile=入力するキャプチャファイル --outfile=出力するキャプチャファイル
例: tcprewrite --dlt=enet --enet-dmac=00:00:00:00:00:00 --enet-smac=00:00:00:00:00:00 --infile=sll.pcap --outfile=ethernet.pcap 

上記方法で注意すべき点は3つ2つ。

  1. tcprewriteはpcapngが読み込めない(Wiresharkやeditcapでpcapに変換すれば良い)tcprewrite version: 3.4.3 (build 2375)で問題無く動くことを確認した
  2. 全てのパケットのL2が書き換えられる(WiresharkでSLLだけ抽出して書き換えてmergecapすれば良い)
  3. 全てのパケットのMACアドレスを正しいものに書き換えるのは面倒なので全て00:00:00:00:00:00にしている

そもそもanyでキャプチャするのは後々面倒なのでやめた方が良い気がする。

追記(2013/08/24)

ふと思って最近のtcprewriteでpcapngを書き換えてみたら問題無く動いたので修正。