Exemple #1
0
    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"
Exemple #2
0
 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
Exemple #3
0
 def test_eof(self):
     stream = streams.StreamOut("<")
     assert stream.eof()
     stream.write(b"HelloWorld")
     assert stream.eof()
     stream.seek(5)
     assert not stream.eof()
Exemple #4
0
 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"
Exemple #5
0
 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"
Exemple #6
0
 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"
Exemple #7
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"
Exemple #8
0
 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"
Exemple #9
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((packet.source_type << 4) | packet.dest_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()
Exemple #10
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 | (packet.source_type << 4))
		stream.u8(packet.dest_port | (packet.dest_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()
Exemple #11
0
	def encode(self, packet):
		stream = streams.StreamOut("<")
		stream.u8(packet.source_port | (packet.source_type << 4))
		stream.u8(packet.dest_port | (packet.dest_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
Exemple #12
0
 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"
Exemple #13
0
 def test_bool(self):
     stream = streams.StreamOut("<")
     stream.bool(True)
     stream.bool(False)
     assert stream.get() == b"\x01\x00"
Exemple #14
0
	def build(self):
		stream = streams.StreamOut(">")
		self.encode(stream)
		return stream.get()
Exemple #15
0
 def test_char(self):
     stream = streams.StreamOut("<")
     stream.char("H")
     stream.wchar("W")
     assert stream.get() == b"HW\0"
Exemple #16
0
 def test_write(self):
     stream = streams.StreamOut("<")
     stream.write(b"Hello")
     stream.write(b"World")
     assert stream.get() == b"HelloWorld"
Exemple #17
0
 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"
Exemple #18
0
 def test_ascii(self):
     stream = streams.StreamOut("<")
     stream.ascii("HelloWorld")
     assert stream.get() == b"HelloWorld"
Exemple #19
0
 def test_chars(self):
     stream = streams.StreamOut("<")
     stream.chars("Hello")
     stream.wchars("World")
     assert stream.get() == b"HelloW\0o\0r\0l\0d\0"
Exemple #20
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"
Exemple #21
0
 def test_tell(self):
     stream = streams.StreamOut("<")
     assert stream.tell() == 0
     stream.write(b"HelloWorld")
     assert stream.tell() == 10
Exemple #22
0
 def test_get(self):
     stream = streams.StreamOut("<")
     assert stream.get() == b""
Exemple #23
0
 def test_skip(self):
     stream = streams.StreamOut("<")
     stream.write(b"HelloWorld")
     stream.seek(8)
     stream.skip(4)
     assert stream.get() == b"HelloWorld\0\0"