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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 [75] 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 ... 235
741  Foros Generales / Noticias / Re: Adblock Plus ahora... vende publicidad!?!? en: 23 Septiembre 2016, 03:33 am
Primero se posicionan como los mejores y luego sueltan la *****....

Yo no uso ninguno de los que mencionan, solo mantengo mi archivo / etc / hosts al dia  :xD

Saludos
742  Programación / Programación C/C++ / Re: Librerias de Cifrado Simetrico y Asimetrico en C/C++ en: 22 Septiembre 2016, 23:29 pm
En mi caso solo fue por que la librería que usaba no estaba totalmente portada para windows.

En general es preferible (Criptograficamente) establecer todos los parámetros para el cifrado aunque se trate de cifrado simétrico (AES) existen muchas variedades y cosas que definir, como el IV (Vector de Inizialisacion) tambien el KEY (Tu clave) + el tipo de cifrado (AES128, AES256) y modo de cifrado (ECB, CFB, CBC,CCM,GCM).

No todos son compatibles entre si, y algunas implementaciones no son tan seguras como otras.

Yo prefiero escribir 20 lineas a una sola. O mejor aun crear mi propia función acorde a mis necesidades y llamarla con una sola linea (Que es lo que realizo actualmente), no es tan dificil, tal vez, solo te falta leer un poco mas de criptografia y entender mas o menos los conceptos y con eso no sera tan dificil entender esas 20 lineas.

Ademas mientras es posible personalizar tanto el codigo como deees para que se adapte a cualquier tipo de proyecto.

He visto implementaciones criptograficas INSEGURAS de una sola linea como la que mencionas que no son tan seguras muchas de ellas incluso "Incluyen" el Material para descifrar dentro del mismo mensaje "supuestamente" cifrado.

Ver mas:

https://www.owasp.org/index.php/Top_10_2010-A7-Insecure_Cryptographic_Storage
http://www.veracode.com/blog/2012/06/insecure-cryptographic-storage-explained
Citar
Insecure Cryptographic Storage is a common vulnerability that occurs when sensitive data is not stored securely. Protecting sensitive data by encrypting it should be a key step in a Secure Software Development Lifecycle

Saludos!
743  Programación / Programación C/C++ / Re: Consutla sobre un problema con punteros y memoria dinamica. en: 22 Septiembre 2016, 22:15 pm
Creo que asi deberia de quedar
Código
  1. char * subcadena (char * p, unsigned int i, unsigned int n) {
  2. int j=0;
  3. char *pc;
  4. pc=malloc(n-i+1);
  5. while(*(p+i+j)!='\0' && (i+j)<=n) {
  6. *(pc+j)=*(p+i+j);
  7. j++;
  8. }
  9. *(pc+i+j)='\0';
  10. return pc;
  11. }
Saludos!
744  Programación / Programación C/C++ / Re: Hola buenas! en: 22 Septiembre 2016, 19:52 pm
Pon el codigo que llevas para guiarte mejor

Código
  1. #include<stdbool.h>
  2.  
  3. bool error = false;
  4.  
  5. if(opcion > ALGO ){
  6. error = true;
  7. }
745  Programación / Programación C/C++ / Librerias de Cifrado Simetrico y Asimetrico en C/C++ en: 22 Septiembre 2016, 16:52 pm
En construcción
Libcrypto
Documentación: No esta muy ordenada
https://wiki.openssl.org/index.php/Libcrypto_API


Libgcrypt
Documentación: Excelente
Algoritmos: La mayoria de los Simetricos y siguen desarrollando los Asimetricos

Citar
Libgcrypt is a general purpose cryptographic library based on the code from GnuPG. It provides functions for all cryptograhic building blocks: symmetric ciphers (AES, DES, Blowfish, CAST5, Twofish, SEED, Camellia, Arcfour), hash algorithms (MD4, MD5, RIPE-MD160, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, TIGER-192, Whirlpool), MACs (HMAC for all hash algorithms), public key algorithms (RSA, Elgamal, DSA, ECDSA), large integer functions, random numbers and a lot of supporting functions.

Libgcrypt works on most POSIX systems and many pre-POSIX systems. It can also be built using a cross-compiler system for Microsoft Windows.
https://www.gnu.org/software/libgcrypt/
https://gnupg.org/download/index.html#libgcrypt




Abro el tema por que me he encontrado con el problema de usar una librería de cifrado en Windows, el problema que el proyecto que estoy haciendo en C en FreeBSD lo hice con libgcrypt pero esta NO se puede portar tan fácilmente a windows :P :P Y cada que alguien preguntaba por alguna librería asi yo siempre recomendaba libgcrypt (Mas que nada la recomendaba por completa suite de algoritmos y excelente documentación).

Realmente no conozco muchas librerias de este tipo ya que siempre trabaje con libgcrypt y me parecia muy completa,
¿podrian comentar algunas mas que usen o conozcan y que tambien funcionen con windows y no tengan tantas dependencias?

Saludos!
746  Programación / Programación C/C++ / Re: CreateThread para Servevidor en C en: 22 Septiembre 2016, 16:22 pm
Pues en teoria estoy creando un thread y no un proceso hay una funcion en windows que hace precisamente eso (CreateProcess) el tema lo trate aqui:

https://foro.elhacker.net/programacion_cc/createthread_o_createprocess-t458039.0.html

Y si al final decidi usar los threads al estilo de windows y funciona bastante bien. ya que lo termine probare el metodo que indicas.

Saludos!
747  Foros Generales / Dudas Generales / Re: Reto de la Impresora en: 21 Septiembre 2016, 23:13 pm
Pues basta con poner la tarjeta de red en modo monitor usando airmon de la suite de aircrack para poder vel el trafico de otros dispositivos, ademas de capturarlos ya sera con aerodump o con wireshark ya una vez capturado todo el trafico es posible (Dependiendo del tipo de red y protocolos de cifrado) ver el raw de los datos enviados a la impresora
748  Foros Generales / Dudas Generales / Re: Reto de la Impresora en: 21 Septiembre 2016, 22:16 pm
La opcion adecuada es monitorear el trafico Wireless y guardar todo lo que se le envie a Esa IP, ya la con la informacion en mano seria posible ver los documentos impresos, solo hay que decifrarlos (supongo que va mediante alguna capa de seguridad no creo que sea tan facil como sniffear otros datos en texto plano)

Saludos!
749  Programación / Programación C/C++ / CreateThread para Servevidor en C en: 21 Septiembre 2016, 21:10 pm
Que tal Pongo aqui la solucion que encontre al problema de no tener fork en Windows, la solucion es CreateThread de la winapi



Código
  1.    if(listen(ListenSocket, BACKLOG) == SOCKET_ERROR) {
  2. printf("listen failed with error: %ld\n", WSAGetLastError());
  3. closesocket(ListenSocket);
  4. WSACleanup();
  5.        return 1;
  6.    }
  7. while(entrar) {//Entrar es true solo se cambia por otro segmento del codigo en caso de que queramos finalizar con el hilo principal
  8. b = sizeof(struct sockaddr_in);
  9. client = accept(ListenSocket,(SOCKADDR *) service,&b);
  10. if(client == INVALID_SOCKET) {
  11. exit(1);
  12. }
  13. toThread = malloc(sizeof(SOCKET));
  14. memcpy(toThread,&client,sizeof(SOCKET));// Copiamos la variable socket principal para pasarla al thread
  15. hThread = CreateThread(
  16.            NULL,                   // default security attributes
  17.            0,                      // use default stack size  
  18.            client_funtion,       // thread function name
  19.            toThread,          // argument to thread function
  20.            0,                      // use default creation flags
  21.            &dwThreadId);   // returns the thread identifier
  22. printf("Thread ID %u\n",dwThreadId);
  23. if(hThread == NULL) {
  24.           free(toThread);
  25.   exit(0)
  26.        }
  27. }
  28.    closesocket(ListenSocket);

hay que tener en cuenta que necesitasmos una funcion para el Thread:

Código
  1. DWORD WINAPI client_funtion( LPVOID lpParam ) {
  2. //Variables
  3. // aqui recivir datos y procesarlos, se puede llamar a otras funciones que sean Thread safe
  4. }
  5.  

Si no queremos que el hilo principal se "preocupe" por cerrar estas conexiones y terminar con el hilo podemos poner lo siguiente:

Código
  1. DWORD WINAPI client_funtion( LPVOID lpParam ) {
  2. HANDLE thread_id;
  3. thread_id = GetCurrentThread();
  4. //Otras variables
  5. //codigo aque para procesar al cliente correctamente
  6.  
  7. free(lpParam); //Si lpParam es un parametro que tenemos que liberar entonces Free
  8.  
  9. CloseHandle(thread_id); //Terminamos con nuestro propio Thread
  10. }
  11.  

Me base en el ejemplo puesto aqui:

http://foro.elhacker.net/programacion_cc/createthread_o_createprocess-t458039.0.html

Saludos
750  Programación / Programación C/C++ / Re: CreateThread o CreateProcess en: 21 Septiembre 2016, 18:04 pm
Si ya vi que lo que necesito es un thread nuevo lo cual seria lo mas parecido a fork aun que con ligeros cambios

Estoy validando este ejemplo de Windows:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx

Código
  1. #include <windows.h>
  2. #include <tchar.h>
  3. #include <strsafe.h>
  4.  
  5. #define MAX_THREADS 3
  6. #define BUF_SIZE 255
  7.  
  8. DWORD WINAPI MyThreadFunction( LPVOID lpParam );
  9. void ErrorHandler(LPTSTR lpszFunction);
  10.  
  11. // Sample custom data structure for threads to use.
  12. // This is passed by void pointer so it can be any data type
  13. // that can be passed using a single void pointer (LPVOID).
  14. typedef struct MyData {
  15.    int val1;
  16.    int val2;
  17. } MYDATA, *PMYDATA;
  18.  
  19.  
  20. int _tmain()
  21. {
  22.    PMYDATA pDataArray[MAX_THREADS];
  23.    DWORD   dwThreadIdArray[MAX_THREADS];
  24.    HANDLE  hThreadArray[MAX_THREADS];
  25.  
  26.    // Create MAX_THREADS worker threads.
  27.  
  28.    for( int i=0; i<MAX_THREADS; i++ )
  29.    {
  30.        // Allocate memory for thread data.
  31.  
  32.        pDataArray[i] = (PMYDATA) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
  33.                sizeof(MYDATA));
  34.  
  35.        if( pDataArray[i] == NULL )
  36.        {
  37.           // If the array allocation fails, the system is out of memory
  38.           // so there is no point in trying to print an error message.
  39.           // Just terminate execution.
  40.            ExitProcess(2);
  41.        }
  42.  
  43.        // Generate unique data for each thread to work with.
  44.  
  45.        pDataArray[i]->val1 = i;
  46.        pDataArray[i]->val2 = i+100;
  47.  
  48.        // Create the thread to begin execution on its own.
  49.  
  50.        hThreadArray[i] = CreateThread(
  51.            NULL,                   // default security attributes
  52.            0,                      // use default stack size  
  53.            MyThreadFunction,       // thread function name
  54.            pDataArray[i],          // argument to thread function
  55.            0,                      // use default creation flags
  56.            &dwThreadIdArray[i]);   // returns the thread identifier
  57.  
  58.  
  59.        // Check the return value for success.
  60.        // If CreateThread fails, terminate execution.
  61.        // This will automatically clean up threads and memory.
  62.  
  63.        if (hThreadArray[i] == NULL)
  64.        {
  65.           ErrorHandler(TEXT("CreateThread"));
  66.           ExitProcess(3);
  67.        }
  68.    } // End of main thread creation loop.
  69.  
  70.    // Wait until all threads have terminated.
  71.  
  72.    WaitForMultipleObjects(MAX_THREADS, hThreadArray, TRUE, INFINITE);
  73.  
  74.    // Close all thread handles and free memory allocations.
  75.  
  76.    for(int i=0; i<MAX_THREADS; i++)
  77.    {
  78.        CloseHandle(hThreadArray[i]);
  79.        if(pDataArray[i] != NULL)
  80.        {
  81.            HeapFree(GetProcessHeap(), 0, pDataArray[i]);
  82.            pDataArray[i] = NULL;    // Ensure address is not reused.
  83.        }
  84.    }
  85.  
  86.    return 0;
  87. }
  88.  
  89.  
  90. DWORD WINAPI MyThreadFunction( LPVOID lpParam )
  91. {
  92.    HANDLE hStdout;
  93.    PMYDATA pDataArray;
  94.  
  95.    TCHAR msgBuf[BUF_SIZE];
  96.    size_t cchStringSize;
  97.    DWORD dwChars;
  98.  
  99.    // Make sure there is a console to receive output results.
  100.  
  101.    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
  102.    if( hStdout == INVALID_HANDLE_VALUE )
  103.        return 1;
  104.  
  105.    // Cast the parameter to the correct data type.
  106.    // The pointer is known to be valid because
  107.    // it was checked for NULL before the thread was created.
  108.  
  109.    pDataArray = (PMYDATA)lpParam;
  110.  
  111.    // Print the parameter values using thread-safe functions.
  112.  
  113.    StringCchPrintf(msgBuf, BUF_SIZE, TEXT("Parameters = %d, %d\n"),
  114.        pDataArray->val1, pDataArray->val2);
  115.    StringCchLength(msgBuf, BUF_SIZE, &cchStringSize);
  116.    WriteConsole(hStdout, msgBuf, (DWORD)cchStringSize, &dwChars, NULL);
  117.  
  118.    return 0;
  119. }
  120.  
  121.  
  122.  
  123. void ErrorHandler(LPTSTR lpszFunction)
  124. {
  125.    // Retrieve the system error message for the last-error code.
  126.  
  127.    LPVOID lpMsgBuf;
  128.    LPVOID lpDisplayBuf;
  129.    DWORD dw = GetLastError();
  130.  
  131.    FormatMessage(
  132.        FORMAT_MESSAGE_ALLOCATE_BUFFER |
  133.        FORMAT_MESSAGE_FROM_SYSTEM |
  134.        FORMAT_MESSAGE_IGNORE_INSERTS,
  135.        NULL,
  136.        dw,
  137.        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  138.        (LPTSTR) &lpMsgBuf,
  139.        0, NULL );
  140.  
  141.    // Display the error message.
  142.  
  143.    lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
  144.        (lstrlen((LPCTSTR) lpMsgBuf) + lstrlen((LPCTSTR) lpszFunction) + 40) * sizeof(TCHAR));
  145.    StringCchPrintf((LPTSTR)lpDisplayBuf,
  146.        LocalSize(lpDisplayBuf) / sizeof(TCHAR),
  147.        TEXT("%s failed with error %d: %s"),
  148.        lpszFunction, dw, lpMsgBuf);
  149.    MessageBox(NULL, (LPCTSTR) lpDisplayBuf, TEXT("Error"), MB_OK);
  150.  
  151.    // Free error-handling buffer allocations.
  152.  
  153.    LocalFree(lpMsgBuf);
  154.    LocalFree(lpDisplayBuf);
  155. }
  156.  

Aunque parece complicado veo que no esta dificil de implementar y ajustar a mi proyecto, lo que si tengo que hacer es una función nueva que seria el equivalente a lo que tengo dentro del switch incluso estoy dejando las 2 versiones con la misma cantidad de lineas y solo dejo huecos donde existe diferencia entre una version y la otra

Saludos!
Páginas: 1 ... 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 [75] 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines