導航:首頁 > 源碼編譯 > tea演算法暴力破解

tea演算法暴力破解

發布時間:2023-05-27 06:50:47

❶ AES演算法出現後,DES演算法還被廣泛應用嗎

AES為了取代DES而產生。
AES出台後,DES在正式商用公用的新場合都已經不再使用,只保留對舊軟體的兼容支持。
但3次疊加的3DES演算法還在各個允許運用的標准中。

DES在密性需求不大的私用領域,還是可以使用的。畢竟現在破DES還是需要成本,即使成本很低低到5角錢,很多信息也不值得花5角錢去破。何況破解DES的成本肯定在十萬元以上。

騰訊還在QQ中應用TEA演算法,而TEA的密性比DES還差很多倍。所以DES在非商用場合還是可以被應用的。

❷ F2:D7:5E:F5:CC:C1的密碼是多少

協議分析:獲取各類登錄會話密鑰

我們知道QQ的一些會話密鑰是在登錄過程中生成的,尤其是Session Key,有了它便可以解密出聊天文本內容。本文主要是了解一下QQ的加密機制,首先是用嗅探工具Wireshark 捕獲本地發至8000埠的UDP數據包,然後使用 QQCrypter 工具對各類文本進行加解密分析。

帳號資料

QQ號碼(HEX):739317986 2C 11 18 E2

QQ密碼 MD5 一次密文:D1 C2 DC FC BF D4 1C E1 10 3A 25 47 5B 64 F7 A5

QQ密碼 MD5 二次密文:17 05 FB D8 1D 0D B4 37 79 7E 55 75 6C B8 E8 D2

IP地址(HEX):192.168.1.101 C0 A8 01 65

數據包分析

密鑰A:

02 // 命令類別

1C 27 // QQ2010 Beta3版本號

00 91

46 60

2C 11 18 E2 // QQ號碼

02 00 00 00 01 01 01 00 00 64 00

3E 12 2D 44 39 61 C5 34 80 7E D1 26 AD 30 50 29 //密鑰A

6B 1C 4B 2C 30 0B 4C 56 90 14 32 56 F3 AF 69 20 // 以下藍色內容為密文

62 C0 80 80 DE 26 CE EA E6 E6 8C BE F5 8A E7 45

87 F1 BD AC 59 0E 87 47 1D FE 4E 46 02 51 5D 00

03

用TEA解密如下:

00 01 00 00 08 04 01 E0 00 00 03 20 00 00 00 01

00 00 0B 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

密鑰B:

02

1C 27

00 DD

16 B2

2C 11 18 E2

02 00 00 00 01 01 01 00 00 64 00

33 BA 7C E2 A1 C2 B4 8E DC 8D 19 49 2E 54 D6 23 //密鑰B

// 以下藍色內容為密文

93 29 E2 EA 3E 02 DE D2 2D 7C 6D 70 DB 25 F5 74

57 4B 03 8A B9 DF EF 0D A3 EF 49 3C A8 F6 7D FE FD 1D 22 82 27 F2 39 03 91 95 02 C9 C2 FB 8E 5D EA 8F 0C 54 F8 74 D0 84 53 A3 62 58 71 D8 12 AA 06 DA C4 9F FF AD 1D 57 23 09 0C AF 6D A9 2E 44 9E 7C CD E6 85 E3 73 27 76 98 29 32 1E 8F 50 66 F6 3C D7 F4 BD A6 C4 07 DF DE 7E A4 68 B5 2A ED 7E 81 27 C2 1D 11 7A 14 28 1D 38 FF 89 9B 74 FF 96 62 96 E9 E1 B1 B3 85 95 F4 16 32 14 31 96 91 49 E5 E8 14 27 2C 52 96 16 0C 63 4C 0B B0 E6 18 43 A6 0B 3B 87 8C 98 C2 A8 7F 2E EC A7 9E 94 B2 00 43 AC D4 B1 68 55 A4 55 9B 62 35 75 93 AE 5F A7 32 67 6C 43 66 0E 4A 06 B6 87 72 1E 0A B7 B3 04 D8 AB 80 0E 5F AA A1 3A 24 1E B5 58 F1 70 EF 41 58 2F 77 50 85 97 9E B2 0A DF C9 16 AC 64 50 5F F7 B7 66 67 CE 83 74 0B 68 69 A8 37 51 37 F5 79 C2 9B E4 E6 CA 77 AC 02 BE 34 9B 8C B4 93 EE DE BC 4F 46 21 BA 72 5A 6B 23 7C 2C 11 E0 6A 02 D2 5E E7 BC FD 0E FB 52 16 93 B6 B0 C2 52 B2 42 58 93 27 BF 19 93 C1 F4 7D BB 48 48 37 91 81 00 AE 51 D4 15 22 4C 26 28 4E 50 50 F2 5E A3 B2 04 1A 17 FA 91 BE 3D 7D 82 70 71 43 4B 5C 44 AB D4 BF 65 D1 DC AB 5D E0 68 36 35 1D 93 88 6E C5 85 02 57 68 87 71 0F 2A 6F 4B 48 0D E1 AE 95 99 A6 57 49 A6 D5 86 04 42 87 F3 C6 23 9A 42 A3 52 23 9D B9 67 92 A7 1B 1A 7C 56 98 9B B3 A9 A3 25 5E 2B 74 A8 78 DC C5 11 40 A3 13 2D ED 88 4F 11 2B 59 D6 EC 13 61 BA 57 EB 6F 4C 67 95 DA EA BA 0C FA 3E 2B 86 3A D8 84 05 7F 3B 27 A6 94 49 CA F4 23 6D C0 AD 97 08 E2 C7 15 27 0B 8E 10 CD 02 1A 63 13 15 BF 4A B3 66 87 AC 2A 42 09 D5 4A DD F8 1C 0C B0 0A DD 09 F5 7F 28 60 61 55 E7 25 73 A4 BC FB 9C 5E 87 C7 CD 8A A9 46 9A 14 FD B1 03 F5 AA 2F 9C 84 32 52 A6 70 D5 FC 62 DA DA 74 B3 67 3F 84 C9 67 25 A8 8B 7E 93 72 41 8F 0C C4 34 5C 10 9F 5D 9D C2 F4 93 A0 D9 61 45 C1 B7 54 A3 76 F7 31 D8 A1 CE 8E 94 1D C7 B4 C4 49 EA BD 7C 78 77 1E CF 5D CE 5E 81 4F EC 64 AA 6A B5 E2 41 BA 4E 00 D6 D7 7F B9 96 8F

03

用密鑰B (33 BA 7C E2 A1 C2 B4 8E DC 8D 19 49 2E 54 D6 23)經TEA演算法解密,內容如下:

00 DE 00 01 00 00 08 04 01 E0

00 00 03 20 00 00 00 01 00 00 0B 17

00 38

53 5E 98 F6 D7 43 46 75 8F 78 8A 60 FB 8E D7 4A

5C 4A 4C 42 A2 A2 C1 37 8D 21 55 CC B6 26 5F 02

AE 1C 87 79 23 9B FD CE 96 28 82 E0 AB 08 28 FA

C3 9C B0 7C 76 5C F5 F5

00 78 //0x78表示十進制數值 120

D5 FE 11 59 59 04 90 82 BA 36 50 54 4D 49 44 B8 //120個位元組的開始塊

22 72 00 BA 2D F3 5C 4C 3F B6 45 B1 D3 16 1C A9 4D 12 33 B0 79 11 BB 68 79 6E 2E 1B 1C E1 C9 F8 19 4B F1 35 AA EB 62 F2 D7 77 48 70 1D B4 40 CB 85 F8 74 15 5E 6C 32 9F 07 E4 B0 2A 61 35 4B 54 CC 85 F4 EA 6C 5A 42 F8 DB 18 A3 8F 9B 42 AD 5E 9A 5E FE 89 4C 18 71 2A 33 6A E9 D1 9F CE 0F DA 99 ED 65 F8 F6 E2 0D 66 //120個位元組的結束塊

00 14 82 FE 87 6D 6D 10 52 50 50 CD 61 98 54 F7 2F 82 EE 6A EB D5 01 77 2E 01 7F 5D 41 8F 00 10 8D CD 83 D5 BB B4 1F 4C CA 15 5C 38 D4 69 F1 30 02 66 45 A3 96 00 10 49 1F 22 31 08 12 D4 98 70 1F A3 63 9F 4B 56 AB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

密鑰C和D:

我們用QQ密碼 MD5 二次密文(17 05 FB D8 1D 0D B4 37 79 7E 55 75 6C B8 E8 D2)作為密鑰,對上面的120個位元組 數據塊作解密處理,可以得到密文:

52 40 0C 93 00 01 2C 11 18 E2 00 00 03 20 00 00

00 01 00 00 0B 17 00 00 00

D1 C2 DC FC BF D4 1C E1 10 3A 25 47 5B 64 F7 A5 //這個16位的數據正好是QQ密碼

//經過MD5一次加密的密文

4C 75 25 59 00 00 00 00 00 00 00 00 00 00 00 00

00 3A FF 40 28 00 00 00 00 00 00 00 00 00 10

08 97 8A 39 E8 96 72 49 AC 26 E6 8B 63 E4 D7 44 //這個16位的數據是密鑰 C

27 1E 92 DE F4 F4 9A 68 B2 E4 8D 84 BC EC 42 41 //這個16位的數據是密鑰 D

密鑰E和F:

❸ 我QQ號丟了申訴了但都7個小時了怎麼還沒結果啊

要24小時才有回復的,你慢慢耐心的等吧。。

一、怎樣知道QQ被盜

1、正在上QQ,突然收到提示:「您的QQ已在別處上線」。說明有人正在盜你的QQ。

2、登錄時提示密碼不正確,重試N次也不行。說明你的QQ已經被盜。

二、有密碼保護該怎麼辦

讓他偷吧,去騰訊客服重設密碼就可以了。詳細方法>>

三、 沒有密碼保護或忘了密碼保護的設置該怎麼辦

1、2秒鍾內重新上線,搶在盜號者前面修改密碼,並重新登錄。

2、盡快去騰訊客服網站(可以點這里去)填寫號碼申訴表,讓騰訊把QQ還給你。證明QQ是你的方法>>

有密碼保護的朋友不一定就能順利地找回密碼,如果您如果當初注冊的安全郵箱已失效(重新設定的密碼會以郵件的方式發給你),或暫時無法接收並打開重設密碼的確認郵件(比如網路不通),那你可以臨時修改安全郵箱。詳細方法>>

如果去填寫了號碼申請表,不管有沒有通過騰訊的審核,它都會通過客戶端消息或郵件的方式通知您申訴處理結果。您也可以自己去查詢審核的結果。具體介紹>>

丟了QQ密碼再來找很麻煩,不如採取措施來盡量避免QQ被盜帶來的麻煩。

建議一:

立即申請QQ密碼保護功能。這樣就能一萬個放心,不怕QQ被偷。申請QQ密碼保護功能的方法>>

建議二:

了解老網友給大家介紹的《QQ密碼竊取伎倆剖析與防盜策略》在平時的使用過程中引起充分注意。點擊查看>>

建議三:

最新版的QQ2005增加了安全中心功能,可以有效防止您的QQ被盜。點這里了解QQ2005、下載QQ2005>>

建議四:

不要再掛機了。騰訊早就修改了升級方法,掛機已經沒有多大意義,成為歷史了。通過掛機把密碼丟了倒是很容易。
建議五:

不要相信所謂充Q幣、送Q幣的廣告,天下沒有白吃的午餐。貪便宜就可能會失去你心愛的QQ號。看看騙子們有哪些花招>>

建議您做以下一些事情:

1、用些軟體查殺一下你機器里的病毒木馬。木馬剋星、木馬殺客都可以。要到安全模式下去殺才穩妥喲。

2、仔細回想去過哪些網站掛機,趕快去取消,掛機早就沒有意義了。

3、修改密碼,整個復雜點兒的。

4、改用官方的QQ,不發用些不知名的雜牌QQ,不要去不知名的網站下載QQ。

還有 在論壇

少於500分的人的連接,不要輕易點~~

刷業務 刷Q B 會員的 勿信!!!

下載的東西先殺毒在用~

QQ被盜了可以這樣找回來

很多人號碼申訴時都如實的填寫了自己相關真實的證明資料,卻老是申訴被拒絕,其中很大的原因是填寫資料時提供的證明資料沒有足夠說服力(特別是號碼申訴的「其他證明資料」,我想這個問題一定困擾很多人,怎樣填寫一些只有你本人知道而別人無法得知的資料,這樣的資料才更有說服力。),現我把我的一些申訴的具體方法和大家交流一下:

一、被盜號碼QQ資料、歷史密碼、歷史好友、用戶個人身份資料、原有密碼保護資料,這些資料只要填寫半年前就可以了。若原有密碼保護或證件號碼忘了,就直接在申訴表裡註明「忘記了」

二、其他證明資料的填寫(16個別人無法知道或很難知道的證明資料):

1、該號碼何處申請(如:聲訊台、網站、QQ客戶端或手機申請等。如果是會員或QQ行用戶順便寫上支付方式。)

2、該號碼是否用手機綁定過(有的話就填上曾經綁定過的手機號碼)

3、QQ游戲(如:你是否用過QQ游戲裡面的雙倍積分卡等游戲道具)

4、如果忘了原始密碼,就填寫個申請舊密碼保護時的密碼,並註明是申請舊密碼保護時的密碼(當然,這個要在你記得的前提下,如果不記的可以不填)

5、是否贈送過別人QQ秀或某些騰訊的業務,有的話填上並註明獲贈人的QQ號碼(當然,這里最好能填3個月前的,因為盜號者可以用你密碼在QQ帳戶里查到你最近3個月Q幣消費記錄,填早的更有說服力)

6、你的網路硬碟密碼、通訊錄密碼、QQ帳戶密碼。(這些密碼也很有說服力,我想若不是號碼的主人,就不大可能知道這些了吧。除非你把那些密碼設的和你QQ密碼一樣)

7、如果你是會員,你還可以填寫你QQ的客服電話的VIP服務密碼。

8、該號碼是否做過會員,有的話填上大體的時間。在會員服務期間是否克隆過好友,從哪個號碼克隆的好友(如果有,這個也是個很好的證明)

9、是否向哪個群或QQ游戲家族捐獻過Q幣(有的話,還要填寫群號碼或家族名稱)

10、是否獲得別人贈送的QQ秀或騰訊的一些服務。

11、提供你QQ曾用過的昵稱(要是號碼是你的,以前的昵稱總知道吧,要是不完全記的完整的昵稱,至少也要提供以前昵稱部分「文字」)

12、有QQ寵物的可以填寫自己寵物領取的方式(如:七夕情侶寵物蛋活動、銀行卡支付、好友贈送的或曾經贈送給哪些好友寵物等)

13、是否用QQ夢想地帶的積分換過獎品或某些增值服務(有的話寫清兌換的獎品送於何人或是自己使用)

14、是否申請過藍鑽、紅鑽、黃鑽等業務,並寫上這些服務的獲得方式和時間(如 QQ帳戶支付、手機支付、積分兌換或好友贈送的以及服務開通的大致時間)

15、是否上傳過聊天記錄(這些騰訊公司就有存檔的,是十足的證明資料)

16、如果你是會員的話,是否參加過會員活動。

還有一點重要的------就是大家能申請盡量多申請些業務(大家可能說那需要很多QB,其實免費的也很多)這樣申訴的時候就有更多的資料可寫。

以上只是我的個人的一些見解,大家要是有更好的方法可以拿出來和大家分享。

希望密碼丟失的人都能拿回密碼,如果你覺的這些對你有幫助,幫忙頂一下,好讓更多的人看到,幫助更多的人,謝謝!!!!

建議務必填寫原始密碼、原始資料,也就是剛申請QQ時讓填寫的密碼及昵稱;然後就是對前面所填資料的一個補充描述,如 QQ大約是什麼時間申請的,最早加的幾個好友是誰,歷史密碼大概的設置更改的時間,密碼丟失的情況的一些描述,以及其他一些有效證據的提供。

以上所提供描述的,是我自己當初申訴時所填寫的一寫資料,並不代表按我所填就一定能申訴成功,只是給大家一個借鑒。

最後希望大家都能妥善的保管好自己的QQ,填寫申訴表的時候一定要冷靜、詳細、准確,這樣才能提高申訴成功的機會。

二、盜QQ一法:
一.行動:

2.1.准備工具:
2.1.1.掃空密碼的工具:
這里可以列出很多,如:流光,x-scan,scanipc等
這里特別推薦用scanipc啦,這個工具不錯,可能同步種植你要放進肉雞的木馬。
http://www.20cn.net/cgi-bin/download/down.cgi
這里可以得到!測試版好象比正式版還好。感覺罷了。

2.1.2.偷qq的軟體:
也有很多的,我這里選擇QQ殺手6.8.
http://xinxinyi.yeah.net
這里可以得到。

2.1.3.申請一個免費的郵箱。
你不是想就用自己的用著的吧!隨你啦,不怕死就用啦
我還是建議新申請一個來接收肉雞上發回來的qq和密碼。

2.2.得到一個ip段:
方法還是很多:

2.2.1.你可以裝個能看ip的qq。
得到一個qq上的人的ip,比如你得到qq上的人的ip是211.98.106.3 好,記下先,呆會有用。

2.2.2.也可以查找自己的ip,開始--運行--cmd--ipconfig。

2.2.3.用搜索 ip 。還會沒有嗎?

2.3.掃描同步植入:

2.3.1.添寫ip段:
打開scanipc添上一個從上面或者那裡都行得到的ip,比如是211.98.106.3。
那麼你可以在ip那裡 。
開始行添:211.98.106.1 結束行添:211.98.106.255 這是一個c類,你想多點,就自己添加啦!

2.3.2.添寫同步種植:
2.3.2.1配置qq殺手:
先看看他的說明。
打開資料設置文件--Qqset.exe,不會設置,看看設置範例。
好了配置好了就確定,之後生成一個Msread.dt.
在運行專用捆綁工具--QQbin.exe 來捆綁哪個新生成Msread.dt文件。
捆綁成功後生成SHOWGOOD文件。這個是用於遠程種植的.

2.3.2.2.回到scanipc在木馬那裡:
瀏覽,找到剛才配置後得到的SHOWGOOD文件,同時勾上同步植入

好了,都做好了,現在可以掃描了!多掃幾個網段的.得到空密碼的並自動種植木馬。
累了,玩其他的拉,不過你得到了空密碼也可以玩其他的東西。這么不說啦!

2.4查看郵箱
一段時間後,查看郵箱啦!是不是有不少收獲,別玩太多,積積德。你都玩啊?告訴你我沒玩過,這個是思路那是又寫出來?我前言說了,想讓你明白自己的qq也可以這樣輕易就被別人偷了。

三、安全措施

3.1.空密碼:
此中最大給人利用的地方是administrator沒密碼,或者其他用戶是空密碼。

3.2.弱密碼
有弱密碼,弱密碼就是很容易給人猜到的密碼,有什麼比123 /456/0/1 等密碼簡單呢!

3.3.好的密碼
數字+字母+特殊符號
例如:n1,。
這個密碼隨短,如果你想暴力破解。ok,你慢慢跑吧

3.4.安裝放火牆吧!
這個最簡單,下載個天網,默認設置都可以讓你安全的啦!

破解QQ密碼完全剖析

一. 傳統破解QQ密碼的方法

總是有人以各種各樣的理由找我破解別人的Q密碼,其實我也沒有什麼肯定可以破解的辦法.總結現在破解QQ密碼的手段,第一種是本地盜用,一般是利用木馬或者偽裝程序之類的東西從QQ使用者的機器上獲取用民用工業輸入的密碼.這種方法的缺點是首先要獲取對方主機的許可權,以漏洞或者欺騙的方式進行破解.第二種是遠程破解,掌握了QQ的通信方式就可以用程序模擬QQ到伺服器上進行登錄驗證.然後用字典或者暴力方式來進行破解.由於網路速度等限制原因.這種方法的效率真一般比較低.對於較為復雜的密碼很難破解出來.還有一種方法是通過其他間接的方式,例如破解對方郵箱等,或者騰訊的伺服器有某些漏洞可以導緻密碼泄漏,這我就不得而知了.

其實除了以上這幾種常見的攻擊手段,還有一種以前使用得比較少的方法,那就是通過sniffer來捕獲QQ通信信息.由於QQ所使用的通信協議的特殊性,可以利用捕獲到的信息來窮舉出登錄密碼.由於這種破解是在本地進行的.所以速度要比遠程破解快一些.這種方法比較適合在網吧等地方盜取別人的QQ.

二. QQ通信協議介紹

要通過抓取數據包來破爭QQ密碼.首先要對QQ的通信協議有一定的了解.只是通過抓包來分析的話,工作量是相當巨大的.幸好現在網上有一些開源的QQ項目.例如lumaqq.perl-oicq等.這要關我們就可以輕易了解QQ基本的通信協議了.QQ的通信協議是一套基於二進制數據的自己開發的應用層網路協議.其中使用一些公司的加密演算法.QQ基本通信協議支持udp和tcp兩種基本協議方式.兩種方式的基本數據結構是一樣的.只是tcp包多了一個描述長度的頭部.那麼我們就來看看QQ的登錄過程是怎麼樣.
首先QQ客戶端向伺服器發送一個請求登錄令牌的數據包.伺服器返回登錄令牌.這個令牌是在伺服器端生成的.和客戶端的IP地址,版本信息等數據相關.以後會用到這個令牌去進行其他作.

在QQ客戶端得到登錄令牌之後.就會向伺服器發送一個包含登錄信息的登錄請求.要求登錄.服務順會首先看看客戶端的號碼.I守址和版本是否可以在本伺服器上進行登錄.如果可以的話,就驗證客戶端的登錄信息是否與伺服器上保存的登錄信息進行比較.匹配的就向客戶端返回一個登錄成功的數據包.不匹配返回登錄失敗.因為QQ的伺服器有很多台.可能要分管不同的QQ版本.IP等.所以如果客戶端的號碼.IP地址和版本無法在本伺服器進行登錄.伺服器就返蜀犬吠日一個重定向包.讓客戶端去另外一台伺服器登錄.其實整個QQ登錄過程就是這么簡單的兩個步驟.

了解了QQ登錄的過程後.我們還需要知道具人本的數據包格式.以便解析出我們需要的數據內容.QQ登錄過程的數據包分為頭部.內容和尾部三個部分.其中頭的格式固定為:0x02客戶端版本 命令 序列號 QQ號碼. 其中0x02是1個位元組的標志;客戶端版本2個位元組.用於表示QQ客戶端的版本;命令2個位元組.表示要發送的命令類型.例如請求登錄令牌登錄請求等;序列號是一個2位元組的隨機數,在一次QQ會話中通過它來確認回應包是否對應請求包.QQ客戶端默認每次加1;QQ號碼就是4位元組的QQ號.對於伺服器來說是每個欄位是無所謂的.QQ登錄過程數據包的尾部固定為0x03.

1. 請求登錄令牌包

包內容就是對一次命令的具體信息,對於第一次發送的請求登錄令牌包來說,包命令是0x0062,整個請求包如下所示;

而伺服器返回包則相對復雜一些,如下所示
其中0x18表示登錄令牌的長度,現在QQ默認的登錄令牌長度是0x18.這個令牌是在伺服器端生成的.具體的生成演算法我們當然還無從得知,應該是參考了QQ客戶端的I守址.埠和其他一些信息生成這個令版的,因為你把在A機器上得到的令牌用到B機器上,你就會登錄不了.如果你把A機器上的IP給改了.你照樣也登錄不了.
2. 登錄包.
對於我們嗅探QQ密碼來說,最重要的就是這個登錄包.在這里包含了和QQ密碼相關的信息.登錄包的具體結構如下;

其中初始密鑰是一個16位元組的隨機數,用於本身的加密.這里最重要的就是密碼密鑰加密的一個空字元串.
所謂密碼密鑰就是用QQ口呤進行兩次MD5加密後得到的密文,然後以這個密文作為密鑰去加密一個空字元串,這次加密使用了反饋的TEA演算法,加密結果放在QQ登錄包里,讓伺服器去驗證,由於QQ的加密演算法使用特殊的填充機制使用QQ伺服器可以驗證出用戶密碼是否正確,這個會在後面進行詳細的解釋.QQ登錄包裡面還有一些諸如登錄狀態,登錄令版和很多未知的內容.但是這些對於我們破解QQ密碼來說都沒有什麼太大的作用.
需要特別提到的是,前面的請求登錄令牌包是不加密的,而這個登錄包除了初始密鑰本身以外的部分都要用初始密鑰進行加密,加密演算法同樣是反饋的TEA.
QQ伺服器在收到這個登錄包之後,首先要用初始密鑰解密登錄包後面的部分,如果解密成功,就會用保存在伺服器上的密信息去解密密碼密鑰加密的那個空字元串密文,我現在還不確定QQ伺服器上保存的是密碼明文還是密碼密鑰.猜測是密碼密鑰.這樣伺服器就用密碼密鑰去解密那段16位密文,如果用戶提交的密碼是正確的.才可以解密成功.否則解密函數會返回空,認證就失敗了.當驗證QQ客戶端密碼准確無誤後.就返回一個登錄成功包.格式如下:

三. QQ的加密演算法
了解了上面的QQ登錄的通信協議之後還不足以破解QQ密碼,我們還需要掌握QQ的加密演算法.前面提到了,密碼密鑰是用戶密碼進行兩次MD5加密之後得到的結果.然後再用空個結果作為密鑰使用TEA演算法進行加密.TEA是Tiny Encrypt Arithmetic的縮寫.顧名思義就是一種比較簡單的小型加密演算法.它用一個16位元組的密鑰去加密一個8位元組的明文.得到一個8位元組的密文.也可以反向從密文解密出明文.具體的演算法可以到網上搜索查閱.這里就不在贅述了.
但是QQ使用的TEA雖然是標準的TEA.但是QQ卻使用了一種自己特殊的填充反饋機制,QQ消息被分為多個加密單元.每一個加密單元都是8位元組.使用TEA進行加密.加密結果再作為下一個單元的密鑰.如果明文本身的長度不是8的倍數.那麼還要進行填充.使其成為8的倍數.填充的時候會用一個32位隨機數存放於明文的開始位置.再在明文的最後用0填充為整個長度是8的倍數.由於會向後反饋這樣即使對於相同的明文,因為使用了不同的隨機數.也會產生完全不同的密文.

使用這種特殊的填充反饋演算法所導致的結果就是,一段密文只能用加密它的密鑰進行解密.如果使用不正確的密鑰.就無法得到正確的填充結果.最常見的就是解密後得到的填充數值不是0,這樣就判斷解密失敗.
伺服器正式根據這種機制來確定客戶埠的密碼是否正確的.這也是我們破解QQ密的原理所在.

四. 窮舉破解QQ密碼

有了以上的思路.只要寫出程序就可以實現QQ密碼的破解了.首先是抓包.我使用了winpcap來抓包.這樣在HUB環境下可以抓到所有的QQ包.在交換環境中.我們可以使用一些ARP欺騙工具.同樣可以抓到特定IP所發出的包.還有QQ的加密演算法的實現.參考網上的perl-oicq和lumaqq等代碼也可以輕易實現.然後用字典或者暴力破解的方法對密文進行解密即可.解密的過程用偽代碼表示如下:結果=decrypt(密文,MD5(MD5(密碼))),如果結果不為空的時候就是正確的密碼.

五. 實際破解過程

我寫了一個程序來未例整個破解的過程.由於僅僅是用於示意.程序寫得較為粗糙.加密演算法都沒有進行優化,這樣在破解速度上並不是很快.如果用匯編去實現的話速度還能提高很多.具體的用法是這樣的.

要使用這個程序必需首先安裝winpcap3.0,這樣你才能抓包.安裝完winpcap後,直接運行qqscrak.exe.會出現如圖2所示的界面.

圖3
這樣就開始sciff網路上所有的QQ包了.當有QQ進行登錄的時候,程序會抓到QQ登錄包.下面的密破解按鈕就變為黑色.點擊這個按鈕,進行密碼破解界面,如圖4

[img][/img]
圖4
可以看到QQ號碼和對應的密碼密鑰加密的16位元組密文,我們選擇字典破解.打開相應的字典文件.點擊開始破解,如果你的字典裡麵包含了對方密碼的話就會彈出成功破角對方密碼的對話框.如果試了很多字典都不行.也可以選擇暴力破解.實際上就是窮舉所有8位的字每和數字組合的密碼.但是這種方法比較浪費時間.可能跑幾年也跑池同來對方密碼哦……

QQ網路騙術大曝光

最新案例: 發送虛假郵件騙取QQ資料

實際案例:尊敬的QQ用戶您好:
首先,感謝您對我們的支持與關愛。在過去的6年裡,騰訊和廣大的朋友們一起一步步成長,一起成熟,一起努力,也一直堅持,才有了今天 的成績!2005年我們會提供給大家更方便實用的服務和更貼心的溝通體驗!
由於QQ密碼保護服務在功能上的不完善,加之部分用戶遺忘了早期注冊的密碼保護資料,致使密碼丟失後不能及時取回。為了解決日益嚴重 的號碼被盜問題,最大限度避免木馬病毒等給QQ用戶帶來的傷害。我們將在部分號碼段試行新的實名密碼保護系統(SNPS)。新系統的推出將極大增強您使 用號碼的安全性。會在現有密碼保護基礎上增加以下功能和特性:
1.發現QQ號碼被盜後,使用新的實名安全識別碼在第一時間可以把QQ號碼鎖定。防止盜號者刪除您的好友,更改號碼資料。及時保障您QQ 個人賬戶內Q幣和游戲幣不被轉移和竊取盜用。
2.新系統採用最新的動態特徵碼技術,由於演算法的不可逆加密,徹底杜絕暴力破解等其它因素導致的QQ號碼密碼被盜。即使您遺忘了密碼保 護的回答,找回密碼郵箱已停用仍可以輕松的取回密碼。
3.簡化了密碼被盜後的取迴流程。只一個步驟便可以把密碼輕松重設,同時還可以對密碼進行許可權管理,作簡單快捷,讓您更放心。
新系統最後調試期將在部分號碼段試行。如您收到此封郵件,我們會在確認您是號碼的真正主人後,由系統回執給您號碼唯一對應的實名安全 識別碼。
請確認以下填寫的內容准確性和詳細性,這將是我們判斷該號碼屬於您的重要依據。
※QQ號碼:
※真實姓名:
※身份證號碼:
※聯系電話:
※詳細地址:
※手機號碼:
※QQ原始密碼(申請該QQ號時的第一個密碼):
※QQ歷史密碼(有多少提供多少,請用/隔開):
※證件類型(身份證/軍官證/護照/其它證件/電話號碼):
※證件號碼:
※提示問題:
※問題答案:
※安全信箱:
注意:
1.待填寫完畢(必要時復製表格)發送到我們專門設立的回執實名安全識別碼的加密電郵: [email protected] ,資料確認後系統將及時對您進行回 執。
2.填寫此表格並成功遞交,即表示您保證以上所填內容完全准確,並同意任意一項內容失效均有可能導致喪失權利。請再次確認並務必保證以 上資料的准確性。如果您的資料不正確,我們將不做任何回執也不再另行通知。

❹ tea加解密演算法經過Keil編譯單片機中運行結果錯誤,求幫助

c並沒有規定int,long 之類的數據類型對應幾個char,所以造成按位運算在不同的編譯器下運行結果不一樣
解決辦法
#define int8 char
#define uint8 uchar
#define int16 int //16位mcu
#define int16 (short int)//32位mcu
.......
這個樣子就可以避免數據類型的差異所帶來的影響(不知道int代表幾個char,就用sizeof(int))
還有,你的long btea(long* v,char n,long* k);
而你調用的時候btea(plainbuffer, 2,key);
函數簽名和定義的數據類型不一致,也會發生錯誤(不要以為unsigned可有可無)
你這樣調整一下,應該就沒有問題了

❺ 招新——第一次嘗試破解tea演算法

           開始接觸逆向分析時,入門級別的一道題目,是一個師兄寫的考核題《sotired》,嘗試著破解了下,以下是具體的過程。

1、雙擊發現打不開,應該是linux系統下的文件(事實證明確實如此,我在虛擬機那裡驗證了一下,隨便輸入字元串,得到的答案是sorry~,給人crakeme的感覺,哈哈)

2、使用反匯編工具ida64位,將文件拖進去,找到main函數,使用F5大法,得到下面的界面:

看到sorry~和wow!congratulation!的字元串,可以推斷出有字元串的對比,看到if語句,沒錯就是它了,看來temp[k]裡面有我們想要的東西(用於匹配比較的正確密文)點進去,得到

這里利用一個小插件lazyida,哈哈哈(我比較懶),得到密文,

在這里需要聲明下,因為最後讀出來的那個0x00111885B有誤(lazyida的原因),其實是0x32111885B才對,所以是 0x572CB9C1, 0x73A6EB63, 0x069E6A55, 0x818E33D9, 0x7ED0A862, 0x3211885B,這些16進制的數就是密文啦!有了密文,我們要破解它,就需要找密鑰啦,回去看函數

想像下,用戶輸入一組字元串,for循環了3次,atoui函數猜測應該是某種轉換函數,點進去

果然是移位加密轉換,結果是int 型,所以v11[6]的字元數據全部被轉換了數字,繼續往下

又有3次循環,看到encipher函數應該是加密函數來的,然後傳遞了兩個參數,一個是轉化後的v11,另一個v7,這里就可以懷疑了,v7應該是密鑰,而且用了引用,難道是地址嗎?很奇怪,點進去v7,得到

這里又要懷疑了,前面4個都是?一個數字有4個數據,感覺很像數組的樣子,於是嘗試一波

轉換為數組,然後F5大法刷新下!得到

看來我們的推斷是正確的,v7是一個數組,裡面的數據應該是密鑰了!到此,我們成功地拿到了密文和密鑰了,接下來就是解密了,解密前需要知道是怎麼加密的,回到剛剛的encipher函數,進去

看到這里有人可能要很激動了,這個演算法不就是tea演算法嗎?!(沒錯,雖然我一開始也不知道,於是我去谷歌了一波!)

tea演算法就是把密文結合密鑰進行移位再異或的運算,總共進行32輪。解密則是反過來求解,不過需要先算出delta的值,即9e3779b9*32後得到13c6ef3720,明顯溢出了(手賤算了下,溢出。tea演算法把溢出的忽略了,emmmm,我也不太懂其中的原因,能用先用著,哈哈哈),於是乎,可以寫腳本了,打開c++,寫入腳本

我們的密文和密鑰修改好後,因為有密文有6個16進制的數,所以解密3次,得到結果

好啦,這就是我們的flag了,但是看不懂是吧,沒關系,去轉換下,谷歌走起!

大家記得把空格消除,然後把它和在一起轉化,好啦,虛擬機linux操作系統打開,文件打開,輸入flag,得到的就是WOw!congratulation!

以上便是我花了一個下午整理出來的一個逆向題目,希望對大家有幫助,也希望能多多交流哦,嘻嘻~

❻ QQ聊天的原理

首先QQ客戶端向伺服器發送一個請求登錄令牌的數據包.伺服器返回登錄令牌.這個令牌是在伺服器端生成的.和客戶端的IP地址,版本信息等數據相關.以後會用到這個令牌去進行其他操作.
在QQ客戶端得到登錄令牌之後.就會向伺服器發送一個包含登錄信息的登錄請求.要求登錄.服務順會首先看看客戶端的號碼.I守址和版本是否可以在本伺服器上進行登錄.如果可以的話,就驗證客戶端的登錄信息是否與伺服器上保存的登錄信息進行比較.匹配的就向客戶端返回一個登錄成功的數據包.不匹配返回登錄失敗.因為QQ的伺服器有很多台.可能要分管不同的QQ版本.IP等.所以如果客戶端的號碼.IP地址和版本無法在本伺服器進行登錄.伺服器就返蜀犬吠日一個重定向包.讓客戶端去另外一台伺服器登錄.其實整個QQ登錄過程就是這么簡單的兩個步驟.
了解了QQ登錄的過程後.我們還需要知道具人本的數據包格式.以便解析出我們需要的數據內容.QQ登錄過程的數據包分為頭部.內容和尾部三個部分.其中頭的格式固定為:0x02客戶端版本 命令 序列號 QQ號碼. 其中0x02是1個位元組的標志;客戶端版本2個位元組.用於表示QQ客戶端的版本;命令2個位元組.表示要發送的命令類型.例如請求登錄令牌登錄請求等;序列號是一個2位元組的隨機數,在一次QQ會話中通過它來確認回應包是否對應請求包.QQ客戶端默認每次加1;QQ號碼就是4位元組的QQ號.對於伺服器來說是每個欄位是無所謂的.QQ登錄過程數據包的尾部固定為0x03.
1. 請求登錄令牌包
包內容就是對一次命令的具體信息,對於第一次發送的請求登錄令牌包來說,包命令是0x0062,整個請求包如下所示;
而伺服器返回包則相對復雜一些,如下所示;

其中0x18表示登錄令牌的長度,現在QQ默認的登錄令牌長度是0x18.這個令牌是在伺服器端生成的.具體的生成演算法我們當然還無從得知,應該是參考了QQ客戶端的I守址.埠和其他一些信息生成這個令版的,因為你把在A機器上得到的令牌用到B機器上,你就會登錄不了.如果你把A機器上的IP給改了.你照樣也登錄不了.
2. 登錄包.
對於我們嗅探QQ密碼來說,最重要的就是這個登錄包.在這里包含了和QQ密碼相關的信息.登錄包的具體結構如下;

其中初始密鑰是一個16位元組的隨機數,用於本身的加密.這里最重要的就是密碼密鑰加密的一個空字元串.
所謂密碼密鑰就是用QQ口呤進行兩次MD5加密後得到的密文,然後以這個密文作為密鑰去加密一個空字元串,這次加密使用了反饋的TEA演算法,加密結果放在QQ登錄包里,讓伺服器去驗證,由於QQ的加密演算法使用特殊的填充機制使用QQ伺服器可以驗證出用戶密碼是否正確,這個會在後面進行詳細的解釋.QQ登錄包攔世凱裡面還有一些諸如登錄狀態,登錄令版和很多未知的內容.但是這些對於我們破解QQ密碼來說都沒有什麼太大的作用.
需要特別提到的是,前面的請求登錄令牌包是不加密的,而這個登錄包除了初始密鑰本身以外的部分都要用初始密鑰進行加密,加密演算法同樣是反饋的TEA.
QQ伺服器簡喚在收到這個登錄包之後,首先要用初始密鑰解密登錄包後面的部分,如果解密成功,就會用保存在伺服器上的密信息去解密密碼密鑰加密的那個空字元串密文,我現在還不確定QQ伺服器上保存的是密碼明文還是密碼密鑰.猜測是密碼密鑰.這樣伺服器就用密碼密鑰去解密那段16位密文,如果用戶提交的密碼是正確的.才可以解密成功.否則解密函數會返回空,認證就失敗了.當驗證QQ客戶端密碼准確無誤後.就返回一個登錄成功包.格式如下:

QQ的加密演算法
了解了上面的QQ登錄的通信協議之後還不足以破解QQ密碼,我們還需要掌握QQ的加密演算法.前面提到了,密碼密鑰是用戶密碼進行兩次MD5加密之後得到的結果.然後再用空個結果作為密鑰使用TEA演算法進行加密.TEA是Tiny Encrypt Arithmetic的縮寫.顧名思義就是一種比較簡單的小型加密演算法.它用一個16位元組的密鑰去加密一個8位元組的明文.得到一個8位元組的密文.也可以反向從密文解密出明文.具體的演算法可以到網上搜索查閱.這里就不在贅述了.
但是QQ使用的TEA雖然是標準的TEA.但是QQ卻使用了一種自己特殊的填返遲充反饋機制,QQ消息被分為多個加密單元.每一個加密單元都是8位元組.使用TEA進行加密.加密結果再作為下一個單元的密鑰.如果明文本身的長度不是8的倍數.那麼還要進行填充.使其成為8的倍數.填充的時候會用一個32位隨機數存放於明文的開始位置.再在明文的最後用0填充為整個長度是8的倍數.由於會向後反饋這樣即使對於相同的明文,因為使用了不同的隨機數.也會產生完全不同的密文.
使用這種特殊的填充反饋演算法所導致的結果就是,一段密文只能用加密它的密鑰進行解密.如果使用不正確的密鑰.就無法得到正確的填充結果.最常見的就是解密後得到的填充數值不是0,這樣就判斷解密失敗.參考資料:http://hi..com/mohuidage/blog/item/40765136246a86dda2cc2b21.html

❼ 什麼是TEA演算法

TEA演算法被廣泛地應用於計算機數據加密領域,OICQ的數據安全採用了TEA演算法。本文討論了TEA的演算法的原理及實現,並揭示了QQ中該演算法的應用,本文是靈鑰科技公司(www.panakes.com)在即時通信密碼研究公開的第一篇論文,今後我們將陸續發表相關的論文及相應的產品。

TEA演算法簡介
TEA演算法是由劍橋大學計算機實驗室的DavidWheeler和RogerNeedham於1994年發明.TEA是TinyEncryptionAlgorithm的縮寫。特點是加密速度極快,高速高效,但是抗差分攻擊能力差。

TEA加密演算法是一種分組密碼演算法,其明文密文塊64比特(8位元組),密鑰長度128比特(16位元組)。TEA加密演算法的迭代次數可以改變,建議的迭代次數為32輪,盡管演算法的發明人強調加密16輪就很充分了。兩個TEAFeistel周期算為一輪。圖1示例了TEA一輪的加密流程。

以下示例了TEA的C語言加密演算法,TEA的解密演算法與加密演算法類似。

#defineTEA_ROUNDS0x20
#defineTEA_DELTA0x9E3779B9
#defineTEA_SUM0xE3779B90

voidtiny_encrypt(unsignedlong*constv,unsignedlong*constw,
constunsignedlong*constk)
{
registerunsignedlong
y=v[0],
z=v[1],
a=k[0],
b=k[1],
c=k[2],
d=k[3],
n=TEA_ROUNDS,
sum=0,
delta=TEA_DELTA;

while(n-->0){
sum+=delta;
y+=(z<<4)+a^z+sum^(z>>5)+b;
z+=(y<<4)+c^y+sum^(y>>5)+d;
}
w[0]=y;
w[1]=z;
}

TEA演算法利用的不斷增加的(即源程序中的delta)值作為變化,,就是黃金分割率。它的作用是使得每輪的加密是不同。的准確值可能不太重要。但是在這里,它被初始化為

=0x9e3779b

QQ是如何利用TEA進行加密的?
TEA演算法被廣泛應用於QQ的數據加密中,QQ採用16輪的TEA演算法加密,在這時採取16輪加密時而不採取標準的32輪加密時為了減少驗證伺服器的壓力。QQ在數據加密前採用了密碼學中的常用的填充及交織技術,減少加密數據的相關性,增加破譯者的破解難度。

下表列出了QQ應用TEA演算法幾個方面

序號
應用
相關文件

1
通訊報文的加密/解密

2
消息記錄的加密/解密
MsgEx.db

3
本地消息密碼、首次登錄時間、提示內容驗證密碼
Matrix.db

4
消息備份文件
*.bak

QQ的TEA演算法源程序分析
QQ在進行TEA加密前採用ntohl函數對原文數據和加密密鑰進行了變換,從網路位元組順序轉換位主機位元組順序進行加密後,再通過htonl函數將數據轉換為網路位元組順序的數據。

為什麼要這樣做呢?因為不同的計算機使用不同的位元組順序存儲數據。因此任何從Winsock函數對IP地址和埠號的引用和傳給Winsock函數的IP地址和埠號均時按照網路順序組織的。

為防止分析者分析出QQ是採用TEA加密演算法的,程序的設計者採用了subeax,61C88647h指令,而不採用Addeax9e3779b9h指令。因為分析者只需要判斷9e3779b9h(即是我們前面提的黃金分割率的值)就知道採用了TEA加密演算法。

sub_409A43procnear;CODEXREF:sub_409B8C+AEp
;sub_409B8C+109p...

var_10=dwordptr-10h
var_C=dwordptr-0Ch
var_8=dwordptr-8
var_4=dwordptr-4
arg_0=dwordptr8
arg_4=dwordptr0Ch
arg_8=dwordptr10h

pushebp
movebp,esp
subesp,10h
pushebx
pushesi
movesi,[ebp+arg_0]
pushedi
pushdwordptr[esi];netlong
callntohl
pushdwordptr[esi+4];netlong
movedi,eax;y
callntohl
movebx,eax;z
moveax,[ebp+arg_4]
leaecx,[ebp+var_10]
leaesi,[ebp+var_10]
subeax,ecx
mov[ebp+arg_0],4
mov[ebp+arg_4],eax
jmpshortloc_409A7C
;哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00409A79
loc_409A79:;CODEXREF:sub_409A43+49j
moveax,[ebp+arg_4]

loc_409A7C:;CODEXREF:sub_409A43+34j
pushdwordptr[eax+esi];netlong
callntohl;對k[0],k[1],k[2],k[3]進行ntohl變化,
mov[esi],eax
addesi,4
dec[ebp+arg_0]
jnzshortloc_409A79

push10h;做十六輪TEA運算
xoreax,eax
popecx

loc_409A93:;CODEXREF:sub_409A43+88j
movedx,ebx
movesi,ebx
shredx,5;z>>5
addedx,[ebp+var_C];z>>5+k[1]
subeax,61C88647h;sum=sum+deltadelta:0x9e3779b9
shlesi,4;z<<4
addesi,[ebp+var_10];z<<4+k[0]
xoredx,esi;(z>>5+k[1])^(z<<4+k[0])
leaesi,[eax+ebx];sum+z
xoredx,esi;(z<<4+k[0])^(sum+z)^(z>>5+k[1])
addedi,edx;y+=(z<<4+k[0])^(sum+z)^(z>>5+k[1])

movedx,edi
movesi,edi
shredx,5;y>>5
addedx,[ebp+var_4];y>>5+k[3]
shlesi,4;y<<4
addesi,[ebp+var_8];y<<4+k[2]
xoredx,esi;(y>>5+k[3])^(y<<4+k[2])
leaesi,[eax+edi];(sum+y)
xoredx,esi;(y<<4+k[2])^(sum+y)^(y>>5+k[3])
addebx,edx;z+=(y<<4+k[2])^(sum+y)^(y>>5+k[3])
dececx
jnzshortloc_409A93

pushedi;hostlong
callhtonl
movesi,[ebp+arg_8]
pushebx;hostlong
mov[esi],eax;加密結果
callhtonl
mov[esi+4],eax;加密結果
popedi
popesi
popebx
leave
retn
sub_409A43endp

結論
作為一種分組加密演算法,TEA加密演算法在其發展的過程中,目前出現了幾種針對TEA演算法設計的缺陷攻擊方法,使得原有的TEA加密演算法變得不安全,在過去的十幾年中,TEA演算法進行了若干次的改進,歷經XTEA,BlockTEA,XXTEA幾個版本。目前最新的演算法是XXTEA。

QQ採用了最初的TEA演算法做其核心的加密演算法,QQ在採用TEA演算法時採用了16輪的加密,其加密復雜度比32輪減了許多。利用TEA演算法的設計缺陷,使得快速破解QQ密碼成為可能。

值得一提的QQ在利用TEA演算法做加密時,採用了交織及隨機填充隨機數的技術,增加了密碼分析者分析難度,從一定程度上保護了信息的安全。

更多信息請訪問www.panakes.com

TEA(Tiny Encryption Algorithm) 是一種優秀的數據加密演算法,雖然它比 DES(Data Encryption Standard) 要簡單得多, 但有很強的抗差分分析能力,加密速度也比 DES 快得多,而且對 64 位數據加密的密鑰長達 128 位,安全性相當好。 下面的程序來自盧開澄《計算機密碼學》(清華大學出版社)。

補充:為了使這段程序更加實用,我將其整理為幾個單元, 分別用於 Delphi 和 C++Builder 。包括對數據流 TMemoryStream 和字元串的加密/解密功能, 對字元串的加密/解密還通過 Base64 編碼/解碼,保持加密後的字元串仍為字元串。

// v[2] : 64bit data, k[4] : 128bit key

void encipher( unsigned long * const v, const unsigned long * const k )
{
register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9,
a = k[0], b = k[1], c = k[2], d = k[3], n = 32;

while ( n-- > 0 )
{
sum += delta;
y += ( z << 4 ) + a ^ z + sum ^ ( z >> 5 ) + b;
z += ( y << 4 ) + c ^ y + sum ^ ( y >> 5 ) + d;
}
v[0] = y;
v[1] = z;
}

void decipher( unsigned long * const v, const unsigned long * const k )
{
register unsigned long y = v[0], z = v[1], sum = 0xC6EF3720, delta = 0x9E3779B9,
a = k[0], b = k[1], c = k[2], d = k[3], n = 32;

// sum = delta << 5, in general sum = delta * n
while ( n-- > 0 )
{
z -= ( y << 4 ) + c ^ y + sum ^ ( y >> 5 ) + d;
y -= ( z << 4 ) + a ^ z + sum ^ ( z >> 5 ) + b;
sum -= delta;
}
v[0] = y;
v[1] = z;
}

❽ 如何破解sqlite資料庫文件

針對sqlite資料庫文件,進行加密。現有兩種方案如下:

1.對資料庫中的數據進行加密。
2.對資料庫文件進行加密

1.uin怎麼獲取?

這個uin不是登錄的帳號,而是屬於內部的、程序界面上不可見的一個編號。

至於查看,最簡單的方法就是登錄web微信後,按F12打開網頁調試工具,然後ctrl+F搜索「uin」,可以找到一串長長的URL,裡面的uin就是當前登錄的微信的uin。


有一種方法就是配置文件里,導出的微信目錄下有幾個cfg文件,這幾個文件里有保存,不過是java的hashmap,怎麼解析留給小夥伴們自己琢磨吧,

還有就是有朋友反應退出微信(後台運行不叫退出)或者注銷微信後會清空這些配置信息,所以小夥伴們導出的時候記得在微信登陸狀態下導出。博主自己鼓搗了一
個小程序來完成解析。

2.一個手機多個登錄帳號怎麼辦(沒有uin怎麼辦)


據博主那個解密的帖子,必須知道串號和uin。串號好說,配置中一般都有可以搞到,uin從配置中讀取出來的時候只有當前登錄的或者最後登錄的,其他的幾
個記錄都沒辦法解密。網上某軟體的解決方法是讓用戶一個一個登錄後再導出。這個解決方法在某些情況下是不可能的,或者有時候根本不知道uin。

後來經過一個朋友的指點,博主終於發現了解決方法,可以從配置中秒讀出來這個uin,這個方法暫時不透漏了,只是說明下這個異常情況。

3.串號和uin怎麼都正確的怎麼還是沒辦法解密


說說串號這個玩意,幾個熱心的朋友反饋了這個問題,經過博主測試發現不同的手機使用的不一定是IMEI,也可能是IMSI等等,而且串號也不一定是標準的

15位,可能是各種奇葩,比如輸入*#06#出來的是一個,但是在微信程序里用的卻是另一個非常奇葩的東西,這種情況多在雙卡雙待和山寨機中出現,經過嚴
格的測試,現在已經能做到精確識別,那幾位熱心的朋友也贈與了不同的代碼表示鼓勵。

4.計算出來了正確的key為什麼無法打開資料庫文件


信這個變態用的不是標準的sqlite資料庫,那個帖子也提到了不是資料庫加密,是文件的內容加密,其實是sqlcipher。官方上竟然還賣到
149$,不過倒是開放了源碼,水平夠高的可以自己嘗試編譯。google還能搜索到sqlcipher for
windows這個很好編譯,不過博主不知是長相問題還是人品問題,編譯出來的無法打開微信的資料庫,後來改了這份代碼才完成。

5.資料庫文件內容是加密的,怎麼還原


個是某些特殊情況下用到的,比如聊天記錄刪除了資料庫中就沒了,但是某個網友測試說資料庫無法查詢出來了,但是在文件中還是有殘留的。這個情況我沒測試
過,不過想想感覺有這個可能,就跟硬碟上刪除了文件其實就是刪除了文件的硬碟索引,內容還是殘留在硬碟上可以還原一樣,sqlite資料庫刪除的條目只是
抹去了索引,內容還存在這個文件中。

網上的都是直接打開讀取,並沒有解密還原這個文件成普通的sqlite資料庫,使用sqlcipher
的導出方法也只是將可查詢的內容導出。後來博主花了時間通讀了內容加密的方式,做了一個小程序將加密的文件內容直接解密,不操作修改任何數據,非資料庫轉
換,直接數據流解密,完全還原出來了原始的未加密的資料庫文件,大小不變,無內容損失,可以直接用sqlite admin等工具直接打開。

6.已經刪除的聊天內容可以恢復么

通過上述第5的方式還原出原數據後,經測試可以恢復。sqlite的刪除並不會從文件中徹底刪掉,而是抹掉索引,所以可以通過掃描原始文件恢復。前提是沒有重裝過微信。。。

兩種加密方式的優缺點,比較如下:

一、對資料庫中的數據進行加密

優點:

1.實現數據加密快速,只需添加兩個方法

一是:對明文數據進行加密返回密文數據

二是:對密文數據進行解密返回明文數據

2.程序無需進行太大變動,僅在對數據進行添加,修改,刪除,查詢時。針對指定的表欄位進行修改進行加密,解密的欄位即可。

不足:

1.由於對數據進行了加密。所以為了看到明文,必須密文進行解密。因此會增加處理器的消耗。因終端手機的處理能力有限,可能會出現處理數據緩慢的現象發生。

2.僅僅對數據進行了加密,還是可以看到數據表的sql語句,可能猜測到表的作用。另外,如果沒有對一個表中的所有欄位加密,則可以看沒有加密的明文數據。

需要做的工作:

1.無需考慮平台差異性,qt,android,ios都能快速的實現。只需在每個平台上,使用各自的語言,實現同樣的加密,解密演算法即可。

2.需要對加密演算法進行了解,選擇一種加密演算法,進行實現。

二、對資料庫文件進行加密

優點:

1.對整個文件進行了加密,用戶通過編輯器看不到任何有用的數據,用戶使用sqlite browser軟體也無法打開文件查看數據,保證了數據安全。

2.進行打開資料庫時,使用程序sqlite3_key(db,」********」,8);即可對文件解密,對數據表的操作無需進行加密,採用明文即可。

不足:

1.需要修改sqlite的源代碼,這個工作難度比較大。

2.需要對修改後的sqlite進行編譯,需要對makefile有所了解,手動編寫makefile文件,對源程序進行編譯。因平台差異性,可能會造成某個平台無法編譯生成動態鏈接庫的可能。

3.需要對數據訪問層代碼進行修改,例如qt平台需要將以前對資料庫操作使用的QSqlQuery類,更改為使用sqlite3.h文件中定義操作,對資料庫操作。其他平台也一樣,都要做這一步的修改。

4.在程序編譯時,要加入使用加密的動態鏈接庫(linux為共享庫.so文件)windows平台最容易,只需將所使用的dll文件到應用程序中即可。其他平台需要實驗,看如何引入庫,如果編譯。

需要做的工作:

1.修改sqlite源代碼,追加對資料庫文件進行加密的功能。

2.編譯含有加密功能的程序源代碼,生成各自平台需要使用的庫文件。

3.將加密sqlite庫文件引入各自平台中,修改資料庫訪問層代碼。

4.進行程序的部署,測試。

三、資料庫加密原理

目前主流的資料庫都採用了各種安全措施,主要包括用戶認證、訪問控制、數據加密存儲和資料庫操作審計等措施。

用戶認證:用戶或者程序向資料庫提供自己的有效身份證明,資料庫鑒別用戶的身份是否合法,只有合法的用戶才能存取數據

庫中的數據。用戶認證是所有安全機制的前提,只有通過認證才能進行授權訪問和審計。

訪問控制:資料庫管理系統為不同的用戶分配不同的許可權,保證用戶只能進行授權的訪問。目前,一些大型資料庫(如Oracle 等)

都採用了基於角色的訪問控制機制,即為用戶授予不同的角色,如db—owner,security administrator 等,不同的角色允許對資料庫執行不同的操作。

資料庫加密:用戶認證以及訪問控制對訪問資料庫進行了控制,但攻擊者可能會利用操作系統或資料庫漏洞,或物理接觸計算機,而直接接觸資料庫系統文件,從而可能繞過身份認證和存取控制而直接竊取或篡改資料庫內容。對資料庫中的數據進行加密是防範這類威脅的有效手段。

資料庫操作審計:監視和記錄用戶對資料庫所做的各種操作的安全機制,它記錄並存儲用戶的操作,用於事後分析,以檢查導致資料庫現狀的原因以及提供追蹤攻擊者的線索。資料庫的備份與恢復:當資料庫發生不可恢復的故障時,可以將資料庫恢復到先前的某個一致性的狀態。

四、SQLite 加密

由於SQLite 是開放源碼的,並且在其源碼中預留了加密介面,我們可以通過實現其預留的加密介面實現口令認證和資料庫加密以完善其加密機制。

1.口令認證

SQLite 資料庫文件是一個普通文本文件,對它的訪問首先依賴於文件的訪問控制。在此基礎上,再增加進一步的口令認證,即在訪問資料庫時必須提供正確的口令,如果通過認證就可以對資料庫執行創建、查詢、修改、插入、刪除和修改等操作;否則,不允許進一步的訪問。

2.資料庫加密

資料庫加密有兩種方式:

1)在資料庫管理系(Data Base Management System,DBMS)中實現加密功能,即在從資料庫中讀數據和向資料庫中寫數據時執行加解密操作;

2)應用層加密,即在應用程序中對資料庫的某些欄位的值進行加密,DBMS 管理的是加密後的密文。
前者與DBMS 結合好,加密方式對用戶透明,但增加了DBMS 的負載,並且需要修改DBMS的原始代碼;後者則需要應用程序在寫入數據前加密,在讀出數據後解密,因而會增大應用程序的負載。在此,通過實現SQLite 源碼中預留的加密介面,實現DBMS 級的加密。

3.使用xxx-tea 演算法加密SQLite 資料庫

微型加密演算法(TEA)及其相關變種(XTEA,Block TEA,XXTEA) 都是分組加密演算法,它們很容易被描述,實現也很簡單(典型的幾行代碼)。

TEA 演算法最初是由劍橋計算機實驗室的 David Wheeler 和 Roger Needham在 1994 年設計的。該演算法使用
128 位的密鑰為 64 位的信息塊進行加密,它需要進行 64 輪迭代,盡管作者認為 32
輪已經足夠了。該演算法使用了一個神秘常數δ作為倍數,它來源於黃金比率,以保證每一輪加密都不相同。但δ的精確值似乎並不重要,這里 TEA 把它定義為
δ=「(√5 – 1)231」(也就是程序中的 0×9E3779B9)。

之後TEA 演算法被發現存在缺陷,作為回應,設計者提出了一個 TEA 的升級版本——XTEA(有時也被稱為「tean」)。XTEA 跟
TEA 使用了相同的簡單運算,但它採用了截然不同的順序,為了阻止密鑰表攻擊,四個子密鑰(在加密過程中,原 128 位的密鑰被拆分為 4 個 32
位的子密鑰)採用了一種不太正規的方式進行混合,但速度更慢了。

在跟描述 XTEA 演算法的同一份報告中,還介紹了另外一種被稱為 Block TEA 演算法的變種,它可以對 32
位大小任意倍數的變數塊進行操作。該演算法將 XTEA
輪循函數依次應用於塊中的每個字,並且將它附加於它的鄰字。該操作重復多少輪依賴於塊的大小,但至少需要 6
輪。該方法的優勢在於它無需操作模式(CBC,OFB,CFB 等),密鑰可直接用於信息。對於長的信息它可能比 XTEA 更有效率。

在1998 年,Markku-JuhaniSaarinen 給出了一個可有效攻擊 Block TEA 演算法的代碼,但之後很快 David
J. Wheeler 和 Roger M.Needham 就給出了 Block TEA 演算法的修訂版,這個演算法被稱為 XXTEA。XXTEA
使用跟 Block TEA 相似的結構,但在處理塊中每個字時利用了相鄰字。它利用一個更復雜的 MX 函數代替了 XTEA 輪循函數,MX 使用 2
個輸入量。

❾ 為什麼說TEA演算法安全性高

tea演算法在安全學領域,TEA(Tiny Encryption Algorithm)是一種分組加密演算法,它的實現非常簡單,通常只需要很精短的幾行代碼。TEA 演算法最初是由劍橋計算機實驗室的 David Wheeler 和 Roger Needham 在 1994 年設計的。

TEA演算法使用64位的明文分組和128位的密鑰,它使用Feistel分組加密框架,需要進行 64 輪迭代,盡管作者認為 32 輪已經足夠了。該演算法使用了一個神秘常數δ作為倍數,它來源於黃金比率,以保證每一輪加密都不相同。但δ的精確值似乎並不重要,這里 TEA 把它定義為 δ=「(√5 - 1)231」(也就是程序中的 0×9E3779B9)。

之後 TEA 演算法被發現存在缺陷,作為回應,設計者提出了一個 TEA 的升級版本——XTEA(有時也被稱為「tean」)。XTEA 跟 TEA 使用了相同的簡單運算,但它採用了截然不同的順序,為了阻止密鑰表攻擊,四個子密鑰(在加密過程中,原 128 位的密鑰被拆分為 4 個 32 位的子密鑰)採用了一種不太正規的方式進行混合,但速度更慢了。

閱讀全文

與tea演算法暴力破解相關的資料

熱點內容
linux命令cpu使用率 瀏覽:67
linux實用命令 瀏覽:238
傳奇引擎修改在線時間命令 瀏覽:107
php取域名中間 瀏覽:896
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:436
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:514
csgo您已被禁用此伺服器怎麼辦 瀏覽:398
打開加密軟體的方法 瀏覽:156
雲存儲伺服器可靠嗎 瀏覽:967
2核1g的雲伺服器能帶動游戲嘛 瀏覽:898
逆命20解壓碼 瀏覽:146
徐州辦犬證需要下載什麼app 瀏覽:1002