OICQ脆弱的加密機制

看雪資料發表於2000-12-19

OICQ脆弱的加密機制

                                        作者:analysist
                                        網站:紅色警戒 http://analysist.diz.nu/

    因為公司裡的空氣實在令我感到窒息,而本來就不想去完善那個所謂的無線電子郵局的我,正好找到一個
可以不幹活的理由。其實,我並非是真的不想幹活,主要是因為分配給我的活向來就不稱我的心意。剛開始時
打算做些程式設計開發的事情,但是我卻被分配去做網站,真是大材小用嘛!然後,又是去做一些理論上的研究。
等到我已經把程式設計都淡忘的時候,程式設計開發的事情終於來了,而我卻已經忘了怎樣程式設計,更可氣的是,這些活
又催得那麼緊,哎!真不知道自己能不能幹完!:(
    頭暈目眩,正在這時,一個網友發來一條訊息,不知道為什麼,我突發奇想,打算研究一下OICQ的密碼破
解方法,因為據我所知,目前還沒有什麼有效的OICQ密碼破解工具呢!以前比較有名的就要算OICQPassOver和
OIQHACK了,前者使用的是窮舉的方法,對付一些比較弱智的密碼還可以,但是象~!@qaz&165這樣的密碼呢?
真不知道哪輩子會算出來?!至於後者,雖然可以遠端破解密碼,但是使用的無非還是窮舉,效果自然也是不
敢恭維了!這兩者的區別在於前者只能是本地破解,可以在離線狀態下進行,而後者隨然可以遠端破解,但是
必須在連線狀態,另外,要編制這樣的程式必須非常清楚的瞭解OICQ的協議,所以對於一般人來說,想知道這
個破解的原理恐怕是很難的。
    而我下面將要介紹給大家的這種方法,相信凡是有一點計算機常識的人都是可以看得懂得的。好的,下面
我就向大家介紹OICQ的加密機制的多麼脆弱,多麼不堪一擊!本文的OICQ測試版本是OICQ 99C Build 0820,
至於其它版本是否存在相同問題就不得而知了。
    我推崇的是例項教學,先看一個例子,這是預設安裝完OICQ後產生的一個檔案,就是它,包含了OICQ使用
者的密碼資訊,對Win9X而言,路徑是C:\Program Files\Oicq\dat\oicq2000.cfg。我們用UltraEdit開啟它:

        滔葡扇繕    30906766

    能看得懂嗎?看得懂才怪,呵呵。。。我們選擇Edit->Hex Edit,這下呢?有點眉目吧?我真心向大家推
薦這個十六進位制編輯器---UltraEdit,因為它的功能實在是太強大了。知道我為什麼知道是這個檔案包含OICQ
使用者的密碼資訊嗎?就是靠的這個軟體,因為它有實時檔案監視功能哦! 用UltraEdit開啟OICQ目錄中你認
為可能包含使用者密碼資訊的檔案,然後執行一次修改密碼的操作, 之後返回UltraEdit主介面,看到什麼?
是不是提示有檔案被改動了,呵呵。。。這就是包含密碼資訊的檔案啦!怎麼樣?看到它的強大功能了吧?!
慢慢發掘吧,應該有很多的說!~
    這個檔案的十六進位制格式如下:

    00000000h: 01 00 00 00 08 00 00 00 CC CF C6 CF C9 C8 C9 C9 ; ........滔葡扇繕
    00000010h: 01 00 00 00 08 00 00 00 33 30 39 30 36 37 36 36 ; ........30906766

    經過分析(呵呵。。。我喜歡分析,所以我叫analysist),我大概清楚這個檔案的格式了,第一個01應該
表示這是最後使用的OICQ號碼,也就是最新使用的OICQ號碼。隨後的00 00 00應該是分割符, 然後的08表示密
碼是8位的,然後又是分割符,然後是加密的密碼,然後的01表示本檔案包含1個OICQ號碼,然後是分割符, 然
後的08表示OICQ號碼是8位的,然後是分割符,接著就是OICQ號碼的ASCII值。其實, 如果你多看幾個這樣的文
件的話,可能會看到包含多個OICQ號碼的情況,其實情況大同小異,所以這裡就以這個檔案, 這種形式來分析
了,其他情況可以類推。
    經過進一步的分析,終於搞明白了這個加密的機制。首先要說的是,30906766是我的OICQ號碼, 測試密碼
是30906766,請看下面:

    3  CC  33
    0  CF  30
    9  C6  39
    0  CF  30
    6  C9  36
    7  C8  37
    6  C9  36
    6  C9  36

    看到了嗎?第二行的0和第四行的0對應的CF是相同的,因此,直覺告訴我這是一種對稱加密方法。再分析一
下,0到9遞增,CF到C6遞減,呵呵。。。和是一樣的,不會那麼簡單吧?再試一下其它的密碼,如下:

    00000000h: 01 00 00 00 08 00 00 00 9E 9D 9C 9B 9A 99 98 97 ; ........
    00000010h: 01 00 00 00 08 00 00 00 33 30 39 30 36 37 36 36 ; ........30906766   

    驗證一下:

    a  9E  61
    b  9D  62
    c  9C  63
    d  9B  64
    e  9A  65
    f  99  66
    g  98  67
    h  97  68

    不對了!那麼,會是什麼加密方法呢?我沒灰心,想到了ASCII值,而ASCII值也是遞增的,不會是後2項的和
吧?經過對數字,小寫字母,大寫字母和特殊字元的驗證,事實證明我的推斷是正確的。
    呵呵。。。原來OICQ的加密機制如此脆弱,如此不堪一擊啊!
    這樣,只要你能訪問到這個檔案,那麼得到其中的OICQ密碼是不是如探囊取物一般容易呢?:P 當然,你只能
拿到最後使用的使用者的密碼,但是這不就很好了嗎?!
    我曾試過手工修改密碼來登陸,結果出現的情況和我在《BBS2000和BBS3000中存在的隱患》中描述的一樣,但
是因為我沒有做進一步的研究(主要是太冷了!),所以我就沒有多少發言權了,也許只要你經過一些簡單的測試
就能發現伺服器會自動把你指定的OICQ的密碼發給你也說不定哦!~
   
    鄭重宣告:這種方法具有比較嚴重的破壞性,尤其是對於公共上網場所危害更大,所以本方法只能用於找回自
己遺忘的密碼,不能用於破解別人的密碼,否則因此所引起的法律問題,本人概不負責!另外,本文所有版權歸作
者analysist,如轉載請保持文章完整性並註明出處!!!

相關文章