前一阵子弄了一个Drcom登陆客户端,用于登陆校园网,具体可以看中南大学联通校园网络第三方客户端,这次简单说一下这个东西是怎么做出来的。
这也是我第二次写WPF程序,很多地方都是一边学习一边瞎搞的。
项目地址:https://github.com/MonoLogueChi/Drcom
原理分析➴
首先是自己抓吧,还有参考GitHub上已有的项目,得出了登陆方式,然后写了一个简单的网页版,测试了一下。
就是利用POST提交表单登陆,用Get方式注销,表单为:
Name | Value |
---|---|
DDDDD | 账号 |
upass | 密码 |
0MKKey | |
Submit | %E7%99%BB+%E5%BD%95 (转义过来也就是登 陆 ) |
前面都是很常规的东西,我个人觉得最有意思的就是后面获取登陆IP和登陆提示那一部分了。
界面和交互➴
设计界面➴
界面设计部分xaml没啥意思,就不放了,最后大概就是下面这张图这样
交互逻辑➴
其中包括功能:
- IP输入和自动获取IP;
- 账号输入和记住账号;
- 密码输入和记住密码;
- 登陆和注销按钮;
- 检查更新和关于软件;
1 | using System.Diagnostics; |
接下来就是各项功能的实现了
核心功能➴
我们的核心功能便是登陆和注销功能,对于这两部分,其实很好理解,就是POST和GET。这两部分的代码我都写在了Drcom.net.CsuNet.cs
中了
登陆➴
1 | public static string LoginCsuNet(string nip, string uid, string pwd) |
注销➴
1 | public static string LogoutCsuNet(string nip) |
至此,软件的基本功能就都已经实现了。
获取错误提示➴
这一部分纯粹靠抓包获得,我们抓 GET http://119.39.119.2/F.htm,在返回响应中获得了错误代码,并且得到了登陆时长和流量使用的数据,有用 的信息包括:
1 | Msg=14;time='5 ';flow='200 ';fsele=1;fee='0 ';xsele=0;xip='000.000.000.000.';mac='00-00-00-00-00-00';va=00;vb=00;vc=00;vd=0000;ve=0000;vf=0000; |
内容有点长,我们使用字符串拆分,获取有用的信息
1 | public static string LoginCaes(string result) |
获取登陆IP➴
这一项功能的发现,纯属偶然,抓包中无意抓到的,在未登录状态下,随便发送一个GET请求,返回响应里就会有登陆IP的信息。
1 | public static string LoginIP() |
保存设置和检查更新➴
读取和保存配置➴
1 | using System; |
软件检查更新➴
1 | using System; |
写在后面的➴
至此,所有功能均已介绍完毕,有兴趣的同学可以接盘继续开发,项目地址在中南大学联通校园网络第三方客户端中。
友情提示,修改密码功能其实实现也很简单,GitHub上已经找到有事项该功能的项目了,只要把IP改成自己的,剩下基本照抄就能实现了。
- 本文作者: MonoLogueChi
- 本文链接: https://blog.xxwhite.com/2018/drcom-develop.html
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!