更新 原始问题不再是这个问题的适当问题,所以我将单独留下来展示我尝试/学习的内容和背景.很明显,这不仅仅是一个"Base64变种",而且涉及的更多一些.
背景: 我在python 3.x中编程主要用于开源程序Blender.我是新手/业余级程序员,但我很了解大概念我已经阅读了与我的问题相关的这些文章.
问题: 我有一个二进制文件,其中包含对应于每个顶点(浮点数)的x,y,z坐标的3d网格数据(浮点列表和整数列表)以及构成网格面的顶点索引(整数).该文件以xml'ish的感觉组织......
<SomeFieldLabel and header like info>**thensomedatabetween**</SomeFieldLabel>
Run Code Online (Sandbox Code Playgroud)
以下是"顶点"字段中的示例
<Vertices vertex_count="42816" base64_encoded_bytes="513792" check_value="4133547451">685506bytes of b64 encoded data
</Vertices>
Run Code Online (Sandbox Code Playgroud)
我在想某处有一个额外的加密步骤.也许有翻译表,旋转密码或某种流密码?奇怪的是,字节数是正确的,但结果不应该限制可能性.有任何想法吗?以下是两个示例文件,文件扩展名更改为*.mesh.我不想公开这种文件格式,只想为Blender编写一个导入器,这样我就可以使用这些模型了.
这是两个示例文件.我从Vertices和Facets字段中提取了原始二进制文件(不是b64解码),并从公司提供的此类文件的"Viewer"中提供了边界框信息.
示例文件1
示例文件2
关于"顶点"字段的注释
关于Facets字段的注释
标头base64_encoded_bytes,它是发生base64编码时的字节数
base64_encoded_bytes/facet_count的比例似乎变化很大.从1.1到大约1.2.如果它们被编码为对应于顶点索引的3x4byte整数,我们期望比率为12.因此要么对此字段进行补充,要么使用三角形条保存模型,或者两者都保存 : - /
更多窥探
我打开了viewer.exe(在十六进制编辑器中),由公司提供查看这些文件(也是我获得边界框信息的地方).以下是我发现有趣的一些片段,可以进一步搜索.
f_LicenseClient ......我@ …
目标(常规) 我的最终(长期)目标是将二进制文件的导入程序编写到另一个应用程序中
问题背景
问题具体
考虑到我必须确定所使用算法的资源,最佳策略是什么?
目前的想法
我意识到,如果没有密钥,从数据中识别算法实际上是不可能的
拥有一个文件和一个viewer.exe,我必须在某处拥有密钥.无论是公共的,私人的,对称的......这都很好.
我想用findlypt插件作为第一步,使用OllyDbg反汇编viewer.exe.我只是不够精通这种事情来完成它.
资源
完整示例文件从字段中
提取二进制文件我对
解密数据感兴趣 在此zip存档中有一个浮点数的二进制列表,表示x,y,z(model2.vertices)和二进制整数列表(model2.faces).我还包含了一个"stl"文件,您可以使用许多免费程序查看,但由于数据存储在STL中的奇怪方式,这不是我们期望从原始文件中获得的.
进展
1.我用Olly反汇编程序,然后做了我唯一知道如何处理这个poing并且在导入文件之前暂停了porgram之后"搜索了所有引用的文本".然后我搜索了诸如"crypt,hash,AES,encrypt,SHA等"之类的单词.我想出了一些东西,最值得注意的是"Blowfish64",这似乎与mydata偶尔长度为4个字节的事实很好(因为它保证是mod 12 = 0)这对我来说看起来像填充64位块大小(奇数量的顶点导致非mod 8字节量).我还发现错误消息,如...
"无效的数据大小,(Size-4)mod 8必须为0"
在阅读了下面的Igor的回复之后,这是来自signsrch的输出.我用绿点更新了这个图像,当用int3替换时没有问题,如果程序无法启动则没有问题,如果在加载感兴趣的文件时失败则为橙色.没有点意味着我还没有测试过它.

配件信息