当前位置:首页 > PHP > 正文内容

通过PHP代码解析微信电脑版加密的聊天文件代码开源

高老师3年前 (2023-12-04)PHP511

根据文件头进制特征识别文件类型,识别为图片进行OCR识别,懂得都懂,禁止用于违法行为。

<?php

// 16进制特征码
$checkMap = [
    ".jpeg" => hex2bin("FFD8FF"),
    ".png" => hex2bin("89504E47"),
    ".gif" => hex2bin("47494638"),
    ".tif" => hex2bin("49492A00"),
    ".bmp" => hex2bin("424D")
];

// 传递微信加密文件
$file = './be27b0c8911ffd7294b7febc16a9cb91_t.dat';
if (!file_exists($file)) {
    throw new Exception('文件' . $file . '不存在');
}

// 读取文件内容
$content = file_get_contents($file);
if (!$content) {
    throw new Exception('未获取到文件内容');
}

// 读取文件前10个字节内容作为特征码
$bytesToRead = 10;
$feature = substr($content, 0, 10);
if (!$feature || strlen($feature) != 10) {
    throw new Exception('未获取到文件特征码');
}

// 检查特征
$feature_array = str_split($feature, 1);
$fileRes = checkImage($feature_array);
if (empty($fileRes['0'])) {
    throw new Exception('不支持的文件类型');
}

// 生成新的文件
$newFile = 'test' . $fileRes['0'];

// 将文件内容转换
$newChar = '';
for ($i = 0; $i < strlen($content); $i++) {
    $newChar .= $content[$i] ^ $fileRes['1'];
}
file_put_contents($newFile, $newChar);


// 检查特征
function checkImage($in_feature)
{
    global $checkMap;
    foreach ($checkMap as $key => $check_feature) {
        $isConform = checkConformRule($check_feature, $in_feature);
        if ($isConform) {
            return [$key, $isConform];
        }
    }
    return [null, null];
}

// 检查规则
function checkConformRule($check_feature, $in_feature)
{
    $initDecodeByte = $check_feature[0] ^ $in_feature[0];
    for ($i = 0; $i < strlen($check_feature); $i++) {
        $b = $check_feature[$i] ^ $in_feature[$i];
        if ($b !== $initDecodeByte) {
            return false;
        }
    }
    return $initDecodeByte;
}


扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/682.html

分享给朋友:

“通过PHP代码解析微信电脑版加密的聊天文件代码开源” 的相关文章

PHP session和cookie的关联

PHP session和cookie的关联

先看看下面的代码:<?php session_start(); $_SESSION['username']='lucy'; ?>当我们请求访问上面的脚本,默认会在我们的客户端生成一个名为PHPSESSID的cookie,我这里的值是PHPSESSID=...

php创建webservice,php搭建webservice,php编写webservice

php创建webservice,php搭建webservice,php编写webservice

第一步:服务端文件<?php $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0');    //关闭WSDL缓存 //001...

php 数组转换xml,php 数组转成xml,php数组转xml 函数

php 数组转换xml,php 数组转成xml,php数组转xml 函数

源码:特别适用于微信支付中通知微信支付网关function array2xml($arr, $level = 1) { $s = $level == 1 ? "<xml&g...

php 获取当前执行文件,php 获取当前执行文件,php 获取当前文件

php 获取当前执行文件,php 获取当前执行文件,php 获取当前文件

php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/*  * 获取当前PHP文件名称  */ if (!function_exists('phpself&#...

PHP中的ArrayAccess用法详解

PHP中的ArrayAccess用法详解

php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class  studen...

php mcrypt扩展被废弃的解决方案

php mcrypt扩展被废弃的解决方案

使用openssl扩展对应替换mcrypt的函数,(比较麻烦,但是openssl是未来趋势)在新版php中编译mcrypt扩展使用一个纯php代码实现的mcrypt扩展库,git地址为https://github.com/phpseclib/mcrypt_compat,每个mcrypt的方法都已经实...