524443834 发表于 2013-1-23 17:18:49

破解联通账号加密,思路清晰的来帮个忙好吗(其他语言都有啊!)

联通用户正常的账号经过加密才能上网,不知哪位高人把它的算法弄了出来,C#,PHP,C语言,易语言,C++都有源码
我参照着PHP源码翻译了过来,可是搞的焦头烂额,里面各个循环数组函数通过GOOGLE感觉懂了,可总是和别人算出来的不一样,
哪位高人思路清晰的帮看下啊
我写的AU3#include <Array.au3>
#Include <String.au3>

Dim $num,$maskArray,$decodeString
cnc("037988886666")


Func cnc($num)
;~         MsgBox(0,"ds",StringLen($num))
        $string = "9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST"
        $maskArray = 25
        $maskArray = 35
        $maskArray = 182
        $maskArray = 236
        $maskArray = 43
        $maskArray = 41
        $maskArray = 53
        $maskArray = 18
        $maskArray = 226
        $maskArray = 215
        $maskArray = 24
        $maskArray = 117
        $maskArray = 35
        $maskArray = 201
        $maskArray = 52
        $maskArray = 17
        ;$decodeString = _StringRepeat("x",StringLen($num));检测$num的数量并替换为“X”
        Local $l = 37 ,$k = 0 ,$u = 0 ,$x = 0 ,$decodeString,$decodeString2,$t
        For $i = 1 To StringLen($num) - 1 Step 1 ;从0循环到8,
                For $j = 1 To StringLen($string) - 1 Step 1 ;从0循环到25
                        If StringMid($num, $i, 1) == StringMid($string, $j, 1) Then ;如果123456789的第一位 与 9012345678abcdeABC 一样 则
                                If $i<16 Then
                                        $u = $maskArray[$i]
                                Else
                                        $x = Mod ( $i, 16 )
                                        $u = $maskArray[$x]
                                EndIf
                                $u = (($u ^ ($l * 3)) ^ $k) + $j
                                $x = Mod ( $u, 62 )
                                $decodeString[$i] = StringMid($string, $x, StringLen($x))
                                $l = $l ^ ($x+9433)
                                ExitLoop
                        EndIf
                       
                Next
                If $decodeString[$i] == "" Then $decodeString[$i] = $i
                $k = $k + 5
                $decodeString2 = $decodeString2&$decodeString[$i]
                $num = "2:"&$decodeString2
        Next
       
        MsgBox(0,"sds",$num)
EndFunc


;3PHP源码:
代码显示不正常,这是源码博客,可以高亮显示
PHP源码

C#的源码:
http://blog.upall.cn/wp-content/plugins/wordpress-toolbar/toolbar.php?wptbto=http%3A%2F%2Fwww.udnz.com%2Fcode-2896.htm&wptbhash=aHR0cDovL2Jsb2cudXBhbGwuY24vOTA5Lmh0bWw8d3B0Yj7msrPljZfogZTpgJrlrr3luKbotKblj7fliqDlr4bnrpfms5UgW%2BmZhHBocOOAgUpT5rqQ56CBXTx3cHRiPmh0dHA6Ly9ibG9nLnVwYWxsLmNuPHdwdGI%2B5YyX6KGX5bCP5be34oSi

524443834 发表于 2013-1-23 17:27:55

算了,估计是都没这闲心思,每次循环每个数值都在变,真绕啊,而且我感觉AU3的MOD运算和其他语言的“%”取余运算结果不大一样,这就麻烦勒,更重要的是语言和语言纵然相似,但有些可能没有理解透

annybaby 发表于 2013-1-23 17:46:58

有着商业性质的都必须RMB~
页: [1]
查看完整版本: 破解联通账号加密,思路清晰的来帮个忙好吗(其他语言都有啊!)