Last active
December 23, 2015 08:29
-
-
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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