#思路:
##1、 當校園網斷開,只需要重新撥號即可
##2、 校園網使用兩台電腦同時登錄時不會立即下線,其中有一段時間間隔
#步驟:
##1、 通過抓包對撥號產生的數據包進行分析,使得可以通過代碼來實現自動撥號
腳本一(login.sh):
#!/bin/bash # check Internet status sleep 20 ping -c 1 114.114.114.114 > /dev/null 2>&1 if [ $? -eq 0 ];then logger Connecting. else logger Network disconnection. source ./login.sh # 等價於 ../login.sh 使用source調用腳本不會退出當前腳本 logger Reconnecting.
這個腳本的作用是用於斷網檢測
腳本二(check_net.sh):
#!/bin/bash logger "[Dr.com page verify] Start timing detection." curl http://192.168.167.46 >drcom.html check_status=`grep "Dr.COMWebLoginID_0.htm" drcom.html` if [[ $check_status != "" ]] then # offline status logger "[Dr.com page verify] offline status." # yourself curl curl -X POST "http://192.168.167.46/a70.htm" -H "Origin: http://192.168.167.46" -H "Connection: keep-a live" -H "Content-Type: application/x-www-form-urlencoded" -H "Upgrade-Insecure-Requests: 1" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3" -H "DNT: 1" -H "http://192.168.167.46/a70.htm?wlanacip=null&wlanacname=null&vlanid=0&ssid=null&areaID=null&mac=00-00-00-00-00-00" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.9" -b "program=ip; vlan=0; ip=10.73.42.253; md5_login2=1809111038%7C284974" --data "DDDDD=1809111038&upass=284974&R1=0&R2=&R6=0¶=00&0MKKey=123456&buttonClicked=&redirect_url=&err_flag=&username=&password=&user=&cmd=&Login=&R7=0" --tlsv1 -o Sxinfo.txt logger "[Dr.com page verify] online status." else # always online logger "[Dr.com page verify] already onine." fi
##2、 如果需要實現多台電腦同時在線,就需要在校園網還沒檢測並下線之前重新撥號
對於上面的腳本進行任務計划,將時間間隔設置在11秒(防止撥號頻繁被禁)
*/1 * * * * sleep 11 && /etc/storage/login.sh */1 * * * * sleep 23 && /etc/storage/login.sh */1 * * * * sleep 35 && /etc/storage/login.sh */1 * * * * sleep 47 && /etc/storage/login.sh */1 * * * * sleep 58 && /etc/storage/login.sh
#優化:
##1、 不知道為啥,校園網偶爾需要重新撥號,所以我寫了一個腳本來以防萬一;
並且把計划任務自動化,因為一停電路由器就會初始化=,=
ps:來自一個月后的我終於知道了,把腳本放到etc下就不會因為斷電重啟刷掉了
腳本三:
#!/bin/bash a=`wc -l /etc/storage/cron/crontabs/admin |awk 'BEGINF{FS=""}{print $1}'` b=7 c=`ping -c 3 www.baidu.com | grep loss | awk 'BEGIN{FS=","} {print $3}'| awk 'BEGIN{FS="%"} {print $1}'` d=0 if [ a!=b ];then rm -rf /home/root/admin echo "*/1 0-23 * * 1-7 /etc/storage/check_net.sh" >>/home/root/admin echo "*/1 * * * * sleep 11 && /etc/storage/login.sh" >>/home/root/admin echo "*/1 * * * * sleep 23 && /etc/storage/login.sh" >>/home/root/admin echo "*/1 * * * * sleep 35 && /etc/storage/login.sh" >>/home/root/admin echo "*/1 * * * * sleep 47 && /etc/storage/login.sh" >>/home/root/admin echo "*/1 * * * * sleep 58 && /etc/storage/login.sh" >>/home/root/admin echo "*/1 0-23 * * 1-7 /home/root/test.sh" >>/home/root/admin rm -rf /etc/storage/cron/crontabs/admin mv /home/root/admin /etc/storage/cron/crontabs/ if [ c!=d ];then sh /etc/storage/login.sh fi fi
*注:主要作用就是
1、檢查計划任務是不是正常的,不是就重新寫入。
2、ping一下百度,要是沒有ping通就重新執行一下腳本(這個腳本我給他設置的計划任務時間間隔是一分鍾)
#自動化腳本:
接下來是重頭戲,因為需要幫其他同學搞所以我就把所有腳本寫一起了,經過幾次的迭代優化。可能還是會有一些小毛病。
#!/bin/bash while true do clear echo "菜單" echo "1 檢測網絡" echo "2 清理計划任務" echo "3 部署破解腳本" echo "4 退出腳本" read -p "請選擇模式:" mode case $mode in 1) echo "您選擇了模式1-檢測網絡" echo "正在為您檢測網絡" a=`ping -c 3 www.baidu.com | grep loss | awk 'BEGIN{FS=","} {print $3}'| awk 'BEGIN{FS="%"} {print $1}'` b=0 if [ $a == $b ];then #echo "您的網絡正常" echo -e "\033[32m 您的網絡正常 \033[0m" else #echo "阿哦?! 網絡好像出了一點問題" echo -e "\033[31m 阿哦?! 網絡好像出了一點問題 \033[0m" fi sleep 3s ;; 2) clear echo"您選擇了模式2-清理計划任務" echo "正在為您清理計划任務" mv /etc/storage/cron/crontab/admin /etc/storage/cron/crontab/admin.bak echo "正在為您備份原計划任務" echo "已為您將原任務計划備份至/etc/storage/cron/crontab/admin.bak" echo "#test" > /etc/storage/test.sh mv /etc/storage/test.sh /etc/storage/cron/crontab/admin echo -e "\033[32m 任務計划清理完成 \033[0m" #echo "任務計划清理完成" slepp 3s ;; 3) echo"您選擇了模式3-部署破解腳本" echo"請按要求輸入學號和密碼" read -p "請輸入學號:" uid read -p "請輸入身份證后六位:" cipeher clear echo"正在部署登錄腳本" echo '\#!/bin/bash' >>/etc/storage/check_net.sh echo 'logger "[Dr.com page verify] Start timing detection."' >>/etc/storage/check_net.sh echo 'curl http://192.168.167.46 >drcom.html' >>/etc/storage/check_net.sh echo 'check_status=`grep "Dr.COMWebLoginID_0.htm" drcom.html`' >>/etc/storage/check_net.sh echo 'if [[ $check_status != "" ]]' >>/etc/storage/check_net.sh echo 'then' >>/etc/storage/check_net.sh echo ' \# offline status' >>/etc/storage/check_net.sh echo ' logger "[Dr.com page verify] offline status."' >>/etc/storage/check_net.sh echo 'curl -X POST "http://192.168.167.46/a70.htm" -H "Origin: http://192.168.167.46" -H "Connection: keep-a' >>/etc/storage/check_net.sh echo "live\" -H \"Content-Type: application/x-www-form-urlencoded\" -H \"Upgrade-Insecure-Requests: 1\" -H \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36\" -H \"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3\" -H \"DNT: 1\" -H \"http://192.168.167.46/a70.htm?wlanacip=null&wlanacname=null&vlanid=0&ssid=null&areaID=null&mac=00-00-00-00-00-00\" -H \"Accept-Encoding: gzip, deflate\" -H \"Accept-Language: zh-CN,zh\;q=0.9\" \-b \"program=ip; vlan=0; ip=10.73.42.253; md5_login2=$uid%7C$cipeher--data \"DDDDD=$uid&upass=$cipeher R1=0&R2=&R6=0¶=00&0MKKey=123456&buttonClicked=&redirect_url=&err_flag=&username=&password=&user=&cmd=&Login=&R7=0" --tlsv1 -o Sxinfo.txt logger "[Dr.com page verify] online status." >>/etc/storage/check_net.sh echo 'else' >>/etc/storage/check_net.sh echo ' logger "[Dr.com page verify] already onine."' >>/etc/storage/check_net.sh echo 'fi' >>/etc/storage/check_net.sh chmod +x /etc/storage/check_net.sh #echo"已成功部署check_net腳本 還剩 66.6%" echo -e "\033[32m 已成功部署check_net腳本 還剩 66.6% \033[0m" clear echo "正在部署原計划任務腳本" echo '#!/bin/bash' > /etc/storage/login.sh echo 'sleep 20' >> /etc/storage/login.sh echo 'ping -c 1 114.114.114.114 > /dev/null 2>&1' >> /etc/storage/login.sh echo 'if [ $? -eq 0 ];then' >> /etc/storage/login.sh echo 'logger Connecting.' >> /etc/storage/login.sh echo 'else' >> /etc/storage/login.sh echo 'logger Network disconnection.' >> /etc/storage/login.sh echo 'source ./login.sh' >> /etc/storage/login.sh echo 'logger Reconnecting.' >> /etc/storage/login.sh chmod +x /etc/storage/login.sh #echo"已成功部署login.sh腳本 還剩 33.3%" echo -e "\033[32m 已成功部署login.sh腳本 還剩 33.3% \033[0m" clear echo "正在部署新計划任務腳本" echo '#!/bin/bash' > /etc/storage/test.sh echo 'a=`wc -l /etc/storage/cron/crontabs/admin |awk 'BEGINF{FS=""}{print $1}'`' >> /etc/storage/test.sh echo 'b=7' >> /etc/storage/test.sh echo 'c=`ping -c 3 www.baidu.com | grep loss | awk 'BEGIN{FS=","} {print $3}'| awk 'BEGIN{FS="%"} {print $1}'`' >> /etc/storage/test.sh echo 'd=0' >> /etc/storage/test.sh echo 'if [ $a != $b ];then' >> /etc/storage/test.sh echo 'rm -rf /etc/storage/admin' >> /etc/storage/test.sh echo 'echo "*/1 0-23 * * 1-7 /etc/storage/check_net.sh" >>etc/storage/admin' >> /etc/storage/test.sh echo 'echo "*/1 * * * * sleep 11 && /etc/storage/login.sh" >>etc/storage/admin' >> /etc/storage/test.sh echo 'echo "*/1 * * * * sleep 23 && /etc/storage/login.sh" >>etc/storage/admin' >> /etc/storage/test.sh echo 'echo "*/1 * * * * sleep 35 && /etc/storage/login.sh" >>etc/storage/admin' >> /etc/storage/test.sh echo 'echo "*/1 * * * * sleep 47 && /etc/storage/login.sh" >>etc/storage/admin' >> /etc/storage/test.sh echo 'echo "*/1 * * * * sleep 58 && /etc/storage/login.sh" >>etc/storage/admin' >> /etc/storage/test.sh echo 'echo "*/1 0-23 * * 1-7 /etc/storage/test.sh" >>/etc/storage/admin' >> /etc/storage/test.sh echo 'mv /etc/storage/cron/crontabs/admin /etc/storage/cron/crontabs/admin.bak' >> /etc/storage/test.sh echo 'mv /etc/storage/admin /etc/storage/cron/crontabs/' >> /etc/storage/test.sh echo 'if [ $c!= $d ];then ' >> /etc/storage/test.sh echo 'sh /etc/storage/login.sh' >> /etc/storage/test.sh echo 'fi' >> /etc/storage/test.sh echo 'fi' >> /etc/storage/test.sh chmod +x /etc/storage/test.sh echo -e "\033[32m 已成功部署全部腳本 \033[0m" #echo"已成功部署全部腳本" echo"正在激活腳本" sh /etc/storage/test.sh echo"已為您激活腳本" sleep 3s ;; 4) break ;; *) echo "輸入模式編號錯誤" esac done