UBIFS文件系统(一)

一、简介

UBIFS(Unsorted Block Image File System)无排序区块图像文件系统,用于裸的flash设备,作为jffs2的后继文件系统之一。UBIFS通过UBI子系统处理与MTD设备之间动作。UBIFS文件系统更适合NAND FLASH。

通常UBIFS文件系统的使用涉及到三个子系统:

  • UBIFS文件系统
    • 可以理解为用户层,工作于UBI之上。
    • 比如我们设备中挂载可见的分区,可使用mount命令查看挂载情况。
  • UBI
    • 是MTD设备的高层次表示,一般用户层也可以在这里做开发定制,比如升级,通过ioctl控制MTD设备的读写。
  • MTD子系统
    • 提供nand flash底层访问接口。

这三个子系统的关系如下图所示:

二、准备工作

1、准备目录

这里我们主要是为了了解UBIFS文件系统的结构,首先我们来创建一个目录rootfs,里面包含001目录,002.txt文件内容为test002,002.link为001/002.txt的链接,还包含一个003目录,004.txt文件内容为test004,005.txt文件内容为test005,文件树结构如下所示:

2、UBIFS文件系统生成

使用命令mkfs.ubifs打包为一个UBIFS文件系统映像:

mkfs.ubifs -r rootfs -m 512 -e 128KiB -c 100 -o rootfs.ubifs

常用参数说明:

序号参数说明
1-r rootfs指定根文件系统目录树的路径为rootfs/
2-m 512Nand Flash的最小读写单元,一般为page size,这里设置为512字节
3-e 128KiB逻辑擦除块(LEB)的大小,这里设置为128KB
4-c 100逻辑擦除块(LEB)的个数,与分区大小有关,这里设置为100个
5-o rootfs.ubifs输出的根文件系统文件为rootfs.ubifs

三、UBIFS文件系统结构分析

1、整体分析

通过本站的固件分析工具可以分析内容:

可以知晓rootfs.ubifs文件分为几大块:

序号偏移说明
10x00000-0x20000superblock node
20x20000-0x40000master node
30x40000-0x1A0000master node

2、基础定义

根据源码,可以得到一些基础定义。

节点类型(node type):

序号节点类型
10x00inode node
20x01data node
30x02directory entry node
40x03extended attribute node
50x04truncation node
60x05padding node
70x06superblock node
80x07master node
90x08LEB reference node
100x09index node
110x0Acommit start node
120x0Borphan node
130x0Ccount of supported node types

压缩方式(default_compr):

序号压缩方式
10x00
20x01LZO
30x02ZLIB

2、superblock node分析

使用hexdump查看生成的rootfs.ubifs文件的0-0x1FFFF字节内容:

00000000  31 18 10 06 2d d5 ad 8b  1b 00 00 00 00 00 00 00  |1...-...........|
00000010  00 10 00 00 06 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 02 00 00 00 00 02 00  0d 00 00 00 64 00 00 00  |............d...|
00000030  00 00 16 00 00 00 00 00  04 00 00 00 02 00 00 00  |................|
00000040  01 00 00 00 01 00 00 00  08 00 00 00 00 01 00 00  |................|
00000050  04 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
00000060  00 00 00 00 00 00 00 00  00 ca 9a 3b 1d 06 68 06  |...........;..h.|
00000070  bd 98 44 84 a0 fc f5 b0  b3 43 0f 76 00 00 00 00  |..D......C.v....|
00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00001000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00020000  

通过分析源码(struct ubifs_sb_node),并结合文件,分析结构如下:

序号偏移说明
10x00-0x03UBIFS标志,值为0x06101831
20x04-0x07CRC,值为0x8BADD52D
30x08-0x0Fsequence number,值为0x1B
40x10-0x13块长度,值为0x100
50x14node type,值为0x06,表示superblock node
60x15node group type,值为0x00
70x16-0x17填充值,值为0x0000,前0x18字节为ubifs_ch结构体
80x18-0x19填充值,值为0x0000
90x1Akey的hash类型,值为0x00
100x1Bkey的格式
110x1C-0x1Fflags
120x20-0x23最小I/O单元大小,值为0x100字节(512B)
130x24-0x27逻辑擦除块(LEB)的大小,值为0x20000字节(128KB)
140x28-0x2B逻辑擦除块(LEB)的个数,值为0x0D个(13)
150x2C-0x2F逻辑擦除块(LEB)的最大个数,值为0x64个(100)
160x30-0x37buds最大数,值为0x1600000个
170x38-0x3B逻辑擦除块(LEB)的日志大小,值为0x04字节
180x3C-0x3F用于lprops table的逻辑擦除块(LEB)的个数,值为0x02
190x40-0x43用于recording orphans的逻辑擦除块(LEB)的个数,值为0x01
200x44-0x47journal heads的个数,值为0x01
210x48-0x4Btree fanout,值为0x08
220x4C-0x4F在LPT's save table的LEB的个数,值为0x100
230x50-0x53UBIFS格式化版本,值为0x04
240x54-0x55默认压缩方式(default_compr),值为0x01,表示LZO压缩方式
250x56-0x57填充值,值为0x0000
260x58-0x5B保留池 UID,值为0x00000000
270x5C-0x5F保留池 GID,值为0x00000000
280x60-0x67保留池大小,值为0
290x68-0x6B时间粒度,值为0x3B9ACA00 (1,000,000,000)ns
300x6C-0x7BUUID,值为1D066806BD984484A0FCF5B0B3430F76
310x7C-0x7FUBIFS R/O compatibility版本,值为0
320x80-0xFFF填充值,值为0

3、master node分析

使用hexdump查看生成的rootfs.ubifs文件的0x20000-0x3FFFF字节内容:

00020000  31 18 10 06 98 0d 17 eb  1c 00 00 00 00 00 00 00  |1...............|
00020010  00 02 00 00 07 00 00 00  46 00 00 00 00 00 00 00  |........F.......|
00020020  00 00 00 00 00 00 00 00  02 00 00 00 03 00 00 00  |................|
00020030  0c 00 00 00 80 01 00 00  44 00 00 00 0b 00 00 00  |........D.......|
00020040  0c 00 00 00 00 02 00 00  c8 01 00 00 00 00 00 00  |................|
00020050  00 f6 05 00 00 00 00 00  98 01 00 00 00 00 00 00  |................|
00020060  a0 06 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00020070  00 24 00 00 00 00 00 00  07 00 00 00 2a 00 00 00  |.$..........*...|
00020080  07 00 00 00 00 02 00 00  07 00 00 00 36 00 00 00  |............6...|
00020090  00 00 00 00 00 00 00 00  0a 00 00 00 01 00 00 00  |................|
000200a0  01 00 00 00 0d 00 00 00  00 00 00 00 00 00 00 00  |................|
000200b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00020200  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00040000

通过分析源码(struct ubifs_mst_node),并结合文件,分析结构如下:

序号偏移说明
10x20000-0x20003UBIFS标志,值为0x06101831
20x20004-0x20007CRC,值为0xEB170D98
30x20008-0x2000Fsequence number,值为0x1C
40x20010-0x20013块长度,值为0x200
50x20014node type,值为0x06,表示master node
60x20015node group type,值为0x00
70x20016-0x20017填充值,值为0x0000,前0x18字节为ubifs_ch结构体
80x20018-0x2001F索引中的最高索引节点号(highest_inum),值为0x46
90x20020-0x20027commit number,值为0
100x20028-0x2002Bvarious flags,值为0x02
110x2002C-0x2002Fstart of the log,值为0x03
120x20030-0x20033根索引节点的LEB编号(root_lnum),值为0x0C
130x20034-0x20037根索引节点的LEB编号的偏移(root_offs),值为0x180
140x20038-0x2003B根索引节点长度(root_len),值为0x44
150x2003C-0x2003F用于垃圾收集的保留LEB(gc_lnum),值为0x0B
160x20040-0x20043索引头的LEB编号(ihead_lnum),值为0x0C
170x20044-0x20047索引头偏移(ihead_offs),值为0x200
180x20048-0x2004F闪存上索引的大小(index_size),值为0x1C8
190x20050-0x20057总可用空间(total_free),值为0x5F600字节
200x20058-0x2005F总垃圾空间(total_dirty),值为0x198字节
210x20060-0x20067总已用空间(total_used),值为0x6A0字节
220x20068-0x2006F总无效空间(total_dead),值为0字节
230x20070-0x20077总暗空间(total_dark),值为0x2400字节
240x20078-0x2007BLPT root nnode的LEB个数(total_dark),值为0x07字节
250x2007C-0x2007FLPT root nnode的的偏移,值为0x2A
260x20080-0x20083LPT头的LEB编号,值为0x07
270x20084-0x20087LPT头的LEB编号的偏移,值为0x200
280x20088-0x2008BLPT的lprops表的LEB编号(ltab_lnum),值为0x07
290x2008C-0x2008FLPT的lprops表的LEB编号的偏移(ltab_offs),值为0x36
300x20090-0x20093LPT的save表的LEB编号(lsave_lnum),值为0
310x20094-0x20097LPT的save表的LEB编号的偏移(lsave_offs),值为0
320x20098-0x2009B上次LPT扫描的LEB编号(lscan_lnum),值为0x0A
330x2009C-0x2009F空逻辑擦除块数(empty_lebs),值为0x01
340x20100-0x20103索引逻辑块数(idx_lebs),值为0x01
350x200A4-0x200A7文件系统使用的LEB总数(leb_cnt),值为0x0D

3、其他node分析

使用hexdump查看生成的rootfs.ubifs文件的0x140000-0x1406BF字节内容:

00140000  31 18 10 06 42 0a 25 cb  03 00 00 00 00 00 00 00  |1...B.%.........|
00140010  ab 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
00140020  00 00 00 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
00140030  0b 00 00 00 00 00 00 00  49 11 f7 62 00 00 00 00  |........I..b....|
00140040  47 11 f7 62 00 00 00 00  47 11 f7 62 00 00 00 00  |G..b....G..b....|
00140050  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
00140060  e9 03 00 00 e9 03 00 00  ff a1 00 00 01 00 00 00  |................|
00140070  0b 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00140080  00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
00140090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001400a0  30 30 31 2f 30 30 32 2e  74 78 74 ff ff ff ff ff  |001/002.txt.....|
001400b0  31 18 10 06 e7 03 5a 56  04 00 00 00 00 00 00 00  |1.....ZV........|
001400c0  41 00 00 00 02 00 00 00  01 00 00 00 2d 68 f9 57  |A...........-h.W|
001400d0  00 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
001400e0  00 02 08 00 00 00 00 00  30 30 32 2e 6c 69 6e 6b  |........002.link|
001400f0  00 ff ff ff ff ff ff ff  31 18 10 06 78 e5 c1 c1  |........1...x...|
00140100  06 00 00 00 00 00 00 00  38 00 00 00 01 00 00 00  |........8.......|
00140110  42 00 00 00 00 00 00 20  00 00 00 00 00 00 00 00  |B...... ........|
00140120  08 00 00 00 00 00 00 00  74 65 73 74 30 30 35 0a  |........test005.|
00140130  31 18 10 06 59 8a c3 d3  07 00 00 00 00 00 00 00  |1...Y...........|
00140140  a0 00 00 00 00 00 00 00  42 00 00 00 00 00 00 00  |........B.......|
00140150  00 00 00 00 00 00 00 00  05 00 00 00 00 00 00 00  |................|
00140160  08 00 00 00 00 00 00 00  c4 13 f7 62 00 00 00 00  |...........b....|
00140170  91 11 f7 62 00 00 00 00  91 11 f7 62 00 00 00 00  |...b.......b....|
00140180  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
00140190  e9 03 00 00 e9 03 00 00  b4 81 00 00 01 00 00 00  |................|
001401a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001401b0  00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
001401c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001401d0  31 18 10 06 ee c5 ac 35  08 00 00 00 00 00 00 00  |1......5........|
001401e0  40 00 00 00 02 00 00 00  01 00 00 00 c8 c6 ec 59  |@..............Y|
001401f0  00 00 00 00 00 00 00 00  42 00 00 00 00 00 00 00  |........B.......|
00140200  00 00 07 00 00 00 00 00  30 30 35 2e 74 78 74 00  |........005.txt.|
00140210  31 18 10 06 0b fc 1d 6c  0b 00 00 00 00 00 00 00  |1......l........|
00140220  38 00 00 00 01 00 00 00  44 00 00 00 00 00 00 20  |8.......D...... |
00140230  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00140240  74 65 73 74 30 30 34 0a  31 18 10 06 c1 99 82 e2  |test004.1.......|
00140250  0c 00 00 00 00 00 00 00  a0 00 00 00 00 00 00 00  |................|
00140260  44 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |D...............|
00140270  0a 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00140280  c4 13 f7 62 00 00 00 00  7a 11 f7 62 00 00 00 00  |...b....z..b....|
00140290  7a 11 f7 62 00 00 00 00  00 00 00 00 00 00 00 00  |z..b............|
001402a0  00 00 00 00 01 00 00 00  e9 03 00 00 e9 03 00 00  |................|
001402b0  b4 81 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
001402c0  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
001402d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001402e0  00 00 00 00 00 00 00 00  31 18 10 06 b1 e2 f2 a9  |........1.......|
001402f0  0d 00 00 00 00 00 00 00  40 00 00 00 02 00 00 00  |........@.......|
00140300  43 00 00 00 18 75 c5 59  00 00 00 00 00 00 00 00  |C....u.Y........|
00140310  44 00 00 00 00 00 00 00  00 00 07 00 00 00 00 00  |D...............|
00140320  30 30 34 2e 74 78 74 00  31 18 10 06 14 7e 41 15  |004.txt.1....~A.|
00140330  0e 00 00 00 00 00 00 00  a0 00 00 00 00 00 00 00  |................|
00140340  43 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |C...............|
00140350  09 00 00 00 00 00 00 00  e0 00 00 00 00 00 00 00  |................|
00140360  7b 11 f7 62 00 00 00 00  7a 11 f7 62 00 00 00 00  |{..b....z..b....|
00140370  7a 11 f7 62 00 00 00 00  00 00 00 00 00 00 00 00  |z..b............|
00140380  00 00 00 00 02 00 00 00  e9 03 00 00 e9 03 00 00  |................|
00140390  fd 41 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |.A..............|
001403a0  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
001403b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001403c0  00 00 00 00 00 00 00 00  31 18 10 06 a1 c4 96 26  |........1......&|
001403d0  0f 00 00 00 00 00 00 00  3c 00 00 00 02 00 00 00  |........<.......|
001403e0  01 00 00 00 35 38 11 40  00 00 00 00 00 00 00 00  |....58.@........|
001403f0  43 00 00 00 00 00 00 00  00 01 03 00 00 00 00 00  |C...............|
00140400  30 30 33 00 ff ff ff ff  31 18 10 06 a7 1b 31 64  |003.....1.....1d|
00140410  12 00 00 00 00 00 00 00  38 00 00 00 01 00 00 00  |........8.......|
00140420  46 00 00 00 00 00 00 20  00 00 00 00 00 00 00 00  |F...... ........|
00140430  08 00 00 00 00 00 00 00  74 65 73 74 30 30 32 0a  |........test002.|
00140440  31 18 10 06 47 85 6b 9b  13 00 00 00 00 00 00 00  |1...G.k.........|
00140450  a0 00 00 00 00 00 00 00  46 00 00 00 00 00 00 00  |........F.......|
00140460  00 00 00 00 00 00 00 00  11 00 00 00 00 00 00 00  |................|
00140470  08 00 00 00 00 00 00 00  c4 13 f7 62 00 00 00 00  |...........b....|
00140480  3c 11 f7 62 00 00 00 00  22 11 f7 62 00 00 00 00  |<..b...."..b....|
00140490  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
001404a0  e9 03 00 00 e9 03 00 00  b4 81 00 00 01 00 00 00  |................|
001404b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001404c0  00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
001404d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001404e0  31 18 10 06 b9 32 7a 8e  14 00 00 00 00 00 00 00  |1....2z.........|
001404f0  40 00 00 00 02 00 00 00  45 00 00 00 b8 d1 76 59  |@.......E.....vY|
00140500  00 00 00 00 00 00 00 00  46 00 00 00 00 00 00 00  |........F.......|
00140510  00 00 07 00 00 00 00 00  30 30 32 2e 74 78 74 00  |........002.txt.|
00140520  31 18 10 06 41 f8 91 2f  15 00 00 00 00 00 00 00  |1...A../........|
00140530  a0 00 00 00 00 00 00 00  45 00 00 00 00 00 00 00  |........E.......|
00140540  00 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00140550  e0 00 00 00 00 00 00 00  42 11 f7 62 00 00 00 00  |........B..b....|
00140560  3c 11 f7 62 00 00 00 00  3c 11 f7 62 00 00 00 00  |<..b....<..b....|
00140570  00 00 00 00 00 00 00 00  00 00 00 00 02 00 00 00  |................|
00140580  e9 03 00 00 e9 03 00 00  fd 41 00 00 01 00 00 00  |.........A......|
00140590  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001405a0  00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
001405b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001405c0  31 18 10 06 d4 d1 c3 df  16 00 00 00 00 00 00 00  |1...............|
001405d0  3c 00 00 00 02 00 00 00  01 00 00 00 d5 36 11 40  |<............6.@|
001405e0  00 00 00 00 00 00 00 00  45 00 00 00 00 00 00 00  |........E.......|
001405f0  00 01 03 00 00 00 00 00  30 30 31 00 ff ff ff ff  |........001.....|
00140600  31 18 10 06 92 4a 20 c8  17 00 00 00 00 00 00 00  |1....J .........|
00140610  a0 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00140620  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00140630  a8 01 00 00 00 00 00 00  91 11 f7 62 00 00 00 00  |...........b....|
00140640  91 11 f7 62 00 00 00 00  91 11 f7 62 00 00 00 00  |...b.......b....|
00140650  00 00 00 00 00 00 00 00  00 00 00 00 04 00 00 00  |................|
00140660  e9 03 00 00 e9 03 00 00  fd 41 00 00 01 00 00 00  |.........A......|
00140670  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00140680  00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
00140690  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
001406a0  31 18 10 06 36 6f 6c a4  00 00 00 00 00 00 00 00  |1...6ol.........|
001406b0  1c 00 00 00 05 00 00 00  44 01 00 00              |........D...|
001406bc

这里面包含文件名称、文件内容,包含多组node,这里大概分析一次:

序号偏移node类型备注
10x00140000-0x001400AFinode node (0)文件路径 001/002.txt
20x001400B0-0x001400F7directory entry node(2)链接路径 002.link
30x001400F8-0x0014012Fdata node(1)文件内容 test005
40x00140130-0x001401CFinode node(0)
50x001401E0-0x0014020Fdirectory entry node(2)文件路径 005.txt
60x00140210-0x00140247data node(1)文件内容 test004
70x00140248-0x001402e7inode node(0)
80x001402e8-0x00140327directory entry node(2)文件路径 004.txt
90x00140328-0x001403C7inode node(0)
100x001403C8-0x00140407directory entry node(2)目录路径 003
110x00140408-0x0014043Fdata node(1)文件内容 test002
120x00140440-0x001404DFinode node(0)
130x001404E0-0x0014051Fdirectory entry node(2)文件路径 002.txt
140x00140520-0x001405BFinode node(0)
150x001405C0-0x001405FFdirectory entry node(2)目录路径 001
160x00140600-0x0014069Finode node(0)
170x001406A0-0x001406BBpadding node(5)填充

下面,我们挑选比较多的几个node类型进行分析。

(1)inode node分析

提取0x00140000-0x001400AF的inode node数据

00000000  31 18 10 06 42 0a 25 cb  03 00 00 00 00 00 00 00  |1...B.%.........|
00000010  ab 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
00000020  00 00 00 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
00000030  0b 00 00 00 00 00 00 00  49 11 f7 62 00 00 00 00  |........I..b....|
00000040  47 11 f7 62 00 00 00 00  47 11 f7 62 00 00 00 00  |G..b....G..b....|
00000050  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
00000060  e9 03 00 00 e9 03 00 00  ff a1 00 00 01 00 00 00  |................|
00000070  0b 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000080  00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
00000090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000a0  30 30 31 2f 30 30 32 2e  74 78 74 ff ff ff ff ff  |001/002.txt.....|

通过分析源码(struct ubifs_ino_node),并结合文件,分析结构如下:

序号偏移说明
10x00-0x03UBIFS标志,值为0x06101831
20x04-0x07CRC,值为0xCB250A42
30x08-0x0Fsequence number,值为0x03
40x10-0x13块长度,值为0xAB
50x14node type,值为0x00,表示inode node
60x15node group type,值为0x00
70x16-0x17填充值,值为0x0000,前0x18字节为ubifs_ch结构体
80x18-0x27node key,值为0x41
90x28-0x2Fsequence number,值为0x02
100x30-0x37inode size,值为0x0B
110x38-0x3Faccess time,值为0x62F71149
120x40-0x47creation time,值为0x62F71147
130x48-0x4Fmodification time,值为0x62F71147
140x50-0x53access time(ns),值为0
150x54-0x57creation time(ns),值为0
160x58-0x5Bmodification time(ns),值为0
170x5C-0x5F硬链接个数,值为1
180x60-0x63UID,值为0x3E9(1001)
190x64-0x67GID,值为0x3E9(1001)
200x68-0x6Bmode,值为0xA1FF(八进制120777)
210x6C-0x6Fper-inode flags,值为1
220x70-0x73inode data length,值为0x0B
230x74-0x77xattr_cnt,值为0
240x78-0x7Bxattr_size,值为0
250x7C-0x7Fpadding1,值为0
260x80-0x83xattr_names,值为0
270x84-0x85compr_type,值为0x01,表示LZO压缩方式
280x86-0x9Fpadding2,值为0
290x86-0x9Fdata,字符串为001/002.txt

最后以0xFF填充,8字节对齐。

(2)directory entry node分析

提取0x001400B0-0x001400F7的directory entry node数据:

00000000  31 18 10 06 e7 03 5a 56  04 00 00 00 00 00 00 00  |1.....ZV........|
00000010  41 00 00 00 02 00 00 00  01 00 00 00 2d 68 f9 57  |A...........-h.W|
00000020  00 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
00000030  00 02 08 00 00 00 00 00  30 30 32 2e 6c 69 6e 6b  |........002.link|
00000040  00 ff ff ff ff ff ff ff                           |........|
00000048

通过分析源码(struct ubifs_dent_node),并结合文件,分析结构如下:

序号偏移说明
10x00-0x03UBIFS标志,值为0x06101831
20x04-0x07CRC,值为0x565A03E7
30x08-0x0Fsequence number,值为0x04
40x10-0x13块长度,值为0x41
50x14node type,值为0x02,表示directory entry node
60x15node group type,值为0x00
70x16-0x17填充值,值为0x0000,前0x18字节为ubifs_ch结构体
80x18-0x27node key,值为0x000000000000000057F9682D00000001
90x28-0x2Ftarget inode number,值为0x41
100x30padding1,值为0
110x31type of the target inode,值为0x02
120x32-0x33name length,值为0x08
130x34-0x37padding2,值为0
140x38-0x40name,字符串为002.link,以0x00结尾

最后以0xFF填充,8字节对齐。

(3)data node分析

提取0x001400F8-0x0014012F的data node数据

00000000  31 18 10 06 78 e5 c1 c1  06 00 00 00 00 00 00 00  |1...x...........|
00000010  38 00 00 00 01 00 00 00  42 00 00 00 00 00 00 20  |8.......B...... |
00000020  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00000030  74 65 73 74 30 30 35 0a                           |test005.|
00000038

通过分析源码(struct ubifs_data_node),并结合文件,分析结构如下:

序号偏移说明
10x00-0x03UBIFS标志,值为0x06101831
20x04-0x07CRC,值为0xC1C1E578
30x08-0x0Fsequence number,值为0x06
40x10-0x13块长度,值为0x38
50x14node type,值为0x01,表示data node
60x15node group type,值为0x00
70x16-0x17填充值,值为0x0000,前0x18字节为ubifs_ch结构体
80x18-0x27node key,值为0x000000000000000020000000000042
90x28-0x2Buncompressed data size,值为0x08
100x2C-0x2Dcompr_type,值为0x00,表示未压缩
110x2E-0x2Fpadding,值为0x00
120x30-0x37data,内容为test005

参考链接:

https://blog.csdn.net/gy794627991/article/details/120056000

https://blog.csdn.net/jackone12347/article/details/121967478

https://blog.csdn.net/Dongsheng_Yang/article/details/47661733

https://blog.csdn.net/qq_24835087/article/details/125336305

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注