`

javascript:可以运行的噪音

阅读更多

为我的博客做了一个很有 geek 风格的关于页面

运行下面 javascript 代码,可以看到我的信息。

 

(+[[]+(1<<1<<1<<1)+(1^1<<1)+(1<<1>>1)+(-~1<<1<<1)+(1.1>>1.1)+(11>>>1)])[[(!!/-/+{})[111^111]+[[]+{}][!1&.1][1|1>>1|1]]+([111/[]+[]][+(1>1)][([]+{})[11-1>>1]+[[],[]+{}+[]][[]+1][1]+(/^/[1]+[])[1|1>>1|1]+[{},1e1,!{}+[]][1+1][1<<1^1]+(11/!{}+{})[~1+1e1+~1]+[!!{}+{}][[]&111][1&1]+(/^/[111]+[])[11^11]+[{},[{}]+{},1][1+[]][11-~1+11>>1]+(!!1+{})[1&1>>1]+([]+{1:1}+[])[1|1]+[[]+!!1][111>>>111][1<<1>>1]]+[])[([]+![111])[1|1<<1|1]+[/=/,[]+[][11]][1|[]][1>>1]+([{}]+{})[1+!![1]]+[1,!1+/~/][1%11][1^1<<1]+(111/[]+{})[~1+1e1+~1]+[!!/-/+/-/][111%111][+!!1]]((~1+1e1+1)+((!1&.1)==([]+/-/[(!![111]+{})[1^1]+(!![1]+[])[1<<1^1]+(!{}+{})[1^1<<1]+(!![1]+/-/)[+(1>1)]])[+(1>1)]),1-~1<<1)](~1-~1e1<<1<<1)+":"+(([]===[])+/-/)[5]+(([]===[])+/-/)[5]+(+[[]+(1e1>>1)+(~1+1e1+~1)+(!1&.1)+(111%11)+(1+1<<1)+(1<<1^11>>1)+(1<<1<<1)+(~1+1e1+1)+(+(1>1))+(+[])+(~1-1+11)+(-~1<<1<<1)+(1-~1<<1)+(~1+1e1)])[[(!!/-/+[])[11&[]]+[[]+{11:11}+[]][111>>111][1+[]]]+([11/!1+/1/][1&1>>1][([{}]+{})[1e1>>1|1]+[[],[]+{111:111}+[]][1|1][111%11]+([]+[][11])[1<<1>>1]+[{},1e1,!/~/+{}][1<<1^1>>1][1<<1^1]+([]+11/!{})[~1+1e1+~1]+[!![111]+[]][1%1][1&1]+([]+[][111])[.1^!1]+[{},[]+{},1][111%11][11-~1+11>>1]+([]+!!1)[111>>>111]+([]+{}+[])[[]+1]+[!!1+[]][1^1][111%11]]+[])[(!1+{})[1^1<<1]+[/=/,[]+/^/[11]][1|[]][11.11>>11.11]+([]+{}+[])[~~(1.1+1.1)]+[1,!{}+/~/][1][1|1<<1]+(1/!{}+[])[~1+1e1+~1]+[!![1]+{}][111.111>>111.111][1+[]]]((11^1<<1)+((1>>1)==([]+/-/[(!!/-/+/-/)[+(111>111)]+(!![11]+[])[1-~1]+(![11]+{})[1|1<<1|1]+(!!{}+[])[11%11]])[111.111>>111.111]),11+1>>1)](~1-~1e1<<1<<1)+"."+(+[[]+([]+1)+(1-~1<<1)+(1+1<<1)+(1|1<<1)+(1<<1<<1<<1)])[[(!!1+{})[!1&.1]+[[]+{}+[]][1&[]][1+[]]]+([11/[]+{}][+(111>111)][([{}]+[{}])[1e1>>1]+[[],[]+{}][[]+1][+!!1]+(/^/[111]+/&/)[1&1]+[{},1e1,!1+[]][1<<1][1^1<<1]+(111/!{}+/1/)[~1+1e1+~1]+[!!/-/+[]][11>>11][1|1]+([][1]+/&/)[1.1>>1.1]+[{},[{}]+{},1][~~1][1+1e1+1]+([]+!!1)[1^1]+([]+{})[1&1]+[!!1+{}][!1&.1][1|[]]]+[])[([]+!1)[1|1<<1|1]+[/=/,[]+/^/[11]][111%11][11.11>>11.11]+([{}]+[{}])[~~(1.1+1.1)]+[1,[]+!/~/][1|1>>1|1][1^1<<1]+([]+11/[])[11+1>>1]+[!!/-/+{}][+(1<1)][~~1]]((1e1-1)+((+[])==([]+/-/[(!!1+[])[!1&.1]+(!!/-/+/-/)[1|1<<1|1]+(!1+{})[1<<1^1]+(!![1]+/-/)[11>>11]])[111^111]),-~11>>1)](~1-~1e1<<1<<1)

 

如何实现的呢?

@OKter 说是 ASCII 码拼接。到底是不是呢?

第一步

先来个简单的,就以 justjavac 为例吧。首先我们要输出 j

下面这段代码可以输出 j

(1+{})[4]

解释:代码 1+{} 的结果是 "1[object Object]", 显然,我们得到了一个包含 j 的字符串。但为什么会如此奇怪呢?毕竟我们都期望 1+{} 的结果应该是 1。

对象加法

有下面这样的一个加法操作。

value1 + value2

在计算这个表达式时,内部的操作步骤是这样的 (§11.6.1):

  1. 将两个操作数转换为原始值 (以下是数学表示法的伪代码,不是可以运行的 JavaScript 代码):

     prim1 := ToPrimitive(value1)
     prim2 := ToPrimitive(value2)
    

    PreferredType 被省略,因此 Date 类型的值采用 String,其他类型的值采用 Number

  2. 如果 prim1 或者 prim2 中的任意一个为字符串,则将另外一个也转换成字符串,然后返回两个字符串连接操作后的结果。

  3. 否则,将 prim1 和 prim2 都转换为数字类型,返回他们的和。

更多详细内容参考

 

由于字符串可以当作数组一样取里面的元素,于是 (1+{})[4] 就得到了 j。

第二步

既然我们得到了 j,那下一步就是 u 了。我们还是按照这个思路,哪个字符串里面还有 u 呢? 在 javascript 中确实有这么一个特殊的值,含有 u: "undefined",思来想去,可以使用这段代码:

/1/[1]+[]

分开解释:

  1. /1/ 是一个正在表达式

  2. 当他后面跟上 [] 时,被强制转换成了数组,然后去取里面的元素(第二个元素),得到的结果是 undefined(注意:是 undefined 值,不是字符串)

  3. 把 undefined 转换成字符串,在这里我们把它和数组相加。

呵呵,上面使用正在表达式 /1/ 有点儿卖弄的嫌疑,其实用 1[1] 就够了。 为了更有 geek 感,可以多出现 0 和 1。通过 /1+/[+0]+[+1] 我们可以得到字符串 "undefined1"。

使用数组操作符把我们想要的 u 提取出来, (/1+/[+0]+[+1])[0]

现在我们已经得到了字符串 "ju" 了。按照这种方法,我们可以得到其他的字符串。没有做不到的,只有想不到的。

问题来了

用这种方法能拼出所有的字符吗? @长夜 则提出了更深的问题: “可以拼中文吗?”

@TODO 待续……

大功告成

当我们得到了所有的字符串,就可以使用 + 号把他们连接起来。 你以为这就完了吗?当然远远没有,我们应该让我们的代码更 Cool,更有 geek 范。

相关阅读:

31
4
分享到:
评论
5 楼 zonghengmodao 2013-06-03  
4 楼 qi04072008 2013-06-02  
redis 写道
  极客 geek 

3 楼 bili1483 2013-06-02  
为什么?还以为回复一下会变的
2 楼 bili1483 2013-06-02  
(+[[]+(1<<1<<1<<1)+(1^1<<1)+(1<<1>>1)+(-~1<<1<<1)+(1.1>>1.1)+(11>>>1)])[[(!!/-/+{})[111^111]+[[]+{}][!1&.1][1|1>>1|1]]+([111/[]+[]][+(1>1)][([]+{})[11-1>>1]+[[],[]+{}+[]][[]+1][1]+(/^/[1]+[])[1|1>>1|1]+[{},1e1,!{}+[]][1+1][1<<1^1]+(11/!{}+{})[~1+1e1+~1]+[!!{}+{}][[]&111][1&1]+(/^/[111]+[])[11^11]+[{},[{}]+{},1][1+[]][11-~1+11>>1]+(!!1+{})[1&1>>1]+([]+{1:1}+[])[1|1]+[[]+!!1][111>>>111][1<<1>>1]]+[])[([]+![111])[1|1<<1|1]+[/=/,[]+[][11]][1|[]][1>>1]+([{}]+{})[1+!![1]]+[1,!1+/~/][1%11][1^1<<1]+(111/[]+{})[~1+1e1+~1]+[!!/-/+/-/][111%111][+!!1]]((~1+1e1+1)+((!1&.1)==([]+/-/[(!![111]+{})[1^1]+(!![1]+[])[1<<1^1]+(!{}+{})[1^1<<1]+(!![1]+/-/)[+(1>1)]])[+(1>1)]),1-~1<<1)](~1-~1e1<<1<<1)+":"+(([]===[])+/-/)[5]+(([]===[])+/-/)[5]+(+[[]+(1e1>>1)+(~1+1e1+~1)+(!1&.1)+(111%11)+(1+1<<1)+(1<<1^11>>1)+(1<<1<<1)+(~1+1e1+1)+(+(1>1))+(+[])+(~1-1+11)+(-~1<<1<<1)+(1-~1<<1)+(~1+1e1)])[[(!!/-/+[])[11&[]]+[[]+{11:11}+[]][111>>111][1+[]]]+([11/!1+/1/][1&1>>1][([{}]+{})[1e1>>1|1]+[[],[]+{111:111}+[]][1|1][111%11]+([]+[][11])[1<<1>>1]+[{},1e1,!/~/+{}][1<<1^1>>1][1<<1^1]+([]+11/!{})[~1+1e1+~1]+[!![111]+[]][1%1][1&1]+([]+[][111])[.1^!1]+[{},[]+{},1][111%11][11-~1+11>>1]+([]+!!1)[111>>>111]+([]+{}+[])[[]+1]+[!!1+[]][1^1][111%11]]+[])[(!1+{})[1^1<<1]+[/=/,[]+/^/[11]][1|[]][11.11>>11.11]+([]+{}+[])[~~(1.1+1.1)]+[1,!{}+/~/][1][1|1<<1]+(1/!{}+[])[~1+1e1+~1]+[!![1]+{}][111.111>>111.111][1+[]]]((11^1<<1)+((1>>1)==([]+/-/[(!!/-/+/-/)[+(111>111)]+(!![11]+[])[1-~1]+(![11]+{})[1|1<<1|1]+(!!{}+[])[11%11]])[111.111>>111.111]),11+1>>1)](~1-~1e1<<1<<1)+"."+(+[[]+([]+1)+(1-~1<<1)+(1+1<<1)+(1|1<<1)+(1<<1<<1<<1)])[[(!!1+{})[!1&.1]+[[]+{}+[]][1&[]][1+[]]]+([11/[]+{}][+(111>111)][([{}]+[{}])[1e1>>1]+[[],[]+{}][[]+1][+!!1]+(/^/[111]+/&/)[1&1]+[{},1e1,!1+[]][1<<1][1^1<<1]+(111/!{}+/1/)[~1+1e1+~1]+[!!/-/+[]][11>>11][1|1]+([][1]+/&/)[1.1>>1.1]+[{},[{}]+{},1][~~1][1+1e1+1]+([]+!!1)[1^1]+([]+{})[1&1]+[!!1+{}][!1&.1][1|[]]]+[])[([]+!1)[1|1<<1|1]+[/=/,[]+/^/[11]][111%11][11.11>>11.11]+([{}]+[{}])[~~(1.1+1.1)]+[1,[]+!/~/][1|1>>1|1][1^1<<1]+([]+11/[])[11+1>>1]+[!!/-/+{}][+(1<1)][~~1]]((1e1-1)+((+[])==([]+/-/[(!!1+[])[!1&.1]+(!!/-/+/-/)[1|1<<1|1]+(!1+{})[1<<1^1]+(!![1]+/-/)[11>>11]])[111^111]),-~11>>1)](~1-~1e1<<1<<1)  
1 楼 redis 2013-06-01  
  极客 geek 

相关推荐

    计算机应用基础(本科).txt

    任务被启动时,通常先将全部程序和数据装入内存,然后再开始运行 * B. 系统可用的内存容量就是硬件配置时实际配置的内存条的容量 * C. CPU的时间被分成若干时间片,任务在不同的时间片中轮转完成 * D. 只有当前活动...

    worleyjs:可嵌入和可自定义的Worley Noise生成器,使用纯Javascript编写

    完全用JavaScript编写的易于使用的Worley噪声生成器。 该模块是可嵌入和可自定义的。 该模块可在浏览器,Web Worker和节点中使用。 该模块可以通过CommonJS,AMD或script标签进行实例化。 考虑到使用ES6编写和实现的...

    reisy:运行时可扩展的内联样式

    噪音由两部分组成。 一个运行时库,用于解析和构造样式表和属性,还有一个babel插件,该插件允许您使用类似CSS的语言内联JS内联编写样式定义。 以下示例将使用类似于CSS的语法来引导您了解reisys的所有功能。感言...

    murmur:旨在减少噪音并鼓励共享的邮件列表

    Murmur将Django与MySQL后端配合使用(您可以用Django支持的任何其他后端替换)。 对于电子邮件,我们将后缀与python lamson库一起使用。 安装Git并克隆此存储库 git clone https://github.com/haystack/murmur.git ...

    Kitten-reflection

    小猫反射 林雪平大学图像程序方法项目 (TNM084)。 一团糟。 除了猫之外的所有东西都是程序生成的。 它在笔记本电脑上很慢,但在我糟糕的旧游戏电脑上以 60 fps 的速度运行。... Javascript 噪音: : GLSL 噪音: :

    PSA:一个Javascript库,用于构建任意的专用选择性聚合(PSA)应用程序

    此javascript库是为构建任意PSA应用程序而开发的。 兼容性 该库支持CommonJS和ES模块,并在Node环境和浏览器中运行。 安装说明 要安装该库,只需执行 $ npm install psa-lib 在项目根目录中。 导入库 var PSA = ...

    Terrain-Generator:噪声和基于Voronoi的地形生成

    基于噪声和Voronoi的地形生成 完全基于。 基于主体的边界模拟 我最初盯着这个是因为我想尝试通过模拟代理生成半现实的边界。 可能是遗传算法? 也许有强化学习? 我们将看到...现在,我只是将其移植到Rust上,并在...

    noize:Web应用程序可消除或消除背景白噪声

    噪声化Noize是一个使用React构建的简单Web应用程序(使用 ),可帮助人们使用白噪声或背景噪声放松/集中注意力。现场。可用脚本在项目目录中,可以运行:npm start在开发模式下运行该应用程序。打开在浏览器中查看它...

    show-simplex-cli:一个使用ASCII在您的终端中显示动画单工噪声字段的CLI

    好吧,,所以您可以! npx执行 运行以下命令以执行show-simplex-cli而无需全局安装模块 npx show-simplex-cli show-simplex 其他选项 选项 描述 -b ,- --block 显示块替代可视化 -a ,- --angle 显示角度替代...

    noisecloud:噪音云协同创造……嗯……噪音。 直接在浏览器中使用网络音频

    使用 NoiseCloud,您可以在网络上协作处理艺术噪音装置。 创建基本的声音补丁,将它们连接在一起,在其他人仍在努力的时候构建在其他人的构建之上,然后看看其他人如何处理您的噪音。 关于黑客 我们想要破解 HTML ...

    VidCode:视频代码演示

    除了此处列出的 Vidcode 对象之外,还可以在编辑器中运行任何功能性 JavaScript,以创建产生视频魔术的脚本的无限组合! 下面是可以在平台上操作的自定义对象。 FILTERS //效果对象公开可应用于视频的过滤器。 ...

    tachometer:网络上的统计严格基准测试运行程序

    即使您在同一浏览器,同一台机器,同一天运行完全相同JavaScript,您每次测量的结果也可能会有明显不同的结果。 因此,乍一看,通常很难说出任何有关脚本性能的有意义的信息。 但是噪音中有信号。 脚本确实具有...

    微信小程序实例-智能小时钟.zip

    -智能小时钟,“集每日待办、专注计时、打卡、备忘、自习、白噪声等多种实用功能于一体,助你轻松将每一天打理得井井有条,享受高效生活。” 下载下来之后,即可使用,可根据个人的需求,进行一些修改,即可用于...

    Java鼠标界面跳转源码-NetCraft:Fogleman/Craft的基于Web的分支:tent:

    噪声生成简单但美观的地形。 可以轻松添加超过 10 种类型的块。 支持植物(草、花、树等)和透明度(玻璃)。 天空中的简单云(它们不动)。 日/夜循环和带纹理的天穹。 世界变化持续存在于 sqlite3 数据库中。 多人...

    AWS-Transcribe-Audio-Text-ASR:在后端使用AWS Transcribe和Javascript进行音频到文本的转换。 托管在EC2上

    整个过程大约需要20秒钟才能完成,并且只要音频清晰且没有太多噪音,结果就大部分是准确的。 控制流程: 仅在Firefox上打开以下链接: : 允许麦克风访问网页 现在,录制您选择的音频并将其保存到您选择的目录中...

    generative-music-web-audio:JavaScript的Web Audio API中内置的自定义合成器,效果和合成算法

    生成音乐网络音频 使用Web Audio API制作的自定义合成器和效果的集合 ...一对常用的缓冲区-一个会生成一个常量值(因为许多浏览器都不支持Web Audio API的ConstantSourceNode),另一个会输出噪音 简历节点 8个

    nodejs-microservice-poc:微服务PoC在Docker内部的Node.js上运行

    请注意,这是对工作服的补充jsdoc的Javascript文档符号评估Inch CI中的内联代码文档 基于约曼发电机的脚手架发电机噪声Generator-restify-mongo 安装和设置 Node.js npm install 连接到远程Github存储库(仅一次) ...

    pid控制器代码matlab-PID_Node.js_Framework:PID_Node.js_Framework

    该项目可以在任何支持Node.js并使用JavaScript编程的开发板上运行,例如Intel Galileo / Edison板。 先决条件 您需要安装以下软件程序,以确保项目能够正确运行: MATLAB R2011a或最新版本。 '最新版本'。 如果您将...

    彩虹UDA软件狗工具带硬复制工具

    提供了针对 Linux 内核 2.2 和 2.4 版本驱动程序,开发商可以使用 Linux 模块保护运行于 Linux 操作系统上的应用程序。 新增功能: 软件狗开发套件 3.0 版新增功能在软件狗开发套件 V3.0 中,新增了与原并口...

    noisegame:Noisegame-互动声音游戏

    WS服务器可以通过UDP数据包将传入的Csound事件命令发送到使用--port命令运行Csound的另一台计算机,或者启动本地csound实例并在那里进行处理。 Csound引擎播放来自PA的声音,在某些时刻应用过滤器,将声音的某些...

Global site tag (gtag.js) - Google Analytics