
Autor: Donnie Rock
Función de Javascript para emular el «Cifrado César»
El cifrado César, en criptografía, es un tipo de cifrado de sustitución en el que cada letra del mensaje original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Es posible que recordéis que ya hicimos en el pasado un ejercicio similar a este, usando el sistema de cifrado Rot13, que es otra forma de cifrado de sustitución muy similar. El cifrado César debe su nombre a Julio César, ya que cifraba sus mensajes militares usando un desplazamiento de tres posiciones, o al menos eso contaba Suetonio.
Usando el ejemplo de César con un desplazamiento de 3 posiciones, la letra A se convertiría en D, la letra B se convertiría en E, y así sucesivamente. Como es evidente, llegaría un punto en el que nos quedaríamos sin letras, por lo que el alfabeto se recorre de forma circular, volviendo a la A cuando pasemos de la Z.
Es un método simple e ingenioso, aunque hoy por hoy no muy seguro pues es bastante fácil de descubrir y de descifrar. ¿Podríamos hacer una función de Javascript que utilice este método de cifrado? Desde luego, haremos una pensada para una codificación de caracteres UTF-16 y que en lugar de tener un desplazamiento fijo como en Rot13 (que son siempre 13 caracteres), recibirá un parámetro con el desplazamiento que queremos aplicar:
function caesar(txt, desp) {
var respuesta = "";
//bucle for que recorre la cadena y sustituye cada caracter.
for (var i = 0; i < txt.length; i++) {
var caracter = txt[i];
// Verifica si el caracter es una letra del alfabeto
if (/[a-zA-Z]/.test(caracter)) {
// sumamos al código del caracter el desplazamiento
var codigo = txt.charCodeAt(i) + desp;
// alfabeto circular: si nos pasamos de la z retrocedemos 26 caracteres
// los 26 del alfabeto anglosajón, jo tenemos soporte para ñ ni acentos.
if (/[a-z]/.test(caracter) && codigo > 122) {
codigo -= 26;
} else if (/[A-Z]/.test(caracter) && codigo > 90) {
codigo -= 26;
} else if (codigo < 0) {
codigo += 26;
}
caracter = String.fromCharCode(codigo);
}
respuesta += caracter;
}
return respuesta;
}
Cómo activar el calendario y el cliente de correo en el navegador Vivaldi
Hoy por hoy Google Chrome es el navegador que domina el mercado, sobre todo en equipos de escritorio. Firefox se ha ido viendo cada vez más arrinconado y parece ir un paso por detrás en cuanto a innovación, Edge no logra quitarse los estigmas heredados del tan odiado Internet Explorer, Opera logró enfadar a la mayoría de sus usuarios perdiendo muchas de sus funciones nativas y las promesas de mayor privacidad y seguridad de Brave no acaban de ser abrazadas por el gran público. De hecho es a partir del enfado de los usuarios de Opera que nace Vivaldi, pues su creador es el antiguo CEO de Opera quien había dejado la compañía en 2014 y un año después lanzaba su propio navegador, un Vivaldi que no es software libre aunque sí gratuito y está basado en Chromium, incluyendo además varias funciones a mayores muy prácticas, entre ellas un cliente de correo basado en Roundcube y un cliente de calendario.
¿Cómo lo activo?
En la barra lateral izquierda, en la parte inferior, hay un botón con una rueda dentada que nos lleva a los ajustes del navegador. Esto abrirá una ventana flotante con un menú con múltiples secciones, ahí debemos buscar la de Correo y nos dirá que está de momento desactivada.
Una vez marquemos Activar el correo, el calendario y el lector de Feeds podremos pasar a configurar nuestras cuentas como en cualquier cliente de email. No solo nos permite configurar una cuenta de VivaldiWebmail (su propio servicio de correo) sino que también podemos incluir cuentas de Outlook, GMail o casi cualquier proveedor de un correo POP3 o IMAP:

El calendario también nos permite sincronizar los calendarios de Outlook, Google o del propio servicio de Vivaldi en nuestro navegador.
De esta forma podemos disponer de todo en una misma aplicación, sin necesidad de instalar varias soluciones en nuestro equipo.
Activar el modo de compatibilidad con Internet Explorer de Microsoft Edge
Ayer se acabó la era IE, tras mucho tiempo anunciándolo Microsoft jubilaba definitivamente Internet Explorer para todos aquellos usuarios que tengan una versión de Windows actualizada. A pesar de los avisos mucha gente todavía depende de Internet Explorer por la necesidad de recurrir a controles ActiveX para diversas cosas: interactuar con algún hardware antiguo (una tableta de firma, un lector de huellas, una máquina de radiología…), utilizar aplicaciones internas de tipo intranet, creo que algunas páginas de la administración todavía dependen de IE para algunos certificado digitales, etc. ¿Qué solución tiene esta gente? La más radical sería montar una máquina virtual con Windows 7 para tener IE11, pero no es lo más práctico. Microsoft Edge incorpora un modo de compatibilidad con IE, que en principio se mantendrá hasta 2029 (luego ya se verá).
¿Cómo activamos el modo IE de Edge?
Es muy simple, pulsando sobre el icono de los tres puntos en la esquina superior derecha se desplegará este menú:
Ahí tenéis una opción que es Volver a Cargar en modo Internet Explorer. Al pulsarla recargará la página usando un motor que emula las características del de Explorer. Cuando lo activemos nos pedirá que confirmemos si queremos abrir esta dirección siempre en ese modo, con un aviso como este:
Si necesitáis configurar las Opciones de Internet, a las que antes se accedía desde el menú de Explorer ahora debéis buscarlas en el Panel de Control del sistema operativo, por el resto se configuran igual.
El portapapeles avanzado de Windows 10 y 11
Seguramente el portapapeles sea una de las funciones más usadas de Windows: pulsas Ctrl+C para copiar una cosa y después Ctrl+V para pegarla, pero ¿cuántas veces han pulsado Windows+V? Seguramente mucha de la gente que está leyendo esto no conoce este atajo de teclado y esta funcionalidad.
Tradicionalmente el portapapeles en Windows tenía una memoria limitada a un solo item: copiamos algo y si después copiamos otra cosa entonces la primera se va al mágico limbo donde van los sueños cuando nos despertamos (o similar). Desde Windows 10 esta memoria puede ampliarse para que guarde múltiples registros, algo que podemos hacer de dos formas:
- La primera es irnos a la configuración de Windows, allí buscar en el menú de la izquierda la sección portapapeles y una vez escogida marcamos Activado el Historial del Portapapeles.
- La otra opción es pulsar directamente la combinación de teclas Windows+V, si está desactivado nos dirá que tenemos que activarlo y ya tendremos allí un botón de Activar para hacerlo sin tener que ir a la configuración.
Una vez hayamos activado esto, cada vez que usemos el comando Copiar o Ctrl+C se añadirá una entrada al historial. Si pulsamos Ctrl+V funcionará como siempre y pegará lo último que hayamos copiado, pero si pulsamos Windows+V entonces veremos una lista con lo que tengamos copiado y desde ahí podremos escoger la que queramos pegar.
Incluso, si utilizas una cuenta de Microsoft para acceder a Windows, podrás sincronizar este portapapeles entre varios dispositivos, pudiendo acceder a todo el historial desde todos. Esto puedes configurarlo desde el menú de configuración que veíamos en el primer punto.
¿Contras y riesgos de esto? Bueno, por motivos de privacidad y seguridad es recomendable borrar el historial de vez en cuando, dado que si una persona accede al dispositivo podría ver todo lo que hayamos copiado y pegado.
Buscador de comandos en Visual Studio Code
Seguimos hablando de Visual Studio Code y de trucos para ser más productivos utilizándolo, que ya hemos visto unos cuántos.
Este editor tiene un buen montón de útiles comandos y además muchos de ellos pueden ser ejecutados a través de atajos de teclado, pero la cantidad es tan grande que es imposible recordarlos todos y recordar todos sus atajos. ¿Tenemos una solución? Sí, VSCode incluye un buscador de comandos que podemos abrir pulsando a la vez las teclas CTRL, SHIFT y P, lo cual nos abrirá un diálogo de texto para que busquemos el comando que necesitamos, sin tener que estar dando vueltas por los menús como pollos sin cabeza.
Siete extensiones para VSCode que me resultan de mucha ayuda.
Ya sabéis muchos que hace un tiempo me lancé a los brazos del Tío Bill y su malvada Microsoft y comencé a trabajar con el editor VSCode. Una de las virtudes de este editor es su extensibilidad, sus capacidades pueden ser ampliadas añadiéndole distintos plugins que nos ayuden a ser más productivos, a hacer más con menos. Aquí va una lista con siete:
- Regex Previewer: Las expresiones regulares pueden volverse un dolor de cabeza en muchos casos. Esta extensión nos ayudará con ellas, ya que mientras la escribimos y editamos podremos ver en el panel contiguo un documento con ejemplos y comprobar cuales pasan la validación mientras la modificamos.
- JavaScript Debugger: Un depurador de Javascript que nos permite revisar nuestro código en Node.js, Chrome, Edge, WebView2, o en el desarrollo de extensiones de VSCode.
- JavaScript Code Snippets: Siguiendo con el Javascript, esta extensión trae distintos ejemplos de código ya cargados para que con solo teclear una abreviatura nos genere todo un bloque.
- GitHub Copilot: Llevamos unas semanas en las que no para de hablarse de la llegada de las IA para revolucionarlo todo, y la más útil para desarrolladores parece ser GitHub Copilot, un asistente que te ayudará sugiriéndote el siguiente paso mientras escribes código. El «contra» aquí es que es de pago, aunque si quieres probarla puedes hacer uso de la demo gratuita. Menos espectaculares, aunque gratuitas, son las extensiones IntelliCode y la todavía experimental IntelliCode Completions, que ofrecen un intellisense supuestamente más eficiente y mejorado gracias al uso de inteligencia artificial.
- Colorize: Puede parecer una chorrada, pero a la hora de trabajar con CSS esta extensión es de gran ayuda. Simplemente cuando definamos un color en nuestra hora de estilos esta línea se subrayará con dicho color.
- CSS Peek:Otra herramienta para el desarrollo front-end que nos permite acceder desde nuestro código HTML al CSS vinculado con él.
- GitLens: Finamente, si trabajas con Git,esta extensión te facilitará mucho la visualización de los cambios que haya sufrido el código y su historial.
Probando Swisscows ¿la alternativa europea a Google?
Que Google es el buscador más popular del mundo es algo que nadie puede negar, hace años destronó a Yahoo y ninguno de sus competidores ha logrado adelantarlo desde entonces a nivel global, ni siquiera un Bing vitaminado con la pasta y todo el poderío tecnológico de Microsoft, solo algunas alternativas como Baidu en China o Yandex en Rusia pueden derrotarlo puntualmente en sus mercados regionales. Otra cosa que nadie puede negar es que Google basa su negocio en mercadear con los datos de estas búsquedas y aplica de forma agresiva diversas tecnologías para rastrear nuestra actividad en la red, algo que enciende las alarmas de muchas personas preocupadas por su privacidad. Durante un tiempo DuckDuckGo pareció la gran alternativa, pero la filtración de sus acuerdos con Microsoft para no bloquear alguno de sus rastreadores levantó una sombra sobre su publicitada política de privacidad.
Swisscows también nos promete respeto sobre nuestro datos, una mayor privacidad y anonimato a la hora de hacer nuestras búsquedas. La empresa dice con orgullo seguir a rajatabla las leyes de protección de datos suízas, unas de las más restrictivas del mundo, en principio incluso más estrictas que el RGPD de la Unión Europea. Si leemos sus políticas de protección de datos afirman no generar perfiles de usuarios y anonimizar totalmente las búsquedas recogidas cada 7 días. Swisscows no funciona como un motor propio, sino que trabaja como pasarela entre nosotros y el buscador Bing de Microsoft, ofreciéndonos los resultados de dicho buscador optimizados por sus propios índices y filtros semánticos. El buscador por defecto hará búsquedas «seguras«, eliminando por ejemplo los contenidos que haya indexado como pornográficos.
El buscador se ofrece en varios idiomas, como es lógico incluye los cuatro idiomas oficiales de Suíza, pero también castellano, inglés, holandés, letón, húngaro o ucraniano. Si realizamos una búsqueda nos dejará filtrar los resultados entre webs, imágenes, vídeos y música, además de poder añadir filtros a mayores para cada una de esas secciones como fecha, licencia o tamaño para las imágenes, duración o definición para el vídeo, etc…
Una de las funcionalidades más interesantes es que en la búsqueda web nos da la opción de hacer una vista previa del resultado, que nos abrirá una ventana modal mostrando la portada de la web en cuestión y que, además, nos permitirá otras acciones como realizar una captura de pantalla o listar los rastreadores que usa dicha web.
El buscador de vídeos, por otra parte, nos permitirá ver dichos vídeos ya desde la búsqueda, sin tener que entrar a la web en cuestión y pudiendo así evitar distintas tecnologías de rastreo. Aquí tenemos un «pero» importante: con los resultados de Youtube no funciona, Google no lo permite.
En cuanto a la música, no he probado mucho, parece buscar de varias fuentes, de distintas plataformas y centrarse en buscar listas de reproducción. Creo que es una funcionalidad interesante pero que está todavía un poco verde.
Finalmente en la esquina superior derecha veremos publicidad de varios servicios a mayores que nos ofrece Swisscows: un servicio de VPN de pago, un servicio de mensajería instantánea cifrado pensado para uso corporativo y un correo web. Además hay un contador con las búsquedas que has realizado en cada sesión, pues por cada 50 hacen una donación a una ONG para combatir el hambre infantil.
¿Será Swisscows una alternativa a Google funcional que además nos de un extra de privacidad? El tiempo, y el modelo de negocio (se financian a través de publicidad de Bing, pero si no comercian ni usan los datos de las búsquedas los beneficios son menores), lo dirán. De momento parece ofrecer algunas cosas interesantes y no se han dado motivos para desconfiar, esperemos que sigan por el buen camino.
Usar PowerShell para comprobar si un puerto responde a una conexión.
Tenéis que disculparme por desaparecer un par de meses, pero se me ha juntado una sobrecarga de trabajo con intentar acabar un curso de informática forense. La buena noticia es que ahora os podré contar más cosas sobre más temas, que de algo sirve estudiar xDDD.
La última vez que os escribí por aquí os contaba cómo podíamos comprobar que un servidor de correo respondía en un puerto concreto. Hoy vamos a ver cómo podemos comprobar de forma muy sencilla desde PowerShell si un puerto está respondiendo.
El comando tnc, abreviatura de Test-NetworkConnection, nos permite comprobar si un puerto responde. Requiere dos parámetros dicho comando, el primero es obligatorio y sería la IP o el nombre del host, el segundo es opcional y sería el puerto concreto que queremos comprobar (precedido del parámetro -port). La sintaxis básica sería:
tnc eldominiooip.com -port ElPuertoQueSea
Si no especificamos puerto simplemente sabremos si dicha IP o nombre de red tiene conexión, si lo especificamos sabremos además si el puerto está abierto o a la escucha. Esta mañana tenía que comprobar si un servidor web respondía en el puerto 8080, así que mandé el siguiente comando:
tnc dominio.ejemplo.com -port 8080
La respuesta que obtuve fue que la conexión TCP había fallado. Tras llamar al cliente confirmamos que le habían cambiado el router y no habían abierto el puerto. En este ejemplo fue el puerto 8080 de un servidor web, pero también podéis probar cualquier otro puerto, ya sea para un servicio web, ftp, smtp, etc.
Comprobar manualmente si un servidor de correo responde en un puerto concreto
Esta mañana tenía que ver por qué un cliente no podía enviar correos desde el software que le proporciona mi empresa, el cliente insistía en que había configurado bien su cuenta pero la aplicación devolvía un error en la capa de transporte… así que algo no estaba bien. Me pareció raro que el puerto del SMTP fuese el 25 porque su proveedor de correo normalmente usa el puerto 465 y autenticación SSL. ¿Podía comprobar esto? Pues sí, abrí una consola y probé:
telnet mail.direcciondemicliente.com 25
Y la respuesta que obtuve es que el servidor no conectaba, así que luego probé a usar openssl para comprobar si respondía en el puerto 465:
openssl s_client -connect mail.direcciondemicliente.com:465
Y ahí ya recibí un mensaje que empezaba por 220 y me decía que el servidor estaba ready for the chachachá. Cambié la configuración de los puertos en su correo y todo fue como la seda.
Así que si queréis comprobar si un servidor de correo responde podéis usar Telnet como en el primer ejemplo (telnet dirección puerto) en el caso de que la conexión no esté cifrada, mientras que con openssl podéis hacer la misma comprobación en servidores que usen validación SSL. ¿Y si usan TLS? Pues con openssl también pero con más parámetros, tal que así:
openssl s_client -starttls smtp -connect mail.direcciondemicliente.com:587