コード例 #1
0
ファイル: Game.py プロジェクト: whelpton/BF4BlazeEmulator
def UpdateMeshConnection(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)

    STAT = packet.getVar("STAT")
    GID = packet.getVar("GID ")

    reply = BlazeFuncs.BlazePacket("0004", "001d", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    #STAT = 2
    if STAT == 2:
        reply = BlazeFuncs.BlazePacket("0004", "0074", "0000", "2000")
        reply.writeInt("GID ", GID)
        reply.writeInt("PID ", self.GAMEOBJ.PersonaID)
        reply.writeInt("STAT", 4)
        pack1, pack2 = reply.build()
        self.transport.getHandle().sendall(pack1.decode('Hex'))
        self.transport.getHandle().sendall(pack2.decode('Hex'))

        reply = BlazeFuncs.BlazePacket("0004", "001e", "0000", "2000")
        reply.writeInt("GID ", GID)
        reply.writeInt("PID ", self.GAMEOBJ.PersonaID)
        pack1, pack2 = reply.build()
        self.transport.getHandle().sendall(pack1.decode('Hex'))
        self.transport.getHandle().sendall(pack2.decode('Hex'))
    else:
        reply = BlazeFuncs.BlazePacket("0004", "0028", "0000", "2000")
        reply.writeInt("GID ", GID)
        reply.writeInt("PID ", self.GAMEOBJ.PersonaID)
        reply.writeInt("REAS", 1)
        pack1, pack2 = reply.build()
        self.transport.getHandle().sendall(pack1.decode('Hex'))
        self.transport.getHandle().sendall(pack2.decode('Hex'))
コード例 #2
0
ファイル: Game.py プロジェクト: Tithand/BF4-Blaze-Emulator
def UpdateGameName(self, data_e):
	packet = BlazeFuncs.BlazeDecoder(data_e)
	self.GAMEOBJ.GameName = packet.getVar("GNAM")

	packet = BlazeFuncs.BlazeDecoder(data_e)
	reply = BlazeFuncs.BlazePacket("0004","0027",packet.packetID,"1000")
	self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #3
0
def swapPlayersTeam(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0004", "0070", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    pid = packet.getVar("PID ")
    role = packet.getVar("ROLE")
    slot = packet.getVar("SLOT")
    tidx = packet.getVar("TIDX")

    reply = BlazeFuncs.BlazePacket("0004", "0075", "0000", "2000")
    reply.writeInt("GID ", self.GAMEOBJ.GameID)
    reply.writeInt("PID ", pid)
    reply.writeString("ROLE", role)
    reply.writeInt("SLOT", 0)
    reply.writeInt("TIDX", 0)

    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))

    for Client in Globals.Clients:
        if Client.PersonaID == pid:
            Client.Type = "Commander"
            if (self.GAMEOBJ.playerLeave(pid)):
                if (self.GAMEOBJ.playerJoinCommander(pid) != False):
                    Client.NetworkInt.getHandle().sendall(pack1.decode('Hex'))
                    Client.NetworkInt.getHandle().sendall(pack2.decode('Hex'))
コード例 #4
0
    def dataReceived(self, data):
        data_e = data.encode('Hex')
        packet = BlazeFuncs.BlazeDecoder(data.encode('Hex'))

        ## REDIRECTORCOMPONENT
        if packet.packetComponent == '0005' and packet.packetCommand == '0001':
            clnt = packet.getVar("CLNT")

            port = 10040
            if clnt == "warsaw server":
                port = 10071

            #ip = ''.join([ bin(int(x))[2:].rjust(8,'0') for x in Globals.serverIP.split('.')])
            ip = struct.unpack(
                "!I",
                socket.inet_aton(socket.gethostbyname(Globals.serverIP)))[0]

            if clnt == "warsaw client":
                Globals.serverIP = "localhost"
                ip = 2130706433

            reply = BlazeFuncs.BlazePacket("0005", "0001", packet.packetID,
                                           "1000")
            reply.writeSUnion("ADDR")
            reply.writeSStruct("VALU")
            reply.writeString("HOST", Globals.serverIP)
            reply.writeInt("IP  ", ip)

            reply.writeInt("PORT", port)
            reply.writeEUnion()
            reply.writeInt("SECU", 0)
            reply.writeInt("XDNS", 0)
            self.transport.write(reply.build().decode('Hex'))
コード例 #5
0
def setGameAttributes(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    ATTR_Name, ATTR_Cont = packet.getVar("ATTR")

    for i in range(len(self.GAMEOBJ.AttrNames)):
        for x in range(len(ATTR_Name)):
            if self.GAMEOBJ.AttrNames[i] == ATTR_Name[x]:
                self.GAMEOBJ.AttrData[i] = ATTR_Cont[x]

    reply = BlazeFuncs.BlazePacket("0004", "0007", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    reply = BlazeFuncs.BlazePacket("0004", "0050", "0000", "2000")
    reply.writeMap("ATTR")
    for i in range(len(ATTR_Name)):
        reply.writeMapData(ATTR_Name[i], ATTR_Cont[i])
    reply.writeBuildMap()
    reply.writeInt("GID ", self.GAMEOBJ.GameID)

    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))

    #mysql code
    EditDataMysql(self.GAMEOBJ.GameName, self.GAMEOBJ.MaxPlayers,
                  self.GAMEOBJ.AttrData, self.GAMEOBJ.GameID)
コード例 #6
0
def getPacks(self, data_e):
	packet = BlazeFuncs.BlazeDecoder(data_e)
	reply = BlazeFuncs.BlazePacket("0802","0001",packet.packetID,"1000")
	
	while (self.GAMEOBJ.Name == None):
		print "WAITING FOR NAME"
		continue
	
	#battlepackFile = open('Users/'+self.GAMEOBJ.Name+'/battlepacks.txt', 'r')
   	battlepacks = json.loads(getPacksMySql(self.GAMEOBJ.Name))
	#battlepackFile.close()
	
	#SCAT 0 = ALL
	#SCAT 1
	#SCAT 2
	#SCAT 3 = AWARDED
	
	if len(battlepacks) > 0:
		#No multi-array/list support yet!
		reply.append("c2ccf4040304")
		reply.writeArray("ITLI")
		for i in range(len(battlepacks)):
			if len(battlepacks[i][1]) == 0:
				reply.writeArray_String("")
			else:
				continue
			reply.writeBuildArray("String")
			reply.writeInt("PID ", (i+1))
			reply.writeString("PKEY", battlepacks[i][0])
			reply.writeInt("SCAT", 3)
			reply.writeInt("UID ", self.GAMEOBJ.UserID)
			reply.append("00")
	
	self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #7
0
def PreAuth(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    #preAuth_Response = "86ebee0000873ca30107333030323934008e99330400130119041b1c0607090a82e0070b80e00381e00382e00383e0031485e00386e003901f8ee9ee0101008efba6038efba60501010510636f6e6e49646c6554696d656f75740004393073001664656661756c745265717565737454696d656f75740004383073000b70696e67506572696f6400043230730016766f69704865616473657455706461746552617465000531303030001a786c7370436f6e6e656374696f6e49646c6554696d656f757400043330300000a6ecf40111626174746c656669656c642d332d706300b69bb20000ba1cf0010a63656d5f65615f696400c29b24010100c2c8740103706300c34867010100c6fcf3038b7c3303c33840011e676f7370726f642d716f7330312e727370632d6c68722e65612e636f6d00c33c00009e9102cee840011072732d70726f642d6c68722d6266330000b2ec00000ab34c330501030704616d7300c33840011d676f7370726f642d716f7330312e6d33642d616d732e65612e636f6d00c33c00009e9102cee840011065612d70726f642d616d732d62663300000464667700c33840011d676f7370726f642d716f7330312e6d33642d6466772e65612e636f6d00c33c00009e9102cee84001116d69732d70726f642d6466772d62663300000469616400c33840011d676f7370726f642d716f7330312e6d33642d6961642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6961642d6266330000046c617800c33840011d676f7370726f642d716f7330312e6d33642d6c61782e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6c61782d6266330000046c687200c33840011e676f7370726f642d716f7330312e727370632d6c68722e65612e636f6d00c33c00009e9102cee840011072732d70726f642d6c68722d6266330000046e727400c33840011d676f7370726f642d716f7330312e6d33642d6e72742e65612e636f6d00c33c00009e9102cee84001116933642d70726f642d6e72742d62663300000473796400c33840011d676f7370726f642d716f7330312e6d33642d7379642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d7379642d6266330000cf6a640085a088d40800cb3ca3010733303032393400cf6972011e426c617a6520332e31352e30382e302028434c2320393434323635290a00"
    #preAuth_Response = "86ebee0000873ca30107333030323934008e99330400120119041b1c0607090a0b80e00381e00382e00383e0031485e00386e003901f8ee9ee0101008efba6038efba60501010510636f6e6e49646c6554696d656f75740004393073001664656661756c745265717565737454696d656f75740004383073000b70696e67506572696f6400043230730016766f69704865616473657455706461746552617465000531303030001a786c7370436f6e6e656374696f6e49646c6554696d656f757400043330300000a6ecf40111626174746c656669656c642d332d706300b69bb20000ba1cf0010a63656d5f65615f696400c29b24010100c2c8740103706300c34867010100c6fcf3038b7c3303c33840010931302e302e302e3100c33c00009e9102cee84001047a6c6f0000b2ec00000ab34c330501030104616d7300c33840010931302e302e302e3100c33c00009e9102cee84001047a6c6f0000cf6a640085a088d40800cb3ca3010733303032393400cf6972011d5a4c4f7a6520332e31352e30382e302028434c23203833343535362900"
    reply = BlazeFuncs.BlazePacket("0009", "0007", packet.packetID, "1000")
    reply.writeBool("ANON", False)
    reply.writeString("ASRC", "300294")

    reply.append(
        "8e99330400130119041b1c0607090a82e0070b80e00381e00382e00383e0031485e00386e003901f"
    )

    reply.writeSStruct("CONF")  #CONF STRUCT 1

    reply.writeMap("CONF")
    reply.writeMapData("associationListSkipInitialSet", "1")
    reply.writeMapData("blazeServerClientId", "GOS-BlazeServer-BF4-PC")
    reply.writeMapData("bytevaultHostname", "bytevault.gameservices.ea.com")
    reply.writeMapData("bytevaultPort", "42210")
    reply.writeMapData("bytevaultSecure", "false")
    reply.writeMapData("capsStringValidationUri",
                       "client-strings.xboxlive.com")
    reply.writeMapData("connIdleTimeout", "90s")
    reply.writeMapData("defaultRequestTimeout", "60s")
    reply.writeMapData("identityDisplayUri", "console2/welcome")
    reply.writeMapData("identityRedirectUri", "http://127.0.0.1/success")
    reply.writeMapData("nucleusConnect", "http://127.0.0.1")
    reply.writeMapData("nucleusProxy", "http://127.0.0.1/")
    reply.writeMapData("pingPeriod", "20s")
    reply.writeMapData("userManagerMaxCachedUsers", "0")
    reply.writeMapData("voipHeadsetUpdateRate", "1000")
    reply.writeMapData("xblTokenUrn", "http://127.0.0.1")
    reply.writeMapData("xlspConnectionIdleTimeout", "300")
    reply.writeBuildMap()
    reply.writeEUnion()  #END MAP

    reply.writeString("INST", "battlefield-4-pc")
    reply.writeBool("MINR", False)
    reply.writeString("NASP", "cem_ea_id")
    reply.writeString("PLAT", "pc")

    reply.writeSStruct("QOSS")  #QOSS STRUCT
    reply.writeSStruct("BWPS")  #BWPS STRUCT
    reply.writeString("PSA ", Globals.serverIP)
    reply.writeInt("PSP ", 17502)
    reply.writeString("SNA ", "rs-prod-lhr-bf4")
    reply.writeEUnion()  #END BWPS

    reply.writeInt("LNP ", 10)
    reply.append(
        "b34c330501030704616d7300c33840011d676f7370726f642d716f7330312e6d33642d616d732e65612e636f6d00c33c00009e9102cee840011065612d70726f642d616d732d62663300000464667700c33840011d676f7370726f642d716f7330312e6d33642d6466772e65612e636f6d00c33c00009e9102cee84001116d69732d70726f642d6466772d62663300000469616400c33840011d676f7370726f642d716f7330312e6d33642d6961642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6961642d6266330000046c617800c33840011d676f7370726f642d716f7330312e6d33642d6c61782e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6c61782d6266330000046c687200c33840011e676f7370726f642d716f7330312e727370632d6c68722e65612e636f6d00c33c00009e9102cee840011072732d70726f642d6c68722d6266330000046e727400c33840011d676f7370726f642d716f7330312e6d33642d6e72742e65612e636f6d00c33c00009e9102cee84001116933642d70726f642d6e72742d62663300000473796400c33840011d676f7370726f642d716f7330312e6d33642d7379642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d7379642d6266330000"
    )
    reply.writeInt("SVID", 1337)
    reply.writeEUnion()  #END QOSS

    reply.writeString("RSRC", "302123")
    reply.writeString("SVER", "Blaze 13.15.08.0 (CL# 9442625)")
    #reply.append(preAuth_Response)
    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #8
0
def UserSettingsLoadAll(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0009", "000c", packet.packetID, "1000")
    reply.writeMap("SMAP")
    reply.writeMapData("cust", "")
    reply.writeMapData("sdt", "")
    reply.writeBuildMap()
    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #9
0
ファイル: Util.py プロジェクト: whelpton/BF4BlazeEmulator
def PostAuth(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0009", "0008", packet.packetID, "1000")
    reply.append(
        "c33cc003864cb301010086d8780000bed8780000c2aa64010100c2fcb40000cb0cb40000d29a64000000d25b2503864cb3011b676f7374656c656d657472792e626c617a65332e65612e636f6d0086ebee0000929ce10101009648f400009a9b3401102d47414d452f434f4d4d2f4558504400b2f8c00093d5f2d60cb69bb20000bafbeb010100c2fcb400849c01ce4b390098ea01ce5cf3010b46577065574a3652727000ceb97901b1015eb9caf7d19cb3ddefcb93afaaff818cbbd8e18b9af6ed9bb6b1e8b0a986c6ceb1e2f4d0a9a6a78eb1baea84d3b3ec8d96a4e0c08183868c98b0e0c089e6c6989ab7c2c9e182eed897e2c2d1a3c7ad99b3e9cab1a3d685cd96f0c6b189c3a68d98b8eed091c3a68d96e5dcd59aa5818000cf08f4008b01cf4a6d010844656661756c7400cf6bad011374656c656d657472792d332d636f6d6d6f6e0000d298eb03864cb3010d31302e31302e37382e31353000c2fcb400a78c01ceb9790180013137343830323835302c31302e31302e37382e3135303a383939392c626174746c656669656c642d342d70632c31302c35302c35302c35302c35302c302c300000d72bf003d2dbf00001"
    )
    reply.writeInt("UID ", self.GAMEOBJ.PersonaID)
    reply.writeEUnion()  #END UROP
    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #10
0
def ReciveComponent(self, func, data_e):
    func = func.upper()
    if func == '0032':
        print("[0801] ECHO")
        packet = BlazeFuncs.BlazeDecoder(data_e)
        reply = BlazeFuncs.BlazePacket("0801", "0032", packet.packetID, "3000")
        self.transport.getHandle().sendall(reply.build().decode('Hex'))
    else:
        print("[0801] ERROR! UNKNOWN FUNC " + func)
コード例 #11
0
def useConsumeable(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0803", "0003", packet.packetID, "1000")

    itemName = str(packet.getVar('IKEY'))

    #consumeableFile = open('Users/'+self.GAMEOBJ.Name+'/consumables.txt', 'r')
    #consumeables = json.loads(consumeableFile.readline())
    #consumeableFile.close()
    consumeableFile = loadMySql(self.GAMEOBJ.Name, "consumables")
    consumeables = json.loads(consumeableFile)

    cIndex = None
    for i in range(len(consumeables)):
        if consumeables[i][0] == itemName:
            cIndex = i

    if cIndex == None:
        print "cIdndex is none"
        return

    for x in range(len(consumeables)):
        if consumeables[x][2] > 0:
            consumeables[x][2] = 0

    #One hour activate!
    consumeables[cIndex][2] = 3600
    consumeables[cIndex][1] = (consumeables[cIndex][1] - 1)

    #consumeableFile = open('Users/'+self.GAMEOBJ.Name+'/consumables.txt', 'w')
    #consumeableFile.write(json.dumps(consumeables))
    #consumeableFile.close()
    writeMySql(self.GAMEOBJ.Name, json.dumps(consumeables), "consumables")

    reply.writeSStruct("CNSU")
    reply.writeInt("ACTT", self.GAMEOBJ.UserID)
    reply.writeString("CKEY", consumeables[i][0])
    reply.writeInt("DURA", consumeables[i][2])
    reply.writeInt("QANT", consumeables[i][1])
    reply.writeEUnion()  #END USER

    reply.writeInt("UID ", self.GAMEOBJ.UserID)
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    #######
    reply = BlazeFuncs.BlazePacket("0803", "000a", "0000", "2000")
    reply.writeSStruct("CNSU")
    reply.writeInt("ACTT", self.GAMEOBJ.UserID)
    reply.writeString("CKEY", consumeables[i][0])
    reply.writeInt("DURA", consumeables[i][2])
    reply.writeInt("QANT", consumeables[i][1])
    reply.writeEUnion()  #END USER

    reply.writeInt("UID ", self.GAMEOBJ.UserID)
    pack1, pack2 = reply.build()
    self.GAMEOBJ.CurServer.NetworkInt.getHandle().sendall(pack1.decode('Hex'))
    self.GAMEOBJ.CurServer.NetworkInt.getHandle().sendall(pack2.decode('Hex'))
コード例 #12
0
def UpdateGameName(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    self.GAMEOBJ.GameName = packet.getVar("GNAM")

    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0004", "0027", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    #mysql code
    EditDataMysql(self.GAMEOBJ.GameName, self.GAMEOBJ.MaxPlayers,
                  self.GAMEOBJ.AttrData, self.GAMEOBJ.GameID)
コード例 #13
0
def replayGame(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0004", "0013", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    reply = BlazeFuncs.BlazePacket("0004", "0064", "0000", "2000")
    reply.writeInt("GID ", self.GAMEOBJ.GameID)
    reply.writeInt("GSTA", 130)
    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))
コード例 #14
0
ファイル: Util.py プロジェクト: Tithand/BF4-Blaze-Emulator
def FetchClientConfig(self,data_e):
	packet = BlazeFuncs.BlazeDecoder(data_e)
	cfid = packet.getVar("CFID")
	reply = BlazeFuncs.BlazePacket("0009","0001",packet.packetID,"1000")
	if cfid == "GOSAchievements":
		reply.writeMap("CONF")
		reply.writeMapData("Achievements", "ACH32_00,ACH33_00,ACH34_00,ACH35_00,ACH36_00,ACH37_00,ACH38_00,ACH39_00,ACH40_00,XPACH01_00,XPACH02_00,XPACH03_00,XPACH04_00,XPACH05_00,XP2ACH01_00,XP2ACH04_00,XP2ACH03_00,XP2ACH05_00,XP2ACH02_00,XP3ACH01_00,XP3ACH05_00,XP3ACH03_00,XP3ACH04_00,XP3ACH02_00,XP4ACH01_00,XP4ACH02_00,XP4ACH03_00,XP4ACH04_00,XP4ACH05_00,XP5ACH01_00,XP5ACH02_00,XP5ACH03_00,XP5ach04_00,XP5ach05_00")
		reply.writeMapData("WinCodes", "r01_00,r05_00,r04_00,r03_00,r02_00,r10_00,r08_00,r07_00,r06_00,r09_00,r11_00,r12_00,r13_00,r14_00,r15_00,r16_00,r17_00,r18_00,r19_00,r20_00,r21_00,r22_00,r23_00,r24_00,r25_00,r26_00,r27_00,r28_00,r29_00,r30_00,r31_00,r32_00,r33_00,r35_00,r36_00,r37_00,r34_00,r38_00,r39_00,r40_00,r41_00,r42_00,r43_00,r44_00,r45_00,xp2rgm_00,xp2rntdmcq_00,xp2rtdmc_00,xp3rts_00,xp3rdom_00,xp3rnts_00,xp3rngm_00,xp4rndom_00,xp4rscav_00,xp4rnscv_00,xp4ramb1_00,xp4ramb2_00,xp5r502_00,xp5r501_00,xp5ras_00,xp5asw_00")
		reply.writeBuildMap()

	self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #15
0
ファイル: Packs.py プロジェクト: manu1578/BlazeEmulatorBF4
def grantPacks(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    packList = packet.getVar("PKLS")
    userID = packet.getVar("UID ")

    reply = BlazeFuncs.BlazePacket("0802", "0002", packet.packetID, "1000")
    reply.writeArray("PIDL")
    for i in range(len(packList)):
        reply.writeArray_TInt("ERR ", 0)
        reply.writeArray_TString("PKEY", packList[i])
        reply.writeArray_ValEnd()
    reply.writeBuildArray("Struct")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    name = None
    for Client in Globals.Clients:
        if Client.UserID == userID:
            name = Client.Name

    if name == None:
        return

    #itemsFile = open('Users/'+name+'/items.txt', 'r')
    #Items = itemsFile.readlines()
    items = loadMySql(name, "items")
    itemToWrite = items
    for x in range(len(packList)):
        if not (packList[x] in items):
            #itemFile.write(packList[x]+"\n")
            itemToWrite = itemToWrite + packList[x] + "\n"

            battlepackItem = [packList[x], []]

            #battlepackFile = open('Users/'+name+'/battlepacks.txt', 'r')
            #packStr = battlepackFile.readline()
            #battlepackFile.close()
            packStr = loadMySql(name, "battlepacks")

            writeDta = []
            if len(packStr) <= 2:
                writeDta = [battlepackItem]
            else:
                battlepacks = json.loads(packStr)
                battlepacks.append(battlepackItem)
                writeDta = battlepacks

            #battlepackFile = open('Users/'+name+'/battlepacks.txt', 'w')
            #battlepackFile.write(json.dumps(writeDta))
            #battlepackFile.close()
            writeMySql(name, json.dumps(writeDta), "battlepacks")

    writeMySql(name, itemToWrite, "items")
    itemToWrite = ""
コード例 #16
0
ファイル: Util.py プロジェクト: Tithand/BF4-Blaze-Emulator
def PostAuth(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0009", "0008", packet.packetID, "1000")
    #reply.append("c33cc003864cb301010086d8780000bed8780000c2aa64010100c2fcb40000cb0cb40000d29a64000000d25b2503864cb3011b676f7374656c656d657472792e626c617a65332e65612e636f6d0086ebee0000929ce10101009648f400009a9b3401102d47414d452f434f4d4d2f4558504400b2f8c00093d5f2d60cb69bb20000bafbeb010100c2fcb400849c01ce4b390098ea01ce5cf3010b46577065574a3652727000ceb97901b1015eb9caf7d19cb3ddefcb93afaaff818cbbd8e18b9af6ed9bb6b1e8b0a986c6ceb1e2f4d0a9a6a78eb1baea84d3b3ec8d96a4e0c08183868c98b0e0c089e6c6989ab7c2c9e182eed897e2c2d1a3c7ad99b3e9cab1a3d685cd96f0c6b189c3a68d98b8eed091c3a68d96e5dcd59aa5818000cf08f4008b01cf4a6d010844656661756c7400cf6bad011374656c656d657472792d332d636f6d6d6f6e0000d298eb03864cb3010d31302e31302e37382e31353000c2fcb400a78c01ceb9790180013137343830323835302c31302e31302e37382e3135303a383939392c626174746c656669656c642d342d70632c31302c35302c35302c35302c35302c302c300000d72bf003d2dbf00001")
    #reply.writeInt("UID ", self.GAMEOBJ.PersonaID)
    #reply.writeEUnion() #END UROP

    reply.writeSStruct("PSS ")
    reply.writeString("ADRS", "")
    reply.writeInt("AMAX", 0)
    reply.writeInt("OMAX", 0)
    reply.writeString("PJID", "")
    reply.writeInt("PORT", 0)
    reply.writeInt("RPRT", 0)
    reply.writeInt("TIID", 0)
    reply.writeEUnion()  #END PSS

    reply.writeSStruct("TELE")
    reply.writeString("ADRS", "gostelemetry.blaze3.ea.com")
    reply.writeBool("ANON", False)
    reply.writeString("DISA", "")
    reply.writeBool("EDCT", False)
    reply.writeString("FILT", "-GAME/COMM/EXPD")
    reply.writeInt("LOC ", 1701729619)
    reply.writeBool("MINR", False)
    reply.writeString("NOOK", "")
    reply.writeInt("PORT", 9988)
    reply.writeInt("SDLY", 15000)
    reply.writeString("SESS", "2fj3StGgjcB")
    reply.writeString(
        "SKEY",
        "^–âëôÀ“­¯ùú· ¤žïéöш³¶¦Ë¹åäÙ«¦®‹¸ãØȉ¦§ŒœºîàÑÃ捝áä衦†‹’°àÀƒ†Œ˜°âÜ‘³†Ž˜¶Ä±·ì‹±áèÑãÖÌÙ´åؑ벦‹¸ãØÄ¡£¦Íš¹îØ¡“†Ë²îªÍÒ€€"
    )
    reply.writeInt("SPCT", 75)
    reply.writeString("STIM", "Default")
    reply.writeString("SVNM", "telemetry-3-common")
    reply.writeEUnion()  #END TELE

    reply.writeSStruct("TICK")
    reply.writeString("ADRS", "10.10.78.150")
    reply.writeInt("PORT", 8999)
    reply.writeString(
        "SKEY",
        str(self.GAMEOBJ.PersonaID) +
        ",10.10.78.150:8999,battlefield-4-pc,10,50,50,50,50,0,0")
    reply.writeEUnion()  #END TICK

    reply.writeSStruct("UROP")
    reply.writeInt("TMOP", 0)
    reply.writeInt("UID ", self.GAMEOBJ.PersonaID)
    reply.writeEUnion()  #END UROP

    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #17
0
def getItems(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0803", "0001", packet.packetID, "1000")

    userID = int(packet.getVar('UID '))

    name = None
    for Client in Globals.Clients:
        if Client.PersonaID == userID:
            name = Client.Name

    if (name == None):
        self.transport.getHandle().sendall(reply.build().decode('Hex'))
        return

    #consumeableFile = open('Users/'+name+'/consumables.txt', 'r')
    #consumeables = json.loads(consumeableFile.readline())
    #consumeableFile.close()
    consumeableFile = loadMySql(name, "consumables")
    consumeables = json.loads(consumeableFile)

    itemsFile = open('Data/items.txt', 'r+')
    items = itemsFile.readlines()
    itemsFile.close()

    #itemsFile = open('Users/'+name+'/items.txt', 'r')
    #userItems = itemsFile.readlines()
    #itemsFile.close()
    userItems = loadMySql(name, "items").splitlines()

    reply.writeSStruct("INVT")

    reply.writeArray("BLST")
    for i in range(len(items)):
        if items[i] in userItems:
            reply.writeArray_Bool(1)
        else:
            reply.writeArray_Bool(0)
    reply.writeBuildArray("Bool")
    #reply.writeEUnion()

    reply.writeArray("CLST")
    for i in range(len(consumeables)):
        reply.writeArray_TInt("ACTT", userID)
        reply.writeArray_TString("CKEY", consumeables[i][0])
        reply.writeArray_TInt("DURA", consumeables[i][2])
        reply.writeArray_TInt("QANT", consumeables[i][1])
        reply.writeArray_ValEnd()

    reply.writeBuildArray("Struct")

    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #18
0
def setGameSettings(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    self.GAMEOBJ.GameSet = packet.getVar("GSET")

    reply = BlazeFuncs.BlazePacket("0004", "0004", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    reply = BlazeFuncs.BlazePacket("0004", "006E", "0000", "2000")
    reply.writeInt("ATTR", self.GAMEOBJ.GameSet)
    reply.writeInt("GID ", self.GAMEOBJ.GameID)
    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))
コード例 #19
0
ファイル: Game.py プロジェクト: whelpton/BF4BlazeEmulator
def SetPlayerCapacity(self, data_e):
    oldname = self.GAMEOBJ.GameName

    packet = BlazeFuncs.BlazeDecoder(data_e)
    self.GAMEOBJ.MaxPlayers = packet.getVar("PCAP")[0]

    global serverSlot
    #mysql code
    serverSlot = self.GAMEOBJ.MaxPlayers
    EditDataMysql(self.GAMEOBJ.GameID)

    reply = BlazeFuncs.BlazePacket("0004", "0005", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #20
0
ファイル: Util.py プロジェクト: Tithand/BF4-Blaze-Emulator
def UserSettingsSave(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    data = packet.getVar("DATA")

    cwd = os.getcwd()
    path = cwd + "\\Users\\" + self.GAMEOBJ.Name + "\\"

    f = open(path + 'usersettings.txt', 'w')
    f.write(data)
    f.close()

    reply = BlazeFuncs.BlazePacket("0009", "000b", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #21
0
ファイル: Game.py プロジェクト: whelpton/BF4BlazeEmulator
def UpdateGameName(self, data_e):
    oldname = self.GAMEOBJ.GameName

    packet = BlazeFuncs.BlazeDecoder(data_e)
    self.GAMEOBJ.GameName = packet.getVar("GNAM")

    global serverName
    #mysql code
    serverName = self.GAMEOBJ.GameName
    EditDataMysql(self.GAMEOBJ.GameID)

    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0004", "0027", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #22
0
def UserSettingsLoadAll(self,data_e):
	packet = BlazeFuncs.BlazeDecoder(data_e)
	reply = BlazeFuncs.BlazePacket("0009","000c",packet.packetID,"1000")
	
	#cwd = os.getcwd()
	#path = cwd+"\\Users\\"+self.GAMEOBJ.Name+"\\"
	#f = open(path+'usersettings.txt', 'r')
	#data = f.readline()
	data = loadMySql(self.GAMEOBJ.Name, "usersettings")
	
	reply.writeMap("SMAP")
	reply.writeMapData("cust", str(data))
	reply.writeBuildMap()
	self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #23
0
def FinalizeGameCreation(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    reply = BlazeFuncs.BlazePacket("0004", "000f", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    reply = BlazeFuncs.BlazePacket("0004", "0047", "0000", "2000")
    reply.writeInt("GID ", self.GAMEOBJ.GameID)
    reply.writeInt("PHID", self.GAMEOBJ.PersonaID)
    reply.writeInt("PHST", 0)
    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))

    self.GAMEOBJ.IsUp = True
コード例 #24
0
def getStatsByGroupAsync(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    user = packet.getVar('EID ')
    vid = packet.getVar('VID ')

    userID = user[0]

    name = None
    for Client in Globals.Clients:
        if Client.PersonaID == userID:
            name = Client.Name

    #stats = open('Users/'+name+'/userstats.txt', 'r')
    pStats = []
    lines = loadMySql(name, "userstats").splitlines()
    #lines = stats.readlines()
    #stats.close()

    lines = [word.strip() for word in lines]

    for line in lines:
        pStats.append(line.split("="))

    reply = BlazeFuncs.BlazePacket("0007", "0010", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    reply = BlazeFuncs.BlazePacket("0007", "0032", "0000", "2000")
    reply.writeString("GRNM", "player_WebPlayerStats")
    reply.writeString("KEY ", "No_Scope_Defined")
    reply.writeBool("LAST", True)

    reply.writeSStruct("STS ")
    reply.append("cf4874040301")

    reply.writeInt("EID ", userID)
    reply.writeArray("STAT")

    for i in range(len(lines)):
        val = str(pStats[i][1]).strip()
        reply.writeArray_String(val)

    reply.writeBuildArray("String")
    reply.writeEUnion()
    reply.writeEUnion()
    reply.writeInt("VID ", int(vid))

    pack1, pack2 = reply.build()
    self.transport.write(pack1.decode('Hex'))
    self.transport.write(pack2.decode('Hex'))
コード例 #25
0
def SetGameModRegister(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    packet = BlazeFuncs.BlazeDecoder(data_e)
    gmrg = packet.getVar("GMRG")
    self.GAMEOBJ.GameRegis = gmrg

    reply = BlazeFuncs.BlazePacket("0004", "0029", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    reply = BlazeFuncs.BlazePacket("0004", "007B", "0000", "2000")
    reply.writeInt("GMID", self.GAMEOBJ.GameID)
    reply.writeInt("GMRG", self.GAMEOBJ.GameRegis)
    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))
コード例 #26
0
def ResumeSession(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    sessionKey = packet.getVar("SKEY")

    for Client in Globals.Clients:
        if Client.SessionKey == sessionKey:
            Client.IsUp == True
            self.GAMEOBJ = Client

            reply = BlazeFuncs.BlazePacket("7802", "0023", packet.packetID,
                                           "1000")
            self.transport.getHandle().sendall(reply.build().decode('Hex'))

            return 0

    self.transport.loseConnection()
コード例 #27
0
ファイル: Game.py プロジェクト: whelpton/BF4BlazeEmulator
def AdvanceGameState(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)

    reply = BlazeFuncs.BlazePacket("0004", "0003", packet.packetID, "1000")
    self.transport.getHandle().sendall(reply.build().decode('Hex'))

    State = packet.getVar("GSTA")

    self.COOPOBJ.GameState = State

    reply = BlazeFuncs.BlazePacket("0004", "0064", "0000", "2000")
    reply.writeInt("GID ", self.COOPOBJ.GameID)
    reply.writeInt("GSTA", State)
    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))
コード例 #28
0
ファイル: Game.py プロジェクト: whelpton/BF4BlazeEmulator
def setGameAttributes(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    ATTR_Name, ATTR_Cont = packet.getVar("ATTR")

    pack1, pack2 = reply.build()
    self.transport.getHandle().sendall(pack1.decode('Hex'))
    self.transport.getHandle().sendall(pack2.decode('Hex'))
コード例 #29
0
ファイル: Util.py プロジェクト: whelpton/BF4BlazeEmulator
def PreAuth(self, data_e):
    packet = BlazeFuncs.BlazeDecoder(data_e)
    preAuth_Response = "86ebee0000873ca30107333030323934008e99330400130119041b1c0607090a82e0070b80e00381e00382e00383e0031485e00386e003901f8ee9ee0101008efba6038efba60501010510636f6e6e49646c6554696d656f75740004393073001664656661756c745265717565737454696d656f75740004383073000b70696e67506572696f6400043230730016766f69704865616473657455706461746552617465000531303030001a786c7370436f6e6e656374696f6e49646c6554696d656f757400043330300000a6ecf40111626174746c656669656c642d332d706300b69bb20000ba1cf0010a63656d5f65615f696400c29b24010100c2c8740103706300c34867010100c6fcf3038b7c3303c33840011e676f7370726f642d716f7330312e727370632d6c68722e65612e636f6d00c33c00009e9102cee840011072732d70726f642d6c68722d6266330000b2ec00000ab34c330501030704616d7300c33840011d676f7370726f642d716f7330312e6d33642d616d732e65612e636f6d00c33c00009e9102cee840011065612d70726f642d616d732d62663300000464667700c33840011d676f7370726f642d716f7330312e6d33642d6466772e65612e636f6d00c33c00009e9102cee84001116d69732d70726f642d6466772d62663300000469616400c33840011d676f7370726f642d716f7330312e6d33642d6961642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6961642d6266330000046c617800c33840011d676f7370726f642d716f7330312e6d33642d6c61782e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6c61782d6266330000046c687200c33840011e676f7370726f642d716f7330312e727370632d6c68722e65612e636f6d00c33c00009e9102cee840011072732d70726f642d6c68722d6266330000046e727400c33840011d676f7370726f642d716f7330312e6d33642d6e72742e65612e636f6d00c33c00009e9102cee84001116933642d70726f642d6e72742d62663300000473796400c33840011d676f7370726f642d716f7330312e6d33642d7379642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d7379642d6266330000cf6a640085a088d40800cb3ca3010733303032393400cf6972011e426c617a6520332e31352e30382e302028434c2320393434323635290a00"
    #preAuth_Response = "86ebee0000873ca30107333030323934008e99330400120119041b1c0607090a0b80e00381e00382e00383e0031485e00386e003901f8ee9ee0101008efba6038efba60501010510636f6e6e49646c6554696d656f75740004393073001664656661756c745265717565737454696d656f75740004383073000b70696e67506572696f6400043230730016766f69704865616473657455706461746552617465000531303030001a786c7370436f6e6e656374696f6e49646c6554696d656f757400043330300000a6ecf40111626174746c656669656c642d332d706300b69bb20000ba1cf0010a63656d5f65615f696400c29b24010100c2c8740103706300c34867010100c6fcf3038b7c3303c33840010931302e302e302e3100c33c00009e9102cee84001047a6c6f0000b2ec00000ab34c330501030104616d7300c33840010931302e302e302e3100c33c00009e9102cee84001047a6c6f0000cf6a640085a088d40800cb3ca3010733303032393400cf6972011d5a4c4f7a6520332e31352e30382e302028434c23203833343535362900"
    reply = BlazeFuncs.BlazePacket("0009", "0007", packet.packetID, "1000")
    reply.writeBool("ANON", False)
    reply.writeString("ASRC", "300294")

    reply.append(
        "8e99330400130119041b1c0607090a82e0070b80e00381e00382e00383e0031485e00386e003901f"
    )

    reply.writeSStruct("CONF")  #CONF STRUCT 1

    reply.writeMap("CONF")
    reply.writeMapData("connIdleTimeout", "120s")
    reply.writeMapData("defaultRequestTimeout", "80s")
    reply.writeMapData("pingPeriod", "20s")
    reply.writeMapData("voipHeadsetUpdateRate", "1000")
    reply.writeMapData("xlspConnectionIdleTimeout", "300")
    reply.writeBuildMap()
    reply.writeEUnion()  #END MAP

    reply.writeString("INST", "battlefield-4-pc")
    reply.writeBool("MINR", False)
    reply.writeString("NASP", "cem_ea_id")
    reply.writeString("PLAT", "pc")

    reply.writeSStruct("QOSS")  #QOSS STRUCT
    reply.writeSStruct("BWPS")  #BWPS STRUCT
    reply.writeString("PSA ", Globals.serverIP)
    reply.writeInt("PSP ", 17502)
    reply.writeString("SNA ", "rs-prod-lhr-bf4")
    reply.writeEUnion()  #END BWPS

    reply.writeInt("LNP ", 10)
    reply.append(
        "b34c330501030704616d7300c33840011d676f7370726f642d716f7330312e6d33642d616d732e65612e636f6d00c33c00009e9102cee840011065612d70726f642d616d732d62663300000464667700c33840011d676f7370726f642d716f7330312e6d33642d6466772e65612e636f6d00c33c00009e9102cee84001116d69732d70726f642d6466772d62663300000469616400c33840011d676f7370726f642d716f7330312e6d33642d6961642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6961642d6266330000046c617800c33840011d676f7370726f642d716f7330312e6d33642d6c61782e65612e636f6d00c33c00009e9102cee840011065612d70726f642d6c61782d6266330000046c687200c33840011e676f7370726f642d716f7330312e727370632d6c68722e65612e636f6d00c33c00009e9102cee840011072732d70726f642d6c68722d6266330000046e727400c33840011d676f7370726f642d716f7330312e6d33642d6e72742e65612e636f6d00c33c00009e9102cee84001116933642d70726f642d6e72742d62663300000473796400c33840011d676f7370726f642d716f7330312e6d33642d7379642e65612e636f6d00c33c00009e9102cee840011065612d70726f642d7379642d6266330000"
    )
    reply.writeInt("SVID", 1337)
    reply.writeEUnion()  #END QOSS

    reply.writeString("RSRC", "300294")
    reply.writeString("SVER", "Blaze 13.15.08.0 (CL# 9442625)")
    #reply.append(preAuth_Response)
    self.transport.getHandle().sendall(reply.build().decode('Hex'))
コード例 #30
0
def getTemplate(self, data_e):
	packet = BlazeFuncs.BlazeDecoder(data_e)
	reply = BlazeFuncs.BlazePacket("0803","0006",packet.packetID,"1000")
	
	reply.writeArray("ILST")
	
	itemFile = open('Data/items.txt', 'r')
   	items = itemFile.readlines()
	itemFile.close()

	for i in range(len(items)):
		val = str(items[i])
		reply.writeArray_String(val.strip())
		
	reply.writeBuildArray("String")
	
	self.transport.getHandle().sendall(reply.build().decode('Hex'))