qqwry(wrydat)

http://www.itjxue.com  2023-02-16 10:51  来源:未知  点击次数: 

php怎么和qqwry.dat连接判断

r?php

define('__QQWRY__' , dirname(__FILE__)."/QQWry.Dat");

//echo __QQWRY__;

class QQWry{

var $StartIP=0;

var $EndIP=0;

var $Country='';

var $Local='';

var $CountryFlag=0; // 标识 Country位置

// 0x01,随后3字节为Country偏移,没有Local

// 0x02,随后3字节为Country偏移,接着是Local

// 其他,Country,Local,Local有类似的压缩。可能多重引用。

var $fp;

var $FirstStartIp=0;

var $LastStartIp=0;

var $EndIpOff=0 ;

function getStartIp($RecNo){

$offset=$this-FirstStartIp+$RecNo * 7 ;

@fseek($this-fp,$offset,SEEK_SET) ;

$buf=fread($this-fp ,7) ;

$this-EndIpOff=ord($buf[4]) + (ord($buf[5])*256) + (ord($buf[6])* 256*256);

$this-StartIp=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256);

return $this-StartIp;

}

function getEndIp(){

@fseek ( $this-fp , $this-EndIpOff , SEEK_SET ) ;

$buf=fread ( $this-fp , 5 ) ;

$this-EndIp=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256);

$this-CountryFlag=ord ( $buf[4] ) ;

return $this-EndIp ;

}

function getCountry(){

switch ( $this-CountryFlag ) {

case 1:

case 2:

$this-Country=$this-getFlagStr ( $this-EndIpOff+4) ;

//echo sprintf('EndIpOffset=(%x)',$this-EndIpOff );

$this-Local=( 1 == $this-CountryFlag )? '' : $this-getFlagStr ( $this-EndIpOff+8);

break ;

default :

$this-Country=$this-getFlagStr ($this-EndIpOff+4) ;

$this-Local=$this-getFlagStr ( ftell ( $this-fp )) ;

}

}

function getFlagStr ($offset){

$flag=0 ;

while(1){

@fseek($this-fp ,$offset,SEEK_SET) ;

$flag=ord(fgetc($this-fp ) ) ;

if ( $flag == 1 || $flag == 2 ) {

$buf=fread ($this-fp , 3 ) ;

if ($flag==2){

$this-CountryFlag=2;

$this-EndIpOff=$offset - 4 ;

}

$offset=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])* 256*256);

}

else{

break ;

}

}

if($offset12)

return '';

@fseek($this-fp , $offset , SEEK_SET ) ;

return $this-getStr();

}

function getStr ( )

{

$str='' ;

while ( 1 ) {

$c=fgetc ( $this-fp ) ;

//echo "$cn" ;

if(ord($c[0])== 0 )

break ;

$str.= $c ;

}

//echo "$str n";

return $str ;

}

function qqwry ($dotip='') {

if(!$dotip)return;

if(ereg("^(127)",$dotip)){$this-Country=本地网络;return;}

elseif(ereg("^(192)",$dotip)) {$this-Country=局域网;return;}

$nRet;

$ip=$this-IpToInt ( $dotip );

$this-fp= fopen(__QQWRY__, "rb");

if ($this-fp == NULL) {

$szLocal= "OpenFileError";

return 1;

}

@fseek ( $this-fp , 0 , SEEK_SET ) ;

$buf=fread ( $this-fp , 8 ) ;

$this-FirstStartIp=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256);

$this-LastStartIp=ord($buf[4]) + (ord($buf[5])*256) + (ord($buf[6])*256*256) + (ord($buf[7])*256*256*256);

$RecordCount= floor( ( $this-LastStartIp - $this-FirstStartIp ) / 7);

if ($RecordCount = 1){

$this-Country="FileDataError";

fclose($this-fp) ;

return 2 ;

}

$RangB= 0;

$RangE= $RecordCount;

// Match ...

while ($RangB $RangE-1)

{

$RecNo= floor(($RangB + $RangE) / 2);

$this-getStartIp ( $RecNo ) ;

if ( $ip == $this-StartIp )

{

$RangB=$RecNo ;

break ;

}

if ($ip$this-StartIp)

$RangB= $RecNo;

else

$RangE= $RecNo;

}

$this-getStartIp ( $RangB ) ;

$this-getEndIp ( ) ;

if ( ( $this-StartIp = $ip ) ( $this-EndIp = $ip ) ){

$nRet=0 ;

$this-getCountry ( ) ;

//这样不太好..............所以..........

$this-Local=str_replace("(我们一定要解放台湾!!!)", "", $this-Local);

}

else{

$nRet=3 ;

$this-Country='未知' ;

$this-Local='' ;

}

fclose ( $this-fp );

$this-Country=preg_replace("/(CZ88.NET)|(纯真网络)/","",$this-Country);

$this-Local=preg_replace("/(CZ88.NET)|(纯真网络)/","",$this-Local);

//////////////看看 $nRet在上面的值是什么0和3,于是将下面的行注释掉

return $nRet ;

//return "$this-Country $this-Local";#如此直接返回位置和国家便可以了

}

function IpToInt($Ip) {

$array=explode('.',$Ip);

$Int=($array[0] * 256*256*256) + ($array[1]*256*256) + ($array[2]*256) + $array[3];

return $Int;

}

}

function GetIP(){//获取IP

return $_SERVER[REMOTE_ADDR]?$_SERVER[REMOTE_ADDR]:$GLOBALS[HTTP_SERVER_VARS][REMOTE_ADDR];

}

?

根据ip获取物理地址

?php

include_once('./qqwry.php');

$QQWry=new QQWry;

function get_real_ip(){

$ip=false;

if(!empty($_SERVER["HTTP_CLIENT_IP"])){

$ip = $_SERVER["HTTP_CLIENT_IP"];

}

if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);

if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }

for ($i = 0; $i count($ips); $i++) {

if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {

$ip = $ips[$i];

break;

}

}

}

return $ip;

}

function is_ip($str) {

$ip = explode(".", $str);

if (count($ip)4 || count($ip)4) return 0;

foreach($ip as $ip_addr) {

if ( !is_numeric($ip_addr) ) return 0;

if ( $ip_addr0 || $ip_addr255 ) return 0;

}

return 1;

}

if($_POST['ip']){

$ip=$_POST['ip'];

preg_match('/((\w|-)+\.)+[a-z]{2,4}/i',$ip) ? $ip=gethostbyname($ip) : $ip;

if(is_ip($ip)){

$ifErr=$QQWry-QQWry($ip);

echo "您查询的IP:nbsp;".$ip."brIP详细地址:nbsp;".$QQWry-Country.$QQWry-Local."br/";

}else

{

echo "囧,你输入的IP,511Cha居然不能查询到!";

}

}else{

$ip=get_real_ip();

if (($_SERVER["HTTP_CLIENT_IP"]) or ($_SERVER['HTTP_X_FORWARDED_FOR'])){

$ifErr=$QQWry-QQWry($ip);

echo "您的真实P是".$ip."nbsp;nbsp;nbsp;nbsp;nbsp;来自".$QQWry-Country.$QQWry-Local."br/";

$ip=$_SERVER['REMOTE_ADDR'];

$ifErr=$QQWry-QQWry($ip);

echo "您的代理IP是".$ip."nbsp;nbsp;nbsp;nbsp;nbsp;来自".$QQWry-Country.$QQWry-Local;

}

else{

$ip=$_SERVER['REMOTE_ADDR'];

$ifErr=$QQWry-QQWry($ip);

echo "您的IP是:".$ip."nbsp;nbsp;nbsp;nbsp;nbsp;来自:".$QQWry-Country.$QQWry-Local;

}

}

?

也可以向楼上说插入数据库中,不过qqwry.dat最新版有9m多……

用什么可以打开QQwry.dat文件?

QQWry.Dat是显IP版QQ(彩虹外挂等),纯真IP数据库查询器等的IP数据库文件。打开方法如下:

1、dat文件有很多种类型大多数情况下,.dat文件是程序使用的数据,它只是开发者为了清楚文件的意思而自己定义的,也可以命名成别的扩展名。

2、可以用任何编辑工具新建文件,将其命名为.dat。所以,.dat文件的打开工具也不一样,比如,有些其实是文本文件,只是将扩展名改写成.dat,就可以用文本编辑工具打开;

3、最常见的dat文件还有VCD影音文件,这种文件可以用解霸,暴风影音,Windows meadia player之类的播放软件打开(这个情况们碰到比较常见)。

QQWry.Dat是啥文件能不能删掉啊

QQWry.Dat是显IP版QQ(彩虹外挂等),纯真IP数据库查询器等的IP数据库文件 可以通过下载纯真IP数据库查询器来得到这个文件,纯真IP数据库查询器拥有在线更新IP库功能 ,尽量不要删

(责任编辑:IT教学网)

更多

推荐时间特效文章