rendered paste bodyimport 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()