2009年01月31日

crosscrypt を MinGW でビルド

filedisk を拡張した crosscrypt を MinGW でビルドしてみた。

crosscript-0.4.3-mingw01.zip

ドライバ本体は、filedisk と同じようにすれば良かった。(説明略)

コマンドも 同様。MSYS で使えるように、仕様を変更。
これについて少し説明。

MSYS というか bash ? から起動するとき、/ で始まる引数はファイル名とみなして windows のファイル名に変換している。

    /d/test.img → d:/test.img
    /mount → C:/msys/1.0/mount

こんな感じ。これが /mount とか DOS 流のオプションが使えない理由。filedisk.exe の第一引数は、コマンドと決まっているので、/ を外している。他のオプションは / → - に変更。

あと、ファイル名の / も (filesys.exeでは)具合が悪い。

    d:\test.img → \??\d:\test.img

という変換をやっていて、それをするために、ファイル名を解析している。bash では、\ を入力するには、\\ とかしなければならなくて面倒なので、/ → \ 変換を内部に入れることにした。

次に、ドライバーのインストールプログラムに手をいれてみた。

フリーのリソースエディタ ResEdit (ver 1.4.4.15) を使って、resource.rc を編集して、ボタンを付けた。--- この程度なら ResEdit で十分だった。

付けたボタンで何をするかというと.. ドライバ起動の設定。実用として使うなら自動で起動してくれないと困るが、改造時に致命的なバグが入ったときまで起動されては困る。それで、押すボタンでどちらにするか決めるようにしてみた。

あと使い勝手を良くするために、C:\WINDOWS\system32\drivers へのコピーと削除の機能も入れた。

で、MSYS で普通に使えていたので... Windows から開くと、コンソール画面が開いてしまうという問題に後になって気がついた。

これを直すには、リンク時に次のオプションを追加する。

    -Wl,--subsystem,windows
    あるいは
    -mwindows


subsystem の指定には、native,windows,console,posix の 4つがある。普通のアプリは、windows か console 。native はドライバとか。posix はよくわからない。

さて、こうやってビルドした crosscrypt を使ってみた。

    $ filedisk.exe mount /d/zzz.iso -cd
    G: -> d:\zzz.iso mounted

    $ filedisk mount /d/test.img 100M
    H: -> d:\test.img mounted

    $ filedisk umount g:
    G:: unmounted

    $ filedisk umount
    H:: unmounted

デバイス番号、ドライブ名が必須ではなくなって、使い勝手があがっている。

暗号化するときは、こんな感じ。

    $ filedisk mount /d/test2.img 200M -aes256
    1.Passphrase:aaa
    H: -> d:\test2.img mounted
    WARNING: Key will be to short for linux (min 20 chars) 3

    $ filedisk umount
    H:: unmounted

    $ filedisk mount /d/test2.img -aes256
    1.Passphrase:zzz

    H: -> d:\test2.img mounted
    WARNING: Key will be to short for linux (min 20 chars) 3

簡単なのは良いのだが... パスワードが見えてしまっている。
実用で使うには問題だが、もっと大きな問題が...

どんなパスワードでも、mount できてしまうのだ。mount できるが内容が出鱈目になる。で、アクセスしたとき、フォーマットされていません。となるわけだ。

なんらかのチェック機能がほしいところ。

さて、性能はどうだろう。
eeePC 701SD-X 600MHz , SSD BUFFALO SHD-DI9M 16G で、CrystalDiskMark 2.2 をやってみた。

    native plain aes256 TrueCrypt
    Sequential Read : 76.583 MB/s 57.112 MB/s 12.866 MB/s 13.183 MB/s
    Sequential Write : 31.693 MB/s 29.380 MB/s 4.860 MB/s 12.586 MB/s
    Random Read 512KB : 74.786 MB/s 55.822 MB/s 12.737 MB/s 13.580 MB/s
    Random Write 512KB : 6.601 MB/s 6.360 MB/s 3.283 MB/s 5.076 MB/s
    Random Read 4KB : 12.071 MB/s 9.471 MB/s 5.300 MB/s 5.099 MB/s
    Random Write 4KB : 0.063 MB/s 0.069 MB/s 0.060 MB/s 0.068 MB/s

native は、ファイルがあるディスク、plain は暗号化なし、aes256 は暗号化で、TrueCrypt は比較用。

plain の場合、read が大分落ちる。これは、read するとき、一旦 バッファに読み込んでそこから、コピーしているため。暗号化した場合、TrueCryptに比べて Write が 大分劣る。 なにか変なところがあるのかも。

追記:

当面使ってみようと思う。いろいろいじるドライバーと同じ名前では、都合が悪いので、

    ドライバ名    :FileDisk → CrossCrypt
    デバイス名    :FileDisk/FileDiskCd → CrossCrypt/CrossCryptCd
    ドライバファイル名:filedisk.sys → crosscrypt.sys
    コマンド名    :filedisk.exe → ccsetup.exe

と変更したのを作った。
crosscript-0.4.3-mingw02.zip

    あ! crypt ではなく、cript になっている!。次からちゃんとする。

メモ:

パスワードが正しいかどうかチェックできない問題について

確実ではないが、ほとんどの場合チェックできる方法を考えてみる。

マウントしたものが、ファイルシステム か 初期化状態のいずれでもなかったら、エラーにする。
MBR の場合は、パーティション 1 が ファイルシステムかどうかをチェック。

MBR:

先頭 512B の最後 2 バイトが、0x55 0xaa

Windows 系 ファイルシステム :

先頭が 0xeb ANY 0x90 。
続く 8 バイトに文字列が入り 0 が続く。
文字列には、フォーマッタの文字列が入る。
Windows XP では、NTFS MSDOS5.0 EXFAT などだが、
linux などでは、msdosfs だし、sdformatter なら ALLスペース。
0xeb ANY 0x90 ANY x 8 0x00 をチェックすれば良さそうだ。

ext2/3/4 :

先頭 1024バイトは ANY 。1024バイト目から super_block 。
そして、supre_block の offset 56-57 バイトが 0x53 0xef 。

iso イメージ:

Linux などの /usr/share/magic によると 32769 バイト目から
CD001 が入る。(2352 セクタでは 37633バイト目)

初期状態: チェックしたところが all 0 なら初期状態とみなす。

これで検討中。
posted by すz at 11:20| Comment(1) | TrackBack(0) | プログラミング
この記事へのコメント
Advanced Installer Architect16.4繧ッ繝ゥ繝�繧ッ繝ゥ繧、繧サ繝ウ繧ケ繧ュ繝シ[譛譁ー],lumion 10.2 Pro Crack With LicenseKey辟。譁吶ム繧ヲ繝ウ繝ュ繝シ繝�2020,Autodesk ReCap 360 Pro 2020Crack繝ゥ繧、繧サ繝ウ繧ケ繧ュ繝シ辟。譁吶ム繧ヲ繝ウ繝ュ繝シ繝� 6c52b3d127 . https://www.japanesewomenorg.com/downcalnemo https://www.horayda.com/thiopacorre https://goodshape1.com/vibulata https://geomailx.com/burromargder https://www.highpricedating.com/cueslenfestgirl
Posted by barnclot at 2021年12月19日 21:20
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/30760570
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック