def extract(inputf, outputf, password):
    # Process source image
    img = Image.open(inputf)
    (width, height) = img.size
    conv_image = img.convert("RGBA").getdata()

    # Extract LSBs
    v = []
    for h in range(height):
        for w in range(width):
            (r, g, b, a) = conv_image.getpixel((w, h))
            v.append(r & 1)  #it will only append the lsb of each pixel
            v.append(g & 1)
            v.append(b & 1)

    data_out = bits_to_binary(v)

    # Decrypt
    cipher = AESCipher(password)
    data_dec = cipher.decrypt(data_out)

    # Write decrypted data
    out_f = open(outputf, "wb")
    out_f.write(data_dec)
    out_f.close()

    print ">> Data extracted from stego.png to %s." % outputf
Exemple #2
0
def extract(in_file, out_file, password):
    # Process source image
    img = Image.open(in_file)
    (width, height) = img.size
    conv = img.convert("RGBA").getdata()
    print "[+] Image size: %dx%d pixels." % (width, height)

    # Extract LSBs
    v = []
    for h in range(height):
        for w in range(width):
            (r, g, b, a) = conv.getpixel((w, h))
            v.append(r & 1)
            v.append(g & 1)
            v.append(b & 1)

    data_out = assemble(v)

    # Decrypt
    cipher = AESCipher(password)
    data_dec = cipher.decrypt(data_out)

    # Write decrypted data
    out_f = open(out_file, "wb")
    out_f.write(data_dec)
    out_f.close()

    print "[+] Written extracted data to %s." % out_file
Exemple #3
0
def extract(in_file, out_file, password):
    # Process source image
    img = Image.open(in_file)
    (width, height) = img.size
    conv = img.convert("RGBA").getdata()
    print "[+] Image size: %dx%d pixels." % (width, height)

    # Extract LSBs
    v = []
    for h in range(height):
        for w in range(width):
            (r, g, b, a) = conv.getpixel((w, h))
            v.append(r & 1)
            v.append(g & 1)
            v.append(b & 1)

    data_out = assemble(v)

    # Decrypt
    characters = string.ascii_letters + string.digits

    for i in characters:
        for j in characters:
            for k in characters:
                for l in characters:
                    password = i + j + k + l + "needmoneyandgirlfirend"
                    cipher = AESCipher(password)
                    data_dec = cipher.decrypt(data_out)
                    if len(data_dec) > 0 and filter(data_dec):
                        print password, data_dec

    # Write decrypted data

    print "[+] Written extracted data to %s." % out_file
Exemple #4
0
def embedRandom(imgFilePath, payloadFilePath, passwd, bitSelectionLimit):
    with Image.open(imgFilePath) as img:
        (width, height) = img.size
        imgData = img.convert("RGBA").getdata()

    print("[*] Input image size: {}x{} pixels.".format(width, height))

    maxPayloadSize = width * height * 3 / 8 / 1024
    print("[*] Usable payload size: {:.4f}KB.".format(maxPayloadSize))

    with open(payloadFilePath, "rb") as payloadFile:
        payloadData = payloadFile.read()

    print("[*] Payload size: {:.4f}KB ".format(len(payloadData) / 1024))

    # Encrypt payload data.
    payloadDataEnc = AESCipher(passwd).encrypt(payloadData)
    print("[*] Encrypted payload size: {:.4f}KB.".format(
        len(payloadDataEnc) / 1024))

    # Payload data encrypted to list of bit triples.
    payloadDataEncBitTriples = list(grouper(decompose(payloadDataEnc), 3, 0))

    payloadSize = len(payloadDataEncBitTriples) * 3 / 8 / 1024

    if payloadSize > maxPayloadSize - 4:
        print("[!] Cannot embed. Payload file too large.")
        return

    # Create output stego-image.
    stegoImg = Image.new("RGBA", (width, height))
    stegoImgData = stegoImg.getdata()

    # Copy the original img bytes.
    for h in range(height):
        for w in range(width):
            stegoImgData.putpixel((w, h), imgData.getpixel((w, h)))

    freePixels = [(w, h) for h in range(height) for w in range(width)]
    random.seed(hashlib.sha256(passwd.encode()).digest(), 2)

    for bitTriple in payloadDataEncBitTriples:
        pixel = rndPop(freePixels)
        r, g, b, a = stegoImgData.getpixel(pixel)

        r = set_bit(r, random.randrange(bitSelectionLimit + 1), bitTriple[0])
        g = set_bit(g, random.randrange(bitSelectionLimit + 1), bitTriple[1])
        b = set_bit(b, random.randrange(bitSelectionLimit + 1), bitTriple[2])

        stegoImgData.putpixel(pixel, (r, g, b, a))

    stegoImgFilePath = Path(imgFilePath)
    stegoImg.save(
        path.join(stegoImgFilePath.parent,
                  stegoImgFilePath.stem + "-stego.png"), "PNG")

    print("[*] Payload file embedded successfully!")
Exemple #5
0
def postItem(username, password, subreddit, filename, KEYPASS):
    filepath = filename
    k = filename.rfind("/")
    filename = filename[k + 1:]

    loginMod(username, password, subreddit)
    cipher = AESCipher(KEYPASS)
    comment = cipher.encrypt_file(filepath)
    post_encryption(filename, comment)
    postMessage.SetLabel("Done")
    postMessage1.SetLabel("Done")
Exemple #6
0
def embed(imgFile, payload, password):
    # Process source image
    img = Image.open(imgFile)
    (width, height) = img.size
    conv = img.convert("RGBA").getdata()
    print "[*] Input image size: %dx%d pixels." % (width, height)
    max_size = width * height * 3.0 / 8 / 1024  # max payload size
    print "[*] Usable payload size: %.2f KB." % (max_size)

    f = open(payload, "rb")
    data = f.read()
    f.close()
    print "[+] Payload size: %.3f KB " % (len(data) / 1024.0)

    # Encypt
    cipher = AESCipher(password)
    data_enc = cipher.encrypt(data)

    # Process data from payload file
    v = decompose(data_enc)

    # Add until multiple of 3
    while (len(v) % 3):
        v.append(0)

    payload_size = len(v) / 8 / 1024.0
    print "[+] Encrypted payload size: %.3f KB " % (payload_size)
    if (payload_size > max_size - 4):
        print "[-] Cannot embed. File too large"
        sys.exit()

    # Create output image
    steg_img = Image.new('RGBA', (width, height))
    data_img = steg_img.getdata()

    idx = 0

    for h in range(height):
        for w in range(width):
            (r, g, b, a) = conv.getpixel((w, h))
            if idx < len(v):
                r = set_bit(r, 0, v[idx])
                g = set_bit(g, 0, v[idx + 1])
                b = set_bit(b, 0, v[idx + 2])
            data_img.putpixel((w, h), (r, g, b, a))
            idx = idx + 3

    steg_img.save(imgFile + "-stego.png", "PNG")

    print "[+] %s embedded successfully!" % payload
Exemple #7
0
    def get_config():
        from crypt import AESCipher

        config_path = os.path.dirname(os.path.abspath(__file__))
        config_file = os.path.join(config_path, 'config.json')
        with open(config_file, 'r') as f:
            config = json.load(f)

        crypt = AESCipher(config['CRYPT_KEY'])

        config_developer_key = crypt.decrypt(config['DEVELOPER_KEY'])
        config_login_user_name = crypt.decrypt(config['REMOT3_USER_NAME'])
        config_login_password = crypt.decrypt(config['REMOT3_PASSWORD'])

        return config_developer_key, config_login_user_name, config_login_password
def hide_text(sourceImg, secrettext, password):
    # Process source image
    img = Image.open(sourceImg)
    (width, height) = img.size
    conv_image = img.convert("RGBA").getdata()

    max_size = width * height * 3.0 / 8 / 1024

    f = open(secrettext, "rb")
    data = f.read()
    f.close()

    cipher = AESCipher(password)
    data_enc = cipher.encrypt(data)

    # Process data from secrettext
    bitsoffile = binary_to_bits(data_enc)

    # Add until multiple of 3
    while (len(bitsoffile) % 3):
        bitsoffile.append(0)

    secrettext_size = len(bitsoffile) / 8 / 1024.0

    if (secrettext_size > max_size - 4):
        print "\n>>> Failed to hide the text, file is too large.\n"
        sys.exit()

    # Create output image
    steg_img = Image.new('RGBA', (width, height))
    data_img = steg_img.getdata()

    v = 0

    for h in range(height):
        for w in range(width):
            (r, g, b, a) = conv_image.getpixel((w, h))
            if v < len(bitsoffile):
                r = set_bit(r, 0, bitsoffile[v])
                g = set_bit(g, 0, bitsoffile[v + 1])
                b = set_bit(b, 0, bitsoffile[v + 2])
            data_img.putpixel((w, h), (r, g, b, a))
            v = v + 3

    steg_img.save("stego.png", "PNG")

    print "\n>> %s hidden successfully in the source file!\n" % secrettext
Exemple #9
0
def getItem(username, password, subreddit, filename, file_to_get, KEYPASS):

    filepath = filename
    #k = filename.rfind("/")
    #filename = filename[k+1:]
    #filepath = filepath[:k+1]
    #temp_fp = filepath
    #filepath = filepath + file_to_get

    loginMod(username, password, subreddit)
    cipher = AESCipher(KEYPASS)
    comment = get_decryption(file_to_get)
    """
    if filename[-1] == ")":
        j = filename.rfind("(") - 1
        n = len(filename) - j
        filepath = filepath[:-n]
    """

    cipher.decrypt_file(comment, filepath)
    postMessage1.SetLabel("Done")
    postMessage.SetLabel("Done")
Exemple #10
0
def extractRandom(stegoImgFilePath, outputFilePath, passwd, bitSelectionLimit):
    # Process stego img file.
    with Image.open(stegoImgFilePath) as stegoImg:
        (width, height) = stegoImg.size
        stegoImgData = stegoImg.convert("RGBA").getdata()

    print("[*] Stego image size: {}x{} pixels.".format(width, height))

    notCheckedPixels = [(w, h) for h in range(height) for w in range(width)]
    payloadDataEncBits = []
    random.seed(hashlib.sha256(passwd.encode()).digest(), 2)

    # Retrieve payload size.
    for _ in range(11):
        payloadDataEncBits.extend(
            getHiddenBits(stegoImgData, rndPop(notCheckedPixels),
                          bitSelectionLimit))

    payloadSize = struct.unpack("i",
                                bitLstToByteArray(payloadDataEncBits[:32]))[0]
    print("[*] Encrypted payload size: {:.4f}KB.".format(payloadSize / 1024))

    for _ in range(int(math.ceil((payloadSize * 8 - 1) / 3))):
        payloadDataEncBits.extend(
            getHiddenBits(stegoImgData, rndPop(notCheckedPixels),
                          bitSelectionLimit))

    payloadDataEncBytes = assemble(payloadDataEncBits)

    # Decrypt payload data.
    payloadDataBytes = AESCipher(passwd).decrypt(payloadDataEncBytes)
    print("[*] Payload size: {:.4f}KB ".format(len(payloadDataBytes) / 1024))

    # Write decrypted data.
    with open(outputFilePath, "wb") as outputFile:
        outputFile.write(payloadDataBytes)

    print("[*] Data extracted to {}.".format(outputFilePath))
Exemple #11
0
os.environ['KIVY_GL_BACKEND'] = 'gl'

# 日本語使用するためfont
LabelBase.register(DEFAULT_FONT, r'./font/FONT')

# ServletAPIbaseURL
base_url = "http://FQCN/BusApplicationServerSide"

# ユーザデータ保存用
user_file = os.getcwd()+ r'/savedata/userdata.txt'
voice_file = os.getcwd()+ r'/Voicedata/voicedata.txt'


pass_phrase = 'PASS PHRASE'
cipher = AESCipher(pass_phrase)

volume_data =os.getcwd() + r"/Voicedata/soundvolume.txt"
if os.path.exists(volume_data) == False:
    fw = open(volume_data, 'w')
    fw.write('0')
    fw.close()

# Main
class MainScreen(Screen):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        pygame.mixer.init()
        self.evt = None
        self.evt2 = None
Exemple #12
0
from flask import Flask, jsonify, request
from tinydb import Query, TinyDB
from crypt import AESCipher, bcrypt_checkpw, bcrypt_encrypt
import time
from totp import Totp
from expiringdict import ExpiringDict

app = Flask(__name__)
app.secret_key = '19#^f8kV8D55h!TXruYum%^VQh$zsCeQ'

DB = TinyDB('./db.json')
query = Query()

passphrase = "6V5#645L5FJn#Zc9i^i$b^3*38dShnk$"
aes = AESCipher(passphrase)

CACHE = ExpiringDict(max_len=10000, max_age_seconds=60)

def response(status, message, result=None):
    return jsonify({
        "status": status,
        "message": message,
        "result": result
    })

def response_success(result=None):
    return response(2000, "success", result)


@app.route('/api/create_seed', methods=['POST'])