絵を描いたりネットいろいろ
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ハッカーとかの話

ちょっと、こんなタイトルで初心者の気を引こうとか最近自分必死っす


まず、私は他人のPCをハッキングした事もないし
ましてやハッキングツールといわれるものの使い方も知らない
けど、ハッカーというものが、どういう場所にあるか
それくらいはわかるので少し話す

まぁ、ハッキングしたくてプログラミング勉強する学生や子供多いと思うので、
無駄に遠回りしないように、してもらうための文章です



まず、ハッキングする為にC++なんて使わない

では、何の言語を使うか?

しいていうなら、Ruby、Pythonのどちらかですね
古参は未だにperlって人もいると思いますが、perlは初心者が今から覚えに行く言語ではない


何故、ハッキングにはC++ではなくRubyかPythonのどちらかが使われている
理由を言うと、まずこれらの言語には「dllライブラリ」というのを読み込む機能が備わっていまして

Rubyでかくとこんなかんじ
require"win32api"
n = Win32API.new( "filename.dll", "test_function", %w(i), 'i')
n.call 4

その「dll」ファイルというのは、どうやって作るかというと

C言語や、C++や、C#.NETといった言語から作ります

bcc32の場合は確か、こんな感じだったかなぁ


bcc32 -c filename.c
bcc32 -tWD filename.obj
implib filename.lib filename.dll

filename.c
#include

int _export test_function(int x ){
printf("test_%d" , x );
return 0;
}



まぁrubyには.soファイルもあったりするけど、正直手間がかかりすぎる

こんな感じに、スクリプト言語とC言語の連携は簡単に出来るので
C言語でライブラリを作り、dll化して
それをrubyやpythonから使う
というのが開発効率のでるハッキングでしょうね

だから自分でCでライブラリを作ってrubyで使えばハッカーなんですね!

いや、そうではない

自分で作るまでもなくフリーでその手のライブラリは公開されている傾向にある


代表的なのでmechanize
インストール方法は
>gem install mechanize

これはWebにログインフォームがあったら、ブルートフォースとか、
簡単にかけてしまうんです
ここに、そういうのは載せませんが、

Googleでruby_mechanizeから検索するソースを載せてみます
これが出来る時点で「ソレ」も出来るという事は、察しのいい人ならわかってもらえると思います

require "mechanize"
require "pp"
require 'kconv'

agent = Mechanize.new
uri = URI.parse( "http://www.google.co.jp/" )

agent.get(uri)

agent.page.form_with(:name => "f") { |f|
f.field_with(:name => "q").value = "歳納京子ちゃんぺろぺろ"
}.click_button

puts agent.page.uri

puts agent.page.body



まずgoogleにアクセスし、"歳納京子ちゃんぺろぺろ"と検索フォームを埋めて、検索した結果とURLを
puts agent.page.uri
puts agent.page.body
で表示しています

これをもし



require "mechanize"
require "pp"
require 'kconv'

("0".."9").to_a.repeated_permutation(4) do | pass |

agent = Mechanize.new
uri = URI.parse( "http://www.google.co.jp/" )

agent.get(uri)

agent.page.form_with(:name => "f") { |f|
f.field_with(:name => "q").value = pass.join # "歳納京子ちゃんぺろぺろ"
}.click_button

puts agent.page.uri

p pass.join

exit

# puts agent.page.body

end




こうしてしまえばブルートフォースなのです
googleの検索フォームでブルートフォースしても何の意味もないけどね


そういうわけで、
Webにログインフォームが用意されているような場所のハッキングなんて
すくなくともC++など使わないことはわかったかと思います


また、ftpへのアップロードやダウンロードというのも
ライブラリが用意されているので、rubyでは簡単にかける


require 'net/ftp'

file = "./test.html"
ftp = Net::FTP.new

ftp.connect('ftp.geocities.jp')
ftp.login('YahooID', 'Pass')
ftp.binary = true
puts ftp.dir
puts ftp.get( "index.html" , "test_get_file.txt")

ftp.chdir("./")
ftp.put( file , "aaaasss.html")
ftp.quit



想像のいい人には、このプログラムが作れる時点で、
ハッキングツールは作れることはわかるだろう

つまり、Webログインフォームへのハッキングに続き、FTP鯖へのハッキングツールもrubyで簡単に作れるのだ

私はrubyしかメインで触っていないのでサンプルは乗せられないが、pythonでもperlでも
ほぼ同じように、この程度の行数で書けるだろう

ちなみにrubyにはメールサーバーへの接続、つまりメールの送受信をする為のライブラリも備わっている
つまり、それを利用すると「 スパムがかける 」

C++など、使わない。
C#も使わない。

既に、( おそらくCで )ライブラリがruby用で備わっている為に、
自分でC++のソースコード( OSのAPI等 )を触る意味がないんだ

開発効率は、以下の図が覆ることは決してない
C , C++ << C#  << Ruby , Python

実行速度は、この間逆となっているが
C , C++ で作られたdllの中のfunctionについては、
rubyの速度ではなく、C,C++の速度で動くので
速度の問題など決して起こらない
そもそも問題になるのは回線速度のほうだからrubyの速度でも十分なのです

このような観点からみて、現在ハッキングをする為に使われている言語はC++などではなく
現時点では開発効率の高いrubyまたはpythonであると言える

スクリプトキディっていう言葉があるけど、
実際にハッキングが出来るのはそのスクリプトキディです
なのでハッカーとかそういうのを目指している人はスクリプト言語を覚えるとよい

でも本格的にやるとすれば、それ以外にも色々な知識が必要になる
WinAPIやアセンブラ、とかそういうのじゃなくて
もっと抽象的な情報収集能力だと、思われる


---ハッキングについてはここまで
EOF




WinAPIについて、ちょっとかくと
WinAPIっていうのは、結局ところWindowsに最初から備わっている関数ライブラリのようなもので
アセンブラやCあたりで記述されているものです

関数の数がめちゃくちゃ多いので、こういうAPIが知りたい~っていっても
すぐに調べられるものではなくて、長い期間こっちの世界にいないと
めぐり合えない関数が多いから困ったものだと思います

でもクラック関連の書籍ではWinAPIの何々って関数を~
みたいな事書いてる本は多いので(試してない)
一応WinAPIは基礎だけ抑えておくと、そういった本も、読みやすくなると思います
WinAPIの基礎って何っていうと・・・
Window表示と
画像表示と、
メッセージプロシージャ辺りでしょうね

この辺りは、はっきりいってとんでもなくロクでもない実装なので覚える価値なんて皆無なんですけど
ハッカーと呼ばれるくらいになりたいならば、無駄でも覚えるしかないんでしょうね
WinAPI扱えないハッカーとか、ありえないと思いますし
でもWinAPIばっかり扱ってる人は、きっと.NETというものを知らない
ハッカーを通り越して一巡して、それはただの初心者ですから、そうならないようには気をつけるべきです
    1..
このコメントは管理者の承認待ちです
2015-10-14


kakikomi