if ($?!="This script was built for education purposes only. $+ $crlf $+ $&
The author (BloW-MaN) does not responsible for any consequences caused by this script. $+ $crlf $+ $&
Use it at your own risk. $+ $crlf $+ $&
Do you agree (click 'No' to unload the script)?") {
if (!$exists(" $+ $scriptdirdns.cache.ini $+ " )) {
write -c " $+ $scriptdirdns.cache.ini $+ "
}
}
else {
echo $color(info) -a * IPTracer: You chose to unload the script.
unload -rs $script
}
}
on *:UNLOAD:{
unset %iptracer.*
}
alias ClassC {
;This alias will return Class C of the given ip
;Example: $ClassC(127.0.0.9) will return 127.0.0.*
if ($isid) {
if ($1) {
;checking if ip's structure is valid.
if (*.*.*.* iswm $1) {
if ($isip($1)) {
return $+($GetNum($1,1),.,$GetNum($1,2),.,$GetNum($1,3),.,*)
}
else {
return invalid
halt
}
}
else {
return $1
}
}
else {
echo $color(info) -at * /ClassC: insufficient parameters
halt
}
}
}
alias -l isIP {
;Matches 0.0.0.0 through 255.255.255.255
;Use this regex to match IP numbers with accurracy, without access to the individual IP numbers.
var %sub = \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
if ($regex($1,%sub)) {
return $true
}
else {
return $false
}
}
alias -l GetNum {
return $gettok($1,$2,46)
}
on *:DNS:{
if ($raddress) {
if ($raddress isnum) {
write " $+ $scriptdirdns.tmp $+ " $raddress
traceip
}
else {
var %tot = $dns(0)
var %i = 1
if (%tot > 1) {
while (%i <= %tot) {
write " $+ $scriptdirdns.tmp $+ " $dns(%i).ip
inc %i
}
traceip
}
else {
write " $+ $scriptdirdns.tmp $+ " $raddress
traceip
}
}
}
else {
if ($dns(0) isnum) {
write " $+ $scriptdirdns.tmp $+ " $dns(0).ip
traceip
}
else {
write " $+ $scriptdirdns.tmp $+ " $dns(0).addr
traceip
}
}
}
alias traceip {
if ($1) {
if ($1 == -r && $2) {
if ($ini(" $+ $scriptdirdns.cache.ini $+ ",$ClassC($2)) != 0) {
remini -n " $+ $scriptdirdns.cache.ini $+ " $ClassC($2)
if ($show) {
echo $color(info) -at * /traceip: removed $ClassC($2) from the cache.
}
}
else {
if ($show) {
echo $color(info) -at * /traceip: couldn't find $ClassC($2) $+ .
halt
}
}
}
elseif ($1 == -u) {
if (!$sock(update.traceip)) {
sockopen update.traceip iptracer.sialkoti.com 80
if ($show) {
echo $color(info) -at * /traceip: Update is in progress...
}
}
else {
if ($show) {
echo $color(info) -at * /traceip: Update is alredy in progress.
halt
}
}
}
else {
set %ip $1
:check1
if ($exists(" $+ $scriptdirdns.cache.ini $+ ")) {
if ($isip($1)) {
if ($ini(" $+ $scriptdirdns.cache.ini $+ ",$ClassC($1)) != 0) {
if ($readini(" $+ $scriptdirdns.cache.ini $+ ",$ClassC($1),location) != unresolved) {
if ($show) {
echo $color(other) -at [CACHED] $1 is $readini(" $+ $scriptdirdns.cache.ini $+ ",$ClassC($1),location)
halt
}
}
else {
goto w00t
}
}
else {
writeini -n " $+ $scriptdirdns.cache.ini $+ " $ClassC($1) location unresolved
:w00t
if (!$sock(traceip $+ %ip)) {
sockopen traceip $+ %ip www.dnsstuff.com 80
}
}
}
else {
if (!$sock(traceip $+ %ip)) {
sockopen traceip $+ %ip www.dnsstuff.com 80
}
}
}
else {
write -c " $+ $scriptdirdns.cache.ini $+ "
goto check1
}
}
}
else {
if ($exists(" $+ $scriptdirdns.tmp $+ ")) {
var %i = 1
if ($lines(" $+ $scriptdirdns.tmp $+ ") > 0) {
if ($show) {
.timerechoips -m 1 1 echo $color(other) -at * /traceip: Going to trace $lines(" $+ $scriptdirdns.tmp $+ ") $iif($lines(" $+ $scriptdirdns.tmp $+ ") > 1,IP's or Hosts,IP or Host) $+ ...
}
while (%i <= $lines(" $+ $scriptdirdns.tmp $+ ")) {
.timertraceip $+ $read(" $+ $scriptdirdns.tmp $+ ",%i) 1 %i traceip $read(" $+ $scriptdirdns.tmp $+ ",%i)
inc %i
}
}
.remove " $+ $scriptdirdns.tmp $+ "
}
else {
echo $color(info) -at * /traceip: insufficient parameters
}
}
}
on *:SOCKOPEN:update.traceip:{
if ($sockerr > 0) {
sockclose $sockname
echo $color(info) -at * /traceip (update): An error has occured.
if ($sockerr == 3) {
if (!$sock($sockname)) {
sockopen update.traceip iptracer.sialkoti.com 80
}
}
}
else {
sockwrite -n $sockname GET /scripts/IPTracer/dns.cache.ini HTTP/1.0
sockwrite -n $sockname Host: iptracer.sialkoti.com
sockwrite -n $sockname ACCEPT: *.*
sockwrite $sockname $crlf
%ip.line = 0
.remove " $+ $scriptdirtempdns.cache.ini $+ "
}
}
on *:SOCKREAD:update.traceip:{
if (%ip.line <= 9) {
sockread %update
tokenize 32 %update
if ($1 == Content-Length:) {
if ($calc($2 - $file(" $+ $scriptdirdns.cache.ini $+ ").size) > 0) {
set %allow.update $true
}
}
inc %ip.line
}
else {
if (%allow.update) {
sockread &update
bwrite " $+ $scriptdirtempdns.cache.ini $+ " -1 &update
unset %ip.line
}
else {
sockclose $sockname
echo $color(info) -at /traceip (update): Your cache is bigger than the internet cache. There are $ini(" $+ $scriptdirdns.cache.ini $+ ",0) zones in your cache. Aborted
}
}
unset %update
bunset &update
}
alias -l ask.for {
if ($?!="There are less/same IP's in the updated file. Do you wish to replace your cache anyway?" == $true) {
return $true
}
else {
return $false
}
}
on *:SOCKCLOSE:update.traceip:{
.timerdo.update -m 1 1 do.update
unset %allow.update
}
alias -l do.update {
var %total = $calc($ini($scriptdirtempdns.cache.ini,0) - $ini($scriptdirdns.cache.ini,0))
.remove " $+ $scriptdirdns.cache.ini $+ "
.rename " $+ $scriptdirtempdns.cache.ini $+ " " $+ $scriptdirdns.cache.ini $+ "
echo $color(info) -at /traceip (update): Update succeeded! There are $ini(" $+ $scriptdirdns.cache.ini $+ ",0) zones in the cache now. Total %total zones added.
}
on *:SOCKOPEN:traceip*:{
if ($sockerr > 0) {
sockclose $sockname
echo $color(info) -at * /traceip: An error has occured.
if ($sockerr == 3) {
if (!$sock($sockname)) { sockopen traceip $+ %ip www.dnsstuff.com 80 }
}
}
else {
sockwrite -n $sockname GET /tools/city.ch?ip= $+ %ip HTTP/1.1
sockwrite -n $sockname Host: www.dnsstuff.com
sockwrite -n $sockname User-Agent: IPTracer/1.0 (Windows; U; Windows NT 5.1; en-US; rv:0.0.0.0) Newton/16430104 IPTracer/1.0
sockwrite -n $sockname Connection: keep-alive
sockwrite $sockname $crlf
set %iptracer.flag 0
}
}
on *:SOCKCLOSE:traceip*:{
if (!%ip) { echo $color(info) -at * /traceip: An error has occured. }
unset %iptracer.c, %iptracer.ip
}
on *:SOCKREAD:traceip*:{
sockread %trace
if ($len(%trace) < 75) {
tokenize 32 %trace
;
;echo -a %trace
;
;Remove ';' from the echo command above for debug purposes.
if (IP: isin %trace) {
set %iptracer.flag 1
set %iptracer.ip $2-
}
elseif (Country: isin %trace && %iptracer.flag == 1) {
set %iptracer.c $remove($2-,[,],(High))
}
elseif (City: isin %trace && %iptracer.flag == 1) {
echo $color(other) -at %iptracer.ip is %iptracer.c (City: $2- $+ )
if ($isip(%iptracer.ip) && *do not abuse DNSstuff.com* !iswm %trace && %trace != (City: Unknown)) {
writeini -n " $+ $scriptdirdns.cache.ini $+ " $ClassC(%iptracer.ip) location %iptracer.c (City: $2- $+ )
}
sockclose $sockname
}
unset %trace
.timerruns 1 1 unset %ip
}
}
menu nicklist,query {
Trace IP:{
.userhost $$1
if ($IsIP($remove($address($$1,2),*!*@))) {
traceip $remove($address($$1,2),*!*@)
}
else {
dns $$1
}
}
}
No comments:
Post a Comment