> Select メニューの説明
Select メニューの説明
Select メニュー
IP_Adress: IPアドレスです。クリックすると、ログ内のIPアドレスがリストされます。特定のアドレスの動向を知るために選択するには、@まず、リストの一番上、Allをクリックします。それを、Excludeボタンで除外します。次に、目的のIPアドレスをリストでクリックして、Includeボタンをクリックします。

 他の項目も同じ要領で選択したり除外したりして、使用するデータを絞ります。このアイデアがこのソフトの特徴ですね。データは、完全一致が必要です。例外として注意が必要なのは、Req_HeaderとURLです。こちらは、部分一致です。しかも、半角スペースで複数の条件を入れられます。その条件は、ANDになります。何々と、かつ何々が含まれる物と言う事です。

To_Momory: は、リストの内容をメモリに保存します。目的は、次のMatching_with_Mem.を使うための準備です。メモリの内容と、リストの内容が、いくつ合致したかをレポートします。こんな物を設けた理由は、会員制為のホームページを開設しているとします。そこで疑問は、いったい何人の会員が見てくれたのか。これって難しい質問ですよね。会員の為のパスワードが必要なページが有るとします。そのIPアドレスをある期間貯めて、合致すれば、今日何人くらいの会員が見てくれたのではないかと推察できると考えたからです。

Clear_List: は、単にリストをクリア(消去)するだけです。

Reset_Select: は、Selectを使ってした操作をリセットします。

By_File: は、こうした操作をファイルの内容に従い実行します。バッチ処理ができるようにと思い、コマンドも追加しました。ただし、今の時点では、まったく動作を確認していません。バグが有るでしょう。マニュアルを書く段階になったら、バグ取りを徐々に始めようかと思います。もっとも、バッチ処理は、そもそも必要ないかも知れませんね。

With_Select: は、Selectメニューと入れ替わりに切り替わります。リストに表示される項目が、Includeされた物だけか、全てかの違いが有ります。

Country: 始めは、表示されません。もともとApcheのログにはこの項目が無いからです。IP_Adress表示を行った後に、ToolのCountry_Checkを実行するとメニューに追加されます。IP_Adressの表示は、全てのIPアドレスが表示されている状態でCountry_Checkをした方が良いでしょう。さもないと、表示されているアドレスだけの国がデータベースに加わり、それ以外は追加されません。後からでも可能ですけど。
これは、計算時間を短縮するために、そうしました。

Web Attack: iLogScannerを模して追加しました(2013/9/15)。SQL_Injectionは、どうも検出が難しく、本家より少なくなってしまいました。まだ、研究の余地ありです。OS_Injectionは、同じ項目、同じ数だけ上がるので、良さそうです。Dir_Traversalも同じ物が同じ数だけ上がるので、良さそうです。それと、本家には無いのですが、500文字を超えるReq_headerが有ります。まだ、名前が付いてなくても、何かを企てるための攻撃者からの送信です。それを付け加えました。該当した場合、出力は、IPアドレスにしました。処理スピードは、比べれば、一目瞭然ですが、速いです。

プログラムの中身:
 特徴は、Selectですね。200万レコードとか、あるいはそれ以上の処理をスムーズにこなすために、考えました。プログラム上は、簡単ですが、ビットを立てます。Excludeだとこんな感じですかね。
                For i = 1 To dt_ttl
If LCase(x1) = "all" Then
dt_select(i) = dt_select(i) Or 1
Else
If x1 = dt_ip(i) Then
dt_select(i) = dt_select(i) Or 1
j = j + 1
End If
End If
Next
この中の数字の1が、IPアドレス、2がYear、4だとMonthとかね。Includeは、逆に1が、 And &HFFFFE となる訳ですね。
NiconicoPHP