セキュリティキャンプ修了後に始めたこと。

キュリティキャンプのグループワークで始めた月一記事投稿、最初の記事は「セキュリティキャンプ修了後にはじめたこと」です。
やったことは、

  • Webデバッガの開発

  • OS自作開始
    です。

Webデバッガの開発

Web周りの低レイヤーな技術を身につけるためにBurpsuiteのようなローカルプロキシを用いたデバッガーの開発を始めました。 ソースコード

使用技術

バックエンド: Tauri
RustとWebフロントエンド技術を利用してデスクトップアプリケーションを開発するためのツールキット
フロントエンド: Svelte
Webフロントエンドフレームワークのうちの一つ

仕組み

RustでプロキシサーバーとTauriアプリケーションを並行で実行して、Webブラウザと外部サーバーの通信をフロントエンドに送って編集したり改変したりできるようにする。

実現したいこと

  • プロキシサーバーを経由した通信の閲覧

  • 通信の編集機能

  • TLSに対応

  • Web Socketへの対応

  • プロキシサーバーに利用しているHttpを自分で実装

  • 拡張機能

今実現できていること

  • プロキシサーバーを経由した通信の閲覧
    まだこれしか実現できていないですね。Rustでの並行プログラミングが初めてだったことなどが原因でロジックではなく言語や周辺技術をデバッグすることが多かったので結構開発速度は遅くなりました。(本来の目的は言語や周辺技術の学習なので特に問題はないが)

現段階で得た知識や技術

  • RustのTokioを使用した並行プログラミング

  • RustのHyperという低レイヤーなHttpライブラリの使用法

これからすること1

実現したいことを見て気付いたことがあります。Web周りの低レイヤーな技術を得たいのであれば、デバッガーよりもブラウザとかWebサーバーを自作したほうが手っ取り早いのでは?
よしデバッガーじゃなくてWebブラウザを自作しよう。Webブラウザの方から自作すれば、それをそのままデバッガーの方にも流用できるし、GUIをつける作業を最初のほうに始めてしまうと本来の目的とは異なるものに労力を使ってしまいそうです。(というか実際フロントエンドにもかなり時間や労力をさいている)
Webサーバー自作は具体的には、TCPよりも上のレイヤーをフルスクラッチで実装するというものです。これならすぐにでも始められそうですが、OSやネットワークなどの低レイヤーな技術や知識を会得したいという欲求が以前からあり、そういった技術はWebサーバー自作や趣味ハッキングにもとても役に立つと思います。ですからいっそのことシステムプログラミングを一通り経験してみようではないか、ということになり、記事の最初のほうで列挙したものの一つである、OS自作を始めようということになりました。

OS自作

これはWebデバッガー自作のところでも語ったように、システムプログラミングの経験や知識を得たいという欲求と、Webサーバー自作をするときにスムーズになるかもという動機に突き動かされて始めました。
みかん本を使って勉強をしています。
この記事を書いている現時点では始めてから2日でまだ記事に書くこともないため、一通り読み終わったら得た知見や技術をまとめた記事を書きたいと思います。

これからすること2

ただ闇雲に興味を持ったことに食いついているだけでは中途半端な人間の出来上がりなので、これからどういったものを実装して行きたいのかということを決意も込めてまとめました。上から順にやって行きたいと思います。

  • OS自作

  • TCP/IPプロトコル・スイート実装

  • Webサーバー自作

  • Webブラウザ自作
    だんだんレイヤーが上がっていっているのに気づくと思いますが、これまで低レイヤーの知識がないせいで、おまじないで済ませていたことが何度もあるので基礎から順を追って知識をつけていきたいと思います。

最後に

こんな下手くそな文章を最後まで読んでくださった優しい方々、ありがとうございます。ブログなんてほとんど書いたことないし、最近は長い文章も書いていなかったので、文章作成能力が今とても低いですが、セキュキャンのグループワークの活動として継続すると決めたので反復することで、だんだん上手くなっていくと良いなと思っています。

X
Web
GitHub


この記事が気に入ったらサポートをしてみませんか?