问题标签 [binaryfiles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
binary - 受密码保护的 ZIP 文件的字节签名是什么?
我读过 ZIP 文件以以下字节开头:
参考:http ://www.garykessler.net/library/file_sigs.html
问题:是否有特定的字节序列表明 ZIP 文件已受密码保护?
java - 将 .class 文件转换为二进制文件?
当编译一个“.java”文件时,它会创建一个新的“.class”文件,它不是一个纯二进制文件。要运行此文件,您需要一个名为“java”的解释器。有没有办法将此“.class”文件转换为二进制文件?您不需要在其中运行另一个程序?
F.ex './filename' 在 Linux 中。
对不起,我的英语不好。
-亨里克
java - 使用 Java 在二进制文件中搜索字节序列
我有一个字节序列,我必须使用 Java 在一组二进制文件中搜索。
示例:我正在二进制文件中搜索字节序列DEADBEEF
(十六进制)。我将如何在 Java 中执行此操作?是否有内置方法,例如String.contains()
二进制文件?
c# - C++ 中是否有 BinaryReader 来读取从 C# 中的 BinaryWriter 写入的数据?
我已经用 C# 中的 BinaryWriter 将几个整数、char[] 等写入数据文件。使用 BinaryReader(在 C# 中)读回文件,我可以完美地重新创建文件的所有部分。
然而,尝试用 C++ 将它们读回会产生一些可怕的结果。我正在使用 fstream 尝试读回数据,但数据未正确读入。在 C++ 中,我设置了一个 fstreamios::in|ios::binary|ios::ate
并使用 seekg 来定位我的位置。然后我读取了接下来的四个字节,它们被写为整数“16”(并正确读取到 C# 中)。这在 C++ 中读取为 1244780 (不是内存地址,我检查了)。为什么会这样?C++ 中是否有与 BinaryReader 等价的东西?我注意到它在 msdn 上提到过,但那是 Visual C++,而智能感知在我看来甚至不像 C++。
编写文件的示例代码(C#):
我不确定如何向您展示数据文件。
读回数据的示例(C#):
这是我想在 C++ 中执行的。初始尝试(在第一个整数处失败):
编辑:似乎无论我在哪个位置使用“seekg”,我都会收到完全相同的值。
rest - RESTful 设计 - 如何为实体的附件建模
我正在尝试在 REST 中对实体的附件进行建模。假设一个缺陷实体可以附加多个附件。每个附件都有一个描述和一些其他属性(最后修改,文件大小......)。附件本身是任何格式的文件(jpeg、doc ...)
我想知道我应该如何对它进行 RESTful 建模
我考虑了以下两个选项:
第一种方法(使用相同的资源,不同的表示):
GET , content-type:XML on http://my-app/defects/ {id}/attachments将以 XML 格式返回缺陷的附件元数据(描述、上次修改、文件大小...)
GET , content-type:gzip on http://my-app/defects/ {id}/attachments将在 zip 文件中返回缺陷的附件
GET , content-type:mime multi-part on http://my-app/defects/ {id}/attachments将在多部分消息中返回缺陷的附件(二进制数据和 XML 元数据)
POST, content-type:XML on http://my-app/defects/ {id}/attachments将创建新附件,元数据只有没有附加文件(然后用户必须发送带有二进制数据的 PUT 请求)
POST , content-type:mime\multi-part on http://my-app/defects/ {id}/attachments将创建附件,客户端可以在一次往返中发送元数据和文件本身
第二种方法(将附件的数据与元数据分开):
GET , content-type:XML on http://my-app/defects/ {id}/attachments将以 XML 格式返回缺陷的附件元数据(描述、上次修改、文件大小...)
GET , content-type:gzip on http://my-app/defects/ {id}/attachments/files将在单个 zip 中返回缺陷的附件二进制数据
创建一个新附件,首先调用:
- POST, content-type:XML on http://my-app/defects/ {id}/attachments将创建新附件,元数据只有没有附加文件(然后用户必须发送带有二进制数据的 PUT 请求)
然后添加二进制数据本身:
- POST , content-type:mime\multi-part on http://my-app/defects/ {id}/attachments/{id}/file将创建附件文件
一方面,第一种方法更加健壮和高效,因为客户端可以在单次往返中创建\获取附件元数据和二进制数据。另一方面,我有点不愿意使用 mime-multipart 表示,因为它的消费和生产更麻烦。
编辑:我检查了闪烁上传 REST API。似乎他们正在使用多部分消息来包含照片和照片属性。
c++ - fread 在空值处终止中读。还读取垃圾过去的预期数据
我正在使用 C++ 中的 FILE 对象读取二进制文件的片段。这是 fseek 和相应的 fread 调用:
m_sizeOfData 最终是一个大于 40 万的整数。这似乎应该将二进制文件中的所有 40 万+字节读入数据(顺便说一下,这是一个 char[m_sizeOfData]),但是它在一个看起来像一个盒子的 unicode 字符处大约 6 或 7 个字符后停止。我在想它可能代表一个空终止?我对此并不积极。我正在阅读的每个文件都不是这种情况。大多数似乎(通常)正常工作。
为什么会这样?有没有办法正确读取所有数据?
编辑:
fp 定义如下:
这个方框字符(十六进制)是 0x06 后跟 0x00。
数据定义为: char *data = new char[m_sizeOfData];
编辑 2:
我还注意到另一个文件的末尾加载了一些垃圾。垃圾看起来像:
ýýýý«««««««««îþ
这是因为它试图完成一定的字节数吗?
windows - 如何从 Windows 反编译 Linux 二进制文件?
如何从 Windows 反编译 Linux 二进制文件 (*.so)?谢谢。
visual-studio - 我可以在 Visual Studio 中对文件进行十六进制编辑吗?
我想编辑一个二进制文件,但我不想使用 Visual Studio 以外的其他工具,因为来回切换很痛苦。
是否有可以在 Visual Studio 中执行此操作的加载项或某些内置功能?
reverse-engineering - 如何在没有文档的情况下解释遗留的二进制数据文件?
数据通常存储在很少或没有文档的特定于程序的二进制文件中。我们领域的一个典型例子是来自仪器的数据,但我怀疑这个问题是普遍的。有哪些方法可以尝试理解和解释数据?
设定一些界限。文件未加密,也没有 DRM。文件的类型和格式特定于程序的编写者(即它不是“标准文件”——例如 *.tar——其身份已丢失)。(可能)没有故意混淆,但可能会有一些业余的努力来节省空间。我们可以假设我们对数据是什么有一个一般性的了解,并且我们可以识别一些(但可能不是全部)字段和数组。
假设大部分数据是数字的,带有标量和数组(可能是一维和二维,有时是不规则的或三角形的)。还有一些字符串,可能是人名、站点、日期,可能还有一些关键字。程序中会有读取二进制文件的代码,但我们无权访问源代码或汇编程序。例如,它可能是由 VAX Fortran 程序或一些早期的 Unix 或 Windows 作为 OLE 对象编写的。这些数字可能是大端或小端(一开始并不知道),但它可能是一致的。我们可能在不同的机器上有不同的版本(例如 Cray)。
我们可以假设我们有一个相当大的文件语料库——比如说几百个。
我们可以假设两种情况:
- 我们可以使用不同的输入重新运行程序,以便进行实验。
- 我们无法重新运行该程序 - 我们有一组固定的文档。这与用未知语言(例如线性 B)解码历史文档有轻微的相似性。
部分解决方案可能是可以接受的——即,可能有些领域现在没有活人理解,但大多数其他领域是可以解释的。
我只对开源方法感兴趣。
更新有一个相关的 SO 问题(如何对二进制文件格式进行逆向工程以实现兼容性),但重点有所不同。
更新来自@brianegge 的巧妙建议来解决(1)。使用truss
(或可能strace
在 Linux 上)转储程序中的所有 write() 和类似调用。这应该至少允许将记录的集合写入磁盘。
zip - Zip 格式的 JPG+Zip 文件组合问题
希望您听说过可以将 JPG 和 Zip 文件合并到一个文件中的巧妙技巧,并且它对于两种格式都是有效的(或至少可读的)文件。好吧,我意识到,由于 JPG 在末尾允许任意内容,而 ZIP 在开头,您可以在其中添加一种格式 - 在中间。出于这个问题的目的,假设中间数据是任意二进制数据,保证不与 JPG 或 ZIP 格式冲突(这意味着它不包含神奇的 zip 标头 0x04034b50)。插图:
我猫是这样的:
cat "mss_1600.jpg" filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea filea fileb filea fileb "null.bytes" "randomzipfile.zip" > temp.zip
这将生成一个 6,318 KB 的文件。它不会在 7-Zip 中打开。但是,当我减少一个“双”时(而不是 13 个 filea 和 b,12 个):
cat "mss_1600.jpg" filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb filea fileb "null.bytes" "randomzipfile.zip" > temp.zip
它会生成一个 5,996 KB 的文件,该文件在 7-Zip中打开。
所以我知道我的任意二进制数据没有神奇的 Zip 文件头来搞砸它。我有工作 jpg+data+zip和非工作 jpg+data+zip的参考文件(另存为因为浏览器认为它们是图像,并自己添加 zip 扩展名)。
我想知道为什么它在 13 种组合中失败而在 12 种组合中失败。对于奖励积分,我需要以某种方式解决这个问题。