def test_endian(self):
		stream = streams.StreamOut("<")
		stream.u32(0x12345678)
		assert stream.get() == b"\x78\x56\x34\x12"
		
		stream = streams.StreamOut(">")
		stream.u32(0x12345678)
		assert stream.get() == b"\x12\x34\x56\x78"
	def test_available(self):
		stream = streams.StreamOut()
		assert stream.available() == 0
		stream.write(b"HelloWorld")
		assert stream.available() == 0
		stream.seek(5)
		assert stream.available() == 5
	def test_eof(self):
		stream = streams.StreamOut()
		assert stream.eof()
		stream.write(b"HelloWorld")
		assert stream.eof()
		stream.seek(5)
		assert not stream.eof()
	def test_sint(self):
		stream = streams.StreamOut()
		stream.s8(0x7F)
		stream.s16(-0x8000)
		stream.s32(-1)
		stream.s64(0x123456789ABCDEF)
		assert stream.get() == b"\x7F\x00\x80\xFF\xFF\xFF\xFF\xEF\xCD\xAB\x89\x67\x45\x23\x01"
	def test_pushpop(self):
		stream = streams.StreamOut()
		stream.write(b"Hello")
		stream.push()
		stream.write(b"World")
		stream.pop()
		stream.write(b"WORLD")
		assert stream.get() == b"HelloWORLD"
	def test_uint(self):
		stream = streams.StreamOut()
		stream.u8(0x7F)
		stream.u16(0x8000)
		stream.u24(0xFFFFFF)
		stream.u32(0)
		stream.u64(0x123456789ABCDEF)
		assert stream.get() == b"\x7F\x00\x80\xFF\xFF\xFF\0\0\0\0\xEF\xCD\xAB\x89\x67\x45\x23\x01"
	def test_align(self):
		stream = streams.StreamOut()
		stream.write(b"HelloWorld")
		stream.align(5)
		assert stream.tell() == 10
		stream.align(6)
		assert stream.tell() == 12
		assert stream.get() == b"HelloWorld\0\0"
	def test_seek(self):
		stream = streams.StreamOut()
		stream.write(b"HelloWorld")
		stream.seek(5)
		stream.write(b"WORLD")
		assert stream.get() == b"HelloWORLD"
		
		stream.seek(12)
		assert stream.get() == b"HelloWORLD\0\0"
示例#9
0
	def encode_header(self, packet, option_size):
		stream = streams.StreamOut()
		stream.u8(1) # PRUDP version
		stream.u8(option_size)
		stream.u16(len(packet.payload))
		stream.u8(packet.source_port | (self.local_stream_type << 4))
		stream.u8(packet.dest_port | (self.remote_stream_type << 4))
		stream.u16(packet.type | (packet.flags << 4))
		stream.u8(packet.session_id)
		stream.u8(packet.substream_id)
		stream.u16(packet.packet_id)
		return stream.get()
示例#10
0
	def encode_header(self, packet, option_size):
		stream = streams.StreamOut()
		stream.u8(0x80)
		stream.u8(option_size)
		stream.u16(len(packet.payload))
		stream.u8((self.local_stream_type << 4) | self.remote_stream_type)
		stream.u8(packet.source_port)
		stream.u8(packet.dest_port)
		stream.u8(packet.fragment_id)
		stream.u16(packet.type | (packet.flags << 4))
		stream.u16(packet.packet_id)
		return stream.get()
示例#11
0
	def encode(self, packet):
		stream = streams.StreamOut()
		stream.u8(packet.source_port | (self.local_stream_type << 4))
		stream.u8(packet.dest_port | (self.remote_stream_type << 4))
		if self.flags_version == 0:
			stream.u8(packet.type | (packet.flags << 3))
		else:
			stream.u16(packet.type | (packet.flags << 4))
		stream.u8(packet.session_id)
		stream.write(packet.signature)
		stream.u16(packet.packet_id)
		self.encode_options(packet, stream)
		stream.write(packet.payload)
		
		data = stream.get()
		if self.checksum_version == 0:
			data += struct.pack("<I", self.calc_checksum(data))
		else:
			data += struct.pack("<B", self.calc_checksum(data))
		return data
	def test_skip(self):
		stream = streams.StreamOut()
		stream.write(b"HelloWorld")
		stream.seek(8)
		stream.skip(4)
		assert stream.get() == b"HelloWorld\0\0"
	def test_bool(self):
		stream = streams.StreamOut()
		stream.bool(True)
		stream.bool(False)
		assert stream.get() == b"\x01\x00"
	def test_char(self):
		stream = streams.StreamOut()
		stream.char("H")
		stream.wchar("W")
		assert stream.get() == b"HW\0"
	def test_ascii(self):
		stream = streams.StreamOut()
		stream.ascii("HelloWorld")
		assert stream.get() == b"HelloWorld"
	def test_pad(self):
		stream = streams.StreamOut()
		stream.pad(4)
		stream.pad(4, b"\xFF")
		assert stream.get() == b"\0\0\0\0\xFF\xFF\xFF\xFF"
	def test_chars(self):
		stream = streams.StreamOut()
		stream.chars("Hello")
		stream.wchars("World")
		assert stream.get() == b"HelloW\0o\0r\0l\0d\0"
	def test_repeat(self):
		stream = streams.StreamOut()
		stream.repeat([1, 2, 3], stream.u16)
		assert stream.get() == b"\x01\x00\x02\x00\x03\x00"
	def test_get(self):
		stream = streams.StreamOut()
		assert stream.get() == b""
	def test_float(self):
		stream = streams.StreamOut()
		stream.float(0)
		stream.float(2)
		stream.double(-2)
		assert stream.get() == b"\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\xC0"
	def test_size(self):
		stream = streams.StreamOut()
		assert stream.size() == 0
		stream.write(b"HelloWorld")
		assert stream.size() == 10
	def test_tell(self):
		stream = streams.StreamOut()
		assert stream.tell() == 0
		stream.write(b"HelloWorld")
		assert stream.tell() == 10
示例#23
0
 def build(self):
     stream = streams.StreamOut(">")
     self.encode(stream)
     return stream.get()
	def test_write(self):
		stream = streams.StreamOut()
		stream.write(b"Hello")
		stream.write(b"World")
		assert stream.get() == b"HelloWorld"