我记不住的那些命令-xxdod

背景:

这里记录一下具体的xxd和od命令参数和使用方法,我想我肯定是记不住这些参数的。

零、文件

我们这里有一个示例文件README.txt,内容如下图所示:

一、xxd(查看、编辑二进制文件)

1.  十六进制显示(默认)

我们发现上面的显示,总共由 8 列组成,每一列是2个字节,这一行是16个字节的数据,左侧是相应的地址。

重点:磁盘上的这些十六进制的内容英文字母使用ascii码来显示,例如:'bochs-2.8'   0x626f 6368 732d 322e 38,每一个字母使用一个字节来表示,0x0a代表是换行,两次换行后就是中文,而中文内容使用utf-8编码来表示, 例如:"生成一个硬盘"即如下图所示,是使用Python来将这一句话转换为utf-8编码。

综上: xxd查看磁盘上文件的十六进制,英文是ASCII编码,中文是utf-8编码。

2.  二进制显示

-b  以二进制进行显示

我们发现这种是 由 6 列组成,每一列是 1 个字节,这一行是 6个字节的数据,左侧是相应的地址。

问题: 从十六进制看和二进制看,发现每一行的字节数是无法一一对应上的,我们需要修改列数和每列的字节数来保持同一个文件的不同格式的查看。

3. 每行的总字节数(-c),每列的字节数(-g)

我们根据二进制的显示,发现每行是6列,每列是一个字节,所以这里的 -c 6  -g 1  如上图所示。

这样能解决,二进制和十六进制的同时查看且每行数据都放置在了相同行,没发生错行。

-g  每一列显示几个字节,默认是2个字节

-c   每一行显示的总共的字节数

如下图所示,一行是8个字节,每一列时候2个字节,总共是4列数据。

每一行是8个字节,每一列是1个字节,总共是8列数据,如下图所示:

4. 长度(-l),偏移量(-s)

从0x00000010开始,长度为32个字节

我们从完整文件中取出了第2行和第3行数据。

-s (+/-)value  偏移量,如果是正值则是从开始计算,如果是负值则是从末尾进行计算

5. 朴素方式显示(-p) plane

没有任何行号标记以及解码,直接就是显示十六进制的值。

6. 大写(-u)

将十六进制的字母大写

7. 恢复(-r)
7.1  部分修改

我们看到原始内容是60MB,下面的操作修改二进制将60MB改成120MB

我们发现60MB改成120MB,只需要将 “空格6”变为“12”即可, “空格6”为 0x2036, ASCII码中0x20代表空格,ASCII码中0x36代表6,得到 “12”的ASCII为 0x3132

这里的44:3132,代表在0x44的字节开始,写入0x3132的值。

将README.txt在0x44字节开始,写入0x3132

我们再次查看文件十六进制,发现已经改为了120MB了

创建一个新文件,这个文件在第0x100字节写上A:

我们再次查看 test.txt :

7.2 全部修改

这里我们以MBR二进制文件来编辑,不再使用文本文件来编辑(因为文本文件直接修改就行,无需转换为十六进制修改)。

先查看 mbr.img的十六进制信息

将十六进制信息保存为一个文件dump

xxd mbr.img mbr.dump

vim mbr.dump进行修改,直接修改

注意: 修改左侧的十六进制的ASCII码或者UTF-8码才会生效,而修改右侧的英文或中文则没有效果。

我们将baby改为haha ,   0x62616279 --->>>  0x68616861  ,只改左侧的十六进制码值,右侧的文字不用改动,如下图所示:

将这个文件mbr.dump恢复为新的二进制文件:

xxd -r mbr.dump > newmbr.img 或 xxd -r mbr.dump newmbr.img

我们把这个newmbr.img放到bochs试一下:

将newmbr.bin复制到硬盘文件上,然后启动机器,如下图所示

8.搭配vim使用

我们使用vim打开的二进制文件,然后会看到一些乱码和一些错乱的内容,我们使用:%!xxd 命令来查看二进制文件的十六进制码值的显示。

vim -b binaryfile   // 设置二进制方式来读取和编辑文件,它与 vim binaryfile的区别在于, vim binaryfile会多显示一个最后的换行符,在windows下是 0x0d 0x0a ,在Linux下是0x0a

或者

vim binaryfile  

:set binary 或 :set bin  // 进入到二进制模式

综上:这是两种不同的打开二进制文件的方式。

然后在底部输入 :%!xxd进行编辑即可, %表示操作整个缓冲区,! 表示执行外部的命令

我们这次将 haha改为fafa,0x68616861 --->>> 0x66616661

修改完毕后,底部输入命令 :%!xxd -r 直接进行修改,  或者  :%!xxd -r > newmbr2.img 修改保存到一个新二进制文件中。

完成。

9. 输出为C代码(-i)

将二进制文件直接输出为 C代码

二、od

1. 版本(--version)

--version 显示版本

2. 帮助(--help)

--help  帮助

3. 输出格式(-t)

-t x1   输出十六进制,每一列是一个字节,x代表是十六进制,1代表每列是一个字节

同理 -t x2  输出十六进制,每列是两个字节,这里有一个关键的区别千万要注意,如下图所示:

而 xxd -g 2 mbr.img如下所示:

我们发现xxd的双字节是和右侧的字符按照从左到右的顺序是一一对应,而od的双字节是按照书写的方式进行0x36d8,这里面蕴含着大端和小端的概念。关于这部分知识可以查看 基础知识-大小端

4. 每行的总字节数(-w)

-w 默认是16个字节

5. 长度(-N),偏移量(-j)

-j 字节数,代表偏移

-N 字节数,代表长度

6. 全部(-v)

默认情况是00会被显示"*",它不带有什么意义。如果想全部显示内容,增加-v即可。

7. 大小端(--endian)

--endian  big/little(略)

8. 地址(-A)

默认是以十六进制的地址来显示偏移量,如下图:

我们使用-A d来将左侧的地址变为十进制

三、总结

在Linux下除了xxd和od这两个命令可以查看二进制,还有hexdump命令可以查看,咱们不再这里再次赘述了,使用起来都差不多,用哪一个都行,大家加油,完结。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用代理ip后访问网站仍然被拒该怎么办

目录 前言 一、代理IP被网站封锁 二、代理IP的质量不佳 三、代理设置不正确 总结 前言 在使用代理IP之后仍然被网站拒绝访问可能是由于多种原因引起的。这些原因包括代理IP被网站封锁、代理IP的质量不佳、代理设置不正确等。下面将详细介绍如何解决这些问题。 一、代理I…

代码学习记录16

随想录日记part16 t i m e : time: time: 2024.03.11 主要内容:今天的主要内容是二叉树的第五部分,主要涉及最大二叉树;合并二叉树;二叉搜索树的搜索;验证二叉搜索树。 654.最大二叉…

使用docker-compose部署Redis集群

一、部署三主三从的Redis集群 分别为6个节点建立挂载目录,每个目录下建立数据、配置、日志文件夹。 docker-compose内容如下: version: 3 services:redis1:image: redis:6.2.3restart: alwaysports:- "6379:6379"- "16379:16379"v…

Spring揭秘:ClassPathScanningProvider接口应用场景及实现原理!

技术应用场景 ClassPathScanningCandidateComponentProvider是Spring框架中一个非常核心的类,它主要用于在类路径下扫描并发现带有特定注解的组件,支持诸如ComponentScan、Component、Service、Repository和Controller等注解的自动扫描和注册。 ClassP…

.NET开源快速、强大、免费的电子表格组件

今天大姚给大家分享一个.NET开源(MIT License)、快速、强大、免费的电子表格组件,支持数据格式、冻结、大纲、公式计算、图表、脚本执行等。兼容 Excel 2007 (.xlsx) 格式,支持WinForm、WPF和Android平台:ReoGrid。 项…

普发Pfeiffer TPG256A MaxiGauge 真空计控制器接口通讯针脚等详情见图目录

普发Pfeiffer TPG256A MaxiGauge 真空计控制器接口通讯针脚等详情见图目录

强化学习中SARSA(State-Action-Reward-State-Action)和Q-learning的区别

SARSA(State-Action-Reward-State-Action)和Q-learning是两种经典的强化学习算法,它们都用于学习最优策略以使智能体在一个环境中获得最大的累积奖励。它们之间的主要区别在于它们更新动作值函数(Q值函数)的方式以及其…

SwiftUI组件-DatePicker

SwiftUI组件-DatePicker 本文记录一下SwiftUI组件-DatePicker import SwiftUIstruct DatePickerBootCamp: View {State var selectedDate: Date Date()var dateFormatter: DateFormatter {let formatter DateFormatter()formatter.dateStyle .shortformatter.timeStyle .…

使用kill()函数向进程发送信号

本片文章的学习记录总结来源于:https://www.bilibili.com/cheese/play/ep182660?csourcecommon_hp_history_null&t11&spm_id_from333.1007.top_right_bar_window_history.content.click 通常在Linux系统中,可以使用 kill or killall 命令向指定…

OpenCASCADE开发指南<十二>:OCC创建三维瓶子模型

在OpenCASCADE有一个例程,在 官方帮助网站中可以找到。程将教你如何使OpenCASCADE的API来进行三维建模。教程的目的不是描述所有的类,而是帮助你思考如何将OpenCASCADE作为一种工具。 1 概述 利用OpenCASCADE的API创建一个三维瓶子,形状如下…

如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务…

IBM:《2024年消费者调研:无处不在的人工智能彻底变革零售业》

1月17日,IBM商业价值研究院最近发布了第三份两年一度的消费者调研报告。 这项名为《无处不在的人工智能彻底改变零售业:客户不会等待》的报告,对包含中国在内的全球近20000名消费者进行了调研,相关结果反映了消费者对零售体验的普…

【Python】进阶学习:一文了解NotImplementedError的作用

【Python】进阶学习:一文了解NotImplementedError的作用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望…

2020-11-08 字符串指定位置倒序输出

缘由https://bbs.csdn.net/topics/398165677 //字符串指定位置倒序输出缘由https://bbs.csdn.net/topics/398165677char aa[] "abcABCabc\n";int a 3, b 5, c 0, d b;while (aa[c] ! \n)if (c < a || c > b)cout << aa[c]; else if(d > a) cout …

目标检测——YOLOv4算法解读

论文&#xff1a;YOLOv4&#xff1a;Optimal Speed and Accuracy of Object Detection 作者&#xff1a;Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/pdf/2004.10934.pdf 代码&#xff1a;https://github.com/AlexeyAB/darkne…

弹性盒子布局 Flexbox Layout

可以嵌套下去 1.display 属性 默认行排列 <style>.flex-item{ height: 20px;width: 10px;background-color: #f1f1f1;margin: 10px;}</style> </head> <body> <div class"flex-container"><div class"flex-item">1&l…

如何实现固定公网地址远程SSH连接Linux Deepin系统

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

探索数据结构:双向链表的灵活优势

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 前言 前面我们学习了单链表&#xff0c;它解决了顺序表中插入删除需…

第110讲:Mycat实践指南:指定Hash算法分片下的水平分表详解

文章目录 1.应用指定Hash算法分片的概念2.使用应用指定Hash算法分片对某张表进行水平拆分2.1.在所有的分片节点中创建表结构2.2.配置Mycat实现应用指定Hash算法分片的水平分表2.2.1.配置Schema配置文件2.2.2.配置Rule分片规则配置文件2.2.3.配置Server配置文件2.2.4.重启Mycat …

什么牌子的蓝牙耳机质量好?2024年精选机型,真实体验分享

​对于新手来说&#xff0c;真无线蓝牙耳机的选购可能显得有些复杂。网络上有许多关于蓝牙耳机品牌、音质、舒适度的讨论。我整理了五款佩戴舒适且音质表现不错的真无线蓝牙耳机&#xff0c;希望能为你提供有价值的参考&#xff0c;不要错过哦&#xff01; 一、蓝牙耳机选购技巧…
最新文章