gpt4 book ai didi

相当于 unix "strings"实用程序的 Python

转载 作者:太空狗 更新时间:2023-10-29 17:58:04 24 4
gpt4 key购买 nike

我正在尝试编写一个脚本,该脚本将从可执行二进制文件中提取字符串并将它们保存在一个文件中。让这个文件以换行符分隔不是一种选择,因为字符串本身可能有换行符。然而,这也意味着,使用 unix“strings”实用程序不是一个选项,因为它只是打印出所有以换行符分隔的字符串,这意味着无法仅通过查看输出来判断哪些字符串包含换行符“字符串”。因此,我希望找到一个 python 函数或库来实现与“字符串”相同的功能,但它会将这些字符串作为变量给我,这样我就可以避免换行问题。

谢谢!

最佳答案

这里有一个生成器,它生成在 filename 中找到的所有长度 >= min(默认为 4)的可打印字符字符串:

import string

def strings(filename, min=4):
with open(filename, errors="ignore") as f: # Python 3.x
# with open(filename, "rb") as f: # Python 2.x
result = ""
for c in f.read():
if c in string.printable:
result += c
continue
if len(result) >= min:
yield result
result = ""
if len(result) >= min: # catch result at EOF
yield result

你可以迭代的:

for s in strings("something.bin"):
# do something with s

...或存储在列表中:

sl = list(strings("something.bin"))

我对此进行了非常简短的测试,它似乎为我选择的任意二进制文件提供了与 Unix strings 命令相同的输出。然而,它非常幼稚(首先,它将整个文件一次读入内存,这对于大文件来说可能代价高昂),并且不太可能接近 Unix strings 命令的性能。

关于相当于 unix "strings"实用程序的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com