Ejemplo n.º 1
0
def generateMAC(message, key):
    padding = ""
    endblock = ""
    (K1, K2) = generateSubkeys(key, "\x00\x00\x00\x00\x00\x00\x00\x1b")
    #print K1.encode("hex")
    #print K2.encode("hex")
    if len(message) % 8:
        padLen = 8 - (len(message) % 8)
        padding = "\x80" + ("\x00" * (padLen - 1))
        message = message + padding
        endblock = message[-8:len(message)]
        XORencryptor = XOR.XORCipher(K2)
        endblock = XORencryptor.encrypt(endblock)
    else:
        endblock = message[-8:len(message)]
        XORencryptor = XOR.XORCipher(K1)
        endblock = XORencryptor.encrypt(endblock)
    message = message[0:-8] + endblock
    CMACencryptor = DES3.new(key, DES3.MODE_CBC,
                             '\x00\x00\x00\x00\x00\x00\x00\x00')
    mac = CMACencryptor.encrypt(message)
    #print key.encode("hex")
    #print message.encode("hex")
    #print mac.encode("hex")
    #return mac
    return mac[-8:len(mac)]
Ejemplo n.º 2
0
def generateSubkeys(MACKey, constant):
    #create encrptor
    encryptor = DES3.new(MACKey, DES3.MODE_ECB,
                         '\x00\x00\x00\x00\x00\x00\x00\x00')
    XORencryptor = XOR.XORCipher(constant)

    K1 = ""
    K2 = ""
    zeros = "\x00" * 8  #8 bytes of zeros
    S = encryptor.encrypt(zeros)
    #print S.encode("hex")
    if int(S[0].encode("hex"), 16) & 0x80:
        shiftedS = "%016X" % (
            (int(S.encode("hex"), 16) << 1) & 0xFFFFFFFFFFFFFFFF)
        K1 = XORencryptor.encrypt(shiftedS.decode("hex"))
    else:
        shiftedS = "%016X" % (
            (int(S.encode("hex"), 16) << 1) & 0xFFFFFFFFFFFFFFFF)
        K1 = shiftedS.decode("hex")
    if (int(K1[0].encode("hex"), 16) & 0x80):
        #print K1.encode("hex")
        shiftedS = "%016X" % (
            (int(K1.encode("hex"), 16) << 1) & 0xFFFFFFFFFFFFFFFF)
        K2 = XORencryptor.encrypt(shiftedS.decode("hex"))
    else:
        shiftedS = "%016X" % (
            (int(K1.encode("hex"), 16) << 1) & 0xFFFFFFFFFFFFFFFF)
        K2 = shiftedS.decode("hex")
    return K1, K2
Ejemplo n.º 3
0
def decrypter(cleardata):
    data = XOR.XORCipher(key)
    return data.decrypt(cleardata)
Ejemplo n.º 4
0
from Crypto.Cipher import XOR

key = "abcdefghijklij"
xor = XOR.XORCipher(key) # To encrypt
xor1 = XOR.XORCipher(key) # To decrypt

def enc(sock, message, addr):
    abcd = xor.encrypt(message)
    print message == dec(sock, abcd, addr)
    sock.sendto(abcd, addr)
    return abcd

def dec(sock, message, addr):
    abcd = xor1.decrypt(message)
    return abcd

#message = "dfjsdfjsdfjdsfdfsk"
#print message
#newm = enc(1, message, message)
#print newm
#print dec(1, newm, newm)