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

news2024/10/1 3:34:51

文章目录

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

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

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

相关文章

Java中线程状态的描述

多线程-基础方法的认识 截止目前线程的复习 Thread 类 创建Thread类的方法 继承Thread类,重写run方法实现Runnable接口,重写run方法使用匿名内部类继承Thread类,重写run方法使用匿名内部类实现Runnable接口,重写run方法使用Lambda表达式 run方法中的所有的代码是当前线程对…

[Linux] LVS负载均衡群集——DR模式

一、 DR模式的特点 直接路由&#xff1a; 在LVS_DR模式下&#xff0c;负载均衡器不修改数据包的IP地址&#xff0c;只修改目的MAC地址。这使得数据包可以直接路由到后端实际服务器上&#xff0c;而不需要返回到负载均衡器。 高性能&#xff1a; 由于数据包在传输过程中不需要回…

dubbo--03--- dubbo 支持的9种协议

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Dubbo框架特性Dubbo 和 Spring Cloud区别 dubbo 支持的9种协议协议类型1、dubbo 协议 (默认)特性配置常见问题 2、rmi 协议3、hessian 协议4、http 协议特性 5、web…

案例073:基于微信小程序的智慧旅游平台开发

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

【MYSQL】-表的操作

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

functools.partial:Python中灵活函数部分应用的工具

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python编程中&#xff0c;functools.partial是一个强大的工具&#xff0c;它提供了一种部分应用函数的方式&#xff0c;能够在创建新函数时固定部分参数&#xff0c;从而在后续调用中减少需要传递的参数数量。…

python中random.seed()和random.getstate()用法详解

python中random.seed()和random.getstate()用法详解 摘要 python的random包经常被用于模拟实验的重现&#xff0c;数据集的随机划分的确定性重现。然而&#xff0c;我本人之前对random.seed()什么时候调用&#xff0c;调用之后会对之后多少代码起决定性作用这一块感到云里雾里…

压测方案设计..

01 为什么要做压测 1、什么是压力测试&#xff1f; 不断向被测对象施加压力&#xff0c;测试系统在压力情况下的表现。 2、压力测试的目的是什么&#xff1f; 测试得出系统的极限性能指标&#xff0c;从而给出合理的承诺值或者容量告警&#xff1b; 找出系统的性能瓶颈&am…

清华提出ViLa,揭秘 GPT-4V 在机器人视觉规划中的潜力

人类在面对简洁的语言指令时&#xff0c;可以根据上下文进行一连串的操作。对于“拿一罐可乐”的指令&#xff0c;若可乐近在眼前&#xff0c;下意识的反应会是迅速去拿&#xff1b;而当没看到可乐时&#xff0c;人们会主动去冰箱或储物柜中寻找。这种自适应的能力源于对场景的…

51单片机简易出租车计费系统仿真设计

51单片机简易出租车计费系统仿真设计( proteus仿真程序报告讲解视频&#xff09; 仿真图proteus 8.9及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0036 1.主要功能&#xff1a; 出租车计费系统设计内容&#xff1a; 1、…

JDK17 SpringBoot3 整合常见依赖

JDK版本:17 SpringBoot 整合Mybatis Plus 、Redis等 依赖文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xs…

数据链路程协议

目录 数据链路层 介绍 以太网帧格式 目的地址 源地址 类型 CRC 数据 如何封装和解包 如何向上交付 MAC地址与IP地址 MTU 局域网数据转发 局域网数据碰撞 数据包转发 ARP协议 构建ARP请求 ARP请求的处理 ARP响应的构建 ARP欺骗 DNS域名解析 域名解析是什么…

标准IO与文件IO

标准IO通过缓冲机制减少系统调用&#xff0c;实现更高的效率 全缓冲&#xff1a;当流的缓冲区无数据或无空间时才执行实际IO操作 行缓冲&#xff1a;当在输入和输出中遇到换行符&#xff08;\n&#xff09;时&#xff0c;进行IO操作 当流和一个终端关联时&#xff0c;典型的行缓…

【06】GeoScene海图或者电子航道图数据自动化质检

1 S-58错误管理器验证产品 在你编辑数据时进行快速的质量检查可以使用S-58错误管理器&#xff0c;S-58错误管理器工具允许您使用IHO S-58验证标准来验证海事数据库中的产品。你可以验证整个产品&#xff0c;或验证产品的当前范围。 1.1验证产品 使用S-58错误管理器工具完成以…

服务器解析漏洞是什么?攻击检测及修复

服务器解析漏洞&#xff08;Server-side Include Vulnerability&#xff0c;SSI漏洞&#xff09;是一种安全漏洞&#xff0c;通常出现在支持服务器端包含&#xff08;SSI&#xff09;功能的Web服务器上。SSI是一种在Web页面中嵌入动态内容的技术&#xff0c;允许开发人员将外部…

Java 数据结构篇-实现二叉搜索树的核心方法

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 二叉搜索树的概述 2.0 二叉搜索树的成员变量及其构造方法 3.0 实现二叉树的核心接口 3.1 实现二叉搜索树 - 获取值 get(int key) 3.2 实现二叉搜索树 - 获取最小…

监控k8s controller和scheduler,创建serviceMonitor以及Rules

目录 一、修改kube-controller和kube-schduler的yaml文件 二、创建service、endpoint、serviceMonitor 三、Prometheus验证 四、创建PrometheusRule资源 五、Prometheus验证 直接上干货 一、修改kube-controller和kube-schduler的yaml文件 注意&#xff1a;修改时要一个节…

neo4j安装报错:neo4j.bat : 无法将“neo4j.bat”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

neo4j安装报错&#xff1a; neo4j.bat : 无法将“neo4j.bat”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确 保路径正确&#xff0c;然后再试一次。 解决办法&#xff1a; 在环境变量中的&#xff0c;用户…

手把手教你搭建谷歌Gemini

前言 谷歌上周推出了一款名为 Gemini 的多模态大模型&#xff0c;并且现在发布了免费开放的 Gemini API 供开发者使用。根据谷歌提供的定价信息&#xff0c;Gemini 有两种收费方式。免费版本每分钟可以进行 60 次请求&#xff0c;足够满足个人用户的需求。收费版本目前暂不可用…

你了解Redis中的跳跃表吗?

跳跃表的基本内容&#xff1a; 对于一个有序序列&#xff0c;链表相对于数组来说&#xff0c;删除和插入的效率要快很多&#xff0c;只需要改变指针的指向&#xff0c;但是在查找的时候&#xff0c;数组就要更占优势一些&#xff0c;可以随机访问&#xff0c;然而链表需要从头…