#!/usr/bin/python2.7
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import sys
|
|
import random
|
|
import base64
|
|
|
|
def banner():
|
|
return '''
|
|
|
|
Welcome to our brand new crypto service
|
|
________ _______ __ __ ____________ ______ __________ _____ __________ _ __________________
|
|
/ ____/ //_/ ___// //_/ / ____/ __ \ \/ / __ \/_ __/ __ \ / ___// ____/ __ \ | / / _/ ____/ ____/
|
|
/ / __/ ,< \__ \/ ,< / / / /_/ /\ / /_/ / / / / / / / \__ \/ __/ / /_/ / | / // // / / __/
|
|
/ /_/ / /| |___/ / /| | / /___/ _, _/ / / ____/ / / / /_/ / ___/ / /___/ _, _/| |/ // // /___/ /___
|
|
\____/_/ |_/____/_/ |_| \____/_/ |_| /_/_/ /_/ \____/ /____/_____/_/ |_| |___/___/\____/_____/
|
|
version [v2.1.19]
|
|
'''
|
|
|
|
def print_usage(script_argv):
|
|
print '[==USAGE==]\n'
|
|
print 'Encrypt File \t: %s -e [plaintext_file] [key]' % script_argv
|
|
print 'Decrypt File \t: %s -d [encrypted_file] [key]' % script_argv
|
|
print 'Generate Key \t: %s -g' % script_argv
|
|
print 'Help \t\t: %s -h\n' % script_argv
|
|
|
|
def shift_key():
|
|
key = random.randint(0x1, 0xff)
|
|
return key
|
|
|
|
def shuffle_secret():
|
|
secret_out = ''
|
|
secret_str = ''.join('gksk-secret-code'.split('-'))
|
|
for count,loop in enumerate(secret_str):
|
|
if count % 2 == 0:
|
|
secret_out += ''.join([chr(ord(ch) + 0x3) for ch in loop])
|
|
else:
|
|
secret_out += loop
|
|
return secret_out
|
|
|
|
def encryption(plain, shift):
|
|
try:
|
|
ciphertext = ''
|
|
length_msg = 50
|
|
with open(plain, 'rb') as bin:
|
|
data = bin.read()
|
|
|
|
shift = int(shift)
|
|
alphabet = shuffle_secret() * length_msg
|
|
shifted_alphabet = alphabet[shift:] + alphabet[:shift]
|
|
for a, b in zip(data, shifted_alphabet):
|
|
ciphertext += chr(ord(a) + ord(b) ^ shift)
|
|
|
|
with open(plain + '.enc', 'wb') as bin:
|
|
bin.write(base64.b64encode(ciphertext))
|
|
|
|
except ValueError:
|
|
print "ValueError : Range key [0-255]"
|
|
exit()
|
|
|
|
def decryption(enc_file, key):
|
|
with open(enc_file, 'rb') as bin:
|
|
data = bin.read()
|
|
|
|
'''NOT IMPLEMENTED YET'''
|
|
|
|
with open(enc_file + '.trial', 'wb') as bin:
|
|
bin.write(data)
|
|
|
|
|
|
def main():
|
|
print banner()
|
|
script_argv = sys.argv[0]
|
|
try:
|
|
mode = sys.argv[1]
|
|
if mode == '-e':
|
|
plaintext_file = sys.argv[2]
|
|
key = sys.argv[3]
|
|
encryption(plaintext_file, key)
|
|
print "\nSECRET KEY : ", shuffle_secret()
|
|
print '\nThankyou for using our service :)\n'
|
|
elif mode == '-d':
|
|
encrypted_file = sys.argv[2]
|
|
key = sys.argv[3]
|
|
decryption(encrypted_file, key)
|
|
print '\nNot implemented yet. Upgrade to premium, only $99999\n'
|
|
elif mode == '-g':
|
|
print 'Key : ', shift_key()
|
|
elif mode == '-h':
|
|
print_usage(script_argv)
|
|
else:
|
|
print_usage(script_argv)
|
|
except IndexError:
|
|
print_usage(script_argv)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|