首页 > QQ技巧 > 正文

安卓手机QQ 微信获取聊天记录测试

时间:2013-12-22 10:47 作者:QQ地带 我要评论

测试平台:安卓4.1 & 2.3
 
测试软件手机QQ2012 & 手机QQ2013 & 微信4.5
 
测试目的:获取聊天记录
 
1.手机QQ
 
据说手机QQ2012之前都是明文的,这个没测试,不细说了,有兴趣的朋友自己搜索下。2012之后使用记录保存的sqliteDB内容加密,库没有设置密码,直接用sqliteadmin之类的软件打开之后可以看到一堆歪七扭八的字符。直接上关键,解密函数如下:
 
代码:
//解密QQ加密字符串  key为15位手机串号字符串
CString DecryptMobileQQBuffer(LPCSTR lpIn, int nLen, LPSTR lpKey)
{
  CString strRet;
  if (nLen > 0)
  {
    char *pszTmp = new char[nLen + 2];
    ZeroMemory(pszTmp, nLen + 2);
    int nDecode = 0;
    for (int i = 0; i < nLen; i++)
    {
      if ((BYTE)lpIn[i] >= 128)
      {
        pszTmp[i] = lpIn[i];
        pszTmp[i + 1] = lpIn[i + 1];
        i += 2;
      }
      pszTmp[i] = lpIn[i] ^ lpKey[nDecode % 15];
      nDecode++;
    }
    strRet = pszTmp;
    delete pszTmp;
  }
  
  return strRet;
}
使用了15位的手机串号作为key,依次做异或运算。。。这个尿性,就算没有手机串号也能碰撞出来的。。。这个加密算是形式吧。。。。
 
注意:从字段里读取内容的时候要使用sqlite3_column_blob函数获取内容缓冲区,使用sqlite3_column_bytes获取出来缓冲区长度,因为使用sqlite3_column_text会有\0字符干扰导致数据不全;所有的中文使用utf8编码,需要转下。
 
 

 
 
2.微信
微信貌似4.0之前也木有加密,没有测试,4.5版本使用了sqlcipher加密数据库,也是sqlite的一种,数据没有加密但是数据库文件加密了。
通过反编译逆向+调试,这个数据库的密码加密方式为MD5(15位手机串号+微信uin).s\u\b\s\t\r\i\n\g(0,7) --- (这里要去掉斜线,之所以这么写,是因为加上这个会被看雪的安全宝拦截。。。。无奈了,编辑了无数次才发现),md5的字符均为小写。
例如我的串号为3535xxxxx....,uin为168150735,key为“2be3aa8”。
 
 
 
搞过的同学都知道数据库文件放在一个长长的数字字母混合的文件夹里,这个字符串就是MD5(“mm” + 微信uin),比较有意思。至于这个uin怎么获取,我在微信的程序里貌似木有发现怎么获取,但是本地某些文件里有存,留一个悬念给大家想象了。
 
 
有了key,用sqlcipher打开即可看到内容。mssage表里是普通微信聊天的记录,qmessage是QQ离线消息的记录,其他的木有细看,测试基本结束。

标签: 微信 安卓
顶一下
(1)
100%
踩一下
(0)
0%

Google提供的广告