1 votos

Montar EncFS en Android KitKat 4.4

En las versiones más antiguas (arraigadas) de Android, Cryptonite era una gran solución para montar carpetas encriptadas con EncFS, pero en mi nuevo teléfono Android KitKat con un almacenamiento emulado, eso falla.

Puedo montar con éxito la carpeta encriptada en /storage/emulated/legacy en otra carpeta en /storage/emulated/legacy pero los archivos descifrados no son visibles para otras aplicaciones. Cómo puedo montar una carpeta EncFS de forma correcta?

0 votos

¿Cómo lo montas?

0 votos

@Mathew ¿Qué quieres decir exactamente? La carpeta encriptada está en /storage/emulated/legacy/encfs.crypt y he intentado montarla en /storage/emulated/legacy/encfs. Cryptonite ofrece una guía para montar las carpetas encfs. (Las carpetas también existen en /storage/emulated/0, pero eso tampoco funciona).

0 votos

¿Puede alguien con la reputación necesaria añadir las etiquetas 'cryptonite' y 'encfs' a esta pregunta?

2voto

JanKanis Puntos 126

El problema resulta ser una nueva característica de seguridad en KitKat. Las aplicaciones tienen por defecto su propio espacio de nombres de montaje, lo que significa que los montajes creados por una aplicación no son visibles para una aplicación diferente.

En segundo lugar, los teléfonos Android sin tarjeta SD real utilizan la emulación para la tarjeta SD falsa, y eso me dio algunos problemas.

SuperSU de Chainfire tiene una opción para acceder al espacio de nombres de montaje de root que permite a un programa montar sistemas de archivos y tenerlos visibles para todos los demás programas. Desafortunadamente, Cryptonite no conoce esta opción. Una solución es interponer un script antes del encfs binario que utiliza Cryptonite.

Necesitarás un shell Root para ejecutar estos comandos, probablemente desde un ordenador que utilice adb para conectarse a su teléfono a través de usb. (Pero el uso de una aplicación de terminal también podría funcionar).

Pasos:

Muévete al directorio de datos de la criptonita:

cd /data/data/csh.cryptonite

Observe el identificador de usuario de Cryptonite:

ll -d -n .

Esto dará una salida similar a drwxr-x--x 11 10133 10133 4096 Feb 14 23:51 . El 10133 es el id de usuario de Cryptonite (la segunda copia es el id de grupo de Cryptonite, pero debería ser el mismo).

Crear una carpeta para almacenar el binario original de encfs, y darle la propiedad correcta

mkdir original
chown 10133:10133 original

(sustituye el 10133 por el identificador de usuario que tiene cryptonite en tu teléfono)

Alejar los encfs originales

mv encfs original/

Crear un script llamado encfs para interceder por los verdaderos encfs. Prefiero utilizar el nano para esto, pero también podrías crear el archivo de una manera diferente y moverlo usando el comando cp /path/to/encfs/replacement/file/here /data/data/csh.cryptonite/encfs

nano encfs

Poner el siguiente contenido en el encfs de sustitución script

#!/system/bin/sh

cmd=/data/data/csh.cryptonite/original/encfs

for param in "$@"
do
    replaced=`echo "$param" | sed 's:^/storage/emulated/:/data/media/:'`
    cmd="$cmd $replaced"
done

su -mm -c $cmd

Guarda el archivo con ctrl-x (volumen abajo + x en algunas aplicaciones del emulador de terminal), responde y para ahorrar.

Hacer el reemplazo script ejecutable

chmod +x encfs

Establecer el propietario adecuado

chown 10133:10133 encfs

(De nuevo, sustituye el 10133 por el identificador de usuario que Cryptoite tiene en tu teléfono)

Eso debería ser todo. Montar una carpeta encfs desde /storage/emulated/0/ en una carpeta diferente en /storage/emulated/0 debería funcionar ahora.

Qué hace

El reemplazo script hace dos cosas: reemplazar las rutas a las carpetas de /storage/emulated/something al lugar real donde se almacenan los datos de la tarjeta SD emulada, y llamar al encfs real en el espacio de nombres de montaje de root para que la carpeta encfs montada sea visible para todas las aplicaciones.

Cambiar las rutas de las carpetas es necesario porque por alguna razón el montaje en la tarjeta SD emulada no funciona (al menos para mí). La tarjeta SD emulada, de hecho, almacena sus datos en /data/media/0 . Al montar en la ubicación de almacenamiento real, la capa de emulación de la tarjeta SD no necesita saber que hay un sistema de archivos diferente.

Montar directamente un archivo en /data/media/0 de Cryptonite no funciona porque la aplicación Cryptonite no tiene acceso a esa carpeta, por lo que el reemplazo script cambia las rutas del punto de montaje y de la carpeta cifrada para que apunten al almacenamiento subyacente de la tarjeta SD.

-1voto

Piotr Puntos 3808

No tengo problemas para montar contenedores con EDS La aplicación funciona correctamente con todas las versiones de Android

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X