python ipaddr库_用Python脚本查询纯真IP库QQWry.dat(Demon修改版)

#!/usr/bin/env python

# coding: utf-8

# from: http://linuxtoy.org/files/pyip.py

# Blog: http://linuxtoy.org/archives/python-ip.html

# Modified by Demon

# Blog: http://demon.tw/programming/python-qqwry-dat.html

'''用Python脚本查询纯真IP库

QQWry.Dat的格式如下:

+----------+

| 文件头 | (8字节)

+----------+

| 记录区 | (不定长)

+----------+

| 索引区 | (大小由文件头决定)

+----------+

文件头:4字节开始索引偏移值+4字节结尾索引偏移值

记录区: 每条IP记录格式 ==> IP地址[国家信息][地区信息]

对于国家记录,可以有三种表示方式:

字符串形式(IP记录第5字节不等于0x01和0x02的情况),

重定向模式1(第5字节为0x01),则接下来3字节为国家信息存储地的偏移值

重定向模式(第5字节为0x02),

对于地区记录,可以有两种表示方式: 字符串形式和重定向

最后一条规则:重定向模式1的国家记录后不能跟地区记录

索引区: 每条索引记录格式 ==> 4字节起始IP地址 + 3字节指向IP记录的偏移值

索引区的IP和它指向的记录区一条记录中的IP构成一个IP范围。查询信息是这个

范围内IP的信息

'''

importsys

importsocket

fromstructimportpack, unpack

classIPInfo(object):

'''QQWry.Dat数据库查询功能集合

'''

def__init__(self, dbname):

''' 初始化类,读取数据库内容为一个字符串,

通过开始8字节确定数据库的索引信息''&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值