; mIRC IP Tracer v4.20 ; by SeeknDestroy/SanitariuM ; Usage : /trace nickname ; /trace IP ; /trace host ; change #chan1,#chan2 below etc. to any channels you want to ; allow other users to use this script. Command is the same ; as it is for you, except it's .trace instead of /trace on *:text:.trace *:#chan1,#chan2:{ if (!$hget(trace,inprogress)) { if ((*.users.undernet.org iswm $$2) || (*.users.undernet.org iswm $address($$2,2))) { msg $chan [Error] You can't look up the address of a +x user, $nick $+ . } else if (!$hget(trace,input)) { hadd -mu30 trace chan $chan trace $$2 } else { hadd -mu3 trace inprogress 1 msg $Chan [Error] Trace already in progress. Try again in a few moments. } } } alias trace { hadd -mu30 trace input $$1 if ($comchan($$1,1)) { hadd -mu15 trace nick $$1 } sockclose trace if ((*.users.undernet.org iswm $$1) || (*.users.undernet.org iswm $address($$1,2))) { echo -a Trace Error : You can't look up the address of a +x user. } else if ($regex($$1,/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/)) { hadd -mu trace end $chr(37) http://www.cyberabuse.org/whois/ sockopen trace whois.cyberabuse.org 43 hadd -mu15 trace ip $$1- } else { dns $$1 } } on *:dns:{ if ($dns(0).ip) { hadd -mu15 trace ip $dns(0).ip if ($dns(0).addr) { hadd -mu15 trace host $v1 } if ($dns(0).nick) { hadd -mu15 trace nick $v1 } hadd -mu trace end $chr(37) http://www.cyberabuse.org/whois/ ; echo -a Connecting to www.cyberabuse.org/whois/ to look up $hget(trace,ip) $+ ... sockopen trace whois.cyberabuse.org 43 } else { if ($hget(trace,chan)) { msg $v1 [Error] Invalid IP, Host, or Nickname. ( $+ $hget(trace,input) $+ ) } else { echo -a Invalid IP, Host, or Nickname. } hfree trace } } on *:sockopen:trace: { if ($sockerr) { echo -a Socket Error connecting to CyberAbuse Whois server sockclose trace } else { if ($hget(trace,nick)) { hadd -mu15 trace output [Nick] $v1 } if ($hget(trace,host)) { hadd -mu15 trace output $hget(trace,output) [Host] $hget(trace,host) } hadd -mu15 trace output $hget(trace,output) [IP] $hget(trace,ip) sockwrite -nt trace $hget(trace,ip) } } on *:sockread:trace: { sockread %data if (%data == $hget(trace,end)) { if ($hget(trace,chan)) { msg $v1 $hget(trace,output) } else { echo -a $hget(trace,output) } hfree trace sockclose trace } elseif ($left(%data,1) != $chr(37)) { tokenize 32 %data if (*IP*range*:* iswm %data) { .echo -q $regex($4-6,/^(\S+)(\S+?)\s-\s\1\S+$/) hadd -mu15 trace output $hget(trace,output) [Mask] $regml(1) $+ $chr(42) hadd -mu15 trace output $hget(trace,output) [Range] $4-6 } else if (*Network*name*:* iswm %data) { hadd -mu15 trace output $hget(trace,output) [Network] $4 } else if (*Infos*:* iswm %data) { if (!$hget(trace,info)) { hadd -mu15 trace output $hget(trace,output) [Info] $3- hadd -mu15 trace info 1 } } else if (*Country*:* iswm %data) { hadd -mu15 trace output $hget(trace,output) [Country] $3- } else if (*Abuse*E-mail*:* iswm %data) { hadd -mu15 trace output $hget(trace,output) [E-Mail] $4 } else if (*Source*:* iswm %data) { hadd -mu15 trace output $hget(trace,output) [Source] $3 } } }