【发布时间】:2021-02-14 03:44:21
【问题描述】:
How to convert a ruby file to json?
我使用上述方法(rb2json0.rb 在上面的链接中)将 ruby 脚本转换为 JSON。但是 JSON 的格式不是很好,因为它只有数组而没有字典,因此很难处理 JSON 输出。
我特别想提取update_info中的字段,例如,
- 姓名
- 说明
- 许可证
- 参考文献
- 作者
并提取register_options中的字段,例如,
- 主机
- 来源
- 文件名
- 医生
请注意,提取不应假定字段名称固定为这些特定名称,因为其他字段名称可以在其他类似文件中使用。
输出应为双列 TSV,第一列为字段名称,第二列为字段值。例如,
Name<TAB>Microsoft Word UNC Path Injector
...
谁能告诉我最好的jq 方法来实现这一点?谢谢。
word_unc_injector.rb 位于 https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/docx/word_unc_injector.rb
$ rb2json0.rb < word_unc_injector.rb | jq . # too long to include all output.
[
"program",
[
[
"command",
[
"@ident",
"require",
[
...
编辑。这个问题的完整解决方案可能很复杂。但第一步可能是提取与update_info 对应的部分。这是相关的 JSON 片段。
...
[
"method_add_arg",
[
"fcall",
[
"@ident",
"update_info",
[
24,
10
]
]
],
[
"arg_paren",
[
"args_add_block",
[
[
"var_ref",
[
"@ident",
"info",
[
24,
22
]
]
],
[
"bare_assoc_hash",
[
[
"assoc_new",
[
"string_literal",
[
"string_content",
[
"@tstring_content",
"Name",
...
【问题讨论】:
-
输出可能太长而无法包含在内,因此如果您可以创建一个简短但完整的说明性和信息性示例,以便将 JSON 转换为更有用的形式,将会很有帮助。
-
能否下载文件 word_unc_injector.rb 并使用 rb2json0.rb 生成 JSON 文件?问题在于复杂性。每当我简化它时,它就不再复杂了。
-
看起来您要求 Ruby 程序员为您完成工作,因此您可能至少应该添加一个“ruby”标签。如果您需要 jq 方面的帮助,最好从 JSON 的角度陈述需求,并提供一个完整但简短的示例。
-
没有。这是一个jq问题。我已经将问题从 ruby 转换为 jq。输入的描述必须根据原始 ruby 文件,因为原始 ruby 代码比转换后的 JSON 文件更具可读性。