D码点评:4 Weird JS
据说在每一个电脑维修部里,都有一个扫地的老太太. 很偶然地,当她经过一个维修工程师的身边,扫一眼显示器上字符的,会低声提醒对方说:小心,分区表出错了.
豆瓣电台的奇怪代码
来自 9月15日 00:19 的线报!
在 豆瓣FM - 红心歌曲列表 有类似代码
怎么破?! 果然, 神奇的桟溢出给解释了:
Weird javascript appeared in a page - Stack Overflow
这是种通过4个步骤制造出来的代码:
- $式声明
- 构建一个字典使用的当前值$,然后再赋值给$
- 运用字典中即有的键/值对,创建额外的键/值对并置入当前字典
- 构造立即执行的嵌套函数
一切从一个 $ 声明开始:
$=~[];
在 Chrome 的控制台,这将返回 -1
;
即数字内容,
~ 参考: D码点评:1 为毛得”10”?! 有类似的推导!
[]
变为 0,
~
(按位 NOT) 作用与 0
得到 -1
.
所以, 最终我们获得了一个 值为 -1
的变量.
等效于:
v = -1;
然后开始构建字典, 等效代码的对应如下:
现在,我们有一个字典,
包含一些 0
到 9
的数值,以及 a
到 f
的字母;
那些魔法样儿的操作?
不过是从字典中取值生成需要的JS 代码.
比如:
将错误的值赋给 “” 获得 “false”,
{}
+”” 获得 [对象 对象],等等
接下来的一系列字符串
$_
(且称为 alpha) 是用作字典元素的,
如 ($.$_)
是一系列字串
(类似的键名已声明过, 如 _$
变成 beta
, $$
是 gamma,
__
算 delta,
$
epsilon,
_
是 phi )
于是 dct.alpha ($.$_)
得到 “constructor”.
邪恶的来了, $.$$
(是我们能调用的 gamma
),
再设置上 “return”.
迷雾继续加深.
继续赋值, 这时 $.$
(即 dct.epsilon
), 设置成:
这不仅仅是一个数组查找.
dct.zero
为0,
所以 (0)["constructor"]
是查找 0
的属性 constructor
.
记住, 在 javascript 中, a["b"]
等价与 a.b
,
于是 (0)["constructor"]["constructor"]
就是 0.constructor.constructor
.
而 constructor
是数字的构造函式,
即 Function function
.
此 function
(指针) 是配给 dct.epsilon
的,
于是, 蠕虫在此返回了.
最后声明是一个嵌套函数调用 $.$$
:
blablabla…
是也乎
好的,就是这样一层层变形伪造下去, 大妈已经没有兴趣翻译了; 最终是一段标准的将网页 dom 树写入目标元素而已!
所以! 这只是利用了 JS 的小小变态能力,综合使用了普通密码学里的字串移位操作, 向浏览器输出只有机器认识的标准 JS 代码来完成不希望普通人看懂的功能.
但是,事实总是不断的证明,人类的无聊是没有底线的! 无论JS 写的多么隐晦,总是有好事者推导的出来!
再次证明, JS 是个变态语言.
并进一步证明, 豆瓣已经驾驭这种变态能力到变态的程度了…
9.14 珠海首届 DevFest:
- 快乐完成!
- 记要: DevFest2013ZhuHai Summary
- 作业: GDG DevFest 2013: Participant Survey 向Google 反馈参加体验!
巡阅
- 150113 Zoom.Quiet checked
声明: 本文采用 BY-NC-SA 授权。转载请注明转自: #ZHGDG#
以上...
加入 珠海GDG
- 注册 Meetup
- 关注 Zhuhai GDG
- 或扫描:
通过 珠海GDG 可以:
第一时间获知谷歌最新技术, 可以学到如何去谷歌平台上赚钱的思路和方法, 可以认识很多有可能将来一起走上自己创业道路的人, 可以学会把你的创新带向国际市场, 参加那里的活动有经常和国际上的开发者们进行交流的机会...
PS:
若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)
PPS:
珠海GDG 微信/Blog 欢迎投稿,只要追自认内容吻合以下条件:
0. 有趣 ~ 至少是自个儿有兴趣的领域吧... 1. 有料 ~ 至少有点儿原创的东西吧.. 2. 有种 ~ 至少不能是成功学吧!
有好物请及时通过邮件列表投稿成也:
[email protected]
(发空邮件到 [email protected] 即完成订阅)
微信公号
栏目设定:
G术图书 (gb:推荐好书,书无中外) D码点评 (dd:麻辣评点,善意满盈) G说公论 (gt:时评杂文,新旧不拘) 珠的自白(dm:大妈自述,每周一篇) 海选文章(hd:得要相信,大妈法眼)
总之, 请大家告诉大家, 珠海生活中的技术社区
都来订阅呗 ;-)
订阅方法
- 搜索微信号
GDG-ZhuHai
- 或查找公众号:
GDG珠海
- 或扫描:
GDG珠海 社区资源:
- 邮件列表: [email protected] (可发空邮件到 [email protected] 即完成订阅)
- 微信: GDG珠海
- 博客: 珠海GDG | GDG Livin ZhuHai Life;-)
大妈的多重宇宙 - YouTube
全新自媒体系列...科学幻想,读书,说故事...任何问题
随时邮件提问可也:[email protected]