elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:46  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Codigos fuentes de rutinas en C/C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Codigos fuentes de rutinas en C/C++  (Leído 10,161 veces)
Pseudoroot


Desconectado Desconectado

Mensajes: 839



Ver Perfil
Codigos fuentes de rutinas en C/C++
« en: 18 Mayo 2005, 18:46 »

, 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..

Código:
#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 Desconectado

Mensajes: 839



Ver Perfil
Re: Problemas al detectar directorios en una unidad
« Respuesta #1 en: 18 Mayo 2005, 19:00 »

disculpen, el anterior listaba los exes, obviamente nunca me hiba a mostrar las carpetas ,

Código:
#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 Desconectado

Mensajes: 839



Ver Perfil
Re: Problemas al detectar directorios en una unidad
« Respuesta #2 en: 18 Mayo 2005, 21:16 »

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 Desconectado

Mensajes: 1.476


Ver Perfil
Re: Problemas al detectar directorios en una unidad
« Respuesta #3 en: 20 Mayo 2005, 03:21 »

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.

Código:
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 :P
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Pseudoroot


Desconectado Desconectado

Mensajes: 839



Ver Perfil
Re: Problemas al detectar directorios en una unidad
« Respuesta #4 en: 26 Mayo 2005, 02:31 »

ok, ya lo hice
En línea

Pseudoroot


Desconectado Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #5 en: 28 Mayo 2005, 03:32 »

a continuacion pongo un ejemplo de resolucion de nombre de dominio (DNS)



 
Código:
#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 Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #6 en: 28 Mayo 2005, 18:31 »

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 Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #7 en: 8 Junio 2005, 22:24 »

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 Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #8 en: 8 Junio 2005, 22:42 »

aqui vuelvo a colocar otra rutina mia..espero que les sea util y les de alguna que otra idea a otros..

Código:
#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 Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #9 en: 8 Junio 2005, 22:45 »

 :D

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 Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #10 en: 8 Junio 2005, 23:09 »

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 Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #11 en: 9 Junio 2005, 00:38 »

Estoy interesado en la programacion de hooks en C++, cualquier informacion util pues haganmela saber...
En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.476


Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #12 en: 9 Junio 2005, 01:13 »

Hooks en Windows

Funciones más utilizadas para controlar los hooks

SetWindowsHookEx
UnhookWindowsHookEx
CallNextHookEx
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Pseudoroot


Desconectado Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #13 en: 9 Junio 2005, 02:28 »

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 Desconectado

Mensajes: 839



Ver Perfil
Re: Codigos fuentes de rutinas en C/C++
« Respuesta #14 en: 9 Junio 2005, 03:06 »

Es una funcion desde de  programa principal podras llamalo pasandole parametros.....

asi lo puedes llamar desde tu funcion principal.

FindFile("C:\\");

Código:



*************************   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

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Rutinas Interesantes
Programación Visual Basic
soplo 4 12,201 Último mensaje 16 Diciembre 2006, 13:58
por soplo
problema con rutinas javascript agregadas dinamicamente
Desarrollo Web
kadmo 0 296 Último mensaje 30 Diciembre 2011, 14:57
por kadmo
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines