ďťż

Ładny brzuch

Witam
W internecie słyszałem, że aby napisać bota do gry mmorpg potrzebny jest sniffer, który odczyta jaki pakiet wysyłamy np. poruszając się w lewo w grze.
Pakiet ten podobno można wykorzystać w delphi tak by z naszego programu postać przy włączonej grze poruszała się tak jak to zaprogramowaliśmy.

Czy wiecie coś na ten temat?

znalazłem jakiegoś screena z tego sniffera, czy czegoś:
http://img401.images...899/bot1kj5.jpg
taki pakiecik poruszania się w prawo...

Z góry dzięki za wszelkie informacje lub przykłady



Witam,

pisałem kiedyś bota do Tibii więc coś o tym mniej więcej wiem.
Screen który zapodałeś jest z tibia proxy, jest to bot i zarazem sniffer tylko pod tibie.
Jesli chcesz pisać pota pod inną grę musisz korzystać z innych narzędzi. Np network active sniffer.

Największym problemem w pisaniu takiego bota do gry mmo jest wysłanie pakietu jako klient. Do tibii istnieje specjalna dllka 'packet.dll' która umożliwia wysyłanie pakietów jako klient. Gorzej jest z innymi grami (wow, gw) - trzeba samemu napisać takie cudo. Nie wiem dokładnie jak to działa, ale wydaje mi się, że w pliku jest procedura, która znajduje adres funkcji wysyłania pakietu, a poźniej do tego adresu sie odwołuje przy wysyłaniu pakietu z bota.

pozdrawiam

Ten screen to mi wygląda już na jakiegoś gotowego bota na proxy do śledzenia gry. Wszystko co jest wysyłane z/do Twojego komputera możesz podejrzeć. Do sniffowania polecam wireshark'a. Jeżeli gra jest prosta (mam na myśli tutaj stopień rozbudowania gry, a nie poziom trudności) to może się da w jakiś tydzień podejrzeć co nieco, ale przy rozbudowanych grach w pojedynkę będzie Ci na prawdę ciężko bota zrobić (bardzo dużo pakietów do analizy). Co gdzie jak? Poczytaj o tym co to TCP/IP, jak odbywa się transmisja danych między komputerami w sieci.
Na pewno da się zrobić coś takiego, jednak nie jest to prosta sprawa (co innego napisać bota to ogame a co innego do trójwymiarowej gry z dziesiątkami przeciwników ;)).
// zmiana ;]
Użytkownik Ali240 edytował ten post 29 sierpień 2007, 10:06
ok, dziękuję, to odpuszczę sobie bota do gier (myślałem o KAL ONLINE). Może kiedyś powrócę do tego.

Żeby nie zakładać kolejnego topicu to mam kolejne pytanie również związane z grami mmorpg.
Czy trudno będzie zrobić łamacza haseł do gry mmorpg np. kal online.
Przypuśćmy, że włączam grę, pojawia się okienko, prosi o ID i PASSWORD, po wpisaniu danych wciskam enter i gotowe.
Powiedzmy, że znam login do konta, a hasło składa się z samych cyferek.
Napisanie łamacza haseł do gry będzie również trudne jak napisanie bota??
Jeśli tak to kolejne pytanie:

Czy trudno napisać łamacza haseł na forum dyskusyjne np. ks-ekspert.pl/forum wpisuję login, hasła nie znam, chcę by program sam wpisał wyznaczone hasła...
Jak to zrobić? (PS. oczywiście nie zamierzam łamać haseł na ks-ekspert bo to bez sensu, IP by mieli i po sprawie :D, tak samo z innymi forami. Chciałbym postawić własne forum i tam testować takie rzeczy, tak samo postawić swój server do KAL ONLINE lub innej gry, cele edukacyjne).

Dziękuję za odpowiedzi.




Czy trudno napisać łamacza haseł na forum dyskusyjne np. ks-ekspert.pl/forum wpisuję login, hasła nie znam, chcę by program sam wpisał wyznaczone hasła...
Jak to zrobić? (PS. oczywiście nie zamierzam łamać haseł na ks-ekspert bo to bez sensu, IP by mieli i po sprawie :D, tak samo z innymi forami. Chciałbym postawić własne forum i tam testować takie rzeczy, tak samo postawić swój server do KAL ONLINE lub innej gry, cele edukacyjne).

Dziękuję za odpowiedzi.

To zależy jak jest zabezpieczone dane forum. Można spróbować w pole haslo wpisac coś takiego - kiedyś gdzieś znalazlem to w necie:

eval(" echo strip_tags( implode( ' ' , file( $PHP_SELF ) ) ) ");

Co prawda nie ma za wielkich szans na powodzenie, ale owszem może się udać. Funkcja eval() wykonuje łańcuch znaków zawarty wewnątrz jej jak gdyby był kodem PHP. funkcja echo wypisuje podaną wartość na ekran. Funkcja strip_tags, jak już wspominałem usuwa z podanego łańcucha znaków znaczniki HTMl i PHP. Funkcja file() zwraca podany plik w postaci tablicy, gdzie każdy element jest kolejną linią pliku. A $PHP_SELF to stała PHP zawierająca adres aktualnego dokumentu. A funkcja implode() łączy podana tablice w jeden ciąg. Jak nie trudno się domyślić, ta instrukcja pobierze aktualną stronę i wyświetli jej zawartość. Jeżeli sprawdzanie hasła odbywa się na stronie, najprawdopodobniej dostaniesz się do hasła.

Jak tego uniknąć? Bardzo prosto, również używając funkcji strip_tags() na zmiennej przechowującej hasło przed jej wykorzystaniem.
Użytkownik statjacek edytował ten post 29 sierpień 2007, 11:00
nie połapię się w tym, dziękuję za pomoc
Czy jest jakiś przykład w necie?

/edit
właśnie przeszukuję google z haslami delphi i np. brute force etc. może coś znajdę
Użytkownik buster edytował ten post 29 sierpień 2007, 11:37

Napisanie łamacza haseł do gry będzie również trudne jak napisanie bota??

Wydaje mi się że nawet trudniejsze ;]
Co prawda łatwiej jest wysniffować pakiet logujący (będzie to najprawdopodobniej pierwszy wysłany pakiet po naciśnięciu przycisku), lecz większość gier (w tym tibia) szyfruje pakiet logujący szyfrem RSA. musiałbyś więc dowiedzieć się jaki ma algorytm itd.
Po drugie serwery mmo zapewne mają jakieś zabezpieczenia, np 5 razy można wpisać złe hasło z jednego ip, a później ban na np. 10min

Chciałem jeszcze wspomnieć o łączy przy takim ataku brute force. Samą aplikacje generującą ciągi znaków można napisać bardzo szybko, wysyłanie danych także nie zajmie dużo czasu (dla stron internetowych wystarczy walnąć http z indy), lecz czas ich wysłania będzie znaczący.
Powiedzmy że serwer robi coś podobnego do sleep przy sprawdzaniu hasła np. czeka 250ms. Masz także bardzo szybkie łącze i wysłanie i odebranie pakietu zajmuje 50ms. czyli sprawdzenie jednego hasła - 300ms.
Załóżmy że chcesz sprawdzić milion haseł (normalnie byłoby na pewno więcej, szczególnie przy brute force) - zajmie Ci to 300ms*1000000 czyli 300,000,000ms=300,000sekund=5000min~83h~3 i pół dnia
troche długo, no nie ?
żeby przeprowadzić udane atak tego typu musiałbyś dysponować dużą liczbą komputerów zombie. około 100k

pozdrawiam

mi nie zależy na szybkośći lamania haseł, po prostu chciałbym spróbować napisać program który sam wpisze hasło, sprawdzi je, jak złe to sprawdza kolejne i moze sobie wpisywac jedno hasło np. 5 sekund, mnie to nie obchodzi :)
po prostu ważne jest dla mnie by to działało.
Tyle że ja się na delphi praktycznie nie znam, może napisałem kilka programów, ale wyglądało tak tak, że w google poszukiwałem kodu na coś i kopiowałem go, albo F1 + pomoc np. znajomego = napisany program taki na którego nie ma tutoriala w necie.
Ale jaka w tym wiedza? właściwie żadna. Tak samo jak pisałem keyloggera, pobrałem komponent i co? do wtyczki dołączone komendy + pobrałem komponent do traya i gotowy program z ikoną w trayu :D

Taka wiedza wystarczy by z pomocą netu napisać łamacz haseł do forum? (nie do server ftp tylko do konta na forum np. login: maciek72 pw:62931)

Ja bym to nazwał umiejętnością kopiuj-wklej a nie wiedzą :P.
Nie, taka "wiedza" nie wystarczy żeby samodzielnie coś spłodzić. No ale zawsze można znaleźć gotowca (że to się ludziom nie nudzi...).
A tak w ogóle to łatwiej napisać łamacza do ftp niż logowania na stronie (mniej zabawy) ;).
Raczej najpierw stwórz programik klient-serwer "echo" (samodzielnie) jeżeli chcesz w ogóle wchodzić w zagadnienia programowania sieci...

// A potem to już poczytaj o protokole http ;]. Samo zalogowanie jest banalne parę linijek jak się indy używa. Ale jak przeklepiesz kod to nawet nie będziesz wiedział jak to działa...
Użytkownik Ali240 edytował ten post 29 sierpień 2007, 13:05
przeklepać kod (...)
jaki sposób nauki delphi byś proponowal?
Niektóre komendy trzeba wkuć na pamięć co?
A tak ogólnie to jaki język programowania polecasz? może java? łatwiej ją zrozumieć?
bo w delphi i tak zawsze będzie to wyglądało w stylu - znajdź czyjeś komponenty (bo po co pisać to samo) i użyj ;p, tak się nigdy nie naucze programować, zresztą sam nie wiem co mnie interesuje, ale grafika 3d jest mln razy łatwiejsza od programowania i wpisywania dziwnych komend, tak samo java script lub zwykły html jest łatwiejszy do pojęcia ;p

np:
procedure TForm1.Button4Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('cdin'); //wysyłamy zmienną cdin
end;

lub ShowMessage....................., etc
taki kod to dosyć łatwo zrozumieć, ale są tez znacznie gorsze, w których nic się nie rozumie

tak ogólnie skąd ludzie biorą ten kod, w necie szukają na pewno pewnych rzeczy z tą różnicą, że oni rozumieją kod, a np. ja nie potrafię zrozumieć wielu rzeczy. Np. kod jest dziwnie napisany i skad mam wiedzieć w jakiej kolejności słowa powinny być napisane...

var
buffer:string;
buffSize:DWORD;
begin
buffSize:=128;
SetLength(buffer,BuffSize);
GetUserName(PChar(buffer), buffSize);
ShowMessage(buffer);
end;

np. sam takiego kodu bym nie napisał - nie rozumiem go... jak nie znaleźć to w necie, czy gdziekolwiek to sam tego nie wymyśle

może programowanie nie dla mnie.
Może w grafice 3d kiedyś będę dobry
Użytkownik buster edytował ten post 29 sierpień 2007, 14:19
Chcesz pisać aplikacje nie znając języka? >< Kup sobie jakaś książkę i się ucz jeżeli ci na tym naprawdę zależy. Jak nie to.. zajmij się czymś innym.

Po prostu, zabierasz się w tej chwili za malowanie Panoramy Racławickiej, a zapomniałeś nauczyć się rysować laurki :P

Nie ucz się programowania z internetu - kup sobie ksiązkę do Pascala albo C++ i pisz od zera - w notatniku - bez kombajnów, w których programowanie polega na przeciągnięciu komponentu na formatkę i kliknięciu "compile". W ten sposób zrozumiesz podstawy, i będziesz wiedział "w jakiej kolejności słowa powinny być napisane". Później zabierzesz się za okienka, Delphi i inne takie.
Użytkownik bryn edytował ten post 29 sierpień 2007, 15:14

przeklepać kod (...)
jaki sposób nauki delphi byś proponowal?
Niektóre komendy trzeba wkuć na pamięć co?
A tak ogólnie to jaki język programowania polecasz? może java? łatwiej ją zrozumieć?
bo w delphi i tak zawsze będzie to wyglądało w stylu - znajdź czyjeś komponenty (bo po co pisać to samo) i użyj ;p, tak się nigdy nie naucze programować, zresztą sam nie wiem co mnie interesuje, ale grafika 3d jest mln razy łatwiejsza od programowania i wpisywania dziwnych komend, tak samo java script lub zwykły html jest łatwiejszy do pojęcia ;p

Jaki sposób? A taki, że jak już dorwiesz jakiś kod, to analizuj go tak długo aż zrozumiesz każdą linię. Ja stosowałem taką metodę jak miałem połączenie modemowe i wchodziłem 2 godziny na tydzień na internet - pobierałem przykładowe programiki i analizowałem do bólu. Teraz jakoś potrafię sam pisać bez problemu...
Osobiście kodziłem w delphi sporo czasu i bardzo polubiłem ten język. Jest on prosty jakby porównać do c (to tylko mój punkt widzenia, więc proszę nie wywoływać wojny :D). Pewne jest, że jeżeli nie kręci Cię programowanie, to się za to nie bierz bo i po co.
Co do wykucia - funkcje i procedury są przeważnie nazwane adekwatnie do tego co robią. +"podpowiadanie kodu" i mało trzeba "wykuć". Większość sama wchodzi do głowy podczas pisania ;). No i help istnieje...


np:
procedure TForm1.Button4Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('cdin'); //wysyłamy zmienną cdin
end;

lub ShowMessage....................., etc
taki kod to dosyć łatwo zrozumieć, ale są tez znacznie gorsze, w których nic się nie rozumie

Jak się nie rozumie to do helpa. A po pierwsze wysyła tekst "cdin" a nie zmienną cdin...


tak ogólnie skąd ludzie biorą ten kod, w necie szukają na pewno pewnych rzeczy z tą różnicą, że oni rozumieją kod, a np. ja nie potrafię zrozumieć wielu rzeczy. Np. kod jest dziwnie napisany i skad mam wiedzieć w jakiej kolejności słowa powinny być napisane...
Kod się pisze samemu, a nie zrzyna z netu. Kodzi się to co się chce osiągnąć, więc co gdzie jak napisać się po prostu wie ;].


var
buffer:string;
buffSize:DWORD;
begin
buffSize:=128;
SetLength(buffer,BuffSize);
GetUserName(PChar(buffer), buffSize);
ShowMessage(buffer);
end;

np. sam takiego kodu bym nie napisał - nie rozumiem go... jak nie znaleźć to w necie, czy gdziekolwiek to sam tego nie wymyśle

No to łap helpa i jazda - analiza linia po linii i zrozumiesz. Jak nie ma w helpie jakiejś funkcji to do netu. Ja spoglądam na taki kod i widzę od razu, że służy on do pobrania nazwy użytkownika, pobranie jest oparte na funkcji winapi, po pobraniu nazwy do buforu jest ona wyświetlana na ekranie. Tylko nie wiem czy deklaracja zmiennej buffsize była koniecznością, ale może getusername wymaga żeby drugi parametr był jako var...


może programowanie nie dla mnie.
Może w grafice 3d kiedyś będę dobry

Może tak może nie - nie spróbujesz nie dowiesz się ;).

Co do poprzednich wypowiedzi na temat nauki z książek - z internetu też da się nauczyć programowania, tylko trzeba to robić z głową ;).

// No i jak poprzednicy uważam, że trochę za wysoko na starcie mierzysz z tym botem - najpierw trzeba opanować podstawy języka.
Użytkownik Ali240 edytował ten post 29 sierpień 2007, 16:14
Ja zauważylem, że wielu ludzi biorąc się za naukę programowania popełnia jeden podstwawowy błąd. Biorąc książkę do ręki (nawet dobrą) uczą się od począdku, ale bardzo szybko przeskakują na kolejne strony nieopanowawszy tych z samego począdku. Nauka programowania to nie jest wyścig z czasem. Tu im więcej poświęcisz czasu na każde zagadnienie, które mówi o podstawach tym lepiej. Aby przejść do następnego rozdziału książki musisz dobrze nauczyć się tego co jest w rozdziale tym. Nauczyć to nie znaczy wykuć na pamieć, ale zrozumieć. Jesli natkniesz się na miejsce w którym czegoś nie rozumiesz to wowczas szukasz pomocy u kogoś. Jak juz zrozumiesz to to dopiero możesz przejśc do kolejnych zagadnień z książki. Aby opanować jezyk programowania w stopniu który ciebie zadowoli potrzeba na to kilku lat systematycznej pracy. Tego procesu nie przyspieszysz. Jesli natomiast bedziesz probował go przyspieszyć to efekt bedzie odwrotny.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •