Salut. Am gasit si eu asta pe la turci.
Este un cod care verifica fiecare pachet primit, iar daca acesta invalid, acesta este blocat pentur un anumit timp pentru a nu permite incarcarea serverului.
Serverul ia primul byte (header-ul) si verifica daca este un header corect.
Daca nu exista in lista de pachete valide → este considerat "unknown header".
Daca un IP trimite prea multe pachete invalide → este banat temporar.
Ajuta impotriva:
- spam cu pachete stricate
- flood cu date random
- incercari de a crapa serverul cu pachete invalide
- boti prost facuti
Nu este cine stie ce protectie, dar e mai buna decat niciuna. Nu blocheaza botnet sau alte atacuri masive in totalitate, dar ajuta sa iti tina serverul in picioare cat de cat. Foarte util pentru flood packet si atacuri ddos mai mici.
*Poze / Video:
*Link download / Code:
Adaugam in service.h / CommonDefines.h:
Code:
#ifndef __INC_METIN_II_GAME_DEFINE_H__
#define __INC_METIN_II_GAME_DEFINE_H__
#include <map>
#include <string>
#include <time.h>
static std::map<std::string, int> g_unknownHeaderCount;
static std::map<std::string, time_t> g_unknownHeaderBan;
// IP ban and unknown header protection defines
#define ENABLE_UNKNOWN_HEADER_IP_BAN
#define UNKNOWN_HEADER_MAX_COUNT 5
#define UNKNOWN_HEADER_BAN_DURATION 600 // seconds
#endif // __INC_METIN_II_GAME_DEFINE_H__
Code:
bool CInputProcessor::Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed)Deschidem input_db.cpp si cautam:
Code:
bool CInputDB::Process(LPDESC d, const void * orig, int bytes, int & r_iBytesProceed)Deschidem input_udp.cpp si cautam:
Code:
bool CInputUDP::Process(LPDESC pDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed)

la acest mesaj și conținutul se va afișa automat.

