当前位置:   article > 正文

联通校园网不能开热点问题解决办法_联通校园卡开热点没用

联通校园卡开热点没用

背景:之前宿舍开一个宽带账号,然后用路由器开热点全宿舍用。今年开学以后,改成了一人一账号,电脑或手机必须用客户端登陆才能使用,而且开热点就掉线,虚拟网卡也不能打开,路由器也只是起到桥接作用。原本连上wifi就能用的现在却变得如此麻烦,登陆界面又太low,心中各种不爽。所以决定解决一下。


解决思路及过程如下:

1、首先想到的就是用google搜索解决办法或者是破解版的认证客户端


由于DialClient是新出的登陆端,没有可用解决方法和破解版。所以决定自己解决并写下这篇博客。

2、先对客户端进行分析

客户端大体有两个功能:认证登陆+开热点等检测

所以第一种解决思路就是对原客户端进行破解,只保留认证部分,让检测部分不起作用。

对客户端的相关文件进行反编译后,结果并不理想。所以换一种思路。

第二种解决思路就是对原客户端全部放弃,自己来做认证部分。

认证无非就那么几种形式:一种像CMCC通过http协议登陆

另一种就是PPPoE登陆。


第一种模拟http请求,第二种获取加密的账号密码用系统自带的宽带连接,应该就能解决。

3、解决问题:

第一步、同是打开抓包工具(我这里用的是wireshark)和登陆客户端

    1、wireshark开始

    2、客户端登陆

    3、wireshark停止

第二步、分析抓到的数据


1、通过抓包发现它最先发送的是http协议的post请求,所以先对这两个post进行分析

    第一个请求及响应:



    第二个请求及响应:



    根据请求文件名猜测check是检测网络连通性请求,authlogin是登陆请求,所以打算用模拟客户端发送登陆请求来实现登陆(当然后面实践证明是不可行的)。代码附上如下:

  1. package denglu;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.URL;
  7. import java.net.URLConnection;
  8. public class denglu {
  9. public static void main(String[] args) {
  10. String sr1=sendPost("http://139.198.3.98/mgr/api/account/check.html", "user_name=账号&school_id=学校编号&pwd=密码");
  11. System.out.println(sr1);
  12. String sr2=sendPost("http://139.198.3.98/mgr/api/authlogin.html", "loguser=账号&schoolId=学校编号");
  13. System.out.println(sr2);
  14. }
  15. public static String sendPost(String url, String param) {
  16. PrintWriter out = null;
  17. BufferedReader in = null;
  18. String result = "";
  19. try {
  20. URL realUrl = new URL(url);
  21. // 打开和URL之间的连接
  22. URLConnection conn = realUrl.openConnection();
  23. // 设置通用的请求属性
  24. conn.setRequestProperty("accept", "*,*/*");
  25. conn.setRequestProperty("Accept-Language", "zh-cn,en-us;q=0.5");
  26. conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
  27. conn.setRequestProperty("Proxy-Connection", "Keep-Alive");
  28. conn.setRequestProperty("Accept-Language", "zh-cn,en-us;q=0.5");
  29. conn.setRequestProperty("user-agent",
  30. "Mozilla/4.0 (MSIE 5.0; libcurl-7.53.1;)");
  31. // 发送POST请求必须设置如下两行
  32. conn.setDoOutput(true);
  33. conn.setDoInput(true);
  34. // 获取URLConnection对象对应的输出流
  35. out = new PrintWriter(conn.getOutputStream());
  36. // 发送请求参数
  37. out.print(param);
  38. // flush输出流的缓冲
  39. out.flush();
  40. // 定义BufferedReader输入流来读取URL的响应
  41. in = new BufferedReader(
  42. new InputStreamReader(conn.getInputStream()));
  43. String line;
  44. while ((line = in.readLine()) != null) {
  45. result += line;
  46. }
  47. } catch (Exception e) {
  48. System.out.println("发送 POST 请求出现异常!"+e);
  49. e.printStackTrace();
  50. }
  51. //使用finally块来关闭输出流、输入流
  52. finally{
  53. try{
  54. if(out!=null){
  55. out.close();
  56. }
  57. if(in!=null){
  58. in.close();
  59. }
  60. }
  61. catch(IOException ex){
  62. ex.printStackTrace();
  63. }
  64. }
  65. return result;
  66. }
  67. }

运行结果如下:


虽然显示成功,但实际并未联通。所以对抓包数据继续往下分析。


上面两行应该是PPPoE的数据,展开如下:


根据得到的账号密码,使用系统自带的PPPoE连接软件进行登陆


登不上去,再返回来查看抓包数据


ASCII的第一个字符无法用键盘敲出,网上也没有现成的可以复制,可以用如下代码生成,然后复制。

System.out.println((char)1);

至此,已经通过自带的PPPoE连接上了,可以开wifi,用虚拟机,没有任何限制。


加密后的账号:手机号+@dxcwo201

加密后的密码:ASCII的第一个字符+原密码


将方便进行到底,虽然解决了开热点等问题,但每次还需要点登陆也是挺麻烦的,可以设置让他自动登陆


打开系统的任务计划程序=》新建=》。。。=》运行代码rasdial 宽带连接 账号 密码。

自此,开机自动联网,可开热点等基本完成。


问题解决了,我也自己写了一个简易的登陆客户端,如果觉得上面的过程麻烦,可以直接使用。

可以开热点的客户端

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/279433
推荐阅读
  

闽ICP备14008679号