3 votos

¿Es posible falsificar un sistema de archivos microSD FAT32?

Tengo un hardware que envía datos a un MicroSD. No puedo controlar este proceso y en lugar de que éste envíe datos a una MicroSD, quiero algún tipo de falsificador que pueda insertar en la ranura de la MicroSD y que permita que los datos enviados a la microSD sean interceptados por, digamos, un microcontrolador, que a su vez los guarde en su propio microSD.

He encontrado este pieza de hardware, que siento que está en cierta forma en la dirección de la solución que estoy buscando. El problema ahora es que el sistema de archivos de los microSDs es falso, así que el hardware piensa que tiene un microSD normal insertado.

¿Hasta qué punto es posible? Me parece bastante sencillo, pero estoy seguro de que no he previsto muchos problemas. Mi idea es que conecte la fuga a los alfileres de una frambuesa y terminar con esto. Estoy seguro de que el hardware comprueba primero si hay un almacenamiento formateado válido, pero para eso está la ranura extra para tarjetas. Efectivamente, estoy duplicando los datos de esta manera.

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

Pregunta similar: http://stackoverflow.com/questions/13699203/sd-card-emulator

3voto

Alex Andronov Puntos 178

Intentar emular completamente el comportamiento de una tarjeta microSD de manera que funcione con todos los dispositivos que puedan intentar utilizarla es propenso a ser difícil sin algunos circuitos especializados y mucho trabajo. Por otro lado, muchos dispositivos que utilizan tarjetas microSD no utilizan todas sus características y se comunican a una velocidad significativamente inferior a la velocidad máxima permitida para las tarjetas SD. Por consiguiente, puede ser posible utilizar un analizador de datos para ver qué comandos y características 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 la salida:

  • Tener un dispositivo que se comporte como una tarjeta microSD y permita almacenar archivos arbitrarios en ella, y luego tener algún proceso paralelo que examine el contenido de la tarjeta.

  • Tener un dispositivo que se comporta como una tarjeta microSD que tiene un patrón fijo de datos almacenados en lugares fijos, y confiar en el hecho de que un dispositivo particular que trata de escribir datos lo hará de manera predecible. No he visto que este enfoque se utilice para la microSD, pero openSDA lo utiliza para los dispositivos de almacenamiento masivo USB, y creo que el mismo principio podría funcionar con la microSD. Por ejemplo, si un dispositivo siempre escribe un archivo escribiendo una entrada de directorio con tamaño cero, luego escribe en los clusters 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 de una escritura de algunos clusters de datos seguida de otra escritura en el directorio podría interpretar esa secuencia de eventos como la creación de un archivo del tamaño especificado que contiene los datos especificados.

Si no se podía permitir mucho almacenamiento flash, el segundo enfoque podría permitir que uno se las arreglara con menos que el primero, especialmente si se quería extraer sólo parte de la información que se había escrito en los archivos. El primer enfoque requeriría más almacenamiento masivo, pero la colocación de los nuevos datos en el disco variaría según la colocación de los datos escritos anteriormente. Por el contrario, es posible que el software que escribe en el disco se comporte de manera absolutamente consistente y predecible si los resultados de tratar de leer el disco nunca cambian. Si la primera entrada del directorio siempre se lee como en blanco, y los primeros 20 clusters siempre se leen como disponibles, un intento de escribir un archivo podría siempre leer la primera entrada del directorio, ver que está disponible, y utilizarla, luego comprobar la disponibilidad de los primeros 20 clusters, ver que están disponibles, y utilizarlos. Si no es probable que cambie el firmware del dispositivo con el que está interactuando, este comportamiento podría simplificar la tarea de capturar datos de él.

2voto

krum85 Puntos 306

Intento 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 de él.

Construir este dispositivo interceptor (que puede resultar ser un esfuerzo significativo), puede molestarte con los resultados que veas.

  • es una gran pregunta si encontrarás más datos de los que se están escribiendo en la tarjeta. El dispositivo puede realizar algún intercambio o registro intermedio de datos, ¿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 la imagen de la tarjeta (por ejemplo, usando Disk Imager) y analizándola?
  • el dispositivo de emulación de la tarjeta SD que piensas crear será un dispositivo esclavo, no podrá dar órdenes al dispositivo principal, por lo que no te dará más control sobre el dispositivo principal.

Por lo tanto, aunque suena como un buen reto, la utilidad del mismo es cuestionable, a menos que usted esté buscando algo específico - si es el caso, comparta y tal vez podamos ayudarle/aconsejarle más.

1voto

ShaneB Puntos 1384

Propondré dos soluciones tontas, con el objetivo de hacerte la vida mucho más sencilla, al no tener que implementar un emulador de FAT.

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

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

Si tu registrador tiene un patrón de escritura predecible (como una vez cada minuto) entonces probablemente puedes leer a escondidas entre los escritos.

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

Bueno, vale, uno virtual.

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

Programe esto para responder a los comandos básicos de SD como leer, escribir, etc. Ahora tienes un emulador de tarjetas SD.

Redirect lee y escribe en un archivo en el sistema de archivos de la SBC de Linux, que será una imagen de su tarjeta SD virtual.

Y luego... ¡tada! Móntalo. Contiene una imagen de FAT. Tienes linux. Móntalo sólo para lectura, y lee los archivos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia 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