<%
'=======================================
'반환 IP 정보 disp_ipaddressdata (IP, 0)
'=======================================
함수 look_ip (IP)
희미한 ...
'클래스 객체 설정
스테이션 세트 = 새로운 tqqwry
'검색을 시작하고 검색 결과를 반환하십시오
'QQWRY (IP) 반환 값을 기반으로 IP 주소가 데이터베이스에 존재하는지 여부를 결정할 수 있으며 존재가없는 경우 다른 작업을 수행 할 수 있습니다.
'예를 들어, 당신은 사냥으로 데이터베이스를 만들었습니다. 나는 여기에서 자세히 설명하지 않을 것입니다.
iptype = wry.qqwry (IP)
'국가 : 국가 및 지역 분야
'지역 주 : 지방 및 도시 및 기타 정보 분야
look_ip = wry.country & & wry.localstr
'' 'look_ip = wry.country &
엔드 기능
'=======================================
'IP 정보 js 호출로 돌아갑니다
'=======================================
함수 disp_ipaddressdata (IP, 스타일)
딤배주, iltype
스테이션 세트 = 새로운 tqqwry
iptype = wry.qqwry (IP)
케이스 스타일을 선택하십시오
사례 1 disp_ipaddressdata = ip
사례 2 disp_ipaddressdata = station.country
사례 3 disp_ipaddressdata = wry.localstr
'CASE disp_ipaddressdata = wry.country & & wry.localstr
else disp_ipaddressdata = wry.country
종료 선택
엔드 기능
'=======================================
'QQWRY 정보로 돌아갑니다
'=======================================
함수 wryinfo ()
Dimover, IPTYPE, QQWRY_TEM (0), QQWRY_TEM1 (1)
'클래스 객체 설정
스테이션 세트 = 새로운 tqqwry
iptype = wry.qqwry (255.255.255.254)
'데이터베이스 버전 정보를 읽으십시오
qqwry_tem (0) = wry.country & & wry.localstr
'데이터베이스 IP 주소 수를 읽으십시오
qqwry_tem1 (1) = wry.recordCount + 1
wryinfo = qqwry_tem (0) & qqwry_tem1 (1)
엔드 기능
클래스 tqqwry
'=======================================
'가변 평판
'=======================================
Dim Country, Localstr, Buf, 오프셋
Private Startip, Endip, Countryflag
공개 qqwryfile
공개 FirstStartip, LastStartip, RecordCount
개인 스트림, Endipoff
'=======================================
'클래스 모듈 초기화
'=======================================
private sub class_initialize
국가 =
localstr =
startip = 0
endip = 0
CountryFlag = 0
FirstStartip = 0
LastStartip = 0
endipoff = 0
qqwryfile = server.mappath (/data/qqwry.dat) 'QQ Innocent IP 인벤토리 경로, 경로 변경
종료 서브
'=======================================
'IP 주소는 정수로 변환됩니다
'=======================================
기능 iptoint (IP)
Dim iparray, i
iparray = split (ip,., -1)
i = 0 ~ 3의 경우
isnumeric (iparray (i))이 아니라면 iparray (i) = 0
if cint (iparray (i)) <0 thatn iparray (i) = abs (cint (iparray (i)))
Cint (iparray (i))> 255 If Iparray (i) = 255
다음
iPtoint = (cint (iparray (0))*256*256*256) + (cint (iparray (1))*256*256) + (cint (iparray (2))*256) + Cint (iparray (3) 치유법
엔드 기능
'=======================================
'우리의 정수는 IP 주소를 반전시킵니다
'=======================================
함수 inttoip (intvalue)
p4 = int 값 -fix (intvalue/256)*256
intvalue = (intvalue-p4)/256
p3 = int 값 -fix (intvalue/256)*256
intvalue = (intvalue-p3)/256
p2 = int 값 -fix (intvalue/256)*256
intvalue = (intvalue -p2)/256
p1 = int 값
inip = cstr (p1) & & cstr (p4).
엔드 기능
'=======================================
'시작 IP 위치를 얻으십시오
'=======================================
개인 기능 getstartip (recno)
오프셋 = FirstStartip + recno * 7
stream.Position = 오프셋
buf = stream.read (7)
endipoff = ASCB (MIDB (BUF, 5, 1)) + (ASCB (MIDB (BUF, 6, 1))*256) + (ASCB (MIDB (BUF, 7, 1))*256*256)
STARTIP = ASCB (MIDB (BUF, 1, 1)) + (ASCB (MIDB (BUF, 2, 1))*256) + (ASCB (MIDB (BUF, 3, 1))*256*256) + (ASCB (Midb (Buf, 4, 1))*256*256*256)
getStartip = startip
엔드 기능
'=======================================
'최종 IP 위치를 얻으십시오
'=======================================
개인 기능 geetedip ()
stream.position = endipoff
buf = stream.read (5)
endip = ASCB (MIDB (BUF, 1, 1)) + (ASCB (MIDB (BUF, 2, 1))*256) + (ASCB (MIDB (BUF, 3, 1))*256*256) + (ASCB (Midb (Buf, 4, 1))*256*256*256)
CountryFlag = ASCB (MIDB (Buf, 5, 1))
getEndip = endip
엔드 기능
'=======================================
'국가 및 지방 및 도시를 포함한 지역 정보 받기
'=======================================
개인 서브 getcountry (IP)
if (countryflag = 1 또는 countryflag = 2)
Country = getflagstr (endipoff + 4)
CountryFlag = 1이면
localstr = getflagstr (stream.Position)
'다음은 데이터베이스 버전 정보를 얻는 데 사용됩니다.
IP> = iptoint (255.255.255.0)이고 ip <= iptoint (255.255.255.255)라면
localstr = getflagstr (endipoff + 21)
Country = getflagstr (Endipoff + 12)
끝 If
또 다른
localstr = getflagstr (endipoff + 8)
끝 If
또 다른
Country = getflagstr (endipoff + 4)
localstr = getflagstr (stream.Position)
끝 If
'데이터베이스에서 쓸모없는 정보를 필터링하십시오
Country = Trim (국가)
localstr = trim (localstr)
악기 (Country, Cz88.net) 인 경우 Country =
악기 (localstr, cz88.net) 인 경우 localstr =
종료 서브
'=======================================
'IP 주소 식별자를 얻으십시오
'=======================================
개인 기능 getflagstr (오프셋)
딤 깃발
플래그 = 0
전체 (참)
stream.Position = 오프셋
flag = ascb (stream.Read (1))
if (flag = 1 또는 flag = 2)
buf = stream.read (3)
if (flag = 2) 그러면
CountryFlag = 2
endipoff = 오프셋 -4
끝 If
오프셋 = ASCB (MIDB (BUF, 1, 1)) + (ASCB (MIDB (BUF, 2, 1))*256) + (ASCB (MIDB (BUF, 3, 1))*256*256)
또 다른
출구
끝 If
고리
if (오프셋 <12) 그러면
getflagstr =
또 다른
stream.Position = 오프셋
getflagstr = getstr ()
끝 If
엔드 기능
'=======================================
'문자열 정보를 얻으십시오
'=======================================
개인 기능 getstr ()
희미한 c
getstr =
전체 (참)
C = ASCB (stream.Read (1))
(c = 0)이면 종료하십시오
'두 번째로, 높은 바이트는 캐릭터의 낮은 바이트 합성과 함께 결합됩니다.
C> 127이면
스트림이면 출구가 수행됩니다
getstr = getstr & chr (ascw
또 다른
getst = getstr & chr (c)
끝 If
고리
엔드 기능
'=======================================
'핵심 함수, IP 검색을 실행하십시오
'=======================================
공개 기능 QQWRY (DOTIP)
Dim IP, NRET
Dim Rangb, 범위, 범위, 범위
ip = iptoint (dotip)
set stame = createobject (adodb.stream)
stream.Mode = 3
stream.type = 1
스트림
stream.loadfromfile qqwryfile
stream.Position = 0
buf = stream.read (8)
FirstStartip = ASCB (MIDB (BUF, 1, 1)) + (ASCB (MIDB (MIDB (BUF, 2, 1))*256) + (ASCB (MIDB (BUF, 3, 1))*256*256) + (ASCB (Midb (Buf, 4, 1))*256*256*256)
laststartip = ASCB (MIDB (BUF, 5, 1)) + (ASCB (MIDB (MIDB (BUF, 6, 1))*256) + (ASCB (MIDB (BUF, 7, 1))*256*256) + (ASCB (Midb (Buf, 8, 1))*256*256*256)
recordCount = int
'데이터베이스에서 IP 주소를 찾을 수 없습니다
if (recordCount <= 1) 그러면
Country = 알 수 없습니다
qqwry = 2
종료 기능
끝 If
rangb = 0
범위 = 레코드 카운트
왜 (rangb <(범위 -1))
RANGB + 범위/2)
getstartip (recno) 전화
if (ip = startip) 그러면
rangb = Recino
출구
끝 If
if (ip> startip) 그러면
rangb = Recino
또 다른
범위 = recno
끝 If
고리
getstartip (rangb) 전화
getendip () 호출
if (startip <= ip) 및 (endip> = ip)
'찾을 수 없습니다
nret = 0
또 다른
' 정상
nret = 3
끝 If
GetCountry (IP)에 전화
qqwry = nret
엔드 기능
'=======================================
'클래스 엔드
'=======================================
개인 sub class_terminate
다음에 오류가 재개됩니다
stream.close
err. err. clear
스트림 = 아무것도 설정하지 않습니다
종료 서브
수업 종료
%>