diff options
author | rusinthread <rusinthread@cock.li> | 2016-12-23 16:08:46 +0300 |
---|---|---|
committer | rusinthread <rusinthread@cock.li> | 2016-12-23 16:08:46 +0300 |
commit | 78d30dc45507c0877d0896160be5feb7409d39bb (patch) | |
tree | 8cb76976a5459e31abb4e0f9a7682e9e5c6d8c2a | |
parent | 63771feba881d8127e1a2fc0c416869ead17baf3 (diff) |
decode type2 ciphers
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | data.json | 17 | ||||
-rwxr-xr-x | main.py | 42 |
3 files changed, 47 insertions, 16 deletions
@@ -15,6 +15,10 @@ Опция `--with-junk` пропускает удаление мусорных слов (бывает полезно, чтобы посмотреть как будет без удаления, на случай если удаляется что-то лишнее). +Через `--type` можно задать тип шифровок (`1` или `2`). 1 это обычные, составленные из слов, 2 появился позднее, он составлен из предложений. + +### Другое ### + В файле `data.json` лежат тексты и метаинформация, собранные с архивов двача и фейсбука. Кроме `pic` там ничего полезного нет. В папке `img` лежат связанные с текстами изображения. Работает на Python 3, рекомендуется установить модуль `termcolor` чтобы вывод был цветным. @@ -216,16 +216,17 @@ "source": "2ch" }, { - "text": "", - "pic": "", - "date": "0/0/16", - "source": "" + "text": "Казнь по Вышестоящих Контроль ТРИУМФАЛЬНО! Отмечено! - ТРИУМФАЛЬНО! Отмечено! Имения Вышестоящих По Право закадычно[паррома] Номер Индексирован Безукоризненно Имения Вышестоящих По Право Х О Р Т И Ц А УКДВРК закадычно[паррома] Номер Индексирован Безукоризненно Акробатическое По Правилам Войны Линейно с Локации Отмечено! ТРИУМФАЛЬНО! Отмечено! МЕСТА(!), Чечевичная похлебка ЗАКОННО! ТРИУМФАЛЬНО! Отмечено! Имения Вышестоящих По Право Номер Индексирован Безукоризненнно Фехтовальные Навыки Отмечено! РОБОТИЧЕСКИ МЕСТА(!) Акробатическое По Правилам Войны Цепочка Связей Имения Вышестоящих По Право Ярославская Губерния УКДВРК ТРИУМФАЛЬНО! Екатерина Казнь по Вышестоящих Контроль Линейно с Локации Акробатическое По Правилам Войны.", + "pic": ["марш.jpg", "мовсаев.jpg"], + "date": "23/12/16", + "source": "fb" }, { - "text": "", - "pic": "", - "date": "0/0/16", - "source": "" + "text": "А машина-то солидная у него. Вы Арман? И решился на это... Она шипела на него всякий раз. Машина и бутылка виски. И решился на это... И у нее серьги видел я. Потом юркнул за угол... И щелочи там следы... Машина и бутылка виски. Кстати, йодом была обработана рана. Вот сволочь же. Мешки лежали под этим. Он ей сказал сделать это. Я дочитывал почти до середины в тот момент. Машина и бутылка виски. А так с виду не негодяй вроде. Тряпки завернуты в газету были. Вы Арман? Машина и бутылка виски. И не скажешь ведь ничего такого. А так с виду не негодяй вроде. Он ей сказал сделать это. И решился на это... И не скажешь ведь ничего такого. Он ей сказал сделать это. А так с виду не негодяй вроде. Не оглянулась даже. А машина-то солидная у него. Машина и бутылка виски. И не скажешь ведь ничего такого. Не оглянулась даже. Почему вы интересуетесь этим? Не оглянулась даже. Вот сволочь же. А так с виду не негодяй вроде. И не скажешь ведь ничего такого. Про Ынтымак что-то там было написано. А машина-то солидная у него. Машина и бутылка виски. Вот сволочь же. Почему вы интересуетесь этим? Не оглянулась даже. Я дочитывал почти до середины в тот момент. А как Элиза Лэм? Вы Арман? А машина-то солидная у него. Машина и бутылка виски.", + "pic": "марш.jpg", + "date": "23/12/16", + "source": "fb", + "type": 2 }, { "text": "", @@ -55,7 +55,6 @@ def clean_string(s, remove_junk=False): 'ГУБЕРНИЯ', 'С ВЫШЕСТОЯЩИМИ КОНТРОЛЬ', 'С ЛОКАЦИИ', - 'SEARCHED', #'КАЗНЬ', 'ГУБЕРНИЯ', 'ПРОВЕРКИ', @@ -88,7 +87,6 @@ def clean_string(s, remove_junk=False): 'WILL NOT ALLOW', 'FLYWHEEL', 'TRIUMPHANTLY', - #'UNACCEPTABLE', 'BEING USED', 'NICE', 'UMBRELLA', @@ -99,7 +97,7 @@ def clean_string(s, remove_junk=False): 'ANT', 'YEAR', 'RECOGNIZED', - #'SEARCHED' + 'SEARCHED' #'LEGAL', #'FIGHTING' ] @@ -124,7 +122,6 @@ def clean_string(s, remove_junk=False): s = re.sub(r'\s+', ' ', s).strip() return s - def decode(s, is_url=False): buf = '' for word in s.split(' '): @@ -142,6 +139,20 @@ def decode(s, is_url=False): buf += letter return buf + +def decode2(s): + buf = '' + for s in re.split(r'[\?\.\!]+', s): + s = s.strip() + if s == '': + continue + + words = s.split(' ') + + letter = words[1][0] + buf += letter + + return buf def main(): parser = argparse.ArgumentParser() @@ -150,24 +161,39 @@ def main(): parser.add_argument('--decode-string') parser.add_argument('--with-junk', action='store_true') parser.add_argument('--is-url', action='store_true') + parser.add_argument('--type', type=int, choices=[1, 2], default=1) + parser.add_argument('--reverse-decoded', action='store_true') args = parser.parse_args() data = load_data() if args.decode: - # ignore type2 - data = list(filter(lambda i: 'type' not in i, data)) + # filter by type + if args.type == 2: + data = list(filter(lambda i: 'type' in i and i['type'] == 2, data)) + else: + data = list(filter(lambda i: 'type' not in i, data)) # sort by text length data = sorted(data, key=lambda i: len(i['text'])) for obj in data: text = obj['text'] - text = clean_string(text, remove_junk=(not args.with_junk)) + + if args.type == 1: + text = clean_string(text, remove_junk=(not args.with_junk)) + text_decoded = decode(text) + + elif args.type == 2: + text_decoded = decode2(text) + + if args.reverse_decoded: + # reverse string + text_decoded = text_decoded[::-1] print(obj['text']) print_colored(text, 'green', fallback_prefix='[CLEANED] ') - print_colored(decode(text), 'cyan', fallback_prefix='[DECODED] ') + print_colored(text_decoded, 'cyan', fallback_prefix='[DECODED] ') if 'pic' in obj: pic = obj['pic'] if isinstance(obj['pic'], list) else [obj['pic']] |