有人用过QQWry.Dat么?
多数网上关于利用QQWry.Dat文件查找ip地址的
都是已知ip地址,可查出相对应的城市。
有没有前辈们用过利用QQWry.Dat文件,但给出城市求出对应的ip字段
例如IPlook这种输入杭州,然后刷出很多杭州的ip字段的?
给个代码连接或者方法提示,用已知ip查城市的算法好多,看不错来了。
急用
谢谢
------解决方案--------------------路过
------解决方案--------------------网上好像有算法的,以前也想搞这个,无奈时间不允许。
------解决方案--------------------每个地区都有ip段范围的,你搜集到数据库中就可以查询了
------解决方案--------------------67108864,另一列对应为:67829759
反推IP地址
示例:
ip为192.168.1.1
值为192*256^3+168*256^2+1*256^1+1*256^0
同理你可以用67108864/(256^3) 得到的商为第一位的IP,用余数除以256的二次方(256^2)得到的商为第二位的IP.
------解决方案--------------------yun 来晚了
------解决方案--------------------不过,有ip库玩
------解决方案--------------------没有,不过看来挺好玩的。
------解决方案--------------------这是爱的奉献:)
using System;
using System.IO;
using System.Collections;
using System.Text;
using System.Text.RegularExpressions;
namespace WSY.SchoolManage.MyComponet
{
/// <summary>
/// IPScan 的摘要说明。
/// </summary>
public class IPScan
{
#region 私有成员
private string dataPath;
private string ip;
private string country;
private string local;
private long firstStartIp=0;
private long lastStartIp=0;
private FileStream objfs = null;
private long startIp=0;
private long endIp=0;
private int countryFlag=0;
private long endIpOff=0;
private string errMsg=null;
#endregion
#region 构造函数
public IPScan()
{
}
#endregion
#region 公共属性
public string DataPath
{
set{dataPath=value;}
}
public string IP
{
set{ip=value;}
}
public string Country
{
get{return country;}
}
public string Local
{
get{return local;}
}
public string ErrMsg
{
get{return errMsg;}
}
#endregion
#region 搜索匹配数据
private int QQwry()
{
string pattern = @ "(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5])) ";
Regex objRe = new Regex(pattern);
Match objMa = objRe.Match(ip);
if(!objMa.Success)
{
this.errMsg= "IP格式错误 ";
return 4;
}
long ip_Int = this.IpToInt(ip);
int nRet=0;
if(ip_Int> =IpToInt( "127.0.0.0 ")&&ip_Int <=IpToInt( "127.255.255.255 "))
{
this.country= "本机内部环回地址 ";
this.local= " ";
nRet=1;
}
else if((ip_Int> =IpToInt( "0.0.0.0 ")&&ip_Int <=IpToInt( "2.255.255.255 "))||(ip_Int> =IpToInt( "64.0.0.0 ")&&ip_Int <=IpToInt( "126.255.255.255 "))||(ip_Int> =IpToInt( "58.0.0.0 ")&&ip_Int <=IpToInt( "60.255.255.255 ")))
{
this.country= "网络保留地址 ";
this.local= " ";
nRet=1;
}