All pastes #278547 Raw Edit

Someone

public text v1 · immutable
·published 2006-12-14 04:41 UTC
rendered paste body
import socket
import select
import bncs

__date__ = 'December.03.2006'
__author__ = 'topaz'

class pybbot:
    def __init__(self):
        pass
    
    def connect(self, server, port=6112):
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.connect((server, port))
        
        self.socket.send(chr(1))
        self.packet_builder = bncs.builder(self.socket)
        self.packet_builder.send_0x50()

    def recv_loop(self):
        packet_handler = bncs.handler(self.socket)

        buffer_data = ''
        buffer_length = 0

        while True:
            readable, writable, error = select.select([self.socket], [], [], 15)
            
            if readable <> []:
                temp_data = self.socket.recv(1024)
                recvd_len = len(temp_data)

                buffer_data += temp_data
                buffer_length += recvd_len

                while buffer_length >= 4:
                    packet_length = self.packet_builder.send_buffer.unpack_byte(buffer_data[2:3])

                    if (buffer_length < packet_length):
                        break
                    else:
                        print buffer_data[:packet_length]
                        packet_handler.parse_packet(buffer_data[:packet_length])
                        buffer_data = buffer_data[packet_length:]
                        buffer_length -= packet_length

if __name__ == '__main__':
    bot = pybbot()

    bot.connect('useast.battle.net')
    bot.recv_loop()