投稿者「mars」のアーカイブ

Windwos EventLogの処理

WindowsのEventLogをUbuntuサーバーへ転送して、可視化等の処理を行う手順。

Windowsへnxlogをインストールし、環境に合わせてnxlog.confを編集する。

nxlogのconfig例(json形式で 514/TCPでsyslogとして転送)

参考にした情報:NXLogでWindowsイベントログをsyslog転送してみた

# NXLog Community Edition configuration file
#
# For more information see "C:\Program Files (x86)\nxlog\conf\nxlog.conf"
# or latest version online at https://nxlog.co/docs/nxlog-ce/nxlog-reference-manual.html
# If you experience problems, see https://nxlog.co/community-forum

#### DEFINE ####
define ROOT    C:\Program Files\nxlog
define CERTDIR %ROOT%\cert
define CONFDIR %ROOT%\conf
define LOGDIR  %ROOT%\data
define LOGFILE %LOGDIR%\nxlog.log

Moduledir %ROOT%\modules
CacheDir  %ROOT%\data
Pidfile   %ROOT%\data\nxlog.pid
SpoolDir  %ROOT%\data
LogFile   %LOGFILE%

#### EXTENSION ####
<Extension exec>
    Module xm_exec
</Extension>

<Extension json>
    Module xm_json
</Extension>

<Extension syslog>
    Module xm_syslog
</Extension>

<Extension charconv>
    Module xm_charconv
    AutodetectCharsets shift_jis, utf-8
</Extension>

<Extension fileop>
    Module xm_fileop
    <Schedule>
        Every 1 week
        <Exec>
            file_cycle('%LOGFILE%', 4);
        </Exec>
    </Schedule>
</Extension>

#### INPUT SECTION ####
<Input input_application>
    Module im_msvistalog
    Query <QueryList><Query Id="0"><Select Path="Application">*</Select></Query></QueryList>
    <Exec>
        $Message  = to_json();
        $Hostname = hostname();
    </Exec>
</Input>

<Input input_security>
    Module im_msvistalog
    Query <QueryList><Query Id="0"><Select Path="Security">*</Select></Query></QueryList>
    <Exec>
        $Message  = to_json();
        $Hostname = hostname();
    </Exec>
</Input>

<Input input_system>
    Module im_msvistalog
    Query <QueryList><Query Id="0"><Select Path="System">*</Select></Query></QueryList>
    <Exec>
        $Message  = to_json();
        $Hostname = hostname();
    </Exec>
</Input>


#### PROCESSOR SECTION ####

<Processor buffer_memory>
    Module pm_buffer
    Type Mem
    MaxSize 128000
    WarnLimit 16000
</Processor>


#### OUTPUT SECTION ####

<Output output_syslog>
    Module om_tcp
    Host 192.168.68.73
    Port 514
    <Exec>
        $SourceName          = 'NXLog';
        $SyslogFacility      = 'local0';
        $SyslogSeverityValue = '6';
        to_syslog_ietf();
    </Exec>
</Output>


#### ROUTE SECTION ####

<Route route_application>
    path input_application => buffer_memory => output_syslog
</Route>

<Route route_security>
    path input_security => buffer_memory => output_syslog
</Route>

<Route route_system>
    path input_system => buffer_memory => output_syslog
</Route>

EventIDでフィルタリングする例

define AccountUsage        4740, 4648, 4781, 4733, 1518, 4776, 5376, 5377, \
                           4767, 4728, 4732, 4756, 4704, 4672, 4624

{ 中略 }

#### INPUT SECTION ####

<Input eventlog>
    Module          im_msvistalog
    <QueryXML>
        <QueryList>
            <Query Id='0'>
                <Select Path='Security'>*</Select>
            </Query>
        </QueryList>
    </QueryXML>
    <Exec>
        if ($EventID NOT IN (%AccountUsage%)) drop();
        $Message  = to_json();
        $Hostname = hostname();
    </Exec>
</Input>

Ubuntug側で514/TCPを受信し、WindowsPC(192.168.68.52)から受信した情報に名前(win.log)を付して保存するように設定(rsyslog.conf)

module(load=”imtcp”)
input(type=”imtcp” port=”514″)

:fromhost-ip, isequal, “192.168.68.52” /var/log/win.log

pythonでjson形式のWindows EventLogを一時処理

cat /var/log/syslog | grep -a EventTime の出力を、次のスクリプトでテキスト化

mport sys
import json
import traceback
n=0
for line in sys.stdin:
        n=line.find('{"E') # 文字列 {"Eの位置を得る
        tmp=line[n:]
        m=tmp.find('#') # {"E から # の部分文字列がEventLogの本体
        tmp=tmp[0:m]
        try:
                di = json.loads(tmp)
                n=n+1
                for k, v in di.items():
                        print(f'{k}:{v}')
        except: # エラー情報の表示(デバッグ用)
                t = traceback.format_exc()
                print(t)
                if tmp!='':
                        print('-----------------')
                        print(tmp)
                        print('-----------------')

print('Total lines:',n)

PHPのスクリプト例

<?php
while($line= fgets(STDIN)){
	$p=strpos($line,'{"E');
	$tmp=substr($line,$p);
	$p=strpos($tmp,'#');
	$json=substr($tmp,0,$p);
	#echo "$json\n";
	$lines=json_decode($json);
	foreach ($lines as $key => $var){
		echo "$key,$var\n";
	}
}
?>

イベントIDを指定

<Input eventlog>
# Uncomment im_msvistalog for Windows Vista/2008 and later
Module im_msvistalog
    Query <QueryList>¥
    <Query Id=”0″>¥
            <Select Path=’Security’>*[System[(EventID=’4663′) ]]</Select>¥
            <Select Path=’Security’>*[System[(EventID=’4656′) ]]</Select>¥ 
            <Select Path=’Security’>*[System[(EventID=’4658′) ]]</Select>¥
        </Query>¥
</QueryList>
# Uncomment im_mseventlog for Windows XP/2000/2003
#   Module im_mseventlog
</Input>

流星観測データの処理手順

STEP-1 pythonスクリプト(detectMETEORa.py)でIPカメラから画像を取得し、動体検知のアルゴリズムを中心とした処理で、流星らしい動画(avi形式)を保存する。

STEP-2 記録した個々の動画をstreamlitスクリプト(play.py)でGUI操作で再生し、目視で流星と判断した動画について、COPYボタンをクリックして、1個のaviファイルから1枚のjpg画像を比較明合成アルゴリズムで生成し、同時にavi形式の動画からh264形式の動画(mp4形式)へ変換して保存する。

STEP-3 jpgファイルとmp4ファイルを、Webブラウザーでインタラクティブに閲覧できるよう、あらかじめ用意したフォルダーへCopyする。

ブラウザーで閲覧するためのphpコード ▶ボタンをクリックして、表示されている画像の動画を再生することが可能です。表示対象の画像を月単位で選択できます。

<?php

$day= new DateTime();

if (isset($_POST['month']) && ($_POST['month']!="")){
        $month=$_POST['month'];
        $f_month=str_replace("-","",$month);
} else {
        $month="";
}

echo "<div>";
echo "<H2>動画を再生するには、各画像左下の再生ボタンをクリックして下さい。</H2>";
echo "<LI>画像上へマウスオーバーするとファイル名を表示します。<BR>";
echo "ファイル名[カメラ名_検知フレーム数_総フレーム数_YYYYMMDD_HHmmSS.mp4]<BR>";
echo "<form method =\"POST\">\n";
echo "<BR><LABEL Date>月を変更するには年月欄の右端をクリックしてください。</LABEL>";
echo "<input type=\"month\" name=\"month\" value=$month>";
echo "<input type =\"submit\"  value =\"表示\">";
echo "</form></dev>";
//echo "$f_month<BR>\n";
$images = glob('meteor/COMP/*jpg');
$n=0;
foreach($images as $v) {
        if (strpos($v,$f_month)) {
                $tmp=explode(".",$v);
                $mp4=$tmp[0].".mp4";
                $mp4=str_replace("COMP","BEST2",$mp4);
                //echo "$mp4<BR>";
                $tmp=explode("/",$mp4);
                $title=$tmp[2];
                $msg="<video controls muted title=$title width='480' height='280' src=$mp4 poster=$v></video>";
                echo $msg;
                if ($n % 2 == 1){
                        echo "<BR>\n";
                }
                $n++;
        }
}
?>

ffmpeg -i infielavi -c:v libx264 -c:a copy -y out-file.mp4

SwitchBot温湿度計の値をRaspberryPiでロギング

SwitchBot温湿度計はbluetooth経由でスマトフォン等でデータを表示できる。このデータをraspberry Piで処理する場合の手順:参考URL

https://qiita.com/c60evaporator/items/7c3156a6bbb7c6c59052

必要なライブラリーのインストールと、root権限の付与

sudo apt install libglib2.0-dev
pip install bluepy
cd ~.pyenv/versions/3.7.6/lib/python3.7/site-packages/bluepy
sudo setcap 'cap_net_raw,cap_net_admin+eip' bluepy-helper

惑星直列

明け方の東の空に惑星が勢ぞろい(6月27日、3時20分頃)スマホ(Pixel6)で撮影してみた。

この画像では表現できていないが、デジカメCoolpix P950で倍率を上げて撮影したら、海王星、天王星も確認することができた。

カワセミ再び

冬の間、水が抜かれていた近くの調節池に、梅雨の間に降った雨が溜まり、野鳥が戻ってきたようだ。(よく見かけるのは、カワセミ、鷺、カルガモ)

カワセミがダイブして小魚を捕獲する様子を撮影することができた。

Microsoft Defender for Businessを試してみる

インプレスの記事

中小規模向けEDR「Microsoft Defender for Business」って何? 体験版でチェック!

準備 次のリンクから、Microsoft 365 Business Premiumの1ケ月のお試しを申し込む(クレジットカードの登録が必要)

https://www.microsoft.com/ja-jp/microsoft-365/business/microsoft-365-business-premium?SilentAuth=1&activetab=pivot%3aoverviewtab

申し込みが完了すると、アカウントを取得すると次のような機能へログインが可能となる。以下のそれぞれのリンクから、設定や機能の紹介ページを参照できるが、英文のままだったり、機械翻訳の日本語だったりするが、めげずに進む必要がある。

また、25人までの利用者アカウントを作成できる。利用者アカウントの作成は次のリンから https://portal.azure.com/

Microsoft 365 管理センター https://admin.microsoft.com/

また、マイクロソフトオフィス製品のインストール等は、次のリンクからhttps://portal.office.com/

Microsoft Defender for Businessは、次のリンクから
https://security.microsoft.com/

Teamsの設定等は、次のリンクから
https://teams.microsoft.com/

Microsoft Defender for Businessのセットアップ

Microsoft Defender for Businessでは Windows HOMEは対象外なので、注意が必要。

https://docs.microsoft.com/en-us/microsoft-365/security/defender-business/mdb-setup-configuration?view=o365-worldwide

セットアップのSTEP

ガイド付きのセットアップ手順:https://admin.microsoft.com/#/m365setupwizard

別途料金が発生するオプション Microsoft Defender for Office 365 (プラン 1)

1台あたり220円/月

“安全なリンク” や “安全な添付ファイル” などの最新の電子メール保護技術です。Exchange Online Protection の防御を補完して、高度な攻撃からメールボックスを保護