Contraseña no crackeada - Hash no encontrado

¿Cómo almacenar contraseñas en bases de datos?

El día de hoy te voy a compartir un poco de mi experiencia como programador al guardar contraseñas en bases de datos, sin importar lenguaje de programación ni motor de base de datos.

Te daré algunos consejos para almacenar passwords en una base de datos y que obviamente queden seguras para que ni siquiera tú sepas cuál es la contraseña pero puedas resetearla en caso de ser necesario.

(más…)

Validar confirmación de contraseña con Laravel - Confirmar contraseña

Laravel: validar confirmación de contraseña

En el corto post de hoy veremos cómo validar que las contraseñas que el usuario escribe sean iguales al momento de registrar un usuario, es decir, que la contraseña y la confirmación de la contraseña coincidan.

Así vas a poder mostrar el mensaje de “Las contraseñas deben coincidir” o “Vuelve a escribir tu contraseña”

Esto se puede hacer con un if o cosas complejas, pero te enseñaré a comprobar si las 2 contraseñas son iguales dentro del Request que llega al formulario, dentro de StoreUserRequest específicamente.

Por cierto, estoy suponiendo que usas la autenticación de Laravel para crear usuarios o que al menos usas un Request para enviar el formulario.

(más…)

Conectarse a Ubuntu por SSH usando usuario y contraseña

Lo recomendado para usar SSH y administrar un servidor remoto es la clave pública y privada; de este modo podemos conectarnos remotamente sin colocar la contraseña.

Ya he dedicado un post completo a la creación de un par de claves para usar al conectarse por SSH, pero en el artículo de hoy te enseñaré a conectarte por SSH a un servidor de Linux Ubuntu usando un usuario y contraseña.

Con lo que verás aquí podrás solucionar el error que dice: Permission denied (publickey).

Toma en cuenta que esto es inseguro ya que un atacante puede hacer ataques de fuerza bruta o cosas de esas, pero en ocasiones es necesario al menos de manera temporal.

Nota: este truco se puede usar para conectarse a un servidor de Ubuntu de DigitalOcean sin usar la consola desde el navegador.

(más…)

Leer contraseña en C sin mostrar caracteres escritos (mostrar asteriscos)

C – Leer contraseña sin mostrarla

En el post de hoy vamos a leer una cadena usando C (compatible con C++) pero no vamos a mostrarla, simplemente vamos a mostrar asteriscos o cualquier otro carácter mientras el usuario escribe.

Esto será hecho en C con MinGW en Windows pero lo he probado igual con Dev-C++. Al final tendremos un programa que va a solicitar una contraseña, no la va a mostrar y mostrará asteriscos en su lugar.

(más…)

Por parzibyte, hace
Encriptar y desencriptar información con JavaScript usando AES

Encriptación con JavaScript del lado del cliente usando la Web Crypto API

En este post de programación con JavaScript en el navegador veremos cómo encriptar y desencriptar datos usando una API nativa, segura y confiable.

Encriptar y desencriptar información con JavaScript usando AES

Encriptar y desencriptar información con JavaScript usando AES

Vamos a usar la interfaz Crypto a través de window.crypto. Al final podremos encriptar y desencriptar archivos usando una contraseña, derivando una clave de la misma y usando AES para el cifrado de datos.

Nota: voy a usar cifrado y encriptado como sinónimos para referirme a la encriptación de información.

Por cierto, usaremos la encriptación simétrica aunque también es posible usar la asimétrica con claves públicas y privadas.

(más…)

Encriptar contraseñas con Node

En este post de programación con JavaScript del lado del servidor en el entorno de Node te mostraré cómo asegurar las contraseñas de los usuarios; esto es, encriptarlas.

De hecho me parece que el término correcto es hashear, pues encriptar es convertir algo plano a encriptado y luego poder hacer lo contrario; en cambio hashear es convertir algo plano a encriptado, pero ya no poder obtener el valor original a partir del encriptado.

Como sea, te mostraré cómo asegurar, encriptar o cifrar las contraseñas. Vamos a usar el algoritmo bcrypt pues es perfecto para hashear contraseñas en Node.

(más…)

Obtener clave de WiFi con wifiphisher y phishing

En posts anteriores te mostré cómo obtener la contraseña o clave de WiFi de una red con Aircrack-ng usando fuerza bruta, hoy veremos otro tipo de ataque en donde en su lugar hacemos phishing para que el usuario nos dé la clave.

Poniéndolo en otras palabras vamos a hackear una red wifi, ya que el usuario nos dará la clave del módem. La herramienta que vamos a usar se llama wifiphisher.

(más…)

Crear archivos zip con PHP: agregar archivos y directorios, descargar zip y proteger con contraseña

Desde hace tiempo he querido hacer un post completo sobre cómo trabajar con archivos ZIP en PHP.

Como sabemos, los archivos ZIP son unos paquetes que permiten tener dentro múltiples archivos para su posterior transporte.

Tutorial de creación de archivos zip con PHP

PHP tiene soporte nativo para los archivos ZIP en la clase ZipArchive y permite comprimir o empaquetar archivos de una manera fácil.

Hoy vamos a ver cómo:

  1. Crear un archivo zip  y agregarle contenido
  2. Forzar la descarga de un archivo zip, es decir, crear un zip y mostrarlo en el navegador
  3. Agregar archivos a un zip a partir de un patrón glob
  4. Agregar todo el contenido de un directorio de manera recursiva. Es decir, agregar todo el contenido y si hay un directorio agregar el contenido de ese directorio, así recursivamente.
  5. Proteger un archivo ZIP con contraseña

Todavía no vamos a ver cómo descomprimir o desempaquetar, eso es de otro post.

(más…)

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas con Python y bcrypt

Anteriormente vimos cómo generar una contraseña segura en Python cuando necesitamos un token o una clave segura, ahora veremos cómo hashear una contraseña en Python, usando bcrypt.

El algoritmo de bcrypt es usado también por PHP al hashear contraseñas. Igualmente está disponible en Go.

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas es un estándar que debemos seguir al implementar autenticación de usuarios, por ejemplo. Pero bueno, vamos al tutorial en donde veremos:

  1. Cómo instalar la librería de bcrypt usando pip
  2. Cómo hashear una contraseña con bcrypt y Python
  3. Cómo comprobar si una contraseña coincide con el hash de bcrypt en Python
  4. Costos y límites de bcrypt en Python

(más…)

Cadena aleatoria segura criptográficamente con Python

Generar contraseña o cadena segura en Python

Con el lenguaje de programación Python es muy fácil generar un token o cadena segura, hablando criptográficamente.

Recientemente se ha introducido el módulo secrets que nos permite generar una contraseña aleatoria y segura para usarla como token, clave de encriptación o cosas de esas.

Cadena aleatoria segura criptográficamente con Python

Cadena aleatoria segura criptográficamente con Python

Si no tienes Python 3, es hora de actualizar. Mira cómo instalarlo aquí.

(más…)

Cuando descubrí que las contraseñas de una web no estaban hasheadas

Introducción

Esto es otra historia personal, se trata sobre una plataforma web que está mal programada, de la cual descubrí que no hashea (o encripta como dicen por ahí, aunque no es la forma correcta) las contraseñas de los usuarios, además de que no valida nada.

Todo comenzó porque por gracioso cambié mi contraseña y puse una de 100 caracteres. La cambié, cerré sesión y magia, ya no podía entrar.

(más…)