Exemplo n.º 1
0
 def handle_read(self):
     data = self.recv(4096)
     self.recvbuffer += data
     while len(self.recvbuffer) >= 4:
         if not self.header:
             if self.encrypted:
                 self.header = SERVER_HEADER_STRUCT.parse(self.crypt.decrypt(self.recvbuffer[:4]))
             else:
                 self.header = SERVER_HEADER_STRUCT.parse(self.recvbuffer[:4])
             
         # +2 for the size of the size itself
         if self.header.size+2 <= len(self.recvbuffer):
             # We have a packet
             pkt = self.recvbuffer[4:self.header.size+2]
             self.recvbuffer = self.recvbuffer[self.header.size+2:]
             logging.info('OPCODE : %d\nSIZE : %d' % (self.header.opcode, self.header.size))
             logging.debug('RECEIVED:\n' + convertool.strToProperHex(pkt))
             if self.header.opcode in self.handler:
                 self.handler[self.header.opcode](pkt, self.env)
                 
             self.env['world']['server'].write((self.header, pkt))
             self.header = None
                 
         else:
             # packet is not yet complete
             break
Exemplo n.º 2
0
 def handle_read(self):
     data = self.recv(4096)
     self.recvbuffer += data
     while len(self.recvbuffer) >= 6:
         if not self.header:
             if self.encrypted:
                 pass
                 #self.header = Header_struct.parse(RC4.stuff(self.recvbuffer[:6]))
             else:
                 self.header = CLIENT_HEADER_STRUCT.parse(self.recvbuffer[:6])
             
         # +2 for the size of the size itself
         if self.header.size+2 <= len(self.recvbuffer):
             # We have a packet
             pkt = self.recvbuffer[6:self.header.size+2]
             self.recvbuffer = self.recvbuffer[self.header.size+2:]
             print('OPCODE : %d' % (self.header.opcode))
             print('SIZE : %d' % (self.header.size))
             print(convertool.strToProperHex(pkt))
             if self.header.opcode in self.handler:
                 self.handler[opcode](pkt)
             else:
                 print('packet not handled %d' % self.header.opcode)
             self.header = None
                 
         else:
             # packet is not yet complete
             break
Exemplo n.º 3
0
 def handle_read(self):
     data = self.recv(4096)
     self.recvbuffer += data
     while len(self.recvbuffer) >= 6:
         if not self.header:
             if self.encrypted:
                 self.header = CLIENT_HEADER_STRUCT.parse(self.crypt.decrypt(self.recvbuffer[:6]))
             else:
                 self.header = CLIENT_HEADER_STRUCT.parse(self.recvbuffer[:6])
             
         # +2 for the size of the size itself
         if self.header.size+2 <= len(self.recvbuffer):
             # We have a packet
             pkt = self.recvbuffer[6:self.header.size+2]
             self.recvbuffer = self.recvbuffer[self.header.size+2:]
             logging.info('OPCODE : %d\nSIZE : %d' % (self.header.opcode, self.header.size))
             logging.debug('SENT:\n' + convertool.strToProperHex(pkt))
             if self.header.opcode in self.handler:
                 self.handler[self.header.opcode](pkt, self.env)
                 
             self.env['world']['client'].write((self.header, pkt))
             if self.header.opcode == 493:
                 self.encrypted = True
                 self.crypt = WorldCrypto(self.env['key'], 'server')
                 self.env['world']['client'].encrypted = True
                 self.env['world']['client'].crypt = WorldCrypto(self.env['key'], 'client')
             self.header = None
                 
         else:
             # packet is not yet complete
             break
Exemplo n.º 4
0
    def handle_read(self):
        data = self.recv(4096)
        self.recvbuffer += data
        while len(self.recvbuffer) >= 6:
            if not self.header:
                if self.encrypted:
                    pass
                    #self.header = Header_struct.parse(RC4.stuff(self.recvbuffer[:6]))
                else:
                    self.header = CLIENT_HEADER_STRUCT.parse(
                        self.recvbuffer[:6])

            # +2 for the size of the size itself
            if self.header.size + 2 <= len(self.recvbuffer):
                # We have a packet
                pkt = self.recvbuffer[6:self.header.size + 2]
                self.recvbuffer = self.recvbuffer[self.header.size + 2:]
                print('OPCODE : %d' % (self.header.opcode))
                print('SIZE : %d' % (self.header.size))
                print(convertool.strToProperHex(pkt))
                if self.header.opcode in self.handler:
                    self.handler[opcode](pkt)
                else:
                    print('packet not handled %d' % self.header.opcode)
                self.header = None

            else:
                # packet is not yet complete
                break
Exemplo n.º 5
0
 def handle_read(self):
     data = self.recv(4096)
     if data:
         print('C>P RECEIVED %d bytes:' % (len(data)))
         print(convertool.strToProperHex(data))
         opcode = ord(data[0])
         if opcode in self.handler:
             self.handler[opcode](data)
Exemplo n.º 6
0
 def handle_read(self):
     data = self.recv(1024)
     if data:
         print('RECEIVED %d bytes:' % (len(data)))
         print(convertool.strToProperHex(data))
         opcode = ord(data[0])
         if opcode in self.handler:
             self.handler[opcode](data)
Exemplo n.º 7
0
 def handle_read(self):
     data = self.recv(4096)
     if data:
         opcode = ord(data[0])
         if opcode in onRecvFilters:
             for f in onRecvFilters[opcode]:
                 data = f(data, self.env)
         self.env['server'].write(data)
         print(strToProperHex(data))
Exemplo n.º 8
0
 def handle_read(self):
     data = self.recv(4096)
     if data:
         opcode = ord(data[0])
         if opcode in onRecvFilters:
             for f in onRecvFilters[opcode]:
                 data = f(data, self.env)
         self.env['server'].write(data)
         print(strToProperHex(data))
Exemplo n.º 9
0
 def handle_write(self):
     if self.writebuffer:
         data = self.writebuffer.pop(0)
         self.send(data)
         print('P>C SENT %d bytes:' % (len(data)))
         print(convertool.strToProperHex(data))
Exemplo n.º 10
0
 def handle_write(self):
     if self.writebuffer:
         data = self.writebuffer.pop(0)
         self.send(data)
         print('P>C SENT %d bytes:' % (len(data)))
         print(convertool.strToProperHex(data))