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: 178
  1. import random
  2. import math as floor
  3. import warnings
  4. warnings.filterwarnings('ignore')
  5.  
  6.  
  7. def genKys(length):
  8.     length *= 8
  9.     key = [0] * length
  10.     choice = int(floor.floor(random.random() * length))
  11.     for i in range(choice):
  12.         key[int(floor.floor(random.random()) * (length - 1))] = 1
  13.     return key
  14.  
  15.  
  16. def enc(plain, key):
  17.     length = len(key)
  18.     cipher = [None] * length
  19.     for i in range(length):
  20.         cipher[i] = 1 if key[i] == plain[i] else 0
  21.     return cipher
  22.  
  23.  
  24. def getBts(plain):
  25.     length = len(plain)
  26.     bits = [None] * length * 8
  27.     for i in range(length):
  28.         for j in range(8):
  29.             bits[8 * i + 7 - j] = (int)(ord(plain[i]) / pow(2, j)) % 2
  30.     return bits
  31.  
  32. def getBytes(bits):
  33.     length = len(bits)
  34.     data = []
  35.     byte = 0
  36.     for i in range((int)(length / 8)):
  37.         for j in range(8):
  38.             byte += pow(2, 7 - j) * bits[8 * i + j]
  39.         data.append(byte)
  40.         byte = 0
  41.     return data
  42.  
  43. def toString(bytes):
  44.     size = len(bytes)
  45.     output = ""
  46.     for i in range(size):
  47.         output += chr(bytes[i])
  48.     return output
  49.  
  50. def attack(i, key, size, bits, plainText):
  51.     if i == size - 1:
  52.         dec(key, bits, plainText)
  53.         return
  54.     for j in range(1, size - i):
  55.         attack(i + j, key, size, bits, plainText)
  56.         key2 = key[:]
  57.         key2[i + j] = 1
  58.         attack(i + j, key2, size, bits, plainText)
  59.  
  60. def dec(key, bits, plainText):
  61.     deciphered = enc(bits, key)
  62.     txt = toString(getBytes(deciphered))
  63.     if isLatin(txt):
  64.         if txt == plainText:
  65.           print("Found!")
  66.           exit()
  67.  
  68. def isLatin(txt):
  69.     size = len(txt)
  70.     for i in range(size):
  71.         if (ord(txt[i]) < 97) | (ord(txt[i]) > 122):
  72.             return False
  73.     return True

Replies to Final rss

Title Name Language When
Final Arash python 2 Years ago.