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