[TOOL] hexdump: 二进制文件阅读指南

news/2025/10/29 22:07:25/文章来源:https://www.cnblogs.com/migrator/p/19173617
[TOOL] hexdump: 二进制文件阅读指南

DeepSeek生成(2025年10月29日22:03:39)

目录
  • Hexdump 二进制文件阅读指南
    • 1. 什么是 Hexdump?
      • 为什么需要 Hexdump?
    • 2. 基础语法
    • 3. 常用选项详解
      • 基本显示格式
      • 输出示例解析
    • 4. 分析 TS 文件的实战技巧
      • 4.1 查找 TS 包同步字节
      • 4.2 验证 TS 包结构
      • 4.3 高级分析技巧
        • 查找特定模式
        • 结合其他工具
    • 5. 实际案例:分析MPEG-TS文件
      • 步骤1:快速检查文件类型
      • 步骤2:验证包同步
      • 步骤3:分析节目信息
    • 6. 实用脚本示例
      • 脚本1:TS包完整性检查
      • 脚本2:查找特定PID的包
    • 7. 常见问题排查
      • 问题1:找不到同步字节
      • 问题2:包大小不是188字节

Hexdump 二进制文件阅读指南

1. 什么是 Hexdump?

Hexdump 是一个命令行工具,用于以十六进制格式显示文件内容。它就像文件的"X光机",可以查看任何文件的原始二进制数据。

为什么需要 Hexdump?

  • 分析二进制文件格式
  • 调试网络数据包
  • 查看文件结构
  • 查找特定数据模式
  • 逆向工程

2. 基础语法

hexdump [选项] 文件名

3. 常用选项详解

基本显示格式

# 默认格式(十六进制 + ASCII)
hexdump input.ts# 只显示十六进制
hexdump -C input.ts# 经典格式(推荐!)
hexdump -C input.ts | head -20

输出示例解析

00000000  47 40 00 10 00 00 b0 0d  00 01 c1 00 00 00 01 f0  |G@..............|
00000010  00 2a b1 04 89 47 40 00  10 00 00 b0 0d 00 01 c1  |.*...G@.........|
  • 左边: 文件偏移量(字节位置)
  • 中间: 十六进制数据(每字节两个字符)
  • 右边: ASCII 字符显示(不可见字符显示为.

4. 分析 TS 文件的实战技巧

4.1 查找 TS 包同步字节

TS文件以 0x47 字节开头每个188字节包

# 方法1:直接查找47字节
hexdump -C input.ts | grep " 47"# 方法2:显示包含47的行及其前后内容
hexdump -C input.ts | grep -A 2 -B 2 " 47"# 方法3:统计47字节出现的规律
hexdump -C input.ts | grep " 47" | head -10

4.2 验证 TS 包结构

# 查看文件开头,确认TS包结构
hexdump -C input.ts | head -5# 检查包大小是否为188字节
hexdump -C input.ts | grep "^000000b0"  # 查看188字节(0xBC)位置

4.3 高级分析技巧

查找特定模式

# 查找PAT(Program Association Table)
hexdump -C input.ts | grep " 00 00 b0"# 查找PMT(Program Map Table)
hexdump -C input.ts | grep " 02 b0"

结合其他工具

# 使用xxd替代hexdump
xxd input.ts | grep "47"# 使用strings查找可读文本
strings input.ts | head -10# 结合awk进行复杂分析
hexdump -C input.ts | awk '/ 47/ {print $1}'

5. 实际案例:分析MPEG-TS文件

步骤1:快速检查文件类型

# 查看文件开头确认是TS流
hexdump -C input.ts | head -3

期望看到:

00000000  47 40 00 10 00 00 b0 0d  00 01 c1 00 00 00 01 f0  |G@..............|
00000010  47 50 00 10 00 02 b0 17  00 01 c1 00 00 e1 01 f0  |GP..............|

步骤2:验证包同步

# 检查每隔188字节是否有0x47
hexdump -C input.ts | awk '{print $1, $2}' | grep "47" | head -10

步骤3:分析节目信息

# 查找节目关联表(PAT)
hexdump -C input.ts | grep "00 00 b0 0d"

6. 实用脚本示例

脚本1:TS包完整性检查

#!/bin/bash
# ts_checker.shFILE=$1
echo "分析文件: $FILE"
echo "文件大小: $(wc -c < "$FILE") 字节"# 统计47字节出现的次数
SYNC_COUNT=$(hexdump -v -e '/1 "%02X\n"' "$FILE" | grep -c "47")
echo "同步字节(0x47)出现次数: $SYNC_COUNT"# 计算预期的包数量
EXPECTED_PACKETS=$(( $(wc -c < "$FILE") / 188 ))
echo "预期的TS包数量: $EXPECTED_PACKETS"
echo "实际同步字节数量: $SYNC_COUNT"

脚本2:查找特定PID的包

#!/bin/bash
# find_pid.shFILE=$1
PID=$2  # 例如: 0x100echo "查找PID: $PID 的包"
hexdump -C "$FILE" | grep "47.*$PID"

7. 常见问题排查

问题1:找不到同步字节

# 可能文件损坏或不是TS格式
hexdump -C input.ts | head -1
# 如果第一个字节不是47,可能不是有效的TS文件

问题2:包大小不是188字节

# 检查第二个包的位置
hexdump -C input.ts | grep -n " 47" | head -5
# 应该看到位置: 1, 189(0xBD), 377(0x179)...

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

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

相关文章

题解:CodeForces 715E Complete the Permutations

题意 对于两个排列 \(p,q\),定义它们的距离为将 \(p\) 变成 \(q\) 的最小操作次数,其中每次操作可以交换 \(p\) 中两个元素的位置。现在给定两个长度为 \(n\) 的排列 \(p,q\),其中一些位置被替换成了 \(0\)。对于每…

[TOOL] hexdump: 二进制文件分析指南

[TOOL] hexdump: 二进制文件分析指南$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");DeepSeek生成(2025年10月29日22:03:39)目录Hexdump 二进制文件分析指…

Day26-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\Threadcase

等待唤醒机制 生产者和消费者package Basic.src.com.Threadcase.Threadwaitnotify;public class Desk {/** 控制生产者和消费者的执行* *///桌子上是否有面条 0;没有面条 1:有面条public static int foodFlag = 0;…

题解:CF715E Complete the Permutations

题意 对于两个排列 \(p,q\),定义它们的距离为将 \(p\) 变成 \(q\) 的最小操作次数,其中每次操作可以交换 \(p\) 中两个元素的位置。现在给定两个长度为 \(n\) 的排列 \(p,q\),其中一些位置被替换成了 \(0\)。对于每…

日总结 20

YARN(Yet Another Resource Negotiator)是 Hadoop 生态中的核心集群资源管理与任务调度框架,旨在解耦 Hadoop 1.x 中 MapReduce 的计算与资源管理功能,通过 ResourceManager(全局资源管理)、NodeManager(节点资…

重组蛋白与传统蛋白的区别:从来源到特性的全面解析

在生命科学研究中,蛋白质作为重要的实验试剂,其获取方式和特性直接影响研究结果。传统蛋白与重组蛋白在多个维度存在显著差异,本文将系统解析二者的区别。 一、定义与来源的本质差异 传统蛋白通常指从生物体组织、器…

交个朋友电商学苑直播运营集训班4.0第三天笔记

交个朋友电商学苑直播运营集训班4.0第三天笔记第一个直播现状诊断错误的方向,1 开播不说话 抖音必须要规避的坑,1.闲聊式的直播 2 状态要激情,要讲卖点,为啥要买 3 纯硬搬 4 广告式账号 应该怎么做 引流短视频…

网球馆自动预约框架的反调试

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

吃薯片2025有机 - Gon

随机说话竟然已经是最后一年了吗我大抵是不爱说话的 DAY -2 神秘普转提(讲真的,感觉那四位应该是看了标题觉得是信心赛所以就搬过来了 T2写了甲烷了的暴力然后就艹过去了 一整个下午加晚上没写啥东西,但还是感觉好累…

[TOOL] 个人必备工具

[TOOL] 个人必备工具$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");更新时间:2025年10月29日21:47:59 个人bash配置: [SHELL] 个人BASH配置与美化目录01 …

JTCatch 缓存部署与使用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CSP-S 2025 游记

序 即使把我关在果壳之中,我仍自以为是无限空间之王 ——《哈姆雷特》Day -2 上午模拟赛,炸炸炸 const int mod=998224353 我是唐必啊啊啊啊啊啊啊啊啊 下午放了《蜂鸟》,旋律很美,在我大脑里旋转了一个下午,但歌…

arm.dll armaccess.dll arkut.dll arkdd32.dll arizonadll.dll aritmoperacedll.dll ariesengine.dll - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

顺利通过试用期:避开三大陷阱,掌握三个关键点

拿到心仪的offer并成功入职,无疑是职业生涯中的一个重要里程碑。然而,这仅仅只是成功的一半——如何顺利通过试用期,才是真正考验的开始。作为前大厂技术总监,我审批过无数新员工的转正申请,包括校招应届生、工作…

UOS镜像下载

下载地址 https://url89.ctfile.com/d/31504589-156236091-a84012?p=3997 (访问密码: 3997).zstitle { width: 280px; text-align: center; font-size: 26px } .zsimgweixin { width: 280px } .zsimgali { width: 280…

NordicNRF91系列蜂窝产品在偏远地区低轨道卫星物联网连接领域取得关键突破

成功采用Nordic nRF9151模组与Sateliot 低轨道卫星网络实现传输,标志着通过非地面网络实现全球范围物联网覆盖的业界里程碑 挪威奥斯陆 – 2025年10月17日 – 全球低功耗无线通信半导体解决方案领导者 Nordic Semicon…

深入解析:Inception V3--J9

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

ODT 学习笔记

本文同步发表于 博客园。有问题请不吝指出。 ODT (Old Driver Tree)也叫珂朵莉树(Chtholly Tree),也被叫做是颜色段均摊,由某毒瘤巨佬在 CF896C 中引入。 ODT 是一种暴力数据结构,感觉和 dsu on tree、势能线段…

Aout Me!

一个来自广州市,华南师范大学附属中学的高二学生。 一名普通的 OIer。 主要成就:NOI2025 rk29; Codeforces LGM; 命制了一些你可能做过的题目。轻喷 qwq。

解题报告-游戏(game.*)

游戏 题目描述 Alice 和 Bob 两个人正在玩一个游戏,游戏有很多种任务,难度为 \(p\) 的任务( \(p \in N_{+}\) ),有 \(2^{-p}\) 的概率完成并得到 \(2^{p-1}\) 分,如果完成不了,得 \(0\) 分。 一开始每人都是 \(0\…