def handleAuthLogonChallenge(self, pkt): data = ST_AUTH_LOGON_CHALLENGE_S.parse(pkt) #print(data) self.srp.set_I(self.env['username']) self.srp.set_P(self.env['userpass']) self.srp.set_B(convertool.strToInt(data.SRP_B[::-1])) self.srp.set_g(convertool.strToInt(data.SRP_g[::-1])) self.srp.set_N(convertool.strToInt(data.SRP_N[::-1])) self.srp.set_s(convertool.strToInt(data.SRP_s[::-1])) self.srp.generate_a() self.srp.calculate_A() self.srp.calculate_x() self.srp.calculate_v() self.srp.calculate_u() self.srp.calculate_S_client() self.srp.calculate_K() self.srp.calculate_M1() self.srp.calculate_M2() # Store the sessionkey in the DB cursor = db.cursor() cursor.execute( 'UPDATE accounts SET client_K = ? WHERE username = ?', [convertool.intToHex(self.srp.get_K(), 80), self.env['username']]) db.commit() r = ST_AUTH_LOGON_PROOF_C.build( Container( opcode=1, SRP_A=convertool.intToStr(self.srp.get_A())[::-1], SRP_M1=convertool.intToStr(self.srp.get_M1()), CRC=chr(0) * 20, # don't know how to calculate it unk=0)) self.writebuffer.append(r)
def handleAuthLogonChallenge(self, pkt): data = ST_AUTH_LOGON_CHALLENGE_S.parse(pkt) #print(data) self.srp.set_I(self.env['username']) self.srp.set_P(self.env['userpass']) self.srp.set_B(convertool.strToInt(data.SRP_B[::-1])) self.srp.set_g(convertool.strToInt(data.SRP_g[::-1])) self.srp.set_N(convertool.strToInt(data.SRP_N[::-1])) self.srp.set_s(convertool.strToInt(data.SRP_s[::-1])) self.srp.generate_a() self.srp.calculate_A() self.srp.calculate_x() self.srp.calculate_v() self.srp.calculate_u() self.srp.calculate_S_client() self.srp.calculate_K() self.srp.calculate_M1() self.srp.calculate_M2() # Store the sessionkey in the DB cursor = db.cursor() cursor.execute('UPDATE accounts SET client_K = ? WHERE username = ?', [convertool.intToHex(self.srp.get_K(), 80), self.env['username']]) db.commit() r = ST_AUTH_LOGON_PROOF_C.build(Container( opcode = 1, SRP_A = convertool.intToStr(self.srp.get_A())[::-1], SRP_M1 = convertool.intToStr(self.srp.get_M1()), CRC = chr(0) * 20, # don't know how to calculate it unk = 0 )) self.writebuffer.append(r)
def handleAuthLogonProof(self, pkt): data = ST_AUTH_LOGON_PROOF_C.parse(pkt) #print(data) self.srp.set_A(convertool.strToInt(data.SRP_A[::-1])) self.srp.calculate_u() self.srp.calculate_S_server() self.srp.calculate_K() self.srp.calculate_M1() self.srp.calculate_M2() # Store the sessionkey in the DB cursor = db.cursor() cursor.execute( 'UPDATE accounts SET server_K = ? WHERE username = ?', [convertool.intToHex(self.srp.get_K(), 80), self.env['username']]) db.commit() # Check for authentification correctness if data.SRP_M1.encode('hex') == '%x' % self.srp.get_M1(): print('M1 Matches !') else: print('Something goes wrong during authentification :(') # Create the response packet r = ST_AUTH_LOGON_PROOF_S.build( Container(opcode=01, error=0, SRP_M2=convertool.intToStr(self.srp.get_M2()), unk1=0x00800000, unk2=0, unk3=0))
def handleAuthLogonProof(self, pkt): data = ST_AUTH_LOGON_PROOF_C.parse(pkt) #print(data) self.srp.set_A(convertool.strToInt(data.SRP_A[::-1])) self.srp.calculate_u() self.srp.calculate_S_server() self.srp.calculate_K() self.srp.calculate_M1() self.srp.calculate_M2() # Store the sessionkey in the DB cursor = db.cursor() cursor.execute('UPDATE accounts SET server_K = ? WHERE username = ?', [convertool.intToHex(self.srp.get_K(), 80), self.env['username']]) db.commit() # Check for authentification correctness if data.SRP_M1.encode('hex') == '%x' % self.srp.get_M1(): print('M1 Matches !') else: print('Something goes wrong during authentification :(') # Create the response packet r = ST_AUTH_LOGON_PROOF_S.build(Container( opcode = 01, error = 0, SRP_M2 = convertool.intToStr(self.srp.get_M2()), unk1 = 0x00800000, unk2 = 0, unk3 = 0 ))