找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2664|回复: 4

RG100A-AA武汉E信破解 求帮忙

[复制链接]
发表于 2014-10-23 20:31 | 显示全部楼层 |阅读模式
本人有个RG100A-AA,OP是是最新的,就是WINCP进去 ,看看PPPD是2.4.5版本的
现在在研究如何破解武汉E信,可是对于如何生成.SO文件还不熟练
现在求救大神们帮我编译一个sxplugin.c 的sxplugin.so 文件
sxplugin.c源码如下 ,已经修改:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. #include <pppd/pppd.h>
  6. #include <pppd/md5.h>

  7. typedef unsigned char byte;

  8. char pppd_version[] = "2.4.5";

  9. static char saveuser[MAXNAMELEN] = {0};
  10. static char savepwd[MAXSECRETLEN] = {0};

  11. static void getPIN(byte *userName, byte *PIN)
  12. {
  13.     int i,j;//循环变量
  14.     long timedivbyfive;//时间除以五
  15.     time_t timenow;//当前时间,从time()获得
  16.     byte RADIUS[17];//凑位字符,16char+'\0'
  17.     byte timeByte[4];//时间 div 5
  18.     MD5_CTX md5;//MD5结构体
  19.     byte afterMD5[16];//MD5输出
  20.     byte MD501H[2]; //MD5前两位
  21.     byte MD501[3];
  22.     byte timeHash[4]; //时间div5经过第一次转后后的值
  23.     byte temp[32]; //第一次转换时所用的临时数组
  24.     byte PIN27[6]; //PIN的2到7位,由系统时间转换

  25.     //code
  26.     info("sxplugin : using whxinliradius002");
  27.     strcpy(RADIUS, "whxinliradius002");
  28.     timenow = time(NULL);
  29.     info("-------------------------------------");
  30.     info("timenow(Hex)=%x\n",timenow);//这里是debug测试用的,你把这个时间输入到PC版的拨号器,就能够和真正的账号进行对比
  31.     timedivbyfive = timenow / 5;
  32.   
  33.     for(i = 0; i < 4; i++) {
  34.         timeByte[i] = (byte)(timedivbyfive >> (8 * (3 - i)) & 0xFF);
  35.     }
  36.     //beforeMD5
  37.     info("Begin : beforeMD5");
  38.     //byte* beforeMD5=malloc(strlen(timeByte)+strlen(userName)+strlen(RADIUS)+1);//beforeMD5={时间加密}+{用户}+{RADIUS}+'\0';
  39.     byte beforeMD5[32]={0};
  40.     //memcpy(beforeMD5,timeByte,4);//{时间加密},这个memcpy不知道为什么在有的包上不能用,所以我换成sprintf了
  41.     sprintf(beforeMD5,"%c%c%c%c",timeByte[0],timeByte[1],timeByte[2],timeByte[3]);
  42.     info("1.<%s>",beforeMD5);
  43.     strcat(beforeMD5,userName);//{用户}
  44.     info("2.<%s>",beforeMD5);
  45.     strcat(beforeMD5,RADIUS);//{RADIUS}+'\0'
  46.     info("3.<%s>",beforeMD5);
  47.     info("4.length=<%d>",strlen(beforeMD5));//理论为31
  48.     info("End : beforeMD5");
  49.     //afterMD5
  50.     info("Begin : afterMD5");
  51.     MD5_Init(&md5);
  52.     MD5_Update (&md5, beforeMD5, strlen(beforeMD5));
  53.     MD5_Final (afterMD5, &md5);//生成16位的md5
  54.     //info("1.Md516(Hex)=<_>");
  55.     MD501H[0] = afterMD5[0] >>4& 0xF;//计算32位的第一位
  56.     MD501H[1] = afterMD5[0] & 0xF;//计算32位的第二位
  57.     info("2.MD5use_1=<%2x>",MD501H[0] );
  58.     info("3.MD5use_2=<%2x>",MD501H[1] );
  59.     info("End : afterMD5");
  60.     sprintf(MD501,"%x%x",MD501H[0],MD501H[1]);
  61.     //PIN27
  62.     for(i = 0; i < 32; i++) {
  63.         temp[i] = timeByte[(31 - i) / 8] & 1;
  64.         timeByte[(31 - i) / 8] = timeByte[(31 - i) / 8] >> 1;
  65.     }

  66.     for (i = 0; i < 4; i++) {
  67.         timeHash[i] = temp[i] * 128 + temp[4 + i] * 64 + temp[8 + i]
  68.             * 32 + temp[12 + i] * 16 + temp[16 + i] * 8 + temp[20 + i]
  69.             * 4 + temp[24 + i] * 2 + temp[28 + i];
  70.     }

  71.     temp[1] = (timeHash[0] & 3) << 4;
  72.     temp[0] = (timeHash[0] >> 2) & 0x3F;
  73.     temp[2] = (timeHash[1] & 0xF) << 2;
  74.     temp[1] = (timeHash[1] >> 4 & 0xF) + temp[1];
  75.     temp[3] = timeHash[2] & 0x3F;
  76.     temp[2] = ((timeHash[2] >> 6) & 0x3) + temp[2];
  77.     temp[5] = (timeHash[3] & 3) << 4;
  78.     temp[4] = (timeHash[3] >> 2) & 0x3F;

  79.     for (i = 0; i < 6; i++) {
  80.         PIN27[i] = temp[i] + 0x020;
  81.         if(PIN27[i]>=0x40) {
  82.             PIN27[i]++;
  83.         }
  84.     }
  85.     //PIN,2+6+2+11,realname
  86.     PIN[0] = '\r';//R,N
  87.     PIN[1] = '\n';

  88.     memcpy(PIN+2, PIN27, 6);

  89.     PIN[8] = MD501[0];
  90.     PIN[9] = MD501[1];

  91.     strcpy(PIN+10, userName);//
  92.     info("username=<%s>",PIN);
  93.     info("-------------------------------------");
  94. }

  95. static int pap_modifyusername(char *user, char* passwd)
  96. {
  97.     byte PIN[MAXSECRETLEN] = {0};
  98.     getPIN(saveuser, PIN);
  99.     strcpy(user, PIN);
  100.     info("sxplugin : user  is <%s> ",user);
  101. }

  102. static int check(){
  103.     return 1;
  104. }

  105. void plugin_init(void)
  106. {
  107.     info("sxplugin : init");
  108.     strcpy(saveuser,user);
  109.     strcpy(savepwd,passwd);
  110.     pap_modifyusername(user, saveuser);//(21,11)
  111.     info("sxplugin : passwd loaded");
  112.     pap_check_hook=check;
  113.     chap_check_hook=check;
  114. }
复制代码
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
 楼主| 发表于 2014-10-23 21:08 | 显示全部楼层
不要沉!!!求救大神们!!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2014-10-24 15:33 | 显示全部楼层
E信是什么?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2014-11-12 15:47 | 显示全部楼层
我也在武汉,最近也在研究这个,你的RADIUS值是反编译MAC版的netkeeper得到的?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2014-11-12 16:30 | 显示全部楼层
楼主,你的RADIUS值是自己瞎编的吧!!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-10-5 18:31

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表