Seja bem-vindo, agora você faz parte da Família CRIARMICE!

Como colocar Anti DDOS em sua Source

INTRODUÇÃO
Bom pessoal, atualmente o DDOS 3.0 vem aterrorizando muitos mices, então eu, Identify vim mostrar a solução.
TUTORIAL
Primeiro substitua a def connectionMade por esta:

        def connectionMade(self):
                self.address = self.transport.getPeer()
                self.address = [self.address.host]
                
                self.server = self.factory

                if self.server.getIPPermaBan(self.address[0]):
                        self.transport.loseConnection()
                        self.isIPban = True
                        self.isBanned = True
                        data=""
                elif self.address[0] in self.server.tempIPBanList:
                        self.transport.loseConnection()
                        self.isIPban = True
                        self.isBanned = True
                        data=""
                else:
                        try:
                                derp = self.server.connectCounts[self.address[0]]
                                self.server.connectCounts[self.address[0]]['count'] += 1
                        except:
                                self.server.connectCounts[self.address[0]] = {'count':1}
                        # Verificação de ataque # DDos # Dos
                        # Check DOS
                        if self.server.connectCounts[self.address[0]]['count'] >= 20:
                                self.server.tempIPBanList.append(self.address[0])
                                self.transport.loseConnection()
                                self.server.sendModChat(self, "\x06\x14", ["<N>DOS Ataque Bloqueado em IP: [<CH>"+str(self.address[0])+"<N>]"])
                                print "DOS Attack Blocked in IP: ["+str(self.address[0])+"]"
                                self.server.connectCounts[self.address[0]] = {'count':1}
                                with open("./others/KiwiGuard/Data/Block_IPList.kwg", "r+") as f:
         old = f.read()
         f.seek(0)
         f.write("" + str(now.strftime("%m/%d/%Y %I:%M:%S %p")) + "|"+ str(self.address[0]) +"|0\n" + old) 
         logging.warning("KiwiGuard Firewall Detected: (DOS form IP "+self.address[0]+"), Act: Disconnect He and Ban Perma IP.")        
                        else:
                                self.validatingLoader = self.server.ValidateLoader
                                #self.shoplist = self.server.shopList

                                self.NoDataTimer = reactor.callLater(7, self.transport.loseConnection)
                                
                                if VERBOSE:
                                        print "["+str(datetime.today())+"] "+'Interface de login enviada para '+str(self.address[0])

                                self.SGMDT = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                                LCDMT = str(self.server.LCDMT)
                                self.CMDTEC = random.randrange(1000, 9999)
                                self.ICMDTEC = self.CMDTEC
                                i = 0
                                while(i < 10):
                                        self.CMDT = LCDMT[i]
                                        if self.CMDT == "0":
                                                self.SGMDT[i] = "10"
                                        else:
                                                self.SGMDT[i] = self.CMDT
                                        i = (i+1)

Segundo passo é substituir a def connectionLost

        def connectionLost(self, status):
                if self.room:
                        self.room.removeClient(self)
                self.server = self.factory
                try:
                    derp = self.server.connectCounts[self.address[0]]
                    self.server.connectCounts[self.address[0]]['count'] -= 1
                except:
                    self.server.connectCounts[self.address[0]] = {'count':0}
                if self.username != "":
                        if self.isInTribe:
                                self.sendTribeDisconnected(self.username)
                        if self.privilegeLevel in [10,6,5]:
                                self.server.sendModChat(self, "\x1A\x05", ["-", self.username+" saiu."])
                if self.AwakeTimerKickTimer:
                        try:
                                self.AwakeTimerKickTimer.cancel()
                        except:
                                self.AwakeTimerKickTimer=None
                if VERBOSE:
                        print "["+str(datetime.today())+"] "+'Conexão interrompida: '+str(self.address[0])
                self.transport.loseConnection()

#procure por: def found_terminator e substitua:

        def found_terminator(self, MDT, data, Size):
                if self.validatingVersion:
                        if self.server.getIPPermaBan(self.address[0]):
                                self.transport.loseConnection()
                                self.isIPban = True
                                self.isBanned = True
                                data=""
                        elif self.address[0] in self.server.tempIPBanList:
                                self.transport.loseConnection()
                                self.isIPban = True
                                self.isBanned = True
                                data=""
                        else:
                                self.isIPban = False
                        if VERBOSE:
                                print "RECV: "+repr(data)
                        if LOGVERB:
                                #logging.warning("RECV: "+repr(data))
                                pass
                        if data.startswith("\x1c\x01"):
                                version, connectionkeylen = struct.unpack('!hh', data[2:6])
                                version = "1." + str(version)
                                connectionkey = data[6:6+connectionkeylen]
                                print connectionkey
                                if self.isinit:
                                        if self.server.GetCapabilities:
                                                secFile = open("./Compile/Capabilities.swf", "rb")
                                                self.validatingLoader = True
                                        elif self.validatingLoader:
                                                secFile = open("./Compile/AltKikoo.swf", "rb")
                                        else:
                                                secFile = open("./Compile/Kikoo.swf", "rb")
                                        secData = secFile.read()
                                        secFile.close()
                                        secB64=base64.b64encode(secData)
                                        self.isinit = False
                                if self.server.ValidateVersion:
                                        if version == VERSION:
                                                self.sendCorrectVersion()
                                                self.AwakeTimerKickTimer = reactor.callLater(600, self.AwakeTimerKick)
                                        else:
                                                self.transport.loseConnection()
                                else:
                                        self.sendCorrectVersion()
                                        self.AwakeTimerKickTimer = reactor.callLater(600, self.AwakeTimerKick)
                                self.validatingVersion = False
                        else:
                                #logging.error(repr(data))
                                self.transport.loseConnection()
                else:
                        self.parseData(data, MDT, Size)
#Substituir def inforequestReceived(self, data):
        def inforequestReceived(self, data):
                if self.NoDataTimer:
                        try:
                                self.NoDataTimer.cancel()
                        except:
                                self.NoDataTimer=None
                if VERBOSE:
                        print "RECV: "+repr(data)
                if LOGVERB:
                        pass
                        ##logging.warning("RECV: "+repr(data))
                if self.isBanned:
                        data=""
                        self.transport.loseConnection()
                self.buffer += data
                if self.buffer=="<policy-file-request/>\x00":
                        if self.server.getIPPermaBan(self.address[0]):
                                self.transport.loseConnection()
                                self.isIPban = True
                                self.isBanned = True
                                data=""
                        elif self.address[0] in self.server.tempIPBanList:
                                self.transport.loseConnection()
                                self.isIPban = True
                                self.isBanned = True
                                data=""

                        self.isIPban = False
                        self.transport.write(r"""<cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>""" + "\x00")
                        self.transport.loseConnection()

                elif self.buffer=="SuperBelette\x00":
                        if self.server.getIPPermaBan(self.address[0]):
                                self.transport.loseConnection()
                                self.isIPban = True
                                self.isBanned = True
                                data=""
                        elif self.address[0] in self.server.tempIPBanList:
                                self.transport.loseConnection()
                                self.isIPban = True
                                self.isBanned = True
                                data=""
                        else:
                                self.isIPban = False
                                self.isinit = False
                                self.sentinelle = True
                                self.sentinelleSendStat()
                                self.sentinelleSendCPU()
                elif self.buffer.startswith("PlayerStat-"):
                        username=self.buffer[11:].replace("\x00","").lower().capitalize()
                        if len(username)<3 or len(username)>12:
                                self.transport.loseConnection()
                        elif self.server.checkExistingUsers(username):
                                name = username
                                tribe = self.server.getTribeName(username)
                                rounds = self.server.getRoundsCount(username)
                                cheese = self.server.getCheeseCount(username)
                                first = self.server.getFirstCount(username)
                                chamansave = self.server.getSavesCount(username)
                                chamancheese = self.server.getShamanCheeseCount(username)
                                chamangold = self.server.getShamanGoldSavesCount(username)
                                micetitle = self.server.getCurrentTitle(username)
                                self.sendDataOld("\x05", [name, tribe, rounds, cheese, first, chamansave, chamancheese, chamangold, micetitle])
                                self.transport.loseConnection()
                        else:
                                self.transport.loseConnection()

Lembre-se definir: class TransformiceClientHandler(TFMProtocol):

                self.validatingVersion = True
                self.CMDTEC = 0
                self.SGMDT = [0, 0, 0]
                self.ICMDTEC = 0


Agora lembra-se de definir as selfs no class TransformiceServer(protocol.ServerFactory):

Procure por: self.PlayerCountHistory=[
E adicione isso acima alinhado:
                self.tempAccountBanList=[]
                self.tempIPBanList=[]
                self.IPPermaBanCache=[]
                self.connectCounts = {}
                self.langues = {}

Se você não tiver isso: self.ValidateLoader  = self.str2bool(self.getServerSetting("ValidateLoader"))
adicione um pouco mais acima dos códigos.
CRÉDITOS
»๖̶ۣۜSтуlє ๖̶ۣۜAρяєηdιz™« - CriarMice Sempre a Melhor!!