PDA

Просмотр полной версии : -= Perl+ПодделываниеПакетов+tcp =-


KENNY_McCORMICK
24.09.2008, 12:48
Возникли трудности при подделывание пакета )
need HELP

Дано:
Есть программа garena.exe которая использует TCP/IP коннект к серверу
Задача:
Написать свой клиент для этого сервера
Решение:
1) я сосниффил пакеты, которые програма отправляет серверу и получает от него... вот часть:

*.exe отправляет серверу:
00000000 01 00 00 00 6A ....j

Ответ сервера:
00000000 06 00 00 00 6A C5 20 40 40 01 ....j. @ @.

2) я написал маленькую программку на PERL'e
#!/usr/bin/perl
use Socket;
$host="us4.auth.garena.com"; #tipa host
$port="7456"; #port
$packet = pack ("H*", '01 00 00 00 6A'); #Формируем пакет

socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$iaddr = inet_aton($host); # Получаем IP (67.228.162.187)
#$iaddr = 67.228.162.187; # это если знаем IP
$paddr = sockaddr_in($port, $iaddr);
connect(SOCK, $paddr);
send (SOCK, $packet, 0); #отправляем пакет
while (){
recv (SOCKET, $buf, 1514, 0); #считываем пакет
print unpack ("H*", $buf), "\n\n"; #вывод в hex
}
close(SOCK);

Пакет отправляется, но ответа НЕТ(
Сниффер так же ответа не увидел...
в чём трабл?

Digimortal
24.09.2008, 13:47
Там цикл while не нужен, ты посылаешь пакет в хэндл 'SOCK', а читаешь из 'SOCKET' (use warnings!), читать надо 10 байт, а не 1514. Кстати, заместо Socket удобней использовать IO::Socket::INET.

svesve
24.09.2008, 13:58
Tc а что планируешь написать? =)

KENNY_McCORMICK
24.09.2008, 14:01
дык Я читаю сниффером... while вообще убрал!
ответа всё равно нет!

Разницы же нет, что use socket, что use IO::Socket::INET.... ответа тутю(

Почему сервак не отвечает на мой пакет?

KENNY_McCORMICK
24.09.2008, 14:05
Tc а что планируешь написать? =)

garena.com и его клиент GGC(garena)
GGC = софтинка для игры в wc3, CS, StarCraft...
При ping ~ 0
Хочу написать свой клиент вместо garena.exe , чтоб использовать его в целях Liga_BOT, Room Moderator.

Digimortal
24.09.2008, 14:29
>> Почему сервак не отвечает на мой пакет?

А пакет, передаваемый скриптом полностью аналогичен тому, что передает клиент?

Кстати говоря:
>> отправляет серверу и получает от него... вот часть

Надеюсь, это самая начальная часть лога? )

p.s. А еще:

$packet = pack ("H*", '010000006A'); #Формируем пакет без пробелов!

KENNY_McCORMICK
24.09.2008, 14:38
1) Да

2) Да самое начало

KENNY_McCORMICK
24.09.2008, 14:50
p.s. А еще:

$packet = pack ("H*", '010000006A'); #Формируем пакет без пробелов!

ААААААААА!! СПАСИБО!
РЕСПЕКТ!
ДВА дня мучался! оказалось это из-за пробелов!!!
ЛОВИ +