Zabezpieczenie pluginu na ip – kodowanie stringów

Ostatnio przypomniał mi się start poradnik o zabezpieczaniu pluginu na ip i łamaniu tego zabezpieczenia http://darkgl.pl/index.php/2012/12/29/zabezpieczanie-pluginu-na-ip-nic-prostszego-do-zlamania/ pomyślałem aby sposób nieco utrudnić. Najpierw kod samego sprawdzania ip:
#include 

new const serverIP[] = "5.9.89.100:27176";

public plugin_init() {

register_plugin("nazwa", "1.0", "autor");

new szIp[ 33 ];
get_user_ip( 0, szIp, charsmax( szIp ) );

if( !equal( szIp , serverIP ) ){
server_print("IP nieprawidlowe");
set_fail_state("Plugin nie dziala na tym serwerze.");
}

server_print("IP prawidlowe");
}
Prosty prawda ? Ale drzemie w nim moc , możemy go znacznie skomplikować poprzez get_pcvar/set_pcvar oraz zakodowanie stringów. To drugiej dalej w wpisie ;). Kodowanie stringów Początkowy kod:
#include 

new const serverIP[] = "5.9.89.100:27176";

public plugin_init() {

register_plugin("nazwa", "1.0", "autor");

new szIp[ 33 ];
get_user_ip( 0, szIp, charsmax( szIp ) );

if( !equal( szIp , serverIP ) ){
server_print("IP nieprawidlowe");
set_fail_state("Plugin nie dziala na tym serwerze.");
}

server_print("IP prawidlowe");
}
Przeniesienie stringa do zmiennych:
#include 

public plugin_init() {

register_plugin("nazwa", "1.0", "autor");

new serverIP[] = "5.9.89.100:27176";

new szIp[ 33 ];
get_user_ip( 0, szIp, charsmax( szIp ) );

if( !equal( szIp , serverIP ) ){
server_print("IP nieprawidlowe");
set_fail_state("Plugin nie dziala na tym serwerze.");
}

server_print("IP prawidlowe");
}
Rozbicie na litery:
new serverIP[ 22 ];
serverIP[ 1 ] = '1';
serverIP[ 2 ] = '4';
serverIP[ 3 ] = '4';
serverIP[ 4 ] = '.';
serverIP[ 5 ] = '7';
serverIP[ 6 ] = '6';
serverIP[ 7 ] = '.';
serverIP[ 8 ] = '1';
serverIP[ 9 ] = '1';
serverIP[ 10 ] = '0';
serverIP[ 11 ] = '.';
serverIP[ 12 ] = '2';
serverIP[ 13 ] = '3';
serverIP[ 14 ] = '1';
serverIP[ 15 ] = ':';
serverIP[ 16 ] = '2';
serverIP[ 17 ] = '7';
serverIP[ 18 ] = '0';
serverIP[ 19 ] = '1';
serverIP[ 20 ] = '5';
serverIP[ 21 ] = '^0';
Zmiana na integer i dodanie + 10
new serverIP[ 22 ];
serverIP[ 1 ] = 0x3B;
serverIP[ 2 ] = 0x3E;
serverIP[ 3 ] = 0x3E;
serverIP[ 4 ] = 0x38;
serverIP[ 5 ] = 0x41;
serverIP[ 6 ] = 0x40;
serverIP[ 7 ] = 0x38;
serverIP[ 8 ] = 0x3B;
serverIP[ 9 ] = 0x3B;
serverIP[ 10 ] = 0x3A;
serverIP[ 11 ] = 0x38;
serverIP[ 12 ] = 0x3C;
serverIP[ 13 ] = 0x3D;
serverIP[ 14 ] = 0x3B;
serverIP[ 15 ] = 0x44;
serverIP[ 16 ] = 0x3C;
serverIP[ 17 ] = 0x41;
serverIP[ 18 ] = 0x3A;
serverIP[ 19 ] = 0x3B;
serverIP[ 20 ] = 0x3F;
serverIP[ 21 ] = 0x0A;
Dekodowanie w locie:
new serverIP[ 22 ];
serverIP[ 1 ] = 0x3B;
serverIP[ 2 ] = 0x3E;
serverIP[ 3 ] = 0x3E;
serverIP[ 4 ] = 0x38;
serverIP[ 5 ] = 0x41;
serverIP[ 6 ] = 0x40;
serverIP[ 7 ] = 0x38;
serverIP[ 8 ] = 0x3B;
serverIP[ 9 ] = 0x3B;
serverIP[ 10 ] = 0x3A;
serverIP[ 11 ] = 0x38;
serverIP[ 12 ] = 0x3C;
serverIP[ 13 ] = 0x3D;
serverIP[ 14 ] = 0x3B;
serverIP[ 15 ] = 0x44;
serverIP[ 16 ] = 0x3C;
serverIP[ 17 ] = 0x41;
serverIP[ 18 ] = 0x3A;
serverIP[ 19 ] = 0x3B;
serverIP[ 20 ] = 0x3F;
serverIP[ 21 ] = 0x0A;

for( new iPosition = 0 ; iPosition < sizeof( serverIP ); iPosition++ ){
    serverIP[ iPosition ] -= 0x0A;
}
Całość
#include 

public plugin_init() {

register_plugin("nazwa", "1.0", "autor");

new szIp[ 33 ];
get_user_ip( 0, szIp, charsmax( szIp ) );

new serverIP[ 22 ];
serverIP[ 1 ] = 0x3B;
serverIP[ 2 ] = 0x3E;
serverIP[ 3 ] = 0x3E;
serverIP[ 4 ] = 0x38;
serverIP[ 5 ] = 0x41;
serverIP[ 6 ] = 0x40;
serverIP[ 7 ] = 0x38;
serverIP[ 8 ] = 0x3B;
serverIP[ 9 ] = 0x3B;
serverIP[ 10 ] = 0x3A;
serverIP[ 11 ] = 0x38;
serverIP[ 12 ] = 0x3C;
serverIP[ 13 ] = 0x3D;
serverIP[ 14 ] = 0x3B;
serverIP[ 15 ] = 0x44;
serverIP[ 16 ] = 0x3C;
serverIP[ 17 ] = 0x41;
serverIP[ 18 ] = 0x3A;
serverIP[ 19 ] = 0x3B;
serverIP[ 20 ] = 0x3F;
serverIP[ 21 ] = 0x0A;

for( new iPosition = 0 ; iPosition < sizeof( serverIP ); iPosition++ ){
		serverIP[ iPosition ] -= 0x0A;
	}

	if( !equal( szIp , serverIP ) ){
		server_print("IP nieprawidlowe");
		set_fail_state("Plugin nie dziala na tym serwerze.");
	}

	server_print("IP prawidlowe");
}

6 komentarzy o “Zabezpieczenie pluginu na ip – kodowanie stringów

  1. Czy osoba znająca asemblera w stopniu dobrym, będzie potrafiła złamać to zabezpieczenie?

  2. Nie można by było zrobić coś takiego, że sprawdza czy pierwszy znak ip to „x” za pomocą stringu, następny za pomocą liczby, następny za pomocą np liczba * 152 = „y”. Myśle że to by znacznie utrudniło złamanie takiego zabezpieczenia.

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.