Beispiel #1
0
 def _connect(self):
     try:
         self._socket.close()
     except:
         pass
     self._socket = socks.socksocket()
     self._socket.settimeout(5)
     try:
         self._proxtypeserver, self._proxport = self._proxy.split(":")
         self._proxtype, self._proxserver = self._proxtypeserver.split("|")
         self._socket.setproxy(eval("socks.PROXY_TYPE_" + self._proxtype), self._proxserver, int(self._proxport))
     except:
         ProxyManager.badProxy(self._proxy)
         pass
     try:
         _serverip, _serverport = self._server
         self._socket.connect((_serverip, _serverport))
         self._socket.sendall("\x02" + CraftString(self._nickname + ";" + _serverip + ":" + str(_serverport)))
     except:
         ProxyManager.badProxy(self._proxy)
         return
     try:
         self._socket.settimeout(35)
         kz = self._startLoop()
         if kz == "KE":
             self._callback("KE", self)
     except:
         if self._sdebug:
             raise
         return
Beispiel #2
0
 def __init__(
     self,
     nick,
     password="",
     proxy="",
     server="",
     isOffline=False,
     printchat=False,
     debug=False,
     attacks=[],
     prependFlood="",
     msg="",
     count=5,
     callback=dummy,
     eventHook=None,
 ):
     self._queuedMessages = list()
     self._kre = False
     self._eHook = eventHook
     self._connreconn = False
     self._msg = msg
     self._count = count
     self._nickname = nick
     self._password = password
     self._printChat = printchat
     self._server = server
     self._isOffline = isOffline
     if proxy != None:
         self._proxy = ProxyManager.getProxy()
     self._loggedIn = False
     self._sdebug = debug
     self._attacks = attacks
     self._prependFlood = prependFlood
     self._callback = callback
     self._isConnected = False
Beispiel #3
0
    def _connect(self):
        try:
            self._socket.close()
        except:
            pass

        if self._password != "":
            print self._password
            self._session = Session.from_credentials(self._nickname,
                                                     self._password)
            print self._password
        self._socket = socks.socksocket()
        self._socket.settimeout(5)
        try:
            self._proxtype = self._proxy.split('|')[0]
            self._proxport = self._proxy.split(':')[1]
            self._proxserver = self._proxy.split(':')[0].split('|')[1]
            self._socket.setproxy(eval("socks.PROXY_TYPE_" + self._proxtype),
                                  self._proxserver, int(self._proxport))
            #self._socket.setproxy(None, self._proxserver, int(self._proxport))
        except:
            ProxyManager.badProxy(self._proxy)
        try:
            _serverip = self._server[0]
            _serverport = self._server[1]
            self._socket.connect((_serverip, _serverport))
            self.SendPacket('\x00' + encode_varint(self._protonum) +
                            CraftString(_serverip) +
                            struct.pack('>h', _serverport) + encode_varint(2))
            self.SendPacket('\x00' + CraftString(self._nickname))
        except:
            ProxyManager.badProxy(self._proxy)
            return
        try:
            self._socket.settimeout(35)
            kz = self._startLoop()
            if kz == 'KE':
                self._callback('KE', self)
        except Exception as e:
            print str(e)
            if self._sdebug:
                raise
            return
Beispiel #4
0
    def _connect(self):
        try:
            self._socket.close()
        except:
            pass

        if self._password != "":
            print self._password
            self._session = Session.from_credentials(self._nickname, self._password)
            print self._password
        self._socket = socks.socksocket()
        self._socket.settimeout(5)
        try:
            self._proxtype = self._proxy.split('|')[0]
            self._proxport = self._proxy.split(':')[1]
            self._proxserver = self._proxy.split(':')[0].split('|')[1]
            self._socket.setproxy(eval("socks.PROXY_TYPE_" + self._proxtype), self._proxserver, int(self._proxport))
            #self._socket.setproxy(None, self._proxserver, int(self._proxport))
        except:
            ProxyManager.badProxy(self._proxy)
        try:
            _serverip=self._server[0]
            _serverport = self._server[1]
            self._socket.connect((_serverip, _serverport))
            self.SendPacket('\x00' + encode_varint(self._protonum) + CraftString(_serverip) + struct.pack('>h', _serverport)+encode_varint(2))
            self.SendPacket('\x00' + CraftString(self._nickname))
        except:
            ProxyManager.badProxy(self._proxy)
            return
        try:
            self._socket.settimeout(35)
            kz = self._startLoop()
            if kz == 'KE':
                self._callback('KE', self)
        except Exception as e:
            print str(e)
            if self._sdebug:
                raise
            return
Beispiel #5
0
 def __init__(self,
              nick,
              password='',
              protonum=210,
              proxy='',
              server='',
              hostx='',
              portx='',
              isOffline=False,
              printchat=False,
              debug=False,
              attacks=[],
              prependFlood='',
              msg='',
              count=5,
              callback=dummy,
              eventHook=None):
     self._queuedMessages = list()
     self._kre = False
     self._eHook = eventHook
     self._connreconn = False
     self._msg = msg
     self._count = count
     self._nickname = nick
     self._password = password
     self._protonum = protonum
     self._printChat = printchat
     self._server = server
     self._isOffline = isOffline
     self._hostx = hostx
     self._portx = portx
     if proxy != None:
         self._proxy = ProxyManager.getProxy()
     self._loggedIn = False
     self._sdebug = debug
     self._attacks = attacks
     self._prependFlood = prependFlood
     self._callback = callback
     self._isConnected = False
     return
Beispiel #6
0
 def __init__(self, nick, password = '', protonum = 210, proxy = '', server = '', hostx = '', portx = '', isOffline = False, printchat = False, debug = False, attacks = [], prependFlood = '', msg = '', count = 5, callback = dummy, eventHook = None):
     self._queuedMessages = list()
     self._kre = False
     self._eHook = eventHook
     self._connreconn = False
     self._msg = msg
     self._count = count
     self._nickname = nick
     self._password = password
     self._protonum = protonum
     self._printChat = printchat
     self._server = server
     self._isOffline = isOffline
     self._hostx = hostx
     self._portx = portx
     if proxy != None:
         self._proxy = ProxyManager.getProxy()
     self._loggedIn = False
     self._sdebug = debug
     self._attacks = attacks
     self._prependFlood = prependFlood
     self._callback = callback
     self._isConnected = False
     return
Beispiel #7
0
 def _runLoop(self):
     while True:
         try:
             _packet = self._getBytes(1)
         except:
             _packet = "ER"
         if self._count == 0:
             self._action()
             self._count = 20
         self._count = self._count - 1
         if self._eHook != None:
             if self._eHook(_packet, self) == True:
                 continue
         if _packet == "\x00":
             self._debug("Ping")
             self._socket.sendall("\x00" + self._getBytes(4))
         elif _packet == "\x01":
             self._debug("Login packet")
             self._log("Connected!")
             self._getBytes(4)
             self._readStringLong()
             self._readStringLong()
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x02":
             # Handshake
             ProxyManager.coolProxy(self._proxy)
             server_packet = self._readStringLong()
             self._debug("Handshake packet [" + server_packet + "]")
             self._isOffline = True
             self._isConnected = True
             if server_packet == "-":
                 server_packet = "+"
             if server_packet != "+" and self._password != "":
                 self._isOffline = False
                 while True:
                     _data = "user="******"&password="******"&version=12"
                     opener = urllib2.urlopen
                     if self._proxy != None:
                         opener = urllib2.build_opener(
                             urllib2.ProxyHandler({"https": self._proxserver + ":" + self._proxport})
                         )
                         openURL = opener.open
                     _handle = openURL("https://login.minecraft.net/", data=_data)
                     _retdata = _handle.read().split(":")
                     try:
                         _version, _deprecated, self._nickname, self._sessionId = _retdata
                     except:
                         self._log("Error! [" + ":".join(_retdata) + "]")
                         if _retdata.find("Too many") == -1:
                             return "KE"
                         continue
                     _answer = urllib2.urlopen(
                         "http://session.minecraft.net/game/joinserver.jsp?user="******"&sessionId="
                         + self._sessionId
                         + "&serverId="
                         + server_packet
                     ).read()
                     if _answer != "OK":
                         self._log("Oops! [" + _answer + "]")
                         self._sessionId = ""
                         continue
                     self._loggedIn = True
                     break
             self._socket.sendall(
                 "\x01\x00\x00\x00\x1d"
                 + CraftString(self._nickname)
                 + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
             )
             self._socket.settimeout(20)
         elif _packet == "\x03":
             msg = self._readStringLong()
             if self._printChat == True:
                 self._log("Chat message [" + msg + "]")
             else:
                 self._debug("Chat message [" + msg + "]")
             if self._loggedIn == False:
                 if msg.find("login") != -1:
                     self._log("Logging in!")
                     self._queuedMessages.append("/login omfg1336")
                     self._loggedIn = True
                 if msg.find("register") != -1:
                     self._log("Registering! [" + msg + "]")
                     self._queuedMessages.append("/register omfg1336")
                     self._queuedMessages.append("/setpassword omfg1336")
                     self._queuedMessages.append("/register omfg1336 omfg1336")
                     self._queuedMessages.append("/login omfg1336")
                     self._loggedIn = True
         elif _packet == "\x04":
             self._debug("Time Packet")
             self._getBytes(8)
         elif _packet == "\x05":
             self._debug("Entity Equipment")
             self._getBytes(10)
         elif _packet == "\x06":
             self._debug(
                 "Spawn Position [X:"
                 + str(int(binascii.b2a_hex(self._getBytes(4)), 16))
                 + ", Y:"
                 + str(int(binascii.b2a_hex(self._getBytes(4)), 16))
                 + ", Z:"
                 + str(int(binascii.b2a_hex(self._getBytes(4)), 16))
                 + "]"
             )
         elif _packet == "\x08":
             self._debug("Health Update")
             self._getBytes(2)
             self._getBytes(2)
             self._getBytes(4)
         elif _packet == "\x09":
             self._debug("Respawn")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(2)
             self._debug(self._readStringLong())
         elif _packet == "\x0D":
             self._debug("Player Position & Look")
             self._getBytes(8)
             self._getBytes(8)
             self._getBytes(8)
             self._getBytes(8)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
         elif _packet == "\x11":
             self._debug("Use Bed")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
         elif _packet == "\x12":
             self._debug("Animation")
             self._getBytes(4)
             self._getBytes(1)
         elif _packet == "\x14":
             self._getBytes(5)
             self._debug("Player Spawn [" + self._readString() + "]")
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(2)
         elif _packet == "\x15":
             self._debug("Pickup Spawn")
             self._getBytes(4)
             self._getBytes(2)
             self._getBytes(1)
             self._getBytes(2)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x16":
             self._debug("Collect Item")
             self._getBytes(4)
             self._getBytes(4)
         elif _packet == "\x17":
             # assert self._getBytes(1) == "\x00"
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             lolz = "Normal"
             if self._getBytes(4) != "\x00\x00\x00\x00":
                 lolz = "Fireball"
                 self._getBytes(2)
                 self._getBytes(2)
                 self._getBytes(2)
             self._debug("Add Object/Vehicle [" + lolz + "]")
         elif _packet == "\x18":
             self._debug("Mob Spawn")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(1)
             self._genMetadata()
         elif _packet == "\x19":
             self._getBytes(4)
             self._debug("Painting [" + self._readStringLong() + "]")
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
         elif _packet == "\x1A":
             self._debug("Experience Drop")
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(2)
         elif _packet == "\x1C":
             self._debug("Entity Velocity")
             self._getBytes(4)
             self._getBytes(2)
             self._getBytes(2)
             self._getBytes(2)
         elif _packet == "\x1D":
             self._debug("Destroy Entity")
             self._getBytes(4)
         elif _packet == "\x1E":
             self._debug("Entity")
             self._getBytes(4)
         elif _packet == "\x1F":
             self._debug("Entity Relative Move")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x20":
             self._debug("Entity Look")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x21":
             self._debug("Entity Look and Relative Move")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x22":
             self._debug("Entity Teleport")
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x23":
             self._debug("Entity Head Look")
             self._getBytes(4)
             self._getBytes(1)
         elif _packet == "\x26":
             self._debug("Entity Status")
             self._getBytes(4)
             self._getBytes(1)
         elif _packet == "\x27":
             self._debug("Entity Attach")
             self._getBytes(4)
             self._getBytes(4)
         elif _packet == "\x28":
             self._debug("Entity Metadata")
             self._getBytes(4)
             self._genMetadata()
         elif _packet == "\x29":
             self._debug("Entity Effect")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
             self._getBytes(2)
         elif _packet == "\x2A":
             self._debug("Remove Entity Effect")
             self._getBytes(4)
             self._getBytes(1)
         elif _packet == "\x2B":
             self._debug("Experience Update")
             self._getBytes(4)
             self._getBytes(2)
             self._getBytes(2)
         elif _packet == "\x32":
             self._debug("Pre-Chunk Packet")
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
         elif _packet == "\x33":
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(2)
             self._getBytes(2)
             lent = struct.unpack(">I", self._getBytes(4))[0]
             self._getBytes(4)
             self._debug("Chunk Update [" + str(lent) + "]")
             self._getBytes(lent)
         elif _packet == "\x34":
             self._debug("Multi Block Change")
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             lentk = int(binascii.b2a_hex(self._getBytes(4)), 16)
             self._getBytes(lentk)
         elif _packet == "\x35":
             self._debug("Block Change")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x36":
             self._debug("Block Action")
             self._getBytes(4)
             self._getBytes(2)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x3C":
             self._debug("Explosion")
             self._getBytes(8)
             self._getBytes(8)
             self._getBytes(8)
             self._getBytes(4)
             lent = int(binascii.b2a_hex(self._getBytes(4)), 16)
             self._getBytes(lent)
             self._getBytes(lent)
             self._getBytes(lent)
         elif _packet == "\x3D":
             self._debug("Sound/particle effect")
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
             self._getBytes(4)
         elif _packet == "\x46":
             self._debug("New/Inval_packet State")
             self._getBytes(1)
             self._getBytes(1)
         elif _packet == "\x47":
             self._debug("Thunderbolt")
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
         elif _packet == "\x64":
             self._getBytes(1)
             self._getBytes(1)
             self._debug("Open window [" + self._readString() + "]")
             self._getBytes(1)
         elif _packet == "\x65":
             self._debug("Close Window")
             self._getBytes(1)
         elif _packet == "\x66":
             pass
         elif _packet == "\x67":
             self._getBytes(3)
             self._debug("Set Slot")
             self._readSlot()
         elif _packet == "\x68":
             self._getBytes(1)
             self._debug("Set Window Items")
             list = int(binascii.b2a_hex(self._getBytes(2)), 16)
             while list != 0:
                 self._readSlot()
                 list = list - 1
         elif _packet == "\x69":
             pass
         elif _packet == "\x6A":
             pass
         elif _packet == "\x6C":
             pass
         elif _packet == "\x82":
             self._getBytes(4)
             self._getBytes(2)
             self._getBytes(4)
             a = self._readStringLong()
             b = self._readStringLong()
             c = self._readStringLong()
             d = self._readStringLong()
             self._debug("Update Sign [" + a + ":" + b + ":" + c + ":" + d + "]")
         elif _packet == "\x83":
             self._debug("Item Data")
             self._getBytes(2)
             self._getBytes(2)
             sz = ord(self._getBytes(1))
             self._getBytes(sz)
         elif _packet == "\x84":
             self._debug("Update Tile Entity")
             self._getBytes(4)
             self._getBytes(2)
             self._getBytes(4)
             self._getBytes(1)
             self._getBytes(4)
             self._getBytes(4)
             self._getBytes(4)
         elif _packet == "\xC8":
             self._debug("Increment Statistic")
             self._getBytes(4)
             self._getBytes(1)
         elif _packet == "\xC9":
             self._getBytes(1)
             self._debug("Player List Item [" + self._readString() + "]")
             self._getBytes(1)
             self._getBytes(2)
         elif _packet == "\xCA":
             self._debug("Player Abilities")
             self._getBytes(4)
         elif _packet == "\xFA":
             self._debug("Plugin message [" + self._readStringLong() + "]")
             sz = int(binascii.b2a_hex(self._getBytes(2)), 16)
             self._getBytes(sz)
         elif _packet == "\xFF":
             rl = self._readStringLong()
             self._log("Disconnected! [" + rl + "]")
             self._isConnected = False
             try:
                 self._socket.close()
             except:
                 pass
             return
         elif _packet == "":
             pass
         elif _packet == "ER":
             if self._isConnected:
                 self._log("Disconnected! [Connection Error]")
             try:
                 if "pFlood" in self._attacks and self._isConnected:
                     self._isConnected = False
                 else:
                     self._socket.close()
             except:
                 pass
             self._isConnected = False
             return
         else:
             if self._isConnected:
                 self._log("Disconnected! [Protocol Error]")
             try:
                 self._socket.close()
                 self._isConnected = False
             except:
                 pass
             self._debug("Unmatched Packet [" + binascii.b2a_hex(_packet) + "], out of sync?")
Beispiel #8
0


    
    
    
    


def checkIP(PM):
    s = requests.Session()
    PM.proxyUp(s)
    print s.get("http://httpbin.org/ip").text


def recoverMail():
    pass


PM = ProxyManager()
PM.loadProxies(fromFile = True, checkProxies=False)
CS = CaptchaSolver()
CS.startThread(PM)
friendIDs = parseFriends(None)
 
 
FM = FriendMiner()
FM.mineFriends(friendIDs, PM, CS)


Beispiel #9
0
    def _runLoop(self):
        while True:
            try:
                self._sdebug = True
                self._packet = None
                self._packet_len = self._readVarint()
                if self._packet_len == None or self._packet_len <= 0:
                    _packet_id = 'ER'
                if self._threshold != -1:
                    data_lenght = self._readVarint()
                    compressed = self._getPacket()
                    if data_lenght == 0:
                        self._packet = io.BytesIO(compressed)
                    else:
                        self._packet = io.BytesIO(compressed.decode('zlib'))
                    _packet_id = self._readVarint()
                else:
                    tmp_p = self._getPacket()
                    self._packet = io.BytesIO(tmp_p)
                    _packet_id = self._readVarint()
                self._old_packet_id = _packet_id
            except Exception as e:
                self._log(
                    'Nao conseguiu conectar (Servidor caiu ou bloqueou o IP)')
                _packet_id = 'ER'
                return
            if self._isConnected == False:

                if _packet_id == 0x00:
                    rl = self._readString()
                    self._log('Disconnected! [' + rl + ']')
                    self._isConnected = False
                    try:
                        self._socket.close()
                    except:
                        pass

                    return
                elif _packet_id == 0x01:
                    self._debug('Encryption Request')
                    server_id = self._readString()
                    print server_id
                    shared = self._read_short_array()
                    print shared
                    token = self._read_short_array()
                    print token
                    if shared != '':
                        rsa_key = decode_public_key(shared)
                        shared_secret = generate_shared_secret()
                        print shared_secret
                        response_token = encrypt_with_public_key(
                            token, rsa_key)
                        encrypted_shared_secret = encrypt_with_public_key(
                            shared_secret, rsa_key)
                        server_hash = make_server_hash(
                            server_id,
                            shared_secret,
                            rsa_key,
                        )
                        join_server(self._session, server_hash)
                        self._SendEncrypt(encrypted_shared_secret,
                                          response_token)
                        self._AES = generated_cipher(shared_secret)
                    else:
                        self._SendEncrypt('', token)
                elif _packet_id == 0x02:
                    ProxyManager.coolProxy(self._proxy)
                    self._debug('Login Success')
                    self._log('Connected!')
                    self._debug(self._readString())
                    self._debug(self._readString())
                    self._isConnected = True
                    self.SendPacket(
                        '\x15\x05\x65\x6e\x5f\x55\x53\x0c\x00\x01\x02\x01')
                    self.SendPacket(
                        '\x13\x17\x08\x4d\x43\x7c\x42\x72\x61\x6e\x64\x00\x07\x76\x61\x6e\x69\x6c\x6c\x61'
                    )
                elif _packet_id == 0x03:
                    self._debug('Set Compression')
                    self._threshold = self._readVarint()
            else:
                if self._count == 0:
                    self._action()
                    self._count = 10
                self._count = self._count - 1
                #if self._eHook != None:
                #   if self._eHook(_packet_id, self) == True:
                #      continue
                if _packet_id == 0x00:
                    self._debug('Ping')
                    self.SendPacket(self._readVarint())
                elif _packet_id == 0x01:
                    self._debug('Join Game')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._readString()
                elif _packet_id == 0x02:
                    self._debug('Chat Message')
                    msg = self._readString()
                    if self._printChat == True:
                        self._log('Chat message [' + msg + ']')
                    else:
                        self._debug('Chat message [' + msg + ']')
                    if self._loggedIn == False:
                        if msg.find('login') != -1:
                            self._log('Logging in! [' + msg + ']')
                            self._queuedMessages.append('/login omfg1336')
                            self._loggedIn = True
                        if msg.find('register') != -1:
                            self._log('Registering! [' + msg + ']')
                            self._queuedMessages.append(
                                '/register omfg1336 omfg1336')
                            self._queuedMessages.append('/register omfg1336')
                            self._queuedMessages.append(
                                '/setpassword omfg1336')
                            self._queuedMessages.append('/login omfg1336')
                            self._loggedIn = True
                            self._log('Done')
                elif _packet_id == 0x03:
                    self._debug('Time Update')
                    self._getBytes(8)
                    self._getBytes(8)
                elif _packet_id == 0x04:
                    self._debug('Entity Equipment')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._readSlot()
                elif _packet_id == 0x05:
                    x = self._getBytes(4)
                    y = self._getBytes(4)
                    z = self._getBytes(4)
                    self._debug('Spawn Position [X:' +
                                str(int(binascii.b2a_hex(x), 16)) + ', Y:' +
                                str(int(binascii.b2a_hex(y), 16)) + ', Z:' +
                                str(int(binascii.b2a_hex(z), 16)) + ']')
                elif _packet_id == 0x06:
                    self._debug('Update Health')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                elif _packet_id == 0x07:
                    self._debug('Respawn')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._debug(self._readString())
                elif _packet_id == 0x08:
                    self._debug('Player Position And Look')
                    self._getBytes(8)
                    self._getBytes(8)
                    self._getBytes(8)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x09:
                    self._debug('Held Item Change')
                    self._getBytes(1)
                elif _packet_id == 0x0A:
                    self._debug('Use Bed')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(4)
                elif _packet_id == 0x0B:
                    self._debug('Animation')
                    self._readVarint()
                    self._getBytes(1)
                elif _packet_id == 0x0C:
                    pass
                elif _packet_id == 0x0D:
                    self._debug('Collect Item')
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x0E:
                    self._debug('Spawn Object')
                    self._readVarint()
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    lolz = 'Normal'
                    if self._getBytes(4) != '\x00\x00\x00\x00':
                        lolz = 'Projectile'
                        self._getBytes(2)
                        self._getBytes(2)
                        self._getBytes(2)
                    self._debug('Add Object/Vehicle [' + lolz + ']')
                elif _packet_id == 0x0F:
                    self._debug('Spawn Mob')
                    self._readVarint()
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(2)
                    self._getBytes(2)
                    self._genMetadata()
                elif _packet_id == 0x10:
                    self._readVarint()
                    self._debug('Painting [' + self._readString() + ']')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x11:
                    self._debug('Spawn Experience Orb')
                    self._readVarint()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(2)
                elif _packet_id == 0x12:
                    self._debug('Entity Velocity')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(2)
                    self._getBytes(2)
                elif _packet_id == 0x13:
                    self._debug('Destroy Entities')
                    leng = int(binascii.b2a_hex(self._getBytes(1)), 16)
                    for i in range(leng):
                        self._getBytes(4)
                elif _packet_id == 0x14:
                    self._debug('Entity')
                    self._getBytes(4)
                elif _packet_id == 0x15:
                    self._debug('Entity Relative Move')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x16:
                    self._debug('Entity Look')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x17:
                    self._debug('Entity Look and Relative Move')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x18:
                    self._debug('Entity Teleport')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x19:
                    self._debug('Entity Head Look')
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x1A:
                    self._debug('Entity Status')
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == "\x1B":
                    self._debug('Attach Entity')
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x1C:
                    self._debug('Entity Metadata')
                    self._getBytes(4)
                    self._genMetadata()
                elif _packet_id == 0x1D:
                    self._debug('Entity Effect')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(2)
                elif _packet_id == 0x1E:
                    self._debug('Remove Entity Effect')
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x1F:
                    self._debug('Set Experience')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(2)
                elif _packet_id == 0x20:
                    self._debug('Entity Properties')
                elif _packet_id == 0x21:
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(2)
                    lent = int(binascii.b2a_hex(self._getBytes(4)), 16)
                    self._debug('Chunk Update [' + str(lent) + ']')
                    self._getBytes(lent)
                elif _packet_id == 0x22:
                    self._debug('Multi Block Change')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(2)
                    lentk = int(binascii.b2a_hex(self._getBytes(4)), 16)
                    self._getBytes(lentk)
                elif _packet_id == 0x23:
                    self._debug('Block Change')
                    pass
                elif _packet_id == 0x24:
                    self._debug('Block Action')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._readVarint()
                elif _packet_id == 0x25:
                    self._debug('Block Break Animation')
                    self._readVarint()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x26:
                    self._debug('Map Chunk Bulk')
                elif _packet_id == 0x27:
                    self._debug('Explosion')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    lent = int(binascii.b2a_hex(self._getBytes(4)), 16)
                    self._getBytes(lent * 3)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x28:
                    self._debug('Effect')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x29:
                    self._debug('Named Sound Effect')
                    self._readString()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x2A:
                    self._debug('New/Inval_packet State')
                    self._readString()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x2B:
                    self._debug('Change Game State')
                    self._getBytes(1)
                    self._getBytes(4)
                elif _packet_id == 0x2C:
                    self._debug('Spawn Global Entity - thunderbolt')
                    self._readVarint()
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x2D:
                    self._getBytes(1)
                    WType = int(binascii.b2a_hex(self._getBytes(1)), 16)
                    self._debug('Open window [' + self._readString() + ']')
                    self._getBytes(1)
                    self._getBytes(1)
                    if WType == 1:
                        self._getBytes(4)
                elif _packet_id == 0x2E:
                    self._debug('Close Window')
                    self._getBytes(1)
                elif _packet_id == 0x2F:
                    self._getBytes(1)
                    self._getBytes(2)
                    self._debug('Set Slot')
                    self._readSlot()
                elif _packet_id == 0x30:
                    self._getBytes(1)
                    self._debug('Window Items')
                    lens = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    while lens != 0:
                        self._readSlot()
                        lens = lens - 1

                elif _packet_id == 0x31:
                    self._debug('Window Property')
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(2)
                elif _packet_id == 0x32:
                    self._debug('Confirm Transaction')
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(1)
                elif _packet_id == 0x33:
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                    a = self._readString()
                    b = self._readString()
                    c = self._readString()
                    d = self._readString()
                    self._debug('Update Sign [' + a + ':' + b + ':' + c + ':' +
                                d + ']')
                elif _packet_id == 0x34:
                    self._debug('Maps')
                    self._readVarint()
                    leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    self._getBytes(leng)
                elif _packet_id == 0x35:
                    self._debug('Update Block Entity')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                    self._getBytes(1)
                    leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    if leng > 0:
                        self._getBytes(leng)
                elif _packet_id == 0x36:
                    self._debug('Sign Editor Open')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x37:
                    self._debug('Increment Statistic')
                    leng = self._readVarint()
                    for i in range(leng):
                        self._readString()
                        self._readVarint()
                elif _packet_id == 0x38:
                    self._debug('Player List Item [' + self._readString() +
                                ']')
                    self._getBytes(1)
                    self._getBytes(2)
                elif _packet_id == 0x39:
                    self._debug('Player Abilities')
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x3A:
                    self._debug('Tab-Complete')
                    self._readVarint()
                    self._readString()
                elif _packet_id == 0x3B:
                    self._debug('Scoreboard Objective')
                    self._readString()
                    self._readString()
                    self._getBytes(1)
                elif _packet_id == 0x3C:
                    self._debug('Update Score')
                    self._readString()
                    update = int(binascii.b2a_hex(self._getBytes(1)), 16)
                    if update != 1:
                        self._readString()
                        self._getBytes(4)
                elif _packet_id == 0x3D:
                    self._debug('Display Scoreboard')
                    self._getBytes(1)
                    self._readString()
                elif _packet_id == 0x3E:
                    self._debug('Teams')
                    self._readString()
                    mode = int(binascii.b2a_hex(self._getBytes(1)), 16)
                    if mode == 0:
                        self._readString()
                        self._readString()
                        self._readString()
                        self._getBytes(1)
                        leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                        self._getBytes(leng)
                    if mode == 2:
                        self._readString()
                        self._readString()
                        self._readString()
                        self._getBytes(1)
                    if mode == 3:
                        leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                        self._getBytes(leng)
                    if mode == 4:
                        leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                        self._getBytes(leng)
                elif _packet_id == 0x3F:
                    self._debug('Plugin message [' + self._readString() + ']')
                    sz = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    self._getBytes(sz)
                else:
                    if _packet_id == 0x40:
                        rl = self._readString()
                        self._log('Disconnected! [' + rl + ']')
                        self._isConnected = False
                        try:
                            self._socket.close()
                        except:
                            pass
                        return
                    if _packet_id == '':
                        pass
                    else:
                        if _packet_id == 'ER':
                            if self._isConnected:
                                self._log('Disconnected! [Connection Error]' +
                                          self._old_packet_id)
                            try:
                                if 'pFlood' in self._attacks and self._isConnected:
                                    self._isConnected = False
                                else:
                                    self._socket.close()
                            except:
                                pass

                            self._isConnected = False
                            return
        return
Beispiel #10
0
    def _runLoop(self):
        while True:
            try:
                self._sdebug =True
                self._packet = None
                self._packet_len = self._readVarint()
                if self._packet_len == None or self._packet_len <= 0:
                    _packet_id = 'ER'
                if self._threshold != -1:
                    data_lenght = self._readVarint()
                    compressed = self._getPacket()
                    if data_lenght==0:
                        self._packet = io.BytesIO(compressed)
                    else:
                        self._packet = io.BytesIO(compressed.decode('zlib'))
                    _packet_id = self._readVarint()
                else:
                    tmp_p = self._getPacket()
                    self._packet = io.BytesIO(tmp_p)
                    _packet_id = self._readVarint()
                self._old_packet_id = _packet_id
            except Exception as e:
                print str(e)
                self._log('Disconnected!')
                _packet_id = 'ER'
                return
            if self._isConnected ==False:

                if _packet_id == 0x00:
                    rl = self._readString()
                    self._log('Disconnected! [' + rl + ']')
                    self._isConnected = False
                    try:
                        self._socket.close()
                    except:
                        pass

                    return
                elif _packet_id == 0x01:
                    self._debug('Encryption Request')
                    server_id = self._readString()
                    print server_id
                    shared = self._read_short_array()
                    print shared
                    token = self._read_short_array()
                    print token
                    if shared != '':
                        rsa_key = decode_public_key(shared)
                        shared_secret = generate_shared_secret()
                        print shared_secret
                        response_token = encrypt_with_public_key(
                            token,
                            rsa_key
                        )
                        encrypted_shared_secret = encrypt_with_public_key(
                            shared_secret,
                            rsa_key
                        )
                        server_hash = make_server_hash(
                            server_id,
                            shared_secret,
                            rsa_key,
                        )
                        join_server(self._session, server_hash)
                        self._SendEncrypt(encrypted_shared_secret,response_token)
                        self._AES = generated_cipher(shared_secret)
                    else:
                        self._SendEncrypt('',token)
                elif _packet_id == 0x02:
                    ProxyManager.coolProxy(self._proxy)
                    self._debug('Login Success')
                    self._log('Connected!')
                    self._debug(self._readString())
                    self._debug(self._readString())
                    self._isConnected = True
                    self.SendPacket('\x15\x05\x65\x6e\x5f\x55\x53\x0c\x00\x01\x02\x01')
                    self.SendPacket('\x13\x17\x08\x4d\x43\x7c\x42\x72\x61\x6e\x64\x00\x07\x76\x61\x6e\x69\x6c\x6c\x61')
                elif _packet_id == 0x03:
                    self._debug('Set Compression')
                    self._threshold = self._readVarint()
            else:
                if self._count == 0:
                    self._action()
                    self._count = 10
                self._count = self._count - 1
                #if self._eHook != None:
                #   if self._eHook(_packet_id, self) == True:
                #      continue
                if _packet_id == 0x00:
                    self._debug('Ping')
                    self.SendPacket(self._readVarint())
                elif _packet_id == 0x01:
                    self._debug('Join Game')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._readString()
                elif _packet_id == 0x02:
                    self._debug('Chat Message')
                    msg = self._readString()
                    if self._printChat == True:
                        self._log('Chat message [' + msg + ']')
                    else:
                        self._debug('Chat message [' + msg + ']')
                    if self._loggedIn == False:
                        if msg.find('login') != -1:
                            self._log('Logging in! [' + msg + ']')
                            self._queuedMessages.append('/login omfg1336')
                            self._loggedIn = True
                        if msg.find('register') != -1:
                            self._log('Registering! [' + msg + ']')
                            self._queuedMessages.append('/register omfg1336 omfg1336')
                            self._queuedMessages.append('/register omfg1336')
                            self._queuedMessages.append('/setpassword omfg1336')
                            self._queuedMessages.append('/login omfg1336')
                            self._loggedIn = True
                            self._log('Done')
                elif _packet_id == 0x03:
                    self._debug('Time Update')
                    self._getBytes(8)
                    self._getBytes(8)
                elif _packet_id == 0x04:
                    self._debug('Entity Equipment')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._readSlot()
                elif _packet_id == 0x05:
                    x = self._getBytes(4)
                    y = self._getBytes(4)
                    z = self._getBytes(4)
                    self._debug('Spawn Position [X:' + str(int(binascii.b2a_hex(x), 16)) + ', Y:' + str(int(binascii.b2a_hex(y), 16)) + ', Z:' + str(int(binascii.b2a_hex(z), 16)) + ']')
                elif _packet_id == 0x06:
                    self._debug('Update Health')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                elif _packet_id == 0x07:
                    self._debug('Respawn')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._debug(self._readString())
                elif _packet_id == 0x08:
                    self._debug('Player Position And Look')
                    self._getBytes(8)
                    self._getBytes(8)
                    self._getBytes(8)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x09:
                    self._debug('Held Item Change')
                    self._getBytes(1)
                elif _packet_id == 0x0A:
                    self._debug('Use Bed')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(4)
                elif _packet_id == 0x0B:
                    self._debug('Animation')
                    self._readVarint()
                    self._getBytes(1)
                elif _packet_id == 0x0C:
                    pass
                elif _packet_id == 0x0D:
                    self._debug('Collect Item')
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x0E:
                    self._debug('Spawn Object')
                    self._readVarint()
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    lolz = 'Normal'
                    if self._getBytes(4) != '\x00\x00\x00\x00':
                        lolz = 'Projectile'
                        self._getBytes(2)
                        self._getBytes(2)
                        self._getBytes(2)
                    self._debug('Add Object/Vehicle [' + lolz + ']')
                elif _packet_id == 0x0F:
                    self._debug('Spawn Mob')
                    self._readVarint()
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(2)
                    self._getBytes(2)
                    self._genMetadata()
                elif _packet_id == 0x10:
                    self._readVarint()
                    self._debug('Painting [' + self._readString() + ']')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x11:
                    self._debug('Spawn Experience Orb')
                    self._readVarint()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(2)
                elif _packet_id == 0x12:
                    self._debug('Entity Velocity')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(2)
                    self._getBytes(2)
                elif _packet_id == 0x13:
                    self._debug('Destroy Entities')
                    leng = int(binascii.b2a_hex(self._getBytes(1)),16)
                    for i in range(leng):
                        self._getBytes(4)
                elif _packet_id == 0x14:
                    self._debug('Entity')
                    self._getBytes(4)
                elif _packet_id == 0x15:
                    self._debug('Entity Relative Move')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x16:
                    self._debug('Entity Look')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x17:
                    self._debug('Entity Look and Relative Move')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x18:
                    self._debug('Entity Teleport')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                elif _packet_id == 0x19:
                    self._debug('Entity Head Look')
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x1A:
                    self._debug('Entity Status')
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == "\x1B":
                    self._debug('Attach Entity')
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x1C:
                    self._debug('Entity Metadata')
                    self._getBytes(4)
                    self._genMetadata()
                elif _packet_id == 0x1D:
                    self._debug('Entity Effect')
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._getBytes(2)
                elif _packet_id == 0x1E:
                    self._debug('Remove Entity Effect')
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x1F:
                    self._debug('Set Experience')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(2)
                elif _packet_id == 0x20:
                    self._debug('Entity Properties')
                elif _packet_id == 0x21:
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(2)
                    lent = int(binascii.b2a_hex(self._getBytes(4)), 16)
                    self._debug('Chunk Update [' + str(lent) + ']')
                    self._getBytes(lent)
                elif _packet_id == 0x22:
                    self._debug('Multi Block Change')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(2)
                    lentk = int(binascii.b2a_hex(self._getBytes(4)), 16)
                    self._getBytes(lentk)
                elif _packet_id == 0x23:
                    self._debug('Block Change')
                    pass
                elif _packet_id == 0x24:
                    self._debug('Block Action')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(1)
                    self._readVarint()
                elif _packet_id == 0x25:
                    self._debug('Block Break Animation')
                    self._readVarint()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x26:
                    self._debug('Map Chunk Bulk')
                elif _packet_id == 0x27:
                    self._debug('Explosion')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    lent = int(binascii.b2a_hex(self._getBytes(4)), 16)
                    self._getBytes(lent*3)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x28:
                    self._debug('Effect')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x29:
                    self._debug('Named Sound Effect')
                    self._readString()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(1)
                elif _packet_id == 0x2A:
                    self._debug('New/Inval_packet State')
                    self._readString()
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x2B:
                    self._debug('Change Game State')
                    self._getBytes(1)
                    self._getBytes(4)
                elif _packet_id == 0x2C:
                    self._debug('Spawn Global Entity - thunderbolt')
                    self._readVarint()
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x2D:
                    self._getBytes(1)
                    WType = int(binascii.b2a_hex(self._getBytes(1)),16)
                    self._debug('Open window [' + self._readString() + ']')
                    self._getBytes(1)
                    self._getBytes(1)
                    if WType==1:
                        self._getBytes(4)
                elif _packet_id == 0x2E:
                    self._debug('Close Window')
                    self._getBytes(1)
                elif _packet_id == 0x2F:
                    self._getBytes(1)
                    self._getBytes(2)
                    self._debug('Set Slot')
                    self._readSlot()
                elif _packet_id == 0x30:
                    self._getBytes(1)
                    self._debug('Window Items')
                    lens = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    while lens != 0:
                        self._readSlot()
                        lens = lens - 1

                elif _packet_id == 0x31:
                    self._debug('Window Property')
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(2)
                elif _packet_id == 0x32:
                    self._debug('Confirm Transaction')
                    self._getBytes(1)
                    self._getBytes(2)
                    self._getBytes(1)
                elif _packet_id == 0x33:
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                    a = self._readString()
                    b = self._readString()
                    c = self._readString()
                    d = self._readString()
                    self._debug('Update Sign [' + a + ':' + b + ':' + c + ':' + d + ']')
                elif _packet_id == 0x34:
                    self._debug('Maps')
                    self._readVarint()
                    leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    self._getBytes(leng)
                elif _packet_id == 0x35:
                    self._debug('Update Block Entity')
                    self._getBytes(4)
                    self._getBytes(2)
                    self._getBytes(4)
                    self._getBytes(1)
                    leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    if leng>0:
                        self._getBytes(leng)
                elif _packet_id == 0x36:
                    self._debug('Sign Editor Open')
                    self._getBytes(4)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x37:
                    self._debug('Increment Statistic')
                    leng = self._readVarint()
                    for i in range(leng):
                        self._readString()
                        self._readVarint()
                elif _packet_id == 0x38:
                    self._debug('Player List Item [' + self._readString() + ']')
                    self._getBytes(1)
                    self._getBytes(2)
                elif _packet_id == 0x39:
                    self._debug('Player Abilities')
                    self._getBytes(1)
                    self._getBytes(4)
                    self._getBytes(4)
                elif _packet_id == 0x3A:
                    self._debug('Tab-Complete')
                    self._readVarint()
                    self._readString()
                elif _packet_id == 0x3B:
                    self._debug('Scoreboard Objective')
                    self._readString()
                    self._readString()
                    self._getBytes(1)
                elif _packet_id == 0x3C:
                    self._debug('Update Score')
                    self._readString()
                    update = int(binascii.b2a_hex(self._getBytes(1)), 16)
                    if update != 1:
                        self._readString()
                        self._getBytes(4)
                elif _packet_id == 0x3D:
                    self._debug('Display Scoreboard')
                    self._getBytes(1)
                    self._readString()
                elif _packet_id == 0x3E:
                    self._debug('Teams')
                    self._readString()
                    mode = int(binascii.b2a_hex(self._getBytes(1)), 16)
                    if mode == 0:
                        self._readString()
                        self._readString()
                        self._readString()
                        self._getBytes(1)
                        leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                        self._getBytes(leng)
                    if mode == 2:
                        self._readString()
                        self._readString()
                        self._readString()
                        self._getBytes(1)
                    if mode == 3:
                        leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                        self._getBytes(leng)
                    if mode == 4:
                        leng = int(binascii.b2a_hex(self._getBytes(2)), 16)
                        self._getBytes(leng)
                elif _packet_id == 0x3F:
                    self._debug('Plugin message [' + self._readString() + ']')
                    sz = int(binascii.b2a_hex(self._getBytes(2)), 16)
                    self._getBytes(sz)
                else:
                    if _packet_id == 0x40:
                        rl = self._readString()
                        self._log('Disconnected! [' + rl + ']')
                        self._isConnected = False
                        try:
                            self._socket.close()
                        except:
                            pass
                        return
                    if _packet_id == '':
                        pass
                    else:
                        if _packet_id == 'ER':
                            if self._isConnected:
                                self._log('Disconnected! [Connection Error]'+ self._old_packet_id)
                            try:
                                if 'pFlood' in self._attacks and self._isConnected:
                                    self._isConnected = False
                                else:
                                    self._socket.close()
                            except:
                                pass

                            self._isConnected = False
                            return
        return
Beispiel #11
0
def main():
    """
    the entrance of whole system
    :return:
    """
    getter_queue = Queue(maxsize=MAXSIZE_OF_QUEUE)
    appender_queue = Queue(maxsize=MAXSIZE_OF_QUEUE)
    usage_queue = Queue(maxsize=MAXSIZE_OF_QUEUE)
    verify_queue = Queue(maxsize=MAXSIZE_OF_QUEUE)
    pm = ProxyManager.ProxyManager(getter_queue=getter_queue,
                                   appender_queue=appender_queue,
                                   usage_queue=usage_queue,
                                   verify_queue=verify_queue,
                                   host=HOST,
                                   database=DATABASE,
                                   pwd=PASSWORD,
                                   user=USER,
                                   port=PORT,
                                   multiple_timeout=MULTIPLE_TIMEOUT_WHILE_NO_PROXY,
                                   hia_amount=MAX_QUANTITY_OF_HIA_PROXY_SELECT,
                                   rarely_amount=MAX_QUANTITY_OF_RARELY_USED_PROXY_SELECT,
                                   rarely_time=INTERVAL_TIME_OF_RARELY_USED_PROXY)

    vm = VerifyManager.VerifyManager(verify_queue=verify_queue,
                                     feedback_queue=usage_queue,
                                     sleep_time=SLEEPING_TIME_FOR_VERIFY_MANAGER,
                                     interval_time=INTERVAL_TIME_OF_VERIFY)

    cm = CrawlerManager.CrawlerManager(url_getter=Parser.xici_url_construction,
                                       data_parse=Parser.xici_parse,
                                       data_queue=appender_queue,
                                       feedback_queue=usage_queue,
                                       proxy_queue=getter_queue,
                                       maxsize_queue=MAXSIZE_OF_QUEUE,
                                       interval_time=SLEEPING_TIME_FOR_CRAWLER_MANAGER,
                                       base_time=BASE_TIMEOUT_WHILE_WAITING_PROXY,
                                       multiple_time=MULTIPLE_TIMEOUT_WHILE_WAITING_PROXY)
    sm = Process(target=modify_launcher, args=(getter_queue, 20))
    try:
        log_writer('pm start')
        pm.start()  # proxy manager start
        log_writer('vm start')
        vm.start()  # verify manager start
        log_writer('cm start')
        cm.start()  # crawler manager start
        log_writer('squid modifier start')
        sm.start()    # squid modifier start
        # the system controller --only func exit now
        while True:
            order = input()
            if order == 'exit':
                break
    finally:
        if pm.is_alive():
            pm.terminate()
        if vm.is_alive():
            vm.terminate()
        if cm.is_alive():
            cm.terminate()
        if sm.is_alive():
            sm.terminate()
Beispiel #12
0
import urllib2, urllib, re, time, sys, os, os.path, math, random, json, multiprocessing, requests
from bs4 import BeautifulSoup
import Keywords, MultiProcessor, ProxyManager, ProxyFetcher, TaskLogic, Worker

# main
if __name__ == '__main__':
    # change keywords_path, nothing else
    keywords_path = "/Users/fabianschneider/Desktop/writing/keywords-amz/legacy/"

    # logic go
    kw = Keywords.Keywords()

    # fetch current proxies
    ttt = time.time()
    print '\n\n\n> Preparing proxies...'
    proxy = ProxyManager.ProxyManager()
    list = ProxyFetcher.get_list(proxy)
    proxy.add_all(list)
    ttte = time.time()
    print '> > Completed. %i proxies available (took %is).\n\n\n' % (len(
        proxy.list), (ttte - ttt))

    # bases
    baseline = raw_input("What's the baseline product?\n=> ")
    depth = int(raw_input("How deep do you wanna crawl? Rec. 1-2\n=> "))
    amount = int(
        raw_input(
            "How many crawlers do you wanna enslave? Rec. 8ish\nIf you don't know what you're doing, please enter 0 to let the code figure it out.\n=> "
        ))
    time_start = time.time()
    print 'Alright cool. Getting to work.\n\n\n'