当前位置:  技术问答>linux和unix

linux 下面向磁盘逻辑结构的信息隐藏系统

    来源: 互联网  发布时间:2016-09-05

    本文导语:  这是课程设计题目,已经看了两周相关的东西,现在还是没有一点思路,各位帮忙给点提示吧 | 这个东西你要参考linux下的ext2文件系统和ext3文件系统,明白清楚ext2的具体文件的存储方法。 ext...

这是课程设计题目,已经看了两周相关的东西,现在还是没有一点思路,各位帮忙给点提示吧

|
这个东西你要参考linux下的ext2文件系统和ext3文件系统,明白清楚ext2的具体文件的存储方法。
ext2文件系统的数据块大小一般为 1024B、2048B 或 4096B
    ext2文件系统采用的索引节点(inode):索引节点采用了多重索引结构,主要包括12个直接指针和3个间接指针。直接指针包含12个直接指针块,他们直接指向包含文件数据的数据块,紧接在后面的3个间接指针是为了适应文件的大小变化而设计的。
    假设数据块大小为1024B ,利用12个直接指针,能保存最大为12KB的文件,当文件超过12KB时,则要利用单级间接指针,该指针指向的数据块保存有一组数据块指针,这些指针依次指向包含有实际数据的数据块,如果每个指针占用4B,则每个单级指针数据块可保存 1024/4=256 个数据指针,因此利用直接指针和单级间接指针可保存 1024*12+1024*256=268 KB的文件。当文件超过268KB时,再利用二级间接指针,直到使用三级间接指针。
        利用直接指针、单级间接指针、二级间接指针、三级间接指针可保存的最大文件大小为:
            1024*12+1024*256+1024*256*256+1024*256*256*256=16843020 KB,约 16GB
        若数据块大小为2048B,指针占4B,则最大文件大小为: 2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792 KB 约 268GB
        若数据块大小为4096B,指针占4B,则最大文件大小为: 4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744 KB ,约 4TB
    注: 命令 tune2fs -l /dev/sda5  可查看文件系统
    ext2文件系统最大文件名长度: 255个字符
    ext2文件系统的缺点:
    ext2在写入文件内容的同时并没有同时写入文件meta-data,其工作顺序是先写入文件的内容,然后等空闲时候才写入文件的meta-data。若发生意外,则文件系统就会处于不一致状态。
        在重新启动系统的时候,linux会启动 fsk ( file system check) 的程式,扫描整个文件系统并试图修复,但不提供确保。
 二. EXT2和EXT3
EXT2是linux上标准的文件系统,EXT3是在EXT2基础上增加日志形成的,其思想还是可以追溯到早期UNIX家族发展的基于超级块和inode的经典概念。/dev/sda#n表示/dev/sda硬盘上的第#n个分区,如果一个分区备格式化为ext2或ext3文件系统,那么整个分区的布局如图〖二〗所示:

 
图二:EXT2文件系统分区结构
分区上的扇区是从0开始编号的,每个扇区512bytes,一个块(block)大小一般是1k、2k、3k和4k,具体大小可在创建文件系统时指定,如果不指定块大小那么会根据分区的大小自动相应选择一个。分区开始的1024bytes存放引导程序boot,接下来的1024bytes存放超级块super block,组描述字group descriptors起始于一个新块,并单独占用一个块空间,之后的所有块被组织成块组,块组才是真正存放文件的场所。超级块含有整个文件系统的一些全局参数,如:卷名、全局唯一标识符、状态、块大小、总块数、每组inode数,总i节点数、每组块数等等,super block在文件mount时被读入内存,直到umount时被释放,由于超级块对于文件系统来说至关重要,所以超级块一般在第1、3、5、7和9组的首块中存有副本。
一个块组描述字占用32个字节,其中三个主要指针分别指到这个块组的i节点表、i节点位图和块位图。块组的设计是为了拉近inode和它的数据块的距离,这样就可以提高磁盘存取性能,一个块组的具体结构示意图见图二右边部分。
inode是EXT2文件系统的精华,一个inode对应一个文件,inode编号是全局性的,从1开始,描述参考图〖三〗。
 
inode中存放文件的一些重要属性,如权限、文件大小、访问时间、修改时间、创建时间、文件属主ID、组ID、块数等。Inode包含15个指针,前12个直接指向数据块,后三个依次是一次间接、二次间接和三次间接指向数据块。
文件系统的目录不同于普通文件的结构,是一种固定格式的文件,里面的每一个条目代表目录中的一个文件,示意图见图〖四〗。
 
图〖四〗:目录条目示意图
三.实现方法
每个文件的创建都会有一个i节点,它包括该文件的所有信息。要想在载体文件中隐藏信息,必须要清楚文件的属性信息,即必须清楚i节点的内容和怎样操作i节点。
模块功能如下:文件存储过程,操作i节点,信息隐藏,信息提取。
我们的隐藏提取信息的想法是:由于要隐藏的信息不是很大,假设是小于1kb的,我们可以先将一个文件写入磁盘中,然后通过系统调用调出该文件的i节点信息,然后申请一个空盘块,令i节点的指针指向该盘块,写入要隐藏的信息,保持原来的块数不变,那么当读取该文件时,不会读到隐藏信息的内容,当需要提取隐藏信息时,我们再通过调出该文件的i节点信息,将其属性快数加一,然后写入,当重新读该文件时,便可以读到相应的隐藏信息内容。
 Inode.c程序主要设计文件系统i节点信息的访问和管理。
操作i节点:定义一个iget()函数,功能是从设备上取指定节点号的i节点,处理过程是扫描整个i节点表,来找相应的i节点,最后返回找到的i节点指针。
read_inode()函数:主要功能是读取指定i节点的信息:从设备上读取含有指定i节点信息的i节点盘块,然后复制到指定的i节点结构中。为了确定i节点所在的设备逻辑块号,必须首先读取相应设备上的超级块,以获取用于计算逻辑块号的每块i节点数信息。在计算出i节点所在的逻辑块号后,就把逻辑块读入一缓冲块中,然后把缓冲块中相应位置处的i节点内容复制到参数指定的位置处。
     Bmap()函数:主要功能是:文件数据块映射到盘块的处理操作,该函数把指定的文件数据块block对应到设备上逻辑块上,并返回逻辑块号。如果自己指定指针置位盘块,则在设备上对应逻辑块不存在时就申请新磁盘块,返回文件数据块block对应在设备上的逻辑块号(盘块号)。

    
 
 

您可能感兴趣的文章:

  • 在linux中如何作类似磁盘清理,腾出磁盘空间的维护?谢谢!
  • 我的linux 的根目录/的磁盘空间占满了,想扩充挂在根目录磁盘空间的容量,要怎么做啊?
  • Linux下如何对一个分区追加磁盘空间
  • 请问如何才能将LINUX的分区写到磁盘分区表里!
  • Linux中的磁盘配额!!!
  • linux下怎么看磁盘io消耗
  • 磁盘加密工具 ScramDisk 4 Linux
  • 如何增加分给Linux的磁盘空间
  • linux两块磁盘双系统
  • linux 如何取得磁盘信息?
  • Linux 磁盘分区软件 QTParted
  • 在linux下怎么格式化磁盘?
  • 如何写linux下的磁盘阵列管理的软件?
  • Linux下是否存在磁盘碎片问题和内存碎片问题?
  • Linux 磁盘分析工具 Disk Usage Analyser
  • Redhat linux 9下如何查看磁盘剩余空间?
  • linux下有什么命令可以得到磁盘列表数啊?
  • linux下如何hook磁盘操作
  • linux服务器,大磁盘挂载分区,不定期出现“只读”现象
  • Linux磁盘加密工具 cryptmount
  • linux 无法分逻辑盘
  • 请问Linux有没有主分区和逻辑分区这个么一个说法呢!一般比较主流的应该怎么分呢?
  • 在linux下如何挂载windows的vfat逻辑分区啊 ??
  • linux 如何查看逻辑卷
  • linux内存管理虚拟地址 逻辑地址 交换分区(swp)
  • linux 下对strlen做逻辑判断的问题.
  • Windows下的FAt32格式的逻辑分区为什么在Linux 下不能识别!!
  • 谁知道在分区的时候linux swap是作为主分区还是逻辑分区,linux ext2呢??急!急!急!
  • 求教linux下 主分区和逻辑分区之间如何转换
  • 请问,如果我把现在的win2000的一个逻辑分区删了,用这个空间建一个swap和/来装linux,且把lilo装到mbr上,lilo能正常引导这两个OS么?
  • 我xp系统上原本有1个主分和1个扩展分区,装linux我从逻辑分区F盘里面划出50G出来。把50G分成 20+20,
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下的编程主旨思想是在面向过程还是面向对象的?谢谢!!
  • 大家有谁听说过面向Linux的PlayStation平台?
  • 讨论一下Linux中的面向对象
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • HTML教程 iis7站长之家
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3