Server Spiegelung in C++

Hallo,

habe mich hier angemeldet um mich in die Materie der Programmiersprachen schneller reinzutasten, und hoffe dass ihr mir helfen könnt.


Ich bräuchte ein Code am besten in C++ dessen Inhalt ein Server spiegelt/emuliert. Möchte die Packete die ich mit Wireshark aufgezeichnet habe (C-Arrays) in ein Programm einbauen, damit ein Internet abhängiges Programm in Offline-Modus startet.
Der erforderliche Code soll von meinem Rechner geladen werden und nicht von dem Host.

Und da ich im programmieren eine Anfängerin bin, dachte ich mir Ihr könnt mir weiterhelfen.



Was meint Ihr dazu? für jegliche Hilfe bin ich dankbar.




Linette
 
also in Klartext noch mal schritt für schritt,


1. Habe ein Programm für dessen Startvorgang zwingend eine Internetverbindung erforderlich ist.
2. Somit starte ich das Programm mit vorhandener Internetverbindung, und zeichne mit Wireshark die komplette Verbindung auf.
3. Baue die aufgezeichnete Pakete (C-Arrays) in ein selbstgeschriebenes Programm ein (Server), welches dem Programm vorgaukelt mit Internet verbunden zu sein.

Könnte mir einer ein Beispiel Source Code in C++ vorschlagen, oder eine Idee wie ich mein Projekt am besten realisieren könnte.


@Chromatin ich hoffe es ist jetzt alles verständlich.
 
Was ist nun die konkrete Frage?
Ob und wo es Beispielcodes für's "networking" gibt?
Ich würde da eher auf QtNetwork oder Boost:asio verweisen:
Network Examples | Documentation | Qt Project
doc/html/boost_asio/example/cpp03/echo/blocking_tcp_echo_server.cpp - 1.54.0

Es kommt allerdings darauf an, welche Kenntnisse bereits vorhanden sind.

Am einfachsten wäre es wohl, im eigenen Programm STDIN und STDOUT zu verwenden und dann ein Programm wie Netcat zu nutzen, welches die Netzwerkkommunikation übernimmt (=> Stichwort Pipes,"Umleitungen" bei Binärdaten müsste man aber ggf. noch paar Sachen beachten/anpassen. Das dürfte aber immer noch einfacher sein, als mit Sockets zu hantieren).

Und in der Regel werden nicht einfach nur "char-arrays" ausgetauscht - es existiert irgendein, wenn auch einfaches, "Protokoll" ;). Sofern also die Anfrage an den Server dynamisch ist (und dessen Antwort diese Anfrage berücksichtigt), wird man mit statischen Antworten keinen Erfolg haben.

PS: i.d.R werden solche Netzwerkspielereien oft erstmal in Python/Perl/Ruby umgesetzt - ist meist viel weniger Aufwand, bis man etwas funktionierendes hat.
 
Ein weiterer Begriff, den du dir hier anschauen könntest, wäre "Caching". Dabei werden bestimmte Informationen solange zwischengespeichert, bis eine Internetverbindung wieder vorhanden ist oder die Daten veraltet sind. Eine einfache Implementierung wäre z.B. ein Proxy, welcher zwischen Server und Client geschaltet wird und z.B. beim Fehlen einer Internetverbindung immer die letzten vom Server gelieferten Daten an den Client weitergibt. Dazu ist es notwendig das Protokoll und die Programmlogik zu kennen, mit denen Antworten generiert werden.

edit:
In jedem Fall musst du die Netzwerkverbindung des Client-Programms umbiegen. Das Clientprogramm muss dabei, anstatt zum Orginalserver, zum Proxy verbinden. Das kann im Falle von DNS beispielsweise via hosts-Datei, DNS Cache Poisioning oder Routing-Angriffen erfolgen. Ohne weitere Informationen zum Programm oder zur Logik dahinter kann man hier allerdings keine konkreten Vorschläge machen.
 
Zuletzt bearbeitet:
Zurück
Oben