9
4

JSF**k講座 4限目【全ての英字(小文字)】

Last updated at Posted at 2024-07-25

初めに

3限目の復習をしっかりとしておきましょう
3限目では以下のコードによりJSFで作ったStringの任意のコードの実行ができることを学びました

[]['at']['constructor'](/*任意のString型で記述されたコード*/)()

第4限の内容

JSFでいろいろなコードを実行できるようになるために、全ての小文字の英字を取得していきます
それに必要な

function String() { [native code] }

constructor以外の部分を見るとかなり短くまとまっているコードで取得できます

(([]+[])['constructor']+[])
//'function String() { [native code] }'
(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])
//'function String() { [native code] }'

ここから新しく手に入れられる文字は

(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]]
//'S'

(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]]
//'g'

このSが非常に有用です
実際に何ができるかみていきましょう

Num['toString'] (36)

Sを使って何をやるか?
その答えはtoStringです
toStringを使ったところで数字をStringの数字にできるだけじゃねーか
と思う方々もいるかもしれません
しかし、このtoStringの後の(36)が非常に大切なのです
toStringの引数にNをいれると、N進数に直してくれます
例えば

"00"+49151['toString'](16)
//00bfff

とやってあげれば
このような色になる16進数が帰ってきます
そしてかんの言い方はお気づきかもしれませんが、16進数は数字を

0,1,2,3,4,5,6,7,8,9
a,b,c,d,e,f

のように0~9だけではなく、a~fまでの英語も使って表します
そして36を引数に入れたとなると

0,1,2,3,4,5,6,7,8,9
a,b,c,d,e,f,g,h,i,j,k,l,m,n,
o,p,q,r,s,t,u,v,w,x,y,z

の36文字で表されます
0~9はそのままで、
10~35はa~zに対応して変換されます
つまり

10['toString'](36)
//'a'

11['toString'](36)
//'b'

12['toString'](36)
//'c'

13['toString'](36)
//'d'

14['toString'](36)
//'e'
.
.
.

33['toString'](36)
//'x'

34['toString'](36)
//'y'

35['toString'](36)
//'z'

36['toString'](36)
//'10'

というように出力されます
このようにして全ての英字(小文字)を得ることができます

最後になりますが['toString'](36)をJSFで書くとこのようになります

/*Number*/[(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(+[!![]]+([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[(+!![])+(+!![]+!![]+[])]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]]]((+!![]+!![]+!![])+(+!![]+!![]+!![]+!![]+!![]+!![]+[]))

最後に

今回も短くなってしまい申し訳ございません
次回は[]['at']['constructor']の解説をする予定です

反応本当に嬉しいですありがとうございます
前回毎日投稿やると言いましたがいきなり1分遅れてしまいました...
明日はもう少し早めに投稿します

時間割

1限目
JSF**k講座1限目【基礎講座】
2限目
JSF**k講座2限目【最初の文字たち】
3限目
JSF**k講座3限目【関数の実行】
4限目
JSF**k講座4限目【全ての英字(小文字)】(ここ)

チートシート
JSFチートシート

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4