>백엔드 개발 >PHP 튜토리얼 >php 异或解密!写一个解密方法,求大神们帮助一下!

php 异或解密!写一个解密方法,求大神们帮助一下!

WBOY
WBOY원래의
2016-06-20 12:31:271085검색

ì=ŠÊúiÚúêšúêjiêúÚºúºêêêjÚªúziújizúÚúšÚzizúÚúšÚziꊺŠÚjšiêiÚúzúêiêÚiꊚºiÚzÊiÚúúiêúŠÚiªúijšÊÚiêúiÚúÊŠêiªiêúšzªÚiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúiúi
以上是加密文件wininfo_QL730_2016019.ffl里的东西~~。
加密规则:

(1) 所有下传FTP文件内容全部加密存储,数据加密方法:每字节首先异或0x9f,然后高4位和低4位交换顺序。
(2) 所有下传、上传通讯数据包和返回数据包内容全部加密,数据加密方法:每字节首先异或0x9f,然后高4位和低4位交换顺序。
(3) 所有数据包中各内容段采用“TAB键” 分割。
(4) 所有数据包格式描述内容和例子中的“+”号只是用于表示字段连接关系,实际不包含在数据包中。
(5) 为描述准确,所有例子中的“ ”(TAB键)均用汉字“+TAB键+”表示。
(6) 所有下传通讯数据包大小固定为100字节,对端返回数据包大小固定为40字节,当下传通讯数据包和返回数据包实际内容小于固定长度则以’\0’(ascii 0)补足长度,例如下传通讯数据内容实际大小为80字节,则补充20字节的’\0’(ascii 0)形成100字节的下传通讯数据包,同理对于下传通讯数据的返回数据内容“858939+TAB键”实际大小为7字节,则补充33字节的’\0’(ascii 0)形成40字节下传通讯数据的返回数据包。
(7) 所有上传通讯数据包大小固定为400字节,对端返回数据包大小固定为40字节,当上传通讯数据包和返回数据包实际内容小于固定长度则以’\0’(ascii 0)补足长度,例如上传通讯数据内容实际大小为320字节,则补充80字节的’\0’(ascii 0)形成400字节的上传通讯数据包,同理对于上传通讯数据的返回数据内容“858939+TAB键”实际大小为7字节,则补充33字节的’\0’(ascii 0)形成40字节上传通讯数据的返回数据包。
(8) 所有下传和上传通讯数据包内容为:命令字符串+TAB键+长整型(4字节)随机码转换的字符串+TAB键+长整型(4字节)指定内容长度转换的字符串+TAB键+指定内容+TAB键,长整型(4字节)随机码范围为100000—999999。
(9) 所有下传和上传通讯数据包不足指定长度时先做‘\0’填充,然后再加密。


求写一个能自动打开此文件解密的程序~~跪求了~,俺初学PHP,未接触过此方面的东西~~,谢谢众神了~


回复讨论(解决方案)

你把加密文件放到网盘上


echo base64_encode(file_get_contents('wininfo_QL730_2016019.ffl'));
贴出结果

7D2Kyvpp2vrqmvrqamnq+tq6+rrq6upq2qr6emn6aml6+tr6mtp6aXr62vqa2npp6oq6itpqmmnqadr6evrqaeraaeqKmrpp2nrKadr6+mnq+oraaar6aWqaytpp6vpp2vrKiuppqmnq+pp6qtpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6aQ==


这是echo base64_encode(file_get_contents('wininfo_QL730_2016019.ffl'));的结果

$s = base64_decode('7D2Kyvpp2vrqmvrqamnq+tq6+rrq6upq2qr6emn6aml6+tr6mtp6aXr62vqa2npp6oq6itpqmmnqadr6evrqaeraaeqKmrpp2nrKadr6+mnq+oraaar6aWqaytpp6vpp2vrKiuppqmnq+pp6qtpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6afpp+mn6aQ==');$res = '';foreach(unpack('C*', $s) as $c) {  $l = ($c & 0xf0) >> 4;  $h = ($c & 0x0f) << 4;  $res .= chr(($h + $l) ^ 0x9f);}echo $res;
QL730	2016019	10240411192508	09	8020628	8020628	1747296	1	20801	12	1764	283	200	1072	50	9632	10	20371	5	106852	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	

恩恩~亲~然后如何操作呢?

那我怎么知道?
我只负责帮你解密,具体那些数据有什么用,只有你知道

非常感谢你的帮助~~我刚才是没看懂~现在OK了~

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.