Skip to content

Instantly share code, notes, and snippets.

@mcnemesis
Last active April 21, 2026 12:45
Show Gist options
  • Select an option

  • Save mcnemesis/536cf82e471da5939c204532bbe7692e to your computer and use it in GitHub Desktop.

Select an option

Save mcnemesis/536cf82e471da5939c204532bbe7692e to your computer and use it in GitHub Desktop.
The GHOST MESSAGES Protocol in TEA | encode and decode between invisible and visible text messages!
v:vABOUT:{#+##################+#
Ghost Messages Protocol
Encoder-N-Decoder v1.4
------------------------------------------
Imagine coming across a [BLANK] text file full of "nothing" but space!
It's like looking at a ghost.. normal eyes world see nothing!!
This program, helps you do that for any text message; re-write it
using nothing but space (what we call the Ghost Message code).
But also it can do the reverse.. help you read messages that are invisible to those without this superpower. Handles all kinds of ascii-compatible text.
------------------------------------------
Original idea started in the 2010s at Nuchwezi Research.
This is the TEA version, by Fut. Prof. Joseph Willrich Lutalo
#+##################+#}
---[INTRO]
y:vABOUT | i:
#the GM ordered alphabet sequence for reference...
#also includes Newline char, and # should always come last!
v:az:{abcdefghijklmnopqrstuvwxyz 0123456789.?*/+-()
!@:{}|[]ABCDEFGHIJKLMNOPQRSTUVWXYZ,"';&@%=^$~<>\_#}
#---[Menu]
y*:|v:vIN
l:lPROMPT
y!:vIN|f!:^0$:lMENU
i!:{Enter Message to Process:}|i:|v:vIN
j:lPROMPT
l:lMENU
i!:{Choose what to do:
1. Make Message Invisible
2. Read Invisible Message}|i:|v:vOPT
f!:^[12]:lMENU:lPROCESS
l:lPROCESS
#first store msg..
y:vIN|v:vMESSAGE
#go process..
y:vOPT|f:1:lENCODER:lDECODER
#---[encoder]
l:lENCODER
y:vMESSAGE
# first, we deal with special chars _ and #
r!:{_}:{±}
# [longest] for #
r!:{#}:{#################################################################################################_}
# [second longest] deal with special char _
r!:{±}:{################################################################################################_}
# alpha..
r!:a:{#_}
r!:b:{##_}
r!:c:{###_}
r!:d:{####_}
r!:e:{#####_}
r!:f:{######_}
r!:g:{#######_}
r!:h:{########_}
r!:i:{#########_}
r!:j:{##########_}
r!:k:{###########_}
r!:l:{############_}
r!:m:{#############_}
r!:n:{##############_}
r!:o:{###############_}
r!:p:{################_}
r!:q:{#################_}
r!:r:{##################_}
r!:s:{###################_}
r!:t:{####################_}
r!:u:{#####################_}
r!:v:{######################_}
r!:w:{#######################_}
r!:x:{########################_}
r!:y:{#########################_}
r!:z:{##########################_}
r!:{ }:{###########################_}
# numerals...
r!:{0}:{############################_}
r!:{1}:{#############################_}
r!:{2}:{##############################_}
r!:{3}:{###############################_}
r!:{4}:{################################_}
r!:{5}:{#################################_}
r!:{6}:{##################################_}
r!:{7}:{###################################_}
r!:{8}:{####################################_}
r!:{9}:{#####################################_}
# symbols..
r!:{\.}:{######################################_}
r!:{\?}:{#######################################_}
r!:{\*}:{########################################_}
r!:{/}:{#########################################_}
r!:{\+}:{##########################################_}
r!:{-}:{###########################################_}
r!:{\(}:{############################################_}
r!:{\)}:{#############################################_}
r!:{\n}:{##############################################_}
r!:{!}:{###############################################_}
r!:{@}:{################################################_}
r!:{:}:{#################################################_}
r!:{\{}:{##################################################_}
r!:{\}}:{###################################################_}
r!:{\|}:{####################################################_}
r!:{\[}:{#####################################################_}
r!:{\]}:{######################################################_}
# UPPER ALPHA...
r!:{A}:{#######################################################_}
r!:{B}:{########################################################_}
r!:{C}:{#########################################################_}
r!:{D}:{##########################################################_}
r!:{E}:{###########################################################_}
r!:{F}:{############################################################_}
r!:{G}:{#############################################################_}
r!:{H}:{##############################################################_}
r!:{I}:{###############################################################_}
r!:{J}:{################################################################_}
r!:{K}:{#################################################################_}
r!:{L}:{##################################################################_}
r!:{M}:{###################################################################_}
r!:{N}:{####################################################################_}
r!:{O}:{#####################################################################_}
r!:{P}:{######################################################################_}
r!:{Q}:{#######################################################################_}
r!:{R}:{########################################################################_}
r!:{S}:{#########################################################################_}
r!:{T}:{##########################################################################_}
r!:{U}:{###########################################################################_}
r!:{V}:{############################################################################_}
r!:{W}:{#############################################################################_}
r!:{X}:{##############################################################################_}
r!:{Y}:{###############################################################################_}
r!:{Z}:{################################################################################_}
# extension...
r!:{,}:{#################################################################################_}
r!:{"}:{##################################################################################_}
r!:{'}:{###################################################################################_}
r!:{;}:{####################################################################################_}
r!:{&}:{######################################################################################_}
r!:{@}:{#######################################################################################_}
r!:{%}:{########################################################################################_}
r!:{=}:{#########################################################################################_}
r!:{\^}:{##########################################################################################_}
r!:{\$}:{###########################################################################################_}
r!:{~}:{############################################################################################_}
r!:{<}:{#############################################################################################_}
r!:{>}:{##############################################################################################_}
r!:{\\}:{###############################################################################################_}
#DO NOT eliminate what's not encoded...
#d!:{[#_]}
#then unmask..
r!:{#}:{ }
r!:{_}:{
}
#------------'_..!------------------------|
#NOTE: because copying pure space/ghost-messages
#might be denied, we pre+suffix a single dot.
#------------'_..!------------------------|
x:.|x!:.
# and that's it!
# whatever appears in the output besides the dot affixes means
# it's not handled by the ghost-message alphabet
q!:
#---[DONE ENCODING]
#---[decoder]
l:lDECODER
y:vMESSAGE
# for GM, strip .-affixes
d:{^\.}|m!:|d:{^\.}|m!:
r!:{\n}:{_}
r!:{ }:{#}
# handle special char _ and # first..
r!:{#################################################################################################_}:{-HASH-}
r!:{################################################################################################_}:{±}
# extensions..
r!:{###############################################################################################_}:{\}
r!:{##############################################################################################_}:{>}
r!:{#############################################################################################_}:{<}
r!:{############################################################################################_}:{~}
r!:{###########################################################################################_}:{$}
r!:{##########################################################################################_}:{^}
r!:{#########################################################################################_}:{=}
r!:{########################################################################################_}:{%}
r!:{#######################################################################################_}:{@}
r!:{######################################################################################_}:{&}
#r!:{#####################################################################################_}:{_}
r!:{####################################################################################_}:{;}
r!:{###################################################################################_}:{'}
r!:{##################################################################################_}:{"}
r!:{#################################################################################_}:{,}
# UPPER ALPHA
r!:{################################################################################_}:{Z}
r!:{###############################################################################_}:{Y}
r!:{##############################################################################_}:{X}
r!:{#############################################################################_}:{W}
r!:{############################################################################_}:{V}
r!:{###########################################################################_}:{U}
r!:{##########################################################################_}:{T}
r!:{#########################################################################_}:{S}
r!:{########################################################################_}:{R}
r!:{#######################################################################_}:{Q}
r!:{######################################################################_}:{P}
r!:{#####################################################################_}:{O}
r!:{####################################################################_}:{N}
r!:{###################################################################_}:{M}
r!:{##################################################################_}:{L}
r!:{#################################################################_}:{K}
r!:{################################################################_}:{J}
r!:{###############################################################_}:{I}
r!:{##############################################################_}:{H}
r!:{#############################################################_}:{G}
r!:{############################################################_}:{F}
r!:{###########################################################_}:{E}
r!:{##########################################################_}:{D}
r!:{#########################################################_}:{C}
r!:{########################################################_}:{B}
r!:{#######################################################_}:{A}
# symbols..
r!:{######################################################_}:]
r!:{#####################################################_}:[
r!:{####################################################_}:{|}
r!:{###################################################_}:{}}
r!:{##################################################_}:{{}
r!:{#################################################_}:{:}
r!:{################################################_}:@
r!:{###############################################_}:!
r!:{##############################################_}:{
}
r!:{#############################################_}:{)}
r!:{############################################_}:{(}
r!:{###########################################_}:-
r!:{##########################################_}:+
r!:{#########################################_}:/
r!:{########################################_}:*
r!:{#######################################_}:?
r!:{######################################_}:.
# numerals
r!:{#####################################_}:9
r!:{####################################_}:8
r!:{###################################_}:7
r!:{##################################_}:6
r!:{#################################_}:5
r!:{################################_}:4
r!:{###############################_}:3
r!:{##############################_}:2
r!:{#############################_}:1
r!:{############################_}:0
# lower alpha..
r!:{###########################_}:{ }
r!:{##########################_}:z
r!:{#########################_}:y
r!:{########################_}:x
r!:{#######################_}:w
r!:{######################_}:v
r!:{#####################_}:u
r!:{####################_}:t
r!:{###################_}:s
r!:{##################_}:r
r!:{#################_}:q
r!:{################_}:p
r!:{###############_}:o
r!:{##############_}:n
r!:{#############_}:m
r!:{############_}:l
r!:{###########_}:k
r!:{##########_}:j
r!:{#########_}:i
r!:{########_}:h
r!:{#######_}:g
r!:{######_}:f
r!:{#####_}:e
r!:{####_}:d
r!:{###_}:c
r!:{##_}:b
r!:{#_}:a
# finally, re-handle special chars...
r!:{-HASH-}:{#}
r!:{±}:{_}
#------------'_..!------------------------|
# NOTE: in traditional nomenclature
# wht we've just done wld be akin to
# clairvoyance! the stuff o ghost hunters!
#------------'_..!------------------------|
#---[DONE DECODING]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment