kaiのネットワークから送られてくるパケットから日時、IPアドレスとPSPのMACアドレスを抽出して記録するツールです。
チャットのログも保存できます。
動作にはWinPcapが必要です。インストール方法はWinPcapのインストールというページを見るといいかもしれません。
※分かる人だけ使ってください。
■概要
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 接続先サーバー名
収集したデータは各自自由に調べればよいと思いますが、参考としてrev22にはcheckList.pyというPythonスクリプトを入れてみました。動作にはPythonがインストールされている必要があります。
コマンドラインなどから$ ./checkList.py 1000としてやると、同じMACを持つXTAGを抽出して表示します。引数の数字は受信パケット数で、この数字より多いものだけを表示します。省略すると閾値0(つまり全部表示)になります。誤爆を避けるためにある程度大きい数字を設定するとよいです。
あわせてIPアドレスの記録をみれば、誤爆はほぼ回避できるはずです。