Facebook
From Arash, 2 Years ago, written in Python.
This paste is a reply to Final from Arash - view diff
Embed
Download Paste or View Raw
Hits: 164
  1. import random
  2. import math as floor
  3. import enchant
  4.  
  5. validTxt = []
  6.  
  7.  
  8. def genKys(length):
  9.     length *= 8
  10.     key = [0] * length
  11.     choice = int(floor.floor(random.random() * length))
  12.     for i in range(choice):
  13.         key[int(floor.floor(random.random()) * (length - 1))] = 1
  14.     return key
  15.  
  16.  
  17. def enc(plain, key):
  18.     length = len(key)
  19.     cipher = [None] * length
  20.     for i in range(length):
  21.         cipher[i] = 1 if key[i] == plain[i] else 0
  22.     return cipher
  23.  
  24.  
  25. def getBts(plain):
  26.     length = len(plain)
  27.     bits = [None] * length * 8
  28.     for i in range(length):
  29.         for j in range(8):
  30.             bits[8 * i + 7 - j] = (int)(ord(plain[i]) / pow(2, j)) % 2
  31.     return bits
  32.  
  33. def getBytes(bits):
  34.     length = len(bits)
  35.     data = []
  36.     byte = 0
  37.     for i in range((int)(length / 8)):
  38.         for j in range(8):
  39.             byte += pow(2, 7 - j) * bits[8 * i + j]
  40.         data.append(byte)
  41.         byte = 0
  42.     return data
  43.  
  44. def toString(bytes):
  45.     size = len(bytes)
  46.     output = ""
  47.     for i in range(size):
  48.         output += chr(bytes[i])
  49.     return output
  50.  
  51. def attack(i, key, size, bits, plainText, dict):
  52.     if i == size:
  53.         dec(key, bits, plainText, dict)
  54.         return
  55.     for j in range(1, size - i + 1):
  56.         attack(i + j, key, size, bits, plainText, dict)
  57.         key2 = key[:]
  58.         key2[i] = 1
  59.         attack(i + j, key2, size, bits, plainText, dict)
  60.  
  61. def dec(key, bits, plainText, dict):
  62.     deciphered = enc(bits, key)
  63.     txt = toString(getBytes(deciphered))
  64.     if isLatin(txt) & dict.check(txt):
  65.         validTxt.append(txt)
  66.  
  67. def isLatin(txt):
  68.     size = len(txt)
  69.     for i in range(size):
  70.         if (ord(txt[i]) < 97) | (ord(txt[i]) > 122):
  71.             return False
  72.     return True

Replies to Final rss

Title Name Language When
Final Arash python 2 Years ago.