Si trabajáis con ASP.NET Core MVC, seguro que con frecuencia implementaréis acciones que reciben como argumento objetos complejos, que normalmente vendrán serializados en el cuerpo de la petición como JSON.
Y probablemente, lo habréis hecho esperando que el binder obre su magia y sea capaz de transformar esas secuencias de caracteres procedentes de la red en flamantes instancias de objetos del CLR, listas para ser consumidas desde las aplicaciones. Un ejemplo de acción de este tipo es la siguiente (aunque no funcionaría, luego vemos por qué):
public class FriendsController: Controller { [HttpPost] public string Hello(Friend friend) { return $"Hola {friend.Name}, tienes {friend.Age} años"; } }
public class Friend { public int Age { get; set; } public string Name { get; set; } }
Sin embargo, a veces nos encontramos con que, a pesar de que la petición contiene en su body los datos JSON esperados, el objeto que recibimos es nulo o tiene todas sus propiedades sin inicializar.
¿Por qué ocurre esto? En este post vamos a ver distintos motivos que podrían llevar a este comportamiento, y cómo solucionar cada caso.
1. ¿Seguro que estamos enviando bien los datos?
Esta es de cajón, pero a los despistados es algo que nos podría suceder. Quizás estemos enviando una petición sin cuerpo, por lo que difícilmente podrían poblarse los parámetros de nuestra acción.
Lo primero, por tanto, es asegurarnos de que todo lo que comprobaremos después tendrá sentido. Aseguraos que el código cliente de la API esté enviando efectivamente la información o, si usáis herramientas como Fiddler o Postman, comprobad que estáis componiendo la petición correctamente.
2. ¿Hemos olvidado el atributo [FromBody] en el parámetro?
Si, como en el ejemplo que hemos visto más arriba, hemos olvidado incluir el atributo [FromBody] en el parámetro que queremos poblar partiendo de los datos contenidos en el cuerpo de la petición, recibiremos un objeto vacío, es decir, una instancia con todas sus propiedades pobladas con los valores por defecto. La respuesta obtenida en el navegador en este caso sería:
"Hola , tienes 0 años"
La forma correcta de escribir la acción sería la siguiente:
Aunque ojo, si usamos controladores [ApiController], por convención se aplicará automáticamente el [FromBody] a los parámetros de tipo complejo como Friend, por lo que no será necesario hacerlo explícitamente.
3. ¿El cuerpo de la petición contiene un objeto JSON válido?
Si estáis componiendo la petición manualmente, ya sea usando herramientas como Fiddler o Postman, o desde código serializando manualmente los objetos, es posible que os hayáis equivocado en algo. Detalles simples, como unas comillas de más o de menos o una coma que falte, pueden hacer que recibamos un objeto nulo.
Por ejemplo, las peticiones realizadas con los cuerpos siguientes fallarán:
// Faltan las comillas en el nombre de las propiedades: { age: 45, name: "Jon" }
// Comillas incorrectas en el nombre de las propiedades: { 'age': 45, 'name': "Jon" }
// Cierre incorrecto de comilla en "age': { "age': 45, "name": "Jon" }
// Falta la coma para separar las propiedades: { "age": 45 "name": "Jon" }
// Sobra la coma del final: { "age": 45, "name": "Jon", }
Para solucionarlo sólo tendréis que repasar cuidadosamente el contenido enviado y asegurar que está todo en orden desde el punto de vista sintáctico.
4. ¿El Content-Type es el apropiado?
Otro motivo frecuente para que recibamos objetos nulos en nuestra acción es que no exista el encabezado Content-Type en la petición, o bien su valor no indique correctamente el formato de los datos entrantes.
El parseador de ASP.NET Core debe conocer el formato de los datos entrantes, algo que se especifica con el Content-Type:
Si no se indica o es desconocido (es decir, no existe para él un input formatter registrado en el sistema), la acción ni siquiera llegará a ejecutarse, retornando al cliente un error HTTP 415 (Unsupported media type).
Si el formato especificado en el Content-Type es conocido pero no coincide con el formato de los datos de entrada, recibiremos un parámetro nulo en la acción.
La solución es sencilla; basta con asegurarse de que la petición incluya en el encabezado el tipo de contenido apropiado:
Content-Type: application/json
5. ¿Los tipos de datos no coinciden?
El binder de ASP.NET Core, o mejor dicho, el deserializador System.Text.Json que usa por debajo, es un poco tiquismiquis a la hora de mapear los datos entrantes a los parámetros requeridos por las acciones, y cualquier problema que se encuentre hace saltar por los aires el proceso. Es decir, si encuentra un problema bindeando una propiedad, no la ignorará y continuará con la siguiente, sino que abortará la deserialización, suministrándonos un objeto nulo.
Por ejemplo, si componemos una petición con el siguiente cuerpo, la acción recibirá un valor nulo:
// La propiedad "age" es int, y le estamos suministrando un string: { "age": "Forty five", "name": "Jon" }
Lo mismo ocurriría si intentamos enviarle un valor decimal:
// La propiedad "age" es int, y la estamos suministrando un decimal: { "age": 45.00, "name": "Jon" }
En este caso, la solución también consiste en revisar los datos que están siendo enviados y asegurar que sus tipos se corresponden con los de las clases donde deben introducirse.
Extra: Todavía no lo veo, ¿cómo puedo obtener más detalles?
A veces estos errores son difíciles de detectar a simple vista, sobre todo si tratamos con objetos de una cierta complejidad. En estos casos, la forma más sencilla de ver qué está ocurriendo es habilitar el nivel de trazas Debug para los componentes de Microsoft.AspNetCore.Mvc.Formatters, por ejemplo insertando las siguientes líneas en el archivo appsettings.Development.json:
De esta forma, los errores en el proceso de deserialización serán muy visibles en las trazas. Por ejemplo, enviando un contenido como el siguiente:
{ "age": "Hello", "name": "Jon", }
Las trazas mostrarán el siguiente mensaje (simplificado para facilitar su lectura. Como podemos observar, las pistas apuntan claramente a un problema con los tipos de datos de la propiedad age del objeto:
dbug: Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonInputFormatter[1] JSON input formatter threw an exception: The JSON value could not be converted to System.Int32. Path: $.age | LineNumber: 1 | BytePositionInLine: 17. [...] ---> System.FormatException: Either the JSON value is not in a supported format, or is out of bounds for an Int32. [...]
También podría ayudarnos habilitar el nivel "Debug" a la categoría Microsoft.AspNetCore.Mvc.ModelBinding, de forma que veríamos claramente errores relativos a los formateadores o el proceso de binding o, incluso, habilitarlo para Microsoft.AspNetCore.Mvc, de forma que los problemas en cualquier componente de MVC pueda quedar al descubierto.
Aunque la última vez que escribí sobre FileOptimizer fue en 2018 con el artículo Análisis estático de FileOptimizer, su desarrollo no se ha detenido, y regularmente he ido lanzando nuevas versiones, la última es la 15.10 de hace un par de semanas. Ciertamente el desarrollo se ha ido frenando poco a poco, en un software …
Los pequeños scripts aún con su pequeña función específica, sus pocas líneas de código y breves instantes de ejecución limitados a segundos, minutos u pocas horas al día o a la semana realizan tareas importantes dentro de todas las tares de las que se compone un sistema computacional completo. Al igual que cualquier otro proceso requieren de un entorno de ejecución pero dada su naturaleza breve hace que dedicar una máquina reservada que estará infrautilizada en exclusiva para ellos sea ineficiente además de un coste en la infraestructura. En vez de dedicar una máquina en exclusiva para uno o unos pocosscripts el orquestador de procesos Nomad permite planificarlos en alguna de las instancias de computación existentes del cluster ya sea como procesos del sistema o dentro de contenedores.
Con mucha seguridad surge la necesidad de ejecutar de forma periódica un pequeño proceso o script completamente autónomo con el que no interacciona ningún usuario o administrador pero realiza una función esencial para el funcionamiento de una aplicación u organización. Las funciones o tareas de los scripts son muy diversas desde generar informes en formato CSV o generador documentos PDF a enviar correos electrónicos, para ello quizá se conecten a bases de datos relacionales o NoSQL o realizar llamadas usando REST a APIs de aplicaciones propias o de otras organizaciones, incluso un script con la complejidad suficiente varias cosas de todo esto.
Los lenguajes habitualmente usados para realizar tareas de scripting son dinámicos e interpretados por no requerir ser compilados y ejecutables desde el código fuente. En la plataforma Java una opción como lenguaje de scripting es Groovy y en otros lenguajes son propio intérprete de comandos Bash o Python, aunque el lenguaje Java con JBang o Gradle es una opción para realizar tareas de scripting con las ventajas de ser un lenguaje compilado con la asistencia de código de los entornos integrados de desarrollo o IDE.
Una vez creado un script este ha de ser ejecutado en un sistema, dependiendo de las dependencias como fuentes de datos que tenga el script la ejecución se puede realizar de forma manual en la propia computadora de un usuario o desarrollador. Por el contrario, como cualquier otra aplicación requiere su propio entorno de ejecución en producción, la forma más simple con una expresión cron como un proceso del sistema habiendo aprovisionado previamente el entorno y las dependencias necesarias del mismo. Otra propiedad de muchos scripts es que su tiempo de ejecución no es continuo durando unos pocos minutos u alguna hora realizan su atarea y terminan hasta la siguiente ejecución, al contrario que las aplicaciones con funciones de servidor que están continuamente funcionado por si algún cliente se conecta. En función de las necesidades del script su ejecución se planifica con una expresión cron cada minuto, hora, día o una vez a la semana.
Ejemplo de planificar procesos o scripts de forma periódica con Nomad
Una de las ventajas de la computación en la nube es poder crear máquinas virtuales cuando se necesitan y destruirlas cuando ya no son necesarias, de forma rápida y bajo demanda. Los contenedores permiten ejecutar procesos en cualquier máquina que soporte para la ejecución de contenedores, esto permite que un proceso no dependa de una máquina física o virtual en concreto.
Nomad de HashiCorp es un orquestador de procesos y contenedores, en lo relativo al tema de este artículo permite planificar no solo tareas para mantenerse en ejecución de forma constante e indefinida sino también planificar una tarea de forma periódica y temporal. Una ventaja de Nomad sobre una opción alternativa como Kuberntes es que permite planificar no solo contenedores de Docker sino también contenedores Podman o procesos del sistema a partir de comandos existentes en el mismo. Otra ventaja de Nomad es que es simplemente un orquestador de procesos de fácil instalación y uso al constar de únicamente un binario, se integra con otras herramientas como Consul para el registro y descubrimiento y conectividad y Vault para seguridad.
En este ejemplo se muestran la definición de dos tareas o jobs para Nomad, una como definida como un proceso del sistema a partir de los comandos disponibles en la máquina en la que se ejecuta y otra tarea como un contenedor de Docker. Ambas tareas son lo más simple posible emitiendo únicamente en la salida estándar un mensaje, en el caso del proceso del sistema con el comando echo y en el caso del contenedor con el mismo comando de una imagen de contenedor con BusyBox. En la definición de las tareas de Nomad se planifica su ejecución con una expresión cron cada un minuto.
Nomad y Docker se inician con los siguientes comandos.
1
2
$ nomad agent -dev
nomad.sh
1
2
$ sudo systemctl start docker.service
docker.sh
Antes de enviar a Nomad las tareas el panel de administración integrado o dashboard permite ver el estado, está disponible en la dirección http://127.0.0.1:4646/ui/, inicialmente sin ninguna tarea planificada, una vez se envían las tareas aparecen en el panel.
Dashboard de Nomad
Dashboard de Nomad
Las tareas se envían a Nomad para su planificación con el siguiente comando, otros comandos permiten ver el estado de las tareas y las trazas que ha generado. Nomad planifica una ejecución de cada tarea según la expresión cron indicada en la definición de los jobs.
$ nomad job run echo-busybox.nomad
Job registration successful
Approximate next launch time: 2021-09-23T17:38:00Z (37s from now)
$ nomad job status echo-busybox
ID= echo-busybox
Name= echo-busybox
Submit Date= 2021-09-23T19:37:23+02:00
Type= batch
Priority=50Datacenters= dc1
Namespace= default
Status= running
Periodic=trueParameterized=false
Next Periodic Launch= 2021-09-23T17:39:00Z (1s from now)
Children Job Summary
Pending Running Dead
101
Previously Launched Jobs
ID Status
echo-busybox/periodic-1632418680 dead
$ nomad job status echo-busybox/periodic-1632418680
ID= echo-busybox/periodic-1632418680
Name= echo-busybox/periodic-1632418680
Submit Date= 2021-09-23T19:38:00+02:00
Type= batch
Priority=50Datacenters= dc1
Namespace= default
Status= dead
Periodic=falseParameterized=false
Summary
Task Group Queued Starting Running Failed Complete Lost
echo000010
Allocations
ID Node ID Task Group Version Desired Status Created Modified
be8e648a 26b275d9 echo0 run complete 1m20s ago 1m16s ago
$ nomad alloc logs be8e648a
Hello Word! (busybox)
$ nomad job run echo-bash.nomad
Job registration successful
Approximate next launch time: 2021-09-23T17:44:00Z (4s from now)
$ nomad job status echo-bash
ID= echo-bash
Name= echo-bash
Submit Date= 2021-09-23T19:43:56+02:00
Type= batch
Priority=50Datacenters= dc1
Namespace= default
Status= running
Periodic=trueParameterized=false
Next Periodic Launch= 2021-09-23T17:45:00Z (31s from now)
Children Job Summary
Pending Running Dead
101
Previously Launched Jobs
ID Status
echo-bash/periodic-1632419040 dead
$ nomad job status echo-bash/periodic-1632419040
ID= echo-bash/periodic-1632419040
Name= echo-bash/periodic-1632419040
Submit Date= 2021-09-23T19:44:00+02:00
Type= batch
Priority=50Datacenters= dc1
Namespace= default
Status= dead
Periodic=falseParameterized=false
Summary
Task Group Queued Starting Running Failed Complete Lost
echo000010
Allocations
ID Node ID Task Group Version Desired Status Created Modified
db6b9f1e 26b275d9 echo0 run complete 55s ago 55s ago
$ nomad alloc logs db6b9f1e
Hello Word! (bash)
Con un tráfico en crecimiento la página funcionaba cada vez con más lentitud y de vez en cuando daba errores. Así que pagando más, he migrado a un nuevo alojamiento en forma de VPS (Virtual Private Server), aunque probablemente no lo recordéis, fue unos meses atrás cuando realicé todo el proceso y que hubo algunas …
Para ejecutar contenedores en macOS hay dos opciones entre las posibles, una usar minikube que aunque su objetivo es ejecutar un cluster de Kubernetes permite usarlo para ejecutar contenedores de Docker directamente, la segunda opción es lime que es una opción similar que usa containerd en vez de Docker. La empresa encargada del desarrollo de Docker ha anunciado que el producto Docker Desktop pasa a requerir una licencia de pago para organizaciones empresariales grandes. Docker Desktop es usado tanto en Windows como en macOS para ejecutar contenedores de Docker con la opción también de ejecutar un cluster de Kubernetes, minikube y lima para macOS son una alternativa a Docker Desktop.
Docker es una tecnología para ejecutar procesos en contenedores nativa de GNU/Linux, los contenedores en Linux son simplemente un proceso más del sistema no utilizan virtualización con lo que requieren menos recursos, se inicia mucho más rápido que una máquina virtual y están aislados de otros procesos de sistema. Al usar tecnologías específicas de Linux no es posible ejecutarlo de forma nativa ni en Windows ni en macOS, en estos para usar contenedores hay que recurrir a la virtualización. Aún siendo una tecnología de GNUL/Linux hay necesidad de ejecutarlo en otros sistemas operativos para obtener los mismos beneficios aún siendo con virtualización.
La empresa propietaria y encargada del desarrollo de Docker ha anunciado que Docker Desktop usada para ejecutar Docker en Windows y macOS va a ser una opción de pago si se usa en un ámbito profesional en grandes organizaciones, para uso personal continúa siendo gratuito en su versión Docker Personal.
Docker Desktop is free to use, as part of the Docker Personal subscription, for individuals, non-commercial open source developers, students and educators, and small businesses of less than 250 employees AND less than $10 million in revenue. Commercial use of Docker Desktop at a company of more than 250 employees OR more than $10 million in annual revenue requires a paid subscription (Pro, Team, or Business) to use Docker Desktop.
Mucho del software de código abierto y libre es gratuito, sin embargo, es mantenido en algunos casos por personas en su propio tiempo personal con poco soporte económico. En el caso de Docker Desktop la empresa propietaria seguramente ha tomado esta medida como una vía para monetizar y financiar el desarrollo de Docker. Dada la popularidad que Docker ha adquirido en los últimos años muchas empresas basan de forma importante sus entornos de producción o desarrollo en Docker.
Docker Desktop permite ejecutar contenedores de Docker en sistemas distintos a GNU/Linux como macOS y Windows, incluye otras herramientas como Docker Compose y se integra con Docker Hub para almacenar imágenes, también integra una versión de Kuberntes para orquestar contenedores.
El cambio en el acuerdo de uso de Docker Desktop obliga a los usuarios de Apple macOS que no cumplan los criterios para usar la suscripción Personal han de pagar por su uso o buscar una alternativa. Para uso personal uso la distribución Arch Linux pero por política de empresa en el trabajo estoy obligado a usar macOS con lo que he tenido que buscar una alternativa para seguir usando Docker. En el caso de macOS dos de las opciones como alternativa a Docker Desktop son minikube y Lima.
Contenido del artículo
Contenedores de Docker y Kuberntes con Minikube en macOS
minikube tiene el objetivo de crear un cluster de Kubernetes rápidamente en GNU/Linux, Windows y macOS, pero dado que usa Docker el comando docker puede interaccionar con la instancia de minikube. Docker es una herramienta nativa de GNU/Linux en el caso de macOS y Windows usa virtualización, en estos dos sistemas operativos Docker se ejecuta en una máquina virtual con GNU/Linux y se proporcionan una serie de integraciones para el reenvío de puertos entre la máquina anfitrión y la máquina virtual con los contenedores.
El gestor de paquetes homebrew para macOS permite instalar fácilmente minikube simplemente con un comando. minikube y Kubernetes utilizan Docker para la ejecución de contenedores, aunque el propósito de minikube es ejecutar aplicaciones en contenedores permite el uso de las herramientas de línea de comandos docker y docker-compose.
Una vez instalado minikube hay que iniciar la máquina virtual con el siguiente comando.
1
2
$ minikube start
minikube-start.sh
Para que la herramienta de línea de comandos interaccione con el servidor de Docker en la máquina virtual de minikube el siguiente comando permite establecer varias variables de entorno.
1
2
$ eval$(minikube docker-env)
$ docker images
minikube-docker-env.sh
Hecha la configuración previa iniciar un contenedor de Docker es exactamente igual que en GNU/Linux de forma nativa, en realidad el comando docker interacciona con el servidor de Docker en la máquina virtual. Por otro lado dado que los contenedores de Docker se ejecutan dentro de la máquina virtual y los puertos se exponen en ella es necesario acceder a la máquina virtual es con su dirección IP, dirección IP proporcionada por el siguiente comando y si se desea añadirla al archivo /etc/hosts con un nombre de dominio.
1
2
$ docker run --rm -p 8080:80 nginx:latest
minikube-docker-run.sh
1
2
$ minikube ip
$ echo"`minikube ip` docker.local"| sudo tee -a /etc/hosts > /dev/null
minikube-ip.sh
Para destruir la máquina virtual que usa minikube hay otro comando.
1
2
$ minikube stop
$ minikube delete
minikube-delete.sh
Contenedores de Docker con Lima en macOS
Aunque minikube permite ejecutar contenedores de Docker directamente su propósito es ejecutar recursos de Kubernetes como pods en vez de directamente contenedores. Para el caso de simplemente contenedores de Docker minikube no ofrece reenvío de puertos y compartición de archivos entre la máquina virtual y local que requiere hacer el paso adicional del comando minikube-ip.sh.
Otra opción en macOS alternativa a Docker en macOS es Lima, denominada a sí misma como macOS subsystem for Linux parafraseando el Windows subsystem for Linux o WSL de Windows. El funcionamiento de Lima es también a través de una máquina virtual en la que se ejecutan los contenedores, la ventaja de Lima es que ofrece compartición de archivos entre la máquina local y la virtual y reenvío de puertos de forma automática de modo que la experiencia de uso es similar a Docker en GNU/Linux.
Lima como entorno de ejecución de contenedores utiliza containerd, pero dado que las imágenes de los contenedores de Docker de DockerHub siguen el estándar OCI son compatibles con containerd lo que permite usar exactamente las mismas imágenes.
Lima se instala también con un comando usando homebrew.
1
2
$ brew install lima
lima-install.sh
La máquina virtual con GNU/Linux y docker en la que se ejecutan los contenedores con el siguiente comando.
1
2
3
$ limactl start
$ lima uname -a
Linux lima-default 5.11.0-34-generic #36-Ubuntu SMP Thu Aug 26 19:22:09 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
lima-start.sh
Para ejecutar un contenedor el comando a usar es lima nerdctl, el resto de opciones y parámetros son los mismos a los habituales a los del comando docker están en la documentación de comandos de nerdctl. En este caso se inicia un contenedor del servidor web Nginx que se se accede con la dirección http://localhost:8080.
1
2
$ lima nerdctl run --rm -p 8080:80 nginx:latest
lima-run.sh
Para destruir la máquina virtual que usa lima hay otro comando.
1
2
$ limactl stop
$ limactl delete
lima-delete.sh
nerdctl soporta muchos de los subcomandos de docker tanto para la ejecución de contenedores, gestión, construcción, gestión de imágenes, gestión de volúmenes y de Docker Compose.
Como en otras ocasiones, seguro que debía ser de los pocos que quedaban en este planeta sin saber esto, pero me lo he encontrado mientras pululaba por internet y me ha parecido de lo más curioso. Y como con toda probabilidad habrá por ahí algún despistado más como yo, me ha parecido interesante comentar por aquí mi último gran descubrimiento ;)
La cuestión es que en nuestro mundillo solemos utilizar frecuentemente los términos uppercase y lowercase para referirnos a mayúsculas y minúsculas. Pensaba, erróneamente, que los prefijos upper y lower tenían que ver con el tamaño de los caracteres, y jamás me había dado por preguntarme el por qué de este sufijo "case" tan caprichoso que estas palabras comparten.
Pues bien, resulta que estos términos vienen desde los tiempos de la prensa impresa, donde los caracteres o letras era pequeñas piececillas con relieve, normalmente de metal, que se usaban para componer los "moldes" que, convenientemente entintados, eran aplicados sobre la superficie deseada para imprimir su contenido.
Estas piececillas eran guardadas en un par de cajones, que se colocaban uno encima de otro. Cada cajón estaba a su vez dividido en pequeños compartimientos, uno para cada carácter, cuyo tamaño y disposición dependían de su frecuencia de uso. Los caracteres más utilizados usaban compartimentos mayores y se colocaban en la parte inferior, más accesible para las personas que los manejaban.
La siguiente fotografía muestra una distribución frecuente, y justamente después vemos un par de cajones utilizándola:
Organización de los caracteres en los cajones. Imagen: Wikipedia
Cajones de caracteres siguiendo la organización anterior. Imagen: Wikipedia
Como veis en las imágenes anteriores, las letras mayúsculas estaban siempre situadas lejos del usuario, en el cajón de arriba, porque eran utilizadas con menor frecuencia, mientras que las minúsculas en el de abajo, para tenerlas más a mano.
Seguro que podréis deducir el resto, porque aquí es donde acaba nuestra historia: los términos uppercase y lowercase hacen referencia a la ubicación de los compartimentos o cajitas (cases) donde se encontraban las letras, en el cajón superior (upper) o inferior (lower).
Me sorprende, de forma agradable, como esto de la retro-informática se ha ido popularizando tanto, que ahora hasta en la Wikipedia aparece la historia antigua del software. Borland Ltd. fue fundada en agosto de 1981 por tres ciudadanos de Dinamarca (Niels Jensen, Ole Henriksen y Mogens Glad), con el objetivo de desarrollar productos como Word …
Muchos dispositivos electrónicos entre ellos las computadoras tienen un reloj interno que continúa funcionando aún estando apagados y desconectados de la red electrica gracias a una batería en forma de pila de botón. La fecha y la hora permiten conocer cuando se modifica un documento pero también otros procesos más importantes que también dependen del tiempo como el segundo factor de autenticación y los códigos temporales basados en el tiempo. Los relojes internos usados en las computadoras son bastante imprecisos y se adelantan o retrasan con respecto a la hora oficial, algunos dispositivos electrónicos ni siquiera tienen el hardware de un reloj interno. El protocolo Network Time Protocol o NTP permite a las computadoras obtener la hora de un servidor que ofrezca este servicio de forma regular para evitar diferencias significativas, algunos de estos servidores están respaldados por una organización gubernamental que ofrecen la medida del tiempo oficial de un país y que poseen relojes atómicos mucho más precisos.
Conocer la hora y fecha actual es importante también en las computadoras y programas para algo tan simple como conocer cuál fue la fecha de creación o modificación de un archivo o algo más importante como conocer la fecha de una compra o transacción bancaria. Las computadoras son capaces de mantener la hora y fecha gracias a una pequeña batería como fuente de energía como una pila de botón habitualmente una CR2032 y un reloj que sigue funcionando cuando la computadora está apagada y desconectada de toda fuente de energía. La pila de botón es suficiente para mantener el reloj interno de la computadora y otros dispositivos electrónicos funcionando durante más de 10 años.
Otra funcionalidad importante que depende del tiempo es el segundo factor de autenticación o 2FA. Para mayor seguridad es muy recomendable configurar el segundo factor de autenticación en los principales servicios como correo electrónico junto a otros servicios que tratan con información personal o datos bancarios. El segundo factor de autenticación o TOTP es un código adicional a la contraseña a introducir al autenticarse en un servicio. El TOTP normalmente está formado por unos seis dígitos que solo es válido durante un pequeño espacio de tiempo de unos 30 segundos, pasado este tiempo deja de ser válido y otro código pasa a ser válido. En caso de que el dispositivo que genera el código no posea el tiempo actual genera códigos inválidos.
Sin embargo, algunos dispositivos como la Raspberry Pi no posee un reloj interno con lo que no son capaces de mantener la hora cuando están apagados. Por otro lado, los relojes de las computadoras no son totalmente precisos y durante periodos de tiempo prolongados cada uno mide el paso del tiempo de forma diferente, el tiempo proporcionado por cada uno varía en unos pocos milisegundos o segundos. Estas variaciones de tiempo aunque pequeñas son suficientes para no ser válidas en ciertos propósitos que necesitan marcas de tiempo totalmente precisas. Enviar un correo electrónico de respuesta con una fecha anterior al original es una paradoja temporal, posiblemente inocua en correo electrónico pero un problema en una transacción financiera. Los relojes más precisos son los atómicos que tardan en desfasarse un segundo al cabo de 52 millones de años. El motivo por el que se utilizan relojes de cuarzo en los ordenadores en vez de atómicos más precisos es que los primeros son más baratos, más pequeños y con menor consumo, los relojes de cuarzo ofrecen una precisión suficiente durante más o menos un pequeño periodo de tiempo.
Los dispositivos que no tienen un reloj interno mantiene la hora actual utilizando el protocolo Network Time Protocol o NTP, los dispositivos que tiene reloj interno pero se quieren mantener mayor precisión pueden utilizar este protocolo para mantener yna medida del tiempo más precisa. Hay servidores que ofrecen la hora a través del protocolo NTP tomando como fuente el tiempo proporcionado por un organismo gubernamental siendo la autoridad encargada de proporcionar esta medida considerada la oficial. En España es el Real Instituto y Observatorio de la Armada ubicado en Cádiz el que mantiene la hora oficial, este organismo posee un reloj atómico y ofrece el servicio de NTP, en su página web en la Sección de Hora proporciona más detalles.
Hace unos días intenté entrar en mi cuenta de PayPal en la que tengo configurada el segundo factor de autenticación, resulta que mi ordenador que no lo tenía configurado con NTP tenía una diferencia de tiempo de dos minutos con la real. Esta diferencia de tiempo era suficiente para que el código no fuera válido utilizando el cliente KeePassXC para guardar las contraseñas y que también utilizo para generar los códigos TOTP del segundo factor de autenticación. El resultado fué que la cuenta de PayPal se me bloqueó de forma temporal como medida de seguridad para evitar ataques de fuerza bruta después de varios intentos.
No tenía activado el servicio NTP proporcionado por el gestor de servicios systemd, lo activé de forma fácil en el panel de configuración de GNOME.
Contenido del artículo
Sincronización de hora en GNOME
Para activar el servicio NTP en GNOME basta con acceder al panel de configuración en la sección de Fecha y hora y activar la opción Fecha y hora automáticas. Esta opción hace lo mismo que desde la línea de comandos.
Configuración de fecha y hora en GNOME
Sincronización de hora desde línea de comandos
El gestor de servicios systemd proporciona un servicio para mantener sincronizada la fecha y hora con el protocolo NTP. Los siguientes comandos permiten conocer el estado del servicio y la información de la fecha y hora del sistema.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ systemctl status systemd-timesyncd.service
$ systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-10-07 19:09:48 CEST; 51min ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 355(systemd-timesyn) Status: "Initial synchronization to time server 193.182.111.142:123 (2.arch.pool.ntp.org)." Tasks: 2(limit: 38345) Memory: 2.1M
CPU: 65ms
CGroup: /system.slice/systemd-timesyncd.service
└─355 /usr/lib/systemd/systemd-timesyncd
oct 07 19:09:48 archlinux systemd[1]: Starting Network Time Synchronization...
oct 07 19:09:48 archlinux systemd[1]: Started Network Time Synchronization.
oct 07 19:10:18 archlinux systemd-timesyncd[355]: Initial synchronization to time server 193.182.111.142:123 (2.arch.pool.ntp.org).
systemctl-timesyncd-status.sh
1
2
3
4
5
6
7
8
$ timedatectl
Local time: jue 2021-10-07 20:01:59 CEST
Universal time: jue 2021-10-07 18:01:59 UTC
RTC time: jue 2021-10-07 18:01:59
Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
timedatectl.sh
El siguiente comando ofrece información más detallada, incluye el servidor NTP utilizado y el intervalo de tiempo entre sincronizaciones.
Habilitar el servicio indica que el servicio se inicie como parte del inicio del sistema, si el servicio está parado se puede iniciar de forma explícita.
El servidor NTP utilizado para realizar la sincronización de la fecha y la hora usa la configuración personalizada del archivo /etc/systemd/timesyncd.conf en el que se incluye el dominio del servicio. Sin haber realizado cambios en el archivo todos los valores de está configuración están comentados. Los valores por defecto de esta configuración se definen en tiempo de compilación, en el caso de los paquetes de Arch Linux en el archivo PKGBUILD de systemd.
En este archivo se pone el servidor NTP deseado si es otro distinto del por defecto como el proporcionado por el Real Instituto y Observatorio de la Armada, hora.roa.es y minuto.roa.es, u otro de los proporcionados por la organización de voluntarios NTP Pool Project que utilizan muchas distribuciones incluida Arch Linux y dispositivos en internet como routers.
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option)
# any later version.
#
# Entries in this file show the compile time defaults. Local configuration
# should be created by either modifying this file, or by creating "drop-ins" in
# the timesyncd.conf.d/ subdirectory. The latter is generally recommended.
# Defaults can be restored by simply deleting this file and all drop-ins.
#
# See timesyncd.conf(5) for details.
[Time]
#NTP=
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
GNU/Linux no te obliga a actualizaciones forzosas aplicadas en un momento inapropiado, tiene una licencia libre mayoritariamente gratuito al igual que sus aplicaciones disponibles para cualquier propósito y finalidad, los juegos triple A son jugables a través de Steam, es tan o más seguro que cualquier otra opción y respeta mejor la privacidad de los usuarios, es apto para ordenadores que se convierten incompatibles con otros sistemas operativos por sus nuevas versiones, altamente personalizable según las preferencias del usuario, es una buena opción para los desarrolladores y profesionales, la mayoría del hardware común no requiere instalar controladores adicionales y tiene una comunidad que aunque pequeña parece más grande por ser muy activa y colaborativa. Finalmente, es posible probarlo antes de instalarlo para estar convencido del cambio.
Para las computadoras personales hay cuatro sistemas operativos destacados, los comerciales desarrollados por empresas que son Windows de Microsoft y macOS de Apple, por otro lado están los alternativos con licencia libres como GNU/Linux formado por multitud de distribuciones desarrolladas por los propios usuarios algunas con el respaldo de una compañía, finalmente está FreeBSD siendo una opción elegida de forma más minoritaria. Estos sistemas operativos no son iguales se diferencian en el modelo de desarrollo y licencia comercial o libre, en la interfaz gráfica y coste entre otras características.
En el caso de Windows la razón de muchos usuarios de usarlo es sencillamente por ser el sistema operativo preinstalado en la computadora al comprarla, en el caso de los ordenadores mac por ser la única opción ofrecida por Apple para sus equipos. GNU/Linux domina el software de servidor por su flexibilidad y de los smartphones con Android, con el paso de los años GNU/Linux se ha convertido también en una alternativa perfectamente viable para la mayoría de usuarios tambien en el escritorio que simplemente necesitan un uso ofimático como para los más avanzados de desarrollo y de forma profesional. Hace varios lustros faltaba soporte hardware, era difícil de instalar o requería acceder a la línea de comandos para tareas básicas, hoy en día GNU/Linux es tán fácil de instalar como Windows y sus varios entornos de escritorio tan amigables como los de Windows o macOS.
En octubre del 2021 se ha lanzado al mercado Windows 11 que equiparán los equipos comerciales vendidos a partir de este momento. Como cada nueva versión los requisitos mínimos son más exigentes y dejan a muchos equipos vendidos con anterioridad sin poder actualizarse a la última versión de Windows. En Windows 11 muchos ordenadores no serán compatibles por el requerimiento del módulo TPM requerido en aras de la seguridad, por lo menos hasta que vean que mucha gente no se actualiza y se mantiene en Windows 10, Windows sufra de fragmentación y Microsoft decida relajar este u otros requerimientos.
Logotipos de varias de las distribuciones GNU/Linux más importantes y usadas
Estas son algunas razones por las que usar GNU/Linux en vez de Windows y macOS.
Contenido del artículo
Razones para cambiar a GNU/Linux
Linux es libre y gratuito
Las licencias de Windows y macOS que deben ser aceptadas antes de realizar la instalación en realidad únicamente dan el derecho al uso del software. Un usuario que ha comprado una licencia de Windows, una computadora con Windows preinstalado o un mac con macOS no tiene acceso al código fuente lo que impide examinarlo para conocer que funciones implementa.
GNU/Linux y muchas aplicaciones para este sistema operativo tienen una licencia de software libre según la Free Software Foundation como aquel que proporciona a los usuarios las 4 libertades básicas que define la filosofía del software libre:
La libertad de ejecutar el programa como se desee, con cualquier propósito (libertad 0).
La libertad de estudiar cómo funciona el programa, y cambiarlo para que haga lo que se desee (libertad 1). El acceso al código fuente es una condición necesaria para ello.
La libertad de redistribuir copias para ayudar a otros (libertad 2).
La libertad de distribuir copias de sus versiones modificadas a terceros (libertad 3). Esto le permite ofrecer a toda la comunidad la oportunidad de beneficiarse de las modificaciones. El acceso al código fuente es una condición necesaria para ello.
Aunque software libre no es sinónimo de gratuito, mucho del software libre es gratuito. La licencia de Windows cuesta unos 150€ comprada a Microsoft y unos 15€ en páginas alternativas completamente legales, en el caso de estar preinstalado en la computadora como ocurre generalmente el precio de Windows no está separado del de la computadora, en los mac el sistema operativo macOS es parte del producto y está incluido en sus precios pero son significativamente más caros que productos equivalentes.
Muchas de las aplicaciones están disponibles tanto en Windows, macOS como en GNU/Linux siendo exactamente las mismas en cuanto a funcionalidad para el usuario como el navegador web Firefox entre muchas otras. Otras aplicaciones disponibles en Windows y macOS tiene su equivalente en GNU/Linux que cubren las necesidades de la mayoría de usuarios como el programa para manipular imágenes GIMP. Desde programas de línea de comandos como aplicaciones de interfaz gráfica.
Los entornos de escritorio integran una serie de aplicaciones sencillas sin funcionalidades avanzadas pero que cubren las necesidades básicas de los usuarios. Otras aplicaciones sirven para propósitos específicos e incluyen funcionalidades más avanzadas como ofimática y documentos, editor de texto avanzado, internet y comunicaciones, fotos y gráficos, multimedia, vídeo y audio, programación y desarrollo o seguridad y privacidad.
Uno de los motivos por los que muchos usuarios continúan con Windows y no migran a GNU/Linux es porque una de sus necesidades es poder jugar a juegos los cuales por cuota de mercado de los sistemas operativos son lanzados para Windows, esto hace que la situación se perpetúe. El soporte para juegos en GNU/Linux ha mejorado mucho en los últimos años y sigue mejorando notablemente cada pocos meses, actualmente es posible jugar a muchos juegos triple A perfectamente y con el mismo rendimiento que en Windows.
El soporte de Steam como plataforma de juegos ha contribuido a que la mayoría de juegos de Windows estén disponibles en GNU/Linux, incluso las últimas novedades. También es posible jugar a juegos retro y arcade míticos de máquinas recreativas y consolas antiguas junto a otros de culto como los Monkey Island, Day of Tentacle y Maniac Mansion.
Mantener el sistema operativo y aplicaciones actualizadas a las últimas versiones es importante ya que corrigen errores de seguridad, incorporan nuevas funcionalidades o mejoran las existentes. El problema surge cuando estás actualizaciones aún con sus riesgos no son opcionales ni se tiene el control de cuando se aplican.
En los sistemas operativos comerciales Windows y macOS tanto Microsoft como Apple tienen el poder de aplicar parches de seguridad y otras actualizaciones que no son de seguridad cuando deseen sin el consentimiento del usuario. Algunas de esas actualizaciones son notificadas que deben ser aplicadas en un momento a conveniencia del usuario pero con una fecha límite en la que se instalan de forma forzosa. Algunas de las actualizaciones requieren que Windows y macOS tomen por completo el control del equipo con el único propósito de aplicar la actualización, tiempo en el que el usuario no puede utilizar la computadora que es un gran problema para muchos usuarios que los utilizan como herramienta de trabajo ya que es tiempo laboral en el que no pueden hacer sus tareas.
En las distribuciones de GNU/Linux es el usuario el que elige el momento en el que aplicar las actualizaciones de seguridad y de las aplicaciones, estas se aplican sin tomar el control del equipo lo que permite seguir trabajando, salvo algunas críticas que involucran la actualización del firmware. Algunas actualizaciones requieren reiniciar la computadora para que surtan efecto, en GNU/Linux nuevamente es el usuario el que decide el momento de hacerlo, en Windows y macOS algunas requieren reiniciar de forma inmediata haciendo que el usuario deba interrumpir y guardar las tareas que esté haciendo y documentos que esté editando para continuarlas una vez realizado el reinicio.
Linux es más seguro
No hay ningún sistema operativo exento de problemas de seguridad pero dado que la cuota de usuarios de GNU/Linux es minoritaria comparada con Windows o macOS la mayoría de ataques se dirigen a estos últimos sistemas. Por otro lado, como cada distribución GNU/Linux es diferente y con diferentes versiones de los paquetes es más difícil explotar la misma vulnerabilidad en todos ellos.
Tanto Windows como macOS incluyen funcionalidades que con el consentimiento del usuario recopilan información de la computadora, de su uso, del usuario como el patrón de voz con la funcionalidad de reconocimiento los asistentes de voz y que la envían a Microsoft y Apple que la utilizan para sus propósitos o la venden a terceras partes aún siendo de forma anónima.
GNU/Linux es un sistema que no incluye este tipo de funcionalidades y que da mucha importancia a la privacidad de los usuarios y a la información que terceras partes pueden recopilar del usuario por su actividad. GNU/Linux no obtiene ningún beneficio ni está interesada en recopilar datos de sus usuarios.
Linux revive ordenadores viejos
Cada nueva versión de Windows impone unos requerimientos más restrictivos, algunos muy ajustados a las especificaciones incluso de computadoras nuevas. Cada nueva versión deja a muchas computadoras sin cumplir los requisitos mínimos para realizar la actualización, Windows 11 por ejemplo requiere un módulo de seguridad TPM que incluso computadoras con dos años de antigüedad y en el momento de salida no lo cumplen, impidiendo su actualización a la última versión. Tanto Apple como Microsoft suelen ofrecer amplios tiempos de soporte de parches de seguridad y corrección de errores, en cualquier caso el periodo de soporte lo deciden ellos con sus propios intereses y no el de sus usuarios. En GNU/Linux hay distribuciones específicas con requerimientos más modestos para computadoras antiguas.
Algunos fabricantes de computadoras con Windows incluyen numerosos programas adicionales que se mantienen en ejecución en segundo plano consumiendo recursos, reciben el calificativo de blotware y hacen que incluso una computadora nueva ofrezca un rendimiento inferior al que debería.
Linux es altamente personalizable
No hay un único GNU/Linux, los desarrolladores de cada distribución eligen los principios en los que se basa, el entorno de escritorio, los componentes, paquetes de software y aplicaciones que selecciona en la instalación por defecto.
Algunas distribuciones están orientadas a tener gran estabilidad durante largos periodos de tiempo en los que se solo se actualizan para corregir fallos de seguridad y errores importantes pero generalmente no actualizando a nuevas versiones de los paquetes, un ejemplo es Debian y otro las versiones LTS de Ubuntu.
Otras distribuciones están orientadas a usuarios que desean obtener las últimas versiones de cada paquete cuando son publicadas que incorporan nuevas funcionalidades, mejoras de rendmiento o mejor compatibilidad con hardware nuevo. Aunque también son estables a veces requieren algunos cambios o incompatibilidades, un ejemplo de estas distribuciones en constante cambio denominadas rolling release es Arch Linux.
openSUSE tiene una versión para los usuarios que buscan estabilidad con Leap y usuarios que buscan actualizaciones con Tumbleweed. Otras distribuciones están destinadas a equipos antiguos con recursos más modestos que no requieren compatibilidad con el último hardware o versiones destinadas a no incluir ningún componente privativo, un ejemplo de este tipo de distribuciones es Triquel.
Como distribuciones hay muchas los usuarios de GNU/Linux eligen la que más se adapta a sus necesidades, aparte de las categorías anteriores hay muchas otras por ejemplo aquellas destinadas a los usuarios que proporcionan un primer contacto con GNU/Linux con una experiencia de usuario tán fácil como la de Windows y macOS. Que haya muchas distribuciones no quiere decir que haya una para cada necesidad, algunas distribuciones son adecuadas para usuarios distintos, por ejemplo Ubuntu es adecuada tanto para ser la primera distribución de GNU/Linux usada como para usuarios con grandes conocimientos de GNU/Linux y llevan usándolo muchos años. Elegir una distribución no es algo definitivo, si en algún momento las necesidades del usuario cambian muchos cambian a otra que se ajuste mejor a sus nuevas necesidades.
Windows y macOS ofrecen un único entorno de escritorio para todos los usuarios, el escritorio único evita la fragmentación y que los usuarios no tengan que aprender uno nuevo pero obliga a hacer concesiones para intentar satisfacer a mayoría aunque no a todos, solo admiten algunas pocas opciones de personalización cosméticas.
Linux es una buena opción para desarrolladores
Una categoría adicional a las anteriores de tipos de usuarios es el de los desarrolladores de software. Aunque GNU/Linux en el escritorio tiene una pequeña cuota de uso ocurre exactamente lo contrario en los servidores de las compañías que proporcionan servicios en internet. La mayor parte de los servidores están basados en GNU/Linux por su flexibilidad, seguridad y ahorro en costes de licencias.
Cualquier persona que desee aprender sobre desarrollo tiene a su disposición gran cantidad de software libre y recursos de documentación para el aprendizaje sin necesidad de pagar costosas licencias de software, el mismo software que usan muchas de las grandes tecnológicas. El uso de GNU/Linux en las empresas permite optar a trabajos de tecnología altamente cualificados y en muchas empresas bien remunerados con oportunidades importantes para la carrera profesional.
GNU/Linux es el sistema operativo de software libre con más éxito y utilizado por muchos desarrolladores que crean herramientas de desarrollo de software libre para otros desarrolladores desde lenguajes de programación, compiladores y entornos integrados de desarrollo hasta servidores. Esto hace que sea fácil encontrar herramientas para desarrolladores en este sistema operativo.
Incluso otros profesionales dedicados a la tecnología o que utilizan tecnología para su trabajo tiene programas equivalentes a los propietarios en otras plataformas, GIMP para la edición de imágenes, Inkscape y Blender para para el diseño artístico de imágenes vectoriales y modelado en tres dimensiones, programas para la composición musical para los que PipeWire resuelve varios de los problemas que tenían los artistas musicales en GNU/Linux, varias suites ofimáticas alternativas como LibreOffice, OnlyOffice y WPS Office alternativas a Microsoft Office.
La comunidad de Linux
Aunque la cuota de uso de GNU/Linux es pequeña la comunidad da la sensación de ser muy grande por ser muy activa, comparte información y tutoriales en numerosos artículos, vídeos, podcast y foros. Hay muchas personas dispuestas a ayudar GNU/Linux como este blog y otros varios que incluyo en la sección Enlaces a otros blogs y webs, aún así seguramente otro usuario haya tenido el mismo problema antes y la respuesta con la solución haya sido contestada que se puede encontrar con una sencilla búsqueda en internet.
Por dónde empezar
Si estos motivos te convencen o estás dispuesto a investigar más los siguientes artículos son de ayuda para saber por dónde empezar.
Algunos juegos están enfocados a la parte de habilidad y acción con la única intención de proporcionar diversion. Otros independiente de la calidad gráfica que es muy notable en la actualidad pueden ser vistos como una forma de obra de arte al mismo nivel que una novela, una película, una canción o música, un cómic, un cuadro u otras formas de arte. Los juegos tienen varios de estas formas de arte como una historia, imágenes, secuencias cinemáticas o una banda sonora que en conjunto forman la obra. El juego The Last of Us sin lugar a dudas entra perfectamente en la categoría de obra de arte siendo uno de los mejores juegos no solo de la generación para la PS3 y PS4. Un juego con una maravillosa historia al mismo tiempo que horrible.
Aún no he jugado a muchos juegos de la PlayStation 4 que compré casi al final de su ciclo de vida, me quedan por jugar un montón de ellos de los más reconocidos de la amplia y excepcional generación de esta consola. Uno de ellos al que tenía muchas ganas era The Last of Us de Naughty Dog desarrollado para la PS3 en el año 2013 y remasterizado en el año 2014 para la PS4. Tiene una segunda parte con The Last of Us 2 publicado para la PS4 en el año 2020 que continúa la historia.
Es un juego con muy buenas críticas que ya sabía antes de jugarlo que me iba a gustar y me apetecía jugar por su estilo de juego de historia lineal para descansar de juegos largos y de mundo abierto. A veces un juego tiene buenas críticas pero por diferentes circunstancias no siempre a uno le gusta lo que a la mayoría y a veces uno está deseando un juego y también por lo que sea al final no le resulta tan interesante o entretenido como deseaba.
Ya terminado, a falta de la precuela que incluye la versión remasterizada, para mí es una maravilla de juego como ya esperaba. A pesar de la antigüedad del juego no conocía ningún detalle importante de la historia, por ejemplo no conocía como empezaba ni cómo se iba a desarrollar el juego ni ningún otro personaje, solo sabía un poco de su ambientación general y los dos personajes principales del juego que aparecen en la portada del juego, Joel y Ellie. No conocía mucho del juego porque también he tratado de evitar conocer detalles del mismo, en un juego lineal en el que la historia al mismo nivel que las partes de acción conocer un detalle importante de la trama puede cambiar mucho la percepción del juego por la falta de sorpresa.
En este artículo se comenta ningún detalle de la historia aunque sí incluye vídeos con el argumento e historia completa entre otros detalles del juego como la ubicación de los artefactos que muestran secuencias del juego, así que si se va a jugar este juego recomiendo solo ver las partes de vídeos incluidos una vez superados esos puntos del juego. El artículo solo comenta algunos detalles de cómo es la jugabilidad del juego, en que mecánicas de juego se basa y algunos pequeños consejos de estrategia que he aprendido para completarlo más fácilmente.
A veces me cuesta encender la Play y ponerme a jugar pero este al igual o más que el juego de mundo abierto Horizon Zero Dawn lo he disfrutado mucho, me ha ido atrapando cada vez más la historia y conocer cómo finaliza.
Pantalla inicial y menú del juego The Last of Us
Portada
Anticipación del juego
Este artículo contiene información de estrategias para completar más fácilmente el juego, parte de la diversión de un juego es descubrir y superar los retos que se plantean por uno mismo. Sin embargo, algunos juegos son difíciles sin una pequeña ayuda que obliga a tener que dedicarles mucho más tiempo o a recomenzarlos.
En algunos juegos el argumento es una de las partes más importantes. El texto del artículo no contiene información acerca del argumento del juego, de la mitad o del final, ni hace ningún spoiler por lo que lo puedes leer sin riesgo de conocer alguna parte del argumento de forma anticipada. Sin embargo, algunos enlaces del artículo a otras páginas y vídeos sí pueden contener información del argumento de modo que recomiendo consultar solo las partes del juego una vez superadas.
Contenido del artículo
El juego
El juego se desarrolla en un mundo apocalíptico que muestra la historia de principalmente dos personajes principales Joel y Ellie junto a otros personajes en momentos puntuales. The Last of Us cuenta una maravillosa historia emocional pero al mismo tiempo horrible, dramática, violenta y cruel en la que no solo se vive en tercera persona como espectador sino que el juego te obliga a participar en ella en varias ocasiones. La historia no tiene complejos giros de guión ni detalles incomprensibles o de interpretación libre aunque no explica las cosas de forma explícita permite comprender lo que sucede con un poco de atención.
Hay una mezcla de parte jugable de exploración y acción con varias secuencias cinemáticas que guían la historia con siempre el mismo desarrollo que no depende de ninguna de las acciones del jugador. Posee varios niveles de dificultad, algunos usuarios prefieren la parte de habilidad y acción de los juegos como diversión y juegan en niveles más difíciles para que el juego sea un reto de mayor habilidad, otros usuarios la parte de los juegos que más les gusta es disfrutar de la historia y prefieren jugar en un nivel fácil o normal. También tiene un modo plus que permite volver a empezar la historia sin perder las mejoras de nivel de los personajes.
El juego para la PS4 es una versión remasterizada del original para la PS3, consta de la historia principal y una precuela Left Behind con una duración de unas 30 horas en tiempo de juego. Es un juego de historia lineal en el que no se puede volver a atrás como ocurre en los juegos de mundo abierto, cada zona es única y nueva por la que solo se transita una sola vez. Los escenarios aunque lineales con un único destino tienen pequeñas zonas que explorar y permiten afrontar las misiones de varias alternativas en el mapa según como se quieran resolver los combates. Al avanzar siempre a nuevos escenarios motiva a explorar más concienzudamente para encontrar todos los objetos y coleccionables. Una vez completada la historia por primera vez el juego muestra el número de coleccionables y artefactos que no se han encontrado para repetir el capítulo si se desea encontrarlos todos.
The Last of Us se cataloga en el género de survival horror en el que los recursos son limitados que obliga a racionarlos. Los combates han de afrontarse con una mezcla de táctica, sigilo y en ocasiones con armas de fuego. No se proporciona ningún mapa pero los escenarios no son muy amplios que simplifica su exploración necesaria para ir obteniendo recursos que se van gastando del equipo y encontrar diferentes artefactos que proporcionan mejoras. Aunque no es un juego de rol tiene varios componentes del género como la fabricación de objetos a partir de recursos, varios tipos de armas y mejora de las mismas así como una pequeña serie de mejoras en la ficha del personaje que dan cierta libertad al jugador de elegir. Aparte de acción y exploración en algunos momentos hay pequeñas mecánicas de puzzle para superar obstáculos.
Aloy en Horizon Zero Down es un personaje que siempre está dispuesto a ayudar a todos haciendo el bien en cada cosa que hace, en Last of Us los personajes son muy distintos como requiere el transfondo de la historia en la que están, a veces realizan acciones violentas sin demasiados remordimientos. Otra diferencia y detalle notable del juego es que en The Last of Us a lo largo de la historia se observa cómo evolucionan los sentimientos de los personajes. En el juego principalmente se encarna a Joel aunque avanzado el juego en algunos momentos el jugador encarna a Ellie, a veces de forma intercalada a uno u otro en una línea de tiempo paralela.
Las voces de los diálogos de los personajes están doblados al español con la posibilidad de poner subtítulos. Los diálogos son buenos y en ocasiones al llegar a un determinado sitio relevante los personajes generan alguna conversación que ambientan el juego esto les dota de cierta vida propia y más realismo. Tiene una calidad gráfica muy buena y la banda sonora está al mismo nivel. El único punto que podría mejorar es indicar el título de cada tramo de las misiones que solo aparece en el menú.
Tenía la preferencia de los juegos de mundo abierto por la libertad de movimiento pero en estos te pasas más tiempo viajando por el mapa y con una cantidad abrumadora de de misiones principales, secundarias y recados, en The Last of Us el mapa es reducido y lineal lo que permite seguir perfectamente el desarrollo de la historia que en los juegos de mundo abierto a veces se pierde. En The Last of Us nunca he perdido el hilo de por donde iba la historia por tener que realizar misiones secundarias o viajar en busca de coleccionables lo que me ha permitido disfrutar más ni olvidar detalles que en el juego de mundo abierto Horizon Zero Dawn.
En The Last of Us aunque como todo videojuego tiene una parte de acción interactiva la parte más importante del juego es la historia por eso es muy recomendable no conocer ningún detalle previo a jugarlo para mantener esa sorpresa del guión. El juego deja algunos puntos de la historia en vilo que seguramente se desarrollen y resuelvan en la segunda parte de The Last of Us 2. Como juego e historia es una obra de arte a la altura de una buena novela o película, sin dudar está entre los mejores juegos de la generación de la PS3 y PS4.
Juego
Combates
A lo largo del juego se alterna entre pequeñas escenas cinemáticas, travesías con momentos de acción y combate sin ser tan frenético como la de un shooter. Los combates en The Last of Us no son para afrontarlos como un juego de disparos o shooter puro aunque se dispongan de varias armas de fuego, por la limitada munición y recursos, y porque en cuanto a combate los personajes no tienen la agilidad suficiente para afrontar una lucha contra varios enemigos al mismo tiempo, los personajes son torpes de movimientos. Se ha de emplear una mezcla de distracción y sigilo combinado con las armas adecuadas, las armas de fuego no es posible utilizarlas de forma continuada únicamente cuando el grupo de enemigos ya ha sufrido alguna baja con sigilo. Los combates suelen acabar con todos los enemigos muertos.
Durante la aventura aparecen varios grupos de enemigos, muchos son los propios humanos. Dentro de los diferentes grupos de los humanos en el aspecto de la historia se muestra como cada uno tiene roles diferentes, entre los diferente tipos de enemigos los humanos son casi los peores desde el punto de vista de la historia. Como ocurre en muchos juegos la inteligencia de los enemigos es limitada, solo tienen unas pocas reglas de inteligencia que conocidas permite acabar con muchos de ellos de la misma forma. Una estrategia de combate es tratar de acabar primero con algunos miembros del grupo de enemigos de forma sigilosa y ya después si se desea utilizar armas de fuego para terminar antes. Es posible recoger botellas de vídeo y ladrillos para aturdirlos temporalmente o llamar la atención de los enemigos que se acercan al lugar donde cae el objeto, si hay varios cerca todos se acercan al mismo punto y con un arma de área como un cóctel molotov o una bomba explosiva permite acabar con todos ellos de una vez, rápido y gastando pocos recursos.
Otra estrategia es saber que recursos no se han podido recoger por tener ya el inventario lleno y si hay que gastar algún recurso es mejor hacerlo de aquellos que se pueden reaprovisionar con esos que no se han podido recoger. En mi caso durante el juego me han matado muchas veces y me he dejado matar muchas veces por no gastar muchos recursos o vida, en vez de agotar todos los recursos que llevaba. En caso de perder la vida el castigo que aplica el juego no es muy severo ya que se vuelve al último punto de control con los mismos recursos que se tenían en él, además los puntos de control son numerosos con lo que no se pierde mucho progreso.
Armas, recursos, mejoras y equipo
La combinación de survival horror promueve a explorar el mapa por completo aunque sea un mapa sin demasiadas alternativas, esto encaja perfectamente con un juego lineal en el que se sabe que una vez pasado un punto ya no se puede volver a atrás al contrario de los juegos de mundo abierto.
Por una parte está que los recursos que se recogen son limitados, al mismo tiempo otra parte es que la capacidad del inventario de los personajes también es limitado con lo que a veces ocurre que no es posible recoger recursos por tener el inventario completo. Los personajes, principalmente Joel, y las armas tienen la opción de ser mejorados con píldoras y componentes dotando al juego de una pequeña forma de personalizar los personajes según las preferencias que habitualmente es una faceta que gusta en los juegos. No hay píldoras y componentes para mejorar todas las armas por completo al menos en la primera finalización del juego aún encontrando todos los recursos.
Los recursos más importantes son las píldoras para mejorar habilidades de Joel, los componentes para mejorar las armas en los bancos de trabajo que se encuentran en ocasiones en varias ubicaciones en la aventura. Otro recurso importante son los manuales de combate que permite mejorar algunas habilidades como mayor capacidad de curación o mayor área de acción en las armas. También importantes son las cajas de herramientas ya que mejorar las armas requieren tener la caja de herramientas de ese nivel para realizar la mejora.
En cuanto a recursos de equipo hay varios elementos básicos como tijeras, sujeción o cinta, trapos, alcohol, explosivos y azúcar. Con estos recursos básicos es posible fabricar diferentes objetos como dagas, botiquines de curación, cócteles molotov, explosivos o mejorar el arma cuerpo a cuerpo. Fabricar una unidad de cada uno de los objetos requiere una combinación de dos recursos básicos.
En cuanto a armas hay varios tipos cuerpo a cuerpo, armas blancas, silenciosas, de corto alcance que permiten ser usadas para combatir de forma sigilosa y por otro lado están las armas de fuego que usadas anulan el sigilo pero permiten acabar con los enemigos más rápido y a más largas distancia. Las armas blancas tienen un cierto número de usos, una vez utilizados se rompen.
Fabricar, habilidades y coleccionables
Manuales de entrenamiento
Banco de trabajo
Coleccionables
Los coleccionables son objetos que se pueden recoger a lo largo de la aventura, en este caso no suelen estar muy escondidos pero obliga a explorar cada zona del mapa de forma completa y prestar cierta atención para verlos. Lo más escondidos son algunos de los colgantes de los luciérnagas enganchados en las ramas de los árboles, es fácil no verlos ya que se suele ir mirando al suelo porque es donde están los recursos. Los coleccionables no suponen ningún beneficio o perjuicio encontrarlos o no encontrarlos más que obtener el trofeo de encontrarlos todos.
Algunos coleccionables son los colgantes de los luciérnagas, notas, abrir las puertas cerradas que suelen tener una cantidad importante de recursos. Otros coleccionables son escuchar todas las conversaciones opcionales en determinados lugares, los chistes de Ellie y los comics que cuentan una pequeña historia de superhéroes.
Los coleccionables no están especialmente escondidos, basta con explorar un poco todo el mapa aunque no sea esencial para completar la misión, esto combina muy bien con la necesidad de hacerlo para equiparse con todos los recursos posibles.
Comics
Colgantes de luciérnaga
Banda sonora original
La música y banda sonora del juego The Last of Us está a la altura del juego, si el juego es una obra de arte la música es otra. La música en cierta medida suena descompasada y estridente que le da una mala sensación para acompañar a la historia horrible del juego, también es música triste y melancólica. Una vez terminado el juego escuchar una de estas canciones los traen los recuerdos y sentimientos de la historia. Estos dos primeros temas son únicos.
Película de la historia
En YouTube se encuentran vídeos de la historia de los juegos como si de una película se tratara. También, sirven para volver a ver ciertas escenas sin tener que rejugar el juego. Estos vídeos contienen detalles importantes de la historia del juego de modo que solo recomiendo ver aquellas partes que hayan sido superadas, más en un juego como este en el que la historia es casi lo principal.
https://www.youtube.com/watch?v=GBitxFoYNoE
Ubicación de los coleccionables y artefactos
Los coleccionables y artefactos no son difíciles de encontrar porque no están muy escondidos, sin embargo, hay que ser muy meticuloso para fijarse en todo y explorar todo el mapa, no es raro que algún coleccionable o artefacto pase desapercibido aún pasando no muy lejos de él. En YouTube también hay vídeos de donde se encuentran todos en un mismo vídeo o los coleccionables separados por capítulos. Al igual que la película de la historia es recomendable revisar estos vídeos únicamente superado ese punto de la historia ya que muestran detalles de los escenarios.
Hace unos días hablábamos de las directivas using globales, un interesante añadido a C# 10 que permite importar espacios de nombres en todos los archivos de código del proyecto, sin necesidad de repetir cientos de veces las mismas líneas en sus encabezados. Simplemente, si un namespace es interesante para nuestro proyecto, lo declaramos como global en algún punto y será lo mismo que si lo hubiéramos hecho en cada uno de los archivos .cs:
global using System; global using System.Text; global using System.Text.Json; global using MyProject.Model; ...
Bien podían haberlo dejado aquí porque ya es una mejora sustancial respecto a lo que tenemos, pero no, el equipo de diseño de C# sigue introduciendo detalles que pueden hacernos la vida más sencilla. Es el caso de los implicit usings que, de la misma forma, acompañan a .NET 6 y C# 10.
Importación implícita de namespaces
El hecho que hay detrás de esta característica es bien simple: hay ciertos espacios de nombres cuya importación que son casi obligatorios en función del tipo de proyecto que estemos desarrollando. Por ejemplo, en casi todos los proyectos encontraremos referencias a System, System.Collection.Generics o System.Linq. O si programamos una aplicación web ASP.NET Core, es habitual que acabemos importando namespaces como Microsoft.AspNetCore.Builder, Microsoft.AspNetCore.Routing o System.Net.Http.Json.
.NET 6 importará automáticamente ciertos espacios de nombres en función del tipo de proyecto, que viene dado por el SDK definido en la primera línea del archivo .csproj, como el siguiente, correspondiente a un proyecto Web:
En función de este SDK, se importarán los siguientes namespaces:
SDK
Namespaces importados
Microsoft.NET.Sdk
System System.Collections.Generic System.IO System.Linq System.Net.Http System.Threading System.Threading.Tasks
Microsoft.NET.Sdk.Web
System.Net.Http.Json Microsoft.AspNetCore.Builder Microsoft.AspNetCore.Hosting Microsoft.AspNetCore.Http Microsoft.AspNetCore.Routing Microsoft.Extensions.Configuration Microsoft.Extensions.DependencyInjection Microsoft.Extensions.Hosting Microsoft.Extensions.Logging (+ todos los de Microsoft.NET.Sdk)
Microsoft.NET.Sdk.Worker
Microsoft.Extensions.Configuration Microsoft.Extensions.DependencyInjection Microsoft.Extensions.Hosting Microsoft.Extensions.Logging (+ todos los de Microsoft.NET.Sdk)
Para evitar conflictos con clases existentes, esta característica está desactivada por defecto, de forma que si migramos un proyecto de .NET 5 a .NET 6 seguro que no se romperá nada. Pero para proyectos nuevos, ya habilita de serie en las nuevas plantillas, usando la siguiente configuración en el .csproj:
Internamente, cuando los implicit usings están habilitados, se generará durante la compilación un archivo llamado [ProjectName].GlobalUsings.g.cs en la carpeta obj. Por ejemplo, este es el contenido que podemos encontrar en una aplicación web:
// <auto-generated/> global using global::Microsoft.AspNetCore.Builder; global using global::Microsoft.AspNetCore.Hosting; global using global::Microsoft.AspNetCore.Http; global using global::Microsoft.AspNetCore.Routing; global using global::Microsoft.Extensions.Configuration; global using global::Microsoft.Extensions.DependencyInjection; global using global::Microsoft.Extensions.Hosting; global using global::Microsoft.Extensions.Logging; global using global::System; global using global::System.Collections.Generic; global using global::System.IO; global using global::System.Linq; global using global::System.Net.Http; global using global::System.Net.Http.Json; global using global::System.Threading; global using global::System.Threading.Tasks;
Aunque este proceso sea automático, podemos utilizar el .csproj para ajustar los espacios de nombre incluidos en este archivo, como ya vimos en el post sobre los usings globales. En el siguiente ejemplo vemos cómo podríamos eliminar System y añadir MyProject.Model de forma muy sencilla:
En definitiva, la idea no está nada mal y es una de las piezas que permite conseguir algunas cosas realmente espectaculares, como las que podemos ver al crear nuevos proyectos de consola, cuyo código veremos que consiste en una única línea, o las cuatro o cinco líneas que costará poner en marcha un servidor ASP.NET Core. A cambio, eso sí, tendremos que aceptar el cierto grado de "magia" que este tipo de comportamientos implícitos añaden a nuestras aplicaciones.
Las compañías realizan importantes esfuerzos para implementar medidas de seguridad pero aún con ellas si el usuario no toma las medidas oportunas muchas de las medidas de seguridad de una organización, computadora o de un dispositivo electrónico son inútiles. En vez de atacar la seguridad de los servicios o dispositivos los delincuentes pueden atacar una parte que suele ser más débil, el usuario. Para evitar ser víctima de un ataque informático conviene conocer unas pocas medidas preventivas que son sencillas para detectar la mayoría de potenciales ataques.
La informática ha dejado de ser la de los ordenadores personales aislados para trabajos ofimáticos. La evolución de la tecnología informática por un lado llegando hasta los teléfonos inteligentes y la tecnología de internet permitiendo comunicaciones electrónicas a nivel mundial es una de las siguientes revoluciones a la revolución industrial en el siglo pasado. La informática hace tan solo unos pocos lustros era algo adoptado por personas interesadas en la tecnología, hoy quien no tiene un ordenador personal o portátil tiene un teléfono inteligente o smartphone. La tecnología se ha masificado y democratizado.
Al mismo tiempo que la tecnología informática ofrece gran cantidad de beneficios para personas y empresas pueden ser utilizadas por personas sin escrúpulos para hacer el mal de forma intencionada y totalmente consciente de lo que hacen. A través de internet quizá los delincuentes no amenacen tu integridad física en la calle de las personas pero el daño psicológico o estafa económica tiene el potencial de ser igual de dañino.
Contenido del artículo
Cuales son los peligros de los ataques informáticos
Los peligros y consecuencias de sufrir un ataque informático están a la misma altura de las tareas que hacemos de la informática, que ya son muchas y cada vez serán más.
En el caso personal muchas cosas se puede hacer ya a través de internet, dos de ellas son especialmente sensibles. Una son las que involucran dinero como compras por internet con tarjeta de crédito o acceso a cuentas bancarias a través de la oficina digital que ya ofrecen y exigen todos los bancos para realizar transferencias y pagos. La segunda es aquellas que tienen que ver con datos personales dónde las redes sociales como Facebook, Twitter o LinkedIn recopilan y cualquier persona tiene acceso. En el ámbito profesional existen los mismos peligros con graves consecuencias para la empresa que sea víctima de un ataque.
En un mundo capitalista en el que para la mayoría de las cosas se necesita dinero los ataques generalmente tienen un móvil económico en el que los delincuentes roban o estafan a las víctimas. El robo puede ser directamente a través de la tarjeta de crédito, de la cuenta bancaria o, de PayPal entre otros medios para transferir dinero entre cuentas y realizar pagos. Otra forma es indirecta, a través de la extorsión en el que el delincuente a través de una situación de poder exige a la víctima realizar acciones como la transferencia de dinero bajo la amenaza de por ejemplo publicar datos o información sensible robada exprimiendo a la víctima haciéndole creer que acatar sus exigencias la única posibilidad de recuperar datos importantes o cuentas de algún servicio, el desconocimiento o inocencia de la víctima es otra situación para perpetrar la estafa.
Por un momento imagina que te roban las credenciales que dan acceso a un servicio importante como la del correo electrónico, las del banco, los datos de la tarjeta de crédito, los de la cuenta de Google con todos sus datos como correo electrónico, documentos, fotos y se ha configurado como medio de pago, de PayPal, de Amazon por poner solo unos ejemplos pero la lista seguramente sea mucho más larga. Las consecuencias son que te pueden joder la vida mucho y convertir de repente tu vida en una pesadilla por simplemente un pequeño error de unos minutos del que ni siquiera has sido consciente. Puedes perder los ahorros de varios años de trabajo y dejarte la cuenta del banco vacía con problemas adicionales asociados si no se pueden afrontar pagos de hipoteca o ese dinero era el medio de afrontar los gastos. No te van a hacer daño físico pero el daño económico puede ser extremadamente importante también con un daño psicológico que quizá esté a mayor o la misma altura.
Este es un mensaje de audio de lo que parece una comercial o trabajadora en una sucursal de una entidad bancaria ante un número de ataques masivo no solo en la suya que muestra el grado de alarma y caos que es capaz de generar un ataque masivo con la capacidad de ser a nivel nacional.
En el caso de sufrir un ataque informático los grupos dedicados a delitos informáticos de los diferentes cuerpos de policía harán todo lo posible para evitar más daños, reparar el causado que quizá no sea mucho y poner a disposición de la justicia a los delincuentes si pueden dependiendo del país el país en el que está el delincuente pero tampoco son todo poderosos y sus recursos materiales y de personal son limitados. La policía no da a basto con el número de casos que ya se dan, y los ataques parece que solo van a ir a mayor en número y gravedad. La policía únicamente se centrará en los más graves o en aquellos que se produzcan por bandas organizadas, por reiteración o por la posibilidad de acabar con ataques futuros. El mejor consejo que te va a dar la policía seguramente es la prevención, que evites ser víctima de un ataque informático. Con unas pautas sencillas la mayoría de ataques son detectables y evitables.
Quizá los seguros del banco o vivienda previstos a tal efecto permitan recuperar a la víctima parte del dinero que le han estafado pero seguramente sea una pequeña parte del total y por supuesto el daño psicológico no es reparable vivido durante un periodo de incertidumbre que puede durar semanas y meses.
Medios de ataque informático
Antes de la llegada de internet el mayor peligro eran los virus informáticos que eran programas con funciones maliciosas que causaban pérdida de datos o bloqueos en el sistema que requerían un reinicio. Su medio de transmisión era a través discos extraíbles y estaban ocultos en programas con funciones legítimas, al ejecutar estos el virus se ejecutaba al mismo tiempo. Una vez ejecutado el virus este se replicaba en el ejecutable del resto de programas con lo que al llevar discos de una computadora a otra la infección se extendía.
La mayoría de ataques son masivos aunque algunos aún costando más trabajo por parte del delincuente son individuales.
En computadores, correo electrónico y documentos
Hoy en día los virus informáticos siguen existiendo pero el medio por el que se transmiten ha cambiado de los discos extraíbles a programas descargados por internet o archivos adjuntos en correos electrónicos. Los virus no solo se ejecutan al ejecutar un programa infectado sino que los documentos de datos también pueden contenerlos como un documento de Word, hoja Excel o presentación de PowerPoint y documentos de otros programas. Además de realizar la función maliciosa una forma de transmitirse es enviando un correo electrónico a todos los contactos del usuario.
Las acciones de un virus informático son diversas como secuestrar los documentos del usuario, posteriormente el delincuente solicita un pago si la víctima quiere recuperarlos. Otra acción es registrar todas las pulsaciones del teclado denominada keylogger que también es peligrosa ya que al mismo tiempo envía al delincuente el registro con potencialmente el usuario y contraseñas de cuentas importantes como las mencionas de bancos Google o Amazon, además los keyloggers pasan desapercibidos.
En dispositivos móviles, correo electrónico, SMS, WhatsApp
Los dispositivos móviles ya sean teléfonos móviles inteligentes o tabletas con conexión a internet mediante WIFI son dispositivos también vulnerables y medios que utiliza el usuario a través de los que realizar ataques. Además del correo electrónico los dispositivos móviles añaden otros vectores de ataque como las aplicaciones de mensajería instantánea como WhatsApp, Telegram o simplemente mensajes SMS. Lo único que se necesita para hacer llegar de forma directa un ataque a un usuario de forma muy precisa es su número de teléfono, un dato que no es especialmente difícil de conseguir. En los dispositivos móviles, además, detectar algunos ataques es un poco más complicado por la forma de interactuar.
Otros ataques comienzan con un mensajes basado en un texto genérico. Al responder al correo electrónico el receptor válida que la dirección de correo electrónico es correcta y en uso y el destinatario original muestra interés. Una vez iniciada la conversación el objetivo es algún tipo de solicitud aparentemente buena pero que al finalizar requiera un pago momento en el que se produce algún tipo de ataque informático. Los más perseverantes quizá involucre una transacción que haya ido perfectamente pero una vez ganada la confianza en las siguientes con algún tipo de excusa haber algún cambio en el proceso de forma de pago donde se produce el ataque.
Páginas peligrosas
Algunas páginas tratan de ofrecer algo muy demandado por muchos usuarios que suelen ser del tipo obtener algo gratis que cuesta dinero comprarlo. Dada la cantidad de usuarios que visitan esas páginas si contienen algún tipo de ataque informático seguro que algunos visitantes se conviertan en víctimas. Algunos tipos de cosas muy buscadas por los usuarios son piratear la licencia de Microsoft Windows y la suite ofimática de Microsoft Office, pirateo de programas profesionales como la herramienta de retoque fotográfico Adobe Photoshop, descarga de contenido digital como películas de estreno, series, libros electrónicos y música, pirateo de televisión de pago y por supuesto páginas pr0n.
Muchas de estas páginas al acceder a ellas abren pestañas y ventanas emergentes aún con las medidas que implementan los navegadores para evitarlo, las ventanas emergentes son muy molestas y suelen contener algún tipo de publicidad de baja calidad. El abrir ventanas emergentes es el tipo de entorno en el que emplear un ataque de tabnabbing.
Tipos y formas de ataque informático
Secuestro de datos
En los ataques informáticos que consisten en el secuestro de datos los delincuentes extorsionan a la víctima posteriormente si quiere recuperarlos exigiendo un pago. Aunque el ataque está dirigido contra los datos de la víctima el móvil suele ser uno económico. Aceptar el chantaje no es la opción recomendada ya que no hay garantía de recuperar los datos, el delincuente podría seguir chantajeando más a la víctima con un monto total de dinero estafado importante sin garantías. Una vez de haber sufrido el ataque informático contra los datos la mejor opción para no caer en la extorsión es recuperar los datos de una copia de seguridad. Tener una copia de seguridad de los datos es una forma de prevención para estos casos y otros de pérdida de datos.
Robo de credenciales y datos bancarios
Otros ataques informáticos están dirigidos a robar las credenciales o los datos de su tarjeta de crédito de una cuenta importante del usuario. El robo de las credenciales de una cuenta o datos de la tarjeta de crédito ocurre sin ni siquiera ser la víctima consciente del robo. El delincuente hace llegar a la víctima a través de cualquier medio y dispositivo un enlace que lleva a una página aparentemente igual que la legítima pero que en realidad es una página maliciosa que simula ser una legítima, en algún punto a la víctima se le presenta el formulario que solicita las credenciales de la cuenta o los datos de la tarjeta bancaria. La víctima los introduce y la página controlada por el delincuente ahora en posesión de los datos puede ir a la página legítima y realizar las mismas acciones que pudiera hacer el usuario.
Este tipo de ataques de suplantación de identidad son denominados de phising. Son muy peligrosos por dos motivos, porque son muy simples de realidad y porque se pueden hacer de forma masiva a muchos usuarios. Seguramente muchos usuarios potenciales víctimas no caigan en la trampa pero por probabilidad y estadística con que unos pocos se conviertan en víctimas compensa a los delincuentes.
Si son los datos de la tarjeta de crédito es posible realizar compras y pagos en cualquier página que la acepte hasta el límite que permita. Si se trata de las credenciales de una cuenta bancaria y el banco no tiene medidas adicionales de seguridad es posible realizar transferencias bancarias.
Para cuando la víctima se da cuenta puede ser demasiado tarde de que está siendo o ha sido estafado de una cantidad importante de dinero con un límite de los fondos de la cuenta bancaria que respalde las transferencias o los pagos de la tarjeta de crédito. Esto es, la víctima puede llegar a perder la totalidad de los fondos de su cuenta bancaria en un plazo de varios días.
Timo del nigeriano
El timo del nigeriano o la estafa nigeriana es su encarnación en internet al timo de la estampita que se daba en las calles. El timo del nigeriano y el timo de la estampita al igual que otros timos por internet basan su efectividad en la avaricia de la víctima.
En el caso del timo del nigeriano suele darse a través de mensajes de correo electrónico. Hay muchas versiones en el contenido del mensajes pero todas se basan en el contar una historia en el que una persona muy rica a punto de fallecer con mucho dinero desea donar su fortuna de varios millones al receptor del mensaje por muy raro que parezca ya que que en realidad se conocen de nada. Si el receptor del mensaje se cree por avaricia e inocencia algo tan bueno pero que no es verdad entrando en el juego se convertirá en víctima.
Iniciada la conversación el delincuente pide un pequeño pago para desbloquear los fondos del supuesto rico para que la víctima pueda recibirlos. Por supuesto, el delincuente no realizará ninguna transferencia y con alguna excusa seguirá pidiendo más pagos a la víctima. El resultado es que la víctima dependiendo de lo que tarde en darse cuenta de que está siendo objeto de una estafa pierde más o menos dinero en las transferencias que haya hecho. Otra forma de estafa es que el delincuente pida los datos bancarios o de tarjeta de crédito, información que nunca bajo ningún concepto hay que proporcionar a nadie por internet ni siquiera a alguien que diga ser un empleado de nuestro banco.
Cómo detectar potenciales ataques con consejos simples
Aunque algunos de los ataque son muy burdos, por su capacidad de causar daños muy graves conviene estar prevenidos y alerta. Por suerte, muchos de los potenciales intentos de ataque informático son muy sencillos de detectar con unas pocas y sencillas pautas.
Los servicios de correo electrónicos en la nube como Gmail son capaces de detectar la mayoría de correos electrónicos con potenciales ataques y de spam, sin embargo, como crear una cuenta de correo electrónico es gratuita los delincuentes y personas dedicadas a enviar correos electrónicos no deseados o spammers les resulta fácil continuar con su actividad en caso de que su cuenta sea cerrada por actividad ilegal según los términos de Google o el servicio que utilicen. Aún con la tasa de acierto de Google de detectar spam y correos fraudulentos con ataques el sistema no es perfecto y algunos llegan a la bandeja de entrada como cualquier otro correo válido. Con caer en un único ataque es suficiente con tener una buena cantidad de problemas y daños.
Una forma muy utilizada es a través de correos electrónicos por su sencillez y posibilidad de hacerlo masivo. Como muchos ataques tienen origen en otros países el lenguaje en los correos electrónicos recibidos está en inglés. En el caso de los hispano hablantes recibir un correo electrónico en inglés ya es un potencial indicio de potencial ataque que junto con otros factores es reconocible.
Por el mismo motivo que los ataques tienen un origen extranjero aún cuando los correos electrónicos llegan en español es porque los delincuentes realizan una traducción desde su idioma nativo, normalmente con alguna herramienta automatizada o la hacen ellos mismos. El texto en español aunque entendible suele tener fallos ortográficos, de sintaxis o utilizar expresiones que no se suelen utilizar. Los correos que tienen este tipo de errores también son potenciales correos de ataques.
Un dato importante es saber cual es la cuenta origen que envía el correo electrónico, si es una desconocida ya es sospechoso más cuando al mismo tiempo se trata de un correo inesperado. Conviene fijarse bien tanto en el nombre del usuario como en el dominio del correo electrónico ya que algunos cambian una letra para parecer el mismo que uno legítimo siendo totalmente uno diferente. Por ejemplo, si el correo legítimo es gestor@bancosantander.es uno fraudulento podría ser gestor@bancosantander.ink, conviene conocer cuál es el dominio legítimo del emisor para identificar este tipo de avisos, este ejemplo es muy claro pero hay otros más difíciles de identificar.
Enviar correos de forma masiva una gran cantidad de usuarios requiere utiliza el mismo texto para todos, esto hace que los correos electrónicos no estén personalizados y su salida sea un simple «Hola» ni el texto del mensaje incluya ningún detalle relacionado con el usuario. En estos correos el texto es creado a partir de una plantilla genérica.
Para tratar de incitar a la potencial víctima a realizar la acción que los delincuentes desean, tanto el asunto del mensaje como el texto del mismo suelen usar un lenguaje que provoque urgencia, requerir una acción inmediata, tiene un contenido emocional y se autodefinen como correos importantes. El motivo de este lenguaje es evitar que el usuario reaccione de forma inmediata sin pensar, para evitar la detección del fraude. Los mensajes que utilizan este lenguaje de urgencia e inmediatez suelen ser otra forma de detectar correos electrónicos potencialmente con ataques informáticos.
Otros correos de ataques aunque en menor cantidad están más elaborados y son más difíciles de detectar. Los más avanzados no son tan burdos y pueden utilizar un correo electrónico bien diseñado con el logotipo original de la compañía y sin faltas de ortografía en un perfecto español. En estos casos la forma de detectarlos es por el origen de la dirección de correo electrónico comentada anteriormente y por incluir enlaces que llevan a páginas que no son las legítimas. Al igual que en el caso de la dirección de correo electrónico, un correo fraudulento puede incluir un enlace con una dirección parecida a la legítima pero algo diferente. Por ejemplo, si la dirección legítima y correcta es https://particulares.bancosantander.es/login/ la fraudulenta podría ser https://particulares.bancosantander.ink/login/, si no se presta atención a ese ink en la barra de direcciones del navegador pasa perfectamente desapercibido. Por ello, siempre conviene fijarse en la barra de direcciones del navegador. Hay que tener en cuenta que aunque el texto que el usuario ve de un enlace sea https://particulares.bancosantander.es/login/ la dirección del mismo ser la página fraudulenta https://particulares.bancosantander.ink/login/.
Los navegadores al pasar con el ratón por encima del texto de un enlace suelen mostrar la dirección del mismo, esto permite saber cual es su dirección real sin tener que pulsarlo. Los navegadores de los dispositivos móviles no ofrecen esta funcionalidad por no utilizarse un ratón y este tipo de trucos son más difíciles de detectar.
Especialmente hay que tener en cuenta los correos electrónicos con comunicaciones de los bancos. Otros asuntos muy utilizados son la de mensajes con paquetes que no hemos pedido pero que solicitan un pago para recogerlo tan bajo muchos usuarios pican en la trampa. O correos relacionados con algún organismos estatal SEPE, la seguridad social o servicio de salud.
Como norma básica nunca se deben enviar o proporcionar las credenciales de ningún servicio o datos de tarjeta bancaria a alguien que los solicite ni introducir en ninguna otra página. Los delincuentes se aprovechan de que por naturaleza muchas personas son muy confiadas. Ningún empleado de ningún banco va a pedir nunca las credenciales de inicio de sesión en la banca electrónica o tarjeta de crédito de un cliente ni por correo electrónico ni por teléfono. Conviene conocer estos casos que nunca se pueden dar y en caso de que una comunicación o alguien lo intente saber de forma inmediata que es un muy potencial ataque informático.
Medidas preventivas para evitar problemas de seguridad
Aún conociendo los indicios de potenciales correos electrónicos o direcciones de páginas nadie está a salvo de los ataques por las múltiples formas en las que estos se presentan. En este artículo se comentan los más básicos y habituales pero hay algunos más elaborados en los que incluso alguien experto puede ser víctima perfectamente. Para evitar riesgos conviene tomar unas medidas de prevención básicas.
Hay que estar siempre alerta y sospechar cuando algunas cosas no encajan o parezcan demasiado buenas de personas desconocidas o con pseudónimos. Ante un correo electrónico o mensaje considerado como un ataque informático lo mejor es ignorarlo, no interactuar con él, ni siquiera abrirlo, ni descargar sus adjuntos si los tiene. En caso de ser un mensaje sospechoso pero no estar seguros lo mejor es estar alerta analizando la dirección del origen, enlaces que contiene y cuidado con los adjuntos.
En el caso de una computadora nunca hay que ejecutar programas obtenidos de adjuntos de un correo electrónico ni obtenidos en internet que no sean de fuentes fiables. Abrir documentos también es peligroso, por ejemplo esos típicos correos con una presentación de Power Point con algo gracioso o emocional que se difunden en cadenas con los contactos son candidatos a tener funciones maliciosas que exploten alguna vulnerabilidad del programa que los abre.
Utilizar un programa gestor de contraseñas
Cada servicio ha de tener sus propias credenciales y contraseña de inicio de sesión, esto hace que en caso de que las credenciales de un servicio sean robadas no afecte ni sirvan para otros servicios. Aunque uno no haya tenido el ataque de forma directa los puede sufrir a consecuencia del ataque que haya sufrido un servicio, los propios servicios también reciben ataques informáticos y robo de credenciales, en caso de que las mismas credenciales de un servicio se utilicen en otros todos de esos otros también están en peligro.
Ya, pero si tengo que tener unas credenciales y contraseña para cada servicio… ¿cómo recuerdo las contraseñas de todos?. Sencillo, utilizando un programa gestor de contraseñas KeePassXC o similar. Los programas gestores de contraseñas son bases de datos de credenciales que las guardan cifradas, la base de datos está protegida con una contraseña maestra con lo que solo es necesario recordar una contraseña. Los programas gestores de contraseñas tienen otras funciones útiles como generador de contraseñas fuertes, soporte como generador de segundo factor de autenticación y mantener cifradas las contraseñas en la base de datos con lo que aunque el archivo de base de datos fuera robado las contraseñas seguirán estando seguras.
Configurar el segundo factor de autenticación para iniciar sesión
Los servicios de grandes compañías e importantes ofrecen configurar segundo factor de autenticación como medida adicional a las credenciales de usuario y contraseña. El segundo factor de autenticación además de la contraseña requiere un código temporal generado con un dispositivo que tiene el usuario como un smartphone, aunque la contraseña haya sido robada el código temporal mantiene protegida la cuenta. Conviene activar el segundo factor de autenticación en aquellos servicios importantes que lo ofrezcan como Google, Amazon y PayPal. El programa KeePassXC ofrece soporte para actuar como generador de códigos temporales del segundo factor de autenticación.
Hacer copias de seguridad
No solo por los ataques de seguridad sino por corrupción de datos y fallos de hardware es necesario hacer copias de seguridad de forma periódica. Los datos son más importantes que el propio hardware donde se almacena, el hardware es reemplazable en caso de fallo pero los datos no son reemplazables en caso de pérdida por cualquier motivo. El programa FreeFileSync permite hacer copias de seguridad de forma sencilla.
Comprobar registros de actividad
Algunos servicios mantienen un registro de la actividad de la cuenta, como dirección IP de los dispositivos con sesión iniciada, ubicación estimada, navegador, fecha y hora, envían correos electrónicos para notificar la realización de acciones críticas como inicio de sesión en dispositivos nuevos, cambio de contraseña o realización de pagos.
Ante dudas de actividad sospechosa se puede consultar estos registros, y comprobar que las notificaciones del servicio legítimo solo llegan como consecuencia de una acción que realiza el usuario y no por actividad de un delincuente. Si hay sospechas fundadas o se detecta actividad fraudulenta hay que cambiar la contraseña si aún es posible.
Que hacer en caso de sufrir un ataque informático
En caso de un ataque informático según su gravedad algunas de las acciones a realizar son recopilar todos los datos posibles del ataque incluyendo los datos que se tenga del delincuente y como se ha producido el ataque, denunciar ante la policía, avisar al banco para que bloqueen la cuenta o tarjeta de crédito para impedir más daños y cambiar de contraseñas de los servicios afectados si aún se puede. En caso de extorsión atender las exigencias de los delincuentes posiblemente no sea una buena idea, en estos casos la opción es denunciar ante la policía.
Conclusión, tómatelo muy en serio
Mantened los dispositivos y programas actualizados y seguros instalados únicamente de fuentes fiables. Conoced las mínimas nociones de los ataques de robo de credenciales y phising y estar alerta ante mensajes no esperados por cualquier medio, asi como conocer los tipos de ataques habituales e ser capaz de identificarlos.
Internet permite estar conectados con muchas personas que están lejos o no veis en persona a las que queréis, pero también permite a cualquier persona del mundo contactarnos directamente. En las redes sociales se comparte mucha información personal demasiado alegremente (fotos propias, de hijos menores de edad, de otras personas sin su consentimiento, trabajo, …) y en este mundo hay personas que cometen delitos muy graves intencionadamente y conscientemente (robo, extorsión, …). La información pública y las redes sociales son un filón para ellos para realizar ataques informáticos.
Las compañías realizan importantes esfuerzos para implementar medidas de seguridad pero aún con ellas si el usuario no toma las medidas oportunas muchas de las medidas de seguridad de una organización, computadora o de un dispositivo electrónico son inútiles. En vez de atacar la seguridad de los servicios o dispositivos los delincuentes pueden atacar una parte que suele ser más débil, el usuario. Para evitar ser víctima de un ataque informático conviene conocer unas pocas medidas preventivas que son sencillas para detectar la mayoría de potenciales ataques.
La informática ha dejado de ser la de los ordenadores personales aislados para trabajos ofimáticos. La evolución de la tecnología informática por un lado llegando hasta los teléfonos inteligentes y la tecnología de internet permitiendo comunicaciones electrónicas a nivel mundial es una de las siguientes revoluciones a la revolución industrial en el siglo pasado. La informática hace tan solo unos pocos lustros era algo adoptado por personas interesadas en la tecnología, hoy quien no tiene un ordenador personal o portátil tiene un teléfono inteligente o smartphone. La tecnología se ha masificado y democratizado.
Al mismo tiempo que la tecnología informática ofrece gran cantidad de beneficios para personas y empresas pueden ser utilizadas por personas sin escrúpulos para hacer el mal de forma intencionada y totalmente consciente de lo que hacen. A través de internet quizá los delincuentes no amenacen tu integridad física en la calle de las personas pero el daño psicológico o estafa económica tiene el potencial de ser igual de dañino.
Contenido del artículo
Cuales son los peligros de los ataques informáticos
Los peligros y consecuencias de sufrir un ataque informático están a la misma altura de las tareas que hacemos de la informática, que ya son muchas y cada vez serán más.
En el caso personal muchas cosas se puede hacer ya a través de internet, dos de ellas son especialmente sensibles. Una son las que involucran dinero como compras por internet con tarjeta de crédito o acceso a cuentas bancarias a través de la oficina digital que ya ofrecen y exigen todos los bancos para realizar transferencias y pagos. La segunda es aquellas que tienen que ver con datos personales dónde las redes sociales como Facebook, Twitter o LinkedIn recopilan y cualquier persona tiene acceso. En el ámbito profesional existen los mismos peligros con graves consecuencias para la empresa que sea víctima de un ataque.
En un mundo capitalista en el que para la mayoría de las cosas se necesita dinero los ataques generalmente tienen un móvil económico en el que los delincuentes roban o estafan a las víctimas. El robo puede ser directamente a través de la tarjeta de crédito, de la cuenta bancaria o, de PayPal entre otros medios para transferir dinero entre cuentas y realizar pagos. Otra forma es indirecta, a través de la extorsión en el que el delincuente a través de una situación de poder exige a la víctima realizar acciones como la transferencia de dinero bajo la amenaza de por ejemplo publicar datos o información sensible robada exprimiendo a la víctima haciéndole creer que acatar sus exigencias la única posibilidad de recuperar datos importantes o cuentas de algún servicio, el desconocimiento o inocencia de la víctima es otra situación para perpetrar la estafa.
Por un momento imagina que te roban las credenciales que dan acceso a un servicio importante como la del correo electrónico, las del banco, los datos de la tarjeta de crédito, los de la cuenta de Google con todos sus datos como correo electrónico, documentos, fotos y se ha configurado como medio de pago, de PayPal, de Amazon por poner solo unos ejemplos pero la lista seguramente sea mucho más larga. Las consecuencias son que te pueden joder la vida mucho y convertir de repente tu vida en una pesadilla por simplemente un pequeño error de unos minutos del que ni siquiera has sido consciente. Puedes perder los ahorros de varios años de trabajo y dejarte la cuenta del banco vacía con problemas adicionales asociados si no se pueden afrontar pagos de hipoteca o ese dinero era el medio de afrontar los gastos. No te van a hacer daño físico pero el daño económico puede ser extremadamente importante también con un daño psicológico que quizá esté a mayor o la misma altura.
Este es un mensaje de audio de lo que parece una comercial o trabajadora en una sucursal de una entidad bancaria ante un número de ataques masivo no solo en la suya que muestra el grado de alarma y caos que es capaz de generar un ataque masivo con la capacidad de ser a nivel nacional.
Mensaje de advertencia después de un ataque informático
En el caso de sufrir un ataque informático los grupos dedicados a delitos informáticos de los diferentes cuerpos de policía harán todo lo posible para evitar más daños, reparar el causado que quizá no sea mucho y poner a disposición de la justicia a los delincuentes si pueden dependiendo del país el país en el que está el delincuente pero tampoco son todo poderosos y sus recursos materiales y de personal son limitados. La policía no da a basto con el número de casos que ya se dan, y los ataques parece que solo van a ir a mayor en número y gravedad. La policía únicamente se centrará en los más graves o en aquellos que se produzcan por bandas organizadas, por reiteración o por la posibilidad de acabar con ataques futuros. El mejor consejo que te va a dar la policía seguramente es la prevención, que evites ser víctima de un ataque informático. Con unas pautas sencillas la mayoría de ataques son detectables y evitables.
Quizá los seguros del banco o vivienda previstos a tal efecto permitan recuperar a la víctima parte del dinero que le han estafado pero seguramente sea una pequeña parte del total y por supuesto el daño psicológico no es reparable vivido durante un periodo de incertidumbre que puede durar semanas y meses.
Medios de ataque informático
Antes de la llegada de internet el mayor peligro eran los virus informáticos que eran programas con funciones maliciosas que causaban pérdida de datos o bloqueos en el sistema que requerían un reinicio. Su medio de transmisión era a través discos extraíbles y estaban ocultos en programas con funciones legítimas, al ejecutar estos el virus se ejecutaba al mismo tiempo. Una vez ejecutado el virus este se replicaba en el ejecutable del resto de programas con lo que al llevar discos de una computadora a otra la infección se extendía.
La mayoría de ataques son masivos aunque algunos aún costando más trabajo por parte del delincuente son individuales.
En computadores, correo electrónico y documentos
Hoy en día los virus informáticos siguen existiendo pero el medio por el que se transmiten ha cambiado de los discos extraíbles a programas descargados por internet o archivos adjuntos en correos electrónicos. Los virus no solo se ejecutan al ejecutar un programa infectado sino que los documentos de datos también pueden contenerlos como un documento de Word, hoja Excel o presentación de PowerPoint y documentos de otros programas. Además de realizar la función maliciosa una forma de transmitirse es enviando un correo electrónico a todos los contactos del usuario.
Las acciones de un virus informático son diversas como secuestrar los documentos del usuario, posteriormente el delincuente solicita un pago si la víctima quiere recuperarlos. Otra acción es registrar todas las pulsaciones del teclado denominada keylogger que también es peligrosa ya que al mismo tiempo envía al delincuente el registro con potencialmente el usuario y contraseñas de cuentas importantes como las mencionas de bancos Google o Amazon, además los keyloggers pasan desapercibidos.
En dispositivos móviles, correo electrónico, SMS, WhatsApp
Los dispositivos móviles ya sean teléfonos móviles inteligentes o tabletas con conexión a internet mediante WIFI son dispositivos también vulnerables y medios que utiliza el usuario a través de los que realizar ataques. Además del correo electrónico los dispositivos móviles añaden otros vectores de ataque como las aplicaciones de mensajería instantánea como WhatsApp, Telegram o simplemente mensajes SMS. Lo único que se necesita para hacer llegar de forma directa un ataque a un usuario de forma muy precisa es su número de teléfono, un dato que no es especialmente difícil de conseguir. En los dispositivos móviles, además, detectar algunos ataques es un poco más complicado por la forma de interactuar.
Otros ataques comienzan con un mensajes basado en un texto genérico. Al responder al correo electrónico el receptor válida que la dirección de correo electrónico es correcta y en uso y el destinatario original muestra interés. Una vez iniciada la conversación el objetivo es algún tipo de solicitud aparentemente buena pero que al finalizar requiera un pago momento en el que se produce algún tipo de ataque informático. Los más perseverantes quizá involucre una transacción que haya ido perfectamente pero una vez ganada la confianza en las siguientes con algún tipo de excusa haber algún cambio en el proceso de forma de pago donde se produce el ataque.
Páginas peligrosas
Algunas páginas tratan de ofrecer algo muy demandado por muchos usuarios que suelen ser del tipo obtener algo gratis que cuesta dinero comprarlo. Dada la cantidad de usuarios que visitan esas páginas si contienen algún tipo de ataque informático seguro que algunos visitantes se conviertan en víctimas. Algunos tipos de cosas muy buscadas por los usuarios son piratear la licencia de Microsoft Windows y la suite ofimática de Microsoft Office, pirateo de programas profesionales como la herramienta de retoque fotográfico Adobe Photoshop, descarga de contenido digital como películas de estreno, series, libros electrónicos y música, pirateo de televisión de pago y por supuesto páginas pr0n.
Muchas de estas páginas al acceder a ellas abren pestañas y ventanas emergentes aún con las medidas que implementan los navegadores para evitarlo, las ventanas emergentes son muy molestas y suelen contener algún tipo de publicidad de baja calidad. El abrir ventanas emergentes es el tipo de entorno en el que emplear un ataque de tabnabbing.
Tipos y formas de ataque informático
La mayoría de ataques comienzan de la misma forma en cualquiera de sus variantes, con una oferta tentadora por muy inverosimil que parezca para que el usuario no se resista a responder.
Secuestro de datos
En los ataques informáticos que consisten en el secuestro de datos los delincuentes extorsionan a la víctima posteriormente si quiere recuperarlos exigiendo un pago. Aunque el ataque está dirigido contra los datos de la víctima el móvil suele ser uno económico. Aceptar el chantaje no es la opción recomendada ya que no hay garantía de recuperar los datos, el delincuente podría seguir chantajeando más a la víctima con un monto total de dinero estafado importante sin garantías. Una vez de haber sufrido el ataque informático contra los datos la mejor opción para no caer en la extorsión es recuperar los datos de una copia de seguridad. Tener una copia de seguridad de los datos es una forma de prevención para estos casos y otros de pérdida de datos.
Robo de credenciales y datos bancarios
Otros ataques informáticos están dirigidos a robar las credenciales o los datos de su tarjeta de crédito de una cuenta importante del usuario. El robo de las credenciales de una cuenta o datos de la tarjeta de crédito ocurre sin ni siquiera ser la víctima consciente del robo. El delincuente hace llegar a la víctima a través de cualquier medio y dispositivo un enlace que lleva a una página aparentemente igual que la legítima pero que en realidad es una página maliciosa que simula ser una legítima, en algún punto a la víctima se le presenta el formulario que solicita las credenciales de la cuenta o los datos de la tarjeta bancaria. La víctima los introduce y la página controlada por el delincuente ahora en posesión de los datos puede ir a la página legítima y realizar las mismas acciones que pudiera hacer el usuario.
Este tipo de ataques de suplantación de identidad son denominados de phishing. Son muy peligrosos por dos motivos, porque son muy simples de realidad y porque se pueden hacer de forma masiva a muchos usuarios. Seguramente muchos usuarios potenciales víctimas no caigan en la trampa pero por probabilidad y estadística con que unos pocos se conviertan en víctimas compensa a los delincuentes.
Si son los datos de la tarjeta de crédito es posible realizar compras y pagos en cualquier página que la acepte hasta el límite que permita. Si se trata de las credenciales de una cuenta bancaria y el banco no tiene medidas adicionales de seguridad es posible realizar transferencias bancarias.
Para cuando la víctima se da cuenta puede ser demasiado tarde de que está siendo o ha sido estafado de una cantidad importante de dinero con un límite de los fondos de la cuenta bancaria que respalde las transferencias o los pagos de la tarjeta de crédito. Esto es, la víctima puede llegar a perder la totalidad de los fondos de su cuenta bancaria en un plazo de varios días.
Estafa o timo nigeriano
La estafa o timo nigeriano o la estafa nigeriana es su encarnación en internet al timo de la estampita que se daba en las calles. El timo del nigeriano y el timo de la estampita al igual que otros timos por internet basan su efectividad en la avaricia de la víctima.
En el caso del timo del nigeriano suele darse a través de mensajes de correo electrónico. Hay muchas versiones en el contenido del mensajes pero todas se basan en el contar una historia en el que una persona muy rica a punto de fallecer con mucho dinero desea donar su fortuna de varios millones al receptor del mensaje por muy raro que parezca ya que que en realidad se conocen de nada. Si el receptor del mensaje se cree por avaricia e inocencia algo tan bueno pero que no es verdad entrando en el juego se convertirá en víctima.
Iniciada la conversación el delincuente pide un pequeño pago para desbloquear los fondos del supuesto rico para que la víctima pueda recibirlos. Por supuesto, el delincuente no realizará ninguna transferencia y con alguna excusa seguirá pidiendo más pagos a la víctima. El resultado es que la víctima dependiendo de lo que tarde en darse cuenta de que está siendo objeto de una estafa pierde más o menos dinero en las transferencias que haya hecho. Otra forma de estafa es que el delincuente pida los datos bancarios o de tarjeta de crédito, información que nunca bajo ningún concepto hay que proporcionar a nadie por internet ni siquiera a alguien que diga ser un empleado de nuestro banco.
Cómo detectar potenciales ataques con consejos simples
Aunque algunos de los ataque son muy burdos, por su capacidad de causar daños muy graves conviene estar prevenidos y alerta. Por suerte, muchos de los potenciales intentos de ataque informático son muy sencillos de detectar con unas pocas y sencillas pautas.
Los servicios de correo electrónicos en la nube como Gmail son capaces de detectar la mayoría de correos electrónicos con potenciales ataques y de spam, sin embargo, como crear una cuenta de correo electrónico es gratuita los delincuentes y personas dedicadas a enviar correos electrónicos no deseados o spammers les resulta fácil continuar con su actividad en caso de que su cuenta sea cerrada por actividad ilegal según los términos de Google o el servicio que utilicen. Aún con la tasa de acierto de Google de detectar spam y correos fraudulentos con ataques el sistema no es perfecto y algunos llegan a la bandeja de entrada como cualquier otro correo válido. Con caer en un único ataque es suficiente con tener una buena cantidad de problemas y daños.
Una forma muy utilizada es a través de correos electrónicos por su sencillez y posibilidad de hacerlo masivo. Como muchos ataques tienen origen en otros países el lenguaje en los correos electrónicos recibidos está en inglés. En el caso de los hispano hablantes recibir un correo electrónico en inglés ya es un potencial indicio de potencial ataque que junto con otros factores es reconocible.
Por el mismo motivo que los ataques tienen un origen extranjero aún cuando los correos electrónicos llegan en español es porque los delincuentes realizan una traducción desde su idioma nativo, normalmente con alguna herramienta automatizada o la hacen ellos mismos. El texto en español aunque entendible suele tener fallos ortográficos, de sintaxis o utilizar expresiones que no se suelen utilizar. Los correos que tienen este tipo de errores también son potenciales correos de ataques.
Un dato importante es saber cual es la cuenta origen que envía el correo electrónico, si es una desconocida ya es sospechoso más cuando al mismo tiempo se trata de un correo inesperado. Conviene fijarse bien tanto en el nombre del usuario como en el dominio del correo electrónico ya que algunos cambian una letra para parecer el mismo que uno legítimo siendo totalmente uno diferente. Por ejemplo, si el correo legítimo es gestor@bancosantander.es uno fraudulento podría ser gestor@bancosantander.ink, conviene conocer cuál es el dominio legítimo del emisor para identificar este tipo de avisos, este ejemplo es muy claro pero hay otros más difíciles de identificar.
Enviar correos de forma masiva una gran cantidad de usuarios requiere utiliza el mismo texto para todos, esto hace que los correos electrónicos no estén personalizados y su salida sea un simple «Hola» ni el texto del mensaje incluya ningún detalle relacionado con el usuario. En estos correos el texto es creado a partir de una plantilla genérica.
Para tratar de incitar a la potencial víctima a realizar la acción que los delincuentes desean, tanto el asunto del mensaje como el texto del mismo suelen usar un lenguaje que provoque urgencia, requerir una acción inmediata, tiene un contenido emocional y se autodefinen como correos importantes. El motivo de este lenguaje es evitar que el usuario reaccione de forma inmediata sin pensar, para evitar la detección del fraude. Los mensajes que utilizan este lenguaje de urgencia e inmediatez suelen ser otra forma de detectar correos electrónicos potencialmente con ataques informáticos.
Otros correos de ataques aunque en menor cantidad están más elaborados y son más difíciles de detectar. Los más avanzados no son tan burdos y pueden utilizar un correo electrónico bien diseñado con el logotipo original de la compañía y sin faltas de ortografía en un perfecto español. En estos casos la forma de detectarlos es por el origen de la dirección de correo electrónico comentada anteriormente y por incluir enlaces que llevan a páginas que no son las legítimas. Al igual que en el caso de la dirección de correo electrónico, un correo fraudulento puede incluir un enlace con una dirección parecida a la legítima pero algo diferente. Por ejemplo, si la dirección legítima y correcta es https://particulares.bancosantander.es/login/ la fraudulenta podría ser https://particulares.bancosantander.ink/login/, si no se presta atención a ese ink en la barra de direcciones del navegador pasa perfectamente desapercibido. Por ello, siempre conviene fijarse en la barra de direcciones del navegador. Hay que tener en cuenta que aunque el texto que el usuario ve de un enlace sea https://particulares.bancosantander.es/login/ la dirección del mismo ser la página fraudulenta https://particulares.bancosantander.ink/login/.
Los navegadores al pasar con el ratón por encima del texto de un enlace suelen mostrar la dirección del mismo, esto permite saber cual es su dirección real sin tener que pulsarlo. Los navegadores de los dispositivos móviles no ofrecen esta funcionalidad por no utilizarse un ratón y este tipo de trucos son más difíciles de detectar.
Especialmente hay que tener en cuenta los correos electrónicos con comunicaciones de los bancos. Otros asuntos muy utilizados son la de mensajes con paquetes que no hemos pedido pero que solicitan un pago para recogerlo tan bajo muchos usuarios pican en la trampa. O correos relacionados con algún organismos estatal SEPE, la seguridad social o servicio de salud.
Como norma básica nunca se deben enviar o proporcionar las credenciales de ningún servicio o datos de tarjeta bancaria a alguien que los solicite ni introducir en ninguna otra página. Los delincuentes se aprovechan de que por naturaleza muchas personas son muy confiadas. Ningún empleado de ningún banco va a pedir nunca las credenciales de inicio de sesión en la banca electrónica o tarjeta de crédito de un cliente ni por correo electrónico ni por teléfono. Conviene conocer estos casos que nunca se pueden dar y en caso de que una comunicación o alguien lo intente saber de forma inmediata que es un muy potencial ataque informático.
Medidas preventivas para evitar problemas de seguridad
Aún conociendo los indicios de potenciales correos electrónicos o direcciones de páginas nadie está a salvo de los ataques por las múltiples formas en las que estos se presentan. En este artículo se comentan los más básicos y habituales pero hay algunos más elaborados en los que incluso alguien experto puede ser víctima perfectamente. Para evitar riesgos conviene tomar unas medidas de prevención básicas.
Hay que estar siempre alerta y sospechar cuando algunas cosas no encajan o parezcan demasiado buenas de personas desconocidas o con pseudónimos. Ante un correo electrónico o mensaje considerado como un ataque informático lo mejor es ignorarlo, no interactuar con él, ni siquiera abrirlo, ni descargar sus adjuntos si los tiene. En caso de ser un mensaje sospechoso pero no estar seguros lo mejor es estar alerta analizando la dirección del origen, enlaces que contiene y cuidado con los adjuntos.
En el caso de una computadora nunca hay que ejecutar programas obtenidos de adjuntos de un correo electrónico ni obtenidos en internet que no sean de fuentes fiables. Abrir documentos también es peligroso, por ejemplo esos típicos correos con una presentación de Power Point con algo gracioso o emocional que se difunden en cadenas con los contactos son candidatos a tener funciones maliciosas que exploten alguna vulnerabilidad del programa que los abre.
Utilizar un programa gestor de contraseñas
Cada servicio ha de tener sus propias credenciales y contraseña de inicio de sesión, esto hace que en caso de que las credenciales de un servicio sean robadas no afecte ni sirvan para otros servicios. Aunque uno no haya tenido el ataque de forma directa los puede sufrir a consecuencia del ataque que haya sufrido un servicio, los propios servicios también reciben ataques informáticos y robo de credenciales, en caso de que las mismas credenciales de un servicio se utilicen en otros todos de esos otros también están en peligro.
Ya, pero si tengo que tener unas credenciales y contraseña para cada servicio… ¿cómo recuerdo las contraseñas de todos?. Sencillo, utilizando un programa gestor de contraseñas KeePassXC o similar. Los programas gestores de contraseñas son bases de datos de credenciales que las guardan cifradas, la base de datos está protegida con una contraseña maestra con lo que solo es necesario recordar una contraseña. Los programas gestores de contraseñas tienen otras funciones útiles como generador de contraseñas fuertes, soporte como generador de segundo factor de autenticación y mantener cifradas las contraseñas en la base de datos con lo que aunque el archivo de base de datos fuera robado las contraseñas seguirán estando seguras.
Configurar el segundo factor de autenticación para iniciar sesión
Los servicios de grandes compañías e importantes ofrecen configurar segundo factor de autenticación como medida adicional a las credenciales de usuario y contraseña. El segundo factor de autenticación además de la contraseña requiere un código temporal generado con un dispositivo que tiene el usuario como un smartphone, aunque la contraseña haya sido robada el código temporal mantiene protegida la cuenta. Conviene activar el segundo factor de autenticación en aquellos servicios importantes que lo ofrezcan como Google, Amazon y PayPal. El programa KeePassXC ofrece soporte para actuar como generador de códigos temporales del segundo factor de autenticación.
Hacer copias de seguridad
No solo por los ataques de seguridad sino por corrupción de datos y fallos de hardware es necesario hacer copias de seguridad de forma periódica. Los datos son más importantes que el propio hardware donde se almacena, el hardware es reemplazable en caso de fallo pero los datos no son reemplazables en caso de pérdida por cualquier motivo. El programa FreeFileSync permite hacer copias de seguridad de forma sencilla.
Comprobar registros de actividad
Algunos servicios mantienen un registro de la actividad de la cuenta, como dirección IP de los dispositivos con sesión iniciada, ubicación estimada, navegador, fecha y hora, envían correos electrónicos para notificar la realización de acciones críticas como inicio de sesión en dispositivos nuevos, cambio de contraseña o realización de pagos.
Ante dudas de actividad sospechosa se puede consultar estos registros, y comprobar que las notificaciones del servicio legítimo solo llegan como consecuencia de una acción que realiza el usuario y no por actividad de un delincuente. Si hay sospechas fundadas o se detecta actividad fraudulenta hay que cambiar la contraseña si aún es posible.
Que hacer en caso de sufrir un ataque informático
En caso de un ataque informático según su gravedad algunas de las acciones a realizar son recopilar todos los datos posibles del ataque incluyendo los datos que se tenga del delincuente y como se ha producido el ataque, denunciar ante la policía, avisar al banco para que bloqueen la cuenta o tarjeta de crédito para impedir más daños y cambiar de contraseñas de los servicios afectados si aún se puede. En caso de extorsión atender las exigencias de los delincuentes posiblemente no sea una buena idea, en estos casos la opción es denunciar ante la policía.
Conclusión, tómatelo muy en serio
Mantened los dispositivos y programas actualizados y seguros instalados únicamente de fuentes fiables. Conoced las mínimas nociones de los ataques de robo de credenciales y phishing y estar alerta ante mensajes no esperados por cualquier medio, asi como conocer los tipos de ataques habituales e ser capaz de identificarlos.
Internet permite estar conectados con muchas personas que están lejos o no veis en persona a las que queréis, pero también permite a cualquier persona del mundo contactarnos directamente. En las redes sociales se comparte mucha información personal demasiado alegremente (fotos propias, de hijos menores de edad, de otras personas sin su consentimiento, trabajo, …) y en este mundo hay personas que cometen delitos muy graves intencionadamente y conscientemente (robo, extorsión, …). La información pública y las redes sociales son un filón para ellos para realizar ataques informáticos.
Después de ¿Era Watcom C el doble de rápido que otros compiladores de C? hoy hablaré de Hi Tech Pacific C, un compilador que marcó una época. Sigo el desarrollo del proyecto FreeDOS desde sus inicios, momentos en los que apenas había oferta de compiladores para DOS que fueran gratuitos. El propio Jim Hall recomendaba …
Hoy va un post rapidito sobre un curioso detalle sintáctico de C# que me llamó la atención hace algún tiempo, mientras leía el artículo How to Stress the C# Compiler, donde Henning Dieterichs comenta varias formas de estresar (¡literalmente!) al compilador de C# utilizando construcciones admitidas por el lenguaje.
La cuestión es: ¿por qué no compila el siguiente código?
class Program { public static void Main() { int f = 0; int x = 0; int y = 0; System.Console.WriteLine( "{0} {1}", f < x, // is f smaller than x? y > (-1) // is y greater than -1? ); } }
¡No sigáis leyendo! Echad un vistazo al código e intentad averiguarlo antes de ver la solución :) He de decir que los comentarios "//" en el código contribuyen significativamente al despiste, pero la respuesta es bastante sencilla. Basta con eliminar ruido y reformatear un poco el código para verlo más claro:
class Program { public static void Main() { int f = 0; int x = 0; int y = 0; System.Console.WriteLine( "{0} {1}", f<x,y>(-1) ); } }
De esta forma, llegamos rápido a la conclusión de que el código conflictivo f<x,y>(-1) es sintácticamente correcto desde dos puntos de vista muy diferentes:
Dos parámetros suministrados a Console.WriteLine(), escritos como expresiones condicionales independientes:
f < x
y > (-1)
Una llamada a un método genérico f<x,y>, suministrándole el valor -1.
Ante este caso, durante el parseo Roslyn da prioridad a la segunda interpretación, por lo que el fallo en compilación es inevitable al no existir un método genérico f<x,y>() (bueno, y de hecho ni siquiera x e y son tipos, sino variables).
Cuando publiqué Watcom C++ y Sieve para DOS pareció que el rendimiento del compilador Watcom C/C++ aún siendo muy bueno, no llegaba a cumplir aquella promesa del pasado en la que se decía que Watcom C++ con aplicaciones de 32 bits generaba un código que era entre 2 y 5 veces más rápido que cualquier …