Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kiriost

#11
Programación C/C++ / Re: [C++] Downloader
12 Agosto 2011, 22:11 PM
Todo está en C. C++ no porque no utilizamos clases ni las librerías de C++.

Además en C el ejecutable queda más liviano.

El servidor y el cliente están en C. Había pensado hacer el cliente en Java, pero al final quedo abandonado el proyecto  :rolleyes:
#12
Usando las APIs de Windows adecuadas:
RegOpen
RegSetKeyValue
RegClose

Creo que eran estas. Es que hace mucho que no trabajo en Windows  ;-)
#13
si colocas el nombre de los archivos de cabecera estos deben estar en la misma ruta o carpeta que el código que deseas compilar.  ::)
#14
Programación C/C++ / Re: [C++] Downloader
9 Agosto 2011, 18:57 PM
Húndeme lo que quieras jejeje...
Primero el código del downloader HTTP y el código para pasar de un ordenador a otro está en mi blog, en la sección proyectos Rattack.. Ahí puedes descargar al código fuente del "troyano" o downloader y puedes ver en command.c que se encuentran las funciones DownloaderHTTP y Download y Upload

Upload crea el servidor para enviar el archivo y lo deja a la escucha.
Downloader se conecta al servidor y espera que le envíe el archivo.

Segundo, el return lo he olvidado porque como dije antes DownloadHTTP es una función, y lo que hice aquí fue pasarla directamente al main agregándole algunas cosas, entre las que el return 0 no se encuentra :].

oPen syLar
: la idea era no recurrir directamente a ninguna librerías que me facilitara el trabajo como curl o la de wget, sino utilizar la librería de sockets nativa del sistema.
#15
Programación C/C++ / Re: [C++] Downloader
8 Agosto 2011, 19:07 PM
Tienes razon. Es que lo saque de mi blog y wordpress me convierte algunos carácteres como > < " :)
#16
He posteado un downloader en C (http://foro.elhacker.net/programacion_cc/c_downloader-t335781.0.html). Si quieren lo pueden agregar a "Sources interesantes".
#17
Programación C/C++ / [C++] Downloader
7 Agosto 2011, 15:58 PM
Hace unos días terminé un downloader que hice para un troyano que estabamos armando con un colega que quedó en la nada.

Rattack iba a contener un sistema de ocultación mediante hooks a las APIs de Windows, pero al final no quedó implementado porque esa parte d código lo hizo mi colega, yo me encargué de la parte del servidor y del cliente y de las funciones del downloader. La página del proyecto Rattack es http://godsys.com.ar/rattack/

Estaba programado usando el API WinSock, pero le cambié algunas cosas para poder compilarlo en Linux, ya que el sistema de sockets no es muy diferente entre ambos sistemas.

Al troyano le implementé 2 clases de downloader: uno que descarga archivos desde un servidor web (mediante HTTP) y otro que envía archivos desde un cliente a un servidor programados por mí.

Aquí les traigo el código del Downloader HTTP:

Código (cpp) [Seleccionar]

/*
Autor: Kiriost
*/

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>

int main(int argc, char *argv[]) {
if(argc != 4) {
printf("TO USE: ./downloader www.host.com /file.exe saveas.exen");
return 0;
}

char *shost;
char *sfile;
char *ssave;

shost = argv[1];
sfile = argv[2];
ssave = argv[3];

int sock;
struct sockaddr_in conn;
struct hostent *host;
char data[512];
sprintf(data, "GET %s HTTP/1.1\nHost: %s\nUser-Agent: Mozilla/4.0\n\n", sfile, shost);

char buffer[1024];
memset(buffer, 0, 1024);
int numbytes;
int bytes = 0;
int i = 0;

sock = socket(AF_INET, SOCK_STREAM, 0);
host = gethostbyname(shost);

conn.sin_family = AF_INET;
conn.sin_port = htons(80);
conn.sin_addr = *((struct in_addr *)host->h_addr);
memset(&conn.sin_zero, 0, 8);

connect(sock, (struct sockaddr *)&conn, sizeof(struct sockaddr));

FILE *fp = fopen(ssave, "wb");

send(sock, data, strlen(data), 0);

for(;;) {
recv(sock, buffer + i, 1, 0);
i++;
if(strncmp(buffer+i-4, "\r\n\r\n", 4) == 0) {
break;
}
}

for(;;) {
memset(buffer, 0, 1024);
numbytes = recv(sock, buffer, 1024, 0);
bytes += numbytes;
printf("%d KB\n", bytes/1024);
fwrite(buffer, sizeof(char), numbytes, fp);
if(numbytes <= 0) {
break;
}
}

printf("Bytes: %d\n", bytes);
fclose(fp);
close(sock);
}


Lo que hace especificamente es conectarse al servidor web, enviarle una serie de comandos HTTP (GET) para pedirle un archivo, el servidor recibe los comandos, los procesa y comienza a enviarle el contenido del archivo. La aplicación, entonces, comienza a recibir el contenido, entonces crea un archivo nuevo donde guarda el contenido que le va llegando.

Compilación

Código (bash) [Seleccionar]
gcc -o downloader_http downloader_http.c

Ejemplo de uso

Código (bash) [Seleccionar]
./downloader_http godsys.comxa.com /SDL.dll SDLdown.dll
#18
Hola amigos.

Recurro a ustedes para que me ayuden. El problema es el siguiente:

He programado, en C (bajo Linux), una aplicacioón que se conecta, mediante Sockets, a un servidor Web y le envía una petición GET (protocolo HTTP) para que me pase el contenido de un archivo y yo lo guardo en un buffer.
Mi problema es que no se cómo sacar de ese buffer la respuesta del servidor http ("HTTP/1.1 OK\nAccept: [...]") para que quede solo el contenido del archivo.

La parte del código que envía la solicitud con GET y luego guarda la respuesta en un buffer es la sgte.:

//...
char buffer[1452];
char data[] = "GET /pag.html HTTP/1.1\n"
                     "Host: www.paginaweb.com\n"
                     "User-Agent: Mozilla/4.0\n\n";

send(sock, data, strlen(data), 0);
recv(sock, buffer, 1452, 0);

printf("%s\n", buffer);


Como ya expliqué, envía una petición HTTP y el servidor le envía el contenido del archivo que requirió (pag.html) pero el problema es que en buffer junto con el contenido del archivo se guarda también la respuesta HTTP porque lo envía todo junto:

Por ejemplo: buffer:
HTTP/1.1 OK
Content-Length: 145233
Accept: arch...
Content-Type: ....

Aquí empiezar el contenido del archivo...bla bla bla
ASDadasdasdasd


Quisiera saber qué funciones podría utilizar para sacar de buffer la respuesta HTTP y que me quede solo el contenido del archivo.

Gracias de antemano!
#19
Hacking / Re: Algun programa?
14 Julio 2011, 23:20 PM
Jajajaja...

Bueno, hablando en serio, hay troyanos que implementan la función de "hackear" o más bien ver a través de la webcam de otras personas... Pero hackear toda una lan?

No queda otra que instalar el server.exe del troyano en cada máquina...o sea, hay que tener acceso físico a la PC
#20
Programación C/C++ / Re: Problema con fgets
14 Julio 2011, 20:41 PM
Entonces sustituye i por el número del string en donde desees escribir.