A method and software program for recovering data from corrupted flash
media. In one aspect, the method employs a low-level access scheme that
enables data to be recovered when high-level interfaces, such as file
systems, are damaged. The type of flash media is determined, and a
corresponding access scheme is employed. Depending on the type of damage
to the media, a physical-to-logical table may be built and employed to
sequentially access the flash media in search of indicia from which
selectable file-types can be identified, or the media may be accessed
using normal operating system commands. Once the file indicia are found,
the location of corresponding file data is identified, whereupon the file
data are read and stored. The software program employs an application
program interface (API) comprising one or more sets of pass-through
commands to enable low-level access to the flash media and to build the
physical-to-logical table.