import hmac import hashlib from hashlib import sha1 import binascii import sys A = "Pairwise key expansion" APmac = binascii.a2b_hex("001dd0f694b0") Clientmac = binascii.a2b_hex("489d2477179a") ANonce = binascii.a2b_hex("87f2718bad169e4987c94255395e054bcaf77c8d791698bf03dc85ed3c90832a") SNonce = binascii.a2b_hex("143fbb4333341f36e17667f88aa02c5230ab82c508cc4bd5947dd7e50475ad36") B = min(APmac,Clientmac)+max(APmac,Clientmac)+min(ANonce,SNonce)+max(ANonce,SNonce) def customPRF512(key,A,B): blen = 64 i = 0 R = '' while i<=((blen*8+159)/160): hmacsha1 = hmac.new(key,A+chr(0x00)+B+chr(i),sha1) i+=1 R = R+hmacsha1.digest() print "R: ",binascii.b2a_hex(hmacsha1.digest()),"\n" return R[:blen] pmk = binascii.a2b_hex("9051ba43660caec7a909fbbe6b91e4685f1457b5a2e23660d728afbd2c7abfba") ptk = customPRF512(pmk,A,B) print "pmk:\t\t",binascii.b2a_hex(pmk),"\n" print "ptk:\t\t",binascii.b2a_hex(ptk[0:16]),"\n" print "A: ",binascii.b2a_hex(A),"\n" print "CHR(0x00): ",chr(0x00),"\n" print "B: ",binascii.b2a_hex(B),"\n" print "key: ",binascii.b2a_hex(pmk),"\n" print "CHR(0): ",chr(0),"\n" i = 0 string = A+chr(0x00)+B+chr(i) print "STRING: ",binascii.b2a_hex(string);