如何创建文件名中包含空字节的文件?

2024-04-15

对于安全测试,我需要传递一个内容和文件名中包含空字符的文件。

对于body内容来说,很容易使用printf:

$ printf "Hello\00, Null!" > containsnull.txt
$ xxd contains.null
0000000: 4865 6c6c 6f00 2c20 4e75 6c6c 21         Hello., Null!

但是如何创建名称中包含空字节的文件呢?

注:解决方案为bash, python or nodejs如果可能的话是首选


通过 POSIX 或 Windows API 不可能创建包含空字节的文件名。在我所知道的所有 Unix 系统上,即使使用绕过正常 API 的行为不当的应用程序,也不可能创建包含空字节的文件名,因为内核本身将其所有文件名输入视为空- 终止的字符串。我相信 Windows 上也是如此,但我不完全确定。

作为应用程序程序员,就安全性而言,这意味着如果您确定您拥有的是文件名,则无需担心包含空字节的文件名。另一方面,如果给你一个字符串并告诉你将其用作文件名,例如,如果你正在编写服务器并让客户端选择文件名,则需要确保该字符串不包含 null字节。这只是其他要求之一,包括字符串长度、目录分隔符的存在(/ or \), 保留名称 (. and ..、保留的 Windows 文件名,例如nul.txt or prn) 等。在大多数 Unix 系统上,在其本机文件系统上,文件名的约束是:没有空字节或斜线、长度在 1 和某个最大值之间、以及两个名称. and ..被保留。 Windows 和 Unix 上的非本机文件系统有额外的限制(可以将/在 Windows 上通过直接内核调用在文件名中)。

要将空字节放入文件内容中,只需使用允许字符串中包含空字节的任何语言将字符串写入文件即可。在bash中,您不能在字符串中存储空字节,因此您需要使用另一种方法,例如printf '\0' or echo "abc" | tr b '\0'.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建文件名中包含空字节的文件? 的相关文章

  • 使用 grep 仅打印上下文

    Using grep http www computerhope com unix ugrep htm 您可以打印与您的搜索查询匹配的行 添加一个 C选项将打印两行周围的上下文 如下所示 gt grep C 2 lorem some con
  • 获取 Bash 和 KornShell (ksh) 中命令的退出代码

    我想写这样的代码 command some command safeRunCommand command safeRunCommand cmnd 1 cmnd if 0 then printf Error when executing co
  • linux命令行:如何简单地将任意字符串输入管道?

    我正在寻找一个非常简单的技巧 假设文件中error txt 有一个很长的字符串 errorMessage key1 some message key2 message 2 由于它的格式不适合读者 如果我想在终端中以格式良好的形式查看它 我可
  • 如何在带有空格的目录上使用 find ?

    这里有一些奇怪的事情 mkdir p 1 2 3 4 touch 1 2 3 4 file jpg for f in find type f name jpg do echo f done 这返回 1 2 3 4 file jpg and
  • 自动将 Linux 文件名重命名为 Windows 中合法的新文件名

    我想将 linux 文件重命名为在 windows 中合法的文件名 它的长度不应超过允许的长度 并且不应包含 Windows 中不允许的字符 有时我将论文的标题复制到文件名 它们有特殊字符 例如 or 另外 从 pdf 中复制和粘贴标题时
  • Bash 中的条件管道

    我有一个过滤器 我想选择性地启用它 我想知道如何在 bash 中以干净的方式执行此操作 FILTER sort also can be empty ls FILTER cat 此代码不起作用 因为它会调用ls with and sort作为
  • Yocto for Nvidia Jetson 由于 GCC 7 而失败 - 无法计算目标文件的后缀

    我正在尝试将 Yocto 与 meta tegra 一起使用 https github com madisongh meta tegra https github com madisongh meta tegra 为 Nvidia Jets
  • MVC 模型在 OnExecuted 操作过滤器中为 null ...或者设置模型的更优雅的方式?

    我有一个 ActionFilter 它覆盖了 OnActionExecuted 方法 在 POST 操作中 filterContext Controller ViewData Model 始终为 null 我确实发现下面的文章似乎在说它不应
  • Ansible 权限问题

    我正在尝试将当前用户添加到系统中的某个组 然后执行需要该组权限的命令 我的剧本是这样的 name Add this user to RVM group sudo true user state present name vagrant ap
  • 如何在文件中固定数量的字符后插入换行符

    我正在寻找一个 bash 或 sed 脚本 最好是单行脚本 用它可以在巨大的文本文件中的固定数量的字符之后插入一个新行字符 像这样的事情怎么样 Change 20 是换行符之前的字符数 temp text 是要替换的文件 sed e s 2
  • Python 终端菜单?终端着色?终端进度显示?

    我有一个广泛使用 Python 2 风格 的项目 我想知道是否有终端菜单库或类似的东西 我希望通过使用箭头键突出显示选项 一些颜色等简化一些选项 为我的脚本注入一些风味和活力 我隐约记得有一种方法可以制作 bash shell 终端菜单 但
  • 使用 ls 和 grep 列出具有特定扩展名的文件

    我只想从当前目录获取文件 并且只输出 mp4 mp3 exe 文件 没有其他内容 所以我想我可以这样做 ls grep mp4 grep mp3 grep exe 但不会 因为第一个 grep 将仅输出 mp4 因此其他 2 个 grep
  • 使用 sed 反转输入顺序

    我有一个文件 我们将其命名为 a txt 该文件包含以下文本行 do to what 我想知道 SED 命令是什么来反转此文本的顺序 使其看起来像 what to do 我必须做某种追加吗 就像将 do 附加到 to 所以它看起来像 to
  • Groovy 中 Null Object 类的用途是什么?

    我已经使用 Groovy 五个小时了 刚刚发现Groovy NullObject http groovy codehaus org api index html org codehaus groovy runtime NullObject
  • 如何让SSH命令执行超时

    我有一个这样的程序 ssh q email protected cdn cgi l email protection exit echo output value gt 在上面的代码中 我尝试通过 SSH 连接到远程服务器 并尝试检查是否可
  • 为什么 rm 不能按我的预期工作?

    我只想做一件简单的事 我在目录中得到了以下文件 AppInterface h baa PEMsg h PluginInterface h 然后我发出命令 ls grep v h rm rf 令我非常沮丧的是 baa不会被删除 但是这个 ls
  • 在大型文本文件中查找重复记录

    我在一台 Linux 机器 Redhat 上 并且有一个 11GB 的文本文件 文本文件中的每一行包含单个记录的数据 并且该行的前 n 个字符包含该记录的唯一标识符 该文件包含略多于 2700 万条记录 我需要验证文件中不存在具有相同唯一标
  • C 中的 NULL 是否需要/定义为零?

    在我的 GCC 测试程序中 NULL 似乎为零 但维基百科说NULL只需要指向不可寻址的内存 有编译器做吗NULL非零 我很好奇是否if ptr NULL 是比更好的练习if ptr NULL is guaranteed to be zer
  • 如何在 awk 或 sed 中编写查找所有函数(使用正则表达式)

    我有运行 python 的 bash 函数 它从标准输入返回所有找到的正则表达式 function find all python c import re import sys print n join re findall 1 sys s
  • Bash 变量:区分大小写?

    Bash shell 脚本区分大小写吗 是可变的date与DATE 是的 它区分大小写 就像 UNIX 的其余部分一样 date and DATE是两个不同的变量 makefile and Makefile是两个不同的文件 h and H是

随机推荐

  • 将 MATLAB 绘图转换为图像

    我生成了一个类似的情节 figure hold axis 0 10 0 10 fill 1 1 5 5 5 1 1 5 b 现在我想将此图作为矩阵 以便我可以用高斯过滤博客 谷歌搜索我发现了这个线程将绘图光栅化为图像 http www ma
  • 如何在 Struts2 中检查 s:if 中的字符串不等式

    我在用
  • android OpenGL ES简单图块生成器性能问题

    遵循这个问题 老式 2D 类似塞尔达传说游戏的最佳方法 https stackoverflow com questions 2125354 best approach for oldschool 2d zelda like game 感谢之
  • 在 log(n) 时间内查找排序数组中至少出现 k 次的元素

    给定一个由 n 个元素和一个数字 k 组成的排序数组 是否有可能在 log n 时间内找到出现超过 k 次的元素 如果有多个数字出现超过 k 次 则其中任何一个都可以接受 如果是 怎么办 编辑 我能够在线性时间内解决这个问题 并且我很高兴在
  • 如何从命令行列出已安装的 MSI? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们最近将 Windows 软件包从 RPM cygwin 切换到 MSI wix 拥有原生包装是一个非常受欢迎的变化 我们打算坚持下去 然而 MSI
  • 使用 JQuery 将事件处理程序添加到 iframe

    我想将 keydown 事件处理程序分配给 iframe 类似于纯JS的东西 document getElementById iframe id contentWindow addEventListener keydown funcName
  • 生成加权随机数

    我正在尝试设计一种 好的 方法从一系列可能的数字中选择一个随机数 其中该范围内的每个数字都被赋予一个权重 简单地说 给定数字范围 0 1 2 选择一个数字 其中 0 有 80 的概率被选中 1 有 10 的概率 2 有 10 的概率 自从我
  • Angular - Google 未定义?

    你好 我正在尝试实施google maps api in angular 这很简单angularjs但我不知道什么不起作用 我有一个简单的应用程序 它显示产品及其位置 单击位置后 该位置会显示在地图上 但我正在使用的购物地图google m
  • R 中曲线下增量面积 (iAUC)

    曲线下面积可以使用以下公式计算trapz的功能pracmaR iAUC 中的包在许多情况下更加准确 特别是在生物学中 然而据我所知 没有 R 函数可以计算这个 陷阱函数如下 Example a lt c 1 4 5 6 b lt c 2 4
  • 如何使用 apache 设置 mpeg dash 服务器?

    我想在 ubuntu 10 04 上设置本地 mpeg dash 服务器 那么分别安装apache和mpeg dash编码器后该怎么办呢 thanks 只需将 MPD 和破折号段放入 apache htdocs 文件夹即可 如果您的 MPD
  • Python 中使用 lxml 进行 Schematron 验证:如何检索验证错误?

    我正在尝试使用 lxml 进行一些 Schematron 验证 对于我正在处理的特定应用程序 重要的是报告任何未通过验证的测试 这lxml文档 http lxml de validation html提到了存在validation repo
  • ADB Shell 输入事件

    之间的基本区别是什么adb shell input keyevent and adb shell sendevent 我应该使用哪一个来输入字符 我们传递给这两个命令的键码是否相同 By adb shell input keyevent 或
  • 如何防止无名结构\联合?

    我正在构建一个具有矩阵数据联合的类 但是 只有当我没有结构 联合的名称时 我才能对其进行编译 但是 如果警告级别更高 视觉工作室为四级 我会发出警告说 warning C4201 nonstandard extension used nam
  • 帮助我验证 url 是否应该接受 .me 域

    var tomatch http A Za z0 9 3 A Za z 3 if tomatch test theurl window alert URL OK return true 我尝试了这个正则表达式代码来验证 url 当我尝试验证
  • 这段代码是否受 C 标准保证?

    我读过 如果你声明两个这样的结构 struct Node int a b c struct DerivedNode struct Node base int d e f 然后你可以像这样使用指向它们的指针 struct DerivedNod
  • tf.sign 如何与反向传播一起工作?

    我从 TensorFlow 开始 尝试创建一个二进制网络 更具体地说 我正在寻找一个哈希网络 它将图像编码为大小为 n 的二进制向量 所以我有一个经典的网络 我对softmax之前的最后一层进行二值化 TensorFlow 提供了一个tf
  • WCF/Silverlight:为什么使用 ChannelFactory 而不是客户端?

    在继承的项目中 使用 ChannelFactory 而不是 Client 进行 WCF 调用 为什么要这么做 另外 缓存 ChannelFactory CreateChannel 调用的结果是否安全 还是应该每次创建一个新的结果 创建 WC
  • 在python中查找日期范围重叠

    我试图找到一种更有效的方法来根据特定列 id 在数据框中查找重叠的数据范围 每行提供的开始 结束日期 数据框按 来自 列排序 我认为有一种方法可以避免双重apply像我一样运行 import pandas as pd from dateti
  • docker-compose 日志记录不适用于 syslog 选项

    我有以下 docker compose 配置 version 3 services worker image image logging driver syslog options syslog address udp XXX papert
  • 如何创建文件名中包含空字节的文件?

    对于安全测试 我需要传递一个内容和文件名中包含空字符的文件 对于body内容来说 很容易使用printf printf Hello 00 Null gt containsnull txt xxd contains null 0000000