drobnosti
[krypto.git] / robot.py
index 7992a53..16897a6 100755 (executable)
--- a/robot.py
+++ b/robot.py
@@ -15,8 +15,8 @@ import posuny
 import pickle
 import os
 import re
 import pickle
 import os
 import re
-
-ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+from spolecne import ABECEDA
+import vigenere
 
 class settings:
     pass
 
 class settings:
     pass
@@ -42,26 +42,26 @@ odesilatel = mail['From']
 if predmet != settings.subject:
     sys.exit()
 if opsny == 'H':
 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 "
                "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"
                "\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"
                "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"
                "\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"
                "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'))
     sys.exit()
 if 'L' in opsny:
     mail = pickle.load(open('./msg_last.tmp'))
@@ -142,10 +142,18 @@ if mod_m:
     analyza.append("\nIndex koincidence (s mezerami):")
     analyza.append('{0:.2%}'.format(
                    koincidence.index_koincidence(zprava, True)))
     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))
 
     analyza.append("\nIndexy koincidence (bez mezer):")
     analyza.append(koincidence.tabulka_indexu(zprava))
 
+# Vigenere
+if 'V' in opsny:
+    analyza.append("\nHeslo k Vigenerovi (" + opsny[-1] + "):")
+    vig_heslo, vig_text = vigere.vsechno(zprava, int(opsny[-1]))
+    analyza.append(vig_heslo)
+    analyza.append(vig_text)
+
 # Jakobsen
 if mod_m:
     analyza.append("\nJakobsen (s mezerami):")
 # Jakobsen
 if mod_m:
     analyza.append("\nJakobsen (s mezerami):")
@@ -165,7 +173,7 @@ else:
     analyza.append(posunuty_text)
 
 # Bigramy
     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:
     analyza.append("\nBigramy podle cetnosti:")
     bigramy = dict()
     for i in ABECEDA: