2014年5月20日火曜日

C言語クックブック

0. 基礎知識
  1. Cにおける識別子の有効範囲と変数の生存期間
  2. C初心者が知っておきたいヘッダーファイルとリンクの基礎知識(正しいexternの考え方)
  3. プリプロセッサでプログラムの質を向上させよう
0. volatileで最適化を抑制する

0. 文字配列初期化の心得
  1. callocは、0x00で初期化してくれる
  2. mallocは、0x00で初期化しない
  3. char str[n];は、0x00で初期化しない
  4. 2、3で定義した文字配列にstrncpyで文字配列をコピーする場合は、事前にmemsetなどで初期化すべき。コピー元の文字配列の長さ以降の領域に予期しない値が入っている場合がある
  5. 文字配列に値を設定する関数の挙動(終端文字をセットしてくれるか)は必ず確認
0. 文字配列に値を設定する関数の挙動(よく使うもの)
  1. strncpy
  2. strcat
  3. fread
  4. fgets
  5. sprintf
  6. strstr
  7. memcpy 
0. sprintfの注意点
以下のように終端文字を設定すると(null)が設定される
ex.
char exten[4] = {0};
sprintf(exten,"%s",'\0');
printf("%s\n", exten);
出力結果  = (null)

ブランクを設定したい場合は、以下のようにする
sprintf(exten,"%s","");
0. メモリ割り当て
  1. malloc
  2. calloc
  3. realloc
0. 初期化についての議論
  1. [迷信] とりあえず memset で初期化
  2. 文字配列char str[x]の初期化
  3. char str[xx]、malloc、calloc処理速度比較 
0. フォーマット指定子一覧
0. C言語のバグ回避をするための習慣

0. 関数を調べる
  1. C言語関数辞典
  2. コマンド検索: man
0. ローカル変数とメモリスタックの注意点

0. IPヘッダ構造体について u_int8_t = u_char

0. 苦しんで覚えるC言語
1. x86_64の逆アセンブルを読む(gcc版)

2. strncpy(文字列をn文字コピー)

3. strcpy(文字列のコピー)

strncpy(strcpyとの違い)

4. 文字列の置換~strchg関数を作る

5. 「警告: 初期化子のまわりのブレースを欠いています」対応

6. strcmp(文字列比較)

7. strtok(文字列strの中をデリミッタ文字で区切って、呼び出す毎に区切った文字列のアドレスを返す)

8.  inotify
  1. inotify を使ってファイルシステムのアクティビティーを監視する
  2. inotify API
  3. lsyncd(inotify)で上限ファイル数を超えた時の対処策 
  4. inotifyの上限値設定変更 
  5. inotify で Linux ファイルシステムのイベントを監視する
  6. inotifytools/inotifytools.h File Reference
9. strstr(文字列1から文字列2を検索する)

10. 文字列の終端 null文字('\0')に関すること

11. scanf関数で文字列を得るにはどうしたらいいのか、文字列を扱う時の危険性を考慮する

12. strcat(文字列の連結)

13. メモリの管理について
     mallocもしくはnewで動的にメモリを確保した場合は、以下の関数で動的にメモリを開放する必要がある。
     malloc - free
     new - delete

     ※外部変数はプログラム終了後、関数で定義した内部変数は関数終了後にOSが自動的にメモリを開放する。また、関数についてはstack領域でメモリ確保し、mallocで確保したメモリ領域とは異なる。
     参考:変数とメモリ領域の対応

14. ポインタ
  1. C言語のポインタ ~ & と * を使ってみる ~ 
  2. C言語のポインタ2 ~charポインタとchar配列~ 
  3. C言語 ポインタ完全制覇
  4. ポインタ演算は正しく使用する 
15. static関数

16. 関数から配列の先頭アドレスを返す

17. POSIX正規表現 regex.h

18. if文(≠0:真、=0:偽)

19. GRegex(GLibの正規表現)の一般キャラクタタイプが使えない(警告: 不明なエスケープシーケンス '\d')

20. 大文字小文字
  1. 小文字大文字変換(for文)
  2. 小文字を大文字に変換(while文) 
  3. 大文字小文字を区別せずに文字列を比較する 
21. MySQL C APIを使って、C言語でMySQLに接続

22. プログラムの適切な終了方法を選択する

23. コマンドを実行する

24. プログラムで使う静的ライブラリ、共有ライブラリ

25. 文字列を整数型に変換する

26. statvfsでファイルシステム情報を取得

27. 標準入出力関数(1)

28. 配列の要素数を取得する

29. 配列

30. 配列やメモリ領域の内容をコピーする

31. 配列を自由自在に作る(配列のサイズを動的に変更)

32. sprintf(書式指定変換した出力を文字列に格納)strcpyとの使い分け

33. boolean型

34.  NULLポインタ
  1. NULLポインタ
  2. 空ポインタ(null pointer) 

35. strncmpとstrcmp
  1. 文字列をn文字比較 
  2. 文字列の比較 
36. system関数
  1. system関数 
  2. system関数の戻り値についての質問 
  3. Linux環境のC言語で、実行ファイルを呼び出して、結果を取得する方法 
37. libcurlでhttp接続
  1. 本家サイト
  2. cURL と libcurl を使ってインターネット経由でやりとりする
  3. C言語のlibcurl を使ってみた。でもgccのライブラリ・パスがよくわからなかった。
  4. ftpuploadサンプル 
38. XMLパーサー
  1. C/C++のXML Parserについてよくまとまっているサイト
39. C開発環境開発 for Windows
  1. プログラミング速成コース 開発環境の準備-Windows編install_win.html 
  2. Windows 7 で C/C++ の開発・実行環境を整える!
  3. cygwin + Eclipse + CDT 環境構築 (Windows) 
  4. データを保持する 
  5. CURLOPT_HEADERFUNCTION explained
  6. Setup Cygwin toolchain in Eclipse CDT(cygcheckコマンドのサンプル)
  7. 標準ライブラリにパスを通す
  8. [Eclipse]cppのSymbol ‘NULL’ could not be resolvedがクリーン&ビルドでも解決しない時に試したいこと 
40. C言語 printfとfprintfの違いについて

41. シグナル処理関数(シグナルハンドラ)を登録する

42.  ファイル操作
  1. ファイルシステム
  2. ファイル操作関数 / fopen
  3. scandir()でディレクトリエントリのリストを取得する方法
  4. scandirかopendirか悩んでみた。
43. C言語システムコール-gethostname

44. segfault の error_code の意味

45. C言語 popen()でコマンドを実行して出力を読み込む

46. 色々なデータ型の最大値、最小値

47. ファイルの所有者を変更する chown関数

48. システムコール-mkdir

49. Linuxでプロセスのデーモン化

50. マルチスレッド
  1. スレッドと排他処理とデッドロック(pthread,mutex)
  2. セマフォの操作を行なう
  3. pthread_cancel(3)を使ってみた 
  4. マルチスレッドについて(マルチプロセスとの対比 fork) 
  5. 子プロセスを生成する(fork) 
51. プログラム途中強制終了、メモリーリーク

52.  voidポインタ
  1. voidポインタの利点
  2. void型ポインタ 
53. uname関数でシステム情報を取得する

54. gethostnameのヘルプ・マニュアル

55. バイトオーダー(htons() と htonl() を その逆は ntohs() と ntohl())

56. バイトオーダ - ビッグエンディアン/リトルエディアン

57. プログラムファイル分割
  1. ファイル分割
  2. 分割コンパイルとリンケージ
  3. C言語の正しいヘッダファイルの書き方 
58. 文字列処理関数 綺麗にまとまってて分かりやすい

59. C言語で2次元配列を動的に割り当てる4つの方法 めっちゃ参考にしました

60. 構造体配列
  1. 構造体配列のポインタ表現
  2. メモリの動的確保と自己参照構造体
  3. ハッシュテーブル 
  4. ハッシュテーブルを実装してみる
  5. 構造体 
61. 関数内でmallocするときの注意

62. mallocに対するcallocのメリットは何ですか。

63. C言語でMySQLにアクセスする
※MYSQL_ROWは、文字型のポインタの配列のため、int型の値を取得した場合は、atoiでの変換が必要

64. 文字型配列の初期化とクリア

65. MD5ハッシュによるファイルチェック
  1. ファイルが一致することを確認する
  2. MD5 によるハッシュ値の計算
  3. md5 reference error(コンパイル時の注意)
66. fread

67. snprintf

68. C言語標準ビルトイン型で関数オーバーロードしてはいけない

69. poll, ppoll - ファイルディスクリプターにおけるイベントを待つ

70. gcc の警告オプション -Wall と -W 

71. Interprocess Communication (IPC)

72. バッファオーバーラン ~その1・こうして起こる~

73. gdb
  1. Debugging with GDB
  2. gdbの主要コマンド
  3. 最適化オプションのまとめ
  4. スタック・フレーム
  5. gcc+gdbによるプログラムのデバッグ 第1回 ステップ実行、変数の操作、ブレークポイント 
  6. gcc+gdbによるプログラムのデバッグ 第2回 変数の監視、バックトレース、その他のコマンド 
  7. gcc+gdbによるプログラムのデバッグ 第3回 gdbの便利な機能、デバッグの例 
  8. 既に起動しているプロセスをgdbで制御する 
  9. forkするプログラムのデバッグ 
 74. Linuxでネットワークインターフェースのリンク状態変化を得る

2014年5月19日月曜日

Asteriskクックブック

0. FreePBX confのリロード
  1. amportal commands (FreePBX12まで13から警告がでる)
  2. fwconsole commands (FreePBX13から)
0. CLIにAsteriskの標準エラーを出力
  1.  STDERR output in asterisk cli
0. sip.conf canreinvite
AsteriskによるIP-PBXの構築(CentOS4.2編)より抜粋
設定は "yes/no" である。
本設定は、通話中にINVITE要求を送ってアドレスやポートを変更とする機能。
RTPでの音声パケットを端末間で直接送受させる場合は"yes"とすること。
"no"の場合はサーバがRTP中継することになり、常にサーバ負荷になるのと同時に両方の端末が仮にインターネット上にあった場合は、サーバ回線に2通話分の音声パケットのトラフィックが流れるので注意が必要。
なお、"yes"に設定しても一方が"no"の場合や、転送サービスとしてextensions.confで "t/T"オプションが指定してある場合は、サーバ中継になるので不用意にサービスを付与しないこと。

0. sip.conf host
内線のホスト名かIPアドレスを指定する。 "dynamic" を指定するとホスト名やIPアドレスは無視されるので、モバイルアクセスや動的IP環境のクライアントは本設定とすること。

0. MySQL接続ユーザー
  1. How to change the default FreePBX MYSQL password 
1. Asterisk基本設定ガイド

2. Zaptelについて

3. Asteriskでひかり電話を使う

4. Tropo API を利用した自動音声応答装置(IVR)の構築サンプル

5. Asterisk cdr csv

6.  CLI
  1. Asterisk CLI
  2. Asterisk CLIコマンドリスト 
  3. Asterisk CLI 
  4. Originating call in CLI? 
7. PRIボード SANGOMA Support Wiki

8. Asterisk Wiki

9. ACD機能を試す(Asteriskの研究)

10. SIPpでSIP動作/負荷シナリオを作るメモ

11. WebRTC用にsrtpをインストール
     ※1.4.4をインストールする場合、以下のパスに読み換え
     http://sourceforge.net/projects/srtp/files/srtp/1.4.4/srtp-1.4.4.tgz

11-2. PJPROJECT クラウドにAsterisk立てて[SIPクライアント-(WebRTC)-WEBブラウザ]間でビデオ通話した時のメモ
    ※FreePBXのインストール手順にはデフォルトで含まれている

12. 外線着信で"Rejecting unknown SIP connection"が発生した場合

13. SIP attacker blacklist

14. VoIP/SIPエンティティに対するDoSアタック

15. Asterisk CLI sip set debug

16. FUSION B2BUA IAX

17. Asterisk_NAT

18. RFC3581 日本語訳

19. FreePBXインストール手順(ディストロを使わない場合)

20. FreePBX ODBCの設定
  1. Setting up ODBC for mysql on Centos 6.3 
  2. How to enable CDR on AsteriskNOW and FreePBX  
21. 保留音の設定

22. iSymphony
  1. Knowledge Base  
23. FreePBXでDialPlanカスタム
  1. FreePBX and Custom Dialplans
  2. Changes to extensions_custom.conf not working
24. Backgroundを使うときの注意点
  1. Channel status is 'UNKNOWN"
25. AstDB
  1. Using the Asterisk Database (AstDB) Blacklistのサンプルあり 
26. How to change the default FreePBX MYSQL password

27. AGI
  1. agi set debug on <- CLIでAGIのデバッグをするためのコマンド
28. 日本語化
  1. Asterisk/FreePBX日本語版導入 
29. Agent
  1. Asterisk Agents Asterisk call agents
  2. FreePBX Agents.conf Autologoff & AutoLogoffUnavail?
30. AMI
  1. Ryan Bullock > Asterisk-AMI-v0.2.8 > Asterisk::AMI 
31. ストリーミング配信をIP電話経由で聞く

32. PJSIP
  1. PJSIP 
  2. Getting Started
  3. PJSIP Linux版をビルドする
33. SipCLI(SIPコマンドライン user agent)
  1. SipCLI
34. Acrobit Softphone
  1. asterisk-1.8.4.2をAcrobits Softphoneでプッシュ待ち受け
  2. iPhoneのソフトフォンでバックグラウンド待ち受け
  3. Cloud Softphone FAQ 
  4. About Push Notifications 
  5. Unable to receive Push Notifications 
  6. Push Notifications on a PBX 
35. コーデック関連
  1. Asterisk cli show codecs(対応コーデックチェック) 
  2. Asteriskが利用できるコーデック
  3. Asteriskに最強コーデックの「Opus」を対応させる
36. State & Hints
  1. Asterisk func device_State 
  2. Asterisk func hint
  3. Function_DEVICE_STATE
  4. Extension State and Hints
  5. RFC3856
37. Asteriskリアルタイム化(設定を外部DBに持たせる)
  1. Astersikのリアルタイム化 設定ファイルの関連付け
  2. The Asterisk RealTime Architecture
  3. Asterisk Full RealTime example
  4. Asterisk RealTime Extensions
  5. (情報取得コマンドの記載あり)Asterisk + MySQL + RealTime SIP/Extensions/Voicemail
  6. No show peers after configure realtime asterisk with odbc
38. Zoiper
  1. IP電話(VoIP)に最適なSIPクライアント「Zoiper」
39. Jitter関連設定
  1. Enable Jitter Buffer for Asterisk
  2. Capture RTP and SIP Traffic using tcpdump
40. RTP送信間隔
  1. RTPの送受信間隔を定義するptimeについて
  2. Asterisk Documentation 1.4 rtp-packetization.txt
41. Channelの解放
  1. Locked up SIP extension on your Asterisk server? Me too. Here’s how I released it.
  2. hanging up active calls in asterisk
42. レジスト有効期限関連
  1. Asterisk config sip.conf(registertimeoutなど) 
  2. Asterisk info slow to update SIP registrations

2014年5月4日日曜日

ネットワーク&セキュリティクックブック

0. 3分間ネットワーキング

0. MACアドレス
  1. macアドレス一覧
0. IPA(このサイトのセキュリティ、脆弱性対策情報は毎日チェック)

0. 理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話

0. WiresharkでSSL通信の中身を覗いてみる

0. Wiresharkによるパケットトレースの収集と解析

0. 脆弱性攻撃スクリプトデータベース

0. グローバルIPをcurlで確認

0. tcpdumpでHTTPのPOSTメソッドのBodyを確認する

0. まずは「クッキー」を理解すべし

0. ASN
  1. AS番号 【 Autonomous System number 】 ASN
1. IPアドレス
  1. IPアドレス一覧【whoisサーバ一覧】
  2. IPアドレスサブネットマスク早見表
  3. SQLにおけるIPアドレスの比較 
  4. MySQL IPアドレス用カラム
  5. Check if IP is in subnet 
2. windows 「239.255.255.250」へのパケットが送信

3.ping
  1. ping
  2. 自機のNICを指定し、pingを実行する
4. whois ドメイン名検索

5. ドメイン一覧(whoisサーバ一覧)

6. Nullセッションとは

7. ゾーン転送

8. FTPデータコネクション PORTコマンドについて

9. 同一生成元ポリシー
  1. Same-Origin Policy とは何なのか。
  2. 同一生成元ポリシー - JavaScript | MDN

11. IDSとIPS

12. IPアドレスドメイン変換

13.  TCPのCLOSE_WAITとは?

14. 複数NICでのデフォルトゲートウェイ設定方法

15. 症状別ネット・トラブル解決法(後編) 

16. 外部(からの)アクセスに便利なsshポートフォワーディング

17. IPv4マルチキャストアドレス

18. WebSocketについてしらべてみた

19. Windows 8 と WebSocket プロトコル

20. RFC6455 — The WebSocket Protocol 日本語訳

21. WebSocket/WebRTCの技術紹介

22. Windows7をルーター化

23. 日本国内の IP アドレスリストを作成する

24. traceroute(tracert)

25. 怪しい機器を探す切り札はMACアドレス

26. ベーシック認証をURLに直接書く

27. TCPプロトコル

28. データ受信時の「ACK番号」はどう増える?

29. ネットワーク帯域測定
  1. TCP の性能測定指標とその計測方法について 
  2. 測定結果例と帯域の測り方 
  3. JavaScriptで回線情報を取得するAPI
  4. Network Information API
  5. 知ってると便利!おすすめスピードテスト/回線速度測定サイト8選
30. IPsec VPNとSSL VPN
  1. リモートアクセスVPNにSSL-VPNを採用する最適なケースは?
  2. “SSL-VPN or IPSecVPN”どちらが最適ですか?
  3. SSL-VPN
  4. IPsecとVPN3 
31.Wireshark
  1. Wiresharkでキャプチャしたパケットを編集し送信 - Ostinato
  2. キャプチャしたパケット群の中から、任意の文字列を検索する方法
  3. Wiresharkによるパケットトレースの収集と解析  
  4. Protocol field name: sip
32. Windows 標準機能だけでパケット キャプチャし、Microsoft Message Analyzerでログを解析してみた

33. 【実録】WordPressの怪しい挙動をlsofとstraceコマンドで調査する方法

34. LinuxでNICのリンクアップ/ダウンや速度を確認できる『mii-tool』と『ethtool』コマンド

35. ポート指定して、経路を調べる # traceroute -p

36. 意外と知られてない?AWS EC2上で169.254.169.254にアクセスして、IPやホスト名、VPC情報などを取得する方法。(GCEでも同じIPだった)

37. 不正アクセス
  1. サイトが改竄されていた件についてご報告 
  2. 侵入者の攻撃手法とその対策 
38. 不正ファイルアップロード
  1. Chromeでリファラ偽装する方法(リファラコントロールの使い方) 
  2. FireFoxで自由にリファラを制御できるアドオンRefControl
45. phpMyAdminを狙った攻撃観察(w00tw00tってどういう意味?)

46. Freeswitch
  1. 未認証ユーザーによる不正発信
  2. switch_regex.c の switch_perform_substitution 関数におけるバッファオーバーフローの脆弱
  3. libs/esl/src/esl_json.c の parse_string 関数におけるヒープベースのバッファオーバーフローの脆弱性 
47. FAQ : 重複したIPアドレスを見つけるにはどうしたら良いですか?

48. curl でレスポンスタイムを計測

49. QoS
  1. QoS - DSCP
  2. DSCP(Differentiated Services Code Point)とは
  3. DiffServ -- The Scalable End-to-End QoS Model
50. オートネゴシエーション