Undefined
By: Guest | Date: Oct 18 2022 15:36 | Format: TCL/iTCL | Expires: never | Size: 9.35 KB | Hits: 189
- ;
- ; Portscanner v1.0 w/ IPv6 Support
- ; Everything works so far ;)
- ;
- ; Syntax:
- ; /portscan [hostname/ip]
- ;
- ; Update:
- ; - fixed hostnames with multiple IP adresses, using a random IP from the list now
- ; -------------
- ; Dialog
- ; -------------
- dialog ps {
- title "Portscanner"
- size -1 -1 180 175
- option dbu
- icon $windir(system32\shell32.dll), 22
- list 1, 5 65 170 100, size vsbar hsbar
- edit "", 2, 24 4 150 10
- text "Scan", 3, 5 5 16 8
- edit "", 4, 30 25 35 10, limit 5
- text "Start", 5, 8 25 16 8
- text "End", 6, 8 35 16 8
- box "Portrange", 7, 5 15 65 33
- edit "", 8, 30 35 35 10, limit 5
- box "Settings", 9, 75 15 100 33
- combo 10, 80 25 35 50, size drop
- combo 11, 80 35 35 50, size drop
- check "T&imes", 20, 130 25 30 10
- check "&Verbose", 21, 130 35 30 10
- button "?", 17, 117 25 10 10, center
- button "?", 18, 117 35 10 10, center
- button "?", 22, 162 25 10 10, center
- button "?", 24, 162 35 10 10, center
- button "&Scan", 12, 4 50 33 12,default
- button "&Reset", 13, 39 50 33 12
- button "&Clear", 14, 74 50 33 12
- button "S&ave", 16, 109 50 33 12
- button "C&lose", 15, 144 50 33 12, cancel
- text "", 19, 5 167 170 8
- }
- ; -------------
- ; Dialog Events
- ; -------------
- on *:dialog:ps:init:0:{
- var %x = 10
- while (%x < 10001) { did -a $dname 10 %x $+ ms | inc %x 10 }
- %x = 0
- while (%x < 100) { inc %x | did -a $dname 11 %x }
- reset
- }
- on *:dialog:ps:sclick:*:{
- if ($did = 12) { execute }
- if ($did = 13) { reset }
- if ($did = 14) { reset -l }
- if ($did = 15) { .sockclose ps_* | .timerpScan off | unset %currentPort }
- if ($did = 16) { save }
- if ($did = 17) { _help ms }
- if ($did = 18) { _help sc }
- if ($did = 22) { _help ti }
- if ($did = 24) { _help vb }
- }
- ; -------------
- ; Aliases
- ; -------------
- alias portscan {
- if (!$dialog(ps)) { dialog -dm ps ps }
- else { dialog -v ps }
- if (!$busy) { if ($1) { did -fra ps 2 $1 } }
- elseif ($1) { _help bs }
- }
- alias -l execute {
- did -ra ps 2 $gettok($did(ps,2),1,32)
- did -b ps 12
- var %resolve = $nslookup($did(ps,2)).go
- if ($did(ps,2)) {
- if ($isip($did(ps,2)) || $busy || %resolve) {
- if ($did(ps,4) <= $did(ps,8) && $did(ps,4) isnum 1-65535 && $did(ps,8) isnum 1-65535) {
- if ($did(ps,12).text == &Scan) {
- set %currentPort $did(ps,4) | sockclose ps_* | did -b ps 2,4,8,10,11,13,20,21
- did -ra ps 12 &Stop | status | add 0 Scan started $iif($did(ps,21).state,using verbose)
- if (%resolve) { add 0 Resolved: $v1 }
- if ($numtok(%resolve,44) > 1) { %resolve = $gettok(%resolve,$r(1,$numtok(%resolve,44)),44) | add 0 Using first IP: %resolve }
- .timerpScan -imo 0 $left($did(ps,10).seltext,-2) port.scanner.loop
- }
- else {
- did -ra ps 12 &Scan
- if (%currentPort < $did(ps,8)) {
- if ($input(Apply port %currentPort as new start port?,yau,Just Pause?)) {
- did -ra ps 4 %currentPort | add 0 Scan paused at port $calc(%currentPort -1) }
- else { add 0 Scan stopped at port $calc(%currentPort -1) }
- }
- status | did -e ps 2,4,8,10,11,13,20,21 | unset %currentPort
- }
- }
- else { _help no }
- }
- else { _help ip }
- }
- else { _help ho }
- did -e ps 12
- }
- alias -l save {
- var %path = $$sfile(portscan- $+ $did(ps,2) $+ - $+ $replace($date $+ - $+ $time,/,-,:,-) $+ .log,Save log file,Save)
- savebuf -o ps 1 $shortfn($nofile(%path)) $+ \ $+ $nopath(%path)
- }
- alias port.scanner.loop {
- var %count = $sock(ps_*,0)
- var %x = %count
- while (%x) {
- var %port = $gettok($sock(ps_*,%x),2,95)
- if ($sock(ps_*,%x).mark) {
- if ($calc($ticks - $ifmatch) > 300000) { sockclose $sock(ps_*,%x) | add %port Internal timeout limit of 5 minutes reached. }
- }
- dec %x
- }
- if (%currentPort < $calc($did(ps,8) +1)) {
- if ((%count < $did(ps,11).seltext) && ($did(ps,12) != &Scan)) {
- sockopen ps_ $+ %currentPort $did(ps,2) %currentPort
- inc %currentPort
- }
- }
- %count = $sock(ps_*,0)
- if (!%count) {
- .timerpScan off
- if ($did(ps,12) != &Scan) { execute }
- }
- status $iif(%currentPort,$v1,0) %count
- }
- alias -l status {
- did -ra ps 19 Next Port: $iif($1 isnum 0-65535,$1,0) Open Ports: $iif($2,$2,0)
- }
- alias -l isip {
- var %re = /^\s*((?=.*::.*)(::)?([0-9A-F]{1,4}(:(?=[0-9A-F])|(?!\2)(?!\5)(::)|\z)){0,7}|((?=.*::.*)(::)?([0-9A-F]{1,4}(:(?=[0-9A-F])|(?!\7)(?!\10)(::))){0,5}|([0-9A-F]{1,4}:){6})((25[0-5]|(2[0-4]|1[0-9]|[1-9]?)[0-9])(\.(?=.)|\z)){4}|([0-9A-F]{1,4}:){7}[0-9A-F]{1,4})\s*$/i
- if ($len($1)) {
- if ($regex($1,%re) && $regml(1) == $1) { return $true }
- return $iif($longip($longip($1)) == $1,$true,$false)
- }
- return $false
- }
- alias -l busy {
- if ($did(ps,12).text == &Stop) { return $true }
- return $false
- }
- alias -l _help {
- if ($1 = vb) noop $input(It shows all connection tries. $crlf $crlf $+ Produces high CPU load. Use it only with timers of 100ms or above.,adiou,Help)
- if ($1 = ms) noop $input(Time in milliseconds between each socket will be opened. $crlf $crlf $+ (Up to 10 Seconds.),adiou,Help)
- if ($1 = sc) noop $input(Maximum amount of open connections at once.,adiou,Help)
- if ($1 = bs) noop $input(Sorry $+ $chr(44) but the portscanner seems to be busy.,adwou,Error)
- if ($1 = no) noop $input(Please check the portrange.,adwou,Error)
- if ($1 = ho) noop $input(Please check the hostname.,adwou,Error)
- if ($1 = ip) noop $input(Please use only IPv4/IPv6 masks that can be resolved.,adwou,Error)
- if ($1 = ti) noop $input(Adds a timestamp to the output.,adiou,Help)
- }
- alias -l reset {
- if ($1 != -l) {
- did -c ps 10 2
- did -c ps 11 20
- did -f ps 2
- did -ra ps 4 1
- did -ra ps 8 65535
- did -c ps 20
- did -u ps 21
- add 0 Portscan ready.
- .sockclose ps_*
- .timerpScan off
- unset %currentPort
- status
- }
- else {
- did -r ps 1
- add 0 List cleared.
- }
- }
- alias -l add {
- if ($dialog(ps)) {
- did -a ps 1 $iif($did(ps,20).state,$time) $base($1,10,10,5) $+ $iif($prot($1),/ $+ $v1) : $+ $2-
- did -c ps 1 $did(ps,1).lines
- did -z ps 1
- }
- }
- alias -l prot {
- return $gettok($read($windir(system32\drivers\etc\services),nw,* $1 $+ /tcp*),1,32)
- }
- alias -l windir {
- .comopen windir WScript.Shell
- if ($comerr) { !return }
- var %a = $com(windir,ExpandEnvironmentStrings,3,bstr,% $+ windir%)
- %a = $com(windir).result
- .comclose windir
- return %a $+ \ $+ $iif($1,$1-)
- }
- ; -------------
- ; Socket Events
- ; -------------
- on *:sockopen:ps_*:{
- if ($dialog(ps)) {
- var %port = $gettok($sockname,2,95)
- if ($sock($sockname).status == active) { add %port Connected | sockmark $sockname $ticks }
- elseif ($did(ps,21).state) { add %port $sock($sockname).status }
- }
- }
- on *:sockread:ps_*:{
- var %temp
- var %port = $gettok($sockname,2,95)
- if (!$sockerr) {
- :n
- sockread %temp
- if (!$sockbr) return
- if (!%temp) %temp = -
- add %port %temp
- goto n
- }
- else { add %port Error: $sock($sockname).wsmsg }
- }
- on *:sockclose:ps_*: {
- var %port = $gettok($sockname,2,95)
- add %port Host closed connection.
- }
- ; ------------
- ; NSLookup COM
- ; ------------
- ;
- ; Syntax: $nslookup(<target>[,server]).[da|si|go|od|vncs|rand]
- ;
- ; [Server] must be an IP Adress
- ;
- ; Property .si uses one of the public nameserver from ScrubIt
- ; Property .go uses one of the public nameserver from google
- ; Property .od uses one of the public nameserver from OpenDNS
- ; Property .da uses one of the public nameserver from dnsadvantage
- ; Property .vnsc uses one of the public nameservers from vnsc-pri.sys.gtei.net
- ; Property .rand uses a random server of the public nameservers in this list
- ;
- ; It can't resolve netbios names (well it can, maybe you have a win 2008 dns server with a GlobalNames zone ;))
- ;
- alias nslookup {
- var %id = $md5($ticks),%match,%tmp,%out
- .comopen %id wscript.shell
- if ($comerr) { return }
- var %google = $gettok(8.8.4.4 8.8.8.8,$r(1,2),32)
- var %OpenDNS = $gettok(208.67.222.222 208.67.220.220,$r(1,2),32)
- var %ScrubIt = $gettok(67.138.54.100 207.225.209.66,$r(1,2),32)
- var %dnsadvantage = $gettok(156.154.70.1 156.154.71.1,$r(1,2),32)
- var %vncs = $gettok(4.2.2.1 4.2.2.2 4.2.2.3 4.2.2.4 4.2.2.5 4.2.2.6,$rand(1,6),32)
- var %ns = $gettok(%OpenDNS %google %ScrubIt %dnsadvantage %vncs,$findtok(od go si da vncs,$prop,1,32),32)
- if ($prop == rand) { %ns = $gettok(%OpenDNS %google %ScrubIt %dnsadvantage %vncs,$r(1,5),32) }
- .comclose %id $com(%id,run,1,bstr*,% $+ comspec% /c nslookup $1 $iif(%ns,%ns,$iif($isip($2),$2)) > $mircdir\ $+ %id,uint,0,bool,true)
- if ($isip($1)) {
- noop $read(%id,n,3)
- while ($read(%id,$calc($readn +1))) {
- %match = $remove($ifmatch,$chr(44))
- while ($gettok(%match,1,32)) {
- var %tmp = $remove($ifmatch,$chr(32))
- if (!$istok(Address: Name: name =,%tmp,32)) {
- if (!$isip(%tmp)) { %out = $addtok(%out,%tmp,44) }
- }
- %match = $deltok(%match,1,32)
- }
- }
- }
- else {
- var %x = $read(%id,n,3)
- if ($gettok(%x,1,32) != ***) {
- while ($read(%id,$calc($readn +1))) {
- %match = $remove($ifmatch,$chr(44))
- while ($gettok(%match,1,32)) {
- var %tmp = $remove($ifmatch,$chr(32))
- if ($isip(%tmp)) { %out = $addtok(%out,%tmp,44) }
- %match = $deltok(%match,1,32)
- }
- }
- }
- }
- .remove %id
- return %out
- }
Latest pastes
18 hours ago
21 hours ago
1 days ago
2 days ago
2 days ago