PvPGN:SRP

Материал из WikiServia
Версия от 14:47, 23 октября 2011; HarpyWar (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Утилита на Python для генерации SRP хешей (by xpeh)

# 30.08.11
# calculates battle.net & pvpgn 1.99.x SRP hash (verifier)

from hashlib import sha1
import sys, os

N = 0xF8FF1A8B619918032186B68CA092B5557E976C78C73212D91216F6658523C787
g = 47

def usage():
    print "usage: %s username password [32 byte salt as hex]" % os.path.basename(sys.argv[0])
    sys.exit(1)

if len(sys.argv) < 3:
    usage()

username = sys.argv[1]
password = sys.argv[2]

if len(sys.argv) >= 4:
    salt = sys.argv[3]
    salt = salt.replace(" ","").decode('hex')
else:
    # random salt
    salt = os.urandom(32)

print "salt\t:", salt.encode('hex')

# x = reverse_bytes( sha1(salt, sha1(upper(username),":", upper(password))) )
x = sha1(salt + sha1(username.upper() + ":" + password.upper()).digest()).digest()
# [::-1] means reverse bytes in buffer
x=x[::-1].encode('hex')
print 'x\t:', x
x = int(x, 16)

# verifier = reverse_bytes(g^x % N)
verifier = pow(g, x, N)
verifier = ("%x" % verifier).decode('hex')[::-1].encode('hex')
print "verifier  :", verifier