密码学笔记——eval(function(p,a,c,k,e,d) 的加密破解

例题:

小明某天在看js的时候,突然看到了这么一段代码,发现怎么也理不出代码逻辑,你能帮帮他吗?

格式:SimCTF{}

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')</1>',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))

1、其实这个eval(function(p,a,c,k,e,d){}))中自带解码函数e(),“while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p”  while循环产生的每个p就是解码后的函数代码,我们删掉源码中的“return p”,不用将结果返回, 而是直接输出在一个文本区域中,如“document.getElementById(”textareaID”).innerText=p”

2、

原代码:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')</1>',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))

修改后的代码:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);document.getElementById('textareaID').innerText=p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')</1>',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))

代码如下:

<!DOCTYPE html P LIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title> Crack Baidu统计构造函数</title><meta http-equiv="content-type" content="text/html; charset=UTF-8" /><meta http-equiv="X- -Compatible" content="IE=EmulateIE7" /><meta name="Author" content=www.gemingcao.com/><meta name="Keywords" content="" /><meta name="Description" content="" />  </head><body><textarea id="textareaID" rows="25" cols="50"></textarea><script type="text/javascript">eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);document.getElementById('textareaID').innerText=p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')</1>',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))</script></body></html>

3、保存为html文件,其结果为

4、发现是Unicode编码,用 http://tool.chinaz.com/tools/unicode.aspx

5、另一种方法是,用在线的js混淆还原工具

http://tool.lu/js

注:本笔记参考http://www.cnblogs.com/wangchunming/archive/2012/04/01/2429455.html

----------------------------------------------------------------分割线---------------------------------------------------------

ps:萌新一枚,本文纯为学习笔记,以防某日犯傻忘记--。如有不妥处,望大佬们赐教~

转载于:https://www.cnblogs.com/xdjun/p/7467981.html

密码学笔记——eval(function(p,a,c,k,e,d) 加密破解相关推荐

  1. 揭晓eval(function(p,a,c,k,e,r)js代码解密加密程序

    最近大雄搜集站,在弄改一个wp网站侧边栏的小工具就发现了,JS的代码脚本很乱,不是常规写法,后来查阅发现是由于JS加密造成的,我对这种事情很不理解,有一些既然是选择开源了,为啥JS还加密.走你,那就一 ...

  2. python js反混淆 eval(function(p,a,c,k,e,d){

    前言 在Python爬取资源的时候需要分析网站,有时候关键部分的JS会被混淆,所以不得不去解密这段JS去获取数据,这里推荐两个JS在线解密工具. https://www.sojson.com/jsji ...

  3. [js] 不用 + eval Function 实现加法

    [js] 不用 + eval Function 实现加法 // 使用位运算符实现 function add (a, b) {if (a == 0 || b == 0) {return a || b;} ...

  4. 【现代密码学基础Introduction to Modern Cryptography】02 完美性加密(perfectly secret encryption)

    [现代密码学基础Introduction to Modern Cryptography]02 完美性加密(perfectly secret encryption) Perfect secrecy 1. ...

  5. 密码学领域重大发现:山东大学王小云教授成功破解MD5

    密码学领域重大发现:山东大学王小云教授成功破解MD5 [日期:2004-09-05] 来源:山东大学 作者: [字体:大中小] 转自山东大学 [本站讯]2004年8月17日的美国加州圣巴巴拉,正在召开 ...

  6. 安卓加密软件_oppo加密笔记在哪里?oppo手机怎么给云笔记加密? - 敬业签便签...

    在国内很多用户的认知中,OPPO是一种手机品牌,因其靓丽的外型和高清的拍照摄像技术等优势受到了很多年轻用户的喜爱.OPPO手机所采用的系统是基于安卓系统进行开发的,所以其本质上属于安卓手机.和很多其他 ...

  7. 信息论——密码学笔记(七)

    一.信息论 Claude Elmwood Shannon于1948年首先确立了现代信息论. 1.信息量(amount of information):假设所有消息是等可能的,对消息中所有可能的值进行编 ...

  8. 密码学笔记1-信息安全的基本属性(机密性、认证、完整性、不可否认性)

    机密性(confidentiality):保证信息被授权者使用而不泄露给未授权者:即让未授权者看不到信息或者看不懂信息: 认证(Authentication):认证包括消息认证和身份认证: 消息认证: ...

  9. 分组密码体制【密码学笔记】

    分组密码的基本概念 ​ 分组密码在加密过程中不是将明文按字符逐位加密,而是首先要将待加密的明文进行分组,每组的长度相同,然后对每组明文分别加密得到密文.加密和解密过程采用相同的密钥,称为对称密码体制. ...

最新文章

  1. 巩固一下C语言中的指针
  2. golang count 单字符 字符串 统计函数
  3. python自学网址-关于python学习,最系统的学习网站看这里
  4. 敲诈勒索比特币不断,企业用户如何防“山寨”钓鱼邮件
  5. ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练实现二分类预测(基于训练好的模型进行新数据预测)
  6. Visual Studio 2019 RC入门——第1部分
  7. 计算机rank函数怎么用积分排名,excelrank函数积分排名
  8. Spring-基础设施类
  9. 深度学习基础(十)—— 稀疏编码(二)
  10. [tensorflow]tensorflow 顺序模型(Sequential model)
  11. 判断一个整数是否为2的方幂
  12. 接入百度智能云文字识别OCR记录
  13. 运行iphone模拟器
  14. SEM测试样品减薄及表面复型
  15. 云信api_网易数帆开源贡献获业界肯定,轻舟API网关获OSCAR尖峰开源技术创新奖...
  16. CIO圈子里的“老行家”:太平绅士赖锡璋
  17. 看完抖音,感觉我穷我活该,跟个废物一样
  18. python面试常见问题汇总(1-30)
  19. Redis学习 master/slave(主从)、sentinel(哨兵)、Cluster简单总结
  20. 使用MathType编辑公式时,删除键backspace和delete不好用,解决办法

热门文章

  1. java当前4中引用_Java的四种引用
  2. 【开源项目】基于FFmpeg的RGB格式封装MOV文件
  3. python做自动化控制postman_python自动化测试入门篇-postman
  4. mysql数据导出不完正_【MySQL】mysqldump 导出数据 常见问题
  5. xp精简工具_办公人士需要精简Win10吗?
  6. python输入input数组_python怎么输入数组
  7. 计算机应用技术一级考试成绩,《计算机应用基础》课程与等级考试成绩的关系...
  8. mysql 远程服务器返回错误404_远程服务器返回异常: (404) 未找到
  9. 微软project服务器搭建,Project Professional 版本(Project Server 2010 设置)
  10. 2018秋计算机基础在线作业华师,18秋华师《计算机基础》在线作业3(标准答案).doc...