Visual Studio Code: Seleccionar varios elementos

Si trabajando con Visual Studio Code queremos modificar todas las ocurrencias de una cadena de texto en principio nos bastaría con pulsar Ctrl+H, que es el comando para buscar y reemplazar, ahí tenemos tanto la opción de modificar todas como la de ir saltando de una en una ocurrencia. ¿Y si no queremos recorrer todo? Podemos seleccionar un elemento y pulsar después Ctrl+D, lo que irá añadiendo a nuestra selección una por una todas las ocurrencias de esa cadena, cuando hayamos seleccionado las que queremos bastará con editar una para que se editen todas.

Otra opción es mantener pulsada la tecla ALT mientras hacemos click sobre las cadenas que queremos seleccionar, al que además nos permitirá seleccionar diferentes elementos si queremos y no solo los que coincidan con la cadena que buscamos.

Cifrar la tarjeta SD en nuestro teléfono

Cuando ayer hablaba de apps de ciberseguridad para Android comentaba entre otras buenas prácticas de seguridad la idea de cifrar la tarjeta SD del dispositivo. Me habéis preguntado cómo se hace esto y por qué habría que hacerlo.

El por qué es simple: si alguien te roba tu teléfono puede que no sea capaz de desbloquearlo si lo has protegido con un patrón, datos biométricos, código pin, etc. pero si saca la tarjeta SD y la mete en otro dispositivo entonces podrá ver todo lo que hay en ella. ¿Ventajas de cifrarla? Mayor seguridad, si te roban el teléfono esos datos están protegidos, acceder a ellos es muy difícil, puede que no imposible pero sí muy complicado ¿Contras? Dos: una pequeña pérdida de rendimiento cuando accedas a la tarjeta que será más o menos significativa según la potencia del teléfono y, sobre todo, que una vez cifrada si se te estropea el teléfono no voy a decir que sea imposible recuperar esos datos, pero estás en la misma situación que el atacante: es complicado.

¿Cómo se cifra una tarjeta SD en Android?

Bueno, como siempre con Android dependemos mucho del fabricante y de la versión del sistema operativo. Como algo genérico diré que esa opción siempre va a estar en los ajustes del teléfono, donde deberemos buscar los que sean relativos a seguridad y dentro de los mismos deberíamos encontrar alguna referencia a la tarjeta SD.

Por ejemplo, en mi actual teléfono Samsung con Android 11 habría que ir a los Ajustes, allí a Datos Biométricos y Seguridad y dentro de ese menú ya aparece una opción que es Cifrar Tarjeta SD. Esto no era exactamente igual en mi anterior teléfono, un Huawei con Android 10, en el que para cifrar la tarjeta SD habría que ir a Ajustes, allí pulsar en Seguridad, dentro de ese menú ir a Ajustes adicionales, después apretar sobre Cifrado y credenciales y finalmente Cifrar tarjeta de memoria. Como véis esta opcion estará en el apartado de seguridad del teléfono, pero según el fabricante estará más accesibe o menos. En todo caso, seguramente en la web del fabricante del teléfono tendréis un manual de instrucciones de vuestro dispositivo en el que vendrán detalladas las instrucciones concretas para hacerlo en ese modelo.

Algunas aplicaciones gratuitas para mejorar la seguridad y privacidad de nuestro dispositivo Android.

Siempre insisto en las entradas sobre ciberseguridad en que protejamos nuestro dispositivo, utilizar herramientas del propio teléfono como por ejemplo el cifrado de la tarjeta SD o del almacenamiento, ojo a los sms que traen enlaces, mantener el software actualizado, no instalar apps de orígenes dudosos, hacer un uso responsable del dispositivo, estar atentos a posibles estafas… son cosas que están en nuestras manos. A mayores también tenemos aplicaciones que nos facilitarán la vida. Vamos a ver una serie de apps que además podemos obtener gratuitamente.

Imagen ilustrativa de una consola de comandos
Photo by Sora Shimazaki on Pexels.com

Empecemos por CONAN Mobile, una aplicación desarollada por INCIBE de la que ya hablamos hace unos años y que sigue recibiendo actualizaciones. Aunque su interfaz se ha quedado algo anticuada sigue siendo una buena herramienta a la hora de detectar configuraciones inseguras o aplicaciones maliciosas, o incluso si nuestro teléfono ha sido parte de una botnet. No es un antivirus sino una herramienta para gestión de seguridad, es bastante útil y siendo un desarrollo de una entidad pública no incluye publicidad ni otro tipo de «pago en datos» a cambio de su gratuidad.

Si bien para navegar de forma anónima nada es más eficiente que el navegador de TOR, es cierto que a veces puede resultar un pelín excesivamente contundente, algo lento o que quita demasiadas funcionalidades en algunas webs. Si queremos un navegador funcional que respete nuestra privacidad hoy por hoy creo que las dos opciones que mejor combinan sencillez, funcionalidad y seguridad son Brave Browser y Cake Browser. Seguramente alguien me pregunte por DuckDuckGo, es cierto que bloquea muchos rastreadores, pero se ha sabido hace poco que el proyecto tiene un acuerdo con Microsoft que les impide bloquear algunos rastreadores de la compañía del Windows.

Los antivirus gratuitos suelen despertar mi recelo, algunos ralentizan nuestro dispositivo, otros pasado un tiempo empiezan a bombardearte con publicida de la versión premium, algunos directamente comercian con tus datos… para comprobar si tenemos malware en nuestro teléfono yo recomiendo dos aplicaciones, sino queremos pasar por caja: por un lado el antivirus Koodous y por otro el web de VirusTotal. El primero es un antivirus creado y mantenido por una comunidad de voluntarios hispanohablantes, nos permite escanear nuestro teléfono en busca de malware. En cuanto a VirusTotal, aunque hay un app en la tienda de Google, yo prefiero abrir directamente la web en el navegador del teléfono y subir allí el fichero para comprobar si pudiera estar infectado, no por nada, sino porque el app no es oficial aunque tiene buenas valoraciones.

Proteger nuestro teléfono con datos biométricos o con una patrón siempre es una buena práctica, pero tenemos el app AppLock, que nos permitirá añadir protección extra a aplicaciones concretas poniéndoles un pin o patrón particular, pudiendo aplicarla a los SMS, contactos, configuración, o cualquier aplicación concreta del teléfono, de hecho nos permite hasta proteger con pin fotografías u otros ficheros almacenados en el teléfono.

Finalmente otra de mis recomendaciones es usar un gestor de contraseñas y hoy por hoy creo que la mejor opción, sin tener que pagar, es Keepass2Android Password Safe, que está basada en el popular software libre Keepass. Nos permite tener nuestra base de datos de contraseñas en un fichero externo online, incluso en servicios populares como GoogleDrive o DropBox, permitiendo que lo tengamos disponible en todos nuestros dispositivos.

Visual Studio Code: comentar y descomentar varias líneas

Llevo una temporadita que trabajo principalmente con Visual Studio Code (como sabréis por aquel meme) así que de vez en cuando puede que deje por aquí algún truquillo-consejo (que seguramente ya hayan comentado mil blogs más). Empecemos por este ¿Cómo se puede comentar rápidamente un montón de líneas?

Pues para comentar en Windows o en Linux primero seleccionamos las líneas que queremos comentar, después pulsamos la tecla CTRL y mientras la mantenemos pulsada también pulsamos primero la tecla K y luego la tecla C. En caso de que trabajéis con uno de esos equipos propiedad de Apple entonces tendréis que cambiar la tecla CTRL por la tecla CMD.

El ejemplo de arriba pone un comentario de línea en cada línea seleccionada. Si en lugar de ese queréis usar un comentario de bloque entonces tenéis que pulsar a la vez SHIFT + ALT + A en Windows y Linux o SHIFT + OPT + A en un equipo de Apple.

Pues para descomentar en Windows o en Linux es similar, primero seleccionamos las líneas que queremos comentar, después pulsamos la tecla CTRL y mientras la mantenemos pulsada pulsamos primero la tecla K y luego la tecla U. De nuevo en caso de que trabajéis con uno de esos equipos propiedad de Apple, tendréis que cambiar la tecla CTRL por la tecla CMD.

Obtener nuestra IP externa desde el terminal de Linux usando el comando dig

Bueno, si ya vimos ayer cómo obtener nuestra IP externa desde el PowerShell de Windows y anteriormente desde Linux con cURL y con wget, hoy vamos a ver unha tercera forma de hacer esto desde Linux: con el comando dig (acrónimo de Domain Information Groper).

Para este ejemplo nos serviremos del servicio de OpenDNS, aunque también podría hacersce con otros como el de Google, Cloudflare o el de Ipify que usamos ayer. Básicamente tendríamos que usar este comando:

dig +short myip.opendns.com @resolver1.opendns.com

¿Y si queremos usarlo en un script? Pues basta con meter la respuesta que capturamos en una variable:

miDirIp="$(dig +short myip.opendns.com @resolver1.opendns.com)"

Conocer nuestra IP externa desde línea de comandos en Windows, usando PowerShell

En el pasado vimos cómo podíamos descubrir nuestra IP externa desde línea de comandos en Linux, sirviéndonos tanto de cURL como del comando wget. Como ahora ya todos sabéis que soy un apaniaguado del Tito Bill vamos a ver cómo hacerlo con el PowerShell de Microsoft.

Como siempre, cuando se trata de la IP externa, tenemos que recurrir a un servicio web externo. Hay un buen montón de opciones para esto, pero por comodidad (comodidad para mí, porque ya tengo las pruebas hechas con ese) recurriremos a https://api.ipify.org

En PowerShell podemos usar el cmdlt Invoke-WebRequest para lanzar peticiones http y https a una web y recoger su respuesta. Si llamamos al api que os ponía arriba obtendremos nuestra IP.

Invoke-WebRequest -uri "https://api.ipify.org/"

¿Y ya está? Pues no, porque eso nos devolverá como texto plano además de la IP el status de la respuesta y las cabeceras, por lo que aunque podemos leer la IP sería incómodo trabajar con ella. Pero por suerte el cmdlt nos permite filtrar y obtener solo el valor que nos interesa. Tal que así:

(Invoke-WebRequest -uri "https://api.ipify.org").content

De esa forma sí que obtendríamos solo la línea con el valor de la IP, ya que accedemos únicamente al contenido de la respuesta, al valor de content. Si quisiéramos meter el valor de la IP en una variable para trabajar con un script podríamos hacerlo tal que así:

$miDirIP = (Invoke-WebRequest -uri "https://api.ipify.org/").Content

Spyware ¿qué es? ¿cómo nos protegemos?

Está la prensa española hablando mucho de spyware estos días, primero por el espionaje a políticos catalanes de ideología independentista a través del software Pegasus o de otros programas de la empresa Candiru denunciado por la asociación canadiense Citizen Labs, después porque el propio gobierno central haya denunciado que los teléfonos de la ministra de Defensa y del propio presidente han sido también espiados a través de la conocida aplicación de NSO. Aquí no vamos a analizar el caso, que ya hay mucha gente hablando del tema y mejor informada que yo, sino que nos vamos a hablar de lo básico sobre software espía: definición y cómo minimizar el riesgo.

¿Qué es un spyware?

Cuando hablamos de spyware hablamos de una tecnología, un código malicioso que se usa para extraer datos de un sistema de información (ordenador, red de ordenadores, teléfono, tablet…) sin el consentimiento ni conocimiento de sus usuarios. Puede usarse para robar contraseñas de distintas cuentas, credenciales de acceso a servicios en la nube, datos bancarios, correos electrónicos, ficheros almacenados, cookies de navegación… en fin, en general cualquier tipo de información que pase por el equipo infectado. El spyware recopilará información que se descargue o se genere en el dispositivo y la enviará después a un dominio que pertenezca al atacante para que este pueda analizarla. Dado que si analizamos el tráfico de nuestra red podríamos detectar la infección si vemos un tráfico inusual hacia una web extraña, estos dominios suelen estar «camuflados» con nombres similares a los de empresas legítimas o con nombres que sugieran que son páginas inocuas, además es habitual que se reparta el envío de tráfico entre varios dominios para que el volumen de información enviado no sea llamativo.

¿Quién se sirve de este tipo de software? Pues cualquiera que tenga la intención de espiar a alguien, esto abarca desde ciberdelincuentes hasta fuerzas de seguridad, pasando por gobiernos, servicios de inteligencia e incluso medios de comunicación o empresas. Desde el saqueo de cuentas a través de banca móvil a la estrategia geopolítica, pasando por el espionaje industrial, se han detectado este tipo de ataques en muchos y diversos casos. Los objetivos del espionaje pueden ser tanto empresas como gobiernos, instituciones o personas particulares.

¿Es ilegal su uso? Creo que legalmente en España estaría en el mismo supuesto legal que las escuchas telefónicas, podría ser autorizado por un juez en determinados supuestos para una investigación criminal, al menos es lo que interpreto leyendo esta circular de la Fiscalía General del Estado, de 2019 que hace referencia a las modificaciones en la Ley de Enjuiciamiento Criminal de 2015. Es evidente que cuanto menos control público exista sobre un gobierno, cuanta menos separación de poderes exista en un estado, más podrá este abusar de estas aplicaciones.

¿Cómo nos protegemos?

Bueno, si recordáis las entradas sobre apps maliciosas, sobre rogueware o sobre distintos tipos de troyanos (que son tres de las formas en las que nuestro dispositivo puede acabar infectado) hay varios puntos a seguir:

  • Tener nuestro software actualizado. Si vemos artículos técnicos hablando sobre Pegasus una de las cosas que comprobaremos es que se servía de vulnerabilidades de iOS, Android o Whatsapp que fueron parcheadas posteriormente, por lo que es fundamental mantener las actualizaciones al día.
  • Revisar los permisos de las aplicaciones. A veces el spyware puede estar escondido en una aplicación que nos hemos descargado pensando que sirve para otra cosa, es importante comprobar que los permisos que pide la aplicación al instalarse sean coherentes con el uso que se le va a dar. Por ejemplo, si descargamos un app que nos de la predicción del tiempo atmosférico es normal que pida permisos sobre nuestra ubicación (para darnos la predicción del sitio en el que nos econtremos), pero debería alarmanos que nos los pida, por ejemplo, sobre nuestra lista de contactos.
  • Instalar un app que nos ayude a gestionar la seguridad. Yo siempre recomiendo usar la aplicación de seguridad Conan, del CCN.
  • Ojo con las cosas que descargamos, hay que comprobar siempre que vengan de una fuente legítima. Como también se ha visto en el caso Pegasus, se utilizaban ficheros PDF infectados para ejecutar remotamente código en el dispositivo que instalaba el software espía.
  • Analizar nuestro tráfico de red. Esto ya es para usuarios avanzados o profesionales, revisar el tráfico de la red y comprobar con qué dominios se comunican puede ayudarnos a descubrir un software espía oculto en algún equipo.
  • Reiniciar el teléfono regularmente. Aunque parezca una chorrada tiene su sentido. Según investigadores de la empresa de antivirus Kaspersky el reinicio regular del dispositivo dificulta el espionaje ¿Por qué? Pues porque según parece los más sofisticados spywares (ahora sí que hablamos de Pegasus o de otras herramientas millonarias) que son capaces de infectar dispositivos con técnicas «0-click» (es decir, que no requieren de una acción concreta del usuario) no instalan nada en el dispositivo para reducir su rastro, sino que se cargan en la memoria en tiempo de ejecución. Esto implica que si el teléfono se apaga ese código malicioso desaparece y el atacante tendría que volver a infectar el dispositivo para volver a espiarlo.
  • Repensar las políticas BYOD. Hace unos años desde distintas webs dedicadas a economía y negocios se nos decía que los teléfonos corporativos estaban «muertos«, que ahora lo que se llevaba era el bring your own device, es decir, que cada uno se traiga al trabajo su propio dispositivo. Lo que se vendía como una forma de mejorar la comodidad del usuario y su «libertad» (palabra multiuosos para múltiples estafas), y que realmente no era más que una forma de buscar que las empresas ahorrasen en la compra de dispositivos, ha acabado por convertirse en uno de los eslabones más débiles de la ciberseguridad empresarial. Es otra de las cosas que hemos visto en el asunto Pegasus: los teléfonos de cargos públicos se utilizaban como si fuesen personales, instalaban y descargaban más o menos lo que querían y no había unas reglas de seguridad rígidas al respecto de su uso. También hay que decir que en el caso de las últimas versiones del polémico y ahora popular software de NSO no era necesario que el atacado descargase nada, el atacante podía infectar el dispositivo sin que el usuario participase, pero en la mayoría de spywares sí suele infectarse el dispositivo a través de algún malware introducido mediante phishing.

Todos estos consejos nunca nos garantizarán una protección total (puede que nos encontremos con un spyware que explote una vulnerabilidad todavía no solucionada y que incluso permita ataques del tipo «0-click» antes mencionados, o que no sea detectable por el software antivirus por ser todavía muy nuevo), pero sí que nos pueden ayudar a minimizar el riesgo de ser atacados. Siendo realistas, es poco probable que algún servicio secreto o gobierno tenga interés en espiar a un ciudadano medio que no tenga un cargo político, pero sí es cierto que cualquiera puede ser víctima de un ataque que intente robar sus datos bancarios o incluso, en según qué profesiones, datos relativos a su trabajo, como por ejemplo en casos de espionaje industrial, o en el espionaje a periodistas de investigación del que se han reportado múltiples ejemplos. Ante los más modernos spywares, los que se venden como un servicio por el que se cobran millones, es complicado y a veces hasta imposible defenderse (por eso se pagan millones), pero hay muchos otros más baratos y usados por delincuentes de todo tipo contra los que podemos estar más seguros teniendo un poco de cuidado.

Cómo descargar nuestros datos de Whatsapp

En su momento habíamos visto cómo descargar nuestros datos de Facebook, Twitter y Linkedin o como ver todas nuestras búsquedas por voz en Google. Hoy vamos a ver cómo descargar los datos que Whatsapp tiene sobre nosotros.

El primer paso será abrir Whatsapp en nuestro teléfono, ir a Ajustes pulsando el icono de menú (tres puntos que están situados en la parte superior derecha de la pantalla principal de Whatsapp) y allí a Cuenta. Una vez estemos en esa pantalla pulsamos Solicitar info. de mi cuenta.

Una vez estemos en esta pantalla pusamos en Solicitar Informe. Esa pantalla ya nos informará de que el envío tardará un tiempo que oscila entre varias horas y un par de días, además no incluirá las conversaciones o imágenes (eso está en la copia de seguridad) sino los datos que ha acumulado sobre nosotros.

Cuando nuestro informe esté listo recibiremos una notificación de Whatsapp diciendo «El informe ya está disponible» y volviendo a Ajustes->Cuenta->Solicitar Info. De Mi Cuenta podremos ver ahora una opción que es Descargar Informe. Pulsando ahí podremos bajarnos un fichero comprimido en formato zip que incuirá archivos html y json con nuestros datos. Estos ficheros tendremos que abrirlos con otra aplicación, por ejemplo descargándolos en nuestro pc, ya que no podremos verlos dentro de la propia aplicación de Whatsapp.

Operadores de búsqueda en DuckDuckGo

Que Google sigue siendo el buscador más utilizado hoy por hoy es algo que no vamos a discutir, como tampoco discutiré que habitualmente es el que nos ofrece los resultados más relevantes para nuestra búsqueda, en gran parte por la cantidad de datos que ha recopilado durante años sobre nuestros hábitos de navegación, ubicación geográfica, etc. Esto no quiere decir que el resto de buscadores no sean útiles o válidos: ya sea por privacidad en algunos casos, porque estemos investigando a una persona u organización, porque Google no nos haya dado un resultado satisfactorio en nuestra búsqueda… muchos veces echamos mano de otros buscadores como Bing, DuckDuckGo, Yandex, Startpage o Baidu.

Si eres una persona habituada a hacer un uso de Google avanzado sabrás que hay ciertos operadores que te permitirán afinar más tu búsqueda. La mayoría de estos operadores funcionan igual en Bing, Yandex, Baidu y, lógicamente, Startpage (ya que este buscador lo que hace es buscar en Google enmascarando al usuario). En DuckDuckGo en cambio la cosa es un poco distinta. Veamos unos ejemplos:

  • Coches motos: si buscamos estos dos términos así, tal cual, nos dará resultados sobre coches y sobre motos.
  • «coches y motos»: en cambio si buscamos así entre comillas, al igual que pasaría en Google nos devuelve resultados que contengan la frase exacta «coches y motos».
  • Coches +motos: con el operador + junto a uno de los términos lo que haremos será dar más peso a ese término en la búsqueda. Eeste ejemplo devolvería más resultados sobre motos que sobre coches.
  • Coches -motos: con el operador junto a uno de los términos lo que haremos será excluir o dar menos peso a ese término en la búsqueda. Este ejemplo principalmente devolverá resultados sobre coches obviando las motos.
  • Alumnos filetype:pdf : en este caso nos devuelve todos los ficheros PDF que encuentre relativos al término de búsqueda (para el ejemplo, Alumnos). Podemos buscar ficheros con extensión PDF, doc, docx, xls, xlsx, ppt, pptx, html
  • Alumnos site:webdelinstituto.com : busca el término Alumnos, pero solo dentro del dominio que le hemos definido.
  • Alumnos -site:webdelinstituto.com : busca el término Alumnos, pero en este caso excluye los que pertenezcan al dominio que le definamos.
  • intitle:Alumnos : busca páginas que tengan el término Alumnos en el título.
  • inurl:Alumnos : busca páginas que tengan el término Alumnos en su URL.
  • !a camiseta: el operador ! nos permite invocar lo que DuckDuckGo llama «bang«, básicamente lo que hace es devolvernos los resultados de un motor de búsqueda externo directamente. En el ejemplo hemos usado !a, en ese caso devolverá los resultados del motor de búsqueda de Amazon para ese término (es decir, camisetas que estén a la venta en amazon). Si por ejemplo buscamos !w Tesla nos devolverá los resultados del motor de búsqueda de Wikipedia para el término Tesla. También podríamos usar !yelp, !ebay o !wa (este último para Wolfram Alpha). Hay como 13.000 términos de búsqueda, que podéis consultar aquí (he solicitado que hubiera un !donnierock… pero no les ha convencido de momento).
  • !safeon o !safeoff: añadiendo esto al final de tu búsqueda puedes habilitar o deshabilitar el modo de búsqueda segura.

Crear una tabla HTML con cabecera fija, usando CSS3

Si bien los elementos table suenan a cosa del pasado, a aquellos tiempos en los que todo se hacía con tablas y de vez en cuando algo de flash o similar, todavía siguen utilizándose tablas en el mundo de la programación y diseño web, ya no como elemento central y básico de la maquetación, pero sí para por ejemplo presentar datos en ese formato de filas/columnas.

Si tenemos una tabla muy larga la solución tradicional ha sido siempre la paginación, que con el tiempo fue sustituída por elementos que van insertando nuevas filas de forma asíncrona mientras hacemos scroll. En estos casos puede pasar que hayamos bajado mucho, la cabecera ya no esté visible y no tengamos muy claro a qué corresponde cada columna. Una solución podría ser repetir la cabecera cada x filas, pero se puede hacer visualmente incómodo. Otra posibilidad es hacer fijas estas cabeceras de forma que siempre estén visibles en pantalla y bajen mientras hacemos scroll.

Parece que lo lo lógico sería que pudiésemos hacer fijos los elementos thead o tr, ya que queremos que toda la línea quede fijada, pero aunque nos parezca lo elemental no será posible. Para fijar un elemento de esta forma tenemos que ponerle position:relative y esta característica no se aplica a esos elementos, esto implica que tendremos que usarlo obligatoriamente sobre las celdas, sobre los elementos th o td.

Supongamos que tenemos una tabla como esta (bueno, con cientos de registros para que tenga sentido la cabecera fija):

<table>
  <thead>
    <tr>
       <th>Nombre</th>
       <th>Edad</th>
       <th>Salario</th>
       <th>Rango</th>
       <th>Area</th>
     </tr>
    </thead>
   <tbody>
    <tr>
       <td>Manuela Z.</td>
       <td>43</td>
       <td>24000</td>
       <td>Analista</td>
       <td>Big Data</td>
     </tr>
  </tbody>
</table>

Si queremos fijar la cabecera el CSS, lo más básico posible, sería tal que así:

table {
  position: relative;
  border-collapse: collapse; 
}
th, td {
  padding: 6%;
}

th {  
  position: sticky;
  top: 0; 
}

Hay tres puntos clave en ese CSS: el position:relative de la tabla, el position:sticky del elemento th y la posición top:0 también del elemento th. De esta forma le decimos que todas las celdas de la cabecera se queden fijas en la parte superior de la tabla, así al bajar el scroll estas bajarán con él.