2019/10/07

Ejemplo de rescate de memoria de cámara

Un pariente borró accidentalmente sus fotos y videos de una cámara que encima tiene rota la tapita de las pilas, detallo acá lo hecho para restaurarlas:

El camino fácil


Primero, obtener una imagen de la memoria, hay que insertarla y ver que dice dmesg cómo encontrarla:

[69.899754] sd 8:0:0:0: [sdb] 7741440 512-byte logical blocks: (3.96 GB/3.69 GiB)
[69.906898] sdb: sdb1


Para ser estrictamente forenses, debimos haber desactivado el automount, para evitar cualquier escritura sobre el disco, en particular en Mint Mate me parece que con

gsettings set org.mate.meda-handling automount false

ya estamos. Recordá que si el disco se monta automáticamente, se hace read write y algo toca, aunque en este caso no debería hacer diferencia.

Luego con fdisk explorarla, por curiosidad y costumbre:


$> sudo fdisk /dev/sdb -l
Disk /dev/sdb: 3,7 GiB, 3963617280 bytes, 7741440 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1        8192 7741439 7733248  3,7G  b W95 FAT3
2

Otro motivo para no tomar la imagen hubiese sido estar recuperando información de un almacenamiento mayor al espacio disponible.

Para buscar lo borrado, el programa photorec ha resultado muy efectivo,

sudo apt install testdisk

Puede trabajar directamente sobre la memoria con sudo o sobre la imagen, mejor sobre la imagen, de paso no le damos sudo.

photorec sd.img

Con sudo seguramente hubiese mostrado la sd.


Hay que elegir si revisar todo el disco o la partición que encuentra, en este caso la partición. Si se hubiera borrado la tabla de particiones... whole disk.


Hay que elegir el formato, en este caso sabemos


 Elegimos que busque en toda la partición


 Y finalmente donde dejar lo rescatado




En el caso de esta vieja Kodak, recuperó imágenes y videos como esperábamos y además unos xmls, .ini y sqlite que como no aportan nada los ignoré.

Las fotos que comienzan con f son fotos, las que comienzan con t son previews.

Para ver el resultado, en Mint y parecidos con abrir la primera imagen se puede ver con el visor y luego pasar a modo galería o ir avanzando con la flecha. Como detalle de calidad se pueden rotar las imágenes que lo necesiten y al salir de visor ofrecerá guardar

Como no estaba seguro del orden, ejecuté el siguiente script que extrae la fecha de la metadata y compone un nuevo nombre:



Pongo una imagen en lugar de texto en parte por que se vé mas lindo, en parte por mala gente así tenés que tipear, lo cual te ayuda a familiarizarte con bash.


Con respecto a videos rotados, se pueden corregir con:


ffmpeg -i f0316864.avi -vf "transpose=2"  fixed.avi


o mejor aún con:


mencoder -vf rotate=2 f0316864.avi -oac copy -of lavf -lavfopts format=mpeg4 -ovc lavc -lavcopts vcodec=mpeg4 -o fixed2.avi


que conserva la calidad. El format y el vcodec dependeran del formato del video.

He visto recomendado usar avidemux pero ya teniendo ffmpeg y memcoder instalados, preferí no seguir instalando cosas. Quizás avidemux resuelva automáticamente lo del formato.

El camino difícil


No me gustan mucho los hubiese, seguramente, hubiera, supongo que dejé  más arriba, así que borré la tabla de particiones de la sd y trabajé directamente sobre ésta, para recorrer el camino de sudo y la falta de espacio.

Mirando más arriba la salida de fdisk dice que la partición empieza en 8192 * 512 y mirando lo primero que encontré, la tabla de particiones está bien al comienzo.



sudo dd if=/dev/zero bs=1024 count=1 of=/dev/sdb

Ojo que si te equivocás con of podés perder el disco. Si me dedicara a esto probablemente siempre usaría una virtual o una máquina de descarte. Si te equivocás con count o bs lo suficiente, te metés con los datos, por ello es mejor trabajar sobre la imagen previamente obtenida, pero no olvidemos que esto es un ejercicio, nunca necesitaríamos borrar la tabla de particiones.

Tampoco uses if=/dev/null, ya que como input no te da nada y nada escribe, necesitás ceros.




sudo photorec /dev/sdb



Si no le decís explícitamente la ruta, te muestra lo que haya.




Le dás Search, Other... (me faltó la captura y ya me aburrí)



 y anda otra vez.




Detalles de terminación


Además, la cámara estaba un poco rota, la tapita no cerraba por que volaron las muesquitas en la bisagra y en la punta contraria.



Lo bueno es que tiene para atornillar, sólo hay que hallar la pieza apropiada y el tornillo apropiado para no usar cinta adhesiva, para algo llevo años juntando tornillos y todo tipo de basura, como un perfil de aluminio de mosquitero:




Los comandos acá utilizados y otros de utilidad los comparto en github.

2019/09/22

Cambiando de grupo sin reiniciar sesión

¿Te ha pasado que acabás de instalar un programa que accede a hardware y te dice que para poder usarlo tenés que reiniciar a la windows viejo?

Algunas situaciones pueden ser VirtualBox para conectarle los USB, wireshark para acceder a las interfaces sin ser root, acceso al puerto serial y quizás al scanner.

Lo que ocurre es que necesitás pertenencia a un grupo, no es algo que se aplique así no más, hay varias maneras:

Reiniciar la sesión

Es lo que no queríamos hacer, pero si eres tan gallina, es lo tuyo.

Iniciar una nueva sesión

Artera comadreja, ok, no cerraste la sesión y te abrís una al lado con otro usuario. Te dejo de ejercicio fijarte si podés iniciar dos sesiones de XWindows del mismo usuario.

"Iniciar" una nueva sesión

¡Es la opción correcta! Una vez que estás en el grupo con, por ejemplo, addgroup, hacés su --login USER y estás adentro




Esto es para esta terminal, en las otras aplicaciones seguís afuera, pero desde esta terminal podés abrir el programa que acabás de instalar.

Unirte al grupo


Esta opción es medio rara, no la usa nadie y consiste en que a un grupo se le puede dar una clave con gpasswd, que queda en /etc/gshadow, igual que /etc/shadow, luego haces newgrp.



Ejemplo de acceso a la carpeta de USB de VirtualBox:


Esta tambien es para la terminal y te dejo como ejercicio fijarte si altera a las aplicaciones ya abiertas.

Resultado


Este es el comportamiento para acceder a USB desde VirtualBox

Primero no estás en el grupo vboxusers.


La VM arranca todo bien, pero cuando le querés conectar algo...







De cualquiera de las maneras, una vez que estás en vboxusers


Podés conectarle lo que haya en USB



Siempre...


...es mejor tomar una de estas acciones y evitar como la plaga usar sudo, pues está vez te va a funcionar, pero la próxima que hagas login, quizás te creó archivos en tu home con permisos de root y vas a tener que limpiar el desastre.

Además siempre que puedas ejecutar algo sin ser root (ni sudo) es más seguro pues tenés una defensa adicional frente a un ataque, que es que obligás a quien te ataca a escalar privilegios.

Fijate que ni mencioné la posibilidad de hacer login como root. Es de adolescentes, sentir el poder, la adrenalina. Pero una vez que aprendiste a usar *nix, madurás y sólo usás tu poder cuando hace realmente falta.


Y ya que estamos...



Como me molesta que me digan a la windows, reinicie para que los cambios sean tomados, aviso que cuando se instalan los drivers de virtualbox para poder entre otras cosas cambiar el tamaño de la pantalla, no hace falta reiniciar el sistema completo, sólo X-Windows, o sea, que con hacer logout y login alcanza, ya lo probé varias veces.

Para poder acceder a shared folders,

sudo addgroup USER vboxsf


Y más


Si quisieras crear grupos interesantes como kismet, docker y wireshark antes de instalar esos paquetes, no sé para qué, tenés que crearlos con el parámetro

--system.