Pokaż wyniki 1 do 5 z 5

Temat: Problem z pakietami...

  1. #1
    Zarejestrowany
    Apr 2007
    Skąd
    Warszawa
    Postów
    5

    Domyślnie Problem z pakietami...

    Witam wszystkich serdecznie. Jestem nowym uzytkownikiem i chciałbym Wam przedstawic mój problem, być może ktoś, z Was będzie umiał mi doradzic, co też mam zrobić by się z nim uporać.

    Otóz piszę aplikację w C++, konkretniej bota do pewnej popularnej gry online...
    Bot pośredniczy w przekazywaniu pakietów z klienta gry do serwera i na odwrót.
    Jego działanie naturalnie polega na wysyłaniu konkretnych pakietów zamiast gracza.

    I tu pojawia się problem, o ile z pakietami przyhodzacymi z serwera nie ma problemu, o tyle pakiety wychodzace od klienta do serwera nastręczają mi problemów.

    Struktura pakietu wygląda tak iż:
    Pierwsze 2 bajty(pierwszy i drugi) definiuja rozmiar danych w pakiecie.
    Kolejne 2 bajty(trzeci i czwarty) stanowią nagłówek.

    Kolejne 2 bajty(piąty i szósty) są zmienne, stanowią skuteczna ochronę, która hamuje rozwój mojego projektu.

    Resztę bajtów stanowią dane.

    Czyli np:
    Pakiet: [07 00 rozmiar] [74 70 nagłówek] [AA 43 zabezpieczenie] [01 04 7E 00 00 00 00 dane]


    Moje pytanie brzmi, co zrobić by mój bot wysyłał poprawny pakiet, którego serwer nie odrzuci?

    Narazie staram się, w debuggerze, ustalic miejsce wysyłania(juz zrobiłem), ustawiając breakpointa wyszukałem adres w którym miesci się bufor z wysyłanym pakietem, a raczej tylko jego rozmiar(niestety)...

    Na tej wartosci chcialem ustawic breakpointa na zapis by dowiedziec się, w którym miejscu następuje zapis tej komórki pamieci(i byc moze dobrac się do pakietu, potem dobrac sie do miejsca gdzie jest tworzony i zobaczyc gdzie znajduja się te bajty zabezpieczające, skopiowac je do statycznej komórki pamieci i odczytac w momencie wysyłania pakietu, wkładając go w odpowiednie miejsce tablicy bufora, a anstępnie powstały pakiet wysłac.


    Czy to co piszę ma jakis sens? Czy może to totalna abstrakcja? Może ktoś z Was rozwiązywał już podobne problemy? Może jakaś sugestia, odnosnie tego co mam zrobic, jezeli mój pomysł jest bezensowny?

    Z góry dzięki za odpowiedzi.
    Ostatnio edytowane przez Desann : 04-13-2007 - 13:25

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Czy masz opis protokolu komunikacyjnego? Prawdopodobnie nie mozesz wyslac dowolnych bajtow w miejscu o ktorym mowisz - jesli to jakis kod zabezpieczajacy gwarantujacy ciaglasc i poprawnosc transmisji (a moze kolejnosc pakietow) to musisz wstawiac takie wartosci jakich spodziewa sie serwer... wszelkie inne zostana odrzucone... Polecam doglebna analize pakietow w trakcie normalnej gry - zobacz co wchodzi od serwera, co odpowiada klient...

    Na pewno klient robi jakas inicjalizacje polaczenia i ustala te reguly (albo sa opisane w protokole). Na pewno jest tam jakas prawidlowosc - chocby numer seryjny zwiekszany o 1 przy kazdym pakiecie, ktory jest zerowany po wykorzystaniu calej przestrzeni 16-bit i zaczyna leciec albo od zera znowu albo od innej wartosci ustalonej z serwerem...
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3
    Zarejestrowany
    Apr 2007
    Skąd
    Warszawa
    Postów
    5

    Domyślnie

    Niestety ale sprawa wygląda tak, że nie otrzymuję żadnych pakietów od serwera w przypadku gdy nic nie robię i jestem w pustym miejscu...

    Tzn. WPE Pro nie wykrywa... Ethereal owszem coś tam jest ale znowu nie mogę doszukac się tam niczego interesującego. Totalnie tego nie rozumiem, w takim razie jak serwer moze wykryc niepoprawnośc pakietu. Musi przecież informowac klienta co ma wysłać, zeby było poprawne...

    Totalnie juz zgłupiałem...

    Wysłałem raz, po raz pakiety ruchu postaci i za kazdym razem wartosci tych dwóch bajtów były zupełnie losowe, nie sądzę by dało się z tego wyciągnąc jakis ciąg...

    Tu mały przykładzik:
    http://img155.imageshack.us/img155/2899/pakietykk4.png
    Ostatnio edytowane przez Desann : 04-14-2007 - 11:45

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Ciezka sprawa skoro nie znasz protokolu komunikacyjnego dokladnie... Moze to jakis sekwencyjny kod albo cos w ten sposob? Moze zalezny jakos od odpowiedzi serwera w poprzedniej fazie? Potrzebujesz specyfikacje protokolu albo atakowac protokol tak jak szyfrogram... ale to trzeba czasu i zapalu...

    POWODZENIA!
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5
    Zarejestrowany
    Nov 2006
    Skąd
    Polska/Poland
    Postów
    1,191

    Domyślnie

    hmm, a może w jakiś sposób są zależne od numeru sekwencyjnego
    ***********
    * markossx *
    ***********

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj