[script] n0=;;;mIRC Telnet n1=;;;This program helps you connecting to servers (tcp or udp) and for listening ports (tcp or udp) n2=;;;All you have to do is to type /telnet and then type the command "help" n3= n4= n5=alias telnet { var %i = 1 | while ($window(@telnet $+ %i)) { inc %i } | var %w = @telnet $+ %i | window -aek0 %w | .timer 1 0 editbox %w > } n6=alias base2hex { n7= var %i = 1 n8= while ($mid($1-,%i,1) != $null) { n9= var %b = $asc($ifmatch) n10= var %c = $base(%b,10,16) n11= if ($len(%c) == 1) %c = 0 $+ %c n12= if (%b == 32) var %str = %str $+ %c $chr(32) n13= else var %str = %str $+ %c $chr(32) n14= inc %i n15= } n16= return %str n17=} n18=alias socki { n19= var %on = $1 n20= var %of = $2 n21= aline -ph %on 4* Socket type: $sock(%of).type $+  n22= aline -ph %on 4* Socket status: $sock(%of).status $+  n23= if ($sock(%of).status == listening) { n24= aline -ph %on 4* Bind ip: $sock(%of).bindip $+  n25= aline -ph %on 4* Bind port: $sock(%of).bindport $+  n26= } n27= aline -ph %on 4* Sent data: $getk($sock(%of).sent) KB n28= aline -ph %on 4* Received data: $getk($sock(%of).rcvd) KB n29= aline -ph %on 4* Last send message: $duration($sock(%of).ls) ago n30= aline -ph %on 4* Last read message: $duration($sock(%of).lr) ago n31= aline -ph %on 4* Open time: $duration($sock(%of).to) ago n32= aline -ph %on 4 $+ $str(-,32) $+  n33=} n34=alias getk { n35= var %a = $calc($1 / 1024) n36= if (. !isin %a) return %a n37= else return $gettok(%a,1,$asc(.)) $+ . $+ $mid($gettok(%a,2,$asc(.)),1,3) n38=} n39=on 1:keydown:@telnet*:*:{ n40= if ($left($editbox($active),1) != >) editbox $active > n41=} n42=on 1:sockopen:@telnet*:{ n43= if ($sockerr) && ($window($sockname)) aline -ph $sockname 4* Error connecting to $sock($sockname).ip $+ : $+ $sock($sockname).port $+  n44= elseif ($window($sockname)) aline -ph $sockname 4* Connected. n45=} n46=on 1:sockread:@telnet*:{ n47= if (!$hget($sockname,hex)) { n48= var %data n49= sockread %data n50= if ($window($sockname)) { if (%data) aline -ph $sockname %data | else aline -ph $sockname $chr(160) } n51= } n52= else { n53= sockread &data n54= var %i = 0 n55= var %max = 16 n56= while ($bvar(&data,$iif(!$calc(%i * %max),1,$calc(%i * 16)),$calc((%i + 1) * %max))) { n57= var %t = $ifmatch, %t2 = $null, %x = 1 n58= while ($gettok(%t,%x,32)) { n59= var %a = $base($ifmatch,10,16) n60= var %t2 = %t2 $iif($len(%a) == 2,%a,0 $+ %a) n61= inc %x n62= } n63= if ($window($sockname)) { if (%t2} aline -ph $sockname %t2 | else aline -ph $sockname $chr(160) } n64= inc %i n65= } n66= } n67=} n68=on 1:sockclose:@telnet*:{ n69= if ($window($sockname)) aline -ph $sockname 4* The remote host closed the forgein connection. n70= if ($hget($sockname)) hfree $sockname n71=} n72= n73=on 1:socklisten:@telnet*:{ n74= inc -u3 $+(%,fldsocks.,$sockname) 1 n75= if ($+(%,fldsocks.,$sockname) > 3) && ($hget($sockname,prot)) { n76= var %sn = refused $+ $r(1000,9999) n77= sockaccept %sn n78= if ($window($sockname)) aline -ph $sockname 4* Attemping to connect from $sock(%sn).ip (refused because of anti-flood reasons) n79= sockclose %sn n80= } n81= else { n82= var %i = 1 n83= while ($window($sockname $+ - $+ %i)) { inc %i } n84= var %sn = $sockname $+ - $+ %i n85= sockaccept %sn n86= window -aek0 %sn n87= if ($window($sockname)) aline -ph $sockname 4* Attemping to connect from $sock(%sn).ip on %sn (accepted). n88= aline -ph %sn 4* Connection from $sock(%sn).ip accepted. n89= hadd -m %sn hex $hget($sockname,hex) n90= } n91=} n92= n93=on 1:udpread:@telnet*:{ n94= var %data n95= sockread %data n96= if ($hget($sockname,hex)) %data = $base2hex(%data) n97= if ($window($sockname)) aline -ph $sockname $chr(91) $+ $sock($sockname).ip $+ $chr(93) %data n98=} n99= n100=on 1:input:@telnet*:{ n101= if ($left($1,1) == >) { n102= tokenize 32 $mid($1-,2) n103= if ($1 == connect) { n104= if ($numtok($2-,32) == 3) && ($regex($2,/^-([uh]+)$/)) { n105= var %switch = $regml(1) n106= var %serv = $3 n107= var %port = $4 n108= } n109= else { var %serv = $2 | var %port = $3 } n110= if (u isincs %switch) var %proto = udp n111= else var %proto = tcp n112= if (h isincs %switch) hadd -m $active hex 1 n113= else hadd -m $active hex 0 n114= if ($sock($active)) echo 4 -a * This session is already used. n115= elseif (!%serv) || (!%port) echo 4 -a * Syntax: >connect [-uh] n116= elseif (%proto == tcp) { sockopen $active %serv %port | echo 4 -a * Connecting to %serv $+ : $+ %port } n117= elseif (%proto == udp) { echo 4 -a * Set %serv $+ : $+ %port as udp server. | hadd -m $active udpserv %serv | hadd -m $active udpport %port } n118= } n119= elseif ($1 == listen) { n120= if ($numtok($2-,32) == 2) && ($regex($2,/^-([uh]+)$/)) { n121= var %switch = $regml(1) n122= var %port = $3 n123= } n124= else var %port = $2 n125= if (u isincs %switch) var %proto = udp n126= else var %proto = tcp n127= if (h isincs %switch) hadd -m $active hex 1 n128= else hadd -m $active hex 0 n129= if (f isincs %switch) hadd -m $active prot 1 n130= else hadd -m $active prot 0 n131= if ($sock($active)) echo 4 -a * This session is already used. n132= elseif (!%port) echo 4 -a * Syntax: >listen [-uh] n133= elseif (!$portfree(%port)) aline -ph $active 4* Port in use. n134= elseif (%proto == udp) { sockudp -k $active %port | aline -ph $active 4* Now listening to port %port (udp) | hadd -m $active udpserv 127.0.0.1 | hadd -m $active udpport %port } n135= elseif (%proto == tcp) { socklisten $active %port | aline -ph $active 4* Now listening to port %port (tcp) } n136= } n137= elseif ($1 == conns) { n138= if ($sock($active).status != listening) aline -ph $active 4* This is not a listening session. n139= elseif ($sock($active $+ *-*,0) == 0) aline -ph $active 4* No opened connections. n140= else { n141= var %i = 1 n142= while ($sock($active $+ *-*,%i)) { n143= var %a = $ifmatch n144= aline -ph $active 4* Window: %a $+  n145= socki $active %a n146= inc %i n147= } n148= } n149= } n150= elseif ($1 == kill) { n151= if (!$2) var %w = $active n152= else var %w = @ $+ $2 n153= sockclose %w n154= if ($window(%w)) window -c %w n155= } n156= elseif ($1 == exit) { if (!$sock($active)) && (!$hget($active,udpserv)) echo 4 -a * Not connected to server. | else { sockclose $active | if ($hget($active)) hfree $active | echo 4 -a * Disconnected. | if (- isin $active) window -c $active } } n157= elseif ($1 == help) { n158= aline -ph $active 4* >connect [-uh]  n159= aline -ph $active $str($chr(160),4) $+ Let's you connect to servers. n160= aline -ph $active $str($chr(160),4) $+ -u switch means you want to connect to server via udp (instead of tcp) n161= aline -ph $active $str($chr(160),4) $+ -h switch means the read data from the server is shown as hex (base 16) n162= aline -ph $active 4* >listen [-uhf]  n163= aline -ph $active $str($chr(160),4) $+ Let's you listen to ports. n164= aline -ph $active $str($chr(160),4) $+ -u switch means you want to listen to udp (instead of tcp) n165= aline -ph $active $str($chr(160),4) $+ -h switch means the read data is shown as hex (base 16) n166= aline -ph $active $str($chr(160),4) $+ -f switch means flood protection (it will refuse connections if there are more than 3 in 3 seconds) n167= aline -ph $active 4* >exit n168= aline -ph $active $str($chr(160),4) $+ Close connection with server. n169= aline -ph $active 4* >conns n170= aline -ph $active $str($chr(160),4) $+ View connections opened by the listening port (working only for tcp) n171= aline -ph $active 4* >kill [window] n172= aline -ph $active $str($chr(160),4) $+ Closes the connection of window and closes the window (if window is not specified, it's assumed the current window) n173= aline -ph $active 4* >state n174= aline -ph $active $str($chr(160),4) $+ View the state of the current connection. n175= aline -ph $active 4* >new n176= aline -ph $active $str($chr(160),4) $+ Opens a new telnet window. n177= aline -ph $active 4* >clear n178= aline -ph $active $str($chr(160),4) $+ Clears this screen. n179= aline -ph $active 4* >help n180= aline -ph $active $str($chr(160),4) $+ Show this help. n181= aline -ph $active 4 $+ $str(-,32) $+  n182= } n183= elseif ($1 == new) telnet n184= elseif ($1 == state) { n185= if ($sock($active)) { n186= socki $active $active n187= } n188= else aline -ph $active 4* Not connected. n189= } n190= elseif ($1 == clear) clear n191= else { n192= if ((!$sock($active)) && (!$hget($active,udpserv))) || ($sock($active).status == listening) echo 4 -a * Not connected to server. n193= else { n194= if ($sock($active).type == tcp) sockwrite -n $active $1- n195= else sockudp -n $active $hget($active,udpserv) $hget($active,udpport) $1- n196= if ($hget($active,hex)) aline -ph $active 4> $base2hex($1- $+ $crlf) n197= else aline -ph $active 4> $1- n198= } n199= } n200= editbox $active > n201= } n202=}