1. 程式人生 > >在ubuntu16.04上面配置mitmproxy

在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 會解決一些問題。

本文參考: