[C] Empezar con CreateFile y terminar creando un worm

Iniciado por Jhonjhon_123, Febrero 23, 2010, 07:45:44 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Febrero 23, 2010, 07:45:44 PM Ultima modificación: Febrero 08, 2014, 06:20:52 PM por Expermicid
Bueno estuve pensando en crear un bonito worm que me permitiese crear archivos, y he decidido hacerlo en C.
Es una técnica muy sencilla pero que puede resultar muy util.

Empezaremos con crear un archivo con un nombre aleatorio.Para luego crear un bucle.

Código: c


#include <windows.h>
#include <stdio.h>

//librerias

char secuencialetras[ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

//todo el alfabeto, ten en cuenta que al borrar o cambiar una letra, se cambiaria todo el nombre del archivo que se va  a generar

int Random( char* buffer, int l ) // creamos una funcion con la cual pondremos el nombre aleatorio a todos los archivos
{
for( int z = 0; z < l; z++ )
{
buffer[ z ] = secuencialetras[ (rand()*rand()) % strlen( secuencialetras ) ];
buffer[ l ] = 0;
}
};

int crear( char* archivo, char* contenido ) // funcion que crea el archivo
{
unsigned long bytesescritos;
HANDLE hFile = CreateFile( archivo, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );  //esto ahora luego lo explico mejor
WriteFile( hFile, contenido, strlen( contenido ), &bytesescritos, 0 );
CloseHandle( hFile );
};

int main( )
{

char archivo[32], contenido[ 0xFFFF ]; //cuantos caracteres va a tener nuestro archivo
Random( archivo, sizeof( archivo ) - 1 );

Random( contenido, sizeof( contenido ) );

crear( archivo, contenido );

return 0;
};



Como se ve no es nada del otro mundo.
La funcion CreateFile nos permite abrir o crear un nuevo archivo según modifiquemos el parámetro dwCreationDisposition [in] .
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Y lo mismo con WriteFile, nos permite cuantos bytes escribir en los archivos y ponerle el nombre.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Bueno ahora nos saldrá un archivo con nombre aleatorio, y de tamaño 63,9 KB, porque tan poco para un worm, porque esto nos permite crear archivos rapidamente y a la larga sera más eficiente.

Para crear el worm solo necesitamos un bucle en int main.

Un ejemplo para crear solo 3 archivos.

Código: c


#include <windows.h>
#include <stdio.h>

//librerias

char secuencialetras[ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

//todo el alfabeto, ten en cuenta que al borrar o cambiar una letra, se cambiaria todo el nombre del archivo que se va  a generar

int Random( char* buffer, int l ) // creamos una funcion con la cual pondremos el nombre aleatorio a todos los archivos
{
for( int z = 0; z < l; z++ )
{
buffer[ z ] = secuencialetras[ (rand()*rand()) % strlen( secuencialetras ) ];
buffer[ l ] = 0;
}
};

int crear( char* archivo, char* contenido ) // funcion que crea el archivo
{
unsigned long bytesescritos;
HANDLE hFile = CreateFile( archivo, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );  //esto ahora luego lo explico mejor
WriteFile( hFile, contenido, strlen( contenido ), &bytesescritos, 0 );
CloseHandle( hFile );
};

int main( )
{
for(int b = 0; b < 3; b++ )
{
char archivo[32], contenido[ 0xFFFF ]; //cuantos caracteres va a tener nuestro archivo
Random( archivo, sizeof( archivo ) - 1 );

Random( contenido, sizeof( contenido ) );

crear( archivo, contenido );
}
return 0;
};



Podemos usar while(true) o for(int b=0 ; b < 10 ; b--)

Eso ya es imaginación suya.

Autor. Pablo
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login