def test_xor_set1(self): from l2.xor import XorInOut class PacketBuffer(): class Side(): xor = XorInOut(None) client = Side() server = Side() packet_buffer = PacketBuffer() xor_c = XorInOut(packet_buffer.client) xor_s = XorInOut(packet_buffer.server) xor_c.xor_in.packet_buffer = \ xor_c.xor_out.packet_buffer = \ xor_s.xor_in.packet_buffer = \ xor_s.xor_out.packet_buffer = packet_buffer old_key = b'' xor_c.xor_in.key = \ xor_c.xor_out.key = \ xor_s.xor_in.key = \ xor_s.xor_out.key = old_key pck_packed = b'\x19\x00.\x01\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\x01\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00' pck_unpacked = b'\x19\x00.\x01\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\x01\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00' key_new = b"\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\xc8'\x93\x01\xa1l1\x97" pck_out = list(xor_c.pck_in([pck_packed,])) self.assertEqual( xor_c.xor_in.key, key_new, ) self.assertEqual( xor_s.xor_in.key, old_key, ) self.assertEqual( xor_c.xor_out.key, old_key, ) self.assertEqual( xor_s.xor_out.key, old_key, ) self.assertEqual( pck_out, [pck_unpacked,], )
def test_xor_set5(self): from l2.xor import XorInOut class PacketBuffer(): class Side(): xor = XorInOut(None) client = Side() server = Side() packet_buffer = PacketBuffer() xor_c = XorInOut(packet_buffer.client) xor_s = XorInOut(packet_buffer.server) xor_c.xor_in.packet_buffer = \ xor_c.xor_out.packet_buffer = \ xor_s.xor_in.packet_buffer = \ xor_s.xor_out.packet_buffer = packet_buffer old_key = b'\xa9\x90\x0f\x8b\x19\x82\xdf\xa0(+\x93\x01\xa1l1\x97' xor_c.xor_in.key = \ xor_c.xor_out.key = \ xor_s.xor_in.key = \ xor_s.xor_out.key = old_key pck_packed = b'W\xe5\xeahq\xf3,\x8d\xe5\xce];\x9a\x9a\xabI\xe0\x14\x1b\xf9\xe0\r\xd2r\x1a3\xa0\xa1\x00\x089\xc7n\x91\x9e{b\xe0?\x9c\xf4\xdfL*\x8b\x8e\xbfZ\xf3\x02\r\xe8\xf1s\xac\x08`K\xd8\xb6\x17\t8\xcac\x9d\x92\x19\x00\x87X\xf8\x90\xdaI,\x8d\x84\xb5L\xe5uz\xf7\xeel\xb3z\x12W\xc4\xab\n\x076\xc5l\x8e\x81cz\x94K\x8e\xe6\xcd^X\xf9\x95\xa4T\xfd\x02\r\xe2\xfb\x18\xc7\x15}2\xa1\xa0\x01eT\xc3j\x88\x87y`\x8cS\x96\xfe\xd5FN\xef\x83\xb2V\xff\x07\x08\xf6\xef\x19\xc6\x12z6\xa5\xc5dzK\xa8\x01\x91\x9e' pck_unpacked = b'\xfe"\x00\t\x00\x00\x00\x01@\x00\x00g\x00l\x00u\x00d\x00i\x00o\x00\x00@\x02\x00\x00\x00d\x00i\x00o\x00n\x00\x00\x00\x03@\x00\x00g\x00i\x00r\x00a\x00n\x00\x00\x00\x04@\x00\x00o\x00r\x00e\x00n\x00\x00\x00\x05\x00\x00@a\x00d\x00e\x00n\x00\x00\x00\x06\x00\x00\x00i@n\x00n\x00a\x00d\x00r\x00i\x00l\x00e@\x00\x00\x07\x00\x00\x00g\x00o\x00d\x00a\x00r@d\x00\x00\x00\x08\x00\x00\x00r\x00u\x00n\x00e@\x00\x00\t\x00\x00\x00s\x00h\x00u\x00t\x00t@g\x00a\x00r\x00t\x00\x00\x00' key_new = b'\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\xcb+\x93\x01\xa1l1\x97' pck_out = list(xor_s.pck_in([pck_packed,])) self.assertEqual( xor_c.xor_in.key, old_key, ) self.assertEqual( xor_s.xor_in.key, key_new, ) self.assertEqual( xor_c.xor_out.key, old_key, ) self.assertEqual( xor_s.xor_out.key, old_key, ) self.assertEqual( pck_out, [pck_unpacked,], ) pck_out = list(xor_s.pck_out(pck_out)) self.assertEqual( xor_c.xor_in.key, old_key, ) self.assertEqual( xor_s.xor_in.key, key_new, ) self.assertEqual( xor_c.xor_out.key, old_key, ) self.assertEqual( xor_s.xor_out.key, key_new, ) self.assertEqual( pck_out, [pck_packed,], )
def test_xor_set3(self): from l2.xor import XorInOut class PacketBuffer(): class Side(): xor = XorInOut(None) client = Side() server = Side() packet_buffer = PacketBuffer() xor_c = XorInOut(packet_buffer.client) xor_s = XorInOut(packet_buffer.server) xor_c.xor_in.packet_buffer = \ xor_c.xor_out.packet_buffer = \ xor_s.xor_in.packet_buffer = \ xor_s.xor_out.packet_buffer = packet_buffer old_key = b"\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\xc8'\x93\x01\xa1l1\x97" xor_c.xor_in.key = \ xor_c.xor_out.key = \ xor_s.xor_in.key = \ xor_s.xor_out.key = old_key pck_packed = b'\xa02=\xb6\xaf*\xf5U\xba\x9dz{\xbf\xd3\x91\x06\xdbK \xab\xc1C\xfd]\xd4\xf3\x01\x00\xd2\xbe\xeb|\xb3#,\xa7\n\xf1.\x8e\x125\x97\x96\x06j:\xad\x04\x94\xadTP\xd2\r\xadBe\xf6\xf7V:\n\x9d4\xa4\xab 9\xbbn\xce!\x06\x94\x954X\x7fv!N\x92\xd0\xcaH\x87\xd5\xc5\x1d;\x9cD\xef\xf7n\xaf\x7f\x88\xa3\xdd\xec\xd9*\xa6\xc1\x03\x01\xa0\xccY\xfeW\xc7\xc8CZ\xd8\x00\xa0Oh\xfb\xfa[7\x06\x918\xa8\xa7,5\xb7h\xc8\'\x00\x93\x923_n\xf9P\xc0\xcfD]\xdf\x00\xa0Oh\xfb\xfa[7\x06\x918\xa8\xa7,5\xb7h\xc8\'\x00\x93\x923_n\xf9P\xc0\xcfD]\xdf\x00\xa0Oh\xfb\xfa[7\x00\x97>\xae\xa1*3\xb1n\xce!\x06<<\x9d\xf1\r\x9b2\xa2\xad&?\xbdb\xc2-\n\x99\x989Ud\xf3Z\xca\xc5NW\xd5\n\xaaEb\xf1\xf0Q=\x0c\x9b2\xa2\xad&?\xbdb\xc2-\n\x99\x989Ud\xf3Z\xca\xc5NW\xd5\n\xaaEb\xf1\xf0Q=\x0c\x9b2\xa2\xad&?\xbd\xd7\xd1G\xa7\x1d\x12\xdb\xf7>\t\xc7\xe4\x01\xd9\xa3a\xbe\x1e\xf1\xd6ON\xef\x83\xb3$\x8d\x1d\x12\x99\x80\x02\xdd}\x92\xb5&S\xf2\xac\x9d9\x904;\x85\x9c(\xf7`\x8f\x90\x03;\x9a\xc6\xf7Q\xf8ZU\xed\xf4B\x9d\x08\xe7\xf6ed\xc5z\xe3u\xdc?0\x8a\x93 \xff>\xd1\xf6eR\x81\xf0\xc1V\xffo`\xeb\xf2p\xaf\x0e\xe1\xc6UT\xf5\x99\xa85\x9c\x0c\x03\x89\x90\x12\xcd\x9b\xe81]\x87\xee\x81\xb0)r\x1d\xedy\xe5\x8c\x02\x1aK4\xe7|D\xb1\x19\x17\'\xfa\xb5>\'\xa5z\xda5\x12\x81\x80!M|\xeaC\xd3\xdcWN\xcc\x13\xb3\\{\xe8\xe9H$\x15\x82+\xbb\xb4?&\xa4{\xdb4\x13\x80\x81 L}\xeaC\xd3\xdcWN\xcc\x13\xb3\\{\xe8\xe9H$\x15\x82+\xbb\xb4?&\xa4{\xdb4\x13\x80\x81 L}\xeaC\xd3\xdcWN\xcc\x13\xb5Z}\xee\xefN"\x13\x84-\xbd\xb2\x90\x88\n\xd5\xb8Vq\xe2\xe3B.\x1f\x88!\xb1\xbe5,\xaeq\xd1>\x19\x8a\x8b*Fw\xe0I\xd9\xd6]D\xc6\x19\xb9Vq\xe2\xe3B.\x1f\x88!\xb1\xbe5,\xaeq\xd1>\x19\x8a\x8b*Fw\xe0I\xd9\xd6]D\xc6\x19\xb9Vq\xe2\xe3B.\x1f\x88!\xb1\xbe5\xacv\xe9I\xa6\x81\x12\x132\x13b\xf5\\\xcc\xc3B[\xd9\x06\xa6In\xfd\xfc]1\x00\x97>\xae\xa1*' pck_unpacked = b"\t\x02\x00\x00\x00\x07\x00\x00'\x00t\x00e\x00s\x00t\x00d\x00s\x00a\x00A\x00a\x00s\x00d\x00f\x00\x00\x00\xb4y\x00\x00T\x001\x001\x00a\x00\x00\x006r\x1d\x00\x00\x00'\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00'\x00\x01\x00\x00\x00\x16\x9e\xfe\xff\xd3\xc9\x03\x00\x10\xf2\xd8\xff\xb5\xa6y\xc7)\x0eh@\xf8\xa0g\xb3\xeaSD@Q\x03\x00\x00\xa40\x00\x00\x00\x00\x00\x00\x07\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\xa9\x01\x00\x00\xcd\x01\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xa6^\xc7)\x0eh@\xf8\xa0g\xb3\xeaSc@\x00\x00'\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00t\x002\x003\x004\x005\x006\x007'8\x009\x000\x001\x002\x003\x004\x005'6\x00\x00\x00\xd3\xa8\x01\x00s\x001\x001\x00a'\x00\x006r\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\xf6\xbb\xfe\xff\xdb\xc8\x03\x00\x0e\xf2\xff\xff\x1f\x85\xebQ\xb8\x99X@\x9a\x99\x99\x99\x99\x99M@\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\xcd&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80X@\x00'\x00\x00\x00\x80M@\x00\x00\x00\x00\n\x00\x00\x00\x00'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" key_new = b'\xa9\x90\x0f\x8b\x19\x82\xdf\xa0<*\x93\x01\xa1l1\x97' pck_out = list(xor_s.pck_in([pck_packed,])) self.assertEqual( xor_c.xor_in.key, old_key, ) self.assertEqual( xor_s.xor_in.key, key_new, ) self.assertEqual( xor_c.xor_out.key, old_key, ) self.assertEqual( xor_s.xor_out.key, old_key, ) self.assertEqual( pck_out, [pck_unpacked,], ) pck_out = list(xor_s.pck_out(pck_out)) self.assertEqual( xor_c.xor_in.key, old_key, ) self.assertEqual( xor_s.xor_in.key, key_new, ) self.assertEqual( xor_c.xor_out.key, old_key, ) self.assertEqual( xor_s.xor_out.key, key_new, ) self.assertEqual( pck_out, [pck_packed,], )
def test_xor_set4(self): from l2.xor import XorInOut class PacketBuffer(): class Side(): xor = XorInOut(None) client = Side() server = Side() packet_buffer = PacketBuffer() xor_c = XorInOut(packet_buffer.client) xor_s = XorInOut(packet_buffer.server) xor_c.xor_in.packet_buffer = \ xor_c.xor_out.packet_buffer = \ xor_s.xor_in.packet_buffer = \ xor_s.xor_out.packet_buffer = packet_buffer old_key = b"\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\xef'\x93\x01\xa1l1\x97" xor_c.xor_in.key = \ xor_c.xor_out.key = \ xor_s.xor_in.key = \ xor_s.xor_out.key = old_key pck_packed = b'\xbb+$\xaf\xb64\xebK(\x02\x91\x901]l\xfbR\xc2\xcd' pck_unpacked =b'\x12\x00\x00\x00\x00\x00\x00\x00\x8c\r\x00\x00\x00\x00\x00\x00\x00\x00\x00' key_new = b'\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\x02(\x93\x01\xa1l1\x97' pck_out = list(xor_c.pck_in([pck_packed,])) self.assertEqual( xor_c.xor_in.key, key_new, ) self.assertEqual( xor_s.xor_in.key, old_key, ) self.assertEqual( xor_c.xor_out.key, old_key, ) self.assertEqual( xor_s.xor_out.key, old_key, ) self.assertEqual( pck_out, [pck_unpacked,], ) pck_out = list(xor_c.pck_out(pck_out)) self.assertEqual( xor_c.xor_in.key, key_new, ) self.assertEqual( xor_s.xor_in.key, old_key, ) self.assertEqual( xor_c.xor_out.key, key_new, ) self.assertEqual( xor_s.xor_out.key, old_key, ) self.assertEqual( pck_out, [pck_packed,], )
def test_xor_set2(self): from l2.xor import XorInOut class PacketBuffer(): class Side(): xor = XorInOut(None) client = Side() server = Side() packet_buffer = PacketBuffer() xor_c = XorInOut(packet_buffer.client) xor_s = XorInOut(packet_buffer.server) xor_c.xor_in.packet_buffer = \ xor_c.xor_out.packet_buffer = \ xor_s.xor_in.packet_buffer = \ xor_s.xor_out.packet_buffer = packet_buffer old_key = b"\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\xc8'\x93\x01\xa1l1\x97" xor_c.xor_in.key = \ xor_c.xor_out.key = \ xor_s.xor_in.key = \ xor_s.xor_out.key = old_key pck_packed = b'\x82an\xd4\xcd~\xa1`\xa8\x8f\x1c+\xf8\x89\xb8\x1f>\xae\xa1\x1cw\xe87e\xca\xc6EL\xed\x81\xb0&\x8f\x1f\x10{\\@\xbf' pck_unpacked = b'+s\x001\x001\x00a\x00\x00\x006r\x1d\x000\x88\x00\x006r\x1d\x00\xf2g+\x10\x08\x00\x00\x00\x01\x00\x00\x00\xe0>\x9e ' key_new = b"\xa9\x90\x0f\x8b\x19\x82\xdf\xa0\xef'\x93\x01\xa1l1\x97" pck_out = list(xor_c.pck_in([pck_packed,])) self.assertEqual( xor_c.xor_in.key, key_new, ) self.assertEqual( xor_s.xor_in.key, old_key, ) self.assertEqual( xor_c.xor_out.key, old_key, ) self.assertEqual( xor_s.xor_out.key, old_key, ) self.assertEqual( pck_out, [pck_unpacked,], ) pck_out = list(xor_c.pck_out(pck_out)) self.assertEqual( xor_c.xor_in.key, key_new, ) self.assertEqual( xor_s.xor_in.key, old_key, ) self.assertEqual( xor_c.xor_out.key, key_new, ) self.assertEqual( xor_s.xor_out.key, old_key, ) self.assertEqual( pck_out, [pck_packed,], )