您好,欢迎访问一九零五行业门户网

php 检测图片木马(多进制编程)的代码

本文分享下,php实现的检测图片木马的一段代码,可用于检测十六制编码的木马程序,有需要的朋友参考下吧。本php检测图片木马的程序,从制作原理来分析木马程序。有些木马程序是十六进制编码写的,因此需要花些心思做检测,于是实现了这个php木马检测类。
代码:
'没有错误发生,文件上传成功。', '1' => '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。', '2' => '上传文件的大小超过了 html 表单中 max_file_size 选项指定的值。', '3' => '文件只有部分被上传。', '4' => '没有文件上传。', '5' => '未能通过安全检查的文件。', '6' => '找不到临时文件夹。', '7' => '文件写入失败。', '8' => '文件类型不支持', '9' => '上传的临时文件丢失。', ); //@ 开始执行文件上传 public static function start($feild = 'file') { if (!empty($_files)) { self::$status = $_files[$feild]['error']; if (self::$status > 0) return array('status' => self::$status, 'msg' => self::$message[self::$status]); self::$image = $_files[$feild]['tmp_name']; self::$suffix = strtolower(strrchr($_files[$feild]['name'], '.')); return array('status' => self::_upload(), 'path' => self::$image, 'msg' => self::$message[self::$status]); } else { return array('status' => self::$status, 'msg' => self::$message[self::$status]); } } //@ 私有 上传开始 private static function _upload($path = './upload/') { date_default_timezone_set('prc'); $newfile = $path . date('y/m/d/his') . rand(100, 999) . self::$suffix; self::umkdir(dirname($newfile)); if (is_uploaded_file(self::$image) && move_uploaded_file(self::$image, $newfile)) { self::$image = $newfile; if (in_array(self::$suffix, self::$imagetype)) return self::checkhex(); else return self::$status = 0; } else { return self::$status = 9; } } //@ 私有 16进制检测 private static function checkhex() { if (file_exists(self::$image)) { $resource = fopen(self::$image, 'rb'); $filesize = filesize(self::$image); fseek($resource, 0); if ($filesize > 512) { // 取头和尾 $hexcode = bin2hex(fread($resource, 512)); fseek($resource, $filesize - 512); $hexcode .= bin2hex(fread($resource, 512)); } else { // 取全部 $hexcode = bin2hex(fread($resource, $filesize)); } fclose($resource); /* 匹配16进制中的 */ /* 匹配16进制中的 */ /* 匹配16进制中的 大小写亦可*/ if (preg_match(/(3c25.*?28.*?29.*?253e)|(3c3f.*?28.*?29.*?3f3e)|(3c534352495054)|(2f5343524950543e)|(3c736372697074)|(2f7363726970743e)/is, $hexcode)) self::$status = 5; else self::$status = 0; return self::$status; } else { return self::$status = 9; } } //@ 私有 创建目录 private static function umkdir($dir) { if (!file_exists($dir) && !is_dir($dir)) { self::umkdir(dirname($dir)); @mkdir($dir); } } }
其它类似信息

推荐信息