($sid) { session_delete(array('sid' => $sid)); session_data_delete(array('sid' => $sid)); return TRUE; } function sess_gc($maxlifetime) { global $time; $expiry = $time - $maxlifetime; $arrlist = session_find(array('last_date' => array('<' => $expiry)), array(), 1, 10000, '', array('sid', 'bigdata', 'last_date')); if (!$arrlist) return TRUE; $expiry = $time - 21600; // 超6小时未提交丢弃上传图片和附件 $sidarr = array(); foreach ($arrlist as $val) { if ($val['last_date'] > $expiry && $val['bigdata']) continue; $sidarr[] = $val['sid']; } if (empty($sidarr)) return TRUE; session_delete(array('sid' => $sidarr)); session_data_delete(array('sid' => $sidarr)); return TRUE; } function sess_start() { global $conf, $sid, $g_session; ini_set('session.name', $conf['cookie_pre'] . 'sid'); ini_set('session.use_cookies', TRUE); ini_set('session.use_only_cookies', TRUE); ini_set('session.cookie_domain', $conf['cookie_domain']); // 为空则表示当前目录和子目录 ini_set('session.cookie_path', $conf['cookie_path']); // 打开后只有通过 https 才有效 ini_set('session.cookie_secure', FALSE); ini_set('session.cookie_lifetime', 8640000); // 打开后 js 获取不到 HTTP 设置的 cookie, 有效防止 XSS,对于安全很重要,除非有 BUG,否则不要关闭。 ini_set('session.cookie_httponly', TRUE); // 活动时间 ini_set('session.gc_maxlifetime', $conf['online_hold_time']); // 垃圾回收概率 = gc_probability/gc_divisor ini_set('session.gc_probability', 1); // 垃圾回收时间 5 秒,在线人数 * 10 / 每1000个请求回收一次垃圾 ini_set('session.gc_divisor', 1000); session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy', 'sess_gc'); // register_shutdown_function 会丢失当前目录,需要 chdir(APP_PATH) $conf['url_rewrite_on'] > 1 and function_exists('chdir') and chdir(APP_PATH); // 这个必须有,否则 ZEND 会提前释放 $db 资源 register_shutdown_function('session_write_close'); session_start(); $sid = session_id(); return $sid; } // 刷新页面清理附件缓存 废弃 function sess_clear_attach() { global $sid, $time; $arr = session_read($sid); if (!$arr || 0 == $arr['bigdata']) return TRUE; session_update($sid, array('bigdata' => 0, 'last_date' => $time)); session_data_delete(array('sid' => $sid)); return TRUE; } function online_count() { return session_count(); } function online_list_cache() { static $cache = array(); $key = 'online_list'; if (isset($cache[$key])) return $cache[$key]; $cache[$key] = cache_get($key); if (NULL === $cache[$key]) { $cache[$key] = session_find(array('uid' => array('>' => 0)), array('last_date' => -1), 1, 1000); foreach ($cache[$key] as &$online) { $user = user_read_cache($online['uid']); $online['username'] = $user['username']; $online['gid'] = $user['gid']; $online['ip_fmt'] = safe_long2ip($online['ip']); $online['last_date_fmt'] = date('Y-n-j H:i', $online['last_date']); } cache_set('online_list', $cache[$key], 300); } return $cache[$key]; } function online_user_list_cache() { static $cache = array(); $key = 'online_user_list'; if (isset($cache[$key])) return $cache[$key]; $cache[$key] = cache_get($key); if (NULL === $cache[$key]) { $cache[$key] = session_find(array('uid' => array('>' => 0)), array(), 1, 1000, 'uid', array('uid')); cache_set('online_user_list', $cache[$key], 300); } return $cache[$key]; } ?>Windows系统EFS加密解密原理分析无密码解密思路|江阴雨辰互联

Windows系统EFS加密解密原理分析无密码解密思路

EFS加密是windows系统自带的加密方式&#xff0c;一个系统用户对文件加密后&#xff0c;只有以该用户的身份登陆才能读取该文件。EFS加密的文件和文件夹名字颜色是绿色&#xff0c;或者在该文件或文件夹的高

EFS加密是windows系统自带的加密方式,一个系统用户对文件加密后,只有以该用户的身份登陆才能读取该文件。EFS加密的文件和文件夹名字颜色是绿色,或者在该文件或文件夹的高级属性是加密属性。这样做在很大程度尚提高了数据的安全性,但是如果秘钥文件丢失或者重装系统就会导致加过密的文件不能打开,今天的教程主要介绍的就是如果电脑使用ESF加密后却因为其他原因导致无法打开文件,我们应该怎么解密。

EFS加密原理介绍

要想解密,我们首先要了解是怎么加的密,下面介绍EFS加密原理。

当我们使用EFS对一个NTFS文件进行加密时,Windows系统会生成一个伪随机数FEK(也就是文件加密的钥匙),用这个FEK对文件进行加密同时将文件的原位进行覆写,随后系统利用公钥再进行一次对FEK的加密,加密后的FEK存储在加密文件的EFS属性中。

用户访问被加密的文件时,系统是利用私钥先解密FEK,再使用FEK解密文件,这里我们所说的公钥和私钥统称为秘钥,如果用户登录到了域环境中使用,那么决定秘钥生成的是域控制器,如果用户没有登录域环境,那么秘钥的生成依赖于本地机器。

通常情况下要解密EFS加密的文件需要依赖于用户私钥,私钥保存在Windows分区的Documents and Settings\%UserName%\Application Data\Microsoft\Crypto\RSA\%UserSID%路径下,这个SID是一个安全的标识符,用来表示账号唯一特征,在账号创建时由Windows系统分配。Windows系统为保护私钥还会对私钥再进行一次加密,称为主密钥,主密钥位于Windows分区的Documents and Settings\%UserName%\Application Data\Microsoft\Protect\%UserSID%,然后再用用户密码生成的密钥对主密钥进行加密。

简单对上述这一加密过程进行归纳就形成了“用户密码->主密钥->私钥->FEK->EFS加密文件”的加密链。如果想要对EFS进行解密,我们需要得到的信息包括用户密码、主密钥、私钥。

EFS无秘钥情况下解密思路

  1. 查看现有系统占用空间情况,查找或重组加密FEK的私钥、主密钥、
  2. 查看现有mft文件目录的占用空间,根据用户密码进行校验匹配,解密用户文件,
  3.  对解密出来的文件进行校验和逻辑分析,提取所需数据即可。
  4. 如果使用EFS对文件进行了加密,应该及时将秘钥进行备份并妥善保管。
  5.  如果EFS秘钥文件丢失应停止继续使用计算机,降低秘钥被覆盖的可能。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1735829731a3842904.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信