scramble.py
1 #!/usr/bin/env python 2 3 def split_by_n(obj, n): 4 # src https://stackoverflow.com/questions/9475241/split-string-every-nth-character 5 return list(obj[i:i+n] for i in range(0, len(obj), n)) 6 7 allchars=list(chr(x) for x in range(ord('a'),ord('z')+1)) 8 allchars.extend(list(chr(x) for x in range(ord('A'),ord('Z')+1))) 9 allchars.extend(list(chr(x) for x in range(ord('0'),ord('9')+1))) 10 allchars.extend(list(chr(x) for x in range(0x1d400,0x1d467+1))) 11 symbols = list('!#$%&()*+,-./:;<=>?@[]^_`{|}~') 12 13 intmem4abc = split_by_n(symbols[:3*8], 8) 14 grp5=split_by_n(allchars[:9*8], 8) 15 16 print("i4ac", ' '.join(''.join(x) for x in intmem4abc)) 17 print("5grp", ' '.join(''.join(x) for x in grp5)) 18 19 output = [] 20 for triple in split_by_n(grp5,3): 21 for i in range(3): 22 tmp = triple[i] 23 intmem4abc[i]=tmp 24 CY=' ' 25 r0 = 0 26 for i in range(5): 27 for j in range(4): 28 # xchg a,intmemabc[r0] 29 tmp1 = tmp 30 tmp = intmem4abc[r0] 31 intmem4abc[r0] = tmp1 32 # rrc a 33 tbit = CY 34 CY = tmp[7] 35 tmp = [tbit] + tmp[:-1] 36 # xchg a,intmemabc[r0] 37 tmp1 = tmp 38 tmp = intmem4abc[r0] 39 intmem4abc[r0] = tmp1 40 # rlc a 41 tbit = CY 42 CY = tmp[0] 43 tmp = tmp[1:] + [tbit] 44 45 r0 = (r0 + 1) % 3 46 CY = '#' if r0 != 0 else ' ' 47 print([' ',' '] + tmp[2:]) 48 output.append([' ', ' '] + tmp[2:]) 49 50 # some bits are repeated, which how often see this: 51 # [(30, ' '), (3, '𝐉'), (3, 'x'), (3, 'V'), (2, '𝐈'), (2, '𝐆'), (2, '𝐅'), (2, 'w'), (2, 'u'), (2, 't'), (2, 'n'), (2, 'm'), (2, 'g'), (2, 'f'), (2, 'c'), (2, 'Y'), (2, 'U'), (2, 'S'), (2, 'R'), (2, 'L'), (2, 'K'), (2, 'E'), (2, 'D'), (2, 'A'), (2, '9'), (2, '8'), (2, '2'), (2, '1'), (1, '𝐇'), (1, '𝐄'), (1, '𝐁'), (1, '𝐀'), (1, 'z'), (1, 'v'), (1, 's'), (1, 'p'), (1, 'o'), (1, 'l'), (1, 'k'), (1, 'j'), (1, 'h'), (1, 'e'), (1, 'd'), (1, 'b'), (1, 'Z'), (1, 'X'), (1, 'T'), (1, 'Q'), (1, 'N'), (1, 'M'), (1, 'J'), (1, 'I'), (1, 'H'), (1, 'F'), (1, 'C'), (1, 'B'), (1, '7'), (1, '6'), (1, '5'), (1, '3'), (1, '0')] 52 53 print("\n decode\n") 54 CY = '0' 55 d = 0 56 for _ in range(len(output)//5): 57 r0 = 0 58 for i in range(5): 59 tmp = output[d] 60 if(tmp!=0xfe): d+=1 61 # tmp-- 62 tmp = tmp[4:]+tmp[:4] 63 CY = '#' 64 for j in range(4): 65 # rlc a 66 tbit = CY 67 CY = tmp[0] 68 tmp = tmp[1:] + [tbit] 69 # xchg a,intmemabc[r0] 70 tmp1 = tmp 71 tmp = intmem4abc[r0] 72 intmem4abc[r0] = tmp1 73 # rrc a 74 tbit = CY 75 CY = tmp[7] 76 tmp = [tbit] + tmp[:-1] 77 # xchg a,intmemabc[r0] 78 tmp1 = tmp 79 tmp = intmem4abc[r0] 80 intmem4abc[r0] = tmp1 81 r0 = (r0 + 1) % 3 82 CY = '#' if r0 != 0 else ' ' 83 for i in range(3): 84 tmp = intmem4abc[i] 85 if(i==2): 86 # rrc a 87 tbit = " " 88 CY = tmp[7] 89 tmp = [tbit] + tmp[:-1] 90 else: 91 CY='#' 92 # rrc a 93 tbit = CY 94 CY = tmp[7] 95 tmp = [tbit] + tmp[:-1] 96 output.append([' ', ' '] + tmp[2:]) 97 print(output[-1])