煎饼 发表于 2003-6-29 18:42:00

网通拨号软件Onewave Clinet注册表密码解密算法『转贴子』

首先我们来了解一下网通的拨号软件的密码在注册表中的位置.打开注册表到HKEY_USERS\S-1-5-21-1606980848-920026266-854245398-100\Software\OneWave的项,其中S-1-5-21-1606980848-920026266-854245398-1003为SID(安全表示符,也就是用户名在电脑里的编号,每个电脑,每个用户都是不一样的,你只要打开你自己的)
在……OneWave\NetClient为2.0版本,……\OneWave\NetClient\Setting为1.2版本,如果你保存密码就会在相应的里面创建密码和用户名,如下图
http://hsite.net/51chi/img/bbs/5.gif
1.2版本密码位置

       2.0版本的用户名和密码都经过加密,生成16进制的字符串,如下图。
http://hsite.net/51chi/img/bbs/4.gif
      1.2版本的用户名是明文保存的,密码则经过加密,但是在加密后,有些密文字符是显示不出来的,只有通过修改二进制数据才能看到,然而在win2000和98的注册表中鼠标右键没有“修改二进制数据”,而XP就有,如下图。
http://hsite.net/51chi/img/bbs/6.gif
至于在2000和98下怎么100%翻译密文很麻烦有些密文字符是显示不出来的,不如XP好,XP可以100%翻译。


现在说算法,是我用C语言写的,你可以把它用VB改一下。
1.2版本(需知道密文的二进制数据,也就是在XP下)
printf("Please enter password:");      /*输入一个2位的16进制数据d*/
scanf("%x",&d);
if((d>=0&&d<=32)||(d>=64&&d<=95))      /*计算机将d转换为10进制来计算,如果0<=d<=32或64<=d<=95*/
{b=d%4;                                  /*b=d/4的余数*/
    if(b==0||b==1)                     /*如果b=0或b=1*/
         c=93-d;                         /*c=93-d*/
else if(b==2||b==3)                      /*如果b=2或b=3*/
          c=97-d;                        /*c=97-d*/
}
if((d>=32&&d<=63)||(d>=96&&d<=126))      /*如果0<=d<=32或64<=d<=95*/   
{b=d%4;                                  /*类似以上方法*/
if (b==0||b==1)
c=157-d;
else if (b==2||b==3)
c=161-d;
}
printf("          THE WORD IS:%c\n\n",c);    /*将10进制c对应的ASCⅡ的明文输出*/

      2.0版本很简单只要用每一排16进制的字符串如上图中的例子349F9DA19D以9F-34,9D-34,A1-34,9D-34得到的结果转换为10进制,在对应ASCⅡ就是明文了。


      我用C写了个翻译软件,自己用着,你们用VB写,或加上其他功能的话,别忘了给发我一个,章鱼谢过了^_^

skywalker 发表于 2003-6-30 01:14:00

晕死 这个是章鱼弄出来的呀 连转贴也不加一个

煎饼 发表于 2003-7-1 13:17:00

我知道啊,昨晚发的时候忘记了

斯派克 发表于 2003-7-9 19:28:00

8实用啊。自己玩玩。~~
玩得什么时候破了个软件,让大家实用实用哇

游侠无极限 发表于 2003-7-12 00:51:00

VB代码

Dim d As Integer, b As Integer, c As Integer
d = Val("&H" + InputBox("Please enter password:"))
Select Case d
Case 0 To 32, 64 To 95
    b = d Mod 4
    If b = 0 Or b = 1 Then
      c = 93 - d
    ElseIf b = 2 Or b = 3 Then
      c = 97 - d
    End If
Case 32 To 63, 96 To 126
    b = d Mod 4
    If b = 0 Or b = 1 Then
      c = 157 - d
    ElseIf b = 2 Or b = 3 Then
      c = 161 - d
    End If
End Select
MsgBox "THE WORD IS" + vbCrLf + Chr(34) + Chr(c) + Chr(34)

游侠无极限 发表于 2003-7-12 00:53:00

如果要人性化一点的话,可以用VB直接读取注册表项,然后转换成字符串

雁北飞 发表于 2003-7-13 12:13:00

我没有学过VB看不懂

王某人 发表于 2003-7-14 20:23:00

嗯~~~破这个密码有什么用么?
页: [1]
查看完整版本: 网通拨号软件Onewave Clinet注册表密码解密算法