Underc0de

Programación General => C / C++ => Códigos Fuentes => Mensaje iniciado por: Jhonjhon_123 en Febrero 23, 2010, 07:45:44 PM

Título: [C] Empezar con CreateFile y terminar creando un worm
Publicado por: Jhonjhon_123 en Febrero 23, 2010, 07:45:44 PM
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.



#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] .
Más información (http://msdn.microsoft.com/en-us/library/aa363858%28VS.85%29.aspx)

Y lo mismo con WriteFile, nos permite cuantos bytes escribir en los archivos y ponerle el nombre.
Más información (http://msdn.microsoft.com/en-us/library/aa365747%28VS.85%29.aspx)

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.



#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
Título: Re:[C] Empezar con CreateFile y terminar creando un worm
Publicado por: P4|3L0 en Marzo 31, 2016, 05:51:26 AM
Gracias por guardarme los códigos.  :o :o :o