2009年3月17日火曜日

「DBCC LOG」で SQLServer のトランザクションログを見る

SQLServer のアンドキュメンテッドコマンド、「DBCC LOG」を試す。
 

何のツールかと言うと、トランザクションログを閲覧することが出来るというものらしい。
トランザクションログを取っており、かつ切り捨ててなければ、更新状況が順を追ってわかるということになる。
 

使いこなすと便利そうだ。
とりあえず手元にあったSQLServer2000で実験、接続には2005のマネジメントスタジオを利用。
 
 

とりあえず簡単に解析できるよう、単純なサンプルを用意しよう。


  1. DB [sawatest01]作成

  2. テーブル[Table_1]作成、カラムはnchar(10)の[test]1つ

  3. [Table_1]に 'ABABAB' と文字列挿入(INSERT)


 

ではトランザクションがコミットされたところで、ログを出してみよう。

DBCC LOG (sawatest01,4)
4 の部分は出力の詳細度を示す、"-1から4" まであって、レコードの中身は4でしか出てこない。
 
サンプルの INSERT に関する出力はこんな感じ。
 

Current LSN,Operation,Context,Transaction ID,Tag Bits,Log Record Length,Previous LSN,Flag Bits,Data Offset,Record Data,Description
0000001d:00000046:0001,LOP_BEGIN_XACT,LCX_NULL,0000:00000951,0x0000,60,00000000:00000000:0000,0x0200,0,0x00003C000000000000000000000080005109000000000200010000003A000000010000000100BA421498C900CF9B00000100060044004D004C001800,DML
0000001d:00000046:0002,LOP_INSERT_ROWS,LCX_HEAP,0000:00000951,0x0000,84,0000001d:00000046:0001,0x1200,0,0x000054001D000000460000000100020151090000000012000F000000010002001F83D7751D00000045000000020000000000000001001B0010001800410042004100420041004200200020002000200001000000,
0000001d:00000046:0003,LOP_DELTA_SYSIND,LCX_CLUSTERED,0000:00000951,0x0000,80,0000001d:00000046:0002,0x0200,0,0x000050001D000000460000000200090251090000000002001800000001001F00020000001D00000045000000030000000000000000000000000000001F83D77501000000000000000100000000000000,
0000001d:00000046:0004,LOP_COMMIT_XACT,LCX_NULL,0000:00000951,0x0000,52,0000001d:00000046:0001,0x0200,0,0x000034001D000000460000000100810051090000000002001498C900CF9B00001D0000004600000001000000000000000000BA42,



なんのこっちゃ。。。
要は"Record Data" の部分が更新されたデータに当たり、それを解析すればいいみたいだが。
 

かろうじて "LOP_INSERT_ROWS" の行で "0041 0042 0041 0042 0041 0042" という文字列があるのが分かった。
ASCIIコードで 「0x41=A, 0x42=B」 なので、メソッド、更新されたデータともに確かに記述されているようだ。
 
 

さて、いくらトランザクションログから拾えるからといって、これを解析しろといわれるのはちょっと遠慮したいな。いっそ知らなかったことにしようか...
 
 
 

...と思ったところ、どうやら 株式会社ヴィバークさんの sarasa というツール が、DBCCの解析結果をきっちり見せてくれる模様。
 

180秒間使える体験版が あったので使ってみた、だいぶ快適にログを解析してくれるのでナイス。
FAQを見るに自前で解析、完全に独自使用という泣かせるつくりになっている。
 

解析が必要になるケースがあったら買ってもらおう。
 

2009年3月10日火曜日

Solaris10からシリアルケーブルでターミナル接続

メモエントリ
 

Solarisマシンにシリアルケーブル(RS-232C の9ピン)を差して使う時、コンソールからやるには tip コマンドを使う。
 

ボーレート38400 の機器に接続する場合こんな感じ。
# tip -38400 /dev/term/a
 

"/dev/term/a" は環境によって "/dev/term/b" だったりするだろう。
 

ストップビットなどの調整は man を参照、エイリアスが作りたかったら "/etc/remote" を編集する、COMポートは1つ標準でエイリアスが用意されている。
 

-- snip --
hardwire:\
:dv=/dev/term/b:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
-- snip --


# tip hardwire
とやれば上記の設定で接続してくれる、個別設定をするには、上記の設定行をコピーして適当な名前をつけて編集すればいいだろう。hw34800 とか。
 

ターミナルを抜けたければ、"~⇒." チルダを押して、ピリオド。
デフォルトではチルダがエスケープシーケンスになってるので、シェルに抜けたり色々コマンド実行可能、man 参照。
 

ちょっと追記:と思いきや、相手機器によっては "~⇒." による切断が出来んな。何でだろう?

Virustotal でアンチウイルスソフトの、ウイルス対応状況を見る

Virustotal というサイトかある。
 

基本機能として、ファイルをアップロードしたら既知のウイルスかどうか教えてくれるというものだけど、ちょっと面白い解析レポートを見ることができる。
 


 
 

さっそく前記事で紹介した eicar をアップロードし、詳細レポートを表示した。
 

アップロードしたファイルがどういうウイルスなのかはもちろん、39種類(記事執筆時)のアンチウイルスソフトで、最新バージョン定義ファイルでの対応状況を参照することができる。
それもどうやらメーカのちゃんと協力をもらっているので最新度合いは信頼できそうだ。
 

[caption id="attachment_1270" align="alignnone" width="555" caption="画像:アンチウイルスソフトの対応状況"]画像:アンチウイルスソフトの対応状況[/caption]
 

参加リストはこちらからも参照可能だ。
 

注意: VirusTotal は Hispasec Sistemas により提供される無料サービスです。このサービスの有用性と継続性については何の補償もありません。 複数のアンチウイルスエンジンにより与えられる検出率はたった 1つの製品によって得られるものよりも遥かに高いものですが、これらの結果はファイルが無害であることを保証しません。 現在、ウイルスやマルウェアを100%検出するための解決策は何もありません
引用元:VirusTotal の解析結果画面

 

eicar でやったから全然バラツキがない、ばらつきがあるような状況は見てみたいような見たくないような...
 

テスト用のサンプルウイルス EICAR - アンチウイルスの動作確認

アンチウイルスソフトを導入したら、動作確認がしたくなるだろう。
 

そんな時は悩まないで EICAR を頼ろう、アンチウイルスのテストファイルがダウンロードできる。 中身は単純なので自分で書いてもOKらしいが。
 
 

大体アンチウイルスで代表的な各社でも、「安全にテストしたけりゃ eicar 使えばいいよ。」というように紹介されている。テスト用として認知されている存在というだろう。
 
各製品共通テストウイルス < < トレンドマイクロ
 
EICAR test string を使って Norton AntiVirus をテストする方法 < < Symantec
 
カスペルスキー製品の効果を確認するためのテスト用ウイルス EICAR とは?– その使用法と入手方法 < < Kaspersky Lab

カスペルスキーだけ なんで報道記事っぽい見出しなんだ。
 
 


さて実際にダウンロードしてみる。。。
や否や、
[caption id="attachment_1267" align="alignnone" width="519" caption="画像:Windows Defender の警告"]画像:Windows Defender の警告[/caption]
 
ぬお! Defender って仕事してたのか!
初めて見たぜ Windows Defender の警告。
 
 

まあ無視してダウンロード、カスペルスキーラボの オンラインウイルススキャナ(ファイルスキャン) に突っ込んでみよう。
 

[caption id="attachment_1268" align="alignnone" width="685" caption="画像:カスペルスキーファイルスキャナ(オンライン)"]画像:カスペルスキーファイルスキャナ(オンライン)[/caption]
 
うむ、見事な陽性反応。
たまに本物でテストしようとするのを見かけるが、危ないのでやめような。
 
 


最後にひとつ、いきなりeicar を送りつけてくる奴には気をつけたほうがいい。 テスト検知と見せかけて、本物を送りつける(または紛れ込ませる) といった悪知恵を働かせる輩もいるからだ。
 

2009年3月4日水曜日

コマンドプロンプトはタイトルつけとくといいよ

Windows使っているならコマンドプロンプト使うよね?
OKわかった、"title" コマンドを使うべきだ。
 
 

要はいくつか開いたコマンドプロンプトのウインドウを区別つくようにしておこうという趣旨。
"title" コマンドはタイトルバーの文字を変えてくれる、例えばL2スイッチに telnet する前に "title L2" としてみよう。

[caption id="attachment_1261" align="alignnone" width="677" caption="画像:titleコマンド結果"]画像:titleコマンド結果[/caption]
 

タイトルバーが変わったのが分かるはず。Vistaだと、「管理者:」 ってのが固定だから少々じゃまだが、XPだとすっきりしているはずだ。
 

これはタスクバーにコマンドプロンプトを並べたとき特に威力を発揮する。

[caption id="attachment_1262" align="alignnone" width="148" caption="画像:タスクバー"]画像:タスクバー[/caption]
※ 追記:タスクバーを右にして使っています。
 

それぞれのウインドウでやってることがわかる、これは作業効率に地味に効いてくるので癖をつけたほうがいいと思う。
「Windows+Rキー → cmd → title hogehoge」 という流れを意識しよう。