在ubuntu16.04上面配置mitmproxy
由於實驗室裡學長要求我用ubuntu環境下的mitmproxy做中間人攻擊,所以我在這個問題上可以說踩過不少坑了。
我第一次配置這個環境是在實驗室的桌上型電腦上,那次我給那個電腦上裝了個雙系統,然後當時對linux一竅不通的我在配置python3.6以上環境的時候,直接把系統自帶的python給刪了,這個問題的嚴重性大家也都知道,我直接就把ubuntu搞崩潰了,還好我的學長比較沉的住氣,沒有直接罵我,而是啥也沒說把u盤遞給了我。。。。。所以第一次配這個環境可以說是真的傻,重灌完系統之後,我就小心翼翼的,最後不知道怎麼把python環境配好之後,然後還是學長手把手幫我,從github上把mitmproxy安裝了下來。
我第二次配這個環境是我之後不再去實驗室,轉而在自己的虛擬機器上跑,然後還是在ubuntu16.04的虛擬機器上配這個環境,那次還是比較順利的,走的就是我一會兒要說的那條路。
第三次配這個環境就是剛剛,在我擁有了兩個電腦之後,把原來跑windows的電腦直接跑ubuntu16.04了,然後在上面重新配的環境。
總的來說,有這麼幾種方法:第一種就是從git上安裝:
git clone https://github.com/mitmproxy/mitmproxy.git 這是第一次我安裝mitmproxy的時候所用的方法,事實證明可行。
第二種是直接把原始碼從官網下載下來,然後自己手動編譯,這種方法我沒有試過,因為我覺得不如敲幾個指令來的快。
第三種方法就是我後幾次用的,直接用pip3安裝mitmproxy,這也是我接下來的正文所細說的方法。
我只會描述個人認為能成的方法流程,至於其他的肯定有很多別的方法,但是我就不做提及了,畢竟我也不熟悉。所以我的意思是按照以下步驟做是成功的,但至於為什麼要這樣做,或者說某些步驟改變之後還行不行,還請有心人下去自己實驗和研究。
1.首先配置python3.6環境
現在在我的認知裡這是很重要的一步,這步一定要實現的就是,你在shell裡輸入python命令時,它一定不能有報錯,而且展示的是一個python3.6.x版本,只要實現這一點,之後很多事情就都簡單了。具體步驟如下:
首先安裝好所有的依賴檔案
sudo apt-get install openssl sudo apt-get install libssl-dev sudo apt-get install libc6-dev gcc sudo apt-get install -y make build-essential zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm tk-dev
然後匯入第三方軟體庫:
sudo add-apt-repository ppa:jonathonf/python-3.6
然後更新軟體源:
sudo apt-get update
之後從apt-get安裝python3.6:
sudo apt-get install python3.6
這時候按理說你的系統已經安裝了三個python的版本:python2.7,python3.5以及python3.6
之後就是該變原來的軟連結,使得python3.6版本為系統新的預設選項(我不知道這麼說合不合適):
sudo rm python
sudo ln -s python3.6 /usr/bin/python
這時候在shell再次敲入python,如果這次顯示的已經是你剛剛安裝的那個python版本,就說明你這一大步成功了。
2.然後就是安裝pip3
curl https://bootstrap.pypa.io/get-pip.py | sudo python3.6
這時候你再次敲入pip -V或者pip3 -V
都應該顯示的是你剛剛安裝的那個pip版本
只要實現這一點,python環境搭建這塊就算差不多了。、
3.最後一步就是安裝mitmproxy了
這一步有個小細節就是如果你輸入如下指令:
sudo pip3 install mitmproxy
可能會報錯,貌似是因為在安裝mitmproxy的時候,會涉及到找一些軟體的安裝目錄,但如果找不到就會報錯。
所以輸入下面的指令就能成功:
sudo pip3 install mitmproxy --ignore-installed
這樣一來按理說mitmproxy就已經安裝完成了。
這時候開啟shell,輸入:
mitmproxy -p 8080
如果能夠開啟介面便說明成功了
還有幾個小問題可以專門提一下:
1.在輸入mitmproxy指令之後,如果他提示要求3.6及以上版本的python,那就說明你沒有安裝好3.6的環境,或者說你就算apt-get install 了python3.6,但是你沒有將其設為預設的話,也是會報這個錯誤。
2.還有就是之前有擔心過,把python預設版本改變會有錯誤,所以想到臨時改變python的優先順序或者說用pyenv來控制當前python的版本。但是這幾個方法都容易報一些亂七八糟的錯誤,而且最後覺得根本沒必要這樣做。只要不刪系統自帶的python版本就不會出錯誤。
3.還有就是mitmproxy在進行中間人攻擊的時候,在手機安裝mitmproxy證書的時候,要經過mitmproxy代理才能下載到手機本地。還有就是如果遇到一些代理https失敗的情況,在啟動指令mitmproxy -p 8080 後面加上 --ssl-insecure 會解決一些問題。
本文參考: