mentebinaria/dz6

GitHub: mentebinaria/dz6

一款受 Vim 启发的快速终端十六进制编辑器,专注于在 TUI 环境中高效查看和编辑二进制文件。

Stars: 147 | Forks: 12

![dz6](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/8207b12d27150404.png) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/12656/badge)](https://www.bestpractices.dev/projects/12656) # dz6 受 Vim 启发的快速 TUI 十六进制编辑器 ## 功能 - 即使在编辑大文件时也非常快速 - 在终端 / 文本用户界面 (TUI) 中运行 - 类似 Vim 的按键绑定 - 可配置选项 - 支持十六进制或 ASCII 编辑 - 带有正则表达式过滤的字符串列表 - 多种智能浏览文件的方式 - 查找字符串和十六进制字节 - 跨平台 - 开源 ## 演示 [![asciicast](https://asciinema.org/a/801539.svg)](https://asciinema.org/a/801539) ## 安装 ### Rust 包管理器(所有操作系统) 按照[此处](https://rust-lang.org/tools/install/)的说明安装 **cargo**。然后,打开 终端并输入: ``` cargo install dz6 ``` ### Arch Linux(通过 AUR) ``` yay -S dz6 ``` ### FreeBSD ``` pkg install dz6 ``` ### Windows 如果你安装了 [WinGet](https://learn.microsoft.com/en-us/windows/package-manager/),请使用以下命令安装 dz6: ``` winget install mentebinaria.dz6 ``` 或者,下载适合你系统的 [发布](https://github.com/mentebinaria/dz6/releases)包。 ## 用法 ``` Usage: dz6 [OPTIONS] Arguments: File to open Options: -o, --offset Initial cursor offset (hex default; `t` suffix = decimal) [default: 0] -r, --readonly Set read-only mode -h, --help Print help -V, --version Print version ``` 一旦在 **dz6** 中加载了文件,你就可以使用以下命令。 ### 全局按键绑定 | 按键 | 操作 | 提示 | | ------- | ---------------- | ------------------------- | | `Enter` | 切换视图 | 当前为十六进制和文本视图 | | `Alt+l` | 打开日志窗口 | | | `:` | 打开命令栏 | 参见 [命令](#commands) | #### 命令 | 命令 | 操作 | 参数 | 提示/示例 | | ---------------- | ---------------------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------- | | `` | 跳转到偏移量 | | 默认为十六进制;`t` 后缀 = 十进制;`+` 前缀 = 向前跳转;`-` 前缀 = 向后跳转 | | `cmt` | 将 `` 添加到 `` | `` `` | `cmt 1000 "my comment"` (在偏移量 0x1000 处添加注释;偏移量遵循上述相同规则) | | `sel` | 从 `` 开始选择 `` 个字节 | `` `` | `sel 40 10t` (从偏移量 0x40 开始选择 10 个字节) | | `set byteline` | 设置每行的字节数 | ` or `auto` | `set byteline 8` (默认为 16;`auto` 启用基于屏幕宽度的自动设置) | | `set ctrlchar` | 设置 ASCII 转储中非图形值的显示字符 | `` | `set ctrlchar " "` 会设置一个空格 (默认: `.`) | | `set db` | 开启数据库文件保存/加载 (默认) | | 将使用带有 `.dz6` 扩展名的数据库文件来存储文件的标签和注释 | | `set nodb` | 关闭数据库文件保存/加载 | | | | `set dimzero` | 仅将空字节置灰 (默认) | | | | `set dimctrl` | 将所有控制字符置灰 | | 所有非图形字符将被置灰 | | `set nodim` | 关闭字节变灰 | | | | `set theme` | 设置主题 | `dark` 或 `light` | `set theme light` (默认: `dark`) | | `set wrapscan` | 启用搜索结果循环 | | | | `set nowrapscan` | 禁用搜索结果循环 | | | | `w` | 将更改写入文件 | | | | `wq` 或 `x` | 将更改写入文件并退出 | | | | `q` | 不保存更改直接退出 | | 在替换模式下,`T` (截断) 是个例外,因为它会立即修改文件。 | 如果需要永久设置,请创建一个 `$HOME/.dz6init` 文件,将上述任何命令逐行写入其中。dz6 将在启动时加载它。 ### 十六进制视图 | 按键 | 操作 | 提示 | | ----------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | 方向键 | 导航 | 类似 Vim 的 `h`, `j`, `k`, `l` 也可以 | | `w` `d` `q` | 分别向前移动一个 word (2 字节)、dword (4 字节) 或 qword (8 字节) | 使用大写字母 `W`、`D` 和 `Q` 可以向后移动 | | `o` | 跳到下一个其他字节 (即与光标下的字节不同的字节) | `O` 向后跳转 | | `Home` 或 `0` | 将光标移动到当前行的开头 | | | `End` 或 `$` | 将光标移动到当前行的末尾 | | | `Ctrl+Home` 或 `g` | 跳转到第一个偏移量 | | | `Ctrl+End` 或 `G` | 跳转到文件中的最后一个偏移量 | | | `Ctrl+f` 或 `Page Down` | 下移一页 | | | `Ctrl+b`或 `Page Up` | 上移一页 | | | `r` | 进入[替换模式](#hex-replace-mode) | | | `z` | 将光标下的字节设置为零 | | | `~` | 如果适用,更改大小写 | 仅适用于 ASCII 字母范围内的字节 | | `Ctrl+a` | 递增光标下的字节 | | | `Ctrl+x` | 递减光标下的字节 | | | `v` | 进入[选择模式](#hex-selection-mode) | | | `u` | 撤销对缓冲区的最后一次更改 | 在写入文件 (`:w`) _之前_ 使用 | | `/` | 向前搜索 | 搜索整个文件。`Tab` 在 ASCII 和十六进制搜索之间切换 | | `n` | 查找下一个 (向前) | | | `?` | 向后搜索 | 搜索整个文件。`Tab` 在 ASCII 和十六进制搜索之间切换 | | `N` | 查找下一个 (向后) | | | `s` | 打开[字符串](#strings)窗口 | | | `Backspace` | 返回到上一个访问过的偏移量 | 例如在使用了跳转命令后非常有用 | | `+` | 将当前偏移量添加到标签 | | | `-` | 跳转到最后添加的标签 | | | `Alt+1..8` | 跳转到标签 | | | `Alt+-` | 移除最后添加的标签 | 光标必须位于被标记的偏移量处 | | `Alt+0` | 清除标签 | | | `Alt+h` | 切换字节高亮 | | | `;` | 为选定的偏移量添加注释 | | | `Ant+n` | 打开[名称](#names)窗口。添加的注释将会显示在其中。 | | | `=` | 打开[计算器](#calculator) | | #### 十六进制选择模式 | 按键 | 操作 | 提示 | | ---------- | -------------------------------- | -------------------------------------------------------------------------------- | | 方向键 | 导航 | 类似 Vim 的 `h`, `j`, `k`, `l` 也可以 | | `~` | 如果适用,更改大小写 | 仅适用于 ASCII 字母范围内的字节 | | `n` | 用 NOP 填充选定的字节 | 这会使 dz6 进入替换模式;按 `Enter` 保存缓冲区;`Esc` 取消 | | `z` | 用零填充选定的字节 | 同上 | | `y` | 将字节复制到系统剪贴板 | 目前还没有粘贴命令 | | `Alt+m` | 用随机颜色标记一个块 | 再次按 `Alt+m` 可选择另一种颜色。使用 `[` 和 `]` 导航到块边界 | | `Esc` | 返回普通模式 | | #### 十六进制替换模式 | 按键 | 操作 | 提示 | | ----------- | ---------------------------------------------------------- | -------------------------------------------------------- | | 方向键 | 导航 | | | `Backspace` | 与向左导航相同 | | | `~` | 如果适用,更改大小写 | 仅适用于 ASCII 字母范围内的字节 | | `z` | 将字节设置为零 | | | `Ctrl+a` | 递增字节 | | | `Ctrl+x` | 递减字节 | | | `Esc` | 返回普通模式 | 更改将保存到缓冲区,但尚未写入文件 | | `Tab` | 在十六进制和 ASCII 转储之间循环切换,以 ASCII 形式编辑文件 | | | `t` | 移除选定偏移量之后的所有字节 | 请注意,此操作无法撤销 | | `T` | 移除选定偏移量之前的所有字节 | 请注意,此操作无法撤销 | #### 名称 | 按键 | 操作 | 提示 | | ----------- | ------------------------------------------------ | ------------ | | 方向键 | 导航 | 仅限上下 | | `f` | 使用正则表达式过滤名称 | | | `D` | 删除所有名称 | | | `Esc` | 关闭 | | | `End` | 选择显示的最后一项 | | | `Ctrl+End` | 选择列表中的最后一项 | | | `Home` | 选择显示的第一项 | | | `Ctrl+Home` | 选择列表中的第一项 | | | `Page Down` | 下移一页 | | | `Page Up` | 上移一页 | | | `Enter` | 在十六进制转储中定位到该名称并关闭窗口 | | #### 字符串 | 按键 | 操作 | 提示 | | ----------- | -------------------------------------------------- | ------------------------------ | | 方向键 | 导航 | 仅限上下 | | `f` | 使用正则表达式过滤字符串 | | | `R` | 从文件中重新读取字符串 | 如果你更改了文件,这会很有用 | | `Esc` | 关闭 | | | `End` | 选择显示的最后一项 | | | `Ctrl+End` | 选择列表中的最后一项 | | | `Home` | 选择显示的第一项 | | | `Ctrl+Home` | 选择列表中的第一项 | | | `Page Down` | 下移一页 | | | `Page Up` | 上移一页 | | | `Enter` | 在十六进制转储中定位到该字符串并关闭窗口 | | #### 计算器 64 位计算器。默认基数为十进制,但你可以使用 0x 作为十六进制数字的前缀。预定义变量: | 变量 | 值 | 长度 | | -------- | --------------------------- | --------------------------------------------------------- | | `@x` | 光标下的有符号值 | `x` 为 `b` (byte)、`w` (word)、`d` (dword) 或 `q` (qword) | | `@X` | 光标下的无符号值 | `X` 为 `B` (byte)、`W` (word)、`D` (dword) 或 `Q` (qword) | | `@o` | 当前偏移量 | 在 32 位系统上为 dword;在 64 位系统上为 qword | | `@O` | 上一个访问过的偏移量 | 同上 | 使用上下方向键可浏览历史记录。 ### 文本视图 | 按键 | 操作 | --- | ------------------------------ | | `e` | 打开编码选择对话框 | ## 常见问题 **1. 我使用的是 Mac。我该如何使用 `Alt` 键?!** iTerm2 用户:前往 `Settings → Profiles → (你的配置文件) → Keys`,并将 `Left Option key` 设置为 `Esc+`。这将使 `Option` 键的作用类似于 `Alt`。 **2. 所有 Vim 命令都能在 dz6 中使用吗?** 不能。有些按键绑定表现相似,但 dz6 并不追求与 Vim 100% 兼容。例如,在 dz6 中,`o` 用于移动到下一个其他字节,而在 Vim 中,相同的键用于在当前行下方打开一个新行。 **3. dz6 现在稳定了吗?** 没有。预计只有在 v1.0.0 版本才会稳定。在此之前,可能会出现破坏性的更改。
标签:ASCII编辑, Linux工具, Rust, SNI设置, TUI, Vim风格, 二进制数据分析, 二进制文件分析, 云安全监控, 云资产清单, 十六进制搜索, 十六进制查看器, 可视化界面, 数据恢复, 文件编辑工具, 文本处理, 正则过滤, 端口探测, 系统管理工具, 终端用户界面, 网络流量审计, 逆向工程, 通知系统, 静态分析