Guest User

Untitled

a guest
Jul 18th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 8.76 KB | None | 0 0
  1. ;<- :arrow^!33333333333333333333333337@GateKeeper NICK :>Arrow
  2. alias -l IRCV  return IRCVERS IRC9 IRC7!
  3. alias -l AUTHINIT { return $+(AUTH GateKeeper, $iif( $left( $me, 1 ) != >, Passport, $chr(32) ) I GKSSP\0\0\0, $chr(3), \0\0\0, $chr(1), \0\0\0) }
  4. ## EXO & SKY'S AUTHENTICATION STUFF
  5. alias neko.hash {
  6.   if (*:GKSSP* iswm $1-) { var %x, %re = .*:GKSSP\\0.*\\0\\0.*\\0\\0(.*), %y = $regsub($1-,%re,,%x) | tokenize 32 $regml(1) }
  7.   var %m
  8.   bset &h1 1 101 100 112 123 125 101 124 119 120 114 100 115 101 125 125 117 $str(54 $+ $chr(32),48) $esc2dec($neko.chr2dec($1-))
  9.   bset &h2 1 15 14 26 17 23 15 22 29 18 24 14 25 15 23 23 31 $str(92 $+ $chr(32),48) $neko.hex2bin($md5(&h1,1))
  10.   return $neko.hex2chr($neko.hex2esc($md5(&h2,1)))
  11. }
  12. alias neko.chr2dec return $regsubex($1,/(.{1})/g,$asc(\1) $+ $chr(32))
  13. alias neko.hex2chr return $regsubex($1,/([0-9A-Fa-f]{2})/g,$chr($base(\1,16,10)))
  14. alias neko.hex2bin return $regsubex($1,/([0-9A-Fa-f]{2})/g,$base(\1,16,10) $+ $chr(32))
  15. alias neko.hex2esc return $regsubex($1,/([0-9A-Fa-f]{2})/g,$hex2esc(\1))
  16. alias hex2esc return $replacex($1,5C,5C5C,00,5C30,0A,5C6E,0D,5C72,2C,5C63,09,5C74,20,5C62)
  17. alias esc2dec return $replacex($1,92 48, 0, 92 116, 9, 92 110, 10, 92 114, 13, 92 98, 32, 92 99, 44, 92 92, 92)
  18. ;elseif ($4 != :OK) sockwrite $sockname $+($hget(GKSSP,AUTHS),$GKSSP($4,$sock($sockname).ip).challenge,$SelectGateKeeper,$lf)
  19. alias gkssp_form {
  20.   var %output,%hex,%x = $1,%i = 1
  21.   ;seq=7,5,3,1,11,9,15,13,17
  22.   if ($len($1) < 32) { %x = $+($str(0,$calc(32 - $len($ifmatch)),$ifmatch) }
  23.   %x = $mid(%x,7,2) $+ $mid(%x,5,2) $+ $mid(%x,3,2) $+ $mid(%x,1,2) $+ $mid(%x,11,2) $+ $mid(%x,9,2) $+ $mid(%x,15,2) $+ $mid(%x,13,2) $+ $right(%x,-16)
  24.   return $__tochr($__hexbin(%x,NULL))
  25. }
  26. alias __tochr {
  27.   var %o,%i = 1
  28.   while (%i <= $numtok($1-,32)) {
  29.     %o = %o $+ $chr($gettok($1-,%i,32))
  30.     inc %i
  31.   }
  32.   return %o
  33. }
  34. alias __hexbin {
  35.   var %o,%i = 1,%hex,%switch
  36.   if (!$2) {
  37.     ;Excluding Escape Char
  38.     while (%i <= $len($1)) {
  39.       %o = %o $base($mid($1,%i,2),16,10)
  40.       inc %i 2
  41.     }
  42.     return %o
  43.   }
  44.   else {
  45.     ;Including Escaps Char (0=00,t=09,n=0A,r=0D,b=20,c=2C,\=5C)
  46.     while (%i <= $len($1)) {
  47.       %switch = $mid($1,%i,2)
  48.       if (%switch == 00) { %o = %o 92 48 }
  49.       elseif (%switch == 09) { %o = %o 92 116 }
  50.       elseif (%switch == 0A) { %o = %o 92 110 }
  51.       elseif (%switch == 0D) { %o = %o 92 114 }
  52.       elseif (%switch == 20) { %o = %o 92 98 }
  53.       elseif (%switch == 2C) { %o = %o 92 99 }
  54.       elseif (%switch == 5C) { %o = %o 92 92 }
  55.       else { %o = %o $base(%switch,16,10) }
  56.       inc %i 2
  57.     }
  58.     return %o
  59.   }
  60. }
  61.  
  62. alias SelectGateKeeper { return $gkssp_form($iif(%GATEKEEPER,$ifmatch,$binary_gate)) }
  63.  
  64.  
  65. alias binary_gate {
  66.   var %i = 1, %o
  67.   while (%i <= 16) {
  68.     %o = %o $+ $base($rand(0,3),10,2,2)
  69.     inc %i
  70.   }
  71.   return %o
  72. }
  73. alias hex_gate {
  74.   var %i = 1, %o
  75.   while (%i <= 16) {
  76.     %o = %o $+ $base($rand(0,255),10,16,2)
  77.     inc %i
  78.   }
  79.   return %o
  80. }
  81. ####EXO####
  82. alias msnx.hash {
  83.   bset &h1 1 101 100 112 123 125 101 124 119 120 114 100 115 101 125 125 117 $str(54 $+ $chr(32),48) $msnx.tobin($1-)
  84.   bset &h2 1 15 14 26 17 23 15 22 29 18 24 14 25 15 23 23 31 $str(92 $+ $chr(32),48) $msnx.hex2bin($md5(&h1,1))
  85.   return $msnx.unehex($md5(&h2,1))
  86. }
  87.  
  88. alias __tobin {
  89.   var %o,%i = 1
  90.   while (%i <= $len($1-)) {
  91.     %o = %o $asc($mid($1-,%i,1))
  92.     inc %i
  93.   }
  94.   return %o
  95. }
  96.  
  97. alias msnx.tobin {
  98.   var %l = 1, %r
  99.   while (%l <= $len($1)) {
  100.     if ($mid($1,%l,1) == \) {
  101.       inc %l
  102.       if ($mid($1,%l,1) == 0) %r = %r 0
  103.       elseif ($mid($1,%l,1) == t) %r = %r 9
  104.       elseif ($mid($1,%l,1) == n) %r = %r 10
  105.       elseif ($mid($1,%l,1) == r) %r = %r 13
  106.       elseif ($mid($1,%l,1) == b) %r = %r 32
  107.       elseif ($mid($1,%l,1) == c) %r = %r 44
  108.       elseif ($mid($1,%l,1) == \) %r = %r 92
  109.     }
  110.     else %r = %r $asc($mid($1,%l,1))
  111.     inc %l
  112.   }
  113.   return %r
  114. }
  115. alias msnx.unehex {
  116.   var %l = 1, %r, %x = $remove($1-,$chr(32))
  117.   while (%l <= $len(%x)) {
  118.     if ($mid(%x,%l,2) == 00) %r = %r $+ \0
  119.     elseif ($mid(%x,%l,2) == 0A) %r = %r $+ \n
  120.     elseif ($mid(%x,%l,2) == 0D) %r = %r $+ \r
  121.     elseif ($mid(%x,%l,2) == 2C) %r = %r $+ \c
  122.     elseif ($mid(%x,%l,2) == 09) %r = %r $+ \t
  123.     elseif ($mid(%x,%l,2) == 5C) %r = %r $+ \\
  124.     elseif ($mid(%x,%l,2) == 20) %r = %r $+ \b
  125.     else %r = %r $+ $chr($base($mid(%x,%l,2),16,10))
  126.     inc %l 2
  127.   }
  128.   return %r
  129. }
  130. alias msnx.hex2bin {
  131.   var %l = 1, %r
  132.   while (%l <= $len($1)) {
  133.     %r = %r $base($mid($1,%l,2),16,10)
  134.     inc %l 2
  135.   }
  136.   return %r
  137. }
  138. alias msnx.gatekey return $mid($1,7,2) $+ $mid($1,5,2) $+ $mid($1,3,2) $+ $left($1,2) $+ $mid($1,11,2) $+ $mid($1,9,2) $+ $mid($1,15,2) $+ $mid($1,13,2) $+ $right($1,16)
  139. ###EXO END###
  140. alias OpenServer {
  141.   socklisten svr.Connx 6667
  142. }
  143. on *:socklisten:svr.?????*:{
  144.   if ($sockname == svr.Connx) { var %sNc $+(svr.Connz_,$r(1111,9999),$r(a,z)) | sockaccept %sNc }
  145. }
  146. on *:sockopen:svr.?????*:{
  147.   var %snCs $gettoK($gettok($sockname,2,$asc(.)),1,$asc(_))
  148.   elseif (%snCs == Chats) {
  149.     sockwrite -n $sockname $+( NICK $+(>,$me),$crlf,$AUTHINIT,$crlf,$IRCV)
  150.   }
  151. }
  152. on *:sockread:svr.?????*:{
  153.   var %snCs $gettoK($gettok($sockname,2,$asc(.)),1,$asc(_)) | .var %read | .sockread %read | .tokenize 32 %read
  154.   WriteDebug $sockname :: %read
  155.   if (%sNcs == Connz) {
  156.     if ($1 == NICK) { set %NICK. $+ $sockname $2 }
  157.     if ($2 == USER) { sockwrite -n $sockname NOTICE AUTH :*** Looking up your hostname... | Connect2ChatX $sockname %NICK. $+ $sockname }
  158.   }
  159.   elseif (%snCs == Chats) {
  160.     if ($1 == AUTH) {
  161.       if ($3 == S) && ($4 != :OK) {    
  162.         var %x, %re = AUTH GateKeeper.* S :GKSSP\\0.*\\0\\0.*\\0\\0(.*), %y = $regsub($1-,%re,,%x)
  163.         bset &authout 1 $__tobin($1-3 $+(:GKSSP\0\0\0,$chr(2),\0\0\0,$chr(3),\0\0\0) $+ $msnx.hash($regml(1) $+ $sock($sockname).ip) $+ $crlf)
  164.         sockwrite -n $sockname &authout
  165.  
  166.       }
  167.       ;elseif (($3 == S) && ($4 == :OK)) { sockwrite -n $sockname AUTH GateKeeperPassport S $+(:,$passform) $lf user * * * $connex $lf JOIN $sock($sockname).mark  }
  168.       elseif ($3 == *) {
  169.         sockwrite -n $sockname user * * * $connex
  170.         ;$lf JOIN $sock($sockname).mark
  171.       }
  172.     }
  173.     elseif ($2 == 910) { echo -s authentication failed | var %x.sn $sockname | var %x.sip $sock($sockname).ip | var %x.sprt $sock($sockname).port | var %x.smrk $sock($sockname).mark | sockclose $sockname | sockopen %x.sn %x.sip %x.sprt | sockmark %x.sn %x.smrtk }
  174.     elseif ($2 == JOIN) {
  175.       sockwrite -n fx.lhost $deltok($1-,3,32)
  176.       if ($right($3,1) isin .@+) { sockwrite -tn fx.lhost :IRC7 MODE $remove($4,:) + $+ $replace($ifmatch,.,q,@,o,+,v) $remove($gettok($1,1,$asc(!)),:)  }
  177.     }
  178.     elseif ($2 == PRIVMSG) {
  179.       if ($4 == :S) { sockwrite -n fx.lhost $1-3 : $+ $left($6-,-1) }
  180.       else { sockwrite -n fx.lhost $1- }
  181.     }
  182.     elseif ($2 == MODE) {
  183.       sockwrite -n fx.lhost $1-
  184.       if ($4-5 == -q $me) {
  185.         if ($remove($gettok($1,1,33),:) != $me) {
  186.           if (!%no-q. [ $+ [ $3 ] ]) {
  187.             set -u3 %no-q. [ $+ [ $3 ] ] $true
  188.             sockwrite -n $sockname mode $me +h $hget(keys,$3) $lf mode $3 -q $right($gettok($1,1,33),-1) $lf prop $3 ownerkey $msn.pass(10) $lf access $3 clear owner $lf access $3 add owner $ial($me).addr
  189.           }
  190.         }
  191.       }
  192.       elseif ($4-5 == +q $me) {
  193.         if (!%noq. [ $+ [ $3 ] ]) {
  194.           set -u3 %noq. [ $+ [ $3 ] ] $true
  195.           sockwrite -n $sockname PROP $3 ownerkey $msn.pass(10) $lf access $3 add owner $ial($me).addr
  196.         }
  197.       }
  198.     }
  199.     elseif ($2 == PROP) {
  200.       sockwrite -n fx.lhost $1-
  201.       if ($4 == OWNERKEY) {
  202.         if ($remove($5,:) == $null) {
  203.           if ($remove($gettok($1,1,33),:) != $me) {
  204.             sockwrite -tn $sockname mode $3 -q $right($gettok($1,1,33),-1) $lf prop $3 ownerkey $msn.pass(10) $lf access $3 clear owner $lf access $3 add owner $ial($me).addr
  205.           }
  206.         }
  207.         else { hadd keys $3 $remove($5,:) | hsave -o keys $qt($scriptdirkeys.dat) }
  208.       }
  209.     }
  210.     elseif ($1 == PING) { sockwrite -tn $sockname PONG $2 |  sockwrite -n fx.lhost $1- }
  211.     elseif ($2 == 403) { sockclose $sockname }
  212.     elseif ($2 == 004) { sockwrite -n fx.lhost $1- $lf :TK2CHATCHATA01 005 $me IRCX NAMESX CHANTYPES=% PREFIX=(qov).@+ CHANMODES=b,k,l,defhimnprstuwWx NETWORK=IRC7 CHARSET=utf-8 are supported by this server }
  213.     elseif ($2 = 353) { var %x = 5, %y | while (%x < $numtok($1-,32)) { inc %x  | %y = %y $gettok($gettok($1-,%x,32),-1,44) } | sockwrite -n fx.lhost $1-5 : $+ %y | halt }
  214.  
  215.     else {
  216.       sockwrite -n fx.lhost $1-
  217.     }
  218.   }
  219.  
  220. }
  221. alias -l WriteDebug {
  222.   if ($!window(@ServerDebug)) {
  223.     window -e0 @ServerDebug
  224.   }
  225.   echo @ServerDebug $1-
  226. }
  227.  
  228. alias -l Connect2ChatX {
  229.   var %sNc $replace($1,Connz,Chats)
  230.   sockopen %sNc 74.122.195.182 6667
  231.   sockmark %sNc $2
  232. }
Add Comment
Please, Sign In to add comment