Skip to content

Instantly share code, notes, and snippets.

@amtal
Last active December 23, 2015 08:29
Show Gist options
  • Save amtal/6607609 to your computer and use it in GitHub Desktop.
Save amtal/6607609 to your computer and use it in GitHub Desktop.
NSA technical journal: reverse cryptanalysis/universal communication puzzle (Figure 3 typeset, also spoilers you may not want)
# based on http://www.nsa.gov/public_info/_files/tech_journals/communications_extraterrestrial_intelligence.pdf
# two related documents I know of:
# just message, shorter alphabet, longer: http://www.nsa.gov/public_info/_files/tech_journals/extraterrestrial_intelligence.pdf
# solutions: http://www.nsa.gov/public_info/_files/tech_journals/extraterrestrial_messages.pdf
"""
(1) A. B. C. D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y.
Z. *. &. $. ^. #. @. A. B. C. D. E. F. G. H. I. J. K. L. M. N. O. P.
Q. R. S. T. U. V. W. X. Y. Z. *. &. $. ^. #. @.
(2) A A, B; A A A, C; A A A A, D; A A A A A, E; A A A A A A, F;
A A A A A A A, G; A A A A A A A A, H; A A A A A A A A A, I;
A A A A A A A A A A, J.
(3) A K A L B; A K A K A L C; A K A K A K A L D.
A K A L B; B K A L C; C K A L D.
B K C L E; E L B K C; F K D L J; J L D K F.
E L K E; K E L E.
(4) C M A L B; D M A L C; G M E L B; E M G L M B.
(5) D K N L D; G K N L G; F M F L N; E M E L N.
(6) J L AN; J K A L AA; J K B L AB; AA K A L AB.
(7) B O C L F; D O B L H; E O B L AN; D O AN L DN.
(8) F P C L B; H P B L D; J P B L E; J P E L B.
(9) A P J L Q J; A P ANN L Q ANN; Q J, P J L Q ANN.
(10) Q J L R A ;
Q J O B L R B;
A R E M A L R E L E O Q J.
Q ANN L R NA;
Q ANN O B L R NB.
(11) H L H; G S C, C S G.
D K A L C K B; D K C S E K A; E K A S D K C.
(12) D T A; D T B; D T C; D L D; D U E; D U F; D U G.
J T I; J U AA.
(13) FIRII V GN; ANNN K C V ANNN; AN P C V CRC.
(14) W E K A X L E K A; B W E K A X L W B O E X K W B O A X L B O F.
(15) C Y B L I; E Y B L BE; B Y E L CB; W D K A X Y B L BE.
(16) BE Z B L E; FD Z B L H; BG Z C L C; ABE Z C L E.
W AI K F X Z B L E.
BE Z B L M E; M ABE Z C L M E. BE Z B L KM E.
(17) D * L D O C O B O A L B D; E * L E O D O C O B O A L ABN; H * L DNCBN.
(18) & P D L A M Q C K Q E M Q G K Q I M.
& V CRADAEI.
(19) $ L A K Q W A * X K Q W B * X K Q W C * X K Q W D * X K.
$ V BRGAHBH.
(20) ^ E K A # L W E K A X; B ^ E K A # L B W E K A X;
B ^ E K W D K C X # L B W E K G X.
^ B # ^ D # L W B X W D X L B O D.
(21) $ Y ^ & O W M A X Z B # K A L N.
(22) B K C L ^ @NNA #; B K C L E. C O D L ^ @NNA #; C O D L AB.
D Y B L ^ @NNA #; D Y B L AF.
(23) B K C L E; ^ @NNB #.
B K D L E; ^ @NNC #.
E Y B L BE; ^ @NNB #.
F Y B L C E; ^ @NNC #.
I T E; ^ @NNB #.
H U C; ^ @NNC #.
& V BRGAHBH; ^ @NNC #.
(24) B L ^ @NND #.
C L ^ @NND #.
E, G, AA, AC, AG, ^ @NND #.
ANA ^ @NND #.
(25) ^ @NNE # L B O & ^ @A #;
^ @NNF # L & ^ @A # Y B.
^ @A # L ^ @NNG #.
^ @NNE # L B & ^ @NNG #;
^ @NNF # L & ^ @NNG # Y B.
(26) ^ @NNH # L D O Q C O & ^ @NNG # Y C.
(27) Q B K Q D K Q H K Q AF K Q CB V A;
Q B K Q D K Q H K Q AF K Q CB K ^ @NNI # L A.
(28) C K ^ @A # L G; ^ @A # L D.
I K ^ @A # L AB; ^ @A # L C.
FD Z ^ @A # L H; ^ @A # L B.
^ @A # L A, R GG, M R GG, J P C, &, K, M, ^ @NNI #.
^ @B # L A, R GG, M R GG, J P C, &, K, M, ^ @NNI #.
^ @C # L A, R GG, M R GG, J P C, &, K, M, ^ @NNI #.
(29) ^ @NNE # L B & ^ @B #;
^ @NNF # L & ^ @B # Y B.
^ @NAN # L B ^ @C # K B ^ @D #;
^ @NAA # L ^ @C # O ^ @D #.
(30) ^ @NNE # L ^ @NAB # , ^ @NAC #;
^ @NNF # L ^ @NAD #, ^ @NAC #.
^ @NAN # L ^ @NAB #, ^ @NAE #;
^ @NAA # L ^ @NAD #, ^ @NAE #.
"""
## SPOILERS REMOVED, SEE HISTORY FOR FULL SPOILERS
## SPOILERS REMOVED, SEE HISTORY FOR FULL SPOILERS
## SPOILERS REMOVED, SEE HISTORY FOR FULL SPOILERS
import re
#__doc__ = re.sub(r'\([0-9]{1,2}\)', '>>>', __doc__)
mappings = {c[0]:c[1:] for c in """
""".replace('\n', ' ').split(' ') if c}
__doc__ = ''.join([mappings.get(c, c) for c in __doc__])
# what's the difference between Q and R? Q is operator, R is concat-operator?
things = {'thing'+k:v for k,v in [thing.split(':') for thing in """
""".replace('\n', ' ').split(' ') if thing]}
for thing in things:
__doc__ = __doc__.replace(thing, things[thing])
print __doc__
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment