ハッカーになる方法

このページは筆者の妄想です。本気にしないでください
夢を現実にするためにはそれをどう叶えるかというビジョンが必要らしいので書いてみたのです

まずはコンピュータに関する知識は0からだとする
最終的な目標はハードウェアとソフトウェアを自作できること。もちろん効率よくね

まず最初に必要なのはパソコンについての知識だ
そんなに急ぐ必要はない。インターネットを使って遊びながらパソコンの基本的な用語や操作を覚えていく期間だからだ
ダウンロードとは何か、ディレクトリ構造やこれをこうするには何が必要か
そんな考え方さえできるようになれば次のステップだ。
(複数のネトゲをやったりなどゲームの内容よりも行う方法を何度かやっていれば大丈夫だと思う)
別に最初から次のステップでもいいけれど一度に覚えることがありすぎて独学じゃ厳しいと思うんだ



次には文字を使ったコンピュータの制御だ
そうだなあ。最初はプログラミング言語ではないけどhtmlを書いてホームページを作ってみればいい
そこで君は文字コードの壁にぶつかると思う(最近のブラウザは優秀で自動的に切り替えてくれるのでぶつからないかもしれないけど)
そんなこんなでテキストファイルに関する基礎的な知識が手に入るので次に行く



ホームページを作るだけじゃ面白くないのでいよいよハッカーらしいプログラミングへの突入だ
ここでライブラリなど邪道と思うか、そんなことを気にしないかで
組み込み系かweb系かにわかれると思うんだ(ちなみに筆者はライブラリなど邪道派だった。今はC/C++言語など以外はどうでもいいと思ってる)
最初の言語はスクリプト言語がおすすめかな
pythonとかrubyとかperlあたりがおすすめかな
コンパイルする手間がないので躓く要素が減る
そして何度もエラーを出しまくってエラーが出た場合の対処法をみにつけていくんだ
ついでにこの辺りで環境変数やpathを知ることになるだろう
最初はわからないだろうけどずっとやっていればどういうモノなのかはわかってくる



スクリプト言語に飽きたらC言語にいこう
メモリの制御が直接できたりする言語だから難しいという人もいるけどそんなことはない
最初のうちはスクリプト言語で簡単にできたこともC言語だと何行もかかなくてはならなくて
つらいかもしれないけどC言語をマスターするためには我慢していただきたい
学習目的ではないなら効率を重視してスクリプト言語はどんどん使っていくべきだけどね



ここで多くの人が躓くと言われているポインタという概念があるんだ
もし躓いてしまったらハードウェアを始めよう
最初はPICなんてどうかな
その前にPICをやるには電気工作の知識もいるけどLEDを光らせたりするぐらいなら
PICの入門キットを買えば勘でだいたいは可能なんだ
恐らくここで君はアセンブリ言語かC言語のどちらかを使う選択肢に迫られるだろう
そういう時はより機械に依存するアセンブリ言語をやろう
その後でC言語でも同じ処理を書いてみるんだ



この辺で機械よりのソフトウェアに関する知識はだいぶ溜まったと思うので
コンピュータの仕組みがわかるような本を買い漁ろう
C言語をかじった程度であれば難なく読める本でプログラムはなぜ動くのかとかCPUの創りかたとか色々ある



このレベルになるとC言語の基礎的なことはマスターしていると思う
してなくても検索すればすぐ理解できるはずだ
(すごいソフトが組めるかは発想力と経験の問題なので今は別にいい)
このレベルになると他の言語も資料を読めば簡単にマスターできると思う
丁度いい時期なのでこの辺りでプログラミング環境が整えやすいunix系のosを導入しよう
メジャーどころでbsd系とlinux系があるけどユーザーが多いlinux系の選択を最初はおすすめする
linux系といっても数が多いので簡単にインストールできるubuntuや使ったことはないけど恐らく一番普及しているmintを使えば初心者でも大丈夫なはずだ
とにかくコンピュータの仕組みを簡単に学ぶために色々必要なソフトや機能を付け加えていこう



ある程度満足したらubuntuやmintとはおさらばだ
この2つだとubuntuしか使ったことはないが恐らくどちらも色々自動的に設定するようになっていて
初心者向けではあるものの学習には向いていないと思うので
次は悩むのだがdebianやcentosなどを最小インストールするかarch linuxを入れるのがいいかもしれない
これである程度の概念がわかったような気がしたら
(別にいきなりgentooでもいいけど一人じゃ躓くと思う。マニュアルがちゃんとあるからそれみれば躓かないんだけどね)
gentooをインストールしよう。このOSをインストールする作業は全て手動だ
全て手動なのでなんのためにこの動作をしているのか理解さえできれば
OSを起動させるには何が必要なのかが少しはわかると思う



さて、gentooをそのまま日常的に使い続けて困ったことが起きると思う
やりたいことができない
これを解決するために必要な言語を学んでいこう
ちなみにこの辺りで日本語だけじゃ厳しくなってくるので外国語も適当に読めるようにしよう
(別に勉強しなくても目的に向かってずっと作業していれば何となくわかってくる)



真のハッカーたるもの、OSが作れなくては意味がないということで
日本語で書かれたOSを作る本は結構あるので(と言っても簡単に見つけられるのは3冊から5冊ぐらいだけど)
1冊購入して実際にやってみよう
最後までできたらOSの作る面倒さと仕組みが理解できると思う
興味があればそのまま買いあさってlinuxカーネルなどを読んでみるのがいい



真のハッカーたるもの、作業の自動化ができなくてどうするということで
自分専用のプログラミング言語を作ってみよう
こちらの本も何冊か出ているので(といっても簡単に見つけられるのは2冊ぐらいかな…)
実際に購入してコンパイラやインプリンタのロジックを理解しよう



真のハッカーたるもの、ネットワークについてしらなくてどうするということで
今までネットワークに関する勉強はしてこなかった可能性が高いので
TCP/IPの本を読もう



ソフトウェアに関する知識は固まったと思うのでハードウェアをやりたい人は
arduinoとかavrとかpicとかを使ってソフトウェア制御をする電子工作をやっていこう
スピーカーから音を鳴らす制御などハードウェア面の面白みがある



さて、OSとプログラミング言語とTCP/IPの技術とハードウェアに関する知識はもう手に入ったのでこれらを組み合わせて
ネットサーフィンができるOSは作れるようになったはずなのでそういうのを作っていこう



さて、ここまで全て一人でやってきたがそれじゃあぼくのかんがえたさいきょうのハッカーにはなれないので
オープンソースのコミュニティに参加しよう
一番手軽なのは自分の使っているディストリビューションのコミュニティだ
IRCとかメーリングリストを使う



コミュニティに参加したら次はpatchを作りまくろう
これがオープンソースの醍醐味だ
基礎的な考え方は備わっているはずなので後は他人の書いたソースを読みまくったりして
オープンソースを使って今までなかった知識(暗号化やレンダリングとか分散処理など)を得ながらハッカー達に混じろう



何度もpatchを投稿しまくると君も開発者にならないか?と誘いがくるかもしれない
この時、やっと客観的に評価をされるハッカーの入り口だ
せっかくのチャンスなので時間が許すなら混ぜてもおう



プログラミングをしたことのない人にも名前が売れるようになったら。
もう君は客観的に見てウィザード級のハッカーだ
そして新たなリーナス・トーバルズやリチャード・ストールマンになるチャンスが訪れる



余談
もし映画などで出てくるハッカーになりたかったら
きちんとした職業であるセキュリティの専門家を目指そう
決してスクリプトキディになんかになって人生を潰さないように
そのためにはソフトがどういう仕組みで動いているのかを理解する必要がある
その仕組みを理解した上でどういう攻撃があるとおかしくなるのかを想定して
おかしくならないような仕組みを作っていくんだ
ようはセキュリティの専門家の方がクラッカーよりも凄いし難しい
何故ならばセキュリティの専門家はおかしくなる動作を想定するというクラッカーがするようなことをした上で
それを防ぐためにソフトを組む必要があるからだ
それもクラッカーが気づくよりも早くだ

  • 最終更新:2012-06-11 14:11:30