Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ソースコードのソースコードを読みたい
Search
tosio
February 09, 2024
0
180
ソースコードのソースコードを読みたい
テテミート #7 2023/2/9
tosio
February 09, 2024
Tweet
Share
More Decks by tosio
See All by tosio
Gmailに届け
tosiooooooo
0
58
断頭台の大魔族がつながりレシピをお勧めしてくれるLINEbot
tosiooooooo
0
950
Featured
See All Featured
A Philosophy of Restraint
colly
202
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
27
1.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
80
5.1k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
Become a Pro
speakerdeck
PRO
22
4.8k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
The Illustrated Children's Guide to Kubernetes
chrisshort
46
48k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
42
2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Transcript
ソースコードの ソースコードを読みたい Medley.inc Yuji Tamai
ソースコードという日本酒を買った
隠しメッセージ!
隠しメッセージ読んでみたい・・・ けど、写経はあまりに大変そう・・・ OCRでなんとかならんかな
ChatGPT4が使えると評判のBing Copilotでやってみた
全然ダメだった
AWS Rekognition使ってみた もっとダメだった
他に画像からテキスト起こすやつないかな・・・ Googleドライブでいけるらしい
Googleドライブに画像あげてGoogleドキュメントで開くだけ
結構いい感じ!
console.log(String.fromCodePoint([!![]+!![]+!![]+!![]+!![]+!![]+, [],+!![],+!![].].join("")),String.fromCodePoint([+!!,+!!],~~[]].join(""),String.fromCode ("")),String.fromCodePoint([+!![],+!![],!![]+!![]+!![]+!![],].join(""),String.fromCode []+!![]+!![]+!![]+!![]+!![]+!![],].join("")),String.fromCodePoint([+!![],+!![], ([+!![],+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![],].join("")),String.fromCode ("")),String.fromCodePoint([!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+ ("")),String.fromCodePoint([+!![],+!![],+!![]+!![]+!![]+!![]+!![]+!![],].join(String.fromCode [],].join("")),String.fromCodePoint([+!![],+!![],+""[],].join("")),String.fromCode ("")),String.fromCodePoint([+!![],+!![],+!![]+!![]+!![]+!![]+!![],].join("")),String.fromCode ("")),)console.log(String.fromCodePoint([!![]+!![]+!![]+!![]+!![]
("")),String.fromCodePoint([+!![],+!![],+!![] なにこれ?
「+!![]」って何? JavaScriptでは、`+!![]`は次のように解釈されます: 1. `[]`は空の配列を表します。 2. `!`は論理否定演算子で、オペランドをブール値に変換し、その逆を返します。したがって、 `![]`は`false`を返します(なぜなら、空の配列は真と評価されます)。 3. 2つ目の`!`は、先ほどの`false`を再度否定し、`true`を返します。したがって、`!![]`は`true`を 返します。
4. 最後に、`+`は単項プラス演算子で、オペランドを数値に変換します。ブール値の`true`は数 値の`1`に変換されます。 したがって、`+!![]`は`1`を返します。このようなテクニックは、 JavaScriptの型変換の特性を利用したもので、しばしば難読化や圧縮のために使用されます。 🙂
試しに一部出してみた console.log(String.fromCodePoint([+!![],+!![],!![]+!![]+!![]+!![]+!![],].join(""))); => s console.log(String.fromCodePoint([1,1,1+1+1+1+1,].join(""))); console.log(String.fromCodePoint([1,1,5,].join(""))); => s
なぜ「s」が出るの? `String.fromCodePoint([1,1,5].join(""))`が"s"になる理由は、`String.fromCodePoint`メ ソッドがUnicodeのコードポイントを文字列に変換するからです。 まず、`[1,1,5].join("")`は配列の要素を連結して`"115"`という文字列を作ります。 次に、`String.fromCodePoint("115")`は、`"115"`を数値に変換し、その数値に対応する Unicodeの文字を返します。 Unicodeのコードポイント`115`は、小文字の`s`に対応しています。 したがって、`String.fromCodePoint([1,1,5].join(""))`は`s`を返します。🙂
そして隠しメッセージとは!!! 絶賛解析中です!!! 登壇に間に合いませんでした
曲面の文字列の解析大変 • Googleドキュメントでも文字起こし精度は7〜8割くらい • 元の文字が”[+!![],+!![],+!![]+!![]+!![]+!![]+!![]+!![]+!![],]”みたいなのばっかりだ から、より間違えられやすい • 曲面を3箇所から撮影してうまくつなぎ合わせればいけるかなと思ったけど、1 枚目の時点で面倒で途中で挫折 •
パノラマ撮影機能を使って結構いい感じに1枚の画像にできたけど、それでも 間違い探しが大変 • 間違え正すくらいなら、全部手で打った方が多分早い
解析完了したら 口頭で お知らせします!!! また何かのイベントでお会いしましょう
ご清聴ありがとうございました