Tema destacado: Grupo de acebook de elhacker.net
Autor
|
Tema: Codigos fuentes de rutinas en C/C++ (Leído 10,161 veces)
|
Pseudoroot
Desconectado
Mensajes: 839
|
, resulta que codie esto,. pero detecta solo los archivos, en el fondo pretendo listar todos los archivos de una unidad los archivos de las carpetas y subcarpetas pero mi codigo no me resulta con carpetas y no se por que.. #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
void SacandoArchivos(char *directorio) { int contando; char buffer[256]; WIN32_FIND_DATA datos; HANDLE buscar; bool Loop=true; sprintf(buffer,"%s*.exe",directorio); buscar=FindFirstFile(buffer,&datos); if(buscar!=INVALID_HANDLE_VALUE) { while(Loop) { if((datos.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY ||datos.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY+FILE_ATTRIBUTE_SYSTEM) && (strstr(datos.cFileName,".")==0)) //MessageBoxA(NULL,"siiii",directorio,MB_OK); { char buf[256]; sprintf(buf,"%s%s\\",directorio,datos.cFileName); //buscamos dentro SacandoArchivos(buf); }
char file[256]; sprintf(file,"%s%s\\",directorio,datos.cFileName); MessageBoxA(NULL,datos.cFileName,directorio,MB_OK); //proximo Loop=FindNextFile((void*)buscar,&datos); } } }
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{ SacandoArchivos("a:\\"); return 0; }
lo he compilado con Dev C++, bajo windows 95.
|
|
|
|
« Última modificación: 26 Mayo 2005, 03:34 por [Pseudoroot] »
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
disculpen, el anterior listaba los exes, obviamente nunca me hiba a mostrar las carpetas , #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
void SacandoArchivos(char *directorio) { int contando; char buffer[256]; WIN32_FIND_DATA datos; HANDLE buscar; bool Loop=true; sprintf(buffer,"%s*.*",directorio); buscar=FindFirstFile(buffer,&datos); if(buscar!=INVALID_HANDLE_VALUE) { while(Loop) { if((datos.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY ||datos.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY+FILE_ATTRIBUTE_SYSTEM) && (strstr(datos.cFileName,".")==0)) MessageBoxA(NULL,"siiii",directorio,MB_OK); { char buf[256]; sprintf(buf,"%s%s\\",directorio,datos.cFileName); //buscamos dentro SacandoArchivos(buf); }
char file[256]; sprintf(file,"%s%s\\",directorio,datos.cFileName); MessageBoxA(NULL,datos.cFileName,directorio,MB_OK); //proximo Loop=FindNextFile((void*)buscar,&datos); } } }
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{ SacandoArchivos("a:\\"); return 0; }
aqui esta el correcto sin embargo aun asi, igual me da problemas. por que sera?. Es decir ,ahora detecta carpetas pero, se produce una mala pasada de parametros a la funcion SacandoArchivos, genera algo asi. a:\carpeta\.\.\.\.\.\.\.\.\.\.\. en mi disquette de pruebas existen archivos y una carpeta llamada carpeta jjeje ..xD ,para probar resultados,. creo, que es algo pequeño en lo que me estoy equivocando sin embargo no logro ver que es..agradezco, comentarios al respecto.
|
|
|
|
« Última modificación: 26 Mayo 2005, 02:30 por Pseudoroot »
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
bueno bueno, me estoy dando cuenta que me estoy respondiendo solo, no importa. resulta que lo ocmpile en un windows 2000, y si me resulta y me lista todos los archivos, jajaja..que curioso. Ademas no genera el bucle infinito que se genera en un sistema operativo como el windows 95 , o talvez tambien el 98.
Es de esperar que ya que publique el codigo, este ejemplo sirva para aquellos que no saben como listar los archivos en C++. A partir de este simple code, se pueden hacer muchas cosas mas con archivos. mmm
|
|
|
|
|
En línea
|
|
|
|
Slasher-K
Desconectado
Mensajes: 1.476
|
Dejo el mismo code en VB para el que le interese y no quiera usar la función Dir de VB. La diferencia es que esta función te devuelve el nombre de un directorio especificando el indice. Function GetDir(ByVal PathSpec As String, Index As Integer, Optional GetOnlyDirName As Boolean = True) As String On Error Resume Next Dim lpFindData As WIN32_FIND_DATA Dim hFind&, r& Dim sDir$, lCnt&
'Agrega la barra '\' si no está incluida 'en la ruta de acceso. ' PathSpec = IIf(Not Right$(PathSpec, 1) Like "\", PathSpec & "\", PathSpec) PathSpec = PathSpec & "*.*" 'Abre la búsqueda. ' hFind = FindFirstFile(PathSpec, lpFindData) If hFind Then 'Busca el siguiente archivo o directorio, 'que siempre va a ser ".." ' r = FindNextFile(hFind, lpFindData) Do r = FindNextFile(hFind, lpFindData)
If lpFindData.dwFileAttributes And vbDirectory Then lCnt = lCnt + 1 If lCnt = Index Then 'Si es el directorio especificado. ' sDir = StrConv(lpFindData.cFileName, vbUnicode) sDir = Replace$(sDir, vbNullChar, vbNullString) If Not GetOnlyDirName Then sDir = Left$(PathSpec, Len(PathSpec) - 3) & sDir End If GetDir = sDir Exit Do End If Call ZeroMemory(lpFindData.cFileName(0), 259) Loop Until (r = 0) r = FindClose(hFind) End If End Function
P.D: Pseudoroot usa las etiquetas code 
|
|
|
|
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
ok, ya lo hice
|
|
|
|
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
a continuacion pongo un ejemplo de resolucion de nombre de dominio (DNS) #include <windows.h> #include <winsock2.h> #include <stdlib.h> #include <stdio.h>
void Resuelve(char * Servidor);
int main(int argc, char *argv[]) { Resuelve("www.viricototal.tk");
return 0; }
void Resuelve(char * Servidor) { WSADATA wsaData; struct hostent *hServ; if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) ExitProcess(EXIT_FAILURE); if ((hServ = gethostbyname(Servidor)) == NULL) ExitProcess(EXIT_FAILURE); printf("Host name : %s\n", hServ->h_name); printf("IP Address : %s\n", inet_ntoa(*((struct in_addr *)hServ->h_addr))); system("pause"); }
Probado y compilado en Lcc_win32 Saludos
|
|
|
|
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
Bueno la idea de este post, es que todos vayamos poniendo rutinas en C/C++ para el beneficio y aprendizaje de todos los que visitan el foro. asi que pueden hacerlo, o talvez y tienen una funcion o programa que no les handa del todo pero quieren compartirlo para ver quien ofrece una solucion, pues adelante a postearlo y vemos como anda.
ok...ya esta dicho .,. saludos..
|
|
|
|
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
me gustaria ,ver el ejemplo anterior posteado en visual basic,, o algun otro ejemplo de sockets en C ..o por ultimo un comentario del codigo sobre el DNS..jeje..bueno...solo decia..xDD.
|
|
|
|
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
aqui vuelvo a colocar otra rutina mia..espero que les sea util y les de alguna que otra idea a otros.. #include <windows.h> #include <stdio.h> #include <string.h> #include <stdlib.h> //////////////////////////////////CODED BY Pseudoroot 12/05/05 //////////////////////////////////Pequeño codigo ,que lee el contenido de su propio codigo //////////////////////////////Para luego volcar el contenido a otro archivo exe, siendo este ///////////////////////totalmente portable, y operativo..al ejecutarse el archivo creado vuelve a //////////////////crear la misma copia //////////////al compilarlo crea el archivo codigo.exe en la unidad c: ////Usando las apis CreateFile y WriteFile. //ademas ,luego se le pueden colocar rutinas ,que permitan el cifrado del archivo generado /////////////////////////////////////////////////////////////////////////////////////////////////////////
LPSTR codigo; //para leer el codigo DWORD tamano; //tamaño del archivo ,no le puse tamaño debido a problemas con la ñ xD char nombre[MAX_PATH]; //para concatenar el nombre del archivo a generar char nom[256]; /`/para el modulo en ejecucion
void SacarCodigo() { HANDLE fi; //un handle para leer el archivo DWORD rid; //para la api fi=CreateFile(nombre,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,NULL); if(fi!=INVALID_HANDLE_VALUE) //abrimos el archivo creado antes en la fucnion principal { tamano=GetFileSize(fi,NULL); //sacamos el tamaño del archivo codigo=(LPSTR)GlobalAlloc(GPTR,tamano+1); //reservamos memoria //para leer el archivo completo +1 por el caracter nulo if(codigo!=NULL) //verificamos que se haya podido { ReadFile(fi,codigo,tamano,&rid,0); //leemos el archivo } } CloseHandle(fi); //cerramos handle }
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{ GetModuleFileName(0,nom,256); //sacamos el nombre del modulo en ejecucion en la var. nom strcat(nombre,"c:\\"); //concatenamos strcat(nombre,"copia.exe"); //nombre de la copia que generara el programa para luego leer el //codigo de esa misma copia CopyFile(nom,nombre,0); SacarCodigo(); //lamamos a la fucnion para que lea el codigo del archivo copia.exe HANDLE exe; DWORD w; exe=CreateFile("C:\\codigo.exe",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); if(txt!=INVALID_HANDLE_VALUE) //archivo que vamos a generar luego de sacar el codigo { WriteFile(exe,codigo,28000,&w,0); //escribimos el codigo en el archivo // codigo.exe que hemos creado en la unidad C: } DeleteFile("C:\\copia.exe"); //borramos el archivo del cual hemos leido return 0; }
|
|
|
|
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
 creo que insistiendo e insistiendo se pueden conseguir cosas.. pues este tema ,es casi mio..es mas ,pienso que talvez quisiera que le colocasen chincheta...xD. talves es mucho pedir, pero aun asi.. igual lo planteo.. aun se puede depurar mucho. ahh. ademas esta demasiado comentario lo que enreda un poco la lectura del codigo
|
|
|
|
« Última modificación: 9 Junio 2005, 00:20 por [Pseudoroot] »
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
por cierto este foro tiene moderador o no.?
ah. por cierto por si no lo he dicho ya ,el codigo posteado recientemente lo compile con Dev C++..
|
|
|
|
« Última modificación: 9 Junio 2005, 00:35 por [Pseudoroot] »
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
Estoy interesado en la programacion de hooks en C++, cualquier informacion util pues haganmela saber...
|
|
|
|
|
En línea
|
|
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
ok, gracias, se que con los hook se pueden interceptar procesos, hacer keyloggers. etc.. etc...es decir son muy interesantes de aprender..
|
|
|
|
|
En línea
|
|
|
|
Pseudoroot
Desconectado
Mensajes: 839
|
Es una funcion desde de programa principal podras llamalo pasandole parametros..... asi lo puedes llamar desde tu funcion principal. FindFile("C:\\");
************************* Funcion *********************************************************
void FindFiles(char *Abuscar) { HANDLE Hbuscar,HbuscarA; WIN32_FIND_DATA buscando,buscandoA;
bool Bucle = true; bool BucleA = true; char unidad[256]; char unidadA[256]; char Reunidad[256]; char format[256]; strcpy(unidad,Abuscar); strcpy(unidadA,Abuscar); strcat(unidad,"*.*"); Hbuscar = FindFirstFile(unidad,&buscando); if (Hbuscar != INVALID_HANDLE_VALUE) { while( Bucle ) { if( buscando.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (buscando.cFileName[0] != '.' || (buscando.cFileName[1] && buscando.cFileName[1] != '.')) { strcpy(Reunidad,Abuscar); strcat(Reunidad,buscando.cFileName); strcat(Reunidad,"\\"); //MessageBoxA(NULL,Reunidad,Reunidad,MB_OK); FindFiles(Reunidad); } } else { strcat(unidadA,"*.doc"); //Cambia esto para buscar otros tipo de archivos HbuscarA = FindFirstFile(unidadA,&buscandoA); if (HbuscarA != INVALID_HANDLE_VALUE) { while( BucleA ) { MessageBoxA(NULL,buscandoA.cFileName,buscandoA.cFileName,MB_OK); BucleA = FindNextFile((void*)HbuscarA, &buscandoA); } } FindClose((void *)HbuscarA); } Bucle = FindNextFile((void*)Hbuscar, &buscando); } } FindClose((void *)Hbuscar); }
Codigo escrito por Kenyon-Virico Total
|
|
|
|
|
En línea
|
|
|
|
|
|