kai tool

MACアドレスを収集して升erがXTAG変えても追跡するよ君

概要

kaiのネットワークから送られてくるパケットから日時、IPアドレスとPSPのMACアドレスを抽出して記録するツールです。

チャットのログも保存できます。

動作にはWinPcapが必要です。インストール方法はWinPcapのインストールというページを見るといいかもしれません。

※分かる人だけ使ってください。

ダウンロード

readme

■概要
  kaiのネットワークから送られてくるパケットから
  日時、IPアドレスとPSPのMACアドレスを抽出して記録するツールです。
  チャットのログも保存できます。
  動作にはWinPcap(http://www.winpcap.org/)が必要です。
  ※分かる人だけ使ってください。

■使用法
1.次のコマンドでインターフェース一覧が表示されるので
  インターネットにつながってるインターフェースの番号を覚えてください。
  $ ./idmac -D
  
  chkInterface.batを起動しても同じ結果を得られます。

2.次のコマンドで記録を開始します。
  $ ./idmac.exe -i X -p Y >> idmac.txt

  X: 先ほど調べたインターフェースの番号
  Y: kai-configで設定したポートの番号 30000にしてる人が多い
     -pオプションを省略した場合30000を指定したものとする
  
  環境に合わせてidmac.batを適切に編集すれば
  いちいちコマンドプロンプトを開かずに起動できるようになります。

  また、次のようにしてpcap形式のファイルを読み込むこともできます。
  デバッグ以外では使えんけどな(´・ω・`)
  $ ./idmac.exe -f nekoneko.pcap

■更新履歴
  2008/05/23 rev22 list.txtを300秒に1回更新するようにした。
  2008/05/23 rev21 xtag,mac,パケット数をlist.txtに出力するようにした。
                   終了するときはCtrl-Cを入力してください。
                   入力されない場合はlist.txtが更新されません。
  2008/04/03 rev20 特に変更はなし。うp専用revisionとなります。
                   MHP2Gのネコートさんの最終クエストをクリアするまでは
                   更新停止(゚Д゚)
  2008/03/24 rev19 出力形式を"時刻,id,ip,mac"に変更
                   rev16で追加された、macYYYYMMDD.txtのIPの4番目の数字が
                   3番目と同じになるバグを修正
                   標準出力のほうは正しいIPを出力していたのに('A`)
  2008/03/24 rev18 C++で便利なデータ構造を簡単に使えるようになったので
                   変な部分やややこしい部分を修正
                   プログラム起因の誤爆はゼロになりました
  2008/03/24 rev17 バグ修正
  2008/03/23 rev16 GUI化に向けてC++化
  2008/03/21 rev15 ポインタをNULLで初期化するのを忘れてたバグを取った
                   新しいbatファイルをつけてみた
  2008/03/21 rev14 Wiresharkの代わりにWinPcapを使うことにした
                   ややこしいことせずに最初からこうしておけばよかった
  2008/03/20 rev13 TCPストリームをきっちり処理するようにした
                   これでチャットの順序が違ったり抜け落ちたり重複したり
                   しないようになったはず
  2008/03/20 rev12 
  2008/03/19 rev11 パケットのチェックサムを計算して変なら弾くようにした
  2008/03/19 rev10 チャットも保存するようにしました
  2008/03/18 rev9  TCPでseq番号が変な場合はバッファを初期化するようにした
                   取りこぼしが出るかもしれないけど誤爆は無くなるはず
                   バイトストリームを再構成するのは難しくて無理です><
  2008/03/18 rev8  IPをipYYYYMMDD.txtに重複を回避しつつ保存するようにした
                   macYYYYMMDD.txtに記録する内容を"時刻,IP,MAC"に変更した
  2008/03/17 rev7  IPをip.txtに保存するようにした
                   batファイルをつけてみた
  2008/03/16 rev6  パケットのサイズをちゃんと見るようにした
                   TCPの処理をちょっとだけまともにした
  2008/03/16 rev5  誤爆がゼロではないので、一度出力した組み合わせでも
                   再度出力可能にして統計的に精度うpを狙ってみた
  2008/03/16 rev4  とりあえず単体でidとMACアドレスを出力可能にしたぞ
  2008/03/16 rev3  ファイル名を日付ベースで勝手に決めることにしたよ
  2008/03/16 rev2  パイプに対応したよ
  2008/03/15 rev1  てきとうにつくた

■TODO
・まれにIPが同じIDがいることがあるのでIPとポートの組で処理するようにする
・たまに送られてきたパケットをそのまま送り返してるようなIDがいる
 

■kaiのopcodeについてのメモ
A チャット発言
B 誰かがチャットに加わった
C 誰かがチャットから去った
~ コンタクトリスト更新
=
#
?
+ 下層の部屋情報の更新
)
(
]
D 下層の部屋情報の更新?
K アリーナのユーザー数と部屋数更新
E 誰かがアリーナに加わった
F 誰かがアリーナから去った
G アリーナ移動成功
H
8
9
l アリーナのモデレータリスト更新
r adminリスト更新
/
|
6
7
&
o 接続先サーバー名

出力について

chat年月日.txt
発言時刻とその内容が記録されています。アリーナ移動時には移動先のアリーナ名が記録されます。
ip年月日.txt
時刻、XTAGとIPアドレスが記録されています。XTAG,IPアドレスが同じ場合は重複記録しません。時刻は初回記録時のものです。
mac年月日.txt
時刻、XTAGとMACアドレスが記録されています。XTAG,MACアドレスが同じ場合は重複記録しません。時刻は初回記録時のものです。
list.txt
XTAG,MACアドレス,受信パケット数が記録されています。PSPかkaiに不具合があるようで、たまに間違ったMACアドレスのパケットが送られてくるため、パケット数が多いほど正確な情報ということになります。
標準出力
時刻,XTAG,IPアドレス,MACアドレスをどんどん出力していきます。出力タイミングはアリーナ移動時(自分・他人問わず)で重複関係なしに出力します。ファイルに記録するときはファイルサイズに注意。

集めたデータの調べ方

収集したデータは各自自由に調べればよいと思いますが、参考としてrev22にはcheckList.pyというPythonスクリプトを入れてみました。動作にはPythonがインストールされている必要があります。

コマンドラインなどから$ ./checkList.py 1000としてやると、同じMACを持つXTAGを抽出して表示します。引数の数字は受信パケット数で、この数字より多いものだけを表示します。省略すると閾値0(つまり全部表示)になります。誤爆を避けるためにある程度大きい数字を設定するとよいです。

あわせてIPアドレスの記録をみれば、誤爆はほぼ回避できるはずです。