summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--analyze_new.py131
-rwxr-xr-xmain.py40
-rw-r--r--new/text1_orig1
-rw-r--r--new/text2_orig1
-rw-r--r--new/text3_orig1
5 files changed, 173 insertions, 1 deletions
diff --git a/analyze_new.py b/analyze_new.py
new file mode 100644
index 0000000..348ed8d
--- /dev/null
+++ b/analyze_new.py
@@ -0,0 +1,131 @@
+#!/usr/bin/python3
+import re
+import operator
+import itertools
+import sys
+from pprint import pprint
+
+def load_text(n):
+ with open('new/text' + str(n) + '_orig') as f:
+ text = f.read()
+
+ lines = re.split(r'[\?\.\!]+', text)
+ lines = list(map(lambda s: s.replace(' ', '').replace('-', ''), lines))
+
+ return "\n".join(lines).strip()
+
+def letter_pos(letter):
+ if letter in predefined_table:
+ return predefined_table[letter]
+ else:
+ letter_table = table[letter]
+ if len(letter_table) > 0:
+ return letter_table[0][0]
+ else:
+ return None
+
+alphabet = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
+
+text = ''
+text += load_text(1) + "\n"
+text += load_text(3) + "\n"
+#text += load_text(2)
+text = text.upper()
+
+predefined_table = {
+ 'М': 8,
+ 'А': 5,
+ 'Р': 3,
+ 'Ш': 1,
+ 'Щ': 1,
+ 'И': 1,
+ 'У': 2,
+ 'Ю': 10,
+ 'В': 12,
+ 'Й': 5,
+ 'Л': 2,
+ 'Ц': 2,
+ 'О': 4,
+ 'Д': 8,
+ 'Т': 9,
+ 'П': 5,
+ 'Э': 3
+}
+
+table = {}
+lines = text.split("\n")
+
+for a in alphabet:
+ table[a] = {}
+ for line in lines:
+ indexes = [m.start() for m in re.finditer(a, line)]
+ for index in indexes:
+ index += 1
+ if index in table[a]:
+ table[a][index] += 1
+ else:
+ table[a][index] = 1
+
+for a, t in table.items():
+ ts = sorted(t.items(), key=operator.itemgetter(1), reverse=True)
+ table[a] = ts
+
+#pprint(table['Э'])
+#sys.exit()
+
+variants = []
+for line in lines:
+ valid = []
+ for a in table:
+ if True:
+ index = letter_pos(a)
+ if index == None:
+ continue
+
+ try:
+ if line[index-1] == a and a not in valid:
+ valid.append(a)
+ except IndexError:
+ continue
+
+ if False:
+ letter_table = table[a]
+ if not len(letter_table):
+ continue
+
+ for i in range(3):
+ if i > len(letter_table)-1:
+ continue
+
+ if a == 'Щ':
+ index = 1
+ else:
+ index = letter_table[i][0]
+ try:
+ if line[index-1] == a and a not in valid:
+ valid.append(a)
+ except IndexError:
+ continue
+
+ variants.append(valid)
+ #print('('+''.join(valid)+')')
+
+variants = list(filter(lambda a: len(a), variants))
+variants = variants[11:31]
+
+pprint(variants)
+sys.exit()
+
+#variants = variants[11:]
+res = list(itertools.product(*variants))
+for r in res:
+ if r[0] == 'Ь': continue
+# if r[1] != 'А': continue
+# if r[5] != 'Л': continue
+# if r[4] != 'О': continue
+
+ #if r[3] != 'И': continue
+ #if r[2] != 'Д': continue
+ #if r[0] != 'Х': continue
+
+ print(''.join(r))
diff --git a/main.py b/main.py
index 0d3c6d5..abf732a 100755
--- a/main.py
+++ b/main.py
@@ -154,6 +154,41 @@ def decode2(s):
return buf
+def decode3(s):
+ buf = ''
+ for s in re.split(r'[\?\.\!]+', s):
+ s = s.strip()
+ s = s.replace(' ', '')
+ s = s.replace('-', '')
+ if not s:
+ continue
+
+ print(s)
+ continue
+
+ s = s.upper()
+
+ if s[0] in ('Ш', 'Щ', 'И'):
+ buf += s[0]
+ elif s[4] == 'Й':
+ buf += s[4]
+ elif s[0] == 'И':
+ buf += 'И'
+ elif s[7] == 'М':
+ buf += 'М'
+ elif s[4] == 'А':
+ buf += 'А'
+ elif s[2] == 'Р':
+ buf += 'Р'
+ elif s[1] == 'У':
+ buf += 'У'
+ elif s[9] == 'Ю':
+ buf += 'Ю'
+ else:
+ buf += '?'
+
+ return buf
+
# s: source
# t: type
@@ -165,6 +200,9 @@ def decode_auto(s, t, reverse_decoded=False, remove_junk=True):
elif t == 2:
result = decode2(s)
+ elif t == 3:
+ result = decode3(s)
+
if reverse_decoded:
# reverse string
result = result[::-1]
@@ -180,7 +218,7 @@ def main():
parser.add_argument('--decode-file')
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('--type', type=int, choices=[1, 2, 3], default=1)
parser.add_argument('--reverse-decoded', action='store_true')
args = parser.parse_args()
diff --git a/new/text1_orig b/new/text1_orig
new file mode 100644
index 0000000..802f16e
--- /dev/null
+++ b/new/text1_orig
@@ -0,0 +1 @@
+Ты тоже Омск теперь вспоминай с ностальгией. Атава та еще стерва. Бурак кушать всегда тебе полезно. Шлюха она и Африке шлюха. Ироды естественно ничего не поймут. Дурное это на вкус. Тупое лезвие все настроение испортило. Особую ты и юную видел. Щука исполнила желание. И не поняли ничего. Какой хозяин такая и собака. От них и хреново можно себя почувствовать. Так он и знал ее. После он дезинтегрирует их. И что это? Она даже и такая вся из себя. Это и понял сразу. С трона не скинешь его точно. По этой дороге ты всегда ходил. Их с собой теперь не носи. Как отметили в дневнике. Только у моих подопечных. И у них есть все. Но что и аммуниции вопрос не беспокоит. Но она не думает. Он решил и выполнил. Шкурные у всех интересы. Ты роботизирован насквозь. И узнал все от меня. Если вам и такая работа по вкусу. И учуяли они.
diff --git a/new/text2_orig b/new/text2_orig
new file mode 100644
index 0000000..c4a1bf3
--- /dev/null
+++ b/new/text2_orig
@@ -0,0 +1 @@
+Только не смотрели погоды прогноз. Даже не решились оценку вынести и утиному носу ее. А так что ни есть она не стругает. Информационная война не на пользу. Чтобы не было инверсии. После матча негде иподромить. Имели они вас. Самогон дерьмом не окажется. Атава ничего тебе не расскажет. При падении он что-то аргументирует. Атава не знал куда бежать. Падении нет укуса.
diff --git a/new/text3_orig b/new/text3_orig
new file mode 100644
index 0000000..797557b
--- /dev/null
+++ b/new/text3_orig
@@ -0,0 +1 @@
+Если едем то на ГАЗ-53. Шок на хуторе ты что-то смотрел. Пир и это мы всегда любили. Шикарно если ты изучаешь. И сам все всегда хочет знать. На рабочей установке всегда все гладко. А устье реки в котором плавает конечность. Как по мне и юркий он уж больно. Щиплет рану эта жидкость. Использовали тебя да еще как. Пожуй немного этого растения - если вот на голову это натянешь, то и хорошо. Плавно спускается вниз. Прима это ваше любимое. То вы никогда не узнаете. Если худо надо использовать это. Так он ничего не боится. Пламя есть из этой шутки. Плева девственная хочет быть восстановлена. Изучено и шути хоть немного над этим. У целого не отнимешь. Так очень обнадеживающе звучит.