elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 83
1  Programación / Programación C/C++ / Re: Elegir ultimo fichero metido dentro de una carpeta en C++ Linux en: 10 Julio 2019, 13:17 pm
Si puedes usar C++17, puedes utilizar std::filesystem y la función:

https://en.cppreference.com/w/cpp/filesystem/last_write_time

Con eso puedes mirar todos los archivos que tiene el directorio, sacar su última fecha de modificación y ordenarlos quedándote con el que te interese.

Si no puedes usar C++17, puedes usar la biblioteca boost:

https://www.boost.org/doc/libs/1_70_0/libs/filesystem/doc/reference.html

Que se parece mucho a la de C++17.

Saludos.
2  Programación / Programación C/C++ / Re: punteros como parametros de funciones que no retornan nada... buena idea? en: 23 Febrero 2019, 18:42 pm
Un pequeño apunte. Los objetos de tipo persona los estás creando dinámicamente:
Código
  1. Persona *personaA = new Persona();
  2. Persona *personaB = new Persona();
  3. // ...
  4. delete personaA;
  5. delete personaB;

Si los creas estáticamente no necesitas usar <new>:
Código
  1. Persona personaA; // ya llama al constructor sin parametros sin especificarlo nosotros
  2. // ...
  3. // no es necesario liberar memoria ya que no se ha reservado memoria dinamicamente

Cierto, se me ha pasado, el copy-paste....

Muchas gracias y saludos.
3  Programación / Programación C/C++ / Re: punteros como parametros de funciones que no retornan nada... buena idea? en: 23 Febrero 2019, 16:34 pm
[EDITO] : No había visto el post de YreX-DwX  :-(

Hola digimikeh,

Todo depende de cómo haya sido reservada la memoria a la que apunta el puntero "nombre". Tienes dos casos:

  • Que fuera reservada dinámicamente con new, en tal caso, debería liberarse en algún sitio, pero no necesariamente ahí.
  • Que fuera reservada estáticamente, en tal caso no es necesario que se libere. Un ejemplo podría ser un literal como:
Código
  1. const char* cadena = "hola"

    En éste último caso la duración de esa memoria será hasta el fin de la ejecución de tu programa y no es necesario que la liberes.

    Un ejemplo de ambos casos sería(fíjate que cadenaB se libera porque se reservó con new):
    Código
    1. const char* cadenaA = "HOLA";
    2. char* cadenaB = new char[5];
    3. strncpy(cadenaB, cadenaA, 5);
    4.  
    5. Persona personaA = new Persona();
    6. Persona personaB = new Persona();
    7.  
    8. personaA.IngresarNombre(cadenaA);
    9.  
    10. personaB.IngresarNombre(cadenaB);
    11.  
    12. delete[] cadenaB;
    13.  

    Saludos.
    4  Programación / Programación C/C++ / Re: no detecto el error en: 15 Diciembre 2016, 12:50 pm
    Hola, tienes que vaciar el fichero stdout antes de llamar a la función sleep.

    Mira aquí: http://stackoverflow.com/questions/13568388/c-sleep-function-not-working

    Código
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include <unistd.h>
    5.  
    6. int main(){
    7.  
    8.    while(1){
    9.  
    10.        fflush(stdout);
    11.        putchar('F');
    12.        sleep(1);
    13.        fflush(stdout);
    14.        putchar('G');
    15.        sleep(1);
    16.    }
    17.  
    18.    return 0;
    19. }
    5  Programación / Programación C/C++ / Re: Duda acerca de la programación y GitHub en: 4 Diciembre 2016, 17:07 pm
    Hola muchas gracias por responder Ivan eso es un juego en Java que estás haciendo verdad?

    Este este el núcleo por así decirlo? https://github.com/ivancea/RogueLikeGame/blob/master/RogueLikeGame/src/es/hol/ivancea/RogueLikeGame.java

    Y a ver yo no quiero estudiar al 100% metasploit simplemente he puesto ese ejemplo podría haber puesto cualquier otro pero es más que nada para saber donde se ubica normalmente el corazón del programa, y otra pregunta espero no ser muy pesado, yo ahora mismo mis programas en C++ llego y le pongo esto en la terminal para compilarlos:

    Código:
    g++ programa.cpp -o programa

    Funciona de maravilla pero ahora me pregunto yo, y si en vez de un fichero (programa.cpp) fuesen muchos ficheros separados y en diferentes carpetas y todo eso como los compilo todos juntos para que funcione bien? O esto no es así? Muchas gracias a todos!!!! Aunque ahora pensándolo bien Metasploit no ha sido para nada el mejor ejemplo que podía haber puesto ya que según tengo entendido Ruby es un lenguaje interpretado no compilado,

    Saludos!!

    Para eso tienes un precioso fichero Makefile en la mayoría de los proyectos de C++.

    De hecho si en la carpeta donde tienes el fichero "programa.cpp" creas el fichero "Makefile":

    Código:
    #Makefile prueba
    all: prueba.o
    g++ prueba.o -o prueba

    prueba.o: prueba.cpp

    Y luego abres una terminal y haces:
    Código:
    make

    Seguramente te compilará el programa( si yo no me he equivocado escribiéndolo claro).

    ¿Y cómo sé manejar esa sintaxis? Pues léete el manual de make.

    Pero vamos básicamente es:

    Código:
    regla1: dependencias
          cosa que hacer cuando se ejecuta la regla1

    regla2: dependencias
          cosa que hacer cuando se ejecuta la regla2

    Para ejecutar la regla1 puedes hacer:

    Código:
    make regla1

    O simplemente make, pues si no pones nada, pilla la primera regla que haya en el fichero Makefile.

    Para ejecutar la regla2 forzosamente tienes que poner:

    Código:
    make regla2
    6  Programación / Programación C/C++ / Re: Duda acerca de la programación y GitHub en: 4 Diciembre 2016, 16:51 pm
    Hola Orubatosu muchas gracias por responder esa parte ya la entendía pero la que no entiendo es que por ejemplo cojo entro aquí:

    https://github.com/rapid7/metasploit-framework

    Como puedo ver el primer archivo que programaron para ir enlazando todo y ver como se estructura viendo las librerías que importa y en que momento utiliza las funciones y todo eso, no se si me explico

    Saludos
    Eso está hecho en Ruby, lo que quiere decir que antes como mínimo deberías tener conocimiento medio de ese lenguaje. Hoy en día hay muchas herramientas para la automatización del despliege de las aplicaciones (proceso requerido para que éstas empiecen a funcionar), normalmente cada lenguaje tiene un conjunto de herramientas que te permiten hacerlo. Esas herramientas suelen tener archivos de configuración que te permiten ver cómo está estructurado ese proceso, algo que te puede aclarar mucho las cosas sobre dónde está el punto de entrada de las mismas.

    De todas maneras lo que pides es complicado si no hay documentación de por medio o si el software es muy grande, en ese proyecto han contribuido 400 personas, como supongo que intuirás, habrá gente que no tiene ni idea de cómo está hecha otra parte de la aplicación. Si en el desarrollo de aplicaciones cada programador tuviera que saber cómo está implementado cualquier otro módulo, el desarrollo de software no sería factible, ni en tiempo, ni en coste. De hecho lo tuyo es aún más complicado, estás intentando entender la arquitectura de un software realizándole Ingeniería Inversa al código.

    En C++ lo que más se usa son las https://es.wikipedia.org/wiki/GNU_build_system . Y por todo esto que te cuento es tan importante la Ingeniería del Software hoy día, poner de acuerdo a tantísima gente no es fácil.

    No es por desanimarte, pero digo que para entender un software al completo te debes dedicar por completo a estudiarlo, y si no tienes a nadie que te introduzca en el tema y no hay documentación, puedes morir en el intento.

    Además para cada lenguaje de programación, o ellos mismos u otras empresas establecen guías de estilo, que pueden ir desde convenciones para el nombrado de variables, métodos y clases hasta los nombres y la organización de las carpetas.

    EDIT: De hecho se usan patrones de diseño de software, patrones para la arquitectura como el MVC (Modelo Vista Controlador) que está por todos lados. Aunque parezca que no, te aseguro que si metes a 20 personas en una habitación a trabajar conjuntamente en un software, únicamente picando código cada uno por su lado seguramente habrá un 99% de probabilidades de que la aplicación falle en su despliege.

    Saludos.
    7  Programación / Programación C/C++ / Re: Ayuda con la plantilla y herencia en: 26 Noviembre 2016, 01:03 am
    Hola Akumadie, podría ser porque tienes colocar las implementaciones de los métodos que usen programación genérica en el mismo fichero que su declaración (.hpp) o instanciar explícitamente las plantillas que vayas a usar en el ".cpp" en el que estás definiendo dichos métodos.

    Por desgracia el enlazador no es capaz de realizar el enlace correctamente. Para ello se intentó incorporar la palabra reservada export en C++11, pero no se ha podido implementar correctamente y ha quedado como reservada pero en desuso. http://en.cppreference.com/w/cpp/keyword/export .

    Si quieres más información:

    http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file/495056#495056

    Un saludo.
    8  Programación / Programación C/C++ / Re: Ayuda urgente error en valgrind en: 27 Agosto 2016, 04:46 am
    Hola, el error que te da valgrind es claro, no inicializas la variable i cuando la declaras. Así que con esto debería arreglarse:
    Código
    1. int comparar(int vector1[], int n1, int vector2[], int n2)
    2. {
    3.    int i = 0; //esto es lo que debes modificar
    4.    if (n1 == 0 && n2 != 0)
    5.        {
    6.        return -1;
    7.        }
    8.    if  (n2 == 0 && n1 != 0)
    9.        {
    10.        return 1;
    11.        }
    12.    for(i=0;i<n1||i<n2;i++)
    13.        {
    14.        if(vector1[i]<vector2[i])
    15.            {
    16.            return -1;
    17.            }
    18.        if(vector1[i]>vector2[i])
    19.            {
    20.            return 1;
    21.            }
    22.        if(vector1[i]==vector2[i]&&n1==n2)
    23.            {
    24.            return 0;
    25.            }
    26.        }
    27.    return 0;
    28. }
    9  Programación / Programación C/C++ / Re: [TUTORIAL]Compilar la librería Qt estáticamente bajo Windows. en: 20 Agosto 2016, 01:06 am
    podrian actualizar este tutorial yo instalo qcreator ultima version y arranco pero no me reconoce la libreria xmpp. Porque es importante compilar las librerias estaticamente???

    Hola, actualmente no dispongo de tiempo para actualizarlo, pero seguramente en la página Qt habrá muchísima información en inglés para hacerlo.

    Un saludo.
    10  Programación / Programación C/C++ / Re: (Consulta) Sobre la sobrecarga del operador & en: 31 Julio 2016, 13:53 pm
    Hola, sí se puede, pero sobrecargar el operador & para tal fin puede llevar a muchas confusiones. En la cabecera <memory> tienes la función genérica addressof (se agregó en C++11 para solucionar el problema que comentáis), que funciona de la misma manera que el operador unario &.

    Te dejo la referencia http://en.cppreference.com/w/cpp/memory/addressof
    Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 83
    WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines