QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 625|回复: 1

用一个最简单的程序作什么

[复制链接]
发表于 2003-3-12 13:59:31 | 显示全部楼层 |阅读模式
下面是一个最普通的小程序,我想看看我的USB盘上的文件系统是什么格式(可以看见长文件名),但在属性中看不见是fat16还是32,所以就把引导扇读进来:

#include <stdio.h>
#include <string.h>

int main()
{
        FILE *sda,*f;
        sda=NULL;
        f=NULL;
       
        //你可以读写任意数目的byte
        long total=1024*64;
        long pointer=0;

        //初始化缓冲区
        char buff[256];
        memset(buff,0,256);

        if(NULL==(sda=fopen("/dev/sda","rb")))
        {
                printf("cant open the sda file\n");
                return 1;
        }

        if(NULL==(f=fopen("/home/test2/mysda.dat","wb")))
        {
                printf("can't open the mysda.dat file\n");
                fclose(f);
                return 1;
        }

        printf("now,both file were opened\n");
        printf("the FILE pointer is %d and %d\n",sda,f);

        while(pointer<=total)
        {
                if(256!=fread(buff,1,256,sda))
                {
                        printf("read error...%d..now leaving\n",point);
                        exit(1);
                }
                if(256!=fwrite(buff,1,256,f))
                {
                        printf("write error ..%d..now leaving\n",point);
                        exit(1);
                }
                pointer+=256;
        }


        return 0;
}


然后用KHexEdit打开,前面的512个byte,说明是fat16的格式,并且有NTLDR is missing ........ 云云,fat16不支持长文件名,但是我在linux和2000下都可以看见完整的长文件名,估计和95下的fat16有区别.

简单的文件读写还可以用来对付一些版权保护的光盘(可能只能拷贝文件的一部分)
 楼主| 发表于 2003-3-12 14:37:04 | 显示全部楼层
请版主删除
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 08:46 , Processed in 0.036136 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表