; -------------------------------------
; --- Tor-Be-Gone ---
; --- By WTSh4rK @ irc.undernet.org ---
; --- Version 1.1.1 ---
; -------------------------------------
;
; --- Change Log ---
;
; 20.02.2010: The script no longer reads from the csv file, all IP addresses are stored in a hash table.
; 20.02.2010: Update routine added, csv file can now be downloaded in mirc and added to hash more easily.
; 20.02.2010: Old IP's are kept in the hash table for 2 weeks and will be removed if not updated, new IP's are added.
; 24.02.2010: GUI Added
; 24.02.2010: Now multi channel
; 24.02.2010: Update now uses mirc socks to get ip list so no download of files are needed, 1 hour auto update added.
; 09.03.2010: IP's are now kept for 2 days only due to the use of dynamic IP's (too many IP's in the hash)
; 26.03.2010: Multi site updates added.
; 20.11.2010: Added a que system, users are added to a scan que and scanned one at a time, no more timers.
; 20.11.2010: Added DNS cache, no need to lookup addresses that have already been looked up now.
; 22.11.2010: dronebl.org DNSBL lookup added.
; 02.01.2011: Added Global Ignore List
; 08.02.2011: /who channel when addresses are not found in mirc IAL hidden, stops pnp whois window poping up.
; 08.02.2011: Other bug fixes and tidy up.
; 10.03.2011: Multi DNSBL lookup added.
;
; ------------------
on 1:START: {
unset %TBG*
set %tbg.ini $shortfn($mircdir $+ torips\) $+ tbg.ini
if (!$hget(tor.ips)) {
if (!$exists(torips)) { .mkdir torips }
if (!$exists(torips\tns_list.txt)) {
write torips\tns_list.txt torstat.xenobite.eu
write torips\tns_list.txt torstatus.all.de
write torips\tns_list.txt torstatus.asprion.org
write torips\tns_list.txt torstatus.blutmagie.de
write torips\tns_list.txt torstatus.cyberphunk.org
write torips\tns_list.txt torstatus.rueckgr.at
}
if (!$exists(torips\tor_ips.hash)) { .hmake tor.ips 1000 }
else { .hmake tor.ips 1000 | .hload -b tor.ips torips\tor_ips.hash }
If (!$window(@Tor-Be-Gone)) { window -k0nz @Tor-Be-Gone | .log on @Tor-Be-Gone -f Tor-Be-Gone.log }
echo 2 -st *** Tor-Be-Gone 1.1.1 By Skxawng (WTSh4rK @ irc.Undernet.org) http://spontan-you-us.net23.net
echo 2 -st *** Loaded IP Address Hash, $hget(tor.ips,0).item IP's in Hash, Running Update...
.timertbgQ 0 0.5 do.tbgQ
tbgupdate
}
}
on 1:DISCONNECT: {
If ($window(@tbgQ)) { window -c @tbgQ }
}
on 1:JOIN:#: {
if (($nick != $me) && ($istok($readini(torips\tbg.ini,lists,chans),$chan,172))) { addto.tbgQ $nick $chan }
}
on 1:OP:#: {
if (($opnick == $me) && ($istok($readini(torips\tbg.ini,lists,chans),$chan,172)) && ($readini(torips\tbg.ini,$chan,scan))) { tbgscan $chan }
}
on 1:SERVEROP:#: {
if (($opnick == $me) && ($istok($readini(torips\tbg.ini,lists,chans),$chan,172)) && ($readini(torips\tbg.ini,$chan,scan))) { tbgscan $chan }
}
alias addto.tbgQ {
if ($1 == $me) return
if (!%tbg.ini) set %tbg.ini $shortfn($mircdir $+ torips\) $+ tbg.ini
If (!$window(@tbgQ)) { window -h @tbgQ }
if (!$timer(tbgQ)) .timertbgQ 0 0.5 do.tbgQ
if (($1 == ¬StartScanChan) || ($1 == ¬FinishScanChan)) { aline @tbgQ $1 $2 $3 $4 $5 | return }
else aline @tbgQ $1 $2 ~ Waiting
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Added $1 from $2 to the Scan Que...
}
alias do.tbgQ {
if ($line(@tbgQ,0)) {
if ($gettok($line(@tbgQ,1),1,32) == ¬StartScanChan) {
echo 6 -t $gettok($line(@tbgQ,1),2,32) *** [TBG] Starting to scan $iif($gettok($line(@tbgQ,1),3,32),$gettok($line(@tbgQ,1),3,32),$gettok($line(@tbgQ,1),2,32)) for TOR $iif($readini(%tbg.ini,$gettok($line(@tbgQ,1),2,32),dnsbl),and DNSBL) please wait...
dline @tbgQ 1 | return
}
if ($gettok($line(@tbgQ,1),1,32) == ¬FinishScanChan) {
echo 6 -t $gettok($line(@tbgQ,1),2,32) *** [TBG] The TOR $iif($readini(%tbg.ini,$gettok($line(@tbgQ,1),2,32),dnsbl),and DNSBL) scan of $iif($gettok($line(@tbgQ,1),5,32),$gettok($line(@tbgQ,1),5,32),$gettok($line(@tbgQ,1),2,32)) has finished, Scanned $gettok($line(@tbgQ,1),3,32) users in $duration($calc($ctime - $gettok($line(@tbgQ,1),4,32)))
dline @tbgQ 1 | return
}
if (!$address($gettok($line(@tbgQ,1),1,32),5)) {
if ($chan($gettok($line(@tbgQ,1),2,32)).inwho) return
else {
.who $gettok($line(@tbgQ,1),2,32)
set %tbg.who $gettok($line(@tbgQ,1),2,32) %tbg.who
}
}
if ($gettok($line(@tbgQ,1),1,32) !ison $gettok($line(@tbgQ,1),2,32)) {
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Scan Que (not on channel)
dline @tbgQ 1 | .dns -c | return
}
if ($address($gettok($line(@tbgQ,1),1,32),5)) {
if ($gettok($line(@tbgQ,1),4,32) == Waiting) {
rline @tbgQ 1 $puttok($line(@tbgQ,1),Checking $ctime,4,32)
;echo -s $line(@tbgQ,1)
inc %¬tbg.scans
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Sending $gettok($line(@tbgQ,1),1,32) ( $+ $address($gettok($line(@tbgQ,1),1,32),5) $+ ) from $gettok($line(@tbgQ,1),2,32) for Check... [# $+ %¬tbg.scans $+ ]
torchk $gettok($line(@tbgQ,1),1,32) $gettok($line(@tbgQ,1),2,32)
}
if (($gettok($line(@tbgQ,1),4,32) == Checking) && ($calc($ctime - $gettok($line(@tbgQ,1),5,32)) > 10)) {
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Scan Que (timeout)
echo 2 -t @Tor-Be-Gone *** WARNING: Removed $gettok($line(@tbgQ,1),1,32) from the Scan Que (timeout)
dline @tbgQ 1 | .dns -c | return
}
}
}
}
alias TBGmakeDNSBL {
;$1 = IP address only
if ($remove($1,.) isnum) {
; ************************ DNSBL Scan List ************************
; ****** Add your rbl lists here with a space between each ********
; *****************************************************************
var %tbg.dnsbl_list = dnsbl.dronebl.org rbl.efnetrbl.org ircbl.ahbl.org dnsbl.swiftbl.org
; *****************************************************************
; *****************************************************************
; *****************************************************************
var %tbg.dnsbl_c = 1
while ($gettok(%tbg.dnsbl_list,%tbg.dnsbl_c,32)) {
if (%tbg.dnsbl) var %tbg.dnsbl = %tbg.dnsbl $+ ¬ $+ $gettok($1,4,46) $+ . $+ $gettok($1,3,46) $+ . $+ $gettok($1,2,46) $+ . $+ $gettok($1,1,46) $+ . $+ $gettok(%tbg.dnsbl_list,%tbg.dnsbl_c,32)
else var %tbg.dnsbl = $gettok($1,4,46) $+ . $+ $gettok($1,3,46) $+ . $+ $gettok($1,2,46) $+ . $+ $gettok($1,1,46) $+ . $+ $gettok(%tbg.dnsbl_list,%tbg.dnsbl_c,32)
;if ($window(@TBG-Status)) aline @TBG-Status $timestamp DNSBL Sent > $gettok($1,4,46) $+ . $+ $gettok($1,3,46) $+ . $+ $gettok($1,2,46) $+ . $+ $gettok($1,1,46) $+ . $+ $gettok(%tbg.dnsbl_list,%tbg.dnsbl_c,32)
.dns $gettok($1,4,46) $+ . $+ $gettok($1,3,46) $+ . $+ $gettok($1,2,46) $+ . $+ $gettok($1,1,46) $+ . $+ $gettok(%tbg.dnsbl_list,%tbg.dnsbl_c,32)
inc %tbg.dnsbl_c
}
return %tbg.dnsbl
}
else { echo -ts [TBG makeDNSBL Error] IP Address ONLY! | halt }
}
alias torchk {
;$1 = nick $2 = chan
if (($1 == $null) || ($2 == $null)) {
echo -t torchk error: incorrect argument
halt
}
if (!$timer(TBG.update)) { .timerTBG.update 0 3600 TBGupdate }
if (!$hget(tor.ips)) {
if (!$exists(torips\tor_ips.hash)) { hmake -s tor.ips 1000 }
else { .hmake -s tor.ips 1000 | .hload -bs tor.ips torips\tor_ips.hash }
}
if (!$hget(tbg_dns_cache)) {
hmake tbg_dns_cache 1000
if ($exists(torips\tbg_dns_cache.hash)) { hload tbg_dns_cache torips\tbg_dns_cache.hash }
}
if ($1 !ison $2) { dline @tbgQ 1 | halt }
set %tbg.ignore 1
var %tbg.ignore.list = $readini(%tbg.ini,lists,ignore)
while ($gettok(%tbg.ignore.list,%tbg.ignore,172)) {
if ($gettok(%tbg.ignore.list,%tbg.ignore,172) iswm $address($1,5)) {
dline @tbgQ 1
if ($window(@TBG-Status)) aline 3 @TBG-Status $timestamp On Ignore List, Removed $1 from the Tor Scan Que
halt
}
inc %tbg.ignore
}
if (($address($1,4) == *!*@*.users.undernet.org) || ($1 == X)) { dline @tbgQ 1 | if ($window(@TBG-Status)) aline 3 @TBG-Status $timestamp Undernet User... Removed $1 from the Tor Scan Que | halt }
if (($hget(tbg_dns_cache)) && ($hfind(tbg_dns_cache,$gettok($address($1,2),2,64)))) {
var %toraddress = $gettok($hget(tbg_dns_cache,$gettok($address($1,2),2,64)),1,32))
if ($window(@TBG-Status)) aline 7 @TBG-Status $timestamp $1 Address found $gettok($hget(tbg_dns_cache,$gettok($address($1,2),2,64)),1,32)) in DNS cache...
}
else { var %toraddress = $gettok($address($1,2),2,64) }
If (!$window(@Tor-Be-Gone)) { window -k0nz @Tor-Be-Gone | .log on @Tor-Be-Gone -f Tor-Be-Gone.log }
if ($remove(%toraddress,.) isnum) {
hadd -m torchk %toraddress $1 $+ ¬ $+ $2
if ($hfind(tor.ips,%toraddress,1)) {
set %tbg.type 1
kicktor $1 $2 %toraddress
hdel torchk %toraddress
if ($window(@TBG-Status)) aline 4 @TBG-Status $timestamp Tor Address found: ( $+ $1 $+ ) %toraddress in $2
dline @tbgQ 1
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $1 from the Tor Scan Que
halt
}
else {
hdel torchk %toraddress
if ($window(@TBG-Status)) aline 3 @TBG-Status $timestamp Not a Tor address ( $+ $1 $+ ) %toraddress in $2
if (!$readini(%tbg.ini,$2,dnsbl)) {
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Tor Scan Que
dline @tbgQ 1
halt
}
if (!$hget(TBG_DNSBL,$address($gettok($line(@tbgQ,1),1,32),2))) {
rline @tbgQ 1 $addtok($line(@tbgQ,1),$TBGmakeDNSBL(%toraddress),32)
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Sending $1 for DNSBL lookup...
halt
}
if ($gettok($hget(TBG_DNSBL,$address($gettok($line(@tbgQ,1),1,32),2)),1,32) == good) {
if ($window(@TBG-Status)) aline 3 @TBG-Status $timestamp $gettok($line(@tbgQ,1),1,32) not listed in DNSBL... (cached)
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Tor Scan Que
dline @tbgQ 1
halt
}
if ($gettok($hget(TBG_DNSBL,$address($gettok($line(@tbgQ,1),1,32),2)),1,32) == bad) {
if ($window(@TBG-Status)) aline 4 @TBG-Status $timestamp $gettok($line(@tbgQ,1),1,32) from $gettok($line(@tbgQ,1),2,32) listed in DNSBL (cached)
set %tbg.type 0
kicktor $gettok($line(@tbgQ,1),1,32) $gettok($line(@tbgQ,1),2,32) %toraddress [DNSBL] Your host is listed in a DNSBL
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Tor Scan Que
dline @tbgQ 1
halt
}
}
}
if (!$hget(torchk).size) hmake torchk 100
hadd -m torchk %toraddress $1 $+ ¬ $+ $2
.dns %toraddress
if ($window(@TBG-Status)) aline 7 @TBG-Status $timestamp $1 sent for DNS Lookup...
}
on 1:dns: {
if (($line(@tbgQ,0)) && ($dns(0).addr == $gettok($address($gettok($line(@tbgQ,1),1,32),2),2,64))) {
if (!$dns(1).ip) {
echo -t @Tor-Be-Gone DNS Error: Could not look up IP for ( $+ $gettok($hget(torchk,$dns(0).addr),1,172) $+ ) $dns(0).addr in $gettok($hget(torchk,$dns(0).addr),2,172)
echo 7 -t $gettok($hget(torchk,$dns(0).addr),2,172) *** DNS Error: Could not look up IP for ( $+ $gettok($hget(torchk,$dns(0).addr),1,172) $+ ) $dns(0).addr in $gettok($hget(torchk,$dns(0).addr),2,172)
if ($window(@TBG-Status)) aline 12 @TBG-Status $timestamp DNS Error: Could not look up IP for ( $+ $gettok($hget(torchk,$dns(0).addr),1,172) $+ ) $dns(0).addr in $gettok($hget(torchk,$dns(0).addr),2,172)
hdel torchk $dns(0).addr
dline @tbgQ 1
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($hget(torchk,$dns(1).addr),1,172) from the Tor Scan Que
halt
}
if (!$hget(tbg_dns_cache)) {
hmake tbg_dns_cache 1000
if ($exists(torips\tbg_dns_cache.hash)) { hload tbg_dns_cache torips\tbg_dns_cache.hash }
}
hadd tbg_dns_cache $dns(1).addr $dns(1).ip $ctime
hsave -o tbg_dns_cache torips\tbg_dns_cache.hash
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Adding $dns(1).addr $dns(1).ip to DNS cache...
if (($hfind(tor.ips,$dns(1).ip,1)) && ($gettok($hget(torchk,$dns(1).addr),1,172))) {
if ($window(@TBG-Status)) aline 4 @TBG-Status $timestamp Tor Address found: ( $+ $gettok($hget(torchk,$dns(1).addr),1,172) $+ ) $dns(1).addr ( $+ $dns(1).ip $+ )
set %tbg.type 1
kicktor $gettok($hget(torchk,$dns(1).addr),1,172) $gettok($hget(torchk,$dns(1).addr),2,172) $dns(1).ip
if ($window(@TBG-Status)) aline 4 @TBG-Status $timestamp Kicking and Banning $gettok($hget(torchk,$dns(1).addr),1,172) $gettok($hget(torchk,$dns(1).addr),2,172) $dns(1).ip
hdel torchk $dns(1)
dline @tbgQ 1
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($hget(torchk,$dns(1).addr),1,172) from the Tor Scan Que
}
else {
if ($window(@TBG-Status)) aline 3 @TBG-Status $timestamp Not a Tor address ( $+ $gettok($hget(torchk,$dns(1).addr),1,172) $+ ) $dns(1).addr ( $+ $dns(1).ip $+ )
hdel torchk $dns(0).addr
if (!$readini(%tbg.ini,$gettok($line(@tbgQ,1),2,32),dnsbl)) {
dline @tbgQ 1
halt
}
if (!$hget(TBG_DNSBL,$address($gettok($line(@tbgQ,1),1,32),2))) {
rline @tbgQ 1 $addtok($line(@tbgQ,1),$TBGmakeDNSBL($dns(1).ip),32)
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Sending $gettok($line(@tbgQ,1),1,32) for DNSBL lookup...
halt
}
if ($gettok($hget(TBG_DNSBL,$address($gettok($line(@tbgQ,1),1,32),2)),1,32) == good) {
if ($window(@TBG-Status)) aline 3 @TBG-Status $timestamp $gettok($line(@tbgQ,1),1,32) not listed in DNSBL... (cached)
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Tor Scan Que
dline @tbgQ 1
halt
}
if ($gettok($hget(TBG_DNSBL,$address($gettok($line(@tbgQ,1),1,32),2)),1,32) == bad) {
if ($window(@TBG-Status)) aline 4 @TBG-Status $timestamp Listed in DNSBL, Kicking and Banning $gettok($line(@tbgQ,1),1,32) from $gettok($line(@tbgQ,1),2,32) (cached)
set %tbg.type 0
kicktor $gettok($line(@tbgQ,1),1,32) $gettok($line(@tbgQ,1),2,32) $dns(1).ip) [DNSBL] Your host is listed in a DNSBL ( $+ $dns(0).addr $+ )
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Tor Scan Que
dline @tbgQ 1
halt
}
}
}
var %tbg.qdnsbl = $gettok($line(@tbgQ,1),6,32)
if (($line(@tbgQ,0)) && ($dns(0).addr isin %tbg.qdnsbl)) {
if (!$dns(1).ip) {
if ($window(@TBG-Status)) aline 3 @TBG-Status $timestamp $gettok($line(@tbgQ,1),1,32) not listed in DNSBL... ( $+ $dns(0).addr $+ )
if ($hget(TBG_DNSBL,$address($gettok($line(@tbgQ,1),1,32),2)) != bad) .hadd -mn1800 TBG_DNSBL $address($gettok($line(@tbgQ,1),1,32),2) good $ctime
var %tbg.qdnsbl = $remtok(%tbg.qdnsbl,$dns(0).addr,1,172)
if (%tbg.qdnsbl) rline @tbgQ 1 $puttok($line(@tbgQ,1),%tbg.qdnsbl,6,32)
if (!%tbg.qdnsbl) {
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Tor Scan Que
dline @tbgQ 1
}
}
else {
if ($window(@TBG-Status)) aline 4 @TBG-Status $timestamp $gettok($line(@tbgQ,1),1,32) from $gettok($line(@tbgQ,1),2,32) listed in DNSBL! ( $+ $dns(0).addr $+ )
set %tbg.type 0
kicktor $gettok($line(@tbgQ,1),1,32) $gettok($line(@tbgQ,1),2,32) $dns(0).addr [DNSBL] Your host is listed in a DNSBL ( $+ $dns(0).addr $+ )
.hadd -mn1800 TBG_DNSBL $address($gettok($line(@tbgQ,1),1,32),2) bad
if ($window(@TBG-Status)) aline @TBG-Status $timestamp Removed $gettok($line(@tbgQ,1),1,32) from the Tor Scan Que
dline @tbgQ 1
}
}
}
alias kicktor {
;$1 = Nick $2 = chan $3 = IP [$4- = Alt Kick Msg Over Ride]
var %tbg.cc = 1
var %tbg.chan.list = $readini(torips\tbg.ini,lists,chans)
If (!$window(@Tor-Be-Gone)) { window -k0nzg1 @Tor-Be-Gone | .log on @Tor-Be-Gone -f Tor-Be-Gone.log }
else window -g1 @Tor-Be-Gone
echo 4 -t @Tor-Be-Gone *** $iif(%tbg.type,Tor Address:,DNSBL Address:) $address($1,5) ( $+ $3 $+ ) found in $2
echo 4 -t $2 *** [# $+ %¬tbg.scans $+ ] $iif(%tbg.type,Tor Address:,DNSBL Address:) $address($1,5) ( $+ $3 $+ ) found in $2
while ($chan(%tbg.cc)) {
if ($istok(%tbg.chan.list,$chan(%tbg.cc),172)) {
if ((!%tbg.type) && (!$readini(torips\tbg.ini,$chan(%tbg.cc),dnsbl))) { goto tbgbypass }
if ($4-) { set %tbg.kick.msg [TBG $asctime(d mmm yyyy) $+ ] $4- }
else { set %tbg.kick.msg [TBG $asctime(d mmm yyyy) $+ ] [TOR] $replace($readini(torips\tbg.ini,$chan(%tbg.cc),banmsg),[ip],$3,[addr],$address($1,2),[chan],$chan(%tbg.cc),[nick],$1) }
if ($me isop $chan(%tbg.cc)) {
if ($1 ison $chan(%tbg.cc)) {
if (($network == undernet) && (r !isincs $chan($chan(%tbg.cc)).mode)) { var %tbg.mode = +rb | .timer 1 60 mode $chan(%tbg.cc) -r }
else var %tbg.mode = +b
raw -q mode $chan(%tbg.cc) %tbg.mode $address($1,2) $+ $crlf $+ kick $chan(%tbg.cc) $1 : %tbg.kick.msg
If (!$window(@Tor-Be-Gone)) { window -k0nzg1 @Tor-Be-Gone | .log on @Tor-Be-Gone -f Tor-Be-Gone.log }
else window -g1 @Tor-Be-Gone
echo 4 -t @Tor-Be-Gone *** $iif(%tbg.type,TOR Address:,DNSBL Address:) $address($1,5) ( $+ $3 $+ ) was kicked and banned from $chan(%tbg.cc) ( $+ %tbg.kick.msg $+ )
}
if (($readini(torips\tbg.ini,$chan(%tbg.cc),x)) && (X ison $chan(%tbg.cc)) && ($chan(%tbg.cc) == $2)) {
.msg X ban $chan(%tbg.cc) $address($1,2) $readini(torips\tbg.ini,$chan(%tbg.cc),xdays) $+ d 75 $left(%tbg.kick.msg,124) $+ $iif($len(%tbg.kick.msg) > 124,...)
}
}
if ($me !isop $chan(%tbg.cc)) {
if (($readini(torips\tbg.ini,$chan(%tbg.cc),x)) && (X ison $chan(%tbg.cc)) && ($chan(%tbg.cc) == $2)) {
.msg X ban $chan(%tbg.cc) $address($1,2) $readini(torips\tbg.ini,$chan(%tbg.cc),xdays) $+ d 75 $left(%tbg.kick.msg,124) $+ $iif($len(%tbg.kick.msg) > 124,...)
}
}
}
:tbgbypass
inc %tbg.cc
}
}
alias tbgscan {
if ((!$chan) && ($1)) { var %tbgscan = $1 }
elseif ($chan) { var %tbgscan $chan }
else { echo 4 -at TBGScan: Need to know what channel you want to scan. | halt }
set %tbgscan.count 1
var %tbg.scantime = $ctime
addto.tbgQ ¬StartScanChan %tbgscan
while ($nick(%tbgscan,%tbgscan.count,rv)) {
addto.tbgQ $nick(%tbgscan,%tbgscan.count,rv) %tbgscan
inc %tbgscan.count
}
addto.tbgQ ¬FinishScanChan %tbgscan %tbgscan.count %tbg.scantime
unset %tbgscan.count
}
alias TBGupdate {
if (!$exists(torips\tns_list.txt)) { echo 4 -st *** TBGupdate Error: $mircdir $+ torips\tns_list.txt is missing | halt }
if (!$1) { set %TBG.site $read(torips\tns_list.txt) }
else { set %TBG.site $1 }
if (!$hget(tor.ips)) {
if (!$exists(torips)) { .mkdir torips }
if (!$exists(torips\tor_ips.hash)) { .hmake tor.ips 1000 }
else { .hmake tor.ips 1000 | .hload -b tor.ips torips\tor_ips.hash }
}
if (!%TBG.site) { TBGupdate | halt }
set %TBG.b4 $hget(tor.ips,0).item
if (!$sock(TBG)) { sockopen TBG %TBG.site 80 }
}
on *:sockread:TBG:{
if (!%TBG_csv.bytes) { set %TBG_csv.bytes 0 }
var %stext
sockread %stext
if (($remove(%stext,.) isnum) && ($numtok(%stext,46) == 4)) { hadd tor.ips %stext $ctime }
set %TBG_csv.bytes $calc(%TBG_csv.bytes + $sockbr)
}
on *:sockopen:TBG:{
if ($sockerr) {
sockclose $sockname
echo 2 -t @Tor-Be-Gone ---
echo 2 -t @Tor-Be-Gone *** Tor-Be-Gone: Err there was some error connecting to %TBG.site
tbgupdate
}
else {
echo 2 -t @Tor-Be-Gone ---
echo 2 -t @Tor-Be-Gone *** Connected to %TBG.site $+ , Downloading update IP list...
sockwrite -n $sockname GET /ip_list_all.php/Tor_ip_list_ALL.csv HTTP/1.1
sockwrite -n $sockname Host: %TBG.site $+ $crlf $+ $crlf
}
}
on *:sockclose:TBG: {
set %TBG_csv 1
set %TBG_csv.remove 0
while ($hget(tor.ips,%TBG_csv).item) {
if ($calc($ctime - $hget(tor.ips,%TBG_csv).data) > 86400) { hdel tor.ips $hget(tor.ips,%TBG_csv).item | inc %TBG_csv.remove }
inc %TBG_csv
}
hsave -bo tor.ips torips\tor_ips.hash
If (!$window(@Tor-Be-Gone)) { window -k0nz @Tor-Be-Gone | .log on @Tor-Be-Gone -f Tor-Be-Gone.log }
echo 2 -t @Tor-Be-Gone *** IP's Added:3 $calc($hget(tor.ips,0).item - %TBG.b4 + %TBG_csv.remove) $+ , Removed:4 %TBG_csv.remove $+ , Now in Hash:3 $hget(tor.ips,0).item 15( $+ $bytes(%TBG_csv.bytes,k) $+ kb dl from %TBG.site $+ )
unset %TBG.b4 | unset %TBG_csv* | unset %TBG.site
tbg_cleandns
}
alias tbg_cleandns {
set %TBG_csv1 1
set %TBG_csv.remove 0
while ($hget(tbg_dns_cache,%TBG_csv1).item) {
if ($calc($ctime - $gettok($hget(tbg_dns_cache,%TBG_csv1).data,2,32)) > 172800) { hdel tbg_dns_cache $hget(tbg_dns_cache,%TBG_csv1).item | inc %TBG_csv.remove }
inc %TBG_csv1
}
echo 2 -t @Tor-Be-Gone *** Addresses Removed from DNS cache:4 %TBG_csv.remove
set %TBG_csv1 1
set %TBG_csv.remove 0
while ($hget(TBG_DNSBL,%TBG_csv1).item) {
if (($gettok($hget(TBG_DNSBL,%TBG_csv1).data,1,32) == good) && ($calc($ctime - $gettok($hget(TBG_DNSBL,%TBG_csv1).data,2,32)) > 7200)) { hdel TBG_DNSBL $hget(TBG_DNSBL,%TBG_csv1).item | inc %TBG_csv.remove }
if (($gettok($hget(TBG_DNSBL,%TBG_csv1).data,1,32) == bad) && ($calc($ctime - $gettok($hget(TBG_DNSBL,%TBG_csv1).data,2,32)) > 172800)) { hdel TBG_DNSBL $hget(TBG_DNSBL,%TBG_csv1).item | inc %TBG_csv.remove }
inc %TBG_csv1
}
echo 2 -t @Tor-Be-Gone *** Addresses Removed from DNSBL cache:4 %TBG_csv.remove
unset %TBG_csv*
}
dialog tbg {
title "TBG+DNSBL 1.1.1 Settings"
size -1 -1 300 120
option dbu
button "Okay",1,200 107 25 11,ok
button "Discard",2,270 107 25 11,cancel
button "Apply",5,235 107 25 11
text "TBG+DNSBL 1.1.1 By Skxawng (Undernet User: WTSh4rK)",3,5 105 80 13
button "Update IP List",4,90 107 40 11
box "Channel:",10,5 3 190 20
text "Settings for:",11,10 11 40 10
combo 12,45 9 80 10,drop edit
button "Add",13,133 9 25 11
button "Remove",14,165 9 25 11
box "Settings:",20,5 25 190 80
text "Use [nick] [chan] [ip] [addr] to get nick, channel, IP and address in your kick.",21,8 33 185 10
text "Ban Messsage:",22,8 44 45 12
combo 23,47 42 145 10,drop edit
check "Scan channel when you OP to check for Tor IP's already in channel?",24,8 55 180 10
check "Use X to Kick and Ban Tor Addresses for",25,8 70 110 10
combo 26,118 70 30 10, drop
text "days.",27,155 71 30 10
check "Send users for DNSBL lookup?",28,8 85 110 10
box "Addresses to ignore (Global)",30,200 3 95 102
text "",31,205 12 85 70, edit vsbar
combo 32,205 22 85 70, edit vsbar
button "Add",33,220 90 25 11
button "Remove",34,252 90 25 11
}
on 1:dialog:tbg:init:0: {
;echo - %tbg.ini
did -o tbg 31 1 $iif($len(e.g. $address($me,8)) >= 30,$left(e.g. $address($me,8),30) $+ ...,e.g. $address($me,8))
if (!$exists($shortfn($mircdir $+ torips\) $+ tbg.ini)) { mkdir torips | writeini $shortfn($mircdir $+ torips\) $+ tbg.ini lists banmsg [nick], Anonymity online is great just not here... BANNED: [ip] ([addr])¬The Onion Router is Banned, Tor Exit Node IP: [ip] ([addr])¬BANNED: Tor Exit Node IP: [ip] ([addr]) | TBGupdate }
set %tbg.ini $shortfn($mircdir $+ torips\) $+ tbg.ini
didtok tbg 23 172 $readini(%tbg.ini,lists,banmsg)
did -c tbg 23 1
didtok tbg 12 172 $readini(%tbg.ini,lists,chans)
didtok tbg 32 172 $readini(%tbg.ini,lists,ignore)
var %tbg.xdays = 1
while (%tbg.xdays < 101) {
did -a tbg 26 %tbg.xdays
if (%tbg.xdays = 1) did -c tbg 26 1
inc %tbg.xdays
}
did -b tbg 14,23,24,25,26,33,34
if ($didwm(tbg,12,$active)) {
set %tbg.chan $didwm(tbg,12,$active)
did -c tbg 12 $didwm(tbg,12,$active)
did -e tbg 14,23,24,25,26
did -b tbg 13
if ($readini(%tbg.ini,$active,banmsg)) { did -ac tbg 23 $readini(%tbg.ini,$active,banmsg) }
if ($readini(%tbg.ini,$active,scan)) { did -c tbg 24 }
if ($readini(%tbg.ini,$active,x)) { did -c tbg 25 }
if ($readini(%tbg.ini,$active,xdays)) { did -c tbg 26 $readini(%tbg.ini,$active,xdays) }
if ($readini(%tbg.ini,$active,dnsbl)) { did -c tbg 28 }
}
else { did -o tbg 12 0 $active | set %tbg.chan $didwm(tbg,12,$active) }
}
on 1:dialog:tbg:sclick:*: {
if (($did == 1) || ($did == 5)) {
writeini %tbg.ini lists chans $didtok(tbg,12,172)
writeini %tbg.ini $did(tbg,12).seltext banmsg $did(tbg,23,0).text
writeini %tbg.ini $did(tbg,12).seltext scan $did(tbg,24).state
writeini %tbg.ini $did(tbg,12).seltext x $did(tbg,25).state
writeini %tbg.ini $did(tbg,12).seltext xdays $did(tbg,26).seltext
writeini %tbg.ini $did(tbg,12).seltext dnsbl $did(tbg,28).state
if ($didtok(tbg,32,172)) writeini %tbg.ini lists ignore $didtok(tbg,32,172)
else remini %tbg.ini lists ignore
}
if ($did == 12) {
did -e tbg 1,14,23,24,25,26
did -b tbg 13
did -d tbg 23 3
if ($readini(%tbg.ini,$did(tbg,12).seltext,banmsg)) { did -ac tbg 23 $readini(%tbg.ini,$did(tbg,12).seltext,banmsg) }
if ($readini(%tbg.ini,$did(tbg,12).seltext,scan)) { did -c tbg 24 }
else { did -u tbg 24 }
if ($readini(%tbg.ini,$did(tbg,12).seltext,x)) { did -c tbg 25 }
else { did -u tbg 25 }
if ($readini(%tbg.ini,$did(tbg,12).seltext,xdays)) { did -c tbg 26 $readini(%tbg.ini,$did(tbg,12).seltext,xdays) }
if ($readini(%tbg.ini,$did(tbg,12).seltext,dnsbl)) { did -c tbg 28 }
else { did -u tbg 28 }
}
if ($did == 13) {
if ($did(tbg,12,0).text) {
did -a tbg 12 $did(tbg,12,0).text
did -c tbg 12 $didwm(tbg,12,$did(tbg,12,0).text)
did -e tbg 1,14,23,24,25,26
did -b tbg 13
if ($readini(%tbg.ini,$did(tbg,12,0).text,banmsg)) { did -i1c 24 $readini(%tbg.ini,$did(tbg,12,0).text,banmsg) }
if ($readini(%tbg.ini,$did(tbg,12,0).text,scan)) { did -c tbg 24 }
if ($readini(%tbg.ini,$did(tbg,12,0).text,x)) { did -c tbg 25 }
}
}
if ($did == 14) {
if ($?!"Are you sure you want to remove $did(tbg,12).seltext $+ ?") {
did -b tbg 1,14,23,24,25,26
did -u tbg 24,25
did -c tbg 26 14
did -d tbg 23 3
did -c tbg 23 1
did -e tbg 13
remini %tbg.ini $did(tbg,12).seltext
did -d tbg 12 $did(tbg,12).sel
writeini %tbg.ini lists chans $didtok(tbg,12,172)
did -o tbg 12 0 $null
}
}
if ($did == 4) {
dialog -x tbg
window -r @Tor-Be-Gone
tbgupdate
}
if ($did = 33) {
did -a tbg 32 $did(tbg,32).text
did -b tbg 33
}
if ($did == 32) {
did -e tbg 34
}
if ($did == 34) {
did -d tbg 32 $did(tbg,32).sel
did -b tbg 34
}
}
on 1:dialog:tbg:edit:*: {
if ($did == 12) {
did -b tbg 1,14,23,24,25,26
did -u tbg 24,25
did -c tbg 26 14
did -d tbg 23 3
did -c tbg 23 1
did -e tbg 13
}
if ($did == 32) {
if ($did(tbg,32).text) did -e tbg 33
else did -b tbg 33
}
}
menu channel {
TBG+DNSBL
.TBG Settings:dialog -m tbg tbg
.Show TBG Status Window:window -rd @TBG-Status
.Maintenance
..Clear The Scan Que (Que $line(@tbgQ,0) $+ ): {
if ($input(Are you sure you want to clear the scan que?,y)) { window -c @tbgQ | if ($input(Scan Que Cleared.,o)) { } }
}
..Clear The DNS cache (Cached $hget(tbg_dns_cache,0).item $+ ): {
if ($input(Are you sure you want $hget(tor.tbg_dns_cache,0).item IP's deleted from the DNS IP cache?,y)) { .hfree tbg_dns_cache | .hmake tbg_dns_cache 1000 | hsave -o tbg_dns_cache torips\tbg_dns_cache.hash | if ($input(DNS IP's Cleared.,o)) { } }
}
..Clear The Tor IP cache (Cached $hget(tor.ips,0).item $+ ): {
if ($input(Are you sure you want $hget(tor.ips,0).item IP's deleted from the Tor IP cache?,y)) { .hfree tor.ips | .hmake tor.ips 1000 | hsave -bo tor.ips torips\tor_ips.hash | if ($input(Tor IP's Cleared. You will now need to update the Tor Exit Node IP List,o)) { } }
}
..Clear The DNSBL cache (Cached $hget(TBG_DNSBL,0).item $+ ): {
if ($input(Are you sure you want $hget(TBG_DNSBL,0).item IP's deleted from the DNSBL IP cache?,y)) { .hfree TBG_DNSBL | if ($input(DNSBL IP's Cleared,o)) { } }
}
.-
. $+ $iif($istok($readini(torips\tbg.ini,lists,chans),$chan,172),Scan the channel for Tor $iif($readini(%tbg.ini,$chan,dnsbl),and DNSBL),) :tbgscan $chan
.-
.Update Tor exit node IP list: { window -r @Tor-Be-Gone | tbgupdate }
}
menu nicklist {
-
Check with TBG : {
set %tbgscan.count 1
var %tbg.scantime = $ctime
addto.tbgQ ¬StartScanChan $chan $1 ~
addto.tbgQ $1 $chan
addto.tbgQ ¬FinishScanChan $chan %tbgscan.count %tbg.scantime $1
}
-
}
raw 315:*: { if ($2 isin %tbg.who) { set %tbg.who $remtok(%tbg.who,$2,1,32) | haltdef } }
raw 352:*: { if ($2 isin %tbg.who) { haltdef } }
on 1:unload: {
unset %tbg*
timerTBG.update off
timertbgq off
hfree tor.ips
hfree torchk
hfree TBG_DNSBL
hfree tbg_dns_cache
echo -ts *** Tor-Be-Gone has been unloaded.
}
Comments