Conocer los datos de nuestra memoria RAM en Windows

Me acabo de pillar un ultrabook de segunda mano, que viene con Windows 7 instalado (estoy dilucidando ahora si meterle una distro derivada de Debian o pasarme a la familia Red Hat), y quería conocer qué tipo de RAM trae para ampliársela. Una opción era abrir el equipo, cosa que además en este modelo es bastante fácil, otra era mirar el administrador de dispositivos (que no nos da toda la información posible) y una tercera: tirar de consola.

El comando wmic nos ofrece informes sobre las caracterísiticas del hardware de nuestro equipo. Para el caso de la RAM podemos obtener un completo informe con él. Lanzamos un terminal ejecutando cmd y, desde allí, escribimos:

wmic memorychip

Esto nos sacará en pantalla todos los datos sobre la memoria, pero puede hacerse engorroso tener esta presentación (es más, en mi equipo era totalmente ilegible), por lo que podemos lanzar el comando de forma que la salida esté dirigida a un archivo de texto, que lo hará más manejable. En el ejemplo lo sacaré a un archivo .txt en la carpeta Documents, vosotros usad la ruta y el nombre que queráis:

wmic memorychip > Documents\informememoria.txt

De esta forma tendréis la información más ordenada y usable. Y tras esto

Crear pendrive booteable con Hirens desde Ubuntu

En su día ya hablé de Hirens (ya es un artículo antiguo), una suerte de «caja de herramientas» (o «kit de primeros auxilios» o «navaja suiza«, te haces una idea) para realizar reparaciones. La verdad es que nunca había creado un pendrive booteable ya que siempre tengo un cd a mano en todos los lugares donde trabajo, pero hoy me enfrentaba a la reparación de un equipo con sectores dañados del disco duro y no tenía ninguno a mano. No es complicado crear el pendrive, pero tiene un par de cosillas. Os cuento el proceso:

Lo primero, como no, es descargar la ISO del Hiren’s . Ese zip incluye un .exe que podrás usar para crear un cd arrancable en Windows, pero para este caso estamos en Ubuntu (para más señas Kubuntu, con escritorio KDE) así que sólo extraeremos el archivo de imagen de cd .iso para trabajar.

Necesitamos un pendrive de, al menos, 1 GB que esté formateado en FAT32. En mi caso le di formato usando el Gestor de Particiones de KDE, usad lo que estéis más acostumbrados a usar.

Con el pendrive ya formateado basta lanzar UNetbootin, seleccionar como origen la imagen .iso del Hirens y como unidad destino el pendrive recién formateado en FAT32. En cuestión de pocos minutos el pendrive debería estar listo… o casi.

Me pasó que al arrancar desde el USB el equipo a arreglar no me aparecían todas las opciones del Hirens. Aparecía la que necesitaba pero al ejecutarla… no cargaba. Fue como ¿qué coño está pasando?¿por qué no va?¿y dónde está el MiniXP?. Tras un par de búsquedas por foros me encuentro con que me queda un paso para terminar. Volví a conectar el pendrive a mi equipo, me metí a explorar las carpetas del pendrive y dentro de HBCD (la deberíais encontrar ya dentro de la raíz) encontré el archivo isolinux.cfg, que es el que necesitaba. Basta con copiar este archivo en la carpeta superior (la que sería la principal del pendrive) y cambiarle el nombre por syslinux.cfg, borrando previamente el archivo que había allí con ese mismo nombre. Tras este cambio Hiren’s arrancará normalmente con todas sus opciones, y ya podéis cacharrear por el equipo.

Reparar el Grub en Ubuntu

Cuando yo estudiaba el desaparecido FP de Desarrollo de Aplicaciones Informáticas (hoy convertido en DAW y DAM en busca de una mayor especialización) teníamos una asignatura genérica de Sistemas y Redes el primer año. Era un batiburrillo donde veías de todo un poco, y tuvimos la suerte de tener un profesor muy bueno, un auténtico crack (una pena que dejara la docencia para trabajar en otros proyectos) que nos eseñó mucho. Curiosamente en mi trabajo he tenido que hacer mucho cacharreo en los últimos meses, y estas pequeñas lecciones me han servido de mucho.

Una de las cosas que recuerdo haber tenido que hacer en un examen era reparar el GRUB de un Ubuntu (9.04 por aquel entonces), ejercicio fundamental porque era el primero y como no fueras capaz de hacerlo no podías seguir con el examen.

Para este proceso vamos a necesitar una distribución Linux que podamos arrancar en modo Live (desde un disco o pendrive). Una vez cargada lanzamos un terminal y a cacharrear. Empezamos por averiguar en qué partición está instalado el SO haciendo sudo fdisk-l. Para el ejemplo vamos a utilizar sda1. El siguiente paso es «montar» el disco duro de nuestro equipo en esta distribución live:

#primero montamos el disco duro del SO
sudo mount /dev/sda1 /mnt

#luego el resto de dispositivos
sudo mount –bind /dev /mnt/dev

Tras esto debemos crear una jaula chroot, un comando que nos permite acceder como root al sistema de archivos del SO instalado:

sudo chroot /mnt

Y ya en esta situación lo único que nos queda por hacer es instalar el GRUB en el Master Boot Record para que se ejecute al arranque.

grub-install –recheck /dev/sda

Existen otras soluciones, como Super Grub Disk, sencillas y rápidas, pero la descrita arriba me ha funcionado en la mayoría de los casos sin problema.

Incluir un equipo Ubuntu 14.04 en un dominio Active Directory de Windows

En este sencillo tutorial vamos a ver cómo incluir un equipo con Ubuntu (14.04 en el ejemplo) dentro de un dominio Active Directory (servidor con Windows 2k8) utilizando PowerBroker IS Open Edition, que es el software que ha «jubilado» a Likewise-Open. Los datos que usaremos para el ejemplo (y que debéis cambiar por los que correspondan en vuestro caso) son los siguientes:

Dominio: DONNIE.local
DC: SERVIDOR.DONNIE.local
IP: 192.168.100.2

Antes de comenzar mirad que la ip de vuestro equipo esté en el mismo rango que la ip del servidor. Una vez confirmado esto (si no, configuradlo) comenzaremos.

Descargamos el script correspondiente desde la web oficial y le damos permisos de ejecución con un chmod +x. Luego nos situamos en la carpeta donde lo guardamos y lo ejecutamos (cambiad el nombre del archivo por el de la versións que hayáis descargado vosotros):

sudo ./pbis-open-8.0.1.2029.linux.x86_64.deb.sh

Tras esto nos unimos al dominio (cambia administrator y el nombre del domino por los que procedan):

sudo domainjoin-cli join DONNIE.local administrator

O si lo quieres desactivando ssh por defecto:

sudo domainjoin-cli join --disable ssh DONNIE.local administrator

En el siguiente paso hay que hacer un pequeño cambio en un archivo de configuración. En el archivo /etc/pam.d/common-session debes cambiar la línea que pone session sufficient pam_lsass.so por esta: session [success=ok default=ignore] pam_lsass.so.

Y desde la consola configuramos más datos para el acceso, recordad cambiar el dominio y el grupo de usuario por el que corresponda en vuestro caso:

sudo /opt/pbis/bin/config UserDomainPrefix DONNIE
sudo /opt/pbis/bin/config AssumeDefaultDomain true
sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash
sudo /opt/pbis/bin/config HomeDirTemplate %H/%U
sudo /opt/pbis/bin/config RequireMembershipOf "DONNIE\\Usuarios" 

Ahora nos queda configurar lightdm para activar el login manual:

sudo vi /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf

#Añade las siguients líneas (sin la marca de comentario)
#allow-guest=false
#greeter-show-manual-login=true

##Nota, en Lubuntu 14.04 el archivo a cambiar será  60-lightdm-gtk-greeter.conf 

Finalmente vamos a darle permisos de sudo al usuario del dominio (ojo, si procede) editando el archivo correspondiente con un sudo vi /etc/sudoers y añadiendo los datos que sean necearios siguiendo los ejemplos contenidos en el propio documento.

Tras esto, si reiniciamos el equipo, deberíamos ya poder hacer login con el usuario del Active Directory de Windows.

Windows Explorer de repente no funciona como cliente FTP en Windows 7

Era complicado ponerle un título a esto, pero es algo que me encontré por la mañana. Un cliente estaba trabajando con una aplicación web para Internet Explorer que debía abrir una carpeta de un servidor FTP, funcionaba bien en todos los equipos de una red menos en uno (pulsabas un enlace de la aplicación y se abría en Explorador de Windows en la carpeta FTP), así que fuera lo que fuera era algún problema local de ese equipo. Probé de todo pero nada parecía funcionar, aunque poco a poco tachaba cosas de la lista hasta llegar a una conclusión: por algún motivo Windows Explorer no quería funcionar como cliente FTP.

Probé cambiando varias entradas en el registro, probé diversas configuraciones y al final, tras mucho darle a Google encontré esta solución: crear una entrada en el registro de Windows. La cosa consiste en copiar el texto de abajo y guardarlo en un archivo con la extensión .reg, y luego ejecutar dicho archivo para que la entrada se añada. Con esto la cosa volvió a funcionar perfectamente.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ftp]
@="URL:File Transfer Protocol"
"AppUserModelID"="Microsoft.InternetExplorer.Default"
"EditFlags"=dword:00000002
"FriendlyTypeName"="@C:\\Windows\\system32\\ieframe.dll,-905"
"ShellFolder"="{63da6ec0-2e98-11cf-8d82-444553540000}"
"Source Filter"="{E436EBB6-524F-11CE-9F53-0020AF0BA770}"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\ftp\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,75,00,72,00,\
6c,00,2e,00,64,00,6c,00,6c,00,2c,00,30,00,00,00
[HKEY_CLASSES_ROOT\ftp\shell]
@="open"
[HKEY_CLASSES_ROOT\ftp\shell\open]

¿Y por qué había dejado de funcionar el Windows Explorer como cliente FTP por defecto? Pues tras instalar Google Chrome y definirlo como navegador por defecto este había cambiado también la configuración del cliente FTP por defecto del equipo. Tras la ejecución del cambio en el registro todo volvió a funcionar con normalidad.

Clonar un disco duro .vdi de Virtual Box

Si bien cuando estudiaba hacíamos los clonados de disco en VirtualBox tal como se harían en una máquina real, tirando del Clonezilla, existe una forma más práctica de lograrlo.

En Windows la cosa es lanzar una consola de comandos (cmd) y situarnos en la carpeta en la que hubiéramos instalado VirtualBox. Una vez allí basta con usar el siguiente comando:

VBoxManage.exe clonehd ../rutadeldisclonar.vdi ../rutadelresultado.vdi 

Obviamente tenéis que cambiar ../rutadeldisclonar.vdi por la ruta real del disco .vdi que queréis clonar, y tres cuartos de lo mismo con ../rutadelresultado.vdi que es donde se creará el nuevo archivo.

En el caso de Linux la cosa es prácticamente igual: lanzáis el terminal, os ubicáis en la carpeta donde se instaló el VirtualBox y desde allí lanzáis

sudo VBoxManage clonehd ../rutadeldisclonar.vdi ../rutadelresultado.vdi 

Como antes, cambiando las rutas fictias por las que correspondan. Y listo, disco virtual clonado por si se os corrompe el que está en uso.

Esteganografía en Linux sin instalar software adicional

Ya en el pasado hablamos de software para ocultar archivos dentro de otros (la llamada esteganografía) en Linux, como SilentEye o Outguess. Pero realmente es posible ocultar un archivo dentro de una imagen sin necesidad de software extra, valiéndonos sólo de la consola.

Lo primero es comprimir el archivo que queremos ocultar, mismamente con la herramienta nativa de compresión de Ubuntu lo transformamos en un archivo .zip (y si queréis un extra de seguridad podéis añadirle una contraseña). Para el ejemplo lo llamaremos secreto.zip mismamente.

Ahora necesitamos un archivo de imagen, para el ejemplo tendremos una que se llamará base.png, y lanzamos un terminal.

La idea es simple: concatenamos el archivo zip a continuación de la imagen generando un nuevo archivo que tendrá la misma extensión que la imagen base (si la extensión de la imagen fuera distinta no se verá, por ejemplo si usamos un png de base pero de salida lo llamamos .jpg). Rápidamente lo entenderéis con un ejemplo de la operación:

cat base.png secreto.zip > resultado.png

A primera vista el archivo resultado.png es la misma imagen que base.png, si bien si miráis sus propiedades veréis que tamaño del nuevo archivo es más grande (porque lleva concatenado el archivo comprimido, lógicamente).

¿Cómo accedemos al archivo oculto? Pues simplemente renombrando el archivo resultado.png y cambiando la extensión de la imagen por la del archivo comprimido que usáramos (en este caso pasaría a ser resultado.zip). Tras este cambio si la abrís con el gestor de archivos comprimidos podréis acceder al archivo que habéis ocultado.

Tal vez ofrezca menos seguridad y optimización que el software específico para esteganografía, pero para un apuro puede ser una solución válida.

¿Cómo conocer nuestra IP externa?

¿Conocéis ese momento incómodo en que tenéis que hacer una conexión para ayudar a alguien por remoto y el TeamViewer os mira mal y os dice «nanay, chaval, esto es uso comercial descarado«? Tras el pánico inicial toca recurrir a VNC, que es verdaderamente libre (otra opción sería pagar TeamViewer o buscar alguna alternativa más, pero asumamos que no pensáis soltar un duro). ¿Problemilla? Que para realizar una conexión por VNC necesitamos (además de abrir algunos puertos) conocer nuestra IP externa. Un ifconfig en Linux o un ipconfig en Windows sólo nos dará nuestra ip dentro de la red local, y en este caso necesitamos saber qué ip usamos hacia el exterior.

Una solución rápida y fácil es recurrir a alguna de estas webs, que directamente nos darán el resultado:

Evitar la desconexión automática de las unidades de red en Windows 7

Esta mañana me encontraba una incidencia de un cliente a primera hora, se quejaba de que un programa que utilizaba debía cargar una radiografía desde una unidad de red compartida, pero que los equipos, Windows 7 Home, tras un rato fuera de uso dejaban de tener accesibles estas unidades. Basta un simple doble click para activarlas otra vez, pero eso implica salir del programa y repetir todas la operación, una cuestión engorrosa.

¿Existe una solución para esto? Sí, desde luego. Esta desconexión automática ocurre a los 30 minutos y este tiempo puede modificarse, ampliándose, reduciéndose y hasta desactivándose. Lo que tenemos que hacer es abrir la línea de comandos con permisos de administrador (Inicio-> Todos los programas-> Accesorios-> Click derecho sobre Símbolo del sistema, y ahí elegir Ejecutar como administrador.)

¿Lo podemos cambiar para que en vez de cada media hora ocurra cada hora y media? Basta poner el número de minutos en 90:

net config server /autodisconnect:90

¿Y para desactivarlo?

net config server /autodisconnect:-1

Ojo, para desactivar la desconexión es -1, como pongo arriba, hay gente que lo pone a 0 y entonces no sólo no la desactivan sino que se desconectan a los pocos segundos

Puede haber más motivos para la desconexión, como que el servidor los desconecte por su propia configuración o que el equipo se ponga en suspensión por ahorro de energía (desconectando incluso la tarjeta de red) así que si tras aplicar este comando siguen desconectándose revisad las opciones de energía y la configuración del servidor. Esta solución es válida para los equipos con XP, Vista y Windows 7, no tengo información de si va igual en Windows 8, y no valdría para los anteriores a XP (si alguien los conserva).

«Poor Man’s VPN» sobre tunel SSH

Partamos de uno de estos supuestos:

  1. Estás conectado a una red de cuya seguridad no te fías, pero tienes un servidor seguro en algún sitio al que podrías conectarte.
  2. Estás en una red con conectividad limitada, pero puedes conectarte a un servidor con salida a internet

¿Tienes una opción para conectarte de forma segura? Sí. Puedes hacer una llamada «poor man’s VPN» sobre un tunel SSH ¿Cómo hacemos esto? Bueno, lo primero es que el servidor contra el que vamos a conectarnos tenga habilitados tanto la posibilidad de hacerse root de forma remota como la posibilidad de tunneling y la redirección de puertos. Todo esto lo podéis poner a funcionar en el archivo /etc/ssh/sshd_config, poniendo PermitRootLogin yes y PermitTunnel yes y luego reiniciando el servicio sshd (suponiendo que trabajéis con un servidor Linux, claro). Por seguridad podéis (deberíais) configurar unas claves SSH

Una vez esté todo eso habilitado toca empezar a configurar el cliente (vamos de nuevo con Linux) desde el que queremos conectarnos. Necesitamos saber la IP del servidor al que nos conectamos, en el ejemplo vamos a poner una ficticia que sería 83.112.23.4X. La máscara de red también tiene que ser la pertinente para vuestra configuración de conexión:

#abrimos un tunel ssh al servidor (vosotros poned la IP de vuestro server)
sudo ssh -f -w any 83.112.23.4X true

#asignamos una ip al tunel (ip local típica, en vuestro caso la que corresponda asegún la configuración)

sudo ifconfig tun0 192.168.0.2 192.168.0.1 netmask 255.255.255.0

Tras esto es necesario tener configurado el tunel en el servidor

# la misma asignación que en el server, pero invirtiendo las ip's de los dos puntos del tunel
sudo ifconfig tun0 192.168.0.1 192.168.0.2 netmask 255.255.255.0

# habilitamos el reenvío de paquetes
echo 1 > /proc/sys/net/ipv4/ip_forward

# habilitamos el enmascaramiento
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

Finalmente toca acabar de configurar el enrutamiento en el cliente, en este ejemplo la puerta de enlace será 10.1.1.1, para vuestra configuración usad la que toque. La cosa es borrar la ruta previa a la puerta de enlace para usar la del tunel:

sudo ip route add 10.0.0.0/8 via 10.1.1.1
sudo ip route del default via 10.1.1.1 dev eth0
sudo ip route add default via 192.168.0.2

Ya sólo te queda comprobar si la conexión está funcionando bien.