Advertisement
dunedeinn

Pyton voice-controlled data encryption

Feb 20th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.83 KB | None | 0 0
  1. import speech_recognition as sr
  2. import pygame
  3. import uuid
  4. import time
  5. import os
  6.  
  7. pygame.mixer.pre_init(16000, 16, 2, 4096)
  8. pygame.mixer.init()
  9.  
  10.  
  11. def random_key(string_length=16):
  12.     random = str(uuid.uuid4())
  13.     random = random.upper()
  14.     random = random.replace("-", "")
  15.     return random[0:string_length]
  16.  
  17.  
  18. def encrypt(key, msg):
  19.     encryped = []
  20.     for i, c in enumerate(msg):
  21.         key_c = ord(key[i % len(key)])
  22.         msg_c = ord(c)
  23.         encryped.append(chr((msg_c + key_c) % 127))
  24.     return ''.join(encryped)
  25.  
  26.  
  27. def decrypt(key, encryped):
  28.     msg = []
  29.     for i, c in enumerate(encryped):
  30.         key_c = ord(key[i % len(key)])
  31.         enc_c = ord(c)
  32.         msg.append(chr((enc_c - key_c) % 127))
  33.     return ''.join(msg)
  34.  
  35.  
  36. if __name__ == '__main__':
  37.     more = True
  38.     while more:
  39.         # --open application--
  40.         r_op = sr.Recognizer()
  41.         kljuc_op = 'login'
  42.         with sr.Microphone() as source:
  43.             audio_op = r_op.listen(source)
  44.         try:
  45.             prim_op = r_op.recognize_google(audio_op)
  46.             if prim_op == kljuc_op:
  47.                 instr = pygame.mixer.Sound('welcome.wav')
  48.                 instr.play()
  49.         except sr.UnknownValueError:
  50.             err = pygame.mixer.Sound('error.wav')
  51.             err.play()
  52.             time.sleep(5)
  53.             exit()
  54.         # --generate sequence--
  55.         if prim_op:
  56.             r_pk = sr.Recognizer()
  57.             kljuc_pk = 'key'
  58.             kljuc_del = 'delete'
  59.             fail_pk = 'stop'
  60.             with sr.Microphone() as source:
  61.                 audio_pk = r_pk.listen(source)
  62.             try:
  63.                 prim_pk = r_pk.recognize_google(audio_pk)
  64.                 if prim_pk == fail_pk:
  65.                     abt = pygame.mixer.Sound('close.wav')
  66.                     abt.play()
  67.                     time.sleep(2)
  68.                     exit()
  69.                 if prim_pk == kljuc_pk:
  70.                     seq1 = pygame.mixer.Sound('sequence1.wav')
  71.                     seq1.play()
  72.                     with open("generated_key.txt", "w") as myfile:
  73.                         myfile.write(random_key(16))
  74.                     time.sleep(1)
  75.                 elif prim_pk == kljuc_del:
  76.                     path = 'C:/Users/Goran Horvat/Desktop/OPB/OPB projekt/files'
  77.                     for root, directories, filenames in os.walk(path):
  78.                         for filename in filenames:
  79.                             if filename.endswith(".txt"):
  80.                                 ex = os.path.join(root, filename)
  81.                                 os.remove(ex)
  82.                     f_del = pygame.mixer.Sound('deleted.wav')
  83.                     f_del.play()
  84.                     time.sleep(2)
  85.                     exit()
  86.             except sr.UnknownValueError:
  87.                 err = pygame.mixer.Sound('error.wav')
  88.                 err.play()
  89.                 time.sleep(5)
  90.                 exit()
  91.  
  92.         # --existing/new file--
  93.         if prim_pk:
  94.             kljuc_efi = 'open existing'
  95.             kljuc_nfi = 'create'
  96.             fail_fi = 'stop'
  97.             r_fi = sr.Recognizer()
  98.             with sr.Microphone() as source:
  99.                 audio_fi = r_fi.listen(source)
  100.             try:
  101.                 prim_fi = r_fi.recognize_google(audio_fi)
  102.                 if prim_fi == fail_fi:
  103.                     abt = pygame.mixer.Sound('close.wav')
  104.                     abt.play()
  105.                     time.sleep(2)
  106.                     exit()
  107.                 if prim_fi == kljuc_efi:
  108.                     loc = 'C:/Users/Goran Horvat/Desktop/OPB/OPB projekt/files'
  109.                     for root, directories, filenames in os.walk(loc):
  110.                         for filename in filenames:
  111.                             if filename.endswith(".txt"):
  112.                                 ex = os.path.join(root, filename)
  113.                     f_ex = pygame.mixer.Sound('existing_loaded.wav')
  114.                     f_ex.play()
  115.                 elif prim_fi == kljuc_nfi:
  116.                     r_msg = sr.Recognizer()
  117.                     message = pygame.mixer.Sound('message.wav')
  118.                     message.play()
  119.  
  120.                     with sr.Microphone() as source:
  121.                         audio_msg = r_msg.record(source, 5)
  122.                     try:
  123.                         prim_msg = r_msg.recognize_google(audio_msg)
  124.                         r_file = sr.Recognizer()
  125.                         time.sleep(3)
  126.                         file = pygame.mixer.Sound('file_name.wav')
  127.                         file.play()
  128.                         with sr.Microphone() as source:
  129.                             audio_file = r_file.listen(source)
  130.                         try:
  131.                             prim_file = r_file.recognize_google(audio_file)
  132.                             with open(prim_file+".txt", "w") as myfile:
  133.                                 myfile.write(prim_msg)
  134.                             time.sleep(3)
  135.                             f_new = pygame.mixer.Sound('file_new.wav')
  136.                             f_new.play()
  137.                         except sr.UnknownValueError:
  138.                             err = pygame.mixer.Sound('error.wav')
  139.                             err.play()
  140.                             time.sleep(5)
  141.                             exit()
  142.                     except sr.UnknownValueError:
  143.                         err = pygame.mixer.Sound('error.wav')
  144.                         err.play()
  145.                         time.sleep(5)
  146.                         exit()
  147.             except sr.UnknownValueError:
  148.                 err = pygame.mixer.Sound('error.wav')
  149.                 err.play()
  150.                 time.sleep(5)
  151.                 exit()
  152.  
  153.         # --encrypt--
  154.         if prim_pk:
  155.             r_en = sr.Recognizer()
  156.             kljuc_en = 'encrypt'
  157.             fail_en = 'stop'
  158.             with sr.Microphone() as source:
  159.                 audio_en = r_en.listen(source)
  160.             try:
  161.                 prim_en = r_en.recognize_google(audio_en)
  162.                 if prim_en == fail_en:
  163.                     abt = pygame.mixer.Sound('close.wav')
  164.                     abt.play()
  165.                     time.sleep(2)
  166.                     exit()
  167.                 if prim_en == kljuc_en:
  168.                     with open("generated_key.txt") as myfile:
  169.                         key_en = "".join(line.rstrip() for line in myfile)
  170.                     cipher_en = key_en
  171.                     seq2 = pygame.mixer.Sound('sequence2.wav')
  172.                     seq2.play()
  173.             except sr.UnknownValueError:
  174.                 err = pygame.mixer.Sound('error.wav')
  175.                 err.play()
  176.                 time.sleep(5)
  177.                 exit()
  178.             if prim_fi == 'open existing':
  179.                 with open(ex) as efile:
  180.                     new_exists = "".join(line.rstrip() for line in efile)
  181.                 encrypted = encrypt(cipher_en, new_exists)
  182.             else:
  183.                 with open(prim_file+".txt") as myfile:
  184.                     msg = "".join(line.rstrip() for line in myfile)
  185.                 encrypted = encrypt(cipher_en, msg)
  186.  
  187.             if prim_fi == 'open existing':
  188.                 with open(ex+"_encrypted.txt", "w") as efile:
  189.                     efile.write(encrypted)
  190.             else:
  191.                 with open(prim_file+"_encrypted.txt", "w") as myfile:
  192.                     myfile.write(encrypted)
  193.  
  194.             time.sleep(2)
  195.             encr = pygame.mixer.Sound('encryption.wav')
  196.             encr.play()
  197.  
  198.         # --decrypt--
  199.         if encrypted:
  200.             r_de = sr.Recognizer()
  201.             kljuc_de = 'decrypt'
  202.             fail_de = 'stop'
  203.             with sr.Microphone() as source:
  204.                 audio_de = r_de.listen(source)
  205.             try:
  206.                 prim_de = r_de.recognize_google(audio_de)
  207.                 if prim_de == fail_de:
  208.                     abt = pygame.mixer.Sound('close.wav')
  209.                     abt.play()
  210.                     time.sleep(2)
  211.                     exit()
  212.                 if prim_de == kljuc_de:
  213.                     with open("generated_key.txt") as myfile:
  214.                         key_de = "".join(line.rstrip() for line in myfile)
  215.                     cipher_de = key_de
  216.             except sr.UnknownValueError:
  217.                 err = pygame.mixer.Sound('error.wav')
  218.                 err.play()
  219.                 time.sleep(5)
  220.                 exit()
  221.             if prim_fi == 'open existing':
  222.                 with open(ex+"_encrypted.txt") as efile:
  223.                     new_exists = "".join(line.rstrip() for line in efile)
  224.                 decrypted = decrypt(key_de, encrypted)
  225.             else:
  226.                 with open(prim_file+"_encrypted.txt") as myfile:
  227.                     msg = "".join(line.rstrip() for line in myfile)
  228.                 decrypted = decrypt(key_de, encrypted)
  229.  
  230.             if prim_fi == 'open existing':
  231.                 with open(ex+"_decrypted.txt", "w") as efile:
  232.                     efile.write(decrypted)
  233.             else:
  234.                 with open(prim_file+"_decrypted.txt", "w") as myfile:
  235.                     myfile.write(decrypted)
  236.             time.sleep(1)
  237.             decr = pygame.mixer.Sound('decryption.wav')
  238.             decr.play()
  239.             time.sleep(1)
  240.  
  241.         # --close application--
  242.         if decrypted:
  243.             r_cl = sr.Recognizer()
  244.             kljuc_cl = 'exit'
  245.             with sr.Microphone() as source:
  246.                 audio_cl = r_cl.listen(source)
  247.             try:
  248.                 prim_cl = r_cl.recognize_google(audio_cl)
  249.                 if prim_cl == kljuc_cl:
  250.                     end = pygame.mixer.Sound('close.wav')
  251.                     end.play()
  252.                     time.sleep(2)
  253.                     more = False
  254.                     exit()
  255.             except sr.UnknownValueError:
  256.                 err = pygame.mixer.Sound('error.wav')
  257.                 err.play()
  258.                 time.sleep(5)
  259.                 exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement