2007年05月17日

USBNIX Linux 版

なんかそれらしいもの → usbnix-0.1.tar.gzができあがった。

make usbnix とすると linux 版ができてテストすることができる。AVR のビルド環境があれば、make で AVR 版もビルドされる。ただし、プログラムサイズをみるためだけのもので動作しない。

実行例

$ ./usbnix
login: suz
New password:
Retype new password:    #最初のloginは、パスワードを設定する
# ls
# cat > test1 # これでしかファイルを作れない。
aaa bbb ccc # ^D か 行頭の .で EOF
# ls
test1
# cat test1
aaa bbb ccc
# exit
login: suz
Password: # 2回目からは正しいパスワードが必要
# ls
test1
# rm test1
# ls
# rm aaa
No such file or directory
# passwd # 初期化するだけのいんちき passwd
login: suz
New password:
Retype new password:
login: suz # Retype で間違えれば、やりなおし。
New password:
Retype new password:
#


こんなところでどうだろう。ちなみに AVR 版のサイズは、まだ 5516 バイト。エラー処理とかのブラッシュアップで多少大きくなるだろうが、まだ拡張できそう。

ちなみに、プログラムを動かすとカレントディレクトリに、eeprom のイメージファイル key.img と i2crom のイメージファイル i2crom.img ができる。このファイルを消さなければ、作ったファイルは保存される。(eeprom イメージは、他人に見えないようにパーミッションを設定しないと危険なので注意。実用として使う人はいないと思うが一応。 )

i2crom.img の中身

FILE: i2crom.img (32768) - ASCII
PAGE: 0 (0)
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf 0123456789abcdef

00: 74 65 73 74 31 00 00 00 00 00 00 00 00 00 00 00 test1...........
01: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
03: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
04: d3 26 a9 ed dc 53 ec 9c c9 77 fb 30 eb 00 00 00 .&...S...w.0....
05: d0 f3 ca 49 1f 42 a7 52 9b c8 88 6e 48 8c cb fb ...I.B.R...nH...
06: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
07: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
08: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................


32KB を 1KB 毎にわけて、その1KB の頭 64B までに ファイル名が平文で入る。64B のオフセットから、ファイルの中身が 暗号化されてはいる。
16B 単位でデータをセットするので、後ろのほうは初期値のまま。

TODO

1) rm では、ファイル名しか消去していない。ファイルイメージも消去する必要がある。
2) 消せないファイルができてしまう可能性がある。ls で inode 番号(?ファイルの場所を示すインデックス)を表示して、rm で inode番号を指定できるようにするとか工夫が必要。
3) コマンドライン入力の cooked モードが貧弱で漢字などを入力した場合 BS で文字化けする(はず)。なんか対策を考えたい。
4) Linux 版だけではなく、MinGW 版もつくってみたい。いまは、/dev/urandom とか使っているので、動かない。keyにつかうランダムデータをどう生成するかが問題だが、それは AVR 版の初期データ生成にも共通する問題なので、解決する必要がある。一般の乱数で生成するのは、データに関連性ができてしまうので望ましくない。

おわりに

着想の段階では、8KB ではとても入らないだろうと思っていたが、作ってみたら、わずか 5.5KB に機能が入ってしまった。このサイズで USB を制御し、簡単ながらファイルという概念をもっていて、login できて、コマンド処理もし、暗号化までしているわけだ。

USBNIX というのも面白いものだと思うが、工夫しだいでもっといろんなものが作れそうな気がしてきた。
posted by すz at 23:01| Comment(0) | TrackBack(0) | USBNIX
この記事へのコメント
コメントを書く
お名前: [必須入力]

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

ホームページアドレス:

コメント: [必須入力]

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


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

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