|
首先我们来了解一下网通的拨号软件的密码在注册表中的位置.打开注册表到HKEY_USERS\S-1-5-21-1606980848-920026266-854245398-100\Software\OneWave的项,其中S-1-5-21-1606980848-920026266-854245398-1003为SID(安全表示符,也就是用户名在电脑里的编号,每个电脑,每个用户都是不一样的,你只要打开你自己的)5 d, w" I$ B6 P& f- I1 M
在……OneWave\NetClient为2.0版本,……\OneWave\NetClient\Setting为1.2版本,如果你保存密码就会在相应的里面创建密码和用户名,如下图
2 F* S* I. ?* u0 g, B
* k8 ^( Q- z, g8 \9 V8 m: Y1.2版本密码位置1 I5 Z, E% h, w# {8 N2 e$ Y' K
. o: q2 u5 t! Q& B
2.0版本的用户名和密码都经过加密,生成16进制的字符串,如下图。
- ~3 m/ N5 y7 Z: a' Y
' c. u9 @4 K- U 1.2版本的用户名是明文保存的,密码则经过加密,但是在加密后,有些密文字符是显示不出来的,只有通过修改二进制数据才能看到,然而在win2000和98的注册表中鼠标右键没有“修改二进制数据”,而XP就有,如下图。1 Y1 c# i+ k% c$ c7 F) c: ~
* T' @. Q4 {9 `5 B至于在2000和98下怎么100%翻译密文很麻烦有些密文字符是显示不出来的,不如XP好,XP可以100%翻译。4 t$ l0 L" M7 v* F% s- ]$ R; O
2 D# C; ~2 C. h( A5 }1 a
6 @" J# k. r, t# J
现在说算法,是我用C语言写的,你可以把它用VB改一下。
2 a6 y& C$ V$ L- ~4 B. Q1.2版本(需知道密文的二进制数据,也就是在XP下)
. o4 u: t' h r. G- tprintf("Please enter password:"); /*输入一个2位的16进制数据d*/
& ~7 M" U7 {; M6 _9 ascanf("%x",&d);- Y) ?1 Y( w* _4 V
if((d>=0&&d<=32)||(d>=64&&d<=95)) /*计算机将d转换为10进制来计算,如果0<=d<=32或64<=d<=95*/; U( u# V# z$ Q- |9 o& E
{b=d%4; /*b=d/4的余数*/
) N9 b2 m( g- f: W) X4 |" \7 T if(b==0||b==1) /*如果b=0或b=1*/
: \( Z# x# r: Y Y4 H S c=93-d; /*c=93-d*/; D; _9 ?; s; s9 c7 S3 H
else if(b==2||b==3) /*如果b=2或b=3*/& i+ S( L8 `. B2 J7 v, |. l
c=97-d; /*c=97-d*/0 }4 n; {( v U; ^
}+ {- j+ i9 f/ O
if((d>=32&&d<=63)||(d>=96&&d<=126)) /*如果0<=d<=32或64<=d<=95*/ $ c+ G0 T* J6 f+ p9 R( f6 r
{b=d%4; /*类似以上方法*// {8 a- L0 p( d7 G
if (b==0||b==1)
3 e' a+ u6 U8 G/ F1 i A9 y+ Y5 u7 mc=157-d;9 S+ c7 K* l% i1 b5 Q, D3 l& T
else if (b==2||b==3)( I5 ~& W3 `; R- A9 ?
c=161-d;1 C6 H: r7 r% b$ J
}7 b3 T# i v0 A1 k" L
printf(" THE WORD IS:%c\n\n",c); /*将10进制c对应的ASCⅡ的明文输出*/
) ?: K. O- E5 C( K9 g$ f) f
% u. Q5 r8 C" S+ W 2.0版本很简单只要用每一排16进制的字符串如上图中的例子349F9DA19D以9F-34,9D-34,A1-34,9D-34得到的结果转换为10进制,在对应ASCⅡ就是明文了。4 B, u3 m0 Q; z; t/ h& G1 R
8 Q! {/ W, B. l {
1 _4 c+ m- Z" ^" L& b# R* r
我用C写了个翻译软件,自己用着,你们用VB写,或加上其他功能的话,别忘了给发我一个,章鱼谢过了^_^ |
|