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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19
71  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/
72  Programación / Programación C/C++ / Mejor forma de procesar una cadena de formato [Cantidad de memoria] en: 16 Septiembre 2016, 00:12 am
Buenas!!

Estoy haciendo un pequeño servidor WEB en C, algo basico y como ejercicio, ya que este algo pulido dejare el link al codigo por aqui.


El detalle que me encuentro es que quiero crear una función de argumentos variables asi como el printf donde le ahorre al usuario "final" ( :rolleyes: :rolleyes:) el reservar memoria para el buffer de respuesta al cliente. para ello solo creare una función llamada "server_print" donde el usuario colocara su formato de cadena y las variables que el quiera. Y que la función haga el trabajo duro...

session es un contenedor de variables auxiliares y ese de momento, se puede obviar...

Código
  1. void server_print(struct peticion *session,char *format,...) {
  2. char *buffer = NULL;
  3. int X;
  4. va_list args;
  5. va_start(args, format);
  6. buffer =malloc(X);
  7. vsnprintf(buffer,X,format, args);
  8.  
  9. //realizar operaciones sobre session...
  10.  
  11.  
  12. va_end(args);
  13. }
  14.  

Lo que me interesa saber es el cuando debe de valer X para reservar esa cantidad de memoria exacta.. el detalles esta en que puedo ahórrame el "pensar" y asignar MUCHA memoria por cada argumento del programa, pero el detalle esta en que:

¿Que pasa si no alcanza?

Quiero tener un programa eficiente que no malgaste memoria y sea rápido...

Se me ocurre buscar en la cadena de formato por cada % que se encuentre y por ejemplo si es un Entero reservar solo 12 bytes mas, si es cadena sacar el strlen del argumento en cuestion, si es %l dejar sobre 30 bytes mas y asi...

¿Como procederían ustedes?

Saludos!
73  Foros Generales / Foro Libre / ¿Cuantos trackers puede tener un torrent? en: 15 Septiembre 2016, 00:24 am
Estoy desarrollando una app y ahora tengo que poner un limite al numero de trackers que puede tener un torrent.

En teoria no debería de tener limite lo se, pero si vemos la mayoria de los links magnet en TPB solo vienen con unos 3 o 5 trackers

Pero no encuentro ningun documento que especifique un limite claro.

En mi caso he optado por 16 trackers esto solo lo pregunto para optimizar el tamaño de almacenamiento, ya en ejecucion puede crecer lo que sea necesario.

Saludos
74  Programación / Programación C/C++ / Validando peticion GET manualmente en: 13 Septiembre 2016, 20:36 pm
Buen dia estoy desarrollando un pequeño servidor en C para un proyecto que tengo.

Ya tengo buena parte trabajado, pero me gustaria consultarles si existen mas cosas que deba de validar en una peticion GET  el ejemplo que mas o menos tengo del codigo es el siguiente:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. #define KB 1024
  6.  
  7. int main() {
  8. char *type,*resource,*protocol,*extra,*hasQuery,**values = NULL,*key,*value,*aux;
  9. int values_count= 0,i;
  10. char *temp = malloc(KB);
  11. strcpy(temp,"GET /LALALA/xD.txt?q=xD&XD HTTP/1.1");
  12. type = strtok(temp," ");
  13. resource = strtok(NULL," ");
  14. protocol = strtok(NULL," ");
  15. extra = strtok(NULL," ");
  16. printf("type = %p: %s\n",type,type);
  17. printf("resource = %p: %s\n",resource,resource);
  18. printf("protocol = %p: %s\n",protocol,protocol);
  19. printf("extra = %p\n",extra);
  20. hasQuery = strstr(resource,"?");
  21. if(hasQuery) {
  22. printf("query = %p: %s\n",hasQuery,hasQuery);
  23. aux =  strtok(hasQuery+1,"&");
  24. do {
  25. if(aux) {
  26. values = realloc(values,sizeof(char*)*(values_count+1));
  27. values[values_count] = aux;
  28. printf("values: %s\n",values[values_count]);
  29. values_count++;
  30. }
  31. aux =  strtok(NULL,"&");
  32. }while(aux);
  33. i = 0;
  34. while(i < values_count) {
  35. key = strtok(values[i],"=");
  36. value = strtok(NULL,"");
  37. //Aqui salvo los valores key y value para su posterior uso
  38. printf("Key: %s\nValue: %s\n",key,value);
  39. i++;
  40. }
  41. }
  42. else
  43. printf("query = %p\n",hasQuery);
  44. if(values)
  45. free(values);
  46. if(temp) {
  47. free(temp);
  48. }
  49. }
  50.  
  51.  

Estoy releyendo el protocolo del HTTP y estoy validando de momento solo la primera LINEA de la peticion.

Saludos!
75  Seguridad Informática / Criptografía / I lost my OPENBSD FDE Password en: 31 Agosto 2016, 15:42 pm
Demostracion de como recuperan el block key material para descifrar el Disco Duro


Código
  1. func main() {  
  2.    scmKey := decode(scmKey)
  3.    salt := decode(salt)
  4.  
  5.    maskkey := pbkdf2.Key([]byte("password"), salt, rounds, 32, sha1.New)
  6.  
  7.    // AES-ECB-256_decrypt(k=maskkey, scm_key) = scr_key
  8.    a, err := aes.NewCipher(maskkey)
  9.    if err != nil {
  10.        log.Fatal(err)
  11.    }
  12.    for i := 0; i < len(scmKey); i += a.BlockSize() {
  13.        a.Decrypt(scmKey[i:i+a.BlockSize()], scmKey[i:i+a.BlockSize()])
  14.    }
  15.  
  16.    // HMAC-SHA1(k=maskkey, scm_key) == sch_mac
  17.    h := sha1.Sum(maskkey)
  18.    mac := hmac.New(sha1.New, h[:])
  19.    mac.Write(scmKey)
  20.    expectedMAC := mac.Sum(nil)
  21.  
  22.    fmt.Print(hex.Dump(expectedMAC))
  23. }

El link con la lectura completa en Ingles:

https://blog.filippo.io/so-i-lost-my-openbsd-fde-password/
76  Foros Generales / Foro Libre / ¿Algoritmo? de Sistema de Votación en: 30 Agosto 2016, 16:40 pm
Hola que tal estoy desarrollando una plataforma, donde se requiere cierta moderación de contenido,  asi como el foro, con moderadores de distintos Rangos y privilegios....

El detalle es que esta plataforma es semi-automata, entonces estoy buscando si existe algún sistema de votación o similar para realizar ciertas Acciones.

Por ejemplo si quiero aprobar cierto contenido y/o eliminarlo o lo que fuese, la idea seria que lo moderadores votaran por realizar X acción, pero como NO siempre van a estar todos los moderadores en linea, la idea es que el sistema tenga un ALGORITMO que con determinado numero de votos y variables, determinara si realizar la acción o no.

Puedo realizar mi propio algoritmo con los parámetros que necesito, pero la idea es ver si existe algo parecido.

Es como una especie de Democracia Ateniense

Saludos!
77  Programación / Programación C/C++ / Sorteo/Loteria Simulaciones y cambios de Variable en: 29 Agosto 2016, 18:36 pm
El siguiente codigo simula un Sorteo/Loteria 10 Millones de veces tomando 30 muestras de estas simulaciones obtenemos un Valor de veces que se gano el sorteo.

El jugador elige un numero y en cada ciclo se sortean otro Numero si el numero es igual al del jugador este GANA.


Se realizan 2 Tipos de Sorteos:

  • Uno donde el jugador conserva el MISMO numero todas las simulaciones.
  • El otro donde el jugador CAMBIA el numero en cada simulación

Salida Obtenida en 4 ejecuciones:

Código:
Total de veces ganador CON cambio de Variable 30636/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 27675/(300000000 Sorteos)
Total de veces ganador CON cambio de Variable 30396/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 36592/(300000000 Sorteos)
Total de veces ganador CON cambio de Variable 30700/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 36890/(300000000 Sorteos)
Total de veces ganador CON cambio de Variable 30635/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 27460/(300000000 Sorteos)

Si Observamos en total son 300 Millones de simulaciones 2 veces en cada ejecución, si vemos el "promedio" se mantiene mas o menos constante cuando SI CAMBIA la variable.

y el "promedio" se varia entre ejecuciones cuando NO CAMBIA la variable.

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4.  
  5. #define MUESTRAS 30
  6. #define SIMULACIONES 10000000
  7. #define MAX 60000
  8.  
  9. int main() {
  10. register int i = 0,j = 0;
  11.  
  12. int elegido,premio, contador = 0;
  13. srand(time(NULL));
  14.  
  15. //Sorteos con cambio de Variable
  16. j = 0;
  17. while(j < MUESTRAS){
  18. i = 0;
  19. while(i < SIMULACIONES) {
  20. elegido = rand() % MAX; // La variable elegida cambia en cada sorteo
  21. premio = rand() % MAX;
  22. if(elegido == premio) {
  23. contador++;
  24. }
  25. i++;
  26. }
  27. j++;
  28. }
  29. printf("Total de veces ganador CON cambio de Variable %i/(%i Sorteos)\n",contador,MUESTRAS*SIMULACIONES);
  30.  
  31.  
  32. //Sorteos SIN cambio de Variable
  33. j = 0;
  34. elegido = rand() % MAX; // La variable no cambia
  35. contador = 0;
  36. while(j < MUESTRAS){
  37. i = 0;
  38. while(i < SIMULACIONES) {
  39. premio = rand() % MAX;
  40. if(elegido == premio) {
  41. contador++;
  42. }
  43. i++;
  44. }
  45. j++;
  46. }
  47. printf("Total de veces ganador SIN cambio de Variable %i/(%i Sorteos)\n",contador,MUESTRAS*SIMULACIONES);
  48. return 0;
  49. }

Esto va de la mano con la siguiente pregunta:

¿Es bueno cambiar siempre de variable?

Tema relacionado:

Demostracion del problema de Monty Hall

Saludos
78  Programación / Programación C/C++ / Optimizar evaluación de juego de TATETI en: 29 Agosto 2016, 14:56 pm
Siguiendo con el tema de :

[C] Duda TATETI

en ese tema puse un codigo para Generar un Arbol de N niveles apartir de una jugada inicial

Ahora toca evaluar todos los nodos (Juegos) para asi poder decidir el mejor movimiento

Dada las siguientes definiciones y estructuras:

Código
  1. #define UNKNOW 0 //Nobody win yet
  2. #define O_WIN 1
  3. #define X_WIN 2
  4. #define DRAW 3
  5. #define ERROR 4
  6.  
  7. struct tablero {
  8. uint8_t juego[3][3];
  9. };
  10.  

Hice esta funcion que evalua las 3 Filas , 3 Columnas y 2 Diagonales. Adicional evaluar si es empate, si todavia nadie gana y si existe alguna discrepancia en el tablero

La pregunta aqui es, ¿Existe una forma mas eficiente de hacer esto?

Me refiero a que se me hace bastante pesado evaluar todas las lineas xD..

NOTA: No he compilado el codigo por lo que puedw tener errores.

Código
  1. uint8_t estatus_juego(struct tablero *t) {
  2. uint8_t e;  //Estatus a devolver
  3. register uint8_t i = 0,j = 0;
  4. uint8_t contador_X,contador_O,casilla;
  5. bool continuar = true;
  6. //Procedemos a validar las 3 Lineas horizontales
  7. i = 0;
  8. while(continuar && i < 3) {
  9. j = 0;
  10. casilla = t->juego[i][j];
  11. j++;
  12. while(continuar && j < 3 && ) {
  13. if(casilla != t->juego[i][j] || !t->juego[i][j]) {
  14. continuar = false;
  15. }
  16. j++;
  17. }
  18. if(continuar){
  19. //si continuar sigue siendo true en este punto el jugador casilla Gana y ya no es necesario evaluar los otros casos
  20. continuar = false; // Establemos continuar como false para que ya no entre al ciclo siguiente
  21. }
  22. else {
  23. //En caso de que continuar sea false, significa que debemos seguir evaluando las lineas restantes
  24. continuar = true // Establemos continuar como true para que si entre al ciclo siguiente
  25. }
  26. i++;
  27. }
  28. if(continuar) {
  29. //Continuamos la evaluacion de las lineas Verticales
  30. i = 0;
  31. while(continuar && i < 3) {
  32. j = 0;
  33. casilla = t->juego[j][i];
  34. j++;
  35. while(continuar && j < 3) {
  36. if(casilla != t->juego[j][i] || !t->juego[j][i] ) {
  37. continuar = false;
  38. }
  39. j++;
  40. }
  41. if(continuar){
  42. //si continuar sigue siendo true en este punto el jugador casilla Gana y ya no es necesario evaluar los otros casos
  43. continuar = false; // Establemos continuar como false para que ya no entre al ciclo siguiente
  44. }
  45. else {
  46. //En caso de que continuar sea false, significa que debemos seguir evaluando las lineas restantes
  47. continuar = true // Establemos continuar como true para que si entre al ciclo siguiente
  48. }
  49. i++;
  50. }
  51. if(continuar) { //Evaluamos las lineas Diagonales
  52. casilla = t->juego[0][0];
  53. if(casilla == t->juego[1][1] && casilla == t->juego[2][2] && casilla != 0) {
  54. if(casilla == 'X') {
  55. e = X_WIN;
  56. }
  57. else {
  58. e = O_WIN;
  59. }
  60.  
  61. }
  62. else {
  63. casilla = t->juego[0][2];
  64. if(casilla == t->juego[1][1] && casilla == t->juego[2][0]  && casilla != 0) {
  65. if(casilla == 'X') {
  66. e = X_WIN;
  67. }
  68. else {
  69. e = O_WIN;
  70. }
  71. }
  72. else {
  73. //Todavia nadie gana o es empate en caso de que ya no queden casillas libres
  74. contador_X = 0;
  75. contador_O = 0;
  76. i = 0;
  77. while(i < 3) {
  78. j = 0;
  79. while(j < 3) {
  80. if(t->juego[i][j] == 'X') {
  81. contador_X++;
  82. }
  83. else {
  84. if(t->juego[i][j] == 'O') {
  85. contador_O++;
  86. }
  87. }
  88. j++;
  89. }
  90. i++;
  91. }
  92. if(abs(contador_O-contador_X) > 1) {
  93. //ERROR de Tablero, no es posible que un jugador tenga 2 o mas 'fichas' que el otro en el tablero
  94. e = ERROR;
  95. }
  96. else {
  97. if(contador_X+contador_O < 9) {
  98. e = UNKNOW;
  99. }
  100. else {
  101. e = DRAW;
  102. }
  103. }
  104. }
  105. }
  106. }
  107. else {
  108. //En este punto evaluamos quien gano
  109. if(casilla == 'X') {
  110. e = X_WIN;
  111. }
  112. else {
  113. e = O_WIN;
  114. }
  115. }
  116. }
  117. else {
  118. //En este punto evaluamos quien gano
  119. if(casilla == 'X') {
  120. e = X_WIN;
  121. }
  122. else {
  123. e = O_WIN;
  124. }
  125. }
  126. return e;
  127. }
  128.  

Saludos
79  Programación / Desarrollo Web / Acceso asincrono a Variables en: 25 Agosto 2016, 20:20 pm
Hola que tal estoy programando una pequeña interfaz y me encuentro con el siguiente problema:

Tengo una varible Array en javascript:

Código
  1. var sucursales = new Array;

Dicha variable se actualiza en tiempo de ejecución mediante la siguiente función:

Código
  1. function lista_sucursal() {
  2. $.ajax({
  3. url: '/get_sucursales.aspx',
  4. type: 'POST',
  5. success: function(data) {
  6. var r = JSON.parse(data);
  7. if(r.ok == true) {
  8. var i = 0;
  9. while (i < r.data.length) {
  10.    sucursales[r.data[i].id] = r.data[i].nombre;
  11.    //Mas codigo irrelevante aqui
  12. i++;
  13. }
  14. }
  15. else {
  16. //Error aqui
  17. }
  18. }
  19. });
  20. }

Dicha funcion se llama al momento de cargar la pagina primero que otras funciones...

Posteriormente tengo otro parte del codigo que hace mas o menos esto:

Código
  1. function maquinas_sucursales_tabla() {
  2. $("#tabla_body").html("");
  3. $.ajax({
  4. url: '/get_maquinas_sucursales.aspx',
  5. type: 'POST',
  6. success: function(data) {
  7. var r = JSON.parse(data);
  8. if(r.ok == true) {
  9. var i = 0;
  10. while(i < r.data.length) {
  11.    $("#tabla_body").append('<tr><td>' + sucursales[r.data[i].sucursal] + '</td></tr>');
  12. i++;
  13. }
  14. }
  15. else {
  16. //ERROR
  17. }
  18. }
  19. });
  20. }

El detalle esta en que hay veces que pone el dato correctamente y otras veces aparece "undefined" y esto es debido a que el codigo del jquery se ejecuta de forma asincrona...

Que recomiendan para solucionar esto, estaba pensando en usar un semaforo como "sucursales_ready" para solo cargar los otros datos cuando la variable ya este lista....

Pero no se, tal vez existe otro metodo mas rapido y/o sencillo.


Saludos!
80  Seguridad Informática / Hacking / Respuesta HTTP Extraña en: 24 Agosto 2016, 01:15 am
Bueno actualmente estoy testeando un servidor que me esta tratando de hackear... (Eso o estoy paranoico  :rolleyes:)

El detalle que he empezado a recibir un par de correos de una pagina legitima, pero la direccion final de destino esta en un IP dinamica, la pagina tiene el puerto 81 Abierto y he hecho un par de peticiones manualmente mediante netcat

Código:
GET / HTTP/1.1
Host: <IP>



y la respuesta siempre es la mismasimilar:

Código:
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 2463
Content-Type: text/html
Server: Microsoft-IIS/7.5
Set-Cookie: ASPSESSIONIDSSDQCRCR=SUPERCOOKIE; path=/
X-Powered-By: ASP.NET
Date: Fri, 20 Aug 2016 00:00:0 GMT

ÿØÿà J.............<OMITIDO>

El contenido nunca cambia a pesar de ser siempre los 2463 y la salida dice ser text/html

Creen que sea información comprimida o alguna idea del formato, por seguridad y un poco de paranoia colocare la información aqui despues de realizarle algunos cuantos test (Muestreos estadísticos)

Saludos!
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines