-= Perl+ПодделываниеПакетов+tcp =-

Discussion in 'PHP' started by KENNY_McCORMICK, 24 Sep 2008.

  1. KENNY_McCORMICK

    KENNY_McCORMICK Elder - Старейшина

    Joined:
    9 Nov 2007
    Messages:
    29
    Likes Received:
    3
    Reputations:
    0
    Возникли трудности при подделывание пакета )
    need HELP

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

    *.exe отправляет серверу:
    Code:
    00000000  01 00 00 00 6A                                     ....j
    
    Ответ сервера:
    Code:
    00000000  06 00 00 00 6A C5 20 40  40 01                     ....j. @ @.
    
    2) я написал маленькую программку на PERL'e
    Code:
    #!/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);
    
    Пакет отправляется, но ответа НЕТ(
    Сниффер так же ответа не увидел...
    в чём трабл?
     
  2. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    Там цикл while не нужен, ты посылаешь пакет в хэндл 'SOCK', а читаешь из 'SOCKET' (use warnings!), читать надо 10 байт, а не 1514. Кстати, заместо Socket удобней использовать IO::Socket::INET.
     
  3. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Tc а что планируешь написать? =)
     
  4. KENNY_McCORMICK

    KENNY_McCORMICK Elder - Старейшина

    Joined:
    9 Nov 2007
    Messages:
    29
    Likes Received:
    3
    Reputations:
    0
    дык Я читаю сниффером... while вообще убрал!
    ответа всё равно нет!

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

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

    KENNY_McCORMICK Elder - Старейшина

    Joined:
    9 Nov 2007
    Messages:
    29
    Likes Received:
    3
    Reputations:
    0
    garena.com и его клиент GGC(garena)
    GGC = софтинка для игры в wc3, CS, StarCraft...
    При ping ~ 0
    Хочу написать свой клиент вместо garena.exe , чтоб использовать его в целях Liga_BOT, Room Moderator.
     
    1 person likes this.
  6. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> Почему сервак не отвечает на мой пакет?

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

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

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

    p.s. А еще:

    $packet = pack ("H*", '010000006A'); #Формируем пакет без пробелов!
     
    #6 Digimortal, 24 Sep 2008
    Last edited: 24 Sep 2008
    1 person likes this.
  7. KENNY_McCORMICK

    KENNY_McCORMICK Elder - Старейшина

    Joined:
    9 Nov 2007
    Messages:
    29
    Likes Received:
    3
    Reputations:
    0
    1) Да

    2) Да самое начало
     
  8. KENNY_McCORMICK

    KENNY_McCORMICK Elder - Старейшина

    Joined:
    9 Nov 2007
    Messages:
    29
    Likes Received:
    3
    Reputations:
    0
    ААААААААА!! СПАСИБО!
    РЕСПЕКТ!
    ДВА дня мучался! оказалось это из-за пробелов!!!
    ЛОВИ +