Esempio n. 1
0
 async def send_login_result(self, user_id):
     stream = streams.BitStreamOut(">")
     stream.bits(1, 32)
     stream.bits(0, 8)
     stream.bits(len(user_id), 16)
     stream.ascii(user_id)
     await self.send(PacketType.LOGIN_RESULT, stream.get())
Esempio n. 2
0
 async def send_all_nodes(self, node_ids):
     stream = streams.BitStreamOut(">")
     stream.bits(4, 8)
     for i in range(M):
         stream.bit(i in node_ids)
     stream.bits(int(time.monotonic() * 1000), 64)
     await self.send(PacketType.NODE_NOTICE, stream.get())
Esempio n. 3
0
    async def send_pong(self, client_time):
        server_time = int(time.monotonic() * 1000)

        stream = streams.BitStreamOut(">")
        stream.bits(server_time, 64)
        stream.bits(client_time, 64)
        await self.send(PacketType.PONG, stream.get())
Esempio n. 4
0
 def test_tellbits(self):
     stream = streams.BitStreamOut("<")
     assert stream.tellbits() == 0
     stream.bits(15, 4)
     assert stream.tellbits() == 4
     stream.u8(1)
     assert stream.tellbits() == 12
Esempio n. 5
0
 def test_bit(self):
     stream = streams.BitStreamOut("<")
     stream.bit(0)
     stream.bit(1)
     stream.bit(0)
     stream.bit(1)
     assert stream.get() == b"\x50"
Esempio n. 6
0
 def test_bytealign(self):
     stream = streams.BitStreamOut("<")
     assert stream.tellbits() == 0
     stream.bytealign()
     assert stream.tellbits() == 0
     stream.bit(1)
     stream.bytealign()
     assert stream.tellbits() == 8
Esempio n. 7
0
    async def send(self, type, payload, source=0):
        logger.debug("Sending packet: source=%i type=%i size=%i", source, type,
                     len(payload))

        stream = streams.BitStreamOut(">")
        stream.bits(0, 2)
        stream.bits(type, 8)
        stream.bits(source, N)
        stream.bytealign()
        stream.write(payload)

        try:
            await self.client.send(stream.get())
        except util.StreamError:
            await self.server.remove_node(self)
Esempio n. 8
0
 async def send_counter(self, client, index):
     stream = streams.BitStreamOut(">")
     stream.bits(index, 8)
     stream.bits(self.counters[index], 64)
     stream.bits(0, 16)  # Unknown
     await client.send_rpc(0, 16, stream.get())
Esempio n. 9
0
 async def send_rpc(self, source_id, rpc_id, payload):
     stream = streams.BitStreamOut(">")
     stream.bits(int(time.monotonic() * 1000), 64)
     stream.write(payload)
     await self.send(rpc_id, stream.get(), source_id)
Esempio n. 10
0
 async def send_node_removed(self, node_id):
     stream = streams.BitStreamOut(">")
     stream.bits(3, 8)
     stream.bits(node_id, 16)
     stream.bits(int(time.monotonic() * 1000), 64)
     await self.send(PacketType.NODE_NOTICE, stream.get())
Esempio n. 11
0
 async def send_accepted(self):
     stream = streams.BitStreamOut(">")
     stream.bits(self.node_id, 16)
     stream.bits(int(time.monotonic() * 1000), 64)
     await self.send(PacketType.ACCEPTED, stream.get())
Esempio n. 12
0
	def encode(self, outstream):
		stream = streams.BitStreamOut(">")

		#FFLiMiiDataCore
		stream.bits(self.birth_platform, 4)
		stream.bits(self.unk1, 4)
		stream.bits(self.unk2, 4)
		stream.bits(self.unk3, 4)
		stream.bits(self.font_region, 4)
		stream.bits(self.region_move, 2)
		stream.bit(self.unk4)
		stream.bit(self.copyable)
		stream.u8(self.mii_version)
		
		stream.repeat(self.author_id, stream.u8)
		stream.repeat(self.mii_id, stream.u8)
		
		stream.write(self.unk5)
		
		stream.bit(self.unk6)
		stream.bit(self.unk7)
		stream.bits(self.color, 4)
		stream.bits(self.birth_day, 5)
		stream.bits(self.birth_month, 4)
		stream.bit(self.gender)
		
		stream.wchars(self.mii_name + "\0" * (10 - len(self.mii_name)))
		stream.u8(self.size)
		stream.u8(self.fatness)
		
		stream.bits(self.blush_type, 4)
		stream.bits(self.face_style, 4)
		stream.bits(self.face_color, 3)
		stream.bits(self.face_type, 4)
		stream.bit(self.local_only)
		stream.bits(self.hair_mirrored, 5)
		stream.bits(self.hair_color, 3)
		stream.u8(self.hair_type)
		
		stream.bits(self.eye_thickness, 3)
		stream.bits(self.eye_scale, 4)
		stream.bits(self.eye_color, 3)
		stream.bits(self.eye_type, 6)
		stream.bits(self.eye_height, 7)
		stream.bits(self.eye_distance, 4)
		stream.bits(self.eye_rotation, 5)
		
		stream.bits(self.eyebrow_thickness, 4)
		stream.bits(self.eyebrow_scale, 4)
		stream.bits(self.eyebrow_color, 3)
		stream.bits(self.eyebrow_type, 5)
		stream.bits(self.eyebrow_height, 7)
		stream.bits(self.eyebrow_distance, 4)
		stream.bits(self.eyebrow_rotation, 5)
		
		stream.bits(self.nose_height, 7)
		stream.bits(self.nose_scale, 4)
		stream.bits(self.nose_type, 5)
		stream.bits(self.mouth_thickness, 3)
		stream.bits(self.mouth_scale, 4)
		stream.bits(self.mouth_color, 3)
		stream.bits(self.mouth_type, 6)
		
		stream.u8(self.unk34)
		stream.bits(self.mustache_type, 3)
		stream.bits(self.mouth_height, 5)
		stream.bits(self.mustache_height, 6)
		stream.bits(self.mustache_scale, 4)
		stream.bits(self.beard_color, 3)
		stream.bits(self.beard_type, 3)
		
		stream.bits(self.glass_height, 5)
		stream.bits(self.glass_scale, 4)
		stream.bits(self.glass_color, 3)
		stream.bits(self.glass_type, 4)
		stream.bit(self.unk43)
		stream.bits(self.mole_ypos, 5)
		stream.bits(self.mole_xpos, 5)
		stream.bits(self.mole_scale, 4)
		stream.bit(self.mole_enabled)
		
		#FFLiMiiDataOfficial
		stream.wchars(self.creator_name + "\0" * (10 - len(self.creator_name)))
		
		#FFLStoreData
		stream.write(self.unk48)

		data = self.swap_endian(stream.get())
		outstream.write(data)
		outstream.u16(crc16(data + b"\0\0"))
Esempio n. 13
0
 def test_seekbits(self):
     stream = streams.BitStreamOut("<")
     stream.seekbits(100)
     assert stream.tellbits() == 100
     assert stream.get() == bytes(13)
Esempio n. 14
0
 def test_bits(self):
     stream = streams.BitStreamOut("<")
     stream.bits(15, 4)
     stream.u8(15)
     stream.bits(1, 4)
     assert stream.get() == b"\xF0\xF1"