日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OICQ 99c版本加密方法研究报告

發布時間:2024/1/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OICQ 99c版本加密方法研究报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2000年12月21日 08:55:00

OICQ是Internet網上常用的通信軟件,本文將給出OICQ最新版99c的口令加密方法
、與服務器進行通訊的加密方法和用戶之間的加密加信方法。
一、 口令加密
每個oicq帳號的口令都保存在本地的一個文件中。登錄oicq時,先將輸入的口令
與本地的文件進行比較。如果口令與文件中保存的不符,將提示"輸入的密碼與上
次成功登錄的密碼不一致,是否到服務器驗證?"。
OICQ 99c的口令文件為matrix.cnt。OICQ 99b的口令文件為matric.ewh。

口令加密算法的函數原型為:
void CalcPassword(char *password ,int len ,char *outbuffer)
參數:
password為輸入的明碼口令
len: password長度
outbuffer:固定16個字節長度的加密后的口令。
說明:該函數用調試工具查到入口地址為15f:456718。在口令加密和用戶之間通
訊時都要用到這個函數。已知能夠計算的最長口令為20個字節,見下文用戶之間
加密通信。

Oicq99b的口令文件就是將口令進行一次CalcPassword計算后保存在每個oicq帳號
目錄中的matrix.ewh,該文件正好為16個字節。因此有這個文件就可以使用暴力
進行口令破解了。
Oicq99c的口令文件就復雜多了,第一次將明碼的口令用CalcPassword進行計算,
然后將結果再作為口令進行計算,迭代計算很多次。計算次數用4個字節的雙字表
示。將4個字節的次數和計算后的口令保存在每個oicq帳號的matrix.cnt文件中,
這個文件正好為20個字節長度。因為迭代計算了很多次,使口令計算時間極大地
延長了,使用暴力破解oicq99c的口令幾乎不太可能。
二、 聊天歷史的查看
與每個人聊天的歷史都存在自已的oicq號目錄下,文件名為對方的oicq號.msh(9
9b)或.msj(99c)文件中。
核心解密函數的原型為:
BOOL Decode(char *src ,int srclen ,char *decodekey, char *outbuffer,in
t * poutlen)
參數:
src:存放加密數據的緩沖區。
Srclen:src字節數。
Decodekey:固定16個字節的密鑰。
Outbuffer:輸出明文緩沖區的地址。
Poutlen:解密后的長度存放地址。
說明:該函數入口地址:15f:456D33。這個函數以密鑰進行解密。如果成功返回
TRUE,否則返回FALSE。
顯而易見,解密的關鍵是如何得到16個字節的密鑰decodekey。

查看聊天歷史的密鑰生成不需要口令。算法為:
1、用當前使用的oicq號為口令,調用口令計算函數CalcPassword,得出一個臨
時密鑰keycode1。
2、用keycode1為密鑰,進行解密。數據為文件matrix2.ewh(99b為matrix.ewh)
從0起第17個字節,長度為32個字節,解出16個字節的密鑰為keycode2。
3、 用keycode2為密鑰,可以解開跟任何人聊天的歷史。

例如要查看oicq號為123456的聊天歷史記錄,算法為:
BYTE keycode1[16];
BYTE filebuffer[32];

//讀文件matrix2.ewh,從0起第17個字長,長度為32的內容讀出保存在filebuff
er。
ReadToBuffer(filebuffer);
//用當前的oicq號計算keycode1
CalcPassword('123456', 6 , keycode1)。

//計算keycode2
BYTE keycode2[16];
int len = 16;
Deocode(filebuffer , 32 , keycode1,keycode2,&len);

//現在keycode2就是能看任何聊天歷史的密鑰了。
//如看跟888888的聊天歷史,將文件888888.msj讀到緩沖區largerbuffer
Decode(largerbuffer,largerbufferlen,keycode2,outbuffer,*outlen),成功后
outbuffer中為解密后的聊天記錄。
三、 與服務器通信的加密
與Decode相對應,是一個加密函數Encode。
void Encode(char *src,int srclen,char *encodekey,char *outbuffer,int *
poutlen)
參數:
src:明文緩沖區。
Srclen: 明文緩沖區的長度。
Encodekey:固定16個字節的加密的密鑰。
Outbuffer:輸出加密緩沖區。
Poutlen:輸出長度的保存地址。
說明:該函數入口地址:15f:456b62。將明文進行加密,密鑰為encodekey。用d
ecode函數和同樣的密鑰可以進行解密。

l 登錄服務器:
發送的數據包為
{BYTE b1;固定為0x2
BYTE b2;固定為0x3
BYTE b3;固定為0XA
BYTE b4;固定為0X0
BYTE cmd; 登錄服務器為0X15。
WORD seq; 順序號,從高到低存放
DWORD oicq號;以從高到低順利存放二進制的OICQ號。
BYTE key[16] ;隨機產生的16個字節的密鑰。
BYTE buffer[64];64字節的加密內容。
BYTE endchar ;固定為0x3。

最核心的是buffer[64]的內容。用口令調用CalcPassword進行一次計算,然后作
為密鑰對0長度的明文進行加密,得出16個字節的結果,再進行加密發送。例如口
令為'abc123',算法為
BYTE passkey[16]
CalcPassword('abc123',6',passkey)

BYTE keycode[16]
int keycodelen=16;
Encode(0,0,passkey,keycode,&keycodelen)


BYTE sndbuffer[51];
memset(sndbuffer,0,51)
memcpy(sndbuffer,keycode,16)
//sndbuffer其余的內容為當前機器的ip等信息,與檢查口令無關

BYTE result[64]
int sresultlen=64
Encode(sndbuffer,51,隨機產生16個字節的密鑰,result,&resultlen)

最后把16個字節的隨機密鑰和64字節加密后的口令一同發給服務器驗證。如果能
用sniffer偵聽到別人與服務器的通信,就能進行口令破解。當然也可以通過服務
器進行在線的口令破解,只是速度很慢,沒有實用價值。

l 如果登錄成功,服務器返回16個字節的密鑰--ServerKey。
l UPD數據包的格式為
BYTE b1;固定為2
BYTE b2;固定為1
BYTE b3;固定為0
BYTE b4;固定為0
BYTE cmd;登錄為0X15
WORD seq;從高到低順序,與發送的seq一致。
BYTE msg[56];
BYTE endchar ;固定0x3。
用口令經過一次CalcPassword計算,得出16個字節的密鑰,對msg進行解密。從第
1個字節開始的16個字節即為與服務器通信的密鑰暫稱為ServerKey。該密鑰經常
變化。
在本次登錄中,以后所有跟服務器的通信都用這個ServerKey為密鑰進行加密和解
密。
四、 其它用戶發來的加密消息的解密。
其它用戶的發來的加密消息格式為:
BYTE b1;固定為0x0
BYTE b2;固定為0x3
BYTE b3;固定為0xA或0X2
BYTE salt; OICQ號加密用
DWORD EncodeOicqID;加密后的從高到低的oicq號。
DWORD seq;序號
BYTE msg[變長]

l 對方oicq號的解密。
將EncodeOicqID的4個字節分別與salt進行異或操作,然后取反。
如salt = 0XA0, EncodeOicqID = 0X 5F5EBD1F。
//分別進行異或操作
0X 5F5EBD1F XOR 0XA0A0A0A0 = 0X FFFE1DBF
//再取反
NOT 0X FFFE1DBF = 0X1E240,轉為10進制就是123456。因此對方的oicq號為123
456。
l 消息的解密。
先合成一個20字節的口令。前4個字節為從高到低的二進制對方的oicq號。后16個
字節為服務器發來的ServerKey。ServerKey的來源見第三節。
如對方的oicq號為123456,20字節的口令為
00 01 E2 40 + 16字節的ServerKey。
用口令算法對這20字節的口令進行計算,得16個字節的密鑰,就可以解開對方發
來的消息。
五、 發給其它用戶消息的加密
在登錄后,服務器會通知好友的IP地址和端口,以及一個16個字節的密鑰。就是
當前的OICQ號加對方16個字節ServerKey通過CalcPass的計算結果。
向對方發送消息時,只要用這16個字節進行加密即可。
六、 一些結論
oicq 99c的加密是嚴密的,不易進行破解。除非得到某人的口令,否則不可能進
行消息假冒等。如果你有每秒能運算百億次的巨型機,也許能解開對方跟服務器
通信的16個字節的ServerKey,而且必須要快??傊畂icq 99c 是安全的,仍然在
使用的早期用戶間明文通信協議不在本文考慮之內。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3275


總結

以上是生活随笔為你收集整理的OICQ 99c版本加密方法研究报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人黄色av | 水果视频污 | 精品123区 | 91超碰在线免费观看 | 欧美日韩一区精品 | 国产一区二区精品在线 | 欧美一级爆毛片 | 成a人v| 天天躁日日躁狠狠很躁 | 爱爱视频日本 | 亚洲AV无码精品黑人黑人 | 欧美做受高潮 | 久久精品视频免费看 | 99热网址 | 国产suv精品一区二区6 | 欧美婷婷六月丁香综合色 | 成年在线观看视频 | 女同亚洲精品一区二区三 | 日韩欧美视频免费在线观看 | 黄色录像网址 | 欧美午夜免费 | 精品av一区二区 | 亚洲私人网站 | 国产五十路 | 9.1成人看片免费版 日韩经典在线 | 噼里啪啦动漫高清在线观看 | 91丨porny丨刺激 | 一级免费看 | 午夜激情电影院 | 污片网站 | 久久综合导航 | 国产91欧美| 玉米地疯狂的吸允她的奶视频 | 欧美极品少妇xxxxⅹ免费视频 | a级无毛片| 国内自拍视频在线观看 | 国内精品久久久久久久久久久 | 欧美日韩黄| 久久久久久久久国产精品一区 | 成人免费毛片日本片视频 | 天天操妹子 | 欧美黑人激情 | 亚洲美女屁股眼交8 | 白嫩日本少妇做爰 | 一级在线视频 | 色哟哟一区二区 | 欧美 日韩 视频 | 亚洲一区二区三区加勒比 | 97久久国产亚洲精品超碰热 | 在线网站黄| 人妻体内射精一区二区三区 | 少妇搡bbbb搡bbb搡打电话 | 成人在线免费观看视频 | 免费国产羞羞网站视频 | 欧洲精品免费一区二区三区 | 男人的网站在线观看 | 欧美成人免费网站 | 秋霞网一区二区 | 日韩亚洲精品在线 | 亚洲乱码国产乱码精品精 | 91精品影视 | 91午夜在线观看 | 成人中文在线 | 中文精品一区 | 国产在线一 | free性护士vidos猛交 | 色爱av综合网 | 91久久精品一区二区别 | 二级黄色片 | 日韩亚洲欧美一区二区三区 | 欧美成人日韩 | 淫视频在线观看 | av成人动漫 | 欧美日韩免费做爰视频 | 图片区亚洲| www日本高清 | 少妇av片 | 欧美成人手机在线 | 国产免费av网站 | 裸体按摩www性xxxcom | 色一情一区二区三区四区 | 国产免费一区二区三区四区五区 | 三年电影在线观看 | 亚洲女同视频 | 高跟肉丝丝袜呻吟啪啪网站av | 青青青青青草 | 精品亚洲精品 | 黄色国产精品 | 亚洲视频在线播放免费 | 欧美午夜一区二区 | 欧洲久久久久 | 亚洲色图 美腿丝袜 | 男人插女人下面视频 | 国产区精品在线观看 | 日韩视频一区二区三区在线播放免费观看 | 午夜精产品一区二区在线观看的 | 色视频免费看 | 瑟瑟视频网站 | 国产欧美亚洲精品 |