【问题标题】:Hex file to string array?十六进制文件到字符串数组?
【发布时间】:2015-03-27 18:51:52
【问题描述】:

我有一些过时格式的文件,其中包含我想要提取的关键字符串和数字。如果我在十六进制编辑器中查看文件,我可以将信息视为字符串。如何读取这个 hex 文件并使用 python 打印出所需的字符串?

这是一个小样本:

ÎFª∆3.0B International Inc.ANONYMOUS, ANONYMOUS 1269959PL 1Thu Sep  2 09:39:29 2004MMWed Aug 25 12:26:17 2004[GTV]øº—¯øÃ—¯@ˇ˝ôôôö?øÒ\ƒzO§kø∏˜QÎÖ@5ëÎ8QÎÖ?@o◊Á@p(@[ø! @n}†@p∫!@r⁄˚Ä?@Y2.16.840.1.113662.2.12.0.3012.1093437427.1484=P¡AP beamˇˇˇˇˇˇ¸-B-21EX10718X@YAAB@Yhh¥Z@4@D¿¿@FÄ?@4@D¿$¿$@FÄ?
µÏì‡ê??????????????????????????@4@D¿4¿4@N?@ÃÃÃÃÃÕ@ÃÃÃÃÃÕ@@øÒ\ƒzO§kø∏˜QÎÖ@5ëÎ8QÎÖ?øÒ\ƒzO§k@!€È  ≠k¥@5ëÎ8QÎÖ?
µÏì‡ê
µÏì‡ê
µÏì‡ê?ˇˇˇˇ
µÏì‡ê
µÏì‡ê
µÏì‡ê@Yˇˇ¸ˇ2ÑÄ?ÁWuwWux?›]’›]’‡?˙˙Çæ†Ø§?ŸDA¯˜&ëó???ˇˇ¸ˇˇ˛I?“I$íI$í???í€?‚I$íI$í???$m?Îm∂€m∂€???  ∂ˇ@VÅüǧu¿øÒ\ƒzO§kø∏˜QÎÖ@5ëÎ8QÎÖ?øÒ\ƒzO§k@!€È ≠k¥@5ëÎ8QÎÖ?CerroAAAÖÓ@I
µÏì‡ê@N
µÏì‡ê@ 
µÏì‡ê
µÏì‡ê
µÏì‡ê1¿ô`@√ʆ?¿

【问题讨论】:

  • 你能给我们举个输入的例子吗?
  • 您是否在寻找类似于 unix 工具 strings 的东西?
  • 我在上面发布了一个文件的一部分

标签: python hex


【解决方案1】:

如果你正在寻找类似unix工具string的东西,你可以mmap文件然后使用itertools.groupby提取可打印范围内连续字节的序列( 32 到 127 假设您的“旧”文件中的字符串使用 ASCII 编码)。

这是一个可能的起点:

fname = 'wine_gecko-2.24-x86.msi'
threshold = 5

with open(fname, 'rb') as f:
    for k, g in itertools.groupby(mm, lambda b: 32 <= ord(b) <= 127):
         if k:
             gs = b"".join(g)
             if len(gs) > threshold:
                 print(gs)

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 2021-03-11
    • 1970-01-01
    • 2012-05-30
    • 2013-08-09
    • 2013-10-13
    • 1970-01-01
    • 2018-05-17
    相关资源
    最近更新 更多