Guest User

cmiN

a guest
May 2nd, 2009
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 28.06 KB | None | 0 0
  1. #! /usr/bin/env python
  2. # 24.01.2009 <-> 02.02.2009 | cmiN
  3. # non-standard modules = ( Crypto , Pmw  )
  4. # updated to 02.05.2009
  5.  
  6.  
  7. from Tkinter import *
  8. from Crypto.Cipher import AES, DES, DES3, ARC2, ARC4, Blowfish, CAST, IDEA, RC5, XOR
  9. import tkFont, tkMessageBox, tkFileDialog, hashlib, zlib, base64, yahoo64, binascii, Pmw, hmac
  10.  
  11.  
  12. def frames():
  13.     global root, Font, _Font
  14.     root=Tk()
  15.     frame=Frame(root)
  16.     menu=Menu(root)
  17.     root.config(menu=menu)
  18.     filemenu=Menu(menu)
  19.     menu.add_cascade(label='File', menu=filemenu)
  20.     filemenu.add_command(label='Open...', command=open_txt)
  21.     filemenu.add_separator()
  22.     filemenu.add_command(label='Exit', command=bye)
  23.     helpmenu=Menu(menu)
  24.     menu.add_cascade(label='Help', menu=helpmenu)
  25.     helpmenu.add_command(label='About', command=msgbox1)
  26.     Font=tkFont.Font(family='Comic Sans MS', size=8, weight='bold')
  27.     _Font=tkFont.Font(family='Comic Sans MS', size=8, weight='normal')
  28.     frame.option_add('*font', Font)
  29.  
  30.  
  31.  
  32. def create_widgets():
  33.     global text1, text2, var1, var2, var3, rb1, rb2, cb1, cb2, entry1, decryption_list, encryption_list, txt, hex_list, key_list, status
  34.  
  35.     try:
  36.         txt
  37.     except NameError:
  38.         txt='None'
  39.        
  40.  
  41.     hex_list=('md2', 'md4', 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'ripemd', 'HMAC')
  42.     key_list=('HMAC', 'AES', 'ARC2', 'ARC4', 'Blowfish', 'CAST', 'DES', 'DES3', 'IDEA', 'RC5', 'XOR')
  43.    
  44.     message1=Label(text='From: ')
  45.     message1.grid(row=0, column=0)
  46.  
  47.     yscrollbar1=Scrollbar(orient=VERTICAL, command=scrollHandler1)
  48.     yscrollbar1.grid(row=1, column=2, ipady='22')
  49.     text1=Text(fg='grey', bg='white', yscrollcommand=yscrollbar1.set, state=NORMAL, width='30', height='6', font=_Font, takefocus=1)
  50.     text1.grid(row=1, column=1)
  51.     text1.insert(0.0, 'Enter text here...')
  52.     text1.bind('<Button-1>', clear_text)
  53.     text1.bind('<Key>', clear_text)
  54.     text1.focus()
  55.  
  56.     message2=Label(text='To:   ')
  57.     message2.grid(row=2, column=0)
  58.  
  59.     yscrollbar2=Scrollbar(orient=VERTICAL, command=scrollHandler2)
  60.     yscrollbar2.grid(row=3, column=2, ipady='22')
  61.     text2=Text(fg='red', bg='grey', yscrollcommand=yscrollbar2.set, state=DISABLED, width='30', height='6', font=_Font)
  62.     text2.grid(row=3, column=1)
  63.  
  64.     var1=IntVar()
  65.     rb1=Radiobutton(text='Hexdigest', value=1, variable=var1, state=DISABLED, takefocus=0, command=enable_if_hex)
  66.     rb2=Radiobutton(text='Digest    ', value=0, variable=var1, state=DISABLED, takefocus=0, command=enable_if_hex)
  67.     rb1.grid(row=4, column=0)
  68.     rb2.grid(row=5, column=0)
  69.     var1.set(1)
  70.  
  71.     dencryption_list=('PlainText', 'key', 'word', 'base16', 'base32', 'base64', "yahoo64", 'zlib', 'rot13', 'hqx', 'uu',
  72.                        'AES', 'DES', 'DES3', 'ARC2', 'ARC4', 'Blowfish', 'CAST', 'IDEA', 'RC5', 'XOR',
  73.                       'ord', 'hex', 'oct', 'bin', 'html', 'SkiddyFlama', 'Inglish') ##
  74.     cb1=Pmw.ComboBox(label_text='From: ', labelpos='nw', entry_insertontime=0, entry_state=NORMAL,
  75.                      scrolledlist_items=dencryption_list, selectioncommand=enable_if_hex, entry_width=11)
  76.     cb1.grid(sticky='nw', row=4, column=1)
  77.     cb1.selectitem(dencryption_list[0])
  78.  
  79.     encryption_list=('PlainText', 'md2', 'md4', 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'ripemd',
  80.                      'HMAC', 'base16', 'base32', 'base64', "yahoo64", 'adler32', 'crc32', 'crc_hqx', 'zlib', 'rot13',
  81.                      'hqx', 'uu', 'AES', 'DES', 'DES3', 'ARC2', 'ARC4', 'Blowfish', 'CAST', 'IDEA', 'RC5', 'XOR',
  82.                      'ord', 'hex', 'oct', 'bin', 'html', 'SkiddyFlama', 'Inglish') ##
  83.     cb2=Pmw.ComboBox(label_text='To: ', labelpos='nw', entry_insertontime=0, entry_state=NORMAL,
  84.                      scrolledlist_items=encryption_list, selectioncommand=enable_if_hex, entry_width=11)
  85.     cb2.grid(sticky='ne', row=4, column=1)
  86.     cb2.selectitem(encryption_list[0])
  87.  
  88.     b1=Button(text=' Exit ', command=bye)
  89.     b1.grid(sticky='se', row=6, column=0, pady=10)
  90.  
  91.     message5=Label(text='Key: ')
  92.     message5.grid(sticky='n' ,row=6, column=1)
  93.  
  94.     var3=StringVar()
  95.     entry1=Entry(textvariable=var3, bg='white', fg='blue', width=25, state=DISABLED)
  96.     entry1.grid(sticky='s' ,row=6, column=1, pady=10)
  97.     var3.set('')
  98.    
  99.     b2=Button(text='Convert', command=convert)
  100.     b2.grid(sticky='sw', row=6, column=2, pady=10)
  101.  
  102.     var2=StringVar()
  103.     var2.set(' Waiting...')
  104.     status=Pmw.MessageBar(entry_width=30, entry_relief="groove",
  105.                           labelpos="n", label_text="Status:")
  106.     status.grid(sticky='n', row=7, column=1)
  107.     status.message('systemevent', var2.get())
  108.  
  109.  
  110.  
  111. def enable_if_hex(*args):
  112.     if cb2.get() in hex_list:
  113.         rb1['state']=NORMAL
  114.         rb2['state']=NORMAL
  115.     else:
  116.         rb1['state']=DISABLED
  117.         rb2['state']=DISABLED
  118.     if cb1.get() in key_list or cb2.get() in key_list:
  119.         entry1['state']=NORMAL
  120.     else:
  121.         entry1['state']=DISABLED
  122.     var2.set(' Waiting...')
  123.     status.message('systemevent', var2.get())
  124.  
  125.  
  126.  
  127. def open_txt():
  128.     global txt
  129.     txt='None'
  130.     ftypes=[('Text Documents', '*.txt'), ('Word Documents', '*.doc'), ('XML Files', '*.xml')]
  131.     txt_list=None
  132.     try:
  133.         txt_list=tkFileDialog.askopenfile(parent=root, mode='r', title='Chose a text based file', filetypes=ftypes)
  134.         txt=txt_list.readlines()
  135.     except:
  136.         if txt_list is None:
  137.             var2.set(' Cancelled!')
  138.             status.message('systemevent', var2.get())
  139.         else:
  140.             tkMessageBox.showerror('File Error', 'Failed to open file!')
  141.     else:
  142.         var2.set(' List ready')
  143.         status.message('systemevent', var2.get())
  144.  
  145.  
  146.  
  147. def convert():
  148.     ## some settings
  149.     var2.set(' Please wait...')
  150.     status.message('systemevent', var2.get())
  151.     statement2=False
  152.     var4=IntVar()
  153.     var4.set(0)
  154.  
  155.     ## filter
  156.     brute=text1.get(0.0, END)
  157.     brute_list=[]
  158.     brute_list[len(brute_list):]=brute
  159.     final=''
  160.     statement=True
  161.     while statement is True:
  162.         try:
  163.             brute_list.remove('\n')
  164.         except:
  165.             statement=False
  166.         else:
  167.             continue
  168.     for x in brute_list:
  169.         final=final+x
  170.    
  171.     ## decryption
  172.     try:
  173.         if cb1.get()=='PlainText':
  174.             decrypted=final
  175.         elif cb1.get() in ('key', 'word'):
  176.             statement=False
  177.             for kw in txt:
  178.                 _decrypted=kw.strip('\n')
  179.                 _decrypted=_decrypted.split(':')
  180.                 if len(_decrypted) != 2:
  181.                     var2.set(' Invalid file or list!')
  182.                     status.message('systemevent', var2.get())
  183.                     return
  184.                 else:
  185.                     if cb1.get()=='key':
  186.                         if _decrypted[0]==final:
  187.                             decrypted=_decrypted[1]
  188.                             statement=True
  189.                     else:
  190.                         if _decrypted[1]==final:
  191.                             decrypted=_decrypted[0]
  192.                             statement=True
  193.             if statement is False:
  194.                 var2.set(' Nothing finded.')
  195.                 status.message('systemevent', var2.get())
  196.                 return
  197.         elif cb1.get()=='base16':
  198.             decrypted=base64.b16decode(final)
  199.         elif cb1.get()=='base32':
  200.             decrypted=base64.b32decode(final)
  201.         elif cb1.get()=='base64':
  202.             decrypted=base64.b64decode(final)
  203.         elif cb1.get()=="yahoo64":
  204.             decrypted=yahoo64.decode(final)
  205.         elif cb1.get()=='zlib':
  206.             _decrypted=final.split()
  207.             decrypted=''
  208.             for x in _decrypted:
  209.                 decrypted=decrypted+chr(int(x, 16))
  210.             decrypted=zlib.decompress(decrypted)
  211.         elif cb1.get() in ('html' ,'ord', 'hex', 'oct', 'bin'):
  212.             _decrypted=final.split()
  213.             decrypted=''
  214.             if cb1.get()=='html':
  215.                 _decrypted=final.split('&#')
  216.                 _decrypted.remove('')
  217.             for x in _decrypted:
  218.                 if cb1.get() in ('ord', 'html'):
  219.                     decrypted=decrypted+chr(int(x, 10))
  220.                 elif cb1.get()=='hex':
  221.                     decrypted=decrypted+chr(int(x, 16))
  222.                 elif cb1.get()=='oct':
  223.                     decrypted=decrypted+chr(int(x, 8))
  224.                 else:
  225.                     decrypted=decrypted+chr(int(x, 2))
  226.         elif cb1.get()=='hqx':
  227.             decrypted=binascii.a2b_hqx(final)[0]
  228.         elif cb1.get()=='uu':
  229.             decrypted=binascii.a2b_uu(final)
  230.         elif cb1.get()=='rot13':
  231.             _decrypted=[]
  232.             _decrypted[:]=final
  233.             decrypted=''
  234.             keys=rot13_table.keys()
  235.             for char in _decrypted:
  236.                 statement=False
  237.                 for key in keys:
  238.                     if char==key:
  239.                         decrypted=decrypted+rot13_table[key]
  240.                         statement=True
  241.                         break
  242.                     elif char==rot13_table[key]:
  243.                         decrypted=decrypted+key
  244.                         statement=True
  245.                         break
  246.                 if statement is False:
  247.                     decrypted=decrypted+char
  248.         elif cb1.get()=='SkiddyFlama':
  249.             decrypted=final
  250.             for z, x in SkiddyFlama_table:
  251.                 decrypted=decrypted.replace(x, z)
  252.             _decrypted=[]
  253.             _decrypted[:]=decrypted
  254.             for char in _decrypted:
  255.                 if char in sign_table:
  256.                     nr=_decrypted.index(char)
  257.                     _decrypted[nr-1:nr]=''
  258.             decrypted=''
  259.             for x in _decrypted:
  260.                 decrypted=decrypted+x
  261.         elif cb1.get()=='Inglish':
  262.             decrypted=final
  263.             for z, x in Inglish_table:
  264.                 decrypted=decrypted.replace(x, z)
  265.         elif cb1.get() in key_list[1:]:
  266.             _final=final.split()
  267.             final=''
  268.             for x in _final:
  269.                 final=final+chr(int(x, 16))
  270.             if cb1.get()=='AES':
  271.                 if not len(var3.get()) in (16, 24, 32):
  272.                     var2.set(' "Key" length must be 16/24/32.')
  273.                     status.message('systemevent', var2.get())
  274.                     return
  275.                 else:
  276.                     aes=AES.new(var3.get(), 1)
  277.                     decrypted=aes.decrypt(final)
  278.             elif cb1.get()=='ARC2':
  279.                 if len(var3.get())==0:
  280.                     var2.set(' "Key" length '+"mustn't"+' be 0!')
  281.                     status.message('systemevent', var2.get())
  282.                     return
  283.                 else:
  284.                     arc2=ARC2.new(var3.get(), 1)
  285.                     decrypted=arc2.decrypt(final)
  286.             elif cb1.get()=='ARC4':
  287.                 if len(var3.get())==0:
  288.                     var2.set(' "Key" length '+"mustn't"+' be 0!')
  289.                     status.message('systemevent', var2.get())
  290.                     return
  291.                 else:
  292.                     arc4=ARC4.new(var3.get())
  293.                     decrypted=arc4.decrypt(final)
  294.             elif cb1.get()=='Blowfish':
  295.                 if len(var3.get())==0:
  296.                     var2.set(' "Key" length '+"mustn't"+' be 0!')
  297.                     status.message('systemevent', var2.get())
  298.                     return
  299.                 else:
  300.                     blowfish=Blowfish.new(var3.get(), 1)
  301.                     decrypted=blowfish.decrypt(final)
  302.             elif cb1.get()=='CAST':
  303.                 if not len(var3.get()) in range(5, 17):
  304.                     var2.set(' "Key" length must be 4< and <17.')
  305.                     status.message('systemevent', var2.get())
  306.                     return
  307.                 else:
  308.                     cast=CAST.new(var3.get(), 1)
  309.                     decrypted=cast.decrypt(final)
  310.             elif cb1.get()=='DES':
  311.                 if not len(var3.get())==8:
  312.                     var2.set(' "Key" length must be 8.')
  313.                     status.message('systemevent', var2.get())
  314.                     return
  315.                 else:
  316.                     des=DES.new(var3.get(), 1)
  317.                     decrypted=des.decrypt(final)
  318.             elif cb1.get()=='DES3':
  319.                 if not len(var3.get()) in (16, 24):
  320.                     var2.set(' "Key" length must be 16/24.')
  321.                     status.message('systemevent', var2.get())
  322.                     return
  323.                 else:
  324.                     des3=DES3.new(var3.get(), 1)
  325.                     decrypted=des3.decrypt(final)
  326.             elif cb1.get()=='IDEA':
  327.                 if not len(var3.get())==16:
  328.                     var2.set(' "key" length must be 16.')
  329.                     status.message('systemevent', var2.get())
  330.                     return
  331.                 else:
  332.                     idea=IDEA.new(var3.get(), 1)
  333.                     decrypted=idea.decrypt(final)
  334.             elif cb1.get()=='RC5':
  335.                 if len(var3.get()) in (0, 1):
  336.                     var2.set(' "Key" length '+"mustn't"+' be 0/1!')
  337.                     status.message('systemevent', var2.get())
  338.                     return
  339.                 else:
  340.                     rc5=RC5.new(var3.get(), 1)
  341.                     decrypted=rc5.decrypt(final)
  342.             elif cb1.get()=='XOR':
  343.                 if not len(var3.get()) in range(1, 5):
  344.                     var2.set(' "Key" length must be 0< and <5.')
  345.                     status.message('systemevent', var2.get())
  346.                     return
  347.                 else:
  348.                     xor=XOR.new(var3.get())
  349.                     decrypted=xor.decrypt(final)
  350.         else:
  351.             var2.set(' Invalid decryption method!')
  352.             status.message('systemevent', var2.get())
  353.             return
  354.     except:
  355.         var2.set(' Invalid inputted text!')
  356.         status.message('systemevent', var2.get())
  357.         return
  358.  
  359.     ## encryption
  360.     if cb2.get() in hex_list:
  361.         if var1.get()==0:
  362.             if cb2.get()=='HMAC':
  363.                 _encrypted=hmac.new(var3.get(), msg=decrypted).digest()
  364.             else:
  365.                 _encrypted=hashlib.new(cb2.get(), decrypted).digest()   # in 3.0 must be u''+decrypted
  366.             encrypted=''
  367.             for char in _encrypted:
  368.                 z=str(ord(char))
  369.                 while len(z)<3:
  370.                     z="0"+z
  371.                 encrypted=encrypted+z+' '
  372.             encrypted=encrypted.strip()
  373.         else:
  374.             if cb2.get()=='HMAC':
  375.                 encrypted=hmac.new(var3.get(), msg=decrypted).hexdigest()
  376.             else:
  377.                 encrypted=hashlib.new(cb2.get(), decrypted).hexdigest()
  378.     elif cb2.get()=='PlainText':
  379.         encrypted=decrypted
  380.     elif cb2.get()=='base16':
  381.         encrypted=base64.b16encode(decrypted)
  382.     elif cb2.get()=='base32':
  383.         encrypted=base64.b32encode(decrypted)
  384.     elif cb2.get()=='base64':
  385.         encrypted=base64.b64encode(decrypted)
  386.     elif cb2.get()=="yahoo64":
  387.         encrypted=yahoo64.encode(decrypted)
  388.     elif cb2.get()=='adler32':
  389.         encrypted=zlib.adler32(decrypted)
  390.     elif cb2.get()=='crc32':
  391.         encrypted=zlib.crc32(decrypted)
  392.     elif cb2.get()=='crc_hqx':
  393.         encrypted=binascii.crc_hqx(decrypted, binascii.crc32(decrypted))
  394.     elif cb2.get()=='zlib':
  395.         _encrypted=zlib.compress(decrypted)
  396.         encrypted=''
  397.         for char in _encrypted:
  398.             encrypted=encrypted+str(hex(ord(char))).replace("0x", " ")
  399.         _encrypted=encrypted.strip()
  400.         encrypted=""
  401.         _encrypted=_encrypted.split(" ")
  402.         for x in range(0, len(_encrypted)):
  403.             if len(_encrypted[x])!=2:
  404.                 _encrypted[x]="0"+_encrypted[x]
  405.             encrypted=encrypted+_encrypted[x]+" "
  406.         encrypted=encrypted.strip()
  407.     elif cb2.get() in ('html', 'ord', 'hex', 'oct', 'bin'):
  408.         _encrypted=[]
  409.         _encrypted[:]=decrypted
  410.         encrypted=''
  411.         for char in _encrypted:
  412.             if cb2.get()=='html':
  413.                 z=str(ord(char))
  414.                 while len(z)<3:
  415.                     z="0"+z
  416.                 encrypted=encrypted+"&#"+z
  417.             elif cb2.get()=='ord':
  418.                 z=str(ord(char))
  419.                 while len(z)<3:
  420.                     z="0"+z
  421.                 encrypted=encrypted+z+" "
  422.             elif cb2.get()=='hex':
  423.                 z=str(hex(ord(char))).replace('0x', '')
  424.                 while len(z)<2:
  425.                     z="0"+z
  426.                 encrypted=encrypted+z+" "
  427.             elif cb2.get()=='oct':
  428.                 z=str(oct(ord(char)))
  429.                 while len(z)<4:
  430.                     z="0"+z
  431.                 encrypted=encrypted+z+" "
  432.             else:
  433.                 z=str(bin(ord(char))).replace('b', '')
  434.                 while len(z)<8:
  435.                     z='0'+z
  436.                 encrypted=encrypted+z+' '
  437.         encrypted=encrypted.strip()
  438.     elif cb2.get()=='hqx':
  439.         encrypted=binascii.b2a_hqx(decrypted)
  440.     elif cb2.get()=='uu':
  441.         if len(decrypted) < 46:
  442.             encrypted=binascii.b2a_uu(decrypted)
  443.         else:
  444.             var2.set(' Maximum string length must be 45!')
  445.             status.message('systemevent', var2.get())
  446.             return
  447.     elif cb2.get()=='rot13':
  448.         _encrypted=[]
  449.         _encrypted[:]=decrypted
  450.         encrypted=''
  451.         keys=rot13_table.keys()
  452.         for char in _encrypted:
  453.             statement=False
  454.             for key in keys:
  455.                 if char==key:
  456.                     encrypted=encrypted+rot13_table[key]
  457.                     statement=True
  458.                     break
  459.                 elif char==rot13_table[key]:
  460.                     encrypted=encrypted+key
  461.                     statement=True
  462.                     break
  463.             if statement is False:
  464.                 encrypted=encrypted+char
  465.     elif cb2.get()=='SkiddyFlama':
  466.         encrypted=decrypted
  467.         for x, z in SkiddyFlama_table:
  468.             encrypted=encrypted.replace(x, z)
  469.         _encrypted=[]
  470.         _encrypted[:]=encrypted
  471.         for char in _encrypted:
  472.             if char in sign_table:
  473.                 nr=_encrypted.index(char)
  474.                 _encrypted[nr]=' '+_encrypted[nr]
  475.         encrypted=''
  476.         for x in _encrypted:
  477.             encrypted=encrypted+x
  478.     elif cb2.get()=='Inglish':
  479.         encrypted=decrypted
  480.         for x, z in Inglish_table:
  481.             encrypted=encrypted.replace(x, z)
  482.     elif cb2.get() in key_list[1:]:
  483.         if cb2.get()=='AES':
  484.             if len(var3.get()) in (16, 24, 32):
  485.                 aes=AES.new(var3.get(), 1)
  486.                 statement=False
  487.                 while statement is False:
  488.                     try:
  489.                         _encrypted=aes.encrypt(decrypted)
  490.                         statement=True
  491.                     except:
  492.                         statement2=True
  493.                         var4.set(var4.get()+1)
  494.                         decrypted=decrypted+' '
  495.             else:
  496.                 var2.set(' "Key" length must be 16/24/32.')
  497.                 status.message('systemevent', var2.get())
  498.                 return
  499.         elif cb2.get()=='ARC2':
  500.             if len(var3.get())==0:
  501.                 var2.set(' "Key" length '+"mustn't"+' be 0!')
  502.                 status.message('systemevent', var2.get())
  503.                 return
  504.             else:
  505.                 arc2=ARC2.new(var3.get(), 1)
  506.                 statement=False
  507.                 while statement is False:
  508.                     try:
  509.                         _encrypted=arc2.encrypt(decrypted)
  510.                         statement=True
  511.                     except:
  512.                         statement2=True
  513.                         decrypted=decrypted+' '
  514.                         var4.set(var4.get()+1)
  515.         elif cb2.get()=='ARC4':
  516.             if len(var3.get())==0:
  517.                 var2.set(' "Key" length '+"mustn't"+' be 0!')
  518.                 status.message('systemevent', var2.get())
  519.                 return
  520.             else:
  521.                 arc4=ARC4.new(var3.get())
  522.                 _encrypted=arc4.encrypt(decrypted)
  523.         elif cb2.get()=='Blowfish':
  524.             if len(var3.get())==0:
  525.                 var2.set(' "Key" length '+"mustn't"+' be 0!')
  526.                 status.message('systemevent', var2.get())
  527.                 return
  528.             else:
  529.                 blowfish=Blowfish.new(var3.get(), 1)
  530.                 statement=False
  531.                 while statement is False:
  532.                     try:
  533.                         _encrypted=blowfish.encrypt(decrypted)
  534.                         statement=True
  535.                     except:
  536.                         statement2=True
  537.                         decrypted=decrypted+' '
  538.                         var4.set(var4.get()+1)
  539.         elif cb2.get()=='CAST':
  540.             if not len(var3.get()) in range(5, 17):
  541.                 var2.set(' "Key" length must be 4< and <17.')
  542.                 status.message('systemevent', var2.get())
  543.                 return
  544.             else:
  545.                 cast=CAST.new(var3.get(), 1)
  546.                 statement=False
  547.                 while statement is False:
  548.                     try:
  549.                         _encrypted=cast.encrypt(decrypted)
  550.                         statement=True
  551.                     except:
  552.                         statement2=True
  553.                         decrypted=decrypted+' '
  554.                         var4.set(var4.get()+1)
  555.         elif cb2.get()=='DES':
  556.             if not len(var3.get())==8:
  557.                 var2.set(' "Key" length must be 8.')
  558.                 status.message('systemevent', var2.get())
  559.                 return
  560.             else:
  561.                 des=DES.new(var3.get(), 1)
  562.                 statement=False
  563.                 while statement is False:
  564.                     try:
  565.                         _encrypted=des.encrypt(decrypted)
  566.                         statement=True
  567.                     except:
  568.                         statement2=True
  569.                         decrypted=decrypted+' '
  570.                         var4.set(var4.get()+1)
  571.         elif cb2.get()=='DES3':
  572.             if not len(var3.get()) in (16, 24):
  573.                 var2.set(' "Key" length must be 16/24.')
  574.                 status.message('systemevent', var2.get())
  575.                 return
  576.             else:
  577.                 des3=DES3.new(var3.get(), 1)
  578.                 statement=False
  579.                 while statement is False:
  580.                     try:
  581.                         _encrypted=des3.encrypt(decrypted)
  582.                         statement=True
  583.                     except:
  584.                         statement2=True
  585.                         decrypted=decrypted+' '
  586.                         var4.set(var4.get()+1)
  587.         elif cb2.get()=='IDEA':
  588.             if not len(var3.get())==16:
  589.                 var2.set(' "key" length must be 16.')
  590.                 status.message('systemevent', var2.get())
  591.                 return
  592.             else:
  593.                 idea=IDEA.new(var3.get(), 1)
  594.                 statement=False
  595.                 while statement is False:
  596.                     try:
  597.                         _encrypted=idea.encrypt(decrypted)
  598.                         statement=True
  599.                     except:
  600.                         statement2=True
  601.                         decrypted=decrypted+' '
  602.                         var4.set(var4.get()+1)
  603.         elif cb2.get()=='RC5':
  604.             if len(var3.get()) in (0, 1):
  605.                 var2.set(' "Key" length '+"mustn't"+' be 0/1!')
  606.                 status.message('systemevent', var2.get())
  607.                 return
  608.             else:
  609.                 rc5=RC5.new(var3.get(), 1)
  610.                 statement=False
  611.                 while statement is False:
  612.                     try:
  613.                         _encrypted=rc5.encrypt(decrypted)
  614.                         statement=True
  615.                     except:
  616.                         statement2=True
  617.                         decrypted=decrypted+' '
  618.                         var4.set(var4.get()+1)
  619.         elif cb2.get()=='XOR':
  620.             if not len(var3.get()) in range(1, 5):
  621.                 var2.set(' "Key" length must be 0< and <5.')
  622.                 status.message('systemevent', var2.get())
  623.                 return
  624.             else:
  625.                 xor=XOR.new(var3.get())
  626.                 _encrypted=xor.encrypt(decrypted)
  627.         encrypted=''
  628.         for x in _encrypted:
  629.             z=str(hex(ord(x))).replace("0x", "")
  630.             while len(z)<2:
  631.                 z="0"+z
  632.             encrypted=encrypted+z+" "
  633.         encrypted=encrypted.strip()
  634.     else:
  635.         var2.set(' Invalid encryption method!')
  636.         status.message('systemevent', var2.get())
  637.         return
  638.            
  639.     ## print
  640.     text2['state']=NORMAL
  641.     text2.delete(0.0, END)
  642.     text2.insert(0.0, encrypted)
  643.     text2['state']=DISABLED
  644.     if statement2 is False:
  645.         var2.set(' The operation completed successfully!')
  646.         status.message('systemevent', var2.get())
  647.     else:
  648.         var2.set(' Were added '+str(var4.get())+' space(s) to the text.')
  649.         status.message('systemevent', var2.get())
  650.  
  651.  
  652.        
  653. def clear_text(event):
  654.     text1['fg']='black'
  655.     if text1.get(0.0, END)=='Enter text here...\n':
  656.         text1.delete(0.0, END)
  657.  
  658.  
  659.  
  660. def scrollHandler1(*L):
  661.     op, howMany = L[0], L[1]
  662.     if op=="scroll":
  663.         units=L[2]
  664.         text1.yview_scroll(howMany, units)
  665.     elif op=="moveto":
  666.         text1.yview_moveto(howMany)
  667.  
  668.  
  669.  
  670. def scrollHandler2(*L):
  671.     op, howMany = L[0], L[1]
  672.     if op=="scroll":
  673.         units=L[2]
  674.         text2.yview_scroll(howMany, units)
  675.     elif op=="moveto":
  676.         text2.yview_moveto(howMany)
  677.  
  678.    
  679.  
  680. def msgbox1():
  681.     tkMessageBox.showinfo('About', '                          Multi-Encryption tool v1.5\n\
  682. \n\
  683.  This program will encrypt/decrypt plain text/reversibly encrypted text.\n\
  684.  Also will open a text based file and find keywords (separator: " : ").\n\
  685. \n\
  686.  Note that:\n\
  687.   - In encryptions like "AES", "Blowfish", "CAST", etc (in some cases) are added\n\
  688.    some aditional spaces to the end of the inputted string, because they require\n\
  689.    a string of multiple of 16 or 8 characters long.\n\
  690.   - RC5 is buggy with some keys.\n\
  691.   - The non-ascii returned encrypted strings ( >127 ) are converted to hexadecimal strings.\n\
  692.                                        (base 16 strings from chars; see ascii-table.com)\n\
  693.   - Instead of Ctrl+A use Ctrl+/ \n\
  694. \n\
  695.                                                                              Visit   http://rstcenter.com/ \n\
  696. \n\
  697. \n\
  698. Copyright (c) 2009. All rights reserved. "cmiN"')
  699.  
  700.  
  701.  
  702. def tables():
  703.     global rot13_table, SkiddyFlama_table, Inglish_table, sign_table
  704.     ## standard
  705.  
  706.     rot13_table={'a':'n', 'b':'o', 'c':'p', 'd':'q', 'e':'r', 'f':'s', 'g':'t', 'h':'u', 'i':'v', 'j':'w', 'k':'x', 'l':'y', 'm':'z',
  707.                  'A':'N', 'B':'O', 'C':'P', 'D':'Q', 'E':'R', 'F':'S', 'G':'T', 'H':'U', 'I':'V', 'J':'W', 'K':'X', 'L':'Y', 'M':'Z'}
  708.    
  709.     ## others
  710.  
  711.     sign_table=(',', '.', '!', '?', ';', ':', '"')
  712.  
  713.     SkiddyFlama_table=[('bafta', 'bft'), ('asteapta', 'ast'), ('toti', 'all'), ('nu stiu', 'nush'),
  714.                        ('oricum', 'anyway'), ('vorba', 'vb'), ('pana', 'pan'), ('eu', 'yo'),
  715.                        ('niste', 'nijte'), ('nu', 'noh'), ('merge', 'mere'), ('tarziu', 'tarliu'),
  716.                        ('persoana', 'pers'), ('bai', 'buey'), ('ba', 'bha'), ('bine', 'bn'), ('salut', 'sal'),
  717.                        ('pup', 'poop'), ('mine', 'mn'), ('si', 'shi'), ('pe', 'p'), ('tu', 'u'), ('ce', 'c'),
  718.                        ('ca', 'k'), ('de', 'd'), ('va', 'v')]
  719.  
  720.     Inglish_table=[('me', 'mi'), ('do', 'du'), ('know', 'cnau'), ("can", 'chen'), ('please', 'pliz'), ('fuck', 'fac'),
  721.                    ('mother', 'madar'), ('believe', 'biliv'), ('are', 'ar'), ('not', 'nat'), ('out', 'aut'), ('my', 'mai'),
  722.                    ('face', 'fais'), ('your', 'iour'), ('children', 'cildren'), ('uy', 'ui'), ('ive', 'iv'),
  723.                    ('this', 'dis'), ('too', 'ciu'), ('what', 'uat'), ('the', 'da')]
  724.  
  725.  
  726.  
  727.  
  728. def bye():
  729.     root.destroy()
  730.  
  731.  
  732.  
  733. def end():
  734.     root.wm_iconbitmap("icon.ico")
  735.     root.title('Multi-Encryption')
  736.     root.minsize(400, 400)
  737.     root.maxsize(400, 400)
  738.     root.mainloop()
  739.  
  740.  
  741.  
  742. frames()
  743. tables()
  744. create_widgets()
  745. end()
  746.  
Add Comment
Please, Sign In to add comment