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


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 ... 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 91 ... 235
751  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!
752  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
753  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!
754  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
755  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!
756  Programación / Programación C/C++ / Re: CreateThread o CreateProcess en: 21 Septiembre 2016, 17:48 pm
Tengo Cygwin y funciona bien, el detalle que como voy a distribuir la aplicación, quiero que sea lo mas estándar posible (Acorde a cada sistema) y que dependa de la menor cantidad de recursos externos.

Saludos!

757  Programación / Programación C/C++ / CreateThread o CreateProcess en: 21 Septiembre 2016, 17:07 pm
Estoy haciendo un servidor en C el tema es cual funcion debo elegir como la deberia de aplicar.

Tengo 2 versiones de mi servidor, una para sistemas Unix y otra para Windows.

En unix no hay problema solo hago un fork y asunto resuelto:

Código
  1. if(listen(ListenSocket, BACKLOG) == -1) {
  2. perror("error: listen");
  3.  
  4.  
  5.        return 1;
  6.    }
  7. while(entrar) {
  8. pid = fork();
  9. switch(pid) {
  10. case 0:
  11. //Codigo para el Hijo
  12. break;
  13. case -1:
  14. //Error no fallo Fork
  15. break;
  16. default:
  17. //Get the PID for Parent
  18. break;
  19. }
  20. }

Pero no he encontrado una solucion para Windows, el servidor funciona bastante bien, el punto que en windows no es Multihilo aun, y tarda en responder ya que lo hace en orden secuencial.

He visto los siguientes enlaces y aun no doy con una solucion sencilla al tema

http://stackoverflow.com/questions/985281/what-is-the-closest-thing-windows-has-to-fork
http://stackoverflow.com/questions/14642496/any-simple-quick-way-to-fork-on-windows-ansi-c-beginthread-beginthreadex

Repito tengo 2 archivos distintos uno para Windows con winsock y el otro para Unix con Sockets estandar del sistema.

Saludos!
758  Programación / Programación C/C++ / Re: Tutorial de archivos en lenguaje C. - en: 21 Septiembre 2016, 16:19 pm
De las 2 formas es valido.

Si es la misma cantidad de registros no hay por que preocuparse...

Se mueve a la posicion 0 con fseek y se escribe registro por registro.

En caso de que quieraa reescribir (borrar y escribir)

Solo hay que cerrar el archivo actual y abrir uno nuevo con el mismo nombre y en modo "w" o "wb" segun sea de texto o binario y asi escribir registro por registro en el archivo nuevo.

Saludos
759  Foros Generales / Foro Libre / Agregadores (Servicios Moviles) - Lista para darse de baja en: 20 Septiembre 2016, 22:26 pm
Bueno escribo por si alguien tiene el mismo problema

Un agregador en servicios móviles es un servicio donde por X cantidad de dinero semanal el usuario tiene acceso a un "servicio y/o beneficio" si es que realmente sirven de algo, cosa que dudo mucho.

Hace unos días mi numero móvil fue agregado a una lista de Servicios de estos servicios, En teoria estos servicios necesitan confirmación por parte del usuario para ser dado de alta pero la verdad NO ES ASI.

Ver tweets:

https://twitter.com/albertobsd/status/769922393158455297
https://twitter.com/albertobsd/status/769194215318310912

No se como, ni quien fue el responsable de hacer esto, en Atención a clientes de mi proveedor (TELCEL) indican que no existe forma para suscribirse a estos servicios sin que el usuario lo confirme mediante mensaje de texto. Y si les dices que no fuiste tu o cualquier otra cosa vuelven a repetirte lo mismo como grabadora parece que tienen esa indicacion y/o no tienen mente propia

Sospecho las siguientes causas:
  • Te suscribe la misma compañía para sacarte mas dinero
  • Visitastes algun sitio con ads/scripts intrusivos que te suscribieron automáticamente a X servicio

Sospecho lo primero por que en mi caso sucedió exactamente una semana después de cancelar el contrato que tenia con ellos.
Y de lo segundo ya que como programador y aprendiz de hacker se que es posible crear algunos scripts que exploten algun bug en tu movil y envien mensajes de texto silenciosos.


DARTE DE BAJA

Para el caso de telcel tenemos las siguientes opciones:




Anterioremente

Hace años circulaban varias paginas de Internet donde estaba un formulario para agregar un numero de celular a estos servicios, paginas amarillistas como "la fecha de tu muerte", "bruja real", "Video no apto para cardiacos" etc...

Cada vez he visto menos de estas paginas pero lo interesare seria ver para quien trabajan estas paginas y tirarles el servicio.

Historias relacionadas:

https://www.reddit.com/r/mexico/comments/o8bc1/telcel_los_agregadores_de_contenido_y_su_nueva/
https://www.reddit.com/r/mexico/comments/3sbr79/quien_regula_a_los_agregadores_de_contenido_en/
760  Programación / Programación C/C++ / Re: Nose en que estoy fallando - Ejercicio con Punteros en: 18 Septiembre 2016, 16:59 pm
El apuntadador que estas pasando es un int no un t_cuatro

deberia de quedar asi
Código
  1. void MODIFICAR(int *pa, int *pb, int *pc, int *pd);
  2.  
  3. void MODIFICAR(int *pa, int *pb, int *pc, int *pd)
  4. {
  5. t_cuatro aux;
  6.  
  7.  
  8. if(((*pb)< (*pc) ) && ((*pb)< (*pd)) && ((*pb) < (*pa)))
  9. {
  10. aux.a=(*pa);
  11. *pa=*pb;
  12. *pb=aux.a;
  13. }
  14.  
  15. if((*pc)< (*pa) && (*pc)< (*pd) && (*pc) < (*pb))
  16. {
  17. aux.a=*pa;
  18. *pa=*pc;
  19. *pc=aux.a;
  20. }
  21.   if((*pd)< (*pa) && (*pd)< (*pc) && (*pd) < (*pb))
  22. {
  23. aux.a=*pa;
  24. *pa=*pd;
  25. *pd=aux.a;
  26. }
  27. }

Saludos!
Páginas: 1 ... 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 91 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines