mnemonic.py 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689
  1. #!/usr/bin/env python3
  2. #
  3. # Electrum - lightweight Bitcoin client
  4. # Copyright (C) 2011 thomasv@gitorious
  5. #
  6. # This program is free software: you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation, either version 3 of the License, or
  9. # (at your option) any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. # GNU General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU General Public License
  17. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. # list of words from http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/Contemporary_poetry
  19. words = [
  20. "like",
  21. "just",
  22. "love",
  23. "know",
  24. "never",
  25. "want",
  26. "time",
  27. "out",
  28. "there",
  29. "make",
  30. "look",
  31. "eye",
  32. "down",
  33. "only",
  34. "think",
  35. "heart",
  36. "back",
  37. "then",
  38. "into",
  39. "about",
  40. "more",
  41. "away",
  42. "still",
  43. "them",
  44. "take",
  45. "thing",
  46. "even",
  47. "through",
  48. "long",
  49. "always",
  50. "world",
  51. "too",
  52. "friend",
  53. "tell",
  54. "try",
  55. "hand",
  56. "thought",
  57. "over",
  58. "here",
  59. "other",
  60. "need",
  61. "smile",
  62. "again",
  63. "much",
  64. "cry",
  65. "been",
  66. "night",
  67. "ever",
  68. "little",
  69. "said",
  70. "end",
  71. "some",
  72. "those",
  73. "around",
  74. "mind",
  75. "people",
  76. "girl",
  77. "leave",
  78. "dream",
  79. "left",
  80. "turn",
  81. "myself",
  82. "give",
  83. "nothing",
  84. "really",
  85. "off",
  86. "before",
  87. "something",
  88. "find",
  89. "walk",
  90. "wish",
  91. "good",
  92. "once",
  93. "place",
  94. "ask",
  95. "stop",
  96. "keep",
  97. "watch",
  98. "seem",
  99. "everything",
  100. "wait",
  101. "got",
  102. "yet",
  103. "made",
  104. "remember",
  105. "start",
  106. "alone",
  107. "run",
  108. "hope",
  109. "maybe",
  110. "believe",
  111. "body",
  112. "hate",
  113. "after",
  114. "close",
  115. "talk",
  116. "stand",
  117. "own",
  118. "each",
  119. "hurt",
  120. "help",
  121. "home",
  122. "god",
  123. "soul",
  124. "new",
  125. "many",
  126. "two",
  127. "inside",
  128. "should",
  129. "true",
  130. "first",
  131. "fear",
  132. "mean",
  133. "better",
  134. "play",
  135. "another",
  136. "gone",
  137. "change",
  138. "use",
  139. "wonder",
  140. "someone",
  141. "hair",
  142. "cold",
  143. "open",
  144. "best",
  145. "any",
  146. "behind",
  147. "happen",
  148. "water",
  149. "dark",
  150. "laugh",
  151. "stay",
  152. "forever",
  153. "name",
  154. "work",
  155. "show",
  156. "sky",
  157. "break",
  158. "came",
  159. "deep",
  160. "door",
  161. "put",
  162. "black",
  163. "together",
  164. "upon",
  165. "happy",
  166. "such",
  167. "great",
  168. "white",
  169. "matter",
  170. "fill",
  171. "past",
  172. "please",
  173. "burn",
  174. "cause",
  175. "enough",
  176. "touch",
  177. "moment",
  178. "soon",
  179. "voice",
  180. "scream",
  181. "anything",
  182. "stare",
  183. "sound",
  184. "red",
  185. "everyone",
  186. "hide",
  187. "kiss",
  188. "truth",
  189. "death",
  190. "beautiful",
  191. "mine",
  192. "blood",
  193. "broken",
  194. "very",
  195. "pass",
  196. "next",
  197. "forget",
  198. "tree",
  199. "wrong",
  200. "air",
  201. "mother",
  202. "understand",
  203. "lip",
  204. "hit",
  205. "wall",
  206. "memory",
  207. "sleep",
  208. "free",
  209. "high",
  210. "realize",
  211. "school",
  212. "might",
  213. "skin",
  214. "sweet",
  215. "perfect",
  216. "blue",
  217. "kill",
  218. "breath",
  219. "dance",
  220. "against",
  221. "fly",
  222. "between",
  223. "grow",
  224. "strong",
  225. "under",
  226. "listen",
  227. "bring",
  228. "sometimes",
  229. "speak",
  230. "pull",
  231. "person",
  232. "become",
  233. "family",
  234. "begin",
  235. "ground",
  236. "real",
  237. "small",
  238. "father",
  239. "sure",
  240. "feet",
  241. "rest",
  242. "young",
  243. "finally",
  244. "land",
  245. "across",
  246. "today",
  247. "different",
  248. "guy",
  249. "line",
  250. "fire",
  251. "reason",
  252. "reach",
  253. "second",
  254. "slowly",
  255. "write",
  256. "eat",
  257. "smell",
  258. "mouth",
  259. "step",
  260. "learn",
  261. "three",
  262. "floor",
  263. "promise",
  264. "breathe",
  265. "darkness",
  266. "push",
  267. "earth",
  268. "guess",
  269. "save",
  270. "song",
  271. "above",
  272. "along",
  273. "both",
  274. "color",
  275. "house",
  276. "almost",
  277. "sorry",
  278. "anymore",
  279. "brother",
  280. "okay",
  281. "dear",
  282. "game",
  283. "fade",
  284. "already",
  285. "apart",
  286. "warm",
  287. "beauty",
  288. "heard",
  289. "notice",
  290. "question",
  291. "shine",
  292. "began",
  293. "piece",
  294. "whole",
  295. "shadow",
  296. "secret",
  297. "street",
  298. "within",
  299. "finger",
  300. "point",
  301. "morning",
  302. "whisper",
  303. "child",
  304. "moon",
  305. "green",
  306. "story",
  307. "glass",
  308. "kid",
  309. "silence",
  310. "since",
  311. "soft",
  312. "yourself",
  313. "empty",
  314. "shall",
  315. "angel",
  316. "answer",
  317. "baby",
  318. "bright",
  319. "dad",
  320. "path",
  321. "worry",
  322. "hour",
  323. "drop",
  324. "follow",
  325. "power",
  326. "war",
  327. "half",
  328. "flow",
  329. "heaven",
  330. "act",
  331. "chance",
  332. "fact",
  333. "least",
  334. "tired",
  335. "children",
  336. "near",
  337. "quite",
  338. "afraid",
  339. "rise",
  340. "sea",
  341. "taste",
  342. "window",
  343. "cover",
  344. "nice",
  345. "trust",
  346. "lot",
  347. "sad",
  348. "cool",
  349. "force",
  350. "peace",
  351. "return",
  352. "blind",
  353. "easy",
  354. "ready",
  355. "roll",
  356. "rose",
  357. "drive",
  358. "held",
  359. "music",
  360. "beneath",
  361. "hang",
  362. "mom",
  363. "paint",
  364. "emotion",
  365. "quiet",
  366. "clear",
  367. "cloud",
  368. "few",
  369. "pretty",
  370. "bird",
  371. "outside",
  372. "paper",
  373. "picture",
  374. "front",
  375. "rock",
  376. "simple",
  377. "anyone",
  378. "meant",
  379. "reality",
  380. "road",
  381. "sense",
  382. "waste",
  383. "bit",
  384. "leaf",
  385. "thank",
  386. "happiness",
  387. "meet",
  388. "men",
  389. "smoke",
  390. "truly",
  391. "decide",
  392. "self",
  393. "age",
  394. "book",
  395. "form",
  396. "alive",
  397. "carry",
  398. "escape",
  399. "damn",
  400. "instead",
  401. "able",
  402. "ice",
  403. "minute",
  404. "throw",
  405. "catch",
  406. "leg",
  407. "ring",
  408. "course",
  409. "goodbye",
  410. "lead",
  411. "poem",
  412. "sick",
  413. "corner",
  414. "desire",
  415. "known",
  416. "problem",
  417. "remind",
  418. "shoulder",
  419. "suppose",
  420. "toward",
  421. "wave",
  422. "drink",
  423. "jump",
  424. "woman",
  425. "pretend",
  426. "sister",
  427. "week",
  428. "human",
  429. "joy",
  430. "crack",
  431. "grey",
  432. "pray",
  433. "surprise",
  434. "dry",
  435. "knee",
  436. "less",
  437. "search",
  438. "bleed",
  439. "caught",
  440. "clean",
  441. "embrace",
  442. "future",
  443. "king",
  444. "son",
  445. "sorrow",
  446. "chest",
  447. "hug",
  448. "remain",
  449. "sat",
  450. "worth",
  451. "blow",
  452. "daddy",
  453. "final",
  454. "parent",
  455. "tight",
  456. "also",
  457. "create",
  458. "lonely",
  459. "safe",
  460. "cross",
  461. "dress",
  462. "evil",
  463. "silent",
  464. "bone",
  465. "fate",
  466. "perhaps",
  467. "anger",
  468. "class",
  469. "scar",
  470. "snow",
  471. "tiny",
  472. "tonight",
  473. "continue",
  474. "control",
  475. "dog",
  476. "edge",
  477. "mirror",
  478. "month",
  479. "suddenly",
  480. "comfort",
  481. "given",
  482. "loud",
  483. "quickly",
  484. "gaze",
  485. "plan",
  486. "rush",
  487. "stone",
  488. "town",
  489. "battle",
  490. "ignore",
  491. "spirit",
  492. "stood",
  493. "stupid",
  494. "yours",
  495. "brown",
  496. "build",
  497. "dust",
  498. "hey",
  499. "kept",
  500. "pay",
  501. "phone",
  502. "twist",
  503. "although",
  504. "ball",
  505. "beyond",
  506. "hidden",
  507. "nose",
  508. "taken",
  509. "fail",
  510. "float",
  511. "pure",
  512. "somehow",
  513. "wash",
  514. "wrap",
  515. "angry",
  516. "cheek",
  517. "creature",
  518. "forgotten",
  519. "heat",
  520. "rip",
  521. "single",
  522. "space",
  523. "special",
  524. "weak",
  525. "whatever",
  526. "yell",
  527. "anyway",
  528. "blame",
  529. "job",
  530. "choose",
  531. "country",
  532. "curse",
  533. "drift",
  534. "echo",
  535. "figure",
  536. "grew",
  537. "laughter",
  538. "neck",
  539. "suffer",
  540. "worse",
  541. "yeah",
  542. "disappear",
  543. "foot",
  544. "forward",
  545. "knife",
  546. "mess",
  547. "somewhere",
  548. "stomach",
  549. "storm",
  550. "beg",
  551. "idea",
  552. "lift",
  553. "offer",
  554. "breeze",
  555. "field",
  556. "five",
  557. "often",
  558. "simply",
  559. "stuck",
  560. "win",
  561. "allow",
  562. "confuse",
  563. "enjoy",
  564. "except",
  565. "flower",
  566. "seek",
  567. "strength",
  568. "calm",
  569. "grin",
  570. "gun",
  571. "heavy",
  572. "hill",
  573. "large",
  574. "ocean",
  575. "shoe",
  576. "sigh",
  577. "straight",
  578. "summer",
  579. "tongue",
  580. "accept",
  581. "crazy",
  582. "everyday",
  583. "exist",
  584. "grass",
  585. "mistake",
  586. "sent",
  587. "shut",
  588. "surround",
  589. "table",
  590. "ache",
  591. "brain",
  592. "destroy",
  593. "heal",
  594. "nature",
  595. "shout",
  596. "sign",
  597. "stain",
  598. "choice",
  599. "doubt",
  600. "glance",
  601. "glow",
  602. "mountain",
  603. "queen",
  604. "stranger",
  605. "throat",
  606. "tomorrow",
  607. "city",
  608. "either",
  609. "fish",
  610. "flame",
  611. "rather",
  612. "shape",
  613. "spin",
  614. "spread",
  615. "ash",
  616. "distance",
  617. "finish",
  618. "image",
  619. "imagine",
  620. "important",
  621. "nobody",
  622. "shatter",
  623. "warmth",
  624. "became",
  625. "feed",
  626. "flesh",
  627. "funny",
  628. "lust",
  629. "shirt",
  630. "trouble",
  631. "yellow",
  632. "attention",
  633. "bare",
  634. "bite",
  635. "money",
  636. "protect",
  637. "amaze",
  638. "appear",
  639. "born",
  640. "choke",
  641. "completely",
  642. "daughter",
  643. "fresh",
  644. "friendship",
  645. "gentle",
  646. "probably",
  647. "six",
  648. "deserve",
  649. "expect",
  650. "grab",
  651. "middle",
  652. "nightmare",
  653. "river",
  654. "thousand",
  655. "weight",
  656. "worst",
  657. "wound",
  658. "barely",
  659. "bottle",
  660. "cream",
  661. "regret",
  662. "relationship",
  663. "stick",
  664. "test",
  665. "crush",
  666. "endless",
  667. "fault",
  668. "itself",
  669. "rule",
  670. "spill",
  671. "art",
  672. "circle",
  673. "join",
  674. "kick",
  675. "mask",
  676. "master",
  677. "passion",
  678. "quick",
  679. "raise",
  680. "smooth",
  681. "unless",
  682. "wander",
  683. "actually",
  684. "broke",
  685. "chair",
  686. "deal",
  687. "favorite",
  688. "gift",
  689. "note",
  690. "number",
  691. "sweat",
  692. "box",
  693. "chill",
  694. "clothes",
  695. "lady",
  696. "mark",
  697. "park",
  698. "poor",
  699. "sadness",
  700. "tie",
  701. "animal",
  702. "belong",
  703. "brush",
  704. "consume",
  705. "dawn",
  706. "forest",
  707. "innocent",
  708. "pen",
  709. "pride",
  710. "stream",
  711. "thick",
  712. "clay",
  713. "complete",
  714. "count",
  715. "draw",
  716. "faith",
  717. "press",
  718. "silver",
  719. "struggle",
  720. "surface",
  721. "taught",
  722. "teach",
  723. "wet",
  724. "bless",
  725. "chase",
  726. "climb",
  727. "enter",
  728. "letter",
  729. "melt",
  730. "metal",
  731. "movie",
  732. "stretch",
  733. "swing",
  734. "vision",
  735. "wife",
  736. "beside",
  737. "crash",
  738. "forgot",
  739. "guide",
  740. "haunt",
  741. "joke",
  742. "knock",
  743. "plant",
  744. "pour",
  745. "prove",
  746. "reveal",
  747. "steal",
  748. "stuff",
  749. "trip",
  750. "wood",
  751. "wrist",
  752. "bother",
  753. "bottom",
  754. "crawl",
  755. "crowd",
  756. "fix",
  757. "forgive",
  758. "frown",
  759. "grace",
  760. "loose",
  761. "lucky",
  762. "party",
  763. "release",
  764. "surely",
  765. "survive",
  766. "teacher",
  767. "gently",
  768. "grip",
  769. "speed",
  770. "suicide",
  771. "travel",
  772. "treat",
  773. "vein",
  774. "written",
  775. "cage",
  776. "chain",
  777. "conversation",
  778. "date",
  779. "enemy",
  780. "however",
  781. "interest",
  782. "million",
  783. "page",
  784. "pink",
  785. "proud",
  786. "sway",
  787. "themselves",
  788. "winter",
  789. "church",
  790. "cruel",
  791. "cup",
  792. "demon",
  793. "experience",
  794. "freedom",
  795. "pair",
  796. "pop",
  797. "purpose",
  798. "respect",
  799. "shoot",
  800. "softly",
  801. "state",
  802. "strange",
  803. "bar",
  804. "birth",
  805. "curl",
  806. "dirt",
  807. "excuse",
  808. "lord",
  809. "lovely",
  810. "monster",
  811. "order",
  812. "pack",
  813. "pants",
  814. "pool",
  815. "scene",
  816. "seven",
  817. "shame",
  818. "slide",
  819. "ugly",
  820. "among",
  821. "blade",
  822. "blonde",
  823. "closet",
  824. "creek",
  825. "deny",
  826. "drug",
  827. "eternity",
  828. "gain",
  829. "grade",
  830. "handle",
  831. "key",
  832. "linger",
  833. "pale",
  834. "prepare",
  835. "swallow",
  836. "swim",
  837. "tremble",
  838. "wheel",
  839. "won",
  840. "cast",
  841. "cigarette",
  842. "claim",
  843. "college",
  844. "direction",
  845. "dirty",
  846. "gather",
  847. "ghost",
  848. "hundred",
  849. "loss",
  850. "lung",
  851. "orange",
  852. "present",
  853. "swear",
  854. "swirl",
  855. "twice",
  856. "wild",
  857. "bitter",
  858. "blanket",
  859. "doctor",
  860. "everywhere",
  861. "flash",
  862. "grown",
  863. "knowledge",
  864. "numb",
  865. "pressure",
  866. "radio",
  867. "repeat",
  868. "ruin",
  869. "spend",
  870. "unknown",
  871. "buy",
  872. "clock",
  873. "devil",
  874. "early",
  875. "false",
  876. "fantasy",
  877. "pound",
  878. "precious",
  879. "refuse",
  880. "sheet",
  881. "teeth",
  882. "welcome",
  883. "add",
  884. "ahead",
  885. "block",
  886. "bury",
  887. "caress",
  888. "content",
  889. "depth",
  890. "despite",
  891. "distant",
  892. "marry",
  893. "purple",
  894. "threw",
  895. "whenever",
  896. "bomb",
  897. "dull",
  898. "easily",
  899. "grasp",
  900. "hospital",
  901. "innocence",
  902. "normal",
  903. "receive",
  904. "reply",
  905. "rhyme",
  906. "shade",
  907. "someday",
  908. "sword",
  909. "toe",
  910. "visit",
  911. "asleep",
  912. "bought",
  913. "center",
  914. "consider",
  915. "flat",
  916. "hero",
  917. "history",
  918. "ink",
  919. "insane",
  920. "muscle",
  921. "mystery",
  922. "pocket",
  923. "reflection",
  924. "shove",
  925. "silently",
  926. "smart",
  927. "soldier",
  928. "spot",
  929. "stress",
  930. "train",
  931. "type",
  932. "view",
  933. "whether",
  934. "bus",
  935. "energy",
  936. "explain",
  937. "holy",
  938. "hunger",
  939. "inch",
  940. "magic",
  941. "mix",
  942. "noise",
  943. "nowhere",
  944. "prayer",
  945. "presence",
  946. "shock",
  947. "snap",
  948. "spider",
  949. "study",
  950. "thunder",
  951. "trail",
  952. "admit",
  953. "agree",
  954. "bag",
  955. "bang",
  956. "bound",
  957. "butterfly",
  958. "cute",
  959. "exactly",
  960. "explode",
  961. "familiar",
  962. "fold",
  963. "further",
  964. "pierce",
  965. "reflect",
  966. "scent",
  967. "selfish",
  968. "sharp",
  969. "sink",
  970. "spring",
  971. "stumble",
  972. "universe",
  973. "weep",
  974. "women",
  975. "wonderful",
  976. "action",
  977. "ancient",
  978. "attempt",
  979. "avoid",
  980. "birthday",
  981. "branch",
  982. "chocolate",
  983. "core",
  984. "depress",
  985. "drunk",
  986. "especially",
  987. "focus",
  988. "fruit",
  989. "honest",
  990. "match",
  991. "palm",
  992. "perfectly",
  993. "pillow",
  994. "pity",
  995. "poison",
  996. "roar",
  997. "shift",
  998. "slightly",
  999. "thump",
  1000. "truck",
  1001. "tune",
  1002. "twenty",
  1003. "unable",
  1004. "wipe",
  1005. "wrote",
  1006. "coat",
  1007. "constant",
  1008. "dinner",
  1009. "drove",
  1010. "egg",
  1011. "eternal",
  1012. "flight",
  1013. "flood",
  1014. "frame",
  1015. "freak",
  1016. "gasp",
  1017. "glad",
  1018. "hollow",
  1019. "motion",
  1020. "peer",
  1021. "plastic",
  1022. "root",
  1023. "screen",
  1024. "season",
  1025. "sting",
  1026. "strike",
  1027. "team",
  1028. "unlike",
  1029. "victim",
  1030. "volume",
  1031. "warn",
  1032. "weird",
  1033. "attack",
  1034. "await",
  1035. "awake",
  1036. "built",
  1037. "charm",
  1038. "crave",
  1039. "despair",
  1040. "fought",
  1041. "grant",
  1042. "grief",
  1043. "horse",
  1044. "limit",
  1045. "message",
  1046. "ripple",
  1047. "sanity",
  1048. "scatter",
  1049. "serve",
  1050. "split",
  1051. "string",
  1052. "trick",
  1053. "annoy",
  1054. "blur",
  1055. "boat",
  1056. "brave",
  1057. "clearly",
  1058. "cling",
  1059. "connect",
  1060. "fist",
  1061. "forth",
  1062. "imagination",
  1063. "iron",
  1064. "jock",
  1065. "judge",
  1066. "lesson",
  1067. "milk",
  1068. "misery",
  1069. "nail",
  1070. "naked",
  1071. "ourselves",
  1072. "poet",
  1073. "possible",
  1074. "princess",
  1075. "sail",
  1076. "size",
  1077. "snake",
  1078. "society",
  1079. "stroke",
  1080. "torture",
  1081. "toss",
  1082. "trace",
  1083. "wise",
  1084. "bloom",
  1085. "bullet",
  1086. "cell",
  1087. "check",
  1088. "cost",
  1089. "darling",
  1090. "during",
  1091. "footstep",
  1092. "fragile",
  1093. "hallway",
  1094. "hardly",
  1095. "horizon",
  1096. "invisible",
  1097. "journey",
  1098. "midnight",
  1099. "mud",
  1100. "nod",
  1101. "pause",
  1102. "relax",
  1103. "shiver",
  1104. "sudden",
  1105. "value",
  1106. "youth",
  1107. "abuse",
  1108. "admire",
  1109. "blink",
  1110. "breast",
  1111. "bruise",
  1112. "constantly",
  1113. "couple",
  1114. "creep",
  1115. "curve",
  1116. "difference",
  1117. "dumb",
  1118. "emptiness",
  1119. "gotta",
  1120. "honor",
  1121. "plain",
  1122. "planet",
  1123. "recall",
  1124. "rub",
  1125. "ship",
  1126. "slam",
  1127. "soar",
  1128. "somebody",
  1129. "tightly",
  1130. "weather",
  1131. "adore",
  1132. "approach",
  1133. "bond",
  1134. "bread",
  1135. "burst",
  1136. "candle",
  1137. "coffee",
  1138. "cousin",
  1139. "crime",
  1140. "desert",
  1141. "flutter",
  1142. "frozen",
  1143. "grand",
  1144. "heel",
  1145. "hello",
  1146. "language",
  1147. "level",
  1148. "movement",
  1149. "pleasure",
  1150. "powerful",
  1151. "random",
  1152. "rhythm",
  1153. "settle",
  1154. "silly",
  1155. "slap",
  1156. "sort",
  1157. "spoken",
  1158. "steel",
  1159. "threaten",
  1160. "tumble",
  1161. "upset",
  1162. "aside",
  1163. "awkward",
  1164. "bee",
  1165. "blank",
  1166. "board",
  1167. "button",
  1168. "card",
  1169. "carefully",
  1170. "complain",
  1171. "crap",
  1172. "deeply",
  1173. "discover",
  1174. "drag",
  1175. "dread",
  1176. "effort",
  1177. "entire",
  1178. "fairy",
  1179. "giant",
  1180. "gotten",
  1181. "greet",
  1182. "illusion",
  1183. "jeans",
  1184. "leap",
  1185. "liquid",
  1186. "march",
  1187. "mend",
  1188. "nervous",
  1189. "nine",
  1190. "replace",
  1191. "rope",
  1192. "spine",
  1193. "stole",
  1194. "terror",
  1195. "accident",
  1196. "apple",
  1197. "balance",
  1198. "boom",
  1199. "childhood",
  1200. "collect",
  1201. "demand",
  1202. "depression",
  1203. "eventually",
  1204. "faint",
  1205. "glare",
  1206. "goal",
  1207. "group",
  1208. "honey",
  1209. "kitchen",
  1210. "laid",
  1211. "limb",
  1212. "machine",
  1213. "mere",
  1214. "mold",
  1215. "murder",
  1216. "nerve",
  1217. "painful",
  1218. "poetry",
  1219. "prince",
  1220. "rabbit",
  1221. "shelter",
  1222. "shore",
  1223. "shower",
  1224. "soothe",
  1225. "stair",
  1226. "steady",
  1227. "sunlight",
  1228. "tangle",
  1229. "tease",
  1230. "treasure",
  1231. "uncle",
  1232. "begun",
  1233. "bliss",
  1234. "canvas",
  1235. "cheer",
  1236. "claw",
  1237. "clutch",
  1238. "commit",
  1239. "crimson",
  1240. "crystal",
  1241. "delight",
  1242. "doll",
  1243. "existence",
  1244. "express",
  1245. "fog",
  1246. "football",
  1247. "gay",
  1248. "goose",
  1249. "guard",
  1250. "hatred",
  1251. "illuminate",
  1252. "mass",
  1253. "math",
  1254. "mourn",
  1255. "rich",
  1256. "rough",
  1257. "skip",
  1258. "stir",
  1259. "student",
  1260. "style",
  1261. "support",
  1262. "thorn",
  1263. "tough",
  1264. "yard",
  1265. "yearn",
  1266. "yesterday",
  1267. "advice",
  1268. "appreciate",
  1269. "autumn",
  1270. "bank",
  1271. "beam",
  1272. "bowl",
  1273. "capture",
  1274. "carve",
  1275. "collapse",
  1276. "confusion",
  1277. "creation",
  1278. "dove",
  1279. "feather",
  1280. "girlfriend",
  1281. "glory",
  1282. "government",
  1283. "harsh",
  1284. "hop",
  1285. "inner",
  1286. "loser",
  1287. "moonlight",
  1288. "neighbor",
  1289. "neither",
  1290. "peach",
  1291. "pig",
  1292. "praise",
  1293. "screw",
  1294. "shield",
  1295. "shimmer",
  1296. "sneak",
  1297. "stab",
  1298. "subject",
  1299. "throughout",
  1300. "thrown",
  1301. "tower",
  1302. "twirl",
  1303. "wow",
  1304. "army",
  1305. "arrive",
  1306. "bathroom",
  1307. "bump",
  1308. "cease",
  1309. "cookie",
  1310. "couch",
  1311. "courage",
  1312. "dim",
  1313. "guilt",
  1314. "howl",
  1315. "hum",
  1316. "husband",
  1317. "insult",
  1318. "led",
  1319. "lunch",
  1320. "mock",
  1321. "mostly",
  1322. "natural",
  1323. "nearly",
  1324. "needle",
  1325. "nerd",
  1326. "peaceful",
  1327. "perfection",
  1328. "pile",
  1329. "price",
  1330. "remove",
  1331. "roam",
  1332. "sanctuary",
  1333. "serious",
  1334. "shiny",
  1335. "shook",
  1336. "sob",
  1337. "stolen",
  1338. "tap",
  1339. "vain",
  1340. "void",
  1341. "warrior",
  1342. "wrinkle",
  1343. "affection",
  1344. "apologize",
  1345. "blossom",
  1346. "bounce",
  1347. "bridge",
  1348. "cheap",
  1349. "crumble",
  1350. "decision",
  1351. "descend",
  1352. "desperately",
  1353. "dig",
  1354. "dot",
  1355. "flip",
  1356. "frighten",
  1357. "heartbeat",
  1358. "huge",
  1359. "lazy",
  1360. "lick",
  1361. "odd",
  1362. "opinion",
  1363. "process",
  1364. "puzzle",
  1365. "quietly",
  1366. "retreat",
  1367. "score",
  1368. "sentence",
  1369. "separate",
  1370. "situation",
  1371. "skill",
  1372. "soak",
  1373. "square",
  1374. "stray",
  1375. "taint",
  1376. "task",
  1377. "tide",
  1378. "underneath",
  1379. "veil",
  1380. "whistle",
  1381. "anywhere",
  1382. "bedroom",
  1383. "bid",
  1384. "bloody",
  1385. "burden",
  1386. "careful",
  1387. "compare",
  1388. "concern",
  1389. "curtain",
  1390. "decay",
  1391. "defeat",
  1392. "describe",
  1393. "double",
  1394. "dreamer",
  1395. "driver",
  1396. "dwell",
  1397. "evening",
  1398. "flare",
  1399. "flicker",
  1400. "grandma",
  1401. "guitar",
  1402. "harm",
  1403. "horrible",
  1404. "hungry",
  1405. "indeed",
  1406. "lace",
  1407. "melody",
  1408. "monkey",
  1409. "nation",
  1410. "object",
  1411. "obviously",
  1412. "rainbow",
  1413. "salt",
  1414. "scratch",
  1415. "shown",
  1416. "shy",
  1417. "stage",
  1418. "stun",
  1419. "third",
  1420. "tickle",
  1421. "useless",
  1422. "weakness",
  1423. "worship",
  1424. "worthless",
  1425. "afternoon",
  1426. "beard",
  1427. "boyfriend",
  1428. "bubble",
  1429. "busy",
  1430. "certain",
  1431. "chin",
  1432. "concrete",
  1433. "desk",
  1434. "diamond",
  1435. "doom",
  1436. "drawn",
  1437. "due",
  1438. "felicity",
  1439. "freeze",
  1440. "frost",
  1441. "garden",
  1442. "glide",
  1443. "harmony",
  1444. "hopefully",
  1445. "hunt",
  1446. "jealous",
  1447. "lightning",
  1448. "mama",
  1449. "mercy",
  1450. "peel",
  1451. "physical",
  1452. "position",
  1453. "pulse",
  1454. "punch",
  1455. "quit",
  1456. "rant",
  1457. "respond",
  1458. "salty",
  1459. "sane",
  1460. "satisfy",
  1461. "savior",
  1462. "sheep",
  1463. "slept",
  1464. "social",
  1465. "sport",
  1466. "tuck",
  1467. "utter",
  1468. "valley",
  1469. "wolf",
  1470. "aim",
  1471. "alas",
  1472. "alter",
  1473. "arrow",
  1474. "awaken",
  1475. "beaten",
  1476. "belief",
  1477. "brand",
  1478. "ceiling",
  1479. "cheese",
  1480. "clue",
  1481. "confidence",
  1482. "connection",
  1483. "daily",
  1484. "disguise",
  1485. "eager",
  1486. "erase",
  1487. "essence",
  1488. "everytime",
  1489. "expression",
  1490. "fan",
  1491. "flag",
  1492. "flirt",
  1493. "foul",
  1494. "fur",
  1495. "giggle",
  1496. "glorious",
  1497. "ignorance",
  1498. "law",
  1499. "lifeless",
  1500. "measure",
  1501. "mighty",
  1502. "muse",
  1503. "north",
  1504. "opposite",
  1505. "paradise",
  1506. "patience",
  1507. "patient",
  1508. "pencil",
  1509. "petal",
  1510. "plate",
  1511. "ponder",
  1512. "possibly",
  1513. "practice",
  1514. "slice",
  1515. "spell",
  1516. "stock",
  1517. "strife",
  1518. "strip",
  1519. "suffocate",
  1520. "suit",
  1521. "tender",
  1522. "tool",
  1523. "trade",
  1524. "velvet",
  1525. "verse",
  1526. "waist",
  1527. "witch",
  1528. "aunt",
  1529. "bench",
  1530. "bold",
  1531. "cap",
  1532. "certainly",
  1533. "click",
  1534. "companion",
  1535. "creator",
  1536. "dart",
  1537. "delicate",
  1538. "determine",
  1539. "dish",
  1540. "dragon",
  1541. "drama",
  1542. "drum",
  1543. "dude",
  1544. "everybody",
  1545. "feast",
  1546. "forehead",
  1547. "former",
  1548. "fright",
  1549. "fully",
  1550. "gas",
  1551. "hook",
  1552. "hurl",
  1553. "invite",
  1554. "juice",
  1555. "manage",
  1556. "moral",
  1557. "possess",
  1558. "raw",
  1559. "rebel",
  1560. "royal",
  1561. "scale",
  1562. "scary",
  1563. "several",
  1564. "slight",
  1565. "stubborn",
  1566. "swell",
  1567. "talent",
  1568. "tea",
  1569. "terrible",
  1570. "thread",
  1571. "torment",
  1572. "trickle",
  1573. "usually",
  1574. "vast",
  1575. "violence",
  1576. "weave",
  1577. "acid",
  1578. "agony",
  1579. "ashamed",
  1580. "awe",
  1581. "belly",
  1582. "blend",
  1583. "blush",
  1584. "character",
  1585. "cheat",
  1586. "common",
  1587. "company",
  1588. "coward",
  1589. "creak",
  1590. "danger",
  1591. "deadly",
  1592. "defense",
  1593. "define",
  1594. "depend",
  1595. "desperate",
  1596. "destination",
  1597. "dew",
  1598. "duck",
  1599. "dusty",
  1600. "embarrass",
  1601. "engine",
  1602. "example",
  1603. "explore",
  1604. "foe",
  1605. "freely",
  1606. "frustrate",
  1607. "generation",
  1608. "glove",
  1609. "guilty",
  1610. "health",
  1611. "hurry",
  1612. "idiot",
  1613. "impossible",
  1614. "inhale",
  1615. "jaw",
  1616. "kingdom",
  1617. "mention",
  1618. "mist",
  1619. "moan",
  1620. "mumble",
  1621. "mutter",
  1622. "observe",
  1623. "ode",
  1624. "pathetic",
  1625. "pattern",
  1626. "pie",
  1627. "prefer",
  1628. "puff",
  1629. "rape",
  1630. "rare",
  1631. "revenge",
  1632. "rude",
  1633. "scrape",
  1634. "spiral",
  1635. "squeeze",
  1636. "strain",
  1637. "sunset",
  1638. "suspend",
  1639. "sympathy",
  1640. "thigh",
  1641. "throne",
  1642. "total",
  1643. "unseen",
  1644. "weapon",
  1645. "weary"
  1646. ]
  1647. n = 1626
  1648. # Note about US patent no 5892470: Here each word does not represent a given digit.
  1649. # Instead, the digit represented by a word is variable, it depends on the previous word.
  1650. def mn_encode( message ):
  1651. out = []
  1652. for i in range(len(message)/8):
  1653. word = message[8*i:8*i+8]
  1654. x = int(word, 16)
  1655. w1 = (x%n)
  1656. w2 = ((x/n) + w1)%n
  1657. w3 = ((x/n/n) + w2)%n
  1658. out += [ words[w1], words[w2], words[w3] ]
  1659. return out
  1660. def mn_decode( wlist ):
  1661. out = ''
  1662. for i in range(len(wlist)/3):
  1663. word1, word2, word3 = wlist[3*i:3*i+3]
  1664. w1 = words.index(word1)
  1665. w2 = (words.index(word2))%n
  1666. w3 = (words.index(word3))%n
  1667. x = w1 +n*((w2-w1)%n) +n*n*((w3-w2)%n)
  1668. out += '%08x'%x
  1669. return out
  1670. if __name__ == '__main__':
  1671. import sys
  1672. if len( sys.argv ) == 1:
  1673. print 'I need arguments: a hex string to encode, or a list of words to decode'
  1674. elif len( sys.argv ) == 2:
  1675. print ' '.join(mn_encode(sys.argv[1]))
  1676. else:
  1677. print mn_decode(sys.argv[1:])