import httplib
import hmac
import hashlib
import time
import sys
import struct
import json
root = "http://h...content-available-to-author-only...t.com/challenge/003/endpoint"
content_type = "application/json"
userid = "rishabhaggarwal005@gmail.com"
secret_suffix = "HDECHALLENGE003"
shared_secret = userid+secret_suffix
timestep = 30
T0 = 0
def HOTP(K, C, digits=10):
K_bytes = str.encode(K)
C_bytes = struct.pack(">Q", C)
hmac_sha512 = hmac.new(key = K_bytes, msg=C_bytes, digestmod=hashlib.sha512).hexdigest()
return Truncate(hmac_sha512)[-digits:]
def Truncate(hmac_sha512):
offset = int(hmac_sha512[-1], 16)
binary = int(hmac_sha512[(offset *2):((offset*2)+8)], 16) & 0x7FFFFFFF
return str(binary)
def TOTP(K, digits=10, timeref = 0, timestep = 30):
C = int ( time.time() - timeref ) // timestep
return HOTP(K, C, digits = digits)
passwd = TOTP(shared_secret, 10, T0, timestep)
passwd = TOTP(shared_secret, 10, T0, timestep).zfill(10)
print(passwd)
aW1wb3J0IGh0dHBsaWIKaW1wb3J0IGhtYWMKaW1wb3J0IGhhc2hsaWIKaW1wb3J0IHRpbWUKaW1wb3J0IHN5cwppbXBvcnQgc3RydWN0CmltcG9ydCBqc29uCiAKcm9vdCA9ICJodHRwOi8vaC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udC5jb20vY2hhbGxlbmdlLzAwMy9lbmRwb2ludCIKY29udGVudF90eXBlID0gImFwcGxpY2F0aW9uL2pzb24iCnVzZXJpZCA9ICJyaXNoYWJoYWdnYXJ3YWwwMDVAZ21haWwuY29tIgpzZWNyZXRfc3VmZml4ID0gIkhERUNIQUxMRU5HRTAwMyIKc2hhcmVkX3NlY3JldCA9IHVzZXJpZCtzZWNyZXRfc3VmZml4CiAKdGltZXN0ZXAgPSAzMApUMCA9IDAKIApkZWYgSE9UUChLLCBDLCBkaWdpdHM9MTApOgogICAgIEtfYnl0ZXMgPSBzdHIuZW5jb2RlKEspCiAgICAgQ19ieXRlcyA9IHN0cnVjdC5wYWNrKCI+USIsIEMpCiAgICAgaG1hY19zaGE1MTIgPSBobWFjLm5ldyhrZXkgPSBLX2J5dGVzLCBtc2c9Q19ieXRlcywgZGlnZXN0bW9kPWhhc2hsaWIuc2hhNTEyKS5oZXhkaWdlc3QoKQogICAgIHJldHVybiBUcnVuY2F0ZShobWFjX3NoYTUxMilbLWRpZ2l0czpdCiAKZGVmIFRydW5jYXRlKGhtYWNfc2hhNTEyKToKICAgICBvZmZzZXQgPSBpbnQoaG1hY19zaGE1MTJbLTFdLCAxNikKICAgICBiaW5hcnkgPSBpbnQoaG1hY19zaGE1MTJbKG9mZnNldCAqMik6KChvZmZzZXQqMikrOCldLCAxNikgJiAweDdGRkZGRkZGCiAgICAgcmV0dXJuIHN0cihiaW5hcnkpCiAKZGVmIFRPVFAoSywgZGlnaXRzPTEwLCB0aW1lcmVmID0gMCwgdGltZXN0ZXAgPSAzMCk6CiAgICAgQyA9IGludCAoIHRpbWUudGltZSgpIC0gdGltZXJlZiApIC8vIHRpbWVzdGVwCiAgICAgcmV0dXJuIEhPVFAoSywgQywgZGlnaXRzID0gZGlnaXRzKQoKcGFzc3dkID0gVE9UUChzaGFyZWRfc2VjcmV0LCAxMCwgVDAsIHRpbWVzdGVwKSAKcGFzc3dkID0gVE9UUChzaGFyZWRfc2VjcmV0LCAxMCwgVDAsIHRpbWVzdGVwKS56ZmlsbCgxMCkgCiAKcHJpbnQocGFzc3dkKQ==