我有一个PHP文件,该文件使用mp4文件上的fread提供视频流。我需要使其与XOR混淆文件一起工作,但无法弄清楚出了什么问题。
我在某些视频文件上使用了XOR密码。现在,我尝试使用PHP读取二进制数据并对其进行XOR解密。我有一个PHP脚本,该脚本使用正确的标头提供mp4的服务,但是在提供二进制文件之前,我需要对其解密。
以下是提供视频流的代码:
while (!feof($stream)) {
$buffer = fread($stream, $chunksize);
echo $buffer;
flush();
}
您可以在这里看到完整的示例: https://gist.github.com/ranacseruet/9826293 它可以在常规MP4文件上完美运行。
但是我正在尝试在回显缓冲区之前执行此操作:
// unpack into byte array
$buffer_bytes = unpack("C*",$buffer);
for ($i=0; $i < $chunksize; $i++) {
//byte arrays start at index 1
$buffer_bytes[$i+1] ^= $password_bytes[($i%10)+1];
}
// pack the decrypted bytes back into $buffer before echoing
$buffer = pack("C*", ...$buffer_bytes);
查看数组中输出的二进制数据(禁用标头)时,它是正确的-与未加密版本相比,但是启用标头时,视频无法播放。