当前位置:首页 > 网络编程 > WEB编程 > PHP > QQwry.dat格式分析和查询IP位置的PHP程序

QQwry.dat格式分析和查询IP位置的PHP程序

点击次数:28 次 发布日期:2008-11-26 02:43:49 作者:源代码网
源代码网推荐
源代码网推荐

源代码网整理以下  以前的追捕数据库太大,而且很久没有更新了。

源代码网整理以下  所以我想到利用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

源代码网整理以下  sLocalOffset:3

源代码网整理以下  4.4 LocalRec结构二

源代码网整理以下  sLocal:不定长 普通的C风格字符串

源代码网整理以下  注意:sCountryOffset指向的位置可能依然是4.2格式的,不知道为什么这样设计。

源代码网整理以下  Flag取0x1时,sCountryOffset指向的位置可能是Flag为0x2,这时,LocalRec也在这里寻找。

源代码网整理以下  现在不明白当记录Local的位置遇到0x2的标志意味着什么。

源代码网整理以下  在qqwry.dat中,似乎存在一些错误。

源代码网整理以下  个别的记录Local会被写为:

源代码网整理以下  0x2,0x0,0x0,0x0

源代码网整理以下  根据规则,应该到文件最开头去寻找,可是,文件最开头显然不是记录这些的。

源代码网整理以下  我才学PHP不久,各位不要笑,你要能改进当然好,记得给我一份。

源代码网整理以下  我参考了一些网上找到的代码,就不一一写出出处了。

源代码网整理以下  说老实话,我很头疼PHP无法明确指定变量的类型。

源代码网整理以下  比如,我想让某个数是无符号的整形,它很不听话,非要是带个负号,我只好尝试各种可能的写法..........

源代码网整理以下  各位都是怎么处理类似的事情?

源代码网整理以下  define('QQWRY' , $qqwry_root_path . 'QQwry.dat' ) ;
function IpToInt($Ip) {
  
源代码网推荐
源代码网推荐
源代码网供稿.

网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华