» 网友学堂 » PHP教程 » QQwry.dat格式分析和查询IP位置的PHP程序 -> 当日更新
QQwry.dat格式分析和查询IP位置的PHP程序
作者:wumingzhe 发表时间:2008-10-10 07:56 阅读:28次 在百度搜索相关内容

  以前的追捕数据库太大,而且很久没有更新了。

  所以我想到利用QQwry.dat这个文件查询IP所在位置,QQwry.dat 在很多地方都能找到,一般看IP地址的QQ压缩包中都有。

  但是没有任何相关格式资料。

  我分析了这个文件的格式,目前如下结论:

  格式如下:

  A。文件头,共8字节

  B。若干条记录的结束地址+国家和区域

  C。按照从小到大排列的若干条起始地址+结束地址偏移,定长,7字节

  D。所有的IP都是用4字节整数记录的,并且遵照Intel次序,高位在后,低位在前。

  E。所有偏移量都是绝对偏移,就是从文件最开头计算。

  F。除了文件头用了两个4字节偏移,其余偏移量都用3字节。

  G。所有的偏移量也是低位在前,高位在后

  H。采用了一些字符串压缩技术

  1。文件头,共8字节

  FirstStartIpOffset:4 第一个起始IP的绝对偏移

  LastStartIpOffset:4 最后一个起始IP的绝对偏移

  2。起始地址+结束地址偏移记录区

  每条记录7字节,按照起始地址从小到大排列

  StartIp:4 起始地址,整数形式的IP

  EndIpOffset:3 结束地址绝对偏移

  3。结束地址+国家+区域记录区

  EndIP:4

  国家+区域记录:不定长

  4。国家+区域记录,有几种形式

  4.1。

  国家字符串,以 0x0 结束

  区域字符串,以 0x0 结束

  4.2。

  Flag:1 标识取值: 0x1,后面没有Local记录

  0x2,后面还有Local记录

  sCountryOffset:3 实际的字符串要去这个偏移位置去找

  LocalRec:不定长,可选 根据Flag取值而定。这个记录也类似Country,可能采用压缩

  4.3 LocalRec结构一

  flag:1 还不是十分了解这个flag含义,取值 0x1 or 0x2

#Advertisement