linux xxd命令(将文件或标准输入转换为hex(十六进制)和ASCII(美国信息交换标准代码)表示,或者从hex dump(十六进制转储)反向到二进制)

文章目录

  • Linux xxd命令
    • 安装xxd
    • 基本使用方法
      • 创建hex dump
      • 从hex dump恢复到二进制
    • 命令选项
    • 疑难技术点解析
      • 在脚本中使用xxd
      • 从hex dump恢复数据
    • 总结

Linux xxd命令

xxd是一个在Linux和UNIX系统中常用的工具,主要用于将文件或标准输入转换为hex(十六进制)和ASCII(美国信息交换标准代码)表示。该命令同时也提供了从hex dump(十六进制转储)反向到二进制的功能。

安装xxd

通常情况下,xxd命令默认已经包含在大多数Linux发行版中。如果操作系统中没有这个命令,可以通过以下命令进行安装:

sudo apt-get install vim-common

或者

yum install vim-common

这两个命令分别适用于基于Debian和基于Red Hat的Linux发行版。

基本使用方法

创建hex dump

xxd命令最常见的用法是创建一个文件的hex dump。例如,可以使用以下命令来查看文件"example.txt"的hex dump:

xxd example.txt

这会将文件的内容转化为十六进制,并显示每一行的偏移量(offset)。

在这里插入图片描述

从hex dump恢复到二进制

xxd命令还有一个很重要的功能就是可以从hex dump恢复到二进制。只需要使用-r选项,例如:

xxd -r example.txt.hex > example.txt

其中,example.txt.hex是由xxd命令生成的hex dump文件,example.txt则是恢复出的二进制文件。

示例:

root@ubuntu:/userdata/20231130_ffmpegTest/test20231210#
root@ubuntu:/userdata/20231130_ffmpegTest/test20231210# cat example.txt.hex
00000000: e5a5 bde6 97a5 e5ad 90e8 bf98 e59c a8e5
00000010: 908e e5a4 b4e5 91a2 efbc 810a
root@ubuntu:/userdata/20231130_ffmpegTest/test20231210#
root@ubuntu:/userdata/20231130_ffmpegTest/test20231210# xxd -r example.txt.hex
好日子还在后头呢!
root@ubuntu:/userdata/20231130_ffmpegTest/test20231210#

在这里插入图片描述

命令选项

以下是xxd命令常用的一些选项:

  • -p--ps:将输出结果以连续hexdump的方式显示,不会显示偏移量或原始的字符数据。
  • -r--revert:从hex dump反向到二进制。
  • -s <offset>--seek <offset>:从指定的偏移量开始进行操作。
  • -l <len>--len <len>:只处理指定长度的输入数据。
  • -c <cols>--cols <cols>:设置每行显示的列数。

例如,要查看一个二进制文件中从第100个字节开始的16个字节的hex dump,可以使用如下命令:

xxd -s 100 -l 16 binaryfile

在这里,-s 100告诉xxd从第100个字节开始,-l 16表示只查看16个字节。

示例:

在这里插入图片描述

疑难技术点解析

在脚本中使用xxd

xxd命令通常在shell脚本中使用,作为数据处理的一部分。例如,在分析网络协议或文件格式时,可以用xxd来转换和查看二进制数据。

这种情况下,通常会将xxd的输出重定向到一个文件,或者通过管道传递给其他命令进行进一步处理。例如,以下命令会创建一个hex dump,并使用grep命令查找包含"abcdef"的行:

xxd binaryfile | grep 'abcdef'

示例:

在这里插入图片描述

从hex dump恢复数据

虽然xxd -r可以从hex dump恢复到二进制,但这要求输入的格式必须是xxd能够识别的。如果hex dump的格式与xxd的输出格式不同,可能需要先进行转换。

例如,如果hex dump是连续的,没有偏移量或原始的字符数据,可以使用xxd -r -p来恢复。在这里,-p选项告诉xxd忽略任何非hex字符。

echo '48656c6c6f' | xxd -r -p

上面的命令将输出"Hello",因为"48656c6c6f"是"Hello"在ASCII中的十六进制表示。

在这里插入图片描述

总结

xxd是一个功能强大的工具,对于处理和分析二进制数据来说非常有用。尽管它的用法看起来可能有些复杂,但只需要理解了基本的操作和选项,就能够灵活地应对各种情况。

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

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

相关文章

TCP/IP 传输层协议

传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP&#xff08;Transmission Control Protocol&#xff09;和用户数据包协议UDP&#xff08;User Datagram Protocol&#xff09;。 TCP协议 TCP是一种面向连接的传输层协议&#…

仿猪八戒威客网整站PHP源码

源码介绍 phpmysql环境。威客开源建站系统&#xff0c;其主要交易对象是以用户为主的技能、经验、时间和智慧型商品。经过多年发展&#xff0c;解决方案成熟&#xff0c;站长用户群稳步增长。产品成为同类开源建站产品的领导者&#xff0c;是搭建在线服务交易平台的首选产品。…

【P2PTransportChannel 】2: 创建Connetion、 BasicPortAllocatorSession

基于m98P2PTransportChannel::MaybeStartGathering() 触发PortAllocator 对 session的管理(创建等) P2PTransportChannel::MaybeStartGathering() session都放在PortAllocator的 一个vector 中:std::vector<std::unique_ptr<PortAllocatorSession>> pooled_sess…

DC-6靶场

DC-6靶场下载&#xff1a; https://www.five86.com/downloads/DC-6.zip 下载后解压会有一个DC-3.ova文件&#xff0c;直接在vm虚拟机点击左上角打开-->文件-->选中这个.ova文件就能创建靶场&#xff0c;kali和靶机都调整至NAT模式&#xff0c;即可开始渗透 首先进行主…

2023年第四届 “赣网杯” 网络安全大赛 gwb-web3 Write UP【PHP 临时函数名特性 + 绕过trim函数】

一、题目如下&#xff1a; 二、代码解读&#xff1a; 这段代码是一个简单的PHP脚本&#xff0c;它接受通过GET请求传递的两个参数&#xff1a;‘pass’和’func’&#xff1a; ① $password trim($_GET[pass] ?? );&#xff1a;从GET请求中获取名为’pass’的参数&#xff0…

解决你的 Nginx 代理跨域问题详细完整版

当你遇到跨域问题&#xff0c;不要立刻就选择复制去尝试。请详细看完这篇文章再处理 。我相信它能帮到你。 分析前准备&#xff1a; 前端网站地址&#xff1a;http://localhost:8080 服务端网址&#xff1a;http://localhost:59200 首先保证服务端是没有处理跨域的&#x…

22.JSP技术

JSP起源 在很多动态网页中&#xff0c;绝大部分内容都是固定不变的&#xff0c;只有局部内容需要动态产生和改变。如果使用Servlet程序来输出只有局部内容需要动态改变的网页&#xff0c;其中所有的静态内容也需要程序员用Java程序代码产生&#xff0c;整个Servlet程序的代码将…

OpenShift 4 - 管理和使用 OpenShift AI 运行环境

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 RHODS 2.50 的环境中验证 文章目录 启停 Notebook Server启动停止 Notebook 镜像Notebook Image 和 ImageStream使用定制的 Notebook Image 定制服务器的运行配置应用和项目用户和访问权…

一篇文章带你了解各个程序员接单平台,让你选择不再迷茫!!!

相信现在很多程序员都已经走上了或者准备走上网上接单这条路&#xff0c;但是目前市面上的接单平台可谓五花八门&#xff0c;对于各个平台的优缺点&#xff0c;不同的程序员该如何选择适合自己的接单平台&#xff0c;你又是否了解呢&#xff1f; 接下来就让小编用一篇文章来为…

C++数据结构——二叉搜索树详解

目录 一&#xff0c;关于二叉搜索树 1.1 概念 1.2 基本结构 二&#xff0c;二叉搜索树接口实现 2.1 插入 2.2 查找 2.3 打印 2.4* 删除 三&#xff0c;二叉搜索树接口递归实现 3.1 查找 3.2 插入 3.3 删除 四&#xff0c;二叉搜索树的默认成员函数 五&#xff0c;…

国产划片机品牌众多,如何选择优质的供应商?

在半导体行业的发展浪潮中&#xff0c;划片机作为关键设备之一&#xff0c;其性能和质量对于生产过程的高效性和产品的质量具有至关重要的影响。近年来&#xff0c;国产划片机的品牌数量不断增多&#xff0c;为半导体行业提供了更多的选择。然而&#xff0c;如何从众多的品牌中…

2023 英特尔On技术创新大会直播 | AI 融合发展之旅

前言 2023 年的英特尔 On 技术创新大会中国站&#xff0c;主要聚焦最新一代增强 AI 能力的计算平台&#xff0c;深度讲解如何支持开放、多架构的软件方案&#xff0c;以赋能人工智能并推动其持续发展。 大会的目标之一是优化系统并赋能开发者&#xff0c;特别注重芯片增强技术…

个人用户的数据之美:数据可视化助力解读

数据可视化是一种强大的工具&#xff0c;不仅可以为企业和专业人士提供见解&#xff0c;也对个人用户带来了许多实际的帮助。下面我就以一个数据可视化从业者的视角&#xff0c;来谈谈数据可视化对个人用户的益处&#xff1a; 首先对于个人用户来说&#xff0c;数据可视化可以让…

金蝶报表二开

本案例描述&#xff1a; 折旧明细报表中加入字段&#xff1a;存放地点、成本中心部门、使用人组织三个字段。 参考社区案例&#xff1a;报表二次开发添加自定义字段的指导方案 步骤&#xff1a; 1、加入报表插件 继承原报表的类。重写BuilderReportSqlAndTempTable、GetRe…

【Python秘技】用Python实现千图成像,千字成像,编程炫技必备!

一个千图成像&#xff0c;千字成像的程序&#xff0c;开源给大家玩玩。 用她的名字组成她的照片会不会很酷呢&#xff1f; 后续会完善更多功能&#xff0c;打包为程序。 源代码在这里&#xff1a;https://github.com/w-x-x-w/Thousand-Image-Generator 讲解在这里&#xff…

armday1

1到一百的累加

Saliency Prediction in the Deep LearningEra: Successes and Limitations

摘要&#xff1a; 近年来&#xff0c;由于深度学习和大规模注释数据的进步&#xff0c;视觉显著性模型在性能上有了很大的飞跃。然而&#xff0c;尽管付出了巨大的努力并取得了巨大的突破&#xff0c;但模型在达到人类水平的准确性方面仍然存在差距。在这项工作中&#xff0c;…

CTF命令执行部分总结

&#x1f60b;大家好&#xff0c;我是YAy_17&#xff0c;是一枚爱好网安的小白&#xff0c;正在自学ing。 本人水平有限&#xff0c;欢迎各位大佬指点&#xff0c;一起学习&#x1f497;&#xff0c;一起进步⭐️。 ⭐️此后如竟没有炬火&#xff0c;我便是唯一的光。⭐️ 关于…

keep-live原理,react-router如何实现keep-alive

3. keep-live原理&#xff0c;react-router如何实现keep-alive 先说结论&#xff1a;被keep-alive标签包裹的组件在第一次初始化时&#xff08;渲染从render开始&#xff09;会被缓存起来&#xff08;以vnode的形式&#xff09;&#xff0c;再次访问时&#xff08;actived生命周…

在Python中使用Kafka帮助我们处理数据

Kafka是一个分布式的流数据平台&#xff0c;它可以快速地处理大量的实时数据。Python是一种广泛使用的编程语言&#xff0c;它具有易学易用、高效、灵活等特点。在Python中使用Kafka可以帮助我们更好地处理大量的数据。本文将介绍如何在Python中使用Kafka简单案例。 一、安装K…