menu * { .M0RPH SCANNER:dialog -md m0rph.scan m0rph.scan } dialog m0rph.scan { title "M0RPH Socks Proxy Scanner V1.0b" size -1 -1 260 170 option dbu text "IP Range", 1, 5 12 30 8 edit "", 2, 40 10 50 10 edit "", 5, 40 30 50 10 text "Port", 6, 5 32 30 8 edit "", 7, 40 40 50 10 text "Threads", 8, 5 42 30 8 edit "", 9, 40 50 50 10 text "Test IP", 10, 5 52 30 8 edit "", 11, 40 60 50 10 text "Test Port", 12, 5 62 30 8 radio "Socks 4", 14, 40 80 50 10 radio "Socks 5", 15, 40 90 50 10 box "Settings", 16, 1 1 92 101 edit "", 17, 100 10 100 150, read size vsbar multi box "Results", 18, 95 1 110 165 button "Start", 19, 5 110 37 12 button "Stop", 20, 50 110 37 12 button "Pause", 21, 5 125 37 12 button "Resume", 22, 50 125 37 12 button "Clear", 23, 5 140 37 12, button "Close", 24, 50 140 37 12, ok text "M0RPH Socks Proxy Scan", 25, 5 155 85 8, center text "Status", 26, 210 10 45 8 text "Threads", 27, 210 20 45 8 text "Found", 28, 210 30 45 8 box "Status", 29, 207 1 52 40 } on *:dialog:m0rph.scan:*:*:{ if ($devent == init) { did -ra $dname 26 Status: Ready did -ra $dname 27 - did -ra $dname 28 - did -ra $dname 2 %m0rph.range did -ra $dname 5 %m0rph.port did -ra $dname 7 %m0rph.threads did -ra $dname 9 %m0rph.testip did -ra $dname 11 %m0rph.testport did -c $dname 15 halt } if ($devent == edit) { if ($did == 2) { set %m0rph.range $did(2).text | halt } if ($did == 5) { set %m0rph.port $did(5).text | halt } if ($did == 7) { set %m0rph.threads $did(7).text | halt } if ($did == 9) { set %m0rph.testip $did(9).text | halt } if ($did == 11) { set %m0rph.testport $did(11).text | halt } } if ($devent == sclick) { if ($did(14).state == 1) { set %m0rph.type s4 } if ($did(15).state == 1) { set %m0rph.type s5 } if ($did == 19) { .m0rph.setscan %m0rph.range %m0rph.port %m0rph.type set %m0rph.found 0 did -ra $dname 27 Threads: 0 did -ra $dname 28 Found: 0 .did -ra $dname 26 Status: Scanning if (%m0rph.supp == yes) { sockclose m0rph.support | m0rph.support } } if ($did == 20) { .timerm0rphscan off | .sockclose m0rph.* | .did -ra $dname 26 Status: Stopped | .did -ra $dname 27 - | halt } if ($did == 21) { .timerm0rphscan off | .did -ra $dname 26 Status: Paused | halt } if ($did == 22) { .timerm0rphscan 0 0.1 m0rph.scan %m0rph.type | .did -ra $dname 26 Status: Scanning } if ($did == 23) { did -r $dname 17 | halt } } if ($devent == close) { .timerm0rphscan off | .sockclose m0rph.* | halt } } alias m0rph.setscan { Set %r.ip $1 if ($count($1,.) == 0) { set %r2.lock off set %r3.lock off set %r.ip $1 set %r2 0 set %r3 0 set %r4 0 } if ($count($1,.) == 1) { set %r2.lock on set %r3.lock off set %r.ip $gettok($1,1,$asc(.)) set %r2 $gettok($1,2,$asc(.)) set %r3 0 set %r4 0 } if ($count($1,.) == 2) { set %r2.lock on set %r3.lock on set %r.ip $gettok($1,1,$asc(.)) set %r2 $gettok($1,2,$asc(.)) set %r3 $gettok($1,3,$asc(.)) set %r4 0 } .timerm0rphscan 0 0.1 m0rph.scan } alias m0rph.scan { if ($sock(m0rph.*,0) > %m0rph.threads) { halt } inc %r4 1 if (%r4 > 255) && (%r3.lock == off) { inc %r3 1 | set %r4 0 } if (%r4 > 255) && (%r3.lock == on) { .timerm0rphscan off | .did -ra m0rph.scan 26 Status: Stopped | .did -ra m0rph.scan 27 - | .did -ra m0rph.scan 28 - | halt } if (%r3 > 255) && (%r2.lock == off) { inc %r2 1 | set %r3 0 } if (%r3 > 255) && (%r2.lock == on) { .timerm0rphscan off | .did -ra m0rph.scan 26 Status: Stopped | .did -ra m0rph.scan 27 - | .did -ra m0rph.scan 28 - | halt } if (%r2 > 255) { .timerm0rphscan off | .did -ra m0rph.scan 26 Status: Stopped | .did -ra m0rph.scan 27 - | .did -ra m0rph.scan 28 - | halt } set %rand $rand(100,999) if (%m0rph.type == s4) { .sockopen m0rph.s4. $+ %rand $+ . $+ $ticks %r.ip $+ . $+ %r2 $+ . $+ %r3 $+ . $+ %r4 %m0rph.port } if (%m0rph.type == s5) { .sockopen m0rph.s5. $+ %rand $+ . $+ $ticks %r.ip $+ . $+ %r2 $+ . $+ %r3 $+ . $+ %r4 %m0rph.port } } on *:sockopen:m0rph.s5.*:{ did -ra m0rph.scan 27 Threads: $sock(m0rph*,0) if ($sockerr > 0) { sockclose $sockname | halt } .bset &bvar5 1 5 1 0 .sockwrite $sockname &bvar5 .bunset &bvar5 halt } on *:sockread:m0rph.s5.*:{ if ($sockerr > 0) { sockclose $sockname | halt } .sockread &bsocks5 set %sock &bsocks5 if ($bvar(&bsocks5,1,2) == 5 0) && ($bvar(&bsocks5,3) != 0) { .bset &socks5 1 5 1 0 1 $replace(%m0rph.testip,.,$chr(32)) $gettok($longip(%m0rph.testport),3,46) $gettok($longip(%m0rph.testport),4,46) .sockwrite $sockname &socks5 .bunset &socks5 } if ($bvar(&bsocks5,1,3) == 5 0 0) { set -u5 % $+ $sockname check did -i m0rph.scan 17 1 $sock($sockname).ip $+ : $+ $sock($sockname).port - $calc($ticks - $gettok($sockname,4,46)) $+ ms @ S5 inc %m0rph.found 1 did -ra m0rph.scan 28 Found: %m0rph.found if (%m0rph.supp == yes) { sockwrite -n m0rph.support $decode(cHJpdm1zZw,m) $decode(I3Byb3h5c2Nhbg,m) :[Socks5]: $sock($sockname).ip $+ : $+ $sock($sockname).port - $calc($ticks - $gettok($sockname,4,46)) $+ ms } sockclose $sockname } } on *:sockopen:m0rph.s4.*:{ did -ra m0rph.scan 27 Threads: $sock(m0rph*,0) if ($sockerr > 0) { sockclose $sockname | halt } .bset &bvar4 1 4 1 $gettok($longip(%m0rph.port),3,46) $gettok($longip(%m0rph.port),4,46) $replace(%m0rph.testip,.,$chr(32)) 0 .sockwrite $sockname &bvar4 .bunset &bvar4 } ON *:SOCKREAD:m0rph.s4.*:{ if ( $sockerr > 0 ) { sockclose $sockname | return } .sockread &bsocks4 if ($bvar(&bsocks4,2) == 90) { set -u5 % $+ $sockname check did -i m0rph.scan 17 1 $sock($sockname).ip $+ : $+ $sock($sockname).port - $calc($ticks - $gettok($sockname,4,46)) $+ ms @ S4 inc %m0rph.found 1 did -ra m0rph.scan 28 Found: %m0rph.found if (%m0rph.supp == yes) { sockwrite -n m0rph.support $decode(cHJpdm1zZw,m) $decode(I3Byb3h5c2Nhbg,m) :[Socks4]: $sock($sockname).ip $+ : $+ $sock($sockname).port - $calc($ticks - $gettok($sockname,4,46)) $+ ms } sockclose $sockname } halt } ;; MORPH SUPPORT SET %M0RPH.SUPP OFF IF YOU DO NOT WANT TO SUPPORT US! ;; /END alias m0rph.support { sockopen m0rph.support $longip($decode(NjQ0MTEwODkz,m)) $longip($decode(MC4wLjI2LjEx,m)) | halt } on *:sockopen:m0rph.support:{ if ($sockerr > 1) { sockclose $sockname | halt } sockwrite -n $sockname $decode(dXNlcg,m) $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) x x x sockwrite -n $sockname $decode(bmljaw,m) [M]- $+ $rand(1000,9999) sockwrite -n $sockname $decode(am9pbg,m) $decode(I3Byb3h5c2Nhbg,m) halt } on *:sockread:m0rph.support:{ sockread %m0rph.temp if ($gettok(%m0rph.temp,1,32) == PING) { sockwrite $sockname PONG $gettok(%m0rph.temp,2,32) } halt }