X-Git-Url: http://git.tomasm.cz/krypto.git/blobdiff_plain/bf595ddb5a09ef7a82db9528df97f57f40d09927..7bb66b1dd26b04b58b39a43632ea107313307b66:/robot.py diff --git a/robot.py b/robot.py index 7992a53..79282fc 100755 --- a/robot.py +++ b/robot.py @@ -15,8 +15,8 @@ import posuny import pickle import os import re - -ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +from spolecne import ABECEDA +import vigenere class settings: pass @@ -42,26 +42,26 @@ odesilatel = mail['From'] if predmet != settings.subject: sys.exit() if opsny == 'H': - posli_mail(odesilatel, "Napoveda", "Napoveda:\n" + posli_mail(odesilatel, "Napoveda", ''.join("Napoveda:\n" "Prikazy robotovi vkladejte do predmetu zpravy " - "zaslane na adresu " + - settings.mail + ".\nNa velikosti pismen nezalezi." + "zaslane na adresu ", + settings.mail, ".\nNa velikosti pismen nezalezi." "\n\nSeznam prikazu:\n" - "\"" + settings.subject + "\" Analyza zpravy z tela mailu.\n" - "\"" + settings.subject + " L\" Opakovana analyza " - "posledni zpravy.\n" + - "\"" + settings.subject + " X\" Vynuti analyzu bez mezer.\n" - "\"" + settings.subject + " M\" Vynuti analyzu s mezerami.\n" - "\"" + settings.subject + " B\" Vypise cetnost vsech bigramu.\n" - "\"" + settings.subject + " P\" Vypise vsechny posunuti textu.\n" - "\"" + settings.subject + " A\" Vypise uplne vsechno co dava " + "\"", settings.subject, "\" Analyza zpravy z tela mailu.\n" + "\"", settings.subject, " L\" Opakovana analyza " + "posledni zpravy.\n", + "\"", settings.subject, " X\" Vynuti analyzu bez mezer.\n" + "\"", settings.subject, " M\" Vynuti analyzu s mezerami.\n" + "\"", settings.subject, " B\" Vypise cetnost vsech bigramu.\n" + "\"", settings.subject, " P\" Vypise vsechny posunuti textu.\n" + "\"", settings.subject, " A\" Vypise uplne vsechno co dava " "alespon trochu smysl (nedoporucuji).\n" - "\"" + settings.subject + " H\" Tato napoveda.\n" + "\"", settings.subject, " H\" Tato napoveda.\n" "\nVolby (mimo \"H\") je mozno libovolne kombinovat.\n" - "Napriklad \"" + settings.subject + " LXB\" analyzuje posledni " + "Napriklad \"", settings.subject, " LXB\" analyzuje posledni " "prijatou zpravu s vynucenim analyzy bez mezer a navic vypise " "cetnosti bigramu.\n" - "\nS pozdravem\nVas Robot\n") + "\nS pozdravem\nVas Robot\n")) sys.exit() if 'L' in opsny: mail = pickle.load(open('./msg_last.tmp')) @@ -79,7 +79,12 @@ if 'L' in opsny: posli_mail(odesilatel, "Omluva", "Omlouvam se," " ale Vase zprava uz bohuzel neni na serveru ulozena.\n") sys.exit() -telo = mail.get_payload().strip() + +if mail.is_multipart(): + telo = mail.get_payload(0).get_payload().strip() +else: + telo = mail.get_payload().strip() + if len(ocesat(telo, False)) < 2: posli_mail(odesilatel, "Omluva", "Omlouvam se," " ale Vase zprava je prilis kratka.\n") @@ -142,10 +147,19 @@ if mod_m: analyza.append("\nIndex koincidence (s mezerami):") analyza.append('{0:.2%}'.format( koincidence.index_koincidence(zprava, True))) -if mod_x: +if mod_x and len(zprava) >= 10: + #TODO tady by se spravne mela porovnavat delka ocesane zpravy analyza.append("\nIndexy koincidence (bez mezer):") analyza.append(koincidence.tabulka_indexu(zprava)) +# Vigenere +if 'V' in opsny: + # TODO?poradne cteni opsnu + analyza.append("\nHeslo k Vigenerovi (" + opsny[-1] + "):") + vig_heslo, vig_text = vigenere.vsechno(zprava, int(opsny[-1])) + analyza.append(vig_heslo) + analyza.append(vig_text) + # Jakobsen if mod_m: analyza.append("\nJakobsen (s mezerami):") @@ -165,7 +179,7 @@ else: analyza.append(posunuty_text) # Bigramy -if ('B' in opsny or 'A' in opsny): +if 'B' in opsny or 'A' in opsny: analyza.append("\nBigramy podle cetnosti:") bigramy = dict() for i in ABECEDA: