-
Notifications
You must be signed in to change notification settings - Fork 37
使ってみる
- 起動してみよう
- HTTP通信をみてみよう
- HTTPS通信をみてみよう
- TCPのバイナリ通信をみてみよう
- フィルタしてみよう
- 再送してみよう
- Diffをとってみよう
- DNS書き換えによるフォワードをしてみよう

すると、ダイアログが表示されます。

前回のパケットデータを全てクリアし初期状態で起動する場合は いいえ
を、前回のパケットデータを残し続きから起動する場合は はい
を選択します。(前回のパケットデータを残した場合でも、右クリックメニューから全てクリアできます)
すると PacketProxy が起動します。

Options
タブを開き、Listen Ports
に下記の設定を追加します。

この設定はローカルホストの8080ポートでプロキシサーバを起動するという意味になります。
ローカルホストの8080ポートに対してプロキシ通信するようにブラウザを設定し、ブラウザから http://example.com/
にアクセスします。
すると、PacketProxyでHTTP通信がみられます。

前準備として、下記の手順でPacketProxyのCA証明書をOSが管理する証明書リストに追加します。
- PacketProxyのCA証明書をexportします。PacketProxyの
options
タブの最下部にあります。 - exportしたCA証明書を、OSが管理するCA証明書リストにインストールします。
CA証明書をインストールできたら「HTTP通信をしてみよう」と同じように Options
タブの Listen Ports
の設定をします。
プロキシ設定をしたブラウザから https://example.com/
にアクセスします。
すると、PacketProxyでHTTPS通信がみられます。

Telnetの通信をPacketProxyを使ってみてみます。
簡易的なTelnetサーバとして、localhostの8888ポートでサーバを立ち上げます。
$ nc -k -l 8888
PacketProxyの Options
タブの Servers
設定で、このサーバを登録します。

Encodeモジュール
として指定した Sample
はサンプル用の何も処理をしないエンコードモジュールです。
PacketProxyの Options
タブの Listen Ports
設定でポートを登録します。

Type
として FORWARDER
を使うことで、7777ポートに到着したパケットを、何も加工せずに、そのまま転送先サーバ(localhostの8888ポート)に転送することができるようになります。
最終的な Options
設定は下記のようになります。

準備が整ったので、telnetでlocalhostの7777にアクセスして hello
と打ってみます。
$ telnet -4 localhost 7777
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello
PacketProxyでTCPのバイナリ通信が見られるようになりました。

ヒストリ画面に表示されたパケットをカラムや全文検索でフィルタできます。
利便性のため、リクエストとレスポンスが対になるように管理しており、どちらか片方がマッチすると、対となる方もマッチするようになっています。
フィルタの動作を確認するために、example.com、google.com、github.comにアクセスしてみます。

大量のパケットが表示されるので、このままだと見にくいです。そのため、下記の通り、googleのみでフィルタしてみます。

リクエストカラムにgoogleというキーワードを含むパケットのみが表示されました。
その他にも、下記のようなフィルタができます。
-
request == google || request == github
- googleまたはgithubが含まれる
-
request == google && type == image
- googleかつタイプがimage
-
request == google && full_text == secret
- googleかつデータにsecretが含まれる
カラム名として使えるのは下記になります。
id, request, response, length, client_ip, client_port, server_ip, server_port,
time, resend, modified, type, encode, group
全文検索として使えるのは下記になります。
full_text
ヒストリ画面から再送したいパケットを選択し、画面下の send
をクリックすると再送できます。もしくは、右クリックメニューから send
を選択することでも再送できます。
まず、ヒストリ画面から再送したいパケットを選択し、画面下の send to resender
ボタンをクリックして Resender
タブにパケットをコピーします。
すると Resender
タブに下図のようにパケットがコピーされます。

適宜パケットを編集し、画面下の send
ボタンで再送します。
Diffを使うことで、2つのパケットの差分を表示できます。
まず、1つ目のパケットをヒストリ画面から選択し、画面下の mark as orig
でマークした後、2つ目のパケットをヒストリ画面から選択し、画面下の diff!
をすると、Diff画面が開きます。

Character based
にチェックを入れることで、文字単位でのDiffもできます。
スマートフォンのアプリの通信をPacketProxyでみるとき、アプリがプロキシ設定を参照してプロキシ経由での通信をしてくれる場合は、PacketProxyが動作しているPCをプロキシとして設定すれば良いので簡単です。
しかし、プロキシ設定を無視して直接サーバと通信するアプリの場合は、通信をみられません。
その場合には、PacketProxyのDNS書き換え機能を利用することで、通信をみられるようになります。
https://example.com
への通信を、プロキシを利用せずにDNS書きかえ機能を利用してみてみます。
-
Options
タブのServer
でexample.comサーバ
の設定をする- 忘れずに
DNS偽装の対象とする
にチェックを入れます
- 忘れずに
-
Options
タブのListen Ports
でListenポートの設定をする-
Type
でSSL_TRANSPARENT_PROXY
を指定することで、443ポートに到着したSSLパケットのSNIフィールドからサーバを取得し転送できるようになります。
-
-
DNSサーバを起動する
-
プライベートDNSサーバを起動する
にチェックを入れます
-
-
最終的な設定は次の通りとなります
-
スマートフォンのネットワーク設定で、DNSサーバとしてPacketProxyが動作しているPCを指定する
- 誤ってプロキシ通信になってしまうことを防ぐため、プロキシは「なし」に設定しておいてください。
-
スマートフォンのブラウザで
https://example.com/
にアクセスする- DNS書き換えによって
example.com
の通信をみることができます。
- DNS書き換えによって