やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

mitmproxyをインストールし使ってみるも使えず

ネットワーク通信を監視したかったが出来なかった。

前回

Google翻訳APIを使ってみる

参考

インストール

$ pip install mitmproxy
Collecting mitmproxy
  Downloading mitmproxy-2.0.2-py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 235kB/s 
Collecting blinker<1.5,>=1.4 (from mitmproxy)
  Using cached blinker-1.4.tar.gz
Collecting urwid<1.4,>=1.3.1 (from mitmproxy)
  Downloading urwid-1.3.1.tar.gz (588kB)
    100% |████████████████████████████████| 593kB 492kB/s 
Collecting certifi>=2015.11.20.1 (from mitmproxy)
  Downloading certifi-2017.7.27.1-py2.py3-none-any.whl (349kB)
    100% |████████████████████████████████| 358kB 671kB/s 
Collecting watchdog<0.9,>=0.8.3 (from mitmproxy)
  Downloading watchdog-0.8.3.tar.gz (83kB)
    100% |████████████████████████████████| 92kB 1.4MB/s 
Collecting pyasn1<0.3,>=0.1.9 (from mitmproxy)
  Downloading pyasn1-0.2.3-py2.py3-none-any.whl (53kB)
    100% |████████████████████████████████| 61kB 1.3MB/s 
Collecting sortedcontainers<1.6,>=1.5.4 (from mitmproxy)
  Downloading sortedcontainers-1.5.7-py2.py3-none-any.whl
Collecting requests<3,>=2.9.1 (from mitmproxy)
  Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
    100% |████████████████████████████████| 92kB 843kB/s 
Collecting cryptography<1.9,>=1.3 (from mitmproxy)
  Downloading cryptography-1.8.2.tar.gz (423kB)
    100% |████████████████████████████████| 430kB 637kB/s 
Collecting jsbeautifier<1.7,>=1.6.3 (from mitmproxy)
  Downloading jsbeautifier-1.6.14.tar.gz (55kB)
    100% |████████████████████████████████| 61kB 1.2MB/s 
Requirement already satisfied: setuptools!=29.0.0,>=11.3 in /media/mint/85f78c06-a96e-4020-ac36-9419b7e456db/mint/root/tools/pyenv/3.6.1/venv/game/lib/python3.6/site-packages (from mitmproxy)
Collecting h2<3,>=2.5.1 (from mitmproxy)
  Downloading h2-2.6.2-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 81kB 1.2MB/s 
Collecting html2text<=2016.9.19,>=2016.1.8 (from mitmproxy)
  Downloading html2text-2016.9.19.tar.gz (47kB)
    100% |████████████████████████████████| 51kB 1.5MB/s 
Collecting click<7,>=6.2 (from mitmproxy)
  Using cached click-6.7-py2.py3-none-any.whl
Collecting tornado<4.5,>=4.3 (from mitmproxy)
  Downloading tornado-4.4.3.tar.gz (463kB)
    100% |████████████████████████████████| 471kB 588kB/s 
Collecting cssutils<1.1,>=1.0.1 (from mitmproxy)
  Downloading cssutils-1.0.2-py3-none-any.whl (406kB)
    100% |████████████████████████████████| 409kB 529kB/s 
Collecting pyOpenSSL<17.0,>=16.0 (from mitmproxy)
  Downloading pyOpenSSL-16.2.0-py2.py3-none-any.whl (43kB)
    100% |████████████████████████████████| 51kB 1.2MB/s 
Collecting hyperframe<5,>=4.0.1 (from mitmproxy)
  Downloading hyperframe-4.0.2-py2.py3-none-any.whl
Collecting construct<2.9,>=2.8 (from mitmproxy)
  Downloading construct-2.8.14.tar.gz (63kB)
    100% |████████████████████████████████| 71kB 1.2MB/s 
Collecting brotlipy<0.7,>=0.5.1 (from mitmproxy)
  Downloading brotlipy-0.6.0-cp36-cp36m-manylinux1_i686.whl (787kB)
    100% |████████████████████████████████| 788kB 355kB/s 
Collecting pyperclip<1.6,>=1.5.22 (from mitmproxy)
  Downloading pyperclip-1.5.27.zip
Collecting kaitaistruct<0.7,>=0.6 (from mitmproxy)
  Downloading kaitaistruct-0.6.tar.gz
Collecting passlib<1.8,>=1.6.5 (from mitmproxy)
  Downloading passlib-1.7.1-py2.py3-none-any.whl (498kB)
    100% |████████████████████████████████| 501kB 548kB/s 
Collecting ruamel.yaml<0.14,>=0.13.2 (from mitmproxy)
  Downloading ruamel.yaml-0.13.14.tar.gz (235kB)
    100% |████████████████████████████████| 245kB 837kB/s 
Requirement already satisfied: pyparsing<2.3,>=2.1.3 in /media/mint/85f78c06-a96e-4020-ac36-9419b7e456db/mint/root/tools/pyenv/3.6.1/venv/game/lib/python3.6/site-packages (from mitmproxy)
Collecting PyYAML>=3.10 (from watchdog<0.9,>=0.8.3->mitmproxy)
  Using cached PyYAML-3.12.tar.gz
Collecting argh>=0.24.1 (from watchdog<0.9,>=0.8.3->mitmproxy)
  Downloading argh-0.26.2-py2.py3-none-any.whl
Collecting pathtools>=0.1.1 (from watchdog<0.9,>=0.8.3->mitmproxy)
  Downloading pathtools-0.1.2.tar.gz
Collecting chardet<3.1.0,>=3.0.2 (from requests<3,>=2.9.1->mitmproxy)
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 907kB/s 
Collecting idna<2.7,>=2.5 (from requests<3,>=2.9.1->mitmproxy)
  Downloading idna-2.6-py2.py3-none-any.whl (56kB)
    100% |████████████████████████████████| 61kB 927kB/s 
Collecting urllib3<1.23,>=1.21.1 (from requests<3,>=2.9.1->mitmproxy)
  Downloading urllib3-1.22-py2.py3-none-any.whl (132kB)
    100% |████████████████████████████████| 133kB 953kB/s 
Collecting asn1crypto>=0.21.0 (from cryptography<1.9,>=1.3->mitmproxy)
  Downloading asn1crypto-0.22.0-py2.py3-none-any.whl (97kB)
    100% |████████████████████████████████| 102kB 954kB/s 
Collecting packaging (from cryptography<1.9,>=1.3->mitmproxy)
  Downloading packaging-16.8-py2.py3-none-any.whl
Requirement already satisfied: six>=1.4.1 in /media/mint/85f78c06-a96e-4020-ac36-9419b7e456db/mint/root/tools/pyenv/3.6.1/venv/game/lib/python3.6/site-packages (from cryptography<1.9,>=1.3->mitmproxy)
Collecting cffi>=1.4.1 (from cryptography<1.9,>=1.3->mitmproxy)
  Downloading cffi-1.10.0-cp36-cp36m-manylinux1_i686.whl (384kB)
    100% |████████████████████████████████| 389kB 638kB/s 
Collecting editorconfig>=0.12.0 (from jsbeautifier<1.7,>=1.6.3->mitmproxy)
  Downloading EditorConfig-0.12.1-py3-none-any.whl
Collecting hpack<4,>=2.2 (from h2<3,>=2.5.1->mitmproxy)
  Downloading hpack-3.0.0-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.4.1->cryptography<1.9,>=1.3->mitmproxy)
  Downloading pycparser-2.18.tar.gz (245kB)
    100% |████████████████████████████████| 256kB 840kB/s 
Installing collected packages: blinker, urwid, certifi, PyYAML, argh, pathtools, watchdog, pyasn1, sortedcontainers, chardet, idna, urllib3, requests, asn1crypto, packaging, pycparser, cffi, cryptography, editorconfig, jsbeautifier, hyperframe, hpack, h2, html2text, click, tornado, cssutils, pyOpenSSL, construct, brotlipy, pyperclip, kaitaistruct, passlib, ruamel.yaml, mitmproxy
  Running setup.py install for blinker ... done
  Running setup.py install for urwid ... done
  Running setup.py install for PyYAML ... done
  Running setup.py install for pathtools ... done
  Running setup.py install for watchdog ... done
  Running setup.py install for pycparser ... done
  Running setup.py install for cryptography ... done
  Running setup.py install for jsbeautifier ... done
  Running setup.py install for html2text ... done
  Running setup.py install for tornado ... done
  Running setup.py install for construct ... done
  Running setup.py install for pyperclip ... done
  Running setup.py install for kaitaistruct ... done
  Running setup.py install for ruamel.yaml ... done
Successfully installed PyYAML-3.12 argh-0.26.2 asn1crypto-0.22.0 blinker-1.4 brotlipy-0.6.0 certifi-2017.7.27.1 cffi-1.10.0 chardet-3.0.4 click-6.7 construct-2.8.14 cryptography-1.8.2 cssutils-1.0.2 editorconfig-0.12.1 h2-2.6.2 hpack-3.0.0 html2text-2016.9.19 hyperframe-4.0.2 idna-2.6 jsbeautifier-1.6.14 kaitaistruct-0.6 mitmproxy-2.0.2 packaging-16.8 passlib-1.7.1 pathtools-0.1.2 pyOpenSSL-16.2.0 pyasn1-0.2.3 pycparser-2.18 pyperclip-1.5.27 requests-2.18.4 ruamel.yaml-0.13.14 sortedcontainers-1.5.7 tornado-4.4.3 urllib3-1.22 urwid-1.3.1 watchdog-0.8.3

起動

プロキシサーバを起動する。(ポート番号8001。デフォルトは8080)

$ mitmproxy -p 8001

f:id:ytyaru:20170916154938p:plain

ローカルからみたプロキシサーバはhttp://127.0.0.1:8001。たぶんこれをブラウザのプロキシサーバとして設定すれば、ブラウザで閲覧したサイトとの通信が見れるはず。

help

hキー押下+Enterでヘルプ表示。

f:id:ytyaru:20170916155759p:plain

quit

qキー押下+Enterで終了表示。

f:id:ytyaru:20170916155828p:plain

yキー押下+Enterで終了。

プロキシサーバ設定

  1. ブラウザ(ここではFirefox)を起動する。
  2. メニュー→編集設定
    f:id:ytyaru:20170916154311p:plain
  3. 詳細ネットワーク接続設定
    f:id:ytyaru:20170916154443p:plain
  4. 手動でプロキシを設定するを選択する
  5. http://127.0.0.1, 8001 を入力する
    f:id:ytyaru:20170916154624p:plain
    f:id:ytyaru:20170916154705p:plain
  6. OKボタン押下する

証明書の取得

  1. mitmproxyを起動させたまま、ブラウザでhttp://mitm.it/にアクセスする
  2. /home/mint/.mitmproxy/配下にmitmproxy-ca-cert.cerファイルができる(証明書)

f:id:ytyaru:20170916155629p:plain f:id:ytyaru:20170916155941p:plain

インストール

OS?

これがよくわからなかった。Firefoxで使うためにはどうすればいいのか。

とりあえずOS(LinuxMint17.3)で該当ファイルを開くとダイアログが表示され、「インポート」することはできた。

f:id:ytyaru:20170916160254p:plainf:id:ytyaru:20170916160258p:plainf:id:ytyaru:20170916160305p:plainf:id:ytyaru:20170916160317p:plain

パスワードは適当にシステムのを入れた。

Firefoxでインポートできなかった

f:id:ytyaru:20170916160904p:plainf:id:ytyaru:20170916160909p:plainf:id:ytyaru:20170916160918p:plainf:id:ytyaru:20170916160923p:plain

その後、Firefoxでサイト閲覧しても、mitmproxyを起動したターミナルに変化なし。

所感

他のサイトではPCをmitmproxyサーバにし、スマホなどの別端末からアクセスする例だったのも気になる。mitmproxyサーバ自身では使えないのか?

ネットワークの基礎知識が必要そう。一旦諦める。