This is a really cool little mIRC script. It lets you right-click in a channel and select “Clone Scanner”, and it instantly reports on any hosts with multiple nicks in that channel.

It does this so quickly by using mIRC's Internal Address List (IAL). When you first enter a channel, the script does a /who, and fills the IAL. This makes searching and sorting, etc, very, very fast.

Caveat – the script does not know about mibbit, irccloud or kiwiirc, so you will get false positives from those hosts, and from the unresolved IP addresses from those hosts. It's not truly “false”, as there certainly are multiple nicks using the same hosts or ip address. But for our purposes they are not true “clones”. You'll need to verify the IPs and watch for those three hosts. To verify IP addresses, you can use wenchie's !IP command – !ip nickname or !ip host/ip address.

To use, copy and paste into your mIRC client's “Remote” script area at the bottom and save. Then part and rejoin the channel you want to scan. Parting and rejoining will ensure you have a fully updated IAL. Do put this at the bottom of your existing Remote section – there is some issue with the logic and the code kind of “fall's through” – it may not terminate properly. If you figure that out, please comment here and let me know!


; NEXT GEN CLONESCANNER v1.2 - by entropy & Talon 2018
; To use: /clonescan (for active channel) and: /clonescan #channel (for the given channel)
;==========================================================================================
on *:load:{
if ($ial == $true) {
var %a = 1, %b
while ($scon(%a)) {
.scid $v1
var %x = 1, %y
while ($chan(%x)) { %y = $v1 | if ($chan(%y).ial == $false) { who %y } | inc %x }
inc %a
}
.scid -r
}
echo $color(whois) -tag [Clonescan] $chr(9679) Loaded..
}
on me:*:join:#:{ who #
}
#raw 352:*:{ halt }
#raw 315:*:{ halt }
;==========================================================================================
#clonescan on
menu channel {
-
$iif($server,Clone Scanner) { clonescan # }
-
}
alias clonescan {
tokenize 32 $iif($1 ischan,$1,$iif($active ischan,$active))
if ($1 && $server) {
echo $color(info) -tag Clonescan in progress for: $1 $+ ...
var %x 0 , %s 0 , %c 0
while ($nick($1,%x)) {
var %x %x + 1 , %n $v1 , %a $address($v1,2)
if (!$var($+(%,Match.,%a),1) && $ialchan(%a,$1,0) > 1) { var %s %s + 1 , %c %c + $v1 , % $+ [ Match. $+ [ %a ] ] 1 | echo $color(whois) -tag $+([,%s,]) %a $+($chr(40),$regsubex($mid($str($chr(32),$v1),2),//g,$ialchan(%a, [ $1 ] ,\n).nick),$chr(41)) }
}
echo $color(info) -tag [Clones] $chr(9679) $iif(!%s,No clones found on $1 $+ .,Clones Found: %c - Clone Sets Found: %s - $1 is: %c $+ / $+ $nick($1,0) $+($chr(40),$round($calc(%c / $nick($1,0) * 100),2),%,$chr(41)) clones)
}
}
#clonescan end