Advertisement
r00t-err0r

Advanced TCL DNSBL Checker v1.01

Apr 14th, 2017
1,219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 3.76 KB | None | 0 0
  1. #!/usr/bin/tclsh
  2. ###########################
  3. # Advanced DNSBL Checker  #
  4. ###########################
  5. #  By Velimir Majstorov   #
  6. ###########################
  7. package require dns
  8. package require http
  9. set listed 0
  10. proc color {foreground text} {
  11.     # tput is a little Unix utility that lets you use the termcap database
  12.     # *much* more easily...
  13.     return [exec tput setaf $foreground]$text[exec tput sgr0]
  14. }
  15. #Get IP from hostname
  16. proc GetIP {hostname} {
  17.   set lines [split [exec nslookup $hostname 2>1] \n]
  18.   set response [lindex $lines 5]
  19.   regexp -- {([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})} $response null a b c d
  20.   if {[info exist a]} {
  21.     return "$a.$b.$c.$d"
  22.   } else {
  23.     puts "► [color 3 Cannot] [color 3 lookup] [color 9 $hostname]";
  24.     exit
  25.   }
  26. }
  27. #Process arguments
  28. if {$argv != ""} {
  29.   if {[regexp {([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})} $argv]} {
  30.       set ip [lindex $argv 0]
  31.       set what [color 3 [lindex $argv 0]]
  32.     } else {
  33.       set ip [GetIP [lindex $argv 0]]
  34.       set what "[color 3 [lindex $argv 0]] ([color 3 $ip])"
  35.     }
  36.     #Scan IP Procedure
  37. proc ScanIP {ip} {
  38.   global argv listed what
  39.   set startmsg "Scanning $what"; puts "⚡︎ [color 2 $startmsg]"
  40.   #Cheeki Breeki
  41.   regexp -- {([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})} $ip null a b c d
  42.   set checksite [list "all.s5h.net" "b.barracudacentral.org" "bl.emailbasura.org" "bl.spamcannibal.org" "bl.spamcop.net" "blacklist.woody.ch" "bogons.cymru.com" "cbl.abuseat.org" "cdl.anti-spam.org.cn" "combined.abuse.ch" "db.wpbl.info" "dnsbl-1.uceprotect.net" "dnsbl-2.uceprotect.net" "dnsbl-3.uceprotect.net" "dnsbl.anticaptcha.net" "dnsbl.cyberlogic.net" "dnsbl.dronebl.org" "dnsbl.inps.de" "dnsbl.sorbs.net" "drone.abuse.ch" "drone.abuse.ch" "duinv.aupads.org" "dul.dnsbl.sorbs.net" "dyna.spamrats.com" "dynip.rothen.com" "exitnodes.tor.dnsbl.sectoor.de" "http.dnsbl.sorbs.net" "ips.backscatterer.org" "ix.dnsbl.manitu.net" "korea.services.net" "misc.dnsbl.sorbs.net" "noptr.spamrats.com" "orvedb.aupads.org" "pbl.spamhaus.org" "proxy.bl.gweep.ca" "psbl.surriel.com" "relays.bl.gweep.ca" "relays.nether.net" "sbl.spamhaus.org" "short.rbl.jp" "singular.ttk.pte.hu" "smtp.dnsbl.sorbs.net" "socks.dnsbl.sorbs.net" "spam.abuse.ch" "spam.dnsbl.sorbs.net" "spam.spamrats.com" "spambot.bls.digibase.ca" "spamrbl.imp.ch" "spamsources.fabel.dk" "ubl.lashback.com" "ubl.unsubscore.com" "virus.rbl.jp" "web.dnsbl.sorbs.net" "wormrbl.imp.ch" "xbl.spamhaus.org" "z.mailspike.net" "zen.spamhaus.org" "zombie.dnsbl.sorbs.net"]
  43.   foreach dnsbl $checksite {
  44.     set check4bl [dns::resolve $d.$c.$b.$a.$dnsbl]
  45.       if {[dns::status $check4bl] == "ok"} {
  46.         set listed [expr $listed+1]
  47.         puts "► [color 9 Listed] [color 10 @] [color 6 $dnsbl]"
  48.     }
  49.     dns::cleanup $check4bl
  50.   }
  51.   #VPN ?
  52.   proc getIPIntel {ip} {
  53.     global listed
  54.     set url "http://check.getipintel.net/check.php?ip=$ip&contact=admin@dbase.in.rs&flags=m"
  55.     set logo [color 6 check.getipintel.net]
  56.     set token [ ::http::geturl $url ]
  57.     if {[::http::status $token] == "ok"} {
  58.       set page [ ::http::data $token ]
  59.       set ajdedagamerimo [regexp -all -inline {\d+} $page]
  60.       if {$ajdedagamerimo == 1} { puts "► [color 9 Listed] [color 10 @] $logo"; set listed [expr $listed+1] }
  61.     } else {
  62.       puts "► Something went wrong" [::http::status $token]
  63.     }
  64.       http::cleanup $token
  65.   }
  66.   #Check for last IP
  67.   if {[lindex $argv 1] == ""} {
  68.     getIPIntel $ip
  69.   }
  70.   #Prints Listed Count
  71.   set ukupno [expr [llength $checksite]+1]
  72.   set ukprint "$listed / $ukupno"
  73.   puts "▶︎ [color 9 Listed] [color 9 on] [color 3 $ukprint] ◀"
  74. }
  75. ScanIP $ip
  76. } else {
  77.   set errormsg "Define IP address or hostname as argument."; puts "▶︎ [color 2 $errormsg]"
  78.   exit
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement