Hey, ich hab eben versucht mir ein Programm zu schreiben das Daten an ein Game Server(NosTale) sendet, so dass ich mich z.B. im Game bewege.
Code:
#include "stdafx.h"
int startWinsock(void);
int main()
{
long rc;
SOCKET s;
SOCKADDR_IN addr;
char buf[256];
rc=startWinsock();
if(rc!=0)
{
printf("Fehler\n");
return 1;
}
else
{
printf("Winsock gestartet!\n");
}
// Socket erstellen
s=socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
{
printf("Fehler: Der Socket konnte nicht erstellt werden");
return 1;
}
else
{
printf("Socket erstellt!\n");
}
// Verbinden
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(4030);
addr.sin_addr.s_addr=inet_addr("79.110.84.87");
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
if(rc==SOCKET_ERROR)
{
printf("Fehler beim connecten..");
return 1;
}
else
{
printf("Verbunden mit 79.110.84.87..\n");
}
// Daten austauschen
while(rc!=SOCKET_ERROR)
{
printf("\nPacket: ");
gets(buf);
send(s,buf,strlen(buf),0);
rc=recv(s,buf,256,0);
if(rc==0)
{
printf("Server hat die Verbindung getrennt..\n");
break;
}
if(rc==SOCKET_ERROR)
{
printf("Fehler: recv");
break;
}
}
closesocket(s);
WSACleanup();
return 0;
}
int startWinsock(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
Irgendwie funktioniert dies nicht so recht, wenn ich das Packet absende passiert in Game nichts und die Verbindung zum Server stürzt im Programm ab.
Bin noch kein Ober Pro darin, eher dabei es zu üben. Wäre es möglich das es über einer dll wahrscheinlicher wäre das es funktioniert oder muss man dabei ganz anders vorgehen damit die Packets angenommen werden?
1. Hat das Spiel keine Verschlüsselung?
2. Du solltest einen Proxy als man-in-the-middle coden. Ansonsten wird das ohne weiteres nichts mit packets an den Server senden und eine Reaktion bekommen, die im Client sichtbar wird.
Kannst du jeze schon vergessen, da du ja ein tut dafür brauchtest.
Als ich angefangen habe, HGWC zu emulieren, habe ich mich noch nie mit Sockets befasst. Nach 1-2 Tutorials in der Art stand die Kommunikation, so what?
@TE: Die NosTale Packets werden nach einer speziellen Struktur aufgebaut sein, damit der Server und der Client erkennen können, dass das tatsächlich Daten sind und wie sie verarbeitet werden müssen. Wenn das Packet nicht korrekt ist, wirst du deine Probleme mit dem Server bekommen. Je nachdem disconnectet der dann dich & damit deinen Client.
Um den Charakter zu bewegen, wirst du über die Verbindung des Spiels Daten senden müssen, ansonsten fehlen ja die gesamten Zusatzinformationen (Daten des Spielers, welcher Spieler ist überhaupt gemeint etc.). Ich glaube, Adroxxx hat mal ein Tutorial zum Sniffen und Verschicken von Packets geschrieben, evtl. ist das ja was für dich.
Es ist schwachsinnig dich zum Server zu verbinden, und dem einfach irgendwas zuzusenden. Du hast dich mit deinem Programm ja nicht einmal eingeloggt oder verifiziert. Du bist mit deinem Client ständig mit einer Socket verbindung mit dem Server verbunden. Und der Server benutzt ein spezielles Protokoll, und vllt eine Verschlüsslung für die Kommunikation mit dem Client.
Dort musst du dich zwischen Schalten mit ner Man in the Middle (Hooking der Winsock Api).
Wenn du dich jetzt aber mit winsock einfach mit dem server connectest, und ihm zeug zuschickst.. da hast du keine verbindung zu deinem client. Was du tun müsstest wäre die Winsock Send Funktion zu Hooken in deinem Client, nicht ein eigenständiges Programm schreiben und dich dann damit verbinden. Du hookst die Winsock Funktionen von deinem Client,und kannst damit dann deine Pakete senden. Wenn du das richtig machst, klappt dann auch das bewegen ingame etc..
Aber dein Ansatz den du bisher hast, das funktioniert so nicht.
p.s: Die Verbindung die abbricht zum Server, das liegt daran weil dich der Server kickt weil du eben nicht das entsprechende Kommunikations Protokoll benutzt für die Kommunikation. Sobald du dem Server was sendest was nicht dem Protokoll entspricht wirst du gekickt.
^Das Protokoll wird er auch nicht automatisch durch einen Winsock Hook erhalten. Das muss er schon selbst nachbauen oder auf einer höheren Ebene eine Art MovePlayer Funktion des Clients aufrufen.
^Das Protokoll wird er auch nicht automatisch durch einen Winsock Hook erhalten. Das muss er schon selbst nachbauen oder auf einer höheren Ebene eine Art MovePlayer Funktion des Clients aufrufen.
Das sollte klar sein denke ich^^
Mir ging es nur darum das er nur so Pakete senden kann vom Client zum Server.
Ansonsten müsste er ja das komplette Protokoll reversen und komplett in sein Programm einbauen, sich zum Server connecten, sich authentifizieren usw.. und ich glaub das führt dann zu weit.
Das Protokoll ansich muss er dann halt selbst reversen, z.b wie er sich bewegt etc. - das ist dann aber unabhängig von seinem Programm, und muss er halt mit Paket Sniffing und Reversing rausfinden.
Aber ich denke wirklich wenn er eine Art Bot programmieren möchte.. wärs einfacher für ihn wenn er den Client hooked und die einzelnen Funktionen aufruft. Ich weiß nicht wie es in Nostale ist, aber da gibts sicher auch spezielle Funktionen für das Bewegen des Charakters etc. die er hooken kann, und womit er dann arbeiten könnte.. auch ohne Pakete manuell zu senden. Bei WoW würde man ja z.b ClickToMove gut nutzen können zum Bewegen der Figur, wie das dann bei Nostale ist.. keine Ahnung - muss er mal selbst Reversen.
[C#] WPE Packets senden 08/10/2013 - .NET Languages - 2 Replies Ich habe mir mit WPE Packets gesnifft und möchte sie nun per C# senden (Für einen Bot für ein Browsergame).
Das Paket:
2 192.168.2.67:51201 95.211.61.148:443 23 WSASend
0000 25 78 74 25 52 61 6E 63 68 45 78 25 31 35 25 31 %xt%RanchEx%15%1
0010 25 43 41 55 3D 25 00 %CAU=%.
Versucht habe ich es so:
WPE Packets in AutoIT senden .... 12/04/2010 - AutoIt - 32 Replies Hallo alle zusammen,
die Überschrift sagt schon vieles ...
Ich will bestimmte Packets die ich von WPE kriege mit AutoIT senden ...
Die so aussehen :
http://public.slay.it/HOUSEOFMOBILE/000006.png
Die möchte ich senden ,aber ich habe momentan keine Ahnung wie ich dies Umsetzen soll ,weil ich diese Befehle,Funktionen ,UDFs nicht hab nicht weiß ...
Naja danke in vorraus ...
AutoIT Packets an SRO Gameserver senden via TCP & NuConnector 05/09/2010 - AutoIt - 6 Replies Hi, also ich versuche gerade weiter mit AutoIT klarzukommen und endlich mal einen Bot(Für Silkroad via NuConnector oder anderes^^) zuschreiben der mit Packets arbeitet, aber irgendwie komme ich nicht weiter, also ich muss ja mit dem Befehl "TCPSend()" arbeiten, aber wie genau mache ich dass, ein Beispiel oder ein Tutorial(Deutsch) wäre nett, wodurch ich das nachvollziehen könnte, habe leider bis jetzt nichts richtiges gefunden, was mir dort weitergeholfen hat.
THX im voraus.
MfG
GomaTa
Packets senden mit Vb 01/29/2010 - .NET Languages - 2 Replies Gibt es eine FUnktion in Vb die ermöglicht Packets zu senden?
Packets senden 11/20/2005 - Ragnarok Online - 4 Replies also ich wollte das jetzt mal geklärt haben : kann man noch mit irgendwelchen packeteditoren irgendwie dupen ? wpe pro geht nicht auf win xp. (packet error)
hab jetz etherpeek 5.1 . ich bin ne arme sau in euro und würd endlich gern herausfinden wie mans richtig macht !!