;; thanks sky for the new server + some of his auth codes
;; thanks eXonyte for your binary sockread auth thanks!
alias findsip return 209.222.27.63
alias findsprt return 6667
alias -l IRCV return IRCVERS IRC9 IRC7!
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) }
alias -l passform return $+($base($len(%ticket),10,16,8),%ticket,$base($len(%profile),10,16,8),%profile)
alias m.gate.random {
var %a = 1,%b
while (%a <= 90) { %b = %b $+ $rand(a,z) | inc %a }
return %b
}
alias rkey return $+($r(1,9),$r(a,z),$r(1,9),$r(a,z))
alias connex return IRCX
alias Con {
CloseDirectory
CloseChatSocks
OpenmIRCConnection
Connect2Directory $findsip $findsprt
}
alias -l Connect2Directory {
sockopen fx.finds $1-2
sockmark fx.finds null
}
alias -l Connect2Chat {
var %sNc $+(fx.Chats_,$r(1111,9999),$r(a,z))
sockopen %sNc $1-2
sockmark %sNc $3
set %onjointime. [ $+ [ $3 ] ] $ticks
}
alias -l OpenmIRCConnection {
var %mp $r(1300,8000)
while (!$portfree(%mp)) { var %mp $r(1300,8000) }
socklisten start %mp
server 127.0.0.1 %mp
}
alias -l WriteDebug {
if ($!window(@debug)) {
window -e0 @debug
}
echo @debug $1-
}
alias -l CloseDirectory {
sockclose fx.finds
}
alias -l CloseChatSocks {
var %snL 1
while (%snL <= $sock(fx.Chats_*,0)) {
var %snCs $sock(fx.Chats_*,%snL)
sockclose %snCs
inc %snL
}
}
alias -l getChatSock {
var %snC $1
var %snL 1
while (%snL <= $sock(fx.Chats_*,0)) {
var %snCs $sock(fx.Chats_*,%snL)
if ($sock(%snCs).mark == $1) { return %snCs }
inc %snL
}
}
alias -l CreateCloneSocks {
var %snL 1
while (%snL <= $sock(fx.Chats_*,0)) {
var %snCs $sock(fx.Chats_*,%snL)
sockopen $+(fx.Clone_,$gettok(%snCs,2,$asc(_))) $sock(%snCs).ip $sock(%snCs).port
sockmark $+(fx.Clone_,$gettok(%snCs,2,$asc(_))) $1 $sock(%snCs).mark
inc %snL 1
}
set %CloneSockList $sock(fx.Chats_*,0)
}
alias -l CloneSocksJoin {
var %snL $sock(fx.Clone_*,0)
while ($sock(fx.Clone_*,%snL) != 0) {
var %snCs $sock(fx.Clone_*,%snL)
var %snCm $sock(%snCs).mark
send2mirc $+(:,$me,!) PART $gettok(%snCm,2,32)
sockclose $replace(%snCs,Clone,Chats)
sockrename %snCs $replace(%snCs,Clone,Chats)
sockwrite -n $replace(%snCs,Clone,Chats) JOIN $gettok(%snCm,2,32)
sockmark $replace(%snCs,Clone,Chats) $gettok(%snCm,2,32)
dec %snL
}
}
alias -l Send2mIRC {
sockwrite -n fx.lhost $1-
}
alias -l Send2ChatServers {
var %snL 1
while (%snL <= $sock(fx.Chats_*,0)) {
var %snCs $sock(fx.Chats_*,%snL)
sockwrite -n %snCS $1-
inc %snL
}
}
alias -l Send2Directory {
var %snC fx.finds
if ($sock(%snC)) {
sockwrite -n %snC $replace($1,JOIN,FINDS) $2-
sockmark %snC $2
}
else {
sockopen %snC $findsip $findsprt
sockmark %snC $1-
}
}
;fx.Clone_0001s
;fx.Chats_0001s
;fx.Finds
;fx.lhost
on *:sockopen:fx.?????*:{
var %snCs $gettoK($gettok($sockname,2,$asc(.)),1,$asc(_))
if (%snCs == finds) {
.timerKeepFinds 0 8 sockwrite -n $+(fx.,%snCs) $crlf
sockwrite -n $sockname $+( NICK $me,$crlf,$AUTHINIT,$crlf,$IRCV)
;sockwrite -n $sockname $authinit
}
elseif (%snCs == Chats) {
sockwrite -n $sockname $+( NICK $me,$crlf,$AUTHINIT,$crlf,$IRCV)
}
elseif (%snCs == Clone) {
sockwrite -n $sockname $+( NICK $gettok($sock($sockname).mark,1,32),$crlf,$AUTHINIT,$crlf,$IRCV)
}
}
on *:Sockread:fx.?????*:{
var %snCs $gettoK($gettok($sockname,2,$asc(.)),1,$asc(_)) | .var %read | .sockread %read | .tokenize 32 %read
WriteDebug $sockname :: %read
if (%snCs == finds) {
if ($1 == AUTH) {
if ($3 == S) && ($4 != :OK) {
var %x, %re = AUTH GateKeeper.* S :GKSSP\\0.*\\0\\0.*\\0\\0(.*), %y = $regsub($1-,%re,,%x)
echo -s $sky.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)
bset &authout 1 $sky.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)
sockwrite -n $sockname &authout
}
elseif (($3 == S) && ($4 == :OK)) { sockwrite -n $sockname AUTH GateKeeperPassport S $+(:,$passform) $lf user * * * $connex }
}
elseif ($2 == 613) {
echo -s $remove($4,:) $5 $sock($sockname).mark
Connect2Chat $remove($4,:) $5 $sock($sockname).mark
}
elseif ($2 == 702) {
%key = $r(1,999)
sockwrite -n $sockname CREATE CP $sock($sockname).mark H4X l $+ 1337 en-us %key 0
}
; else { sockwrite -n fx.lhost $1- }
}
elseif (%snCs == Chats) {
if ($1 == AUTH) {
if ($3 == S) && ($4 != :OK) {
var %x, %re = AUTH GateKeeper.* S :GKSSP\\0.*\\0\\0.*\\0\\0(.*), %y = $regsub($1-,%re,,%x)
bset &authout 1 $sky.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)
sockwrite -n $sockname &authout
}
elseif (($3 == S) && ($4 == :OK)) { sockwrite -n $sockname AUTH GateKeeperPassport S $+(:,$passform) $lf user * * * $connex $lf JOIN $sock($sockname).mark }
elseif ($3 == *) {
sockwrite -n $sockname user * * * $connex $lf JOIN $sock($sockname).mark
}
}
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 }
elseif ($2 == JOIN) {
sockwrite -n fx.lhost $deltok($1-,3,32)
if ($right($3,1) isin .@+) { sockwrite -tn fx.lhost :IRC7 MODE $remove($4,:) + $+ $replace($ifmatch,.,q,@,o,+,v) $remove($gettok($1,1,$asc(!)),:) }
}
elseif ($2 == MODE) {
sockwrite -n fx.lhost $1-
if ($4-5 == -q $me) {
if ($remove($gettok($1,1,33),:) != $me) {
if (!%no-q. [ $+ [ $3 ] ]) {
set -u3 %no-q. [ $+ [ $3 ] ] $true
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
}
}
}
elseif ($4-5 == +q $me) {
if (!%noq. [ $+ [ $3 ] ]) {
set -u3 %noq. [ $+ [ $3 ] ] $true
sockwrite -n $sockname PROP $3 ownerkey $msn.pass(10) $lf access $3 add owner $ial($me).addr
}
}
}
elseif ($2 == PROP) {
sockwrite -n fx.lhost $1-
if ($4 == OWNERKEY) {
if ($remove($5,:) == $null) {
if ($remove($gettok($1,1,33),:) != $me) {
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
}
}
else { hadd keys $3 $remove($5,:) | hsave -o keys $qt($scriptdirkeys.dat) }
}
}
elseif ($1 == PING) { sockwrite -tn $sockname PONG $2 | sockwrite -n fx.lhost $1- }
elseif ($2 == 403) { sockclose $sockname }
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 }
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 }
else {
sockwrite -n fx.lhost $1-
}
}
elseif (%snCs == Clone) {
if ($1 == AUTH) {
if ($3 == S) && ($4 != :OK) {
var %x, %re = AUTH GateKeeper.* S :GKSSP\\0.*\\0\\0.*\\0\\0(.*), %y = $regsub($1-,%re,,%x)
bset &authout 1 $sky.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)
sockwrite -n $sockname &authout
}
elseif (($3 == S) && ($4 == :OK)) {
sockwrite -n $sockname AUTH GateKeeperPassport S $+(:,$passform) $lf user * * * $connex
if (%CloneSocklist > 1) { dec %CloneSocklist }
else {
unset %CloneSocklist
Send2mIRC $+(:,$me) NICK $gettok($sock($sockname).mark,1,32)
CloneSocksJoin
}
}
}
elseif (910 == $2) { 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.smrk }
}
elseif (%snCs == lhost) {
if ($1 == JOIN) {
if ($getChatSock($2)) { sockwrite -n $getChatSock($2) $1- }
else {
Send2Directory $1-2
}
}
elseif ($1 == PRIVMSG) {
if ($getChatSock($2)) {
sockwrite -n $getChatSock($2) $1-
}
else {
sockwrite -n $getChatSock($comchan($2,1)) $1-
}
}
elseif ($1 == MODE) {
if ($getChatSock($2)) {
sockwrite -n $getChatSock($2) $1-
}
else {
Send2ChatServers $1-
}
}
elseif ($1 == findu) {
Send2Directory $1-2
}
elseif ($1 == nick) && ($comchan($me,1)) {
Send2ChatServers NICK $2
}
elseif ($1 == WHO) {
if (* == $2) {
Send2ChatServers $1-
}
else { sockwrite -n $getChatSock($2) $1- }
}
elseif ($1 == PING) {
Send2ChatServers $1-
}
elseif ($1 == CLONE) { CreateCloneSocks $2 }
elseif ($getChatSock($2)) {
sockwrite -n $getChatSock($2) $1-
}
elseif ($getChatSock($comchan($2,1))) {
sockwrite -n $getChatSock($comchan($2,1)) $1-
}
else {
Send2ChatServers $1-
}
}
}
on *:socklisten:start: {
sockaccept fx.lhost
send2mirc :IRCX 001 $me :Welcome to the $connex connection.
send2mirc :IRCX 004 $me : $+ $connex aiox abcdefhiklmnoprstuvxy
send2mirc :IRCX 800 $me 1 0 GateKeeper,NTLM 512 *
sockclose $sockname
}
on 1:LOAD:{
CreateSettings emails
CreateSettings ConnectionSettings
CreateSettings CloneSettings
CreateSettings RoomCreationSettings
CreateSettings ownerkeys
CreateSettings Hostkeys
SetSetting ConnectionSettings Debug 1
SetSetting ConnectionSettings Invisible 1
SetSetting ConnectionSettings AutoJoin 0
SetSetting CloneSettings QuitMessage 0
SetSetting RoomCreationSettings RoomModes wWtns
SetSetting RoomCreationSettings Limit 31337
SetSetting RoomCreationSettings Key Generate
SetSetting RoomCreationSettings CustomKey CustomKey
}
on 1:START:{
LoadSettings emails
LoadSettings ConnectionSettings
LoadSettings CloneSettings
LoadSettings RoomCreationSettings
LoadSettings ownerkeys
LoadSettings Hostkeys
}
alias CreateSettings {
if (!$hget($1)) {
hmake $1 100
}
}
alias LoadSettings {
if (!$hget($1)) {
hmake $1 100
}
hload -i $1 $+($scriptdir,settings.ini) $1
}
alias UnLoadSettings {
hsave -i $1 $+($scriptdir,settings.ini) $1
hfree $1
}
alias SetSetting { hadd -m $1 $2- }
on 1:EXIT:{
UnLoadSettings emails
UnLoadSettings ConnectionSettings
UnLoadSettings CloneSettings
UnLoadSettings RoomCreationSettings
UnLoadSettings ownerkeys
UnLoadSettings Hostkeys
}
;hsave -i emails $+($scriptdir,settings.ini) emails
alias loademails {
if ($1 == -d) {
did -r FXDialog 57
if ($hget(emails,0).item > 0) {
var %x $hget(emails,0).item
while (%x) {
did -a FXDialog 57 $hget(emails,%x).item
dec %x
}
}
}
}
alias OpenFXDialog { dialog -m FXDialog FXDialog }
alias loadSettings2Dialog {
loademails -d
if ($hget(ConnectionSettings,Invisible) == 1) { did -c FXDialog 16 }
if ($hget(ConnectionSettings,Debug) == 1) { did -c FXDialog 18 }
if ($hget(ConnectionSettings,AutoJoin) == 1) { did -c FXDialog 15 }
if (%Fx.AutoJoin) { did -r FXDialog 17 | did -a FXDialog 17 %Fx.AutoJoin }
if ($hget(CloneSettings,QuitMessage) == 1) { did -c FXDialog 26 }
if (%FX.CloneQuit) { did -r FXDialog 27 | did -a FXDialog 27 %Fx.CloneQuit }
if ($hget(RoomCreationSettings,Key) == Generate) { did -c FXDialog 51 | did -r FXDialog 49 | did -a FXDialog 49 $rkey }
if ($hget(RoomCreationSettings,Key) == CustomKey) { did -c FXDialog 52 | did -r FXDialog 49 | did -a FXDialog 49 $iif(%Fx.Qkey,%Fx.Qkey,CustomKey) }
if ($hget(RoomCreationSettings,RoomModes)) {
if (w isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 38 }
if (W isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 39 }
if (t isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 46 }
if (m isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 40 }
if (i isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 41 }
if (n isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 45 }
if (h isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 43 }
if (p isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 42 }
if (s isincs $hget(RoomCreationSettings,RoomModes)) { did -c FXDialog 44 }
}
if ($hget(RoomCreationSettings,Limit)) { did -r FXDialog 37 | did -a FXDialog 37 $hget(RoomCreationSettings,Limit) }
if (%settings.CreateTopic) { did -r FXDialog 32 | did -a FXDialog 32 %settings.CreateTopic }
did -r fxDialog 21 | did -a fxDialog 21 $me
did -r fxDialog 58 | did -a fxDialog 58 $me
did -r fxDialog 47 | did -a fxDialog 47 $+(+,$iif($hget(RoomCreationSettings,RoomModes),$hget(RoomCreationSettings,RoomModes)),l) $iif($hget(RoomCreationSettings,Limit),$hget(RoomCreationSettings,Limit),$did(fxDialog,37))
}
on 1:dialog:FXDialog:init:0: {
loadSettings2Dialog
}
on 1:dialog:FXDialog:sclick:*: {
if ($did == 5) { dialog -c FxDialog FxDialog }
elseif ($did == 4) { dialog -c FxDialog FxDialog }
elseif ($did == 24) {
if ($did(FXDialog,22)) { clone $did(FXDialog,22) }
}
elseif ($did == 42) { did -u FXDialog 43 | did -u FXDialog 44 }
elseif ($did == 43) { did -u FXDialog 42 | did -u FXDialog 44 }
elseif ($did == 44) { did -u FXDIalog 42 | did -u FXDialog 43 }
elseif ($did == 51) { did -r FXDialog 49 | did -a FXDialog 49 $rkey }
elseif ($did == 52) { did -r FXDialog 49 | did -a FXDialog 49 CustomKeyHere }
elseif ($did == 69) {
SetSetting emails $did(FXDialog,57) $did(FXDialog,11)
echo -s $input("Successfully Added email $did(FXDialog,57) $+ ",o)
}
elseif ($did == 57) { did -r FXDialog 11 | did -a FXDialog 11 $hget(emails,$did(fxDialog,57).seltext) }
}
dialog FXDialog {
title "fx Connection Dialog"
size -1 -1 438 134
option dbu
button "Close", 5, 350 118 37 12
button "Save && Close", 4, 309 118 39 12
tab "Connect", 6, 2 5 434 105
box "Update Email", 7, 1 22 151 81, tab 6
text "Email", 9, 3 36 28 8, tab 6 center
box "Connection Options", 13, 152 22 170 81, tab 6
button "Connect", 14, 271 85 44 12, tab 6
check "Invisible (+i)", 16, 157 57 43 10, tab 6 flat
edit "", 11, 31 55 117 10, tab 6 pass
text "password", 10, 3 55 28 8, tab 6 center
button "Update", 12, 116 69 32 14, tab 6
check "Auto Join", 15, 157 74 36 10, tab 6 flat
edit "%#test,%#lobby", 17, 198 74 119 10, tab 6
check "@debug", 18, 206 58 36 10, tab 6 flat
combo 57, 31 34 117 32, tab 6 size edit drop
text "Nick", 31, 157 44 37 7, tab 6 center
edit "", 58, 197 44 118 10, tab 6
button "Add email", 69, 77 69 37 14, tab 6
tab "Clone Settings", 3
box "Nick Changes", 19, 7 24 134 81, tab 3
text "Nick", 20, 15 34 25 10, tab 3 center
edit "", 21, 44 34 90 10, tab 3 read
edit "", 22, 44 49 89 10, tab 3
button "Clone Hop", 24, 94 67 37 12, tab 3
box "Settings", 25, 144 24 241 39, tab 3
check "Quit Message", 26, 149 37 50 10, tab 3 flat
text "Clone", 23, 15 48 25 10, tab 3 center
box "Data", 53, 144 65 241 41, tab 3
list 54, 180 73 197 27, tab 3 size vsbar
combo 8, 198 37 141 25, tab 3 size edit drop
button "Save Quit Msg", 70, 345 36 37 12, tab 3
tab "Room Creation", 28
box "Create a Room", 29, 6 21 199 81, tab 28
text "Room Name", 30, 12 32 40 11, tab 28 center
edit "A place 2 Chat.", 32, 62 47 134 10, tab 28
box "Room Modes", 34, 207 21 221 81, tab 28
button "Create", 35, 161 86 37 13, tab 28
text "+l (Limit)", 36, 222 73 27 9, tab 28 center
edit "1337", 37, 253 73 33 10, tab 28
check "+w (no Whispers)", 38, 215 32 62 10, tab 28 flat
text "Topic", 33, 12 47 40 11, tab 28 center
check "+W (no Guest Whispers)", 39, 276 32 71 10, tab 28 flat
check "+m (moderate)", 40, 215 44 50 10, tab 28 flat
check "+i invite only", 41, 276 44 50 10, tab 28 flat
check "+p (Private Room)", 42, 276 56 58 10, tab 28 flat
check "+h (Hidden Room)", 43, 215 56 55 10, tab 28 flat
check "+s (Secret Room)", 44, 354 57 54 10, tab 28 flat
check "+n (No external)", 45, 354 45 54 10, tab 28 flat
check "+t (topic Lock)", 46, 354 32 50 10, tab 28 flat
edit "", 47, 333 73 73 10, disable tab 28
text "Modes Set", 48, 298 73 32 8, tab 28 center
edit "", 49, 62 62 134 10, tab 28
text "OwnerKey", 50, 12 62 40 11, tab 28 center
radio "Generate Key", 51, 62 76 50 10, tab 28
radio "Custom Key", 52, 116 76 50 10, tab 28
button "Save Settings", 71, 121 87 37 12, tab 28
edit "", 27, 62 32 134 10, tab 28
tab "Chatroom Settings", 55
box "Chatroom Properties", 56, 4 23 429 84, tab 55
combo 59, 41 35 138 27, tab 55 size edit drop
text "Chatroom", 60, 10 35 28 8, tab 55 center
list 61, 247 49 176 50, tab 55 size vsbar
check "enable Aop", 62, 41 49 38 10, tab 55 flat
check "Deowner/Dehost", 64, 85 63 56 10, tab 55 flat
check "Add Access", 65, 41 63 40 10, tab 55 flat
check "Access Prot", 66, 146 78 44 10, tab 55 flat
check "-q Prot", 67, 85 78 50 10, tab 55 flat
check "enable Banlist", 63, 85 49 46 10, tab 55 flat
check "Kick Prot", 68, 41 78 39 10, tab 55 flat
button "Save Settings", 72, 183 35 40 12, tab 55
menu "Menu", 1
item "Item2", 2, 1
}
## EXO & SKY'S AUTHENTICATION STUFF
alias neko.hash {
if (*:GKSSP* iswm $1-) { var %x, %re = .*:GKSSP\\0.*\\0\\0.*\\0\\0(.*), %y = $regsub($1-,%re,,%x) | tokenize 32 $regml(1) }
var %m
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-))
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))
return $neko.hex2chr($neko.hex2esc($md5(&h2,1)))
}
alias neko.chr2dec return $regsubex($1,/(.{1})/g,$asc(\1) $+ $chr(32))
alias neko.hex2chr return $regsubex($1,/([0-9A-Fa-f]{2})/g,$chr($base(\1,16,10)))
alias neko.hex2bin return $regsubex($1,/([0-9A-Fa-f]{2})/g,$base(\1,16,10) $+ $chr(32))
alias neko.hex2esc return $regsubex($1,/([0-9A-Fa-f]{2})/g,$hex2esc(\1))
alias hex2esc return $replacex($1,5C,5C5C,00,5C30,0A,5C6E,0D,5C72,2C,5C63,09,5C74,20,5C62)
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)
;elseif ($4 != :OK) sockwrite $sockname $+($hget(GKSSP,AUTHS),$GKSSP($4,$sock($sockname).ip).challenge,$SelectGateKeeper,$lf)
alias gkssp_form {
var %output,%hex,%x = $1,%i = 1
;seq=7,5,3,1,11,9,15,13,17
if ($len($1) < 32) { %x = $+($str(0,$calc(32 - $len($ifmatch)),$ifmatch) }
%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)
return $__tochr($__hexbin(%x,NULL))
}
alias __tochr {
var %o,%i = 1
while (%i <= $numtok($1-,32)) {
%o = %o $+ $chr($gettok($1-,%i,32))
inc %i
}
return %o
}
alias __hexbin {
var %o,%i = 1,%hex,%switch
if (!$2) {
;Excluding Escape Char
while (%i <= $len($1)) {
%o = %o $base($mid($1,%i,2),16,10)
inc %i 2
}
return %o
}
else {
;Including Escaps Char (0=00,t=09,n=0A,r=0D,b=20,c=2C,\=5C)
while (%i <= $len($1)) {
%switch = $mid($1,%i,2)
if (%switch == 00) { %o = %o 92 48 }
elseif (%switch == 09) { %o = %o 92 116 }
elseif (%switch == 0A) { %o = %o 92 110 }
elseif (%switch == 0D) { %o = %o 92 114 }
elseif (%switch == 20) { %o = %o 92 98 }
elseif (%switch == 2C) { %o = %o 92 99 }
elseif (%switch == 5C) { %o = %o 92 92 }
else { %o = %o $base(%switch,16,10) }
inc %i 2
}
return %o
}
}
alias SelectGateKeeper { return $gkssp_form($iif(%GATEKEEPER,$ifmatch,$binary_gate)) }
alias binary_gate {
var %i = 1, %o
while (%i <= 16) {
%o = %o $+ $base($rand(0,3),10,2,2)
inc %i
}
return %o
}
alias hex_gate {
var %i = 1, %o
while (%i <= 16) {
%o = %o $+ $base($rand(0,255),10,16,2)
inc %i
}
return %o
}
####EXO####
alias sky.tobin { return $regsubex($1-,/(*UTF8)(.)/g,$asc(\1) $+ $chr(32)) }
alias msnx.hex2bin { return $regsubex($1,/([0-9A-Fa-f]{2})/g,$base(\1,16,10) $+ $chr(32)) }
alias msnx.tobin { return $regsubex($1,/(*UTF8)(\\?.)/g,$iif(\* iswm \1,$replacex(\1,\ $+ 0,0,\ $+ t,9,\ $+ n,10,\ $+ r,13,\ $+ b,32,\ $+ c,44,\ $+ \,92),$asc(\1)) $+ $chr(32)) }
alias msnx.hash { 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-) | 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)) | return $msnx.unehex($md5(&h2,1)) }
alias msnx.unehex { return $regsubex($1, /(..)/g, $iif((\1 isin 00 09 0A 0D 20 2C 5C),\ $+ $replace(\1, 00, 0, 09, t, 0A, n, 0D, r, 20, b, 2C, c, 5C, \),$chr($base(\1, 16, 10)))) }
alias msn.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)
###EXO END###
##### LUKES PASSPORT UPDATER #######
##### EVERYONE THANK LUKE ######
alias ud>File return "Logs\Update.ini"
alias sPre return $+($$1,>,$r(A,Z),$r(1,9999))
alias ud var %s = $sPre(UD>S1) | sockopen %s login.live.com 80 | sockmark %s $$1 $$2
alias bF return $bfind($$1,1,$$2)
on *:SOCKOPEN:UD>*:{
var %s = $sockname, %sm = $sock(%s).mark, %stg = $gettok(%s,2,62), %sw = sockwrite -n %s | tokenize 32 %sm
echo -a %stg - %sm
if (%stg == S1) { %sw GET /wlogin.srf?appid=000000004C04B301&alg=wsignin1.0 $+(HTTP/1.1,$crlf,Host: login.live.com,$crlf,User-Agent: root,$crlf,Cookie: MUID=DFD2582018CB460B91F4707517868FF8,$crlf,$crlf) }
if (%stg == S2) { var %str = login= $+ $replace($1,@,$chr(37) $+ 40) $+ &passwd= $+ $2 $+ &SI=Sign+in&PPFT= $+ $hget(PPFT,$1) | %sw POST /ppsecure/post.srf?appid=000000004C04B301&alg=wsignin1.0&bk= $+ $ctime $+(HTTP/1.1,$crlf,Host: login.live.com,$crlf,Content-Length: $len(%str),$crlf,User-Agent: Root,$crlf,Content-Type: application/x-www-form-urlencoded,$crlf,Cookie: MSPOK=,$hget(MSPOK,$1),$crlf,$crlf,%str) | echo 04 #data sent }
if (%stg == S3) { var %dat = stoken= $+ $replace($replace($3,$chr(37) $+ 2,$chr(37) $+ 252),$chr(37) $+ 3D,$chr(37) $+ 253D) $+ &action=login | %sw POST /webauth-handler.aspx $+(HTTP/1.1,$crlf,Host: irc7.com,$crlf,Content-Length: $len(%dat),$crlf,User-Agent: Root,$crlf,Content-Type: application/x-www-form-urlencoded,$crlf,Accept: */*,$crlf,$crlf,%dat) }
if (%stg == S4) { %sw GET /RenderChat.aspx $+(HTTP/1.1,$crlf,Host: irc7.com,$crlf,User-Agent: Root,$crlf,Accept: */*,$crlf,Cookie: $3-,$crlf,$crlf) }
}
on *:SOCKREAD:UD>*:{
sockread &a | tokenize 32 $sock($sockname).mark
var %s = $sockname, %sm = $sock(%s).mark, %stg = $gettok(%s,2,62)
; echo -a %s - %stg - $1-
if (%stg == S1) {
var %nig = $bfind(&a,1,MSPOK=) | if (%nig > 0) { hadd -m MSPOK $1 $gettok($gettok($mid($bvar(&a,1-).text,%nig),1,59),2,61) }
var %nig = $bfind(&a,1,name="PPFT") | if (%nig > 0) { hadd -m PPFT $1 $gettok($gettok($mid($bvar(&a,1-).text,%nig),4,61),1,34) | var %sck = $sPre(UD>S2) | sockopen -e %sck login.live.com 443 | sockmark %sck %sm }
}
if (%stg == S2) {
var %nig = $bfind(&a,1,stoken) | if (%nig > 0) { echo 04Now getting ticket & profile for $gettok(%sm,1,32) | var %s = $sPre(UD>S3) | sockopen %s irc7.com 80 | sockmark %s $$1- $gettok($mid($bvar(&a,1-).text,%nig),5,34) $gettok(%sm,1-2,32) }
var %nig = $bfind(&a,1,WLWorkflow) | if (%nig > 0) { echo 04Not a live account | sockclose $sockname }
; echo -a er $bvar(&a,1-).text
}
if (%stg == S3) {
echo -a Stage 3 DONE
var %nig = $bfind(&a,1,webauthtoken=) | if (%nig > 0) { sockmark $sockname $1 $3 $gettok($mid($bvar(&a,1-).text,%nig),1,59) }
var %nig = $bfind(&a,1,MSPAuth=) | if (%nig > 0) { sockmark $sockname $sock($sockname).mark $+ ; $gettok($mid($bvar(&a,1-).text,%nig),1,59) }
var %nig = $bfind(&a,1,MSPProf=) | if (%nig > 0) { sockmark $sockname $sock($sockname).mark $+ ; $gettok($mid($bvar(&a,1-).text,%nig),1,59) }
var %s = $sPre(UD>S4) | sockopen %s irc7.com 80 | sockmark %s $sock($sockname).mark
}
if (%stg == S4) {
var %w = writeini -n $ud>File $$1
var %nig = $bfind(&a,1,<UniqueUserID>) | if (%nig > 0) { var %u = $gettok($gettok($mid($bvar(&a,1-).text,%nig),2,62),1,60) | echo -a $1 UID %u | %w UID %u }
var %nig = $bfind(&a,1,<PassportTicket>) | if (%nig > 0) { var %t = $gettok($gettok($mid($bvar(&a,1-).text,%nig),2,62),1,60) | echo $1 Ticket %t | %w Ticket %t | set %ticket %t }
var %nig = $bfind(&a,1,<PassportProfile>) | if (%nig > 0) { var %p = $gettok($gettok($mid($bvar(&a,1-).text,%nig),2,62),1,60) | echo $1 Profile %p | %w Profile %p | set %profile %p }
}
}