FAT32-Reader
所属分类:磁盘编程
开发工具:C
文件大小:1713KB
下载次数:0
上传日期:2023-03-22 07:39:04
上 传 者:
sh-1993
说明: FAT32读卡器,,
(FAT32-Reader,,)
文件列表:
.clang-format (248, 2023-03-22)
.gdbinit (26, 2023-03-22)
CMakeLists.txt (270, 2023-03-22)
LICENSE (35149, 2023-03-22)
cmake (0, 2023-03-22)
cmake\FindCheck.cmake (2080, 2023-03-22)
doc (0, 2023-03-22)
doc\asset (0, 2023-03-22)
doc\asset\functions.png (34369, 2023-03-22)
doc\asset\linux (0, 2023-03-22)
doc\asset\linux\阅读1.png (92071, 2023-03-22)
doc\asset\linux\阅读2.png (173863, 2023-03-22)
doc\asset\linux\阅读3.png (234788, 2023-03-22)
doc\asset\linux\阅读4.png (35698, 2023-03-22)
doc\asset\linux\阅读5.png (24410, 2023-03-22)
doc\asset\ppt_pbp.png (215315, 2023-03-22)
doc\asset\run (0, 2023-03-22)
doc\asset\run\clusters.png (33915, 2023-03-22)
doc\asset\run\cmp.png (69751, 2023-03-22)
doc\asset\run\cwd.png (4580, 2023-03-22)
doc\asset\run\disk.png (14407, 2023-03-22)
doc\asset\run\dump.png (13085, 2023-03-22)
doc\asset\run\runing1.png (43388, 2023-03-22)
doc\asset\types.png (57829, 2023-03-22)
doc\asset\winhex (0, 2023-03-22)
doc\asset\winhex\calc.png (71261, 2023-03-22)
doc\asset\winhex\create_txt.png (4980, 2023-03-22)
doc\asset\winhex\winhex1.png (26739, 2023-03-22)
doc\asset\winhex\winhex10.png (3172, 2023-03-22)
doc\asset\winhex\winhex11.png (2256, 2023-03-22)
doc\asset\winhex\winhex12.png (2943, 2023-03-22)
doc\asset\winhex\winhex13.png (3481, 2023-03-22)
doc\asset\winhex\winhex14.png (10567, 2023-03-22)
... ...
# FAT32-Reader
## 使用说明
## 功能简介
本项目运行在 Linux 环境下。它提供了一个交互窗口。
用户可以通过输入指令,读取一个装载了 FAT32 文件系统的磁盘映像,解析、查看该磁盘的目录结构,或从中导出文件。
## 操作指南
运行后,会看到提示前缀 `[ImagePath:FilePath]$ `。ImagePath 是现在所加载的磁盘文件名,FilePath 是当前所处的文件夹名。
你可以通过输入来与程序交互:
- 输入 `load`,会进入加载磁盘映像的引导
- 输入 `disk`,可以显示 FAT32 文件系统的 DBR 信息
- 输入 `exit`,可以退出程序
- 输入 `cwd`,可以显示完整的当前位置
- 输入 `ls`,可以显示当前位置下的文件和文件夹
- 输入 `dump`,进入导出文件的引导,可以导出一个当前位置下的文件
- 输入 `cd`,进入切换目录的引导
## 实现原理
程序利用 FAT32 文件系统的结构,通过解析二进制文件的方式来实现对文件系统的操作。
## 部分细节
1. 对于中文文件名,在 Linux 中,会被解析为 UTF-8,且 Linux 在将其解析为长文件名时,采用的是直接按字节拆分后高位补 0 的方式。我们使用的也是这种解析方式,而不是 FAT32 标准中提出的 UTF-16。这会导致从 Windows 下创建的 FAT32 映像的中文目录项出现乱码,而 Linux 下创建的 FAT32 映像则可以正常完美解析
2. 在 load 和 dump 要求输入目标本地文件名时,请使用绝对目录
3. dump 可以保证读取出的文件内容与原本内容没有差异,但文件名和新文件的具体权限控制需要用户自己把握。
4. cd 不仅可以输入绝对路径和相对路径,也支持使用 .. 和 .
5. 文件操作时产生的 error number 可以使用 `errno` 指令查看具体含义(需要安装 `errno`)
## 编译
依赖 [libreadline](https://tiswww.case.edu/php/chet/readline/rltop.html)。
Ubuntu 下,可以使用下面的指令安装:
```bash
sudo apt install libreadline-dev
```
编译方式:
```bash
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ../
make && make install
```
编译后在 `build/bin/` 下得到 `fat32-reader`
## 测试
单元测试依赖 [check](https://libcheck.github.io/check/)
Ubuntu 下,可以使用下面的指令安装:
```bash
sudo apt install check libsubunit0
```
测试方法:
```bash
mkdir -p build && cd build
cmake ../
make fat_test && ctest -V
```
## 后续计划
本项目为小组的软件安全实验成品。后续可能会考虑进行命令行、交互等的优化,或考虑添加对 UTF-16 的编码支持。
如果在使用过程中发现了 Bug,欢迎在 issue 中提出,感谢大家的支持 QwQ。
近期下载者:
相关文件:
收藏者: