首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在linux上的二进制文件中提取特定偏移量后的字符串到x00。

在linux上的二进制文件中提取特定偏移量后的字符串到x00。
EN

Stack Overflow用户
提问于 2016-06-18 19:02:08
回答 1查看 431关注 0票数 1

我寻求在linux (命令行)中提取二进制文件中字符串的最简单方法。例如,在我的示例中,字符串以偏移量138开头,以第一个十六进制00结尾。

在过去的几天里,我试着使用十六进制,并阅读了大约几次文档。可悲的是,在我尝试的所有东西中,我只得到了与字符串一起的十六进制值,而不是干净的字符串。

所以我的问题是,最简单的解决办法是什么?我应该更多地关注像python、php这样的脚本语言,还是有一些我不知道的东西可以更容易地实现呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-18 19:20:09

您可以简单地从偏移量138处的文件读取到缓冲区,直到您像这样到达0x00 .

代码语言:javascript
代码运行次数:0
运行
复制
// Open the file for read
$fp = fopen($fileName, "rb");
// Set the file pointer to a byte offset of 138 to begin reading
fseek($fp, 138);
$reached = false;
$buffer = "";
// Read into the buffer until we reac 0x00
do {
    $buffer .= fread($fp, 8192);
    $end = strpos($buffer, "\x00");
    if ($end !== false || feof($fp)) {
        $str = substr($buffer, 0, $end);
        $reached = true;
    }
} while(!$reached);

// $str will contain the string you're looking for
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37900616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档