|
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/769922393158455297https://twitter.com/albertobsd/status/769194215318310912No 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 BAJAPara el caso de telcel tenemos las siguientes opciones: AnteriorementeHace 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" ( ) 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... void server_print(struct peticion *session,char *format,...) { char *buffer = NULL; int X; va_list args; vsnprintf(buffer,X,format, args); //realizar operaciones sobre session... }
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: #include<stdio.h> #include<stdlib.h> #include<string.h> #define KB 1024 int main() { char *type,*resource,*protocol,*extra,*hasQuery,**values = NULL,*key,*value,*aux; int values_count= 0,i; strcpy(temp ,"GET /LALALA/xD.txt?q=xD&XD HTTP/1.1"); printf("type = %p: %s\n",type ,type ); printf("resource = %p: %s\n",resource ,resource ); printf("protocol = %p: %s\n",protocol ,protocol ); hasQuery = strstr(resource ,"?"); if(hasQuery) { printf("query = %p: %s\n",hasQuery ,hasQuery ); do { if(aux) { values = realloc(values ,sizeof(char*)*(values_count +1)); values[values_count] = aux; printf("values: %s\n",values [values_count ]); values_count++; } }while(aux); i = 0; while(i < values_count) { //Aqui salvo los valores key y value para su posterior uso printf("Key: %s\nValue: %s\n",key ,value ); i++; } } else printf("query = %p\n",hasQuery ); if(values) if(temp) { } }
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 func main() { scmKey := decode(scmKey) salt := decode(salt) maskkey := pbkdf2 .Key([]byte("password"), salt, rounds, 32, sha1 .New) // AES-ECB-256_decrypt(k=maskkey, scm_key) = scr_key a, err := aes.NewCipher(maskkey) if err != nil { log.Fatal(err) } for i := 0; i < len(scmKey); i += a.BlockSize() { a.Decrypt(scmKey[i:i+a.BlockSize()], scmKey[i:i+a.BlockSize()]) } // HMAC-SHA1(k=maskkey, scm_key) == sch_mac h := sha1.Sum(maskkey) mac := hmac .New(sha1 .New, h [:]) mac.Write(scmKey) expectedMAC := mac.Sum(nil) fmt.Print(hex.Dump(expectedMAC)) }
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: 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. #include<stdio.h> #include<stdlib.h> #include<time.h> #define MUESTRAS 30 #define SIMULACIONES 10000000 #define MAX 60000 int main() { register int i = 0,j = 0; int elegido,premio, contador = 0; //Sorteos con cambio de Variable j = 0; while(j < MUESTRAS){ i = 0; while(i < SIMULACIONES) { elegido = rand() % MAX ; // La variable elegida cambia en cada sorteo if(elegido == premio) { contador++; } i++; } j++; } printf("Total de veces ganador CON cambio de Variable %i/(%i Sorteos)\n",contador ,MUESTRAS *SIMULACIONES ); //Sorteos SIN cambio de Variable j = 0; elegido = rand() % MAX ; // La variable no cambia contador = 0; while(j < MUESTRAS){ i = 0; while(i < SIMULACIONES) { if(elegido == premio) { contador++; } i++; } j++; } printf("Total de veces ganador SIN cambio de Variable %i/(%i Sorteos)\n",contador ,MUESTRAS *SIMULACIONES ); return 0; }
Esto va de la mano con la siguiente pregunta: ¿Es bueno cambiar siempre de variable?Tema relacionado: Demostracion del problema de Monty HallSaludos
|
|
|
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 TATETIen 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: #define UNKNOW 0 //Nobody win yet #define O_WIN 1 #define X_WIN 2 #define DRAW 3 #define ERROR 4 struct tablero { uint8_t juego[3][3]; };
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. uint8_t estatus_juego(struct tablero *t) { uint8_t e; //Estatus a devolver register uint8_t i = 0,j = 0; uint8_t contador_X,contador_O,casilla; bool continuar = true; //Procedemos a validar las 3 Lineas horizontales i = 0; while(continuar && i < 3) { j = 0; casilla = t->juego[i][j]; j++; while(continuar && j < 3 && ) { if(casilla != t->juego[i][j] || !t->juego[i][j]) { continuar = false; } j++; } if(continuar){ //si continuar sigue siendo true en este punto el jugador casilla Gana y ya no es necesario evaluar los otros casos continuar = false; // Establemos continuar como false para que ya no entre al ciclo siguiente } else { //En caso de que continuar sea false, significa que debemos seguir evaluando las lineas restantes continuar = true // Establemos continuar como true para que si entre al ciclo siguiente } i++; } if(continuar) { //Continuamos la evaluacion de las lineas Verticales i = 0; while(continuar && i < 3) { j = 0; casilla = t->juego[j][i]; j++; while(continuar && j < 3) { if(casilla != t->juego[j][i] || !t->juego[j][i] ) { continuar = false; } j++; } if(continuar){ //si continuar sigue siendo true en este punto el jugador casilla Gana y ya no es necesario evaluar los otros casos continuar = false; // Establemos continuar como false para que ya no entre al ciclo siguiente } else { //En caso de que continuar sea false, significa que debemos seguir evaluando las lineas restantes continuar = true // Establemos continuar como true para que si entre al ciclo siguiente } i++; } if(continuar) { //Evaluamos las lineas Diagonales casilla = t->juego[0][0]; if(casilla == t->juego[1][1] && casilla == t->juego[2][2] && casilla != 0) { if(casilla == 'X') { e = X_WIN; } else { e = O_WIN; } } else { casilla = t->juego[0][2]; if(casilla == t->juego[1][1] && casilla == t->juego[2][0] && casilla != 0) { if(casilla == 'X') { e = X_WIN; } else { e = O_WIN; } } else { //Todavia nadie gana o es empate en caso de que ya no queden casillas libres contador_X = 0; contador_O = 0; i = 0; while(i < 3) { j = 0; while(j < 3) { if(t->juego[i][j] == 'X') { contador_X++; } else { if(t->juego[i][j] == 'O') { contador_O++; } } j++; } i++; } if(abs(contador_O -contador_X ) > 1) { //ERROR de Tablero, no es posible que un jugador tenga 2 o mas 'fichas' que el otro en el tablero e = ERROR; } else { if(contador_X+contador_O < 9) { e = UNKNOW; } else { e = DRAW; } } } } } else { //En este punto evaluamos quien gano if(casilla == 'X') { e = X_WIN; } else { e = O_WIN; } } } else { //En este punto evaluamos quien gano if(casilla == 'X') { e = X_WIN; } else { e = O_WIN; } } return e; }
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: var sucursales = new Array;
Dicha variable se actualiza en tiempo de ejecución mediante la siguiente función: function lista_sucursal() { $.ajax({ url: '/get_sucursales.aspx', type: 'POST', success: function(data) { var r = JSON.parse(data); if(r.ok == true) { var i = 0; while (i < r.data.length) { sucursales[r.data[i].id] = r.data[i].nombre; //Mas codigo irrelevante aqui i++; } } else { //Error aqui } } }); }
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: function maquinas_sucursales_tabla() { $("#tabla_body").html(""); $.ajax({ url: '/get_maquinas_sucursales.aspx', type: 'POST', success: function(data) { var r = JSON.parse(data); if(r.ok == true) { var i = 0; while(i < r.data.length) { $("#tabla_body").append('<tr><td>' + sucursales[r.data[i].sucursal] + '</td></tr>'); i++; } } else { //ERROR } } }); }
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 ) 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 GET / HTTP/1.1 Host: <IP>
y la respuesta siempre es la mismasimilar: 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!
|
|
|
|
|
|
|