首页 > 解决方案 > PHP - 使用十六进制字符串解压模块

问题描述

我基本上想要实现的是:

  1. 将上传的文件(图像、exe 等)读取为二进制数据
  2. 将其转换为十六进制字符串
  3. 检查它是否包含字符串

我已经修补并设法编写了一个执行上述操作的代码,但是,我目前的问题如下:

字符串“needle”转换为十六进制的“6e6565646c65”;如果字母大写(区分大小写),则在文件中不匹配。例如,它不会与“Needle”或“needlE”匹配。

那么,如何在不区分大小写的情况下检查文件中是否存在字符串?我尝试不将文件更改为十六进制字符串并检查原始数据,但不幸的是,我无法让它工作。

这是我现在拥有的代码:

$hex = unpack("H*", file_get_contents($filetmp));
$hex = current($hex);
if (strpos(strtolower($hex), '6e6565646c65'){

//string "needle" matches in the file

}

关于使用 PHP 可以做什么的任何想法?这可能是一种完全不同的方法,我不介意,我会研究它。

标签: phpuploadhex

解决方案


您可以尝试根据小写文件数据检查针:

$hex = unpack("H*", strtolower(file_get_contents($filetmp)));
$hex = current($hex);
if (strpos($hex, '6e6565646c65' !== false) {
    //found
}

此外,如果在开头找到as ,则检查falseasstrpos将返回 false 。0


推荐阅读