zombie - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- zombie (2538B) --- 1 #!/usr/bin/env python 2 # coding=utf-8 3 # 4 # Copy me if you can. 5 # by 20h 6 # 7 # Idea from: https://github.com/DanPlayz0/Chucky/blob/main/assets/zombie-translator/characters.js 8 9 import os 10 import sys 11 import getopt 12 13 zombiemapping = { 14 "Ar": "a", 15 "AA": "b", 16 "Ab": "c", 17 "RA": "d", 18 "bb": "e", 19 "BA": "f", 20 "ll": "g", 21 "bG": "h", 22 "Gn": "i", 23 "GA": "j", 24 "GG": "k", 25 "nh": "l", 26 "hh": "m", 27 "MM": "n", 28 "hr": "o", 29 "hA": "p", 30 "hb": "q", 31 "rr": "r", 32 "hG": "s", 33 "Gg": "t", 34 "GM": "u", 35 "nr": "v", 36 "Mr": "w", 37 "Gl": "x", 38 "nn": "y", 39 "KA": "z", 40 "aR": "A", 41 "aa": "B", 42 "aB": "C", 43 "rA": "D", 44 "BB": "E", 45 "ba": "F", 46 "LL": "G", 47 "Bg": "H", 48 "gN": "I", 49 "ga": "J", 50 "gg": "K", 51 "NH": "L", 52 "HH": "M", 53 "mm": "N", 54 "HR": "O", 55 "Ha": "P", 56 "HB": "Q", 57 "RR": "R", 58 "Hq": "S", 59 "gG": "T", 60 "gm": "U", 61 "NR": "V", 62 "mR": "W", 63 "gL": "X", 64 "NN": "Y", 65 "ka": "Z" 66 } 67 68 humanmapping = { 69 "a": "Ar", 70 "b": "AA", 71 "c": "Ab", 72 "d": "RA", 73 "e": "bb", 74 "f": "BA", 75 "g": "ll", 76 "h": "bG", 77 "i": "Gn", 78 "j": "GA", 79 "k": "GG", 80 "l": "nh", 81 "m": "hh", 82 "n": "MM", 83 "o": "hr", 84 "p": "hA", 85 "q": "hb", 86 "r": "rr", 87 "s": "hG", 88 "t": "Gg", 89 "u": "GM", 90 "v": "nr", 91 "w": "Mr", 92 "x": "Gl", 93 "y": "nn", 94 "z": "KA", 95 "A": "aR", 96 "B": "aa", 97 "C": "aB", 98 "D": "ra", 99 "E": "BB", 100 "F": "ba", 101 "G": "LL", 102 "H": "Bg", 103 "I": "gN", 104 "J": "ga", 105 "K": "gg", 106 "L": "NH", 107 "M": "HH", 108 "N": "mm", 109 "O": "HR", 110 "P": "Ha", 111 "Q": "HB", 112 "R": "RR", 113 "S": "Hg", 114 "T": "gG", 115 "U": "gm", 116 "V": "NR", 117 "W": "mR", 118 "X": "gL", 119 "Y": "NN", 120 "Z": "ka" 121 } 122 123 def human2zombie(s): 124 r = "" 125 for c in s: 126 try: 127 r += humanmapping[c] 128 except KeyError: 129 r += c 130 return r 131 132 def zombie2human(s): 133 r = "" 134 while 1: 135 c = s[:2] 136 s = s[2:] 137 try: 138 r += zombiemapping[c] 139 except KeyError: 140 r += c 141 if len(s) == 0: 142 break 143 return r 144 145 def usage(app): 146 app = os.path.basename(app) 147 print("usage: %s [-h] [-e|-d]" % (app), file=sys.stderr) 148 sys.exit(1) 149 150 def main(args): 151 try: 152 opts, largs = getopt.getopt(args[1:], "hed") 153 except getopt.GetoptError as err: 154 print(str(err)) 155 usage(args[0]) 156 157 dodecode=0 158 doencode=0 159 160 for o, a in opts: 161 if o == "-h": 162 usage(args[0]) 163 elif o == "-d": 164 dodecode=1 165 elif o == "-e": 166 doencode=1 167 else: 168 assert False, "unhandled option" 169 170 ins = sys.stdin.read() 171 rs = None 172 words = ins.split(" ") 173 if doencode: 174 rs = " ".join([human2zombie(w) for w in words]) 175 if dodecode: 176 rs = " ".join([zombie2human(w) for w in words]) 177 if rs != None: 178 print("%s" % (rs), end='') 179 else: 180 usage(args[0]) 181 182 return 0 183 184 if __name__ == "__main__": 185 sys.exit(main(sys.argv)) 186