こんにちは!
先日、PHPの言語仕様の理解を深める特殊な立ち回りでコアな内容を記しましたが、直近で私自身が探究したいギジュツを備忘録代わりにまとめておきます!
暗号学を知る
PHPのmt_rand()で扱われているメルセンヌ・ツイスターが以前より、暗号化の処理として扱うことは望ましくないとされてきました。
先日、その疑似乱数生成器(PRNG)の一種であるメルセンヌ・ツイスターでブルートフォースを介すこと無くシード値を取得できてしまうことが発見されました。
Breaking PHP's mt_rand() with 2 values and no bruteforce
これにより、メルセンヌ・ツイスターによって暗号化した値を復号化することは容易であることを再認識出来ることとなります。
RNGやPRNG等の理解を深めるとともに、暗号学への興味が深まったため学ぶ機会にしたいと考えています!
WordpressのAction-Hookの仕組み
Wordpressは世界・日本シェアNo1となっているCMSですが、Action-Hookという内部実装が施されています。
これは在る種、キューイングシステムのようなものです。(C言語のgoto文チックではありますが笑)
オープンソース且つ実用例の多い、WordpressのAction-Hookを通してキューイングシステムの仕組みの理解と簡易キューイングシステムの自作に取り組みたいと考えています。
WordpressのAdmin-Ajaxの仕組み
WordpressでAjaxを用いる際は、action名(関数名)と引数を独自のフォーマットで記述し、XMLHttpRequestで非同期通信を行います。
そして、Ajaxのリクエスト先は一貫して/wp-admin/admin-ajax.php
であります。
客観的に見ると、.htaccessで流して、Wordpressの組み込み関数であるadd_action()
やdo_action()
を介して可変関数を走らせていることは想像できます。
その仕様を/wp-admin/admin-ajax.php
から読み解き、実際に工程を1から書きたいと考えています。
テンプレートエンジンの仕組み
以前より、既存のテンプレートエンジンの内部仕様を読み解いて、仕組みを理解するようなことは行っていました。
そして、テンプレートエンジンは、
- LaravelのBladeのように、phpファイルに直接記述する
- Smartyのように、別途の拡張子ファイルに記述した処理をHTTPリクエスト時に、PHPファイルとしてコンパイルする
の2種類に分かれると思います。
まずはそれぞれのテンプレートエンジンの使用例を追求するために、Githubでスター数の多いオープンソースプロジェクトのソースコードから読み解いていきます!
※ここでは、あくまでテンプレートエンジンの使用例を追求することです。
そして、既存のテンプレートエンジンの記述フォーマットの違いにも触れながら、簡易テンプレートエンジンの自作に取り組もうと考えています。
自作OSの学習を進める
つい半年前くらいから自作OSに強く興味を持ち、学習を試みています!笑
というのも、いきなりLinuxカーネルを読もうと頑張ってみたりしてで、実際には何も学習できていませんでした!笑
なので、まずは数ヶ月に購入した30日でできる! OS自作入門を通して学習する時間を増やし、その過程をQiitaで備忘録にしていきたいと考えています。
※該当書籍が国語辞典以上に分厚いので、30日で読み進めることにこだわりはありません笑
無線LANに関することで
私は小学校高学年の頃、ペネトレーションテストの出来るBackTrackというLinuxディストリビューションを通して、無線LANセキュリティを学びました。
当時は、WEPやWPAが主流であり、WPA2はちらほらという感じだった気がします。
自身のハニーポットでペネトレーションテストを行った過程では、
- パケットキャプチャ
- 辞書攻撃
- ブルートフォース攻撃
- chopchop攻撃
- ARPリクエスト・リプライ攻撃
の仕組みを学びました。
他にも、IEEE 802.11
に関する規格の違い等も学びました!
それから10年程月日が経った今、無線LANセキュリティやIEEE 802.11の現在を知りたくなったので、Qiitaで書き記そうと考えています!
cURLやSeleniumに関して
・cURLを用いてHTTPをリクエストを行う
・ヘッドレスブラウザのSeleniumで行う
同じスクレイピングでもどう違うかというのを、レンダリングをメインテーマに書き記そうと考えています!
再帰処理に関して
再帰処理って、処理の連想は容易に出来ますが、いざ書こうとすると意外と容易ではないこと多かったりしますよね。
そこで、再帰処理をスムーズに書くための個人的な思索を紹介しようと考えています!