LoginSignup
12
12

More than 5 years have passed since last update.

サーバ不要の自己複製base64ページ作った。

Last updated at Posted at 2016-03-14

Base64

Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。(Wikipediaより)

例えば
hiyoko.jpg
こんな画像
base64コマンドを使って

$ base64 hiyoko.jpg

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAoACgDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAUGBAcD/8QALBAAAQMDAwMEAAcBAAAAAAAAAQIDBAAFEQYSITFBURMUFXEiI0JSYZGhwf/EABkBAAMBAQEAAAAAAAAAAAAAAAMEBQYAAv/EACERAAICAgICAwEAAAAAAAAAAAECAAMREgQhMVETQcHw/9oADAMBAAIRAxEAPwCYvnvZ0hMmyzI3rN7d6Nm0+RhR46GmlnssrUN2gOSwzEUtYEj8xLm1I6qTjjJHY8Zpu8h+Xb3TGSmLIBKdrqMoVnx3Bx/VeWlLFMi3N6St5Ts1/DbTKDlDScZUVEdSfPishv19fs1orz/dTqtpn6f06x7W1MJaUOd6sKWs+Sev/KeqXZ9TRDHuUVl5C04/GnkZ/nqK5nD0vCTcflp0cfIekWfU3FRCepA5x/macxpLUNSERxsSkYGTk0v8hVgVOfcA3EVs+/eZL670ONLvNvW9yOIS0nY/JClFKuwPOKK65HiRtTWH20zlIUFA4GQR35opoIbRuo8wScpahpaexN9jtVmtMYMw4jKf3LWkKWo+STU1qCFb496XPiRGUP7CnLY27vsdCa1PSynkHFJ7hJ9TJJqraqsmpEU49bK+2fM8PkW5DYwQPNL31NlWVDPPepG43I228raOQ2s7kn7req6JdSAk8cd+tQm76MsBdfEtrFdxDe2JUQgnkUVDx5yivIXgKOAaKJXaUGBA2cVLDsZXPTkn9VKZ1xQAcqFFFUXczwqgSRmz7ROdUJb7rvp5LiW28+j2znz0OP8Aaj3pkli0LuUdMh+F7lbGxtBK0JHIcUOgSaKKSFS5z7IjfZWNtCz/AJhR3RZayRuTgc47/R+6KKKHYgDkCdYxQgCf/9k=

こんな風に文字列で表現されるようになる。
上で生成された文字列の先頭にdata:image/jpg;base64,とつけるとDataURIとして扱える。
スクリーンショット 2016-03-15 1.16.26.png
こんな感じ。

本題

画像だけでなくHTMLもbase64形式での表現が出来るので、

textareaなんかで自ページのソースコードを書き換える。→base64エンコードしてlocation.hrefで更新
というような事が可能。
↓実際に作った。
http://anochick.github.io/rat/

スクリーンショット 2016-03-15 1.32.24.png
コレがデフォルトページ。適当に加工してみてからUpdate
ちなみに、日本語を使う場合は更にエンコードが必要この記事では紹介してない。

こうなる
スクリーンショット 2016-03-15 1.40.22.png

data:text/html;base64,PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTIuMi4xLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICAkKGZ1bmN0aW9uKCl7CiAgICAgICAgJCgnI2h0bWwnKS52YWwoJCgnaHRtbCcpLmh0bWwoKSkKICAgICAgICAkKCcjcmVmcmVzaCcpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSAnZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LCcrd2luZG93LmJ0b2EoJCgnI2h0bWwnKS52YWwoKSk7CiAgICAgICAgfSkKICAgICAgfSkKICAgIDwvc2NyaXB0Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgo8IS0tCmJvZHl7CmJhY2tncm91bmQtY29sb3I6I2VkYzsKfQotLT4KPC9zdHlsZT4KICA8L2hlYWQ+CgogIDxib2R5Pgo8aDE+SGVsbG8sV29ybGQhPC9oMT4KPG1hcnF1ZWU+d2VsY29tZSEgPC9tYXJxdWVlPgogICAgPHRleHRhcmVhIGlkPSJodG1sIj48L3RleHRhcmVhPgogICAgPGJ1dHRvbiBpZD0icmVmcmVzaCI+VXBkYXRlPC9idXR0b24+CiAgCjxwPkNvcHlyaWdodCA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2Fub0NoaWNrIj5hbm9DaGljazwvYT4gcGl5b3BpeW8gKCk7PC9wPgo8L2JvZHk+

リンク先とか、画像とか全部base64表現にしたら1サイトまるまるサーバレスで出来上がるのではないか。

ちなみに、URL短縮サービスとか使って普通のURLとして扱えそうだけど軽く探した感じDataURIに対応しているサービスが見当たらなかった。

12
12
2

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
12
12