; ################################################################# ; ## Morse/Binary/Octal and Hex translations ## ; ## Written by Urza (Urza23@hotmail.com) ## ; ## Written and tested in mIRC 6.16/6.17 ## ; ################################################################# ; ******************************************************************* ; * Setup on load * ; ******************************************************************* on *:load: { echo -a 4*** Successfuly loaded Morse/Binary/Hex translation script by Urza echo -a 4*** Usage: echo -a 4*** /Morse, /Hex, /Oct and /Bin to send text publicly to the channel echo -a 4*** /DeMorse, /DeHex, /DeOct and /DeBin To Decode privately echo -a 4*** /ToMorse, /ToHex, /ToOct and /ToBin To Encode privately } ; ******************************************************************* ; * Switch between display styles * ; ******************************************************************* menu channel { Morse/Binary/Hex .Talk In ..Morse: Morse $$?="What do you want to say?" ..Binary: Bin $$?="What do you want to say?" ..Octal: Oct $$?="What do you want to say?" ..Hex: Hex $$?="What do you want to say?" .Private Translation ..To Morse: Tomorse $$?="What do you want to translate?" ..From Morse: Demorse $$?="What do you want to translate?" ..- ..To Binary: Tobin $$?="What do you want to translate?" ..From Binary: Debin $$?="What do you want to translate?" ..- ..To Octal: Tooct $$?="What do you want to translate?" ..From Octal: Deoct $$?="What do you want to translate?" ..- ..To Hex: Tohex $$?="What do you want to translate?" ..From Hex: Dehex $$?="What do you want to translate?" .Use Prefix when sending.. .. $iif($readini(settings.ini,Decodes,PrefixMsg) == on,$style(1)) Messages: { writeini settings.ini Decodes PrefixMsg $iif($readini(settings.ini,Decodes,PrefixMsg) == on,off,on) if ($readini(settings.ini,Decodes,PrefixMsg) == on) echo -a 4*** Encoded messages will now be prefixed with MORSE-, HEX-, OCT- and BIN- else echo -a 4*** Encoded messages will no longer be prefixed } .. $iif($readini(settings.ini,Decodes,PrefixAct) == on,$style(1)) Actions: { writeini settings.ini Decodes PrefixAct $iif($readini(settings.ini,Decodes,PrefixAct) == on,off,on) if ($readini(settings.ini,Decodes,PrefixAct) == on) echo -a 4*** Encoded Actions will now be prefixed with MORSE-, HEX-, OCT- and BIN- else echo -a 4*** Encoded Actions will no longer be prefixed. } } alias formatnick return $iif($left($nick($chan,$nick).pnick,1) isin ~&@%+,$left($nick($chan,$nick).pnick,1) $+ $nick,$nick) alias formatme return $iif($left($nick($chan,$me).pnick,1) isin ~&@%+,$left($nick($chan,$me).pnick,1) $+ $me,$me) ; ******************************************************************* ; * Text/Action events - output translation * ; ******************************************************************* on ^*:text:*:*: if ($check4decode($1-)) output Text $1- on ^*:action:*:*: if ($check4decode($1-)) output Action $1- alias -l TextPref return $color(normal) -gtli2 $iif($chan,$chan,$nick) $+(<,$iif($chan,$formatnick,$nick),>) alias -l ActPref return $color(action) -gtli2 $iif($chan,$chan,$nick) * $iif($chan,$formatnick,$nick) alias -l Output { var %style = $1 | tokenize 32 $2- window -g1 $iif($chan,$chan,$nick) goto $check4decode($1-) haltdef :Morse var %m = $iif($1 == MORSE-,$2-,$1-) echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Morse: $iif(%style == action,* $nick) $DecodeMorse(%m),$chr(41)) halt :Binary var %b = $iif($1 == BIN-,$2-,$1-) echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Binary: $iif(%style == action,* $nick) $DecodeBase(2,8,%b),$chr(41)) halt :Octal var %o = $iif($1 == OCT-,$2-,$1-) if ($DecodeBase(8,3,%o) == -INVALID-) goto Hex echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Octal: $iif(%style == action,* $nick) $DecodeBase(8,3,%o),$chr(41)) halt :Hex var %h = $iif($1 == HEX-,$2-,$1-) if ($DecodeBase(16,2,%h) == -INVALID-) return echo $iif(%style == text,$TextPref,$actpref) $1- $+(10,$chr(40),Hex: $iif(%style == action,* $nick) $DecodeBase(16,2,%h),$chr(41)) halt } ; ******************************************************************* ; * Process text - Check if if decoding is required * ; ******************************************************************* alias -l Check4Decode { tokenize 32 $1- var %whole = $len($1-) ;*** Check For Morse *** var %nonmorse = $len($remove($1-,.,-,/,$chr(32))) | var %morsepercent = $calc(100 - %nonmorse / %whole * 100) ;*** Check For Binary *** var %binary = $calc(%whole - $len($remove($1-,1,0))) | var %binPercent = $calc(%binary / %whole * 100) ;*** Check For Octal *** var %nonoctal = $len($remove($1-,0,1,2,3,4,5,6,7)) | var %octpercent = $calc(100 - %nonoctal / %whole * 100) ;*** Check For hex *** var %nonhex = $len($remove($1-,1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F)) | var %hexPercent = $calc(100 - %nonhex / %whole * 100) if ($1 == MORSE-) || ((%morsepercent > 75) && ($DecodeMorse($1-) != $1-)) return Morse elseif ($1 == BIN-) || ((%binpercent > 99) && ($len($1-) >= 8)) return Binary elseif ($1 == OCT-) || ((%octpercent > 99) && ($len($1-) >= 3)) return Octal elseif ($1 == HEX-) || ((%hexpercent > 99) && ($len($1-) >= 2)) return Hex } ; ******************************************************************* ; * Base X Encryption/Decryption Aliases * ; ******************************************************************* alias -l DecodeBase { var %base = $1 | var %charlength = $2 | var %Original = $remove($3-,$chr(32)) while (%Original) { var %translatechar = $base($left(%Original,%charlength),%base,10) if ((%translatechar > 126) || (%translatechar < 32)) && (!%noinvalid) return -INVALID- var %translate = $chr(%translatechar) if (%translatechar = 32) var %message = %message %translate else var %message = %message $+ %translate var %Original = $right(%Original,- $+ %charlength) } unset %noinvalid return %message } alias EncodeBase { var %base = $1 | var %charlength = $2 | var %msg = $3- while (%msg) { var %basechar = $asc($left(%msg,1)) var %Encoded = %Encoded $+ $+($str(0,$calc(%charlength - $len($base(%basechar,10,%base)))),$base(%basechar,10,%base)) var %msg = $right(%msg,-1) inc %x } return %Encoded } ; ******************************************************************* ; * Binary Send/Translate aliases * ; ******************************************************************* alias debin { if (!$1) { echo 4 -ta ERROR: no text specified | halt } set -u5 %noinvalid on echo 10 -tai2 Binary Translation: $DecodeBase(2,8,$1-) } alias tobin { if (!$1) { echo 4 -ta ERROR: no text specified | halt } echo 10 -tai2 Binary: $EncodeBase(2,8,$1-) } alias binary { bin $1- } alias bin { if (!$1) { echo 4 -ta ERROR: no text specified | halt } .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,BIN-) $EncodeBase(2,8,$1-) echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,BIN-) $EncodeBase(2,8,$1-) 10 $+($chr(40),Binary: $1-,$chr(41)) } alias binme { if (!$1) { echo 4 -ta ERROR: no text specified | halt } .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,BIN-) $EncodeBase(2,8,$1-) echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,BIN-) $EncodeBase(2,8,$1-) 10 $+($chr(40),Binary: * $me $1-,$chr(41)) } ; ******************************************************************* ; * Octal Send/Translate aliases * ; ******************************************************************* alias deOct { if (!$1) { echo 4 -ta ERROR: no text specified | halt } set -u5 %noinvalid on echo 10 -tai2 Octal Translation: $DecodeBase(8,3,$1-) } alias toOct { if (!$1) { echo 4 -ta ERROR: no text specified | halt } echo 10 -tai2 Octal: $EncodeBase(8,3,$1-) } alias Octal { Oct $1- } alias Oct { if (!$1) { echo 4 -ta ERROR: no text specified | halt } .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,OCT-) $EncodeBase(8,3,$1-) echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,OCT-) $EncodeBase(8,3,$1-) 10 $+($chr(40),Octal: $1-,$chr(41)) } alias octme { if (!$1) { echo 4 -ta ERROR: no text specified | halt } .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,OCT-) $EncodeBase(8,3,$1-) echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,OCT-) $EncodeBase(8,3,$1-) 10 $+($chr(40),Octal: * $me $1-,$chr(41)) } ; ******************************************************************* ; * Hex Send/Translate aliases * ; ******************************************************************* alias dehex { if (!$1) { echo 4 -ta ERROR: no text specified | halt } set -u5 %noinvalid on echo 10 -tai2 Hex Translation: $DecodeBase(16,2,$1-) } alias tohex { if (!$1) { echo 4 -ta ERROR: no text specified | halt } echo 10 -tai2 Hex: $EncodeBase(16,2,$1-) } alias hex { if (!$1) { echo 4 -ta ERROR: no text specified | halt } .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,HEX-) $EncodeBase(16,2,$1-) echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,HEX-) $EncodeBase(16,2,$1-) 10 $+($chr(40),Hex: $1-,$chr(41)) } alias hexme { .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,HEX-) $EncodeBase(16,2,$1-) echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,HEX-) $EncodeBase(16,2,$1-) 10 $+($chr(40),Hex: * $me $1-,$chr(41)) } ; ******************************************************************* ; * Morse Send/Translate aliases * ; ******************************************************************* alias demorse { if (!$1) { echo 4 -ta ERROR: no text specified | halt } set -u5 %noinvaid on echo 10 -ta Morse Code Translation: $DecodeMorse($1-) } alias tomorse { if (!$1) { echo 4 -ta ERROR: no text specified | halt } echo 10 -ta Morse Code: $encodeMorse($1-) } alias morse { if (!$1) { echo 4 -ta ERROR: no text specified | halt } .msg $active $iif($readini(settings.ini,Decodes,PrefixMsg) == on,MORSE-) $EncodeMorse($1-) echo $color(own) -tai2 $+(<,$iif($chan,$formatme,$me),>) $iif($readini(settings.ini,Decodes,PrefixMsg) == on,MORSE-) $EncodeMorse($1-) 10 $+($chr(40),Morse: $1-,$chr(41)) } alias morseme { if (!$1) { echo 4 -ta ERROR: no text specified | halt } .describe $active $iif($readini(settings.ini,Decodes,PrefixAct) == on,MORSE-) $EncodeMorse($1-) echo $color(action) -tai2 * $iif($chan,$formatme,$me) $iif($readini(settings.ini,Decodes,PrefixAct) == on,MORSE-) $EncodeMorse($1-) 10 $+($chr(40),Morse: * $me $1-,$chr(41)) } ; ******************************************************************* ; * Morse Encryption/Decryption Aliases * ; ******************************************************************* alias EncodeMorse { var %msg = $1- var %x = 1 while (%x <= $len(%msg)) { var %morse = %morse $encmorse($mid(%msg,%x,1)) inc %x } return %morse } alias DecodeMorse { tokenize 32 $1- var %x = 1 while (%x <= $0) { var %morse = %morse $+ $decmorse($ [ $+ [ %x ] ]) inc %x } var %morse = $replacecs(%morse,-SPACEHOLDER-,$chr(32)) return %morse } ; ******************************************************************* ; * Mose Code Character translation aliases * ; ******************************************************************* alias encmorse { if ($1 == a) return .- elseif ($1 == b) return -... elseif ($1 == c) return -.-. elseif ($1 == d) return -.. elseif ($1 == e) return . elseif ($1 == f) return ..-. elseif ($1 == g) return --. elseif ($1 == h) return .... elseif ($1 == i) return .. elseif ($1 == j) return .--- elseif ($1 == k) return -.- elseif ($1 == l) return .-.. elseif ($1 == m) return -- elseif ($1 == n) return -. elseif ($1 == o) return --- elseif ($1 == p) return .--. elseif ($1 == q) return --.- elseif ($1 == r) return .-. elseif ($1 == s) return ... elseif ($1 == t) return - elseif ($1 == u) return ..- elseif ($1 == v) return ...- elseif ($1 == w) return .-- elseif ($1 == x) return -..- elseif ($1 == y) return -.-- elseif ($1 == z) return --.. elseif ($1 == 0) return ----- elseif ($1 == 1) return .---- elseif ($1 == 2) return ..--- elseif ($1 == 3) return ...-- elseif ($1 == 4) return ....- elseif ($1 == 5) return ..... elseif ($1 == 6) return -.... elseif ($1 == 7) return --... elseif ($1 == 8) return ---.. elseif ($1 == 9) return ----. elseif ($1 == .) return .-.-.- elseif ($1 == ,) return --..-- elseif ($1 == :) return ---... elseif ($1 == ?) return ..--.. elseif ($1 == ') return .----. elseif ($1 == -) return -....- elseif ($1 == /) return -..-. elseif ($1 == ") return .-..-. elseif ($1 == @) return .--.-. elseif ($1 == =) return -...- elseif ($1 == $chr(32)) return $chr(32) $+ / $+ $chr(32) else return $1 } alias decmorse { if ($1 == .- ) return a elseif ($1 == -... ) return b elseif ($1 == -.-. ) return c elseif ($1 == -.. ) return d elseif ($1 == . ) return e elseif ($1 == ..-. ) return f elseif ($1 == --. ) return g elseif ($1 == .... ) return h elseif ($1 == .. ) return i elseif ($1 == .--- ) return j elseif ($1 == -.- ) return k elseif ($1 == .-.. ) return l elseif ($1 == -- ) return m elseif ($1 == -. ) return n elseif ($1 == --- ) return o elseif ($1 == .--. ) return p elseif ($1 == --.- ) return q elseif ($1 == .-. ) return r elseif ($1 == ... ) return s elseif ($1 == - ) return t elseif ($1 == ..- ) return u elseif ($1 == ...- ) return v elseif ($1 == .-- ) return w elseif ($1 == -..- ) return x elseif ($1 == -.-- ) return y elseif ($1 == --.. ) return z elseif ($1 == ----- ) return 0 elseif ($1 == .---- ) return 1 elseif ($1 == ..--- ) return 2 elseif ($1 == ...-- ) return 3 elseif ($1 == ....- ) return 4 elseif ($1 == ..... ) return 5 elseif ($1 == -.... ) return 6 elseif ($1 == --... ) return 7 elseif ($1 == ---.. ) return 8 elseif ($1 == ----. ) return 9 elseif ($1 == .-.-.- ) return . elseif ($1 == --..-- ) return , elseif ($1 == ---... ) return : elseif ($1 == ..--.. ) return ? elseif ($1 == .----. ) return ' elseif ($1 == -....- ) return - elseif ($1 == -..-. ) return / elseif ($1 == .-..-. ) return " elseif ($1 == .--.-. ) return @ elseif ($1 == -...- ) return = elseif ($1 == /) return -SPACEHOLDER- else return $1 }