¿Es posible falsificar un sistema de archivos microSD FAT32?

4

Tengo algunos datos de salida de hardware a una MicroSD. No puedo controlar este proceso y, en lugar de enviar datos a una MicroSD, quiero algún tipo de spoofer que pueda insertar en la ranura MicroSD que permite que los datos enviados a la microSD sean interceptados por, por ejemplo, un microcontrolador, que en a su vez, lo guarda en su propio microSD.

He encontrado esta pieza de hardware, que creo que es algo en la dirección de la solución que estoy buscando para. El problema ahora es con la suplantación de identidad del sistema de archivos de MicroSD, por lo que el hardware cree que tiene una microSD regular insertada.

¿Hasta qué punto es esto posible? Me parece bastante sencillo, pero estoy seguro de que no he previsto muchos problemas. Mi idea es que acabo de conectar la ruptura a los pines de una frambuesa y acabar de una vez. Estoy bastante seguro de que el hardware primero busca un almacenamiento formateado válido, pero para eso es la ranura de la tarjeta adicional. Efectivamente estoy duplicando los datos de esta manera.

No he encontrado mucha información en Internet sobre este tema.

Pregunta similar: enlace

    
pregunta Zimano

3 respuestas

3

Intentar emular completamente el comportamiento de una tarjeta microSD de manera que funcione con todos los dispositivos que podrían intentar usarla puede ser difícil sin algunos circuitos especializados y mucho trabajo. Por otro lado, muchos dispositivos que utilizan tarjetas microSD no usan todas sus funciones y se comunican a una velocidad significativamente inferior a la velocidad máxima permitida para tarjetas SD. En consecuencia, puede ser posible usar un analizador de datos para ver qué comandos y funciones de la tarjeta SD son realmente utilizados por la aplicación de interés y centrarse en emularlos.

Hay dos enfoques que uno podría tomar para la tarea de capturar resultados:

  • Tenga un dispositivo que se comporte como una tarjeta microSD y permita que se almacenen archivos arbitrarios en él, y luego tenga un proceso paralelo que examine el contenido de la tarjeta.

  • Tenga un dispositivo que se comporte como una tarjeta microSD que tiene un patrón fijo de datos almacenados en lugares fijos, y confíe en el hecho de que un dispositivo en particular que intenta escribir datos lo hará de manera predecible. No he visto este enfoque utilizado para microSD, pero openSDA lo usa para dispositivos de almacenamiento masivo USB, y creo que el mismo principio podría funcionar con microSD. Por ejemplo, si un dispositivo siempre escribe un archivo escribiendo una entrada de directorio de tamaño cero, luego escribe en clústeres disponibles en orden numérico y, finalmente, escribe la entrada de directorio con un tamaño actualizado, un dispositivo que ve una escritura en una entrada de directorio seguida Al escribir algunos grupos de datos seguidos de otra escritura en el directorio, se podría interpretar que la secuencia de eventos crea un archivo del tamaño especificado que contiene los datos especificados.

Si uno no podía permitirse mucho almacenamiento flash, el segundo enfoque podría permitir que uno se las arreglara con menos que el primero, especialmente si uno quería extraer solo parte de la información que se había escrito en los archivos. El primer enfoque requeriría más almacenamiento masivo, pero la ubicación de los nuevos datos en el disco variaría de acuerdo con la ubicación de los datos escritos previamente. Por el contrario, es posible que el software que escribe en el disco se comporte de manera consistente y predecible si los resultados de intentar leer el disco nunca cambian. Si la primera entrada del directorio siempre se lee en blanco, y los primeros 20 clústeres siempre se leen como disponibles, un intento de escribir un archivo siempre puede leer la primera entrada del directorio, verifique que esté disponible y usarlo, luego verifique la disponibilidad de la primera 20 grupos, ver que estén disponibles y usarlos. Si el firmware del dispositivo con el que está interactuando no es probable que cambie, tal comportamiento podría simplificar la tarea de capturar datos de él.

    
respondido por el supercat
2
  

Estoy intentando extraer datos de un dispositivo de hardware sobre el que no tengo control, ni ninguna otra solución de interfaz, por eso estoy tan limitado en mis opciones de obtener datos.

Al construir este dispositivo interceptor (lo que puede resultar un esfuerzo significativo), puede estar molesto con los resultados que ve.

  • es una gran pregunta si encontrará más datos de los que se están escribiendo en la tarjeta. El dispositivo puede realizar algún intercambio o registro de datos intermedios. ¿Le ayudará en su tarea principal?
  • La tarjeta SD es en realidad un dispositivo extraíble, ¿por qué no realizar acciones específicas (requeridas) en el dispositivo principal y luego analizar los resultados de sus acciones tomando una imagen de la tarjeta (por ejemplo, usando Disk Imager) y analizándola?
  • el dispositivo de emulación de tarjeta SD que cree crear será un dispositivo esclavo, no podrá dar comandos al dispositivo principal, por lo que no le dará más control sobre el dispositivo principal.

Por lo tanto, si bien parece ser un buen desafío, su uso es cuestionable, a menos que esté buscando algo específico: si es el caso, comparta y podremos ayudarlo / aconsejarlo más.

    
respondido por el Anonymous
1

Propondré dos soluciones tontas, con el objetivo de simplificarle la vida al no tener que implementar un emulador de FAT.

Solución 1: deje que escriba en una tarjeta micro-SD.

Inserte un MUX en las líneas de señal que permite conectar la tarjeta SD a otra micro. De vez en cuando, haga que el micro apague su dispositivo (o simule una extracción de la tarjeta SD), luego cambie el MUX, tome posesión de las líneas de señal, lea los datos y devuelva el control de la tarjeta SD al registrador .

Si su registrador tiene un patrón de escritura predecible (como una vez por minuto), es probable que pueda leer entre las escrituras.

Solución 2: .... Deje que escriba en una tarjeta micro-SD.

Bueno, está bien, uno virtual.

Coge un SBC de Linux con un puerto externo que pueda emular una tarjeta micro SD, como un SPI cuádruple o algo así.

Programe esto para responder a comandos SD básicos como lectura, escritura, etc. Ahora tiene un emulador de tarjeta SD.

Redirige las lecturas y las escrituras a un archivo en el sistema de archivos de Linux SBC, que será una imagen de tu tarjeta SD virtual.

Y entonces ... tada! Móntalo. Contiene una imagen FAT. Tienes linux Montalo solo para leer, y lee los archivos.

    
respondido por el peufeu

Lea otras preguntas en las etiquetas