手机QQ2009(塞班第三版)聊天记录提取完全代码

十月十三号用上手机QQ2009了,一看,果然更花哨了。但以前写的手机QQ聊天记录提取程序用不上了,莫办法,重新分析。

 

手机QQ2009聊天记录文件的存放位置

C:/System/data/Tencent/QQ/自己的QQ号码/好友的QQ号码/msg.info

假如手机QQ装在E盘的把,上面盘符改成E就是了。

 

手机QQ2009聊天记录文件的字符编码

手机QQ2009聊天记录文件的字符编码还是和手机QQ2008聊天记录文件的字符编码一样的,用的是UTF-16

 

手机QQ2009聊天记录文件结构分析

和手机QQ2008聊天记录文件不一样了!

注:我用的是十六进制分析

消息分位发送消息和接收消息

 

发送消息

发送消息的十六进制表示以a8 ??(??表示一个十六进制数)标记开始并以它标记结束,接着用四个字节记录这条消息的序列,接着空出六个字节来,下一个字节是十六进制的80,说明消息是发送消息,从此以后位消息内容,直到,消息结束标记a8 ??。

例如:

 

发送消息 “不”字的消息的十六进制

a8 02 4a d5 0a d3 00 00 00 00 00 00 80 0d 4e a8 02

注: a8 02 中的 02 是随机的,但前后统一。

 

接收消息

发送消息的十六进制表示以a8 ??标记开始并以它标记结束,接着用四个字节记录这条消息的序列,接着空出六个字节来,下一个字节是十六进制的00,说明消息是发送消息,从此以后位消息内容,直到,消息结束标记a8 ??

 

接收消息 “不”字的消息的十六进制

a8 06 4a d5 0a bf 00 00 00 00 00 00 00 0d 4e a8 06

注: a8 06 中的 06 是随机的,但前后统一。

 

提取手机QQ2009的聊天记录

经过分析,提取就简单了

下面是提取手机QQ2009聊天记录的Python语言代码:

#Encoding:UTF-8
#FileName:PickupMobileQQ2009Message
#Date:2009_10_14

#from DMQCR.convert import OtoA
#I write this module for convert the expression code to char code

def pickup(path):
fp=file(path)
wfp=file(path.replace("info","txt"),"a")
while True :
    mark=fp.read(2)#one message's start and end mark
    if not mark :
      break
    fp.read(10)#the ten chars are useless for pickup.
    flag=fp.read(1)#send flag 80 end,00 receive
    message=""
    while True :
      t=fp.read(2)
      if mark != t :
        message+=t
      else :
        message=message.replace("/x20/x00","")
        message=message.decode("UTF-16")# if you have some function to convert the expression code to char code,plaese change this line "message=functionname(massage).decode("UTF-16")"
        if "/x80"==flag :
          wfp.write("SEND:"+message.encode("UTF-8")+"/r/n")
          print "SEND: ",message
        else :
          wfp.write("RECEIVE: "+message.encode("UTF-8")+"/r/n")
          print "RECEIVE:",message
        pass#you can do more
        del message
        break
fp.close()
wfp.close()
del mark,flag,wfp,fp

if __name__ == "__main__" :
print "Running--------"
pickup("e://msg.info")
print ":-"*20

最后,这是为了师太写的,嘿嘿。

分析有误的地方请指出,一起分享;代码写得差了,请多指教。

补:上网一看,汗,要把手机QQ2008以前聊天记录的导入到手机QQ2009里面来还没人做,俺继续研究,应该不难,手机QQ2008的聊天记录俺有分析及提取的程序,嘿嘿。

你可能感兴趣的:(聊天,手机,qq,path,python,file)