们可以针对不同的访问者,隐藏部分内容,这时候就用到客户端的网页加密解密技术,用作选择性隐蔽展示。当然客户端的加密安全度是不能与服务器相提并论,肯定不能用于密码这类内容的加密,但对于一般级别的内容用作展示已经够了。
主要学习的是:
string 对象的charCodeAt()方法和fromCharCode()方法对字符的ASCII编码进行获取和修改。
下面是完整代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>网页加密及解密</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<p><textarea id="text1" name="textfield" cols="50" rows="5">钱庄王员外这个人怎么样?</textarea></p>
<input type="button" name="Button1" value="加密" onClick="Encrypt(text1.value)">
<input type="button" name="Button2" value="解密" onClick="unEncrypt(text1.value)">
<script language="JavaScript">
var p=0;
function Encrypt(Text) {
p=p+1;
output=new String;
alterText=new Array();
varCost=new Array();
TextSize=Text.length;
for (i=0; i < TextSize; i++) {
idea=Math.round(Math.random() * 111) + 77;
alterText[i]=Text.charCodeAt(i) + idea;
varCost[i]=idea;
}
for (i=0; i < TextSize; i++) {
output +=String.fromCharCode(alterText[i], varCost[i]);
}
text1.value=output;
}
function unEncrypt(Text) {
if (p>0){
p=p-1;
output=new String;
alterText1=new Array();
varCost1=new Array();
TextSize=Text.length;
for (i=0; i < TextSize; i++) {
alterText[i]=Text.charCodeAt(i);
varCost[i]=Text.charCodeAt(i + 1);
}
for (i=0; i < TextSize; i=i+2) {
output +=String.fromCharCode(alterText[i] - varCost[i]);
}
text1.value=output;
}
}
</script>
</body>
</html>
案列视频演示:
JS案例演示,网页的加密解密
(科技自媒体原创作者:钱庄王员外)
标站点:
aHR0cHMlM0EvL2subS5hdXRvaG9tZS5jb20uY24vZGV0YWlsL3NoYXJlXzAxZG1xeThmYTE2OHZrYWU5aDYwdmcwMDAwLmh0bWw=
该地址经过base64加密,可以通过如下地址进行解密:
https://base64.supfree.net
准备工具:
chome浏览器,python3.7语言环境,pycharm,百度字体编辑器:http://fontstore.baidu.com/static/editor/index.html
破解方法:
1、打开chrome浏览器,在浏览器地址栏中输入目标地址,打开网页后,在页面中点击鼠标右键,选择检查,可以看到相关文字已被加密。
文字被加密
2、可以通过复制,来验证文字是否被加密。如复制:
老朋友的推荐
复制出的文字为:
老朋友?推荐
3、此类现象为文字被CSS样式加密,破解步骤如下:
1、通过浏览器开发者模式,找到页面中文字所使用的css样式 2、通过抓包等方法找到加载的css文件,通过正则表达式取出字体文件URL 3、通过百度字体编辑器解析woff文件:http://fontstore.baidu.com/static/editor/index.html 4、使用fontTools处理字体文件,得出对应关系 5、通过对应关系解析加密字体
4、首先使用python的request模块请求该页面,通过正则表达式获取字体文件URL,请求该URL,获取到字体文件,写入到本地。
5、通过百度字体编辑器,解析ttf文件
6、通过百度字体编辑器,可以看到,"的"对应的字体编码为"$EC2A",接下来通过python下的fontTools模块读取该TTF文件,并建立文字对应关系,保存为字典。
7、通过for循环遍历该文字对应关系字典,对原网页返回进行替换,即可得到正常数据。
老朋友的推荐,去看了一几个牌子,头都看晕了,没有结果,决定不了买哪个牌子,九了女儿意见,准备在荣威里面选盘款。性价上最高的就是I5了,看中这款的原因,并不是因为配置高,也不是养力强,而是囊中羞涩,预算控有那么电啊?,而荣威这个品牌过硬,质量可靠,故障率低,朋友买了都说挺一的。暂时没有,还是觉外有点说不过去啊!买车看车子做这个决定,是和女儿共同商量决定的,我看中的是这个牌子的知名度,品质这些方面,女儿的话是喜欢这款车型的十观,女孩子嘛,都是十貌协会,两厢车上较炫酷,十形时尚养感,适合年轻妹子。女儿盘看就中意了。
代码参考:
https://github.com/freedom-wy/js-reverse/tree/master/autohome/koubei
欢迎交流,一起学习,一起进步。
另外,我在慕课网上主讲课程:
《Python爬虫工程师必学——App数据抓取实战》,还请各位大神多多支持。课程地址:
我们最近遇到了一些文件被恶意下载的情况。如果不及时处理,OSS的每日流量费用将超过1000元。为了解决这个紧急问题,我们不得不暂时下架这些文件。
今晚,发现了一个有趣的项目:Staticrypt。它可以给静态HTML页面加上密码保护,非常实用。
安全加密并密码保护你的公共静态HTML文件的内容,这些文件将在浏览器中解密,无需任何后端支持,因此可以通过Netlify、GitHub Pages等静态托管服务进行发布。
StatiCrypt使用AES-256和WebCrypto技术,以你的长密码加密HTML文件,并返回一个静态HTML页面,该页面会显示一个密码提示,现在你可以安全地上传这个页面,其中包含了你的加密内容,解密过程在客户端的JavaScript中进行。
StatiCrypt 能在没有后端的情况下保护 HTML 页面密码。
StatiCrypt 使用 WebCrypto 技术来生成一个静态的、受密码保护的页面,页面会在浏览器中解密。
你可以将生成的页面上传到一个静态内容托管的平台(比如 GitHub Pages)。
这样,用户访问页面时会看到一个密码输入框,输入正确的密码后,JavaScript 就会在浏览器中解密并加载你的 HTML 内容。
简单来说,它就是加密你的页面,并把密码输入界面做成一个用户友好的方式放在新的文件里。
StatiCrypt 采用的AES-256 加密,虽然 AES-256 是最先进的加密技术之一,但在面对暴力破解(brute-force)或字典攻击(dictionary attack)时,若密码短语不够长或不够复杂,依然有可能被攻破。因此,还需要使用一个长且不寻常的密码短语以提高安全性。
几个名词解释:
1. AES-256 (高级加密标准-256位): 一种对称加密算法,使用 256 位的密钥来加密和解密数据,被广泛认为是非常安全的加密标准。
2. 暴力破解 (brute-force attack): 一种攻击方法,攻击者尝试所有可能的密码组合,直到找到正确的密码。由于密码的复杂性越高,暴力破解所需的时间就越长。
3. 字典攻击 (dictionary attack): 一种攻击方法,攻击者使用一个预先定义的密码字典(包含常见密码或密码组合)来尝试破解密码。与暴力破解不同,字典攻击利用了密码的常见性来提高破解效率。
Staticrypt通过npm作为CLI提供,使用npm install -g staticrypt进行安装,并按如下方式使用:
Usage: staticrypt <filename><passphrase>[options]
Options:
--help 显示帮助信息[boolean]
--version 显示版本号[boolean]
-e,--embed 是否在页面中嵌入 crypto-js(或者使用外部 CDN)[boolean][default:true]
-o,--output 生成的加密文件的文件名/路径[string][default:null]
-t,--title 输出 HTML 页面的标题[string][default:"Protected Page"]
-i,--instructions 显示给用户的特别说明[string][default:null]
-f,--file-template自定义 HTML 模板的路径,包含密码提示框[string][default:"[...]/cli/password_template.html"]
使用示例
1、cd 静态文件夹
2、输入:staticrypt example.html -p leadsoft,对当前页面进行加密。
3、输入:http-server
4、访问http://127.0.0.1:8080/example.html
5、输入密码:leadsoft
6、现在可以愉快的访问页面了。
文件大小,也从1K增加到了35k。
7、当然,你可以可以自定义HTML以使加密页面符合您的风格
*请认真填写需求信息,我们会在24小时内与您取得联系。