程式設計師的報復:如何調戲蹭網者
先上效果:


是不是有點意思?
這裡還需要說明一件事情
本文目的在於分享,採用的方式是國外的Pete大大的一種做法,效果不錯, http://www.ex-parrot.com/pete/upside-down-ternet.html 但是這裡不是重複造輪子,實在是Pete先僧寫得過於簡略,作為事件主角的squid居然被一筆帶過,squid表示相當不爽(╯‵□′)╯︵┻━┻ 。如果可以通過上面的描述實現這個效果的,就不用往下看我的廢話連篇了~如果你和我一樣開始遇到過問題,那就跟著我走吧~
先說一下大體的思路。既然是要對網頁中的圖片進行操作,那麼我們首先需要把圖片下載到本地,然後進行變換之後再輸出到客戶端機器上面,就實現了圖片的翻轉,水印,模糊等各種捉弄人的效果。當然功能絕不僅僅是這樣就算了,更多功能,大家看完之後不妨多挖掘一下,我就不多廢話了~
好的,那麼下面我們正式開始!
我先說一下我的實驗環境:
主機:ubuntu
虛擬機器:windowsXP(vbox)
軟體:squid、apache
拓撲環境就不多廢話了,我這邊是host通過wlan0上網,虛擬機器選擇Host-Only模式,連線到主機的vboxnet0介面(預設的,我沒修改)。
2 系統配置
這裡,我們首先要把系統的網路轉發功能開啟,可以使用
1 echo 1 > /proc/sys/net/ipv4/ip_forward
暫時啟用,當然也可以修改sysctl.conf永久轉發。
然後,對虛擬機器進行ip設定,我這裡設定為192.168.56.21,子網掩碼255.255.255.0
3 軟體設定
下面我們進行軟體的設定。
apache不多說了,你可以指定一個本地路徑作為網路分享的地址,作用主要是釋出修改後的圖片,我這裡的路徑選擇是/mydoc/test/
接著是squid。
關於squid的安裝這裡不是重點,網上有很多的教程,我們著重說配置。Squid的配置檔案是在/etc/squid(3)下面的squid.conf。為了看起來能凸顯得我的高冷氣質(樓主自戀程度已經逆天…( _ _)ノ|壁 ),著重配置的點我都已經寫在上傳的檔案裡面了,文末我會給出地址,大家可以看一下。
這裡之所以說squid是關鍵,是因為我們主要使用了squid的redircetor的功能,即我們常說的重定向器功能。重定向器可以將收到的url進行改寫重定向,而且支援python、perl、C等等語言寫的重定向指令碼(程式),功能還是很強大的,這裡感興趣的同學不妨玩玩~這裡貼上《squid權威指南》中關於squid的詳細描述,有問題可以到這裡查閱: http://zyan.cc/book/squid/chap11.html
然後,我們把指令碼檔案放在配置檔案中指定的位置,我這裡是放在了/etc/squid3/下面,這裡需要注意的是檔案的許可權問題,因為squid預設執行許可權是squid使用者,隸屬於squid組(squid3是proxy使用者,proxy組),所以如果squid沒有許可權執行指令碼檔案的時候是會報錯的。這裡的指令碼檔案我直接使用了Pete大大給出的perl指令碼進行了一點點修改,可能是因為Pete直接從本地測試的,所以指令碼有一點點的小問題,大家也可以從我給出的網址上下載。
然後我們配置虛擬機器的代理。因為這裡我沒有用iptables進行流量轉發,為了方便,直接配置了瀏覽器的代理配置,這裡代理IP 192.168.56.1:8080,當然大家也可以使用iptables進行轉發,這樣就可以了。
最後我們重啟squid。
1 sudo service squid restart
(squid3的服務名稱是squid3),這裡注意對於squid的任何操作一定要記得用sudo執行,否則會報錯。
4 檢驗效果
這個時候,我們開啟虛擬機器,輸入 http://www.baidu.com ,就應該可以看到baidu的logo是反向的了,開啟更多網頁試試吧

當然,指令碼只是使用了flip選項,當然這裡不建議使用過於複雜的命令,會使瀏覽器響應過於慢。關於imagemagic的更多的效果可以從網上查閱,是一個相當強大的命令列圖片控制軟體。
05 更多猜想
實驗已經成功,那麼我們說回到我們今天的MITM主題上面。有的同學或許會問:你得得得得說這麼多,怎麼應用啊?我這裡提供一個小的方式,拋磚引玉:
可以買一樹莓派,買一個usb上網絡卡,一張中國聯通或者中國電信的卡,再買一個無線網絡卡,用airport建個無線訊號,買個電源,裝上linux配置好squid,當然還可以開啟sniff,配好接收資料的伺服器。。
剩下的就是:背好你的揹包,默默走到斯達巴克斯,點一杯咖啡,用吸管慢慢品嚐這份苦茗,望向窗外花壇那朵玫瑰,心裡靜靜地想著那個TA。。。
說道這裡,大家可能會想到菠蘿,其實因為菠蘿使用的是openwrt的精簡系統,很多東西不可以使用,而且配置比起樹莓派低了一些,大批量的圖片操作很容易讓CPU狂飆,自帶的MITM最近貌似也不能用了?不過還是推薦Geek們自行動手~
如果有更多的想法,我們一起交流。
006 注意事項
因為我在做實驗的過程中也遇到了很多問題,這裡貼出一些常見的問題,大牛略過吧~:)
1、注意接收圖片資料夾的許可權和隸屬於的使用者,最好是能與squid使用者相同的使用者組。如果不是,可以使用chown進行修改。例:chown proxy.proxy xxx
2、注意指令碼檔案的許可權。指令碼檔案必須是可以被squid使用者執行的。
3、注意log檔案的許可權,關於log檔案一共有三個,位於/var/log/squid3/下,分別是cache.log、store.log、access.log,這三個檔案必須是可寫的,同時也可以直接用chown改變使用者所有許可權。
4、遇到更多虛擬機器打不開網頁的問題,大家可以查閱/var/log/squid3/cache.log,這裡會給出很詳細的說明。
這裡我能想到的暫時就這麼多了,再有什麼其他問題我們可以一起交流
自己是一個五年的前端工程師,如果你對程式設計開發感興趣
這裡推薦一下我的前端學習交流群:731771211,裡面都是學習前端的從最基礎的HTML+CSS+JS【炫酷特效,遊戲,外掛封裝,設計模式】到移動端HTML5的專案實戰的學習資料都有整理,送給每一位前端小夥伴。2019最新技術,與企業需求同步。好友都在裡面學習交流,每天都會有大牛定時講解前端技術!
點選: 加入