とてもとてもレガシーなWindowsアプリがありました。
社内の誰かが開発して幾年月
すでにソースが失われてしまって久しく、だけれども皆で便利に使っている野良アプリ
こいつがどうも変な情報を出しているというコトで調査を行うことになりました。
けれど、ソースがない。。
しかたがないので、アプリが発行しているSQLをパケットキャプチャして解析することにしましたとさ
しかし、Windowsには強力な監視ソフトが入っていて Wireshark などはインストール不可!!!
なので、
ってな感じで作業用 Linux を中継させて、LinuxでTcpdumpすることにした
手順1: Windowsで通信先とおぼしき相手先を hosts ファイルでねじ曲げる
アプリに手は入れられないので、相手先をLinuxにするため hosts ファイルを編集です
c:\Windows\System32\drivers\etc\hosts
手順2: Linuxでポート転送
Linuxでは Socat を使ってポート転送しときます。
お手軽
socat TCP-LISTEN:1521,fork TCP:DBServer:1521 &
Socatについてはこちらを参照
【2023年10月版】socat による tcp/udp ポート転送 【PROXY】
手順3: パケットキャプチャ
Linuxでパケットを取得です
tcpdump -i eth0 port 1521 -w DBServer.pcap
手順4: レガシーアプリを操作
疑わしい情報が表示されるところを操作
手順5: キャプチャ結果の確認
tcpdump の結果を確認したいけど、、SQL内にSJISコード文字があるのでちょっとメンドクサイ
(DBテーブル名やカラム名がSJIS日本語で定義されている。。時代を感じる)
なので、バイナリファイルを表示できる 「 Hex Editor 」 をVSCodeにインストール
VSCodeでファイルを開くと怒られるので、16進数エディター で開く
SJIS部分もちゃんと表示できました
とてもとてもレガシーなので暗号化も何もせず、パケットながしてくれてて助かりました
原因が分かったのはいいけど、どうやって治す??
全解析して再作成? は、したくないなぁ・・