Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - @XSStringManolo

#1471
Samsung browser está basado en chromium. Es muy pronto para decirlo pero la tendencia parece que en navegadores con chromium el espacio para el stack es fijo? Y en mozilla una aproximación?

Son interesantes los resultados.
#1472
Cita de: Hackeruniva en  4 Octubre 2019, 14:20 PM
Crea una clase, llamada Fecha, que guarde día, mes y año.  Que contenga funciones que imprima la fecha, un constructor (que lo inicialice en 1/1/2020 si es que no dan otra cosa), que permita asignarle una fecha.  Recuerda que la fecha debe ser consistente (¡recuerda los años bisiestos!).  También debe tener una función "DiaSig" que incremente el día.    Asegúrate probar los siguientes casos (los que tienen "jiribilla"):

Incremento al siguiente mes (¡recuerda los bisiestos!)

Incremento al siguiente año
No se hacen ejercicios sin más. Pon el código que tengas. Las dudas, errores etc.

Si no sabes por donde empezar descárgate varios libros de programación con C o con C++ y pregunta lo que non consigas entender.
#1473
Cita de: MinusFour en  4 Octubre 2019, 14:02 PM
Si usas PHP 7, puedes usar la función random_bytes:

Código (php) [Seleccionar]

random_bytes(10); //20 caracteres, 10 bytes, 80 bits

Aqui tienes extendido el uso en distintas versiones de PHP y otras alternativas. https://dev.to/czarpino/php-pseudo-random-string-161f
#1474
Redes / Re: Proyecto de red P2P.
4 Octubre 2019, 14:11 PM
#1475
Cita de: WHK en  4 Octubre 2019, 12:54 PM
Normalmente ese script es dificil que sea ejecutado en navegadores modernos primeramente porque javascript es estrictamente lineal en ordenes de instrucciones, por ejemplo, en la segunda línea de código donde ejecutas stack() debería arrojar una excepción debido a que este aun no está definido, a demás los navegadores como google chrome y mozilla firefox detectan ese desbordamiento de pila.

Va a depender de la capacidad de hardware de cada dispositivo en el hipotético caso de que si logre ser ejecutado y evada cualquier mecanismo heurístico, el problema no se encuentra en el valor autoincrementado de i, sino de la pila de llamadas recursivas entre la función stack() y callback() ya que ninguna finaliza al ser llamada por la otra ya que no es una ejecución asíncrona provocando un desbordamiento de pila. Esto es muy común que suceda en otros lenguajes pero es controlado por el heap size o el paralelismo en el caso de Java y Python.

En algunos navegadores simplemente no podrás ejecutar nada después de esta función y todo script se detendría asi que tampoco podrás comprobar el resultado de tu test a menos que exista una interacción manual por parte del usuario como el envío del contador en un form pero habría que hacer colapsar su pestaña en uso de recursos.

Hay maneras mucho mas efectivas para saber que navegador está utilizando el usuario jajajaja y no hablo de su user agent por cabeceras del request sino a traves de librerías y el mismo estandar de javascript:

https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
https://developer.mozilla.org/en-US/docs/Web/API/Window/navigator

Saludos.
En javascript si se pueden declarar variables y funciones después de utilizarlas.
Cita de: Eloquent javascript
3rd edition Marijn Haverbeke
Código (javascript) [Seleccionar]
console.log("The future says:", future());
function future() {
return "You'll never have flying cars";
}

The preceding code works, even though the function is defined below the code
that uses it. Function declarations are not part of the regular top-to-bottom
flow of control. They are conceptually moved to the top of their scope and can
be used by all the code in that scope. This is sometimes useful because it offers
the freedom to order code in a way that seems meaningful, without worrying
about having to define all functions before they are used.

Por lo que leí y como comentas algunos navegadores muestran valores. Mientras no se llena el stack el código funciona, asique puedo enviar los valores de i a PHP.

Es más por curiosidad de si funcionaría y como.
#1476
Qué interesante. Me acordó de regar las plantas gracias.
#1477
Estaba pensando en nuevos métodos de device fingerprinting y se me ocurrió saturar el stack de llamadas.

1)Cual es el número más grande que se te muestra al final del documento?

2)Se muestra el mismo número en distintos navegadores?

3)Siempre se repite el mismo resultado de forma consistente en el mismo navegador?

Código (javascript) [Seleccionar]
<html>
<body>
/*Pon etiqueta script*/

var i =0;
stack();

function stack()
{
++i;
document.write(i+" ");
return overflow();
}

function overflow()
{
return stack();
}
/*Pon etiqueta /script */
</body>
</html>


A ver que resultados obtiene cada uno.
Yo con Android con un smartphone gama baja en Samsung Browser obtengo 10505 iteraciones hasta que se llena el stack.

No tengo ahora mismo más dispositivos disponibles. A ver que resultados obteneis vosotros y si podemos sacar conclusiones en base a ellos de si es un método que pueda ser útil para hacer fingerprint.
#1478
Cita de: MiguelCanellas en  4 Octubre 2019, 03:11 AM
Buenas noches,
no voy a pedir códigos y esas cosas por que de eso me ocupo yo pero si que me encantaría que me pudieran dar una mano con la parte por así decir "teórica" la lógica del sistema.

Se me había ocurrido hacer así:

El usuario tendrá que ingresar una dirección de correo electrónico (Naturalmente la de su cuenta que no puede ingresar porque se olvido su contraseña), luego de esto se le enviará un mail con el código de cambió de contraseña, este código lo que permite es que se pueda editar dicha contraseña...

El código esta compuesto por 20 caracteres numéricos random + 2 letras en mayúsculas random.

Entonces no se si esto es muy seguro, no quiero que tampoco una persona la cual no es dueña de dicha cuenta vaya cambiando de código en código hasta poder acertar para cambiar una contraseña de una cuenta que como ya dije no le pertenece.

¿Cuales son sus sugerencias o tienen alguna lógica mejorada para esto?
Limita los intentos. Si introduce el codigo mal le pones: Tienes que introducir el código que se te envió por correo. Intentos restantes 3.
A partir de ahí le vas metiendo tiempo de espera:
Has superado el número de intentos. Espere 5 minutos.
Has superado el número de intentos. Espere 10 minutos.
...

Es segura dependiendo de como generes esos caracteres "aleatorios".
La aletoriedad en informática no existe. Si usas una semilla para generar la cadena y alguien se dedica a crearse cuentas en tu plataforma y pedir códigos, puede que averigue la semilla.

Recuerdo un server que usaba una semilla para algo similar. Imagínate la serie:
1 1 2 3 5 8 13 21 34 45 89...

Si yo te pido el código y me das "5" no averiguo nada.

Si 4 horas más tarde te pido otro y me das "89" tampoco saco nada.

Pero si te mando 5 peticiones a la vez desde distintos equipos y veo:
"8" "13" "21" "34" "45" ya entiendo la serie y sé que el siguiente número es la suma de los 2 anteriores.

Sabiendo esto, podría tirarte el servidor y mandarte otras 5 peticiones.
Entonces obtendría:
"1" "1" "2" "3" "5". Sabiendo esto, sé que si te pido 5 codigos para correos del sistema, los códigos que le vas a enviar van a ser alguno de estos: "8" "13" "21" "34" "55" "89" "144"...

Para generar cadenas aleatorias utiliza un algoritmo CSPRNG (Generador de Numeros Pseudo-Aleatorios Criptográficamente Seguro)

Entonces toda la seguridad recae en que se envie el código de forma segura y que el cliente acceda de forma segura a su cliente de correo.

También ten cuidado con nunca dejar ver a los usuarios sus contraseñas de ninguna forma y de que la página de recuperación y el link a la misma se diferencie bastante de la página de login.

Un usuario mal intencionado podría hacerse una cuenta, pedirte el código de restablecer contraseña. Y enviárselo a otro usuario del sistema:

Enviado por MiguelCanellas@protonmail.com
Querido usuario, nuestra plataforma cumple 1 año y queremos celebrarlo contigo. Por eso estamos habilitando nuevas funcionalidades para las 40 primeras cuentas que ingresen en el día de hoy Viernes, 4 de Octubre de 2019. NUEVOS AVATARES para tu perfil, Bonos descuento, tarjetas regalos para Amazon y Google Play... Y mucho más.
Para participar solo debes ingresar tu código de celebración ndiwndlq1wma4wSjFs para activar la promoción e ingresar con tu contraseña. www.example.com/...
Recuerda que example.com jamás te pedirá tu contraseña ni tus datos por email.

Atte: MiguelCanellas. Fundador y Administrador de example.com


Algun usuario irá como loco y meterá el código y su contraseña varias veces.

Resultado? Si el atacante puede ver la contraseña de su cuenta verá la nueva contraseña introducida por la víctima, a.k.a. su contraseña habitual.

Por eso es buena idea cerrar sessiones cuando se cambian contraseñas, páginas muy distintas en diseño, no mostrar contraseñas en ningún momento, etc.
Piensa que ahora el atacante aún sin ver la contraseña podría hablar con el soporte o con el admin preguntando por su contraseña y demostrando que la cuenta es realmente suya, porque lo es.

No se suelen prestar tanta atención a las políticas pero son igual de importantes que el diseño del sistema. La mayoría de ataques usan el engaño, intenta protegerte de eso que siempre se obvia.
#1479
Asegúrate que no estás intentando instalar un sistema de 64bits en arquitectura de 32/86.

Descargate el sistema .iso 32bits de la web official de Microsoft y utiliza Rufus para crear el pendrive autoarrancable.

Puede que se estropease el CD de instalación.

Haz captura de pantalla de los errores que tengas.
#1480
Código (javascript) [Seleccionar]
function dividir(num1, num2)
{

   if ( num1 !=0 && num2 !=0 && num1>=num2)
   {
   return num1/num2;
   }


return;
}

var resultado = dividir(parseInt(prompt("Pon Numero")), parseInt(prompt("Pon Numero")));

if(resultado)
{
alert(resultado);
}

else
{
alert("No se puede dividir");
}


En la línea 10 hago return explícito. Me surgen varias dudas.
Hay alguna diferencia entre que escriba el return o no lo escriba en esta línea 10? En teoría lo que hago es retornar un undefined, que es una representación de un valor no definido. Si borro la línea 10 del código, yo lo que me esperaría por lógica es que se retornase un null. Es decir, que se retornase una representación de un valor vacio.

1) ¿Por qué se retorna un undefined si yo no espero que la funcion me retorne un valor? No es más coherente que se retorne un null haciendo referencia a que no se retorna ningún valor en vez de hacer referencia a que se espera un valor que no se definió?

2) ¿Sirve el return de la línea 10 en este caso de algo? Es diferente al return implícito en la función al finalizar las instrucciones del cuerpo sin encontrarse ningún return? Si hago un break; tras el break se hace el return implícito? Es el return simplemente un break más eficiente o tiene alguna funcionalidad?

3) Es una buena práctica utilizar el undefined en un if como un false? Por ejemplo en la línea 15 podría poner if(!resultado){document.write("No se puede dividir");}