예제 #1
0
def generate_RSA():
    fh = open('/etc/eko/prikey.pickle', 'wb')
    p = pickle.Pickler(fh)
    key = RSA.generate(512, os.urandom)
    p.dump(key)
    fh.close()
    baseconv = BaseConverter('0123456789abcdef')
    fh2 = open('/etc/eko/pubkey.text', 'w')
    fh2.write('Public Key e Parameter\n')
    fh2.write(baseconv.from_decimal(key.publickey().e))
    fh2.write('\nPublic key n Parameter\n')
    fh2.write(baseconv.from_decimal(key.publickey().n))
    fh2.close()
    print "New Key Generated!"
    print "-"*20
    print "pubkey.e : %s" % key.publickey().e
    print ""
    print "pubkey.n : %s" % key.publickey().n
    print "-"*20
    return key
예제 #2
0
def send_heartbeat(url, key):
    json_msg = {}
    json_msg['method'] = 'heartbeat'
    json_msg['id'] = 4
    params = {}
    params['kiosk-id'] = DIEID
    if UPTIME < 60:
        # under a minute
        uptimestr = "%.2f seconds" % UPTIME
    elif UPTIME < 60*60:
        # under a hour
        uptimestr = "%.2f minutes" % (UPTIME/(60.0))
    elif UPTIME < 60*60*24*3:
        # under 3 days
        uptimestr = "%.2f hours" % (UPTIME/(60.0*60.0))
    else:
        # over 3 days
        uptimestr = "%.2f days" % (UPTIME/(60.0*60.0*24.0))
        
    params['uptime'] = uptimestr
    params['sw-version'] = '1.0.0'
    params['time'] = datetime.utcnow()
    json_msg['params'] = params
    jsstr = json.dumps(json_msg)
    hash = MD5.new(jsstr).digest()
    baseconverter = BaseConverter('0123456789abcdef')
    sign_16encode = baseconverter.from_decimal(key.sign(hash, "")[0])
    #print "encoded: %s" % sign_16encode
    #print "signature: %d" % key.sign(hash, "")[0]
    #print "hash: %s"  % "".join(["%02x " % ord(x) for x in hash])
    headers = {'X-eko-signature': sign_16encode}
    print jsstr
    
    #test decoding
    x = key.publickey().verify(hash, (baseconverter.to_decimal(sign_16encode),))
    
    req = urllib2.Request(url, jsstr, headers)
    response = urllib2.urlopen(req)
    the_page = response.read()
    print the_page
예제 #3
0
def get_messages(url, key):
    json_msg = {}
    json_msg['method'] = 'get_messages'
    json_msg['id'] = 4
    json_msg['params'] = {'kiosk-id': DIEID}
    jsstr = json.dumps(json_msg)
    hash = MD5.new(jsstr).digest()
    baseconverter = BaseConverter('0123456789abcdef')
    sign_16encode = baseconverter.from_decimal(key.sign(hash, "")[0])
    #print "encoded: %s" % sign_16encode
    #print "signature: %d" % key.sign(hash, "")[0]
    #print "hash: %s"  % "".join(["%02x " % ord(x) for x in hash])
    headers = {'X-eko-signature': sign_16encode}
    print jsstr
    
    #test decoding
    x = key.publickey().verify(hash, (baseconverter.to_decimal(sign_16encode),))
    
    req = urllib2.Request(url, jsstr, headers)
    response = urllib2.urlopen(req)
    the_page = response.read()
    print the_page
예제 #4
0
        print('*** Generating new key ***')
        return generate_RSA()

def generate_RSA():
    fh = open('/etc/eko/prikey.pickle', 'wb')
    p = pickle.Pickler(fh)
    key = RSA.generate(512, os.urandom)
    p.dump(key)
    fh.close()
    baseconv = BaseConverter('0123456789abcdef')
    fh2 = open('/etc/eko/pubkey.text', 'w')
    fh2.write('Public Key e Parameter\n')
    fh2.write(baseconv.from_decimal(key.publickey().e))
    fh2.write('\nPublic key n Parameter\n')
    fh2.write(baseconv.from_decimal(key.publickey().n))
    fh2.close()
    print "New Key Generated!"
    print "-"*20
    print "pubkey.e : %s" % key.publickey().e
    print ""
    print "pubkey.n : %s" % key.publickey().n
    print "-"*20
    return key

if __name__=="__main__":
    key = load_RSA()
    print('Public Key e Parameter\n')
    print(baseconv.from_decimal(key.publickey().e))
    print('\nPublic key n Parameter\n')
    print(baseconv.from_decimal(key.publickey().n))
    exit(0)
예제 #5
0
def solve_challenge(challenge):
    baseconv = BaseConverter('0123456789abcdef')
    key = load_RSA()
    signature = key.sign(challenge, "")
    sig_encoded = baseconv.from_decimal(signature[0])
    return sig_encoded