Szerző Téma: [C++] P2P port védelem (forrás)  (Megtekintve 924 alkalommal)

Nem elérhető Pisti95

  • Sage
  • *****
  • Thank You
  • -Given: 95
  • -Receive: 613
  • Hozzászólások: 2 334
  • Segített: 655
[C++] P2P port védelem (forrás)
« Dátum: 2017-08-29, 18:44:19 »
Üdv mindenkinek!  :)

Mostanság elszaporodott a p2p portok támadása avagy Api tool támadás. Most 2017-ben nem divat már védeni az Api tool-t, pedig MUSZÁJ! Már vannak webtárhelyre feltöltött p2p bash panelek, melyeken keresztül lövöldözik a szervert. Ezzel a forrásos védelemmel nem fogja tudni lelőni a szervert, hiába tudják az IP-t és a p2p portot.

Azonban még mindig kötelező a CONFIG fájlokban az adminpage_ip: 127.0.0.1 legyen és az adminpage_password: legyen saját magunk által megadott jelszó, amit nem adunk ki senkinek.



Most pedig következzen a forrás védelem:

common/service.h

rákeresel erre:

PET_SYSTEM

Beilleszted a többi közé ezt:
#define ENABLE_PORT_SECURITY


game fájl forrás:

desc_p2p.cpp

Rákeresel erre:
#include "p2p.h"

alá írod ezt:
#include "../../common/service.h"

Rákeresel erre:
bool DESC_P2P::Setup(LPFDWATCH fdw, socket_t fd, const char * host, WORD wPort)

Így nézzen ki:
bool DESC_P2P::Setup(LPFDWATCH fdw, socket_t fd, const char * host, WORD wPort)
{
m_lpFdw = fdw;
m_stHost = host;
m_wPort = wPort;
m_sock = fd;

#ifdef ENABLE_PORT_SECURITY
#include "config.h"
#endif

if (!(m_lpOutputBuffer = buffer_new(1024 * 1024)))
return false;

if (!(m_lpInputBuffer = buffer_new(1024 * 1024)))
return false;

fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_READ, false);

m_iMinInputBufferLen = 1024 * 1024;

#ifdef ENABLE_PORT_SECURITY
if (strcmp(host, g_szPublicIP)) // refuse if remote host != public ip (only the same machine must be able to connect in here)
{
sys_log(0, "SYSTEM: new p2p connection from [%s] to [%s] fd: %d BLOCKED", host, g_szPublicIP, m_sock);
SetPhase(PHASE_CLOSE);
return true;
}
#endif

SetPhase(PHASE_P2P);

sys_log(0, "SYSTEM: new p2p connection from [%s] fd: %d", host, m_sock);
return true;
}



input.cpp

Rákeresel erre:
#include "HackShield_Impl.h"

Aláírod ezt:
#include "../../common/service.h"


Rákeresel erre a részre:
int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
{
    if (bHeader == 10)
        return 0;

    if (bHeader == HEADER_CG_TEXT)
    {


Beilleszted ezt alá:
#ifdef ENABLE_PORT_SECURITY
        if (IsEmptyAdminPage() || !IsAdminPage(inet_ntoa(d->GetAddr().sin_addr)))
        {
            sys_err("SOCKET_CMD: BLOCK FROM(%s)", d->GetHostName());
            return -1;
        }
#endif

Így nézzen ki ahogy a képen látod:   



Source: 
Üdv, Pisti95
« Utoljára szerkesztve: 2017-08-29, 19:14:57 írta Pisti95 »