SSブログ
エステ

LT-V100 で DVD ISOファイルを再生する [Media Player]

バッファローリンクシアターシリーズのいわゆるメディアプレーヤーLT-V100を入手しました。

目的はファイルサーバーに保存したDVD ISOファイルをテレビで再生するためです。

[TV]--HDMI--[LT-V100]--network--[File server]

こんな感じでの接続になります。

Amazonが価格.com的に最安だったのでAmazonで購入。

BUFFALO メディアプレイヤー LinkTheater LT-V100

BUFFALO メディアプレイヤー LinkTheater LT-V100

  • 出版社/メーカー: バッファロー
  • メディア: エレクトロニクス
価格.comでは酷評されていたりもしますが、そこまででもないというのが率直な感想です。

最初の設定時にはHDMIが認識されないので、コンポジットでTVにビデオ出力します。

起動直後のメニューからSetupを選択し設定します。

設定項目は以下のとおり。

オーディオ設定-音声出力-HDMI LPCM
画面出力設定-テレビ出力設定-HDMI自動

以上。

これでOK。

ネットワーク経由でファイルを参照するにはCIFSでの共有でなければならないようです。
バッファローのWebサイトには

対応プロトコルTCP/IP(HTTP)

と書いてありますが、なんのことかわかりません(笑)

CIFSで共有させるために、前回、ファイルサーバーにsambaを入れたのでした。
それまではnetatalkによるAFPでのファイル共有しかしていなかったので、
LT-V100から認識されませんでした。

ちゃんとファイル共有できれば、あとはMOVIESからDVD ISOファイル達が
保存されているフォルダをたどるだけです。

アクセスIDとパスワードは保存でるので初回だけ入力する必要があります。


つかってみて。。

おおむね、問題ありません。やりたいことはこれでできました♪

使い勝手が少し悪いのは否めませんが、許容範囲内です。

さらにファームウェアを1.70βに上げると使い勝手が向上します。

ファームウェア1.4時代はDVDのチャプタスキップができず、不便でしたが、
ファームのバージョンアップにより、できるようになり満足。

残る不便は、MOVIESからISOファイルのフォルダを毎回たどるのが
ちょっと面倒なところくらい。
ショートカット登録できるけど、ショートカット先が共有サーバーの
ルートディレクトリなので、ちょっと使えない。。
ISOファイルのフォルダをブックマークできればいいんですが、、

Macでファームバージョンアップをする際のtipとして、
バッファローのサイトからダウンロードできるファイルが
Winsowsで使われる.exe自動解凍ファイルって言うんでしたっけ?なので
Macの標準機能では解凍できません。

無償のファイル解凍ソフトStuffIt Expanderを利用すれば、解凍でき、
中の.imgファイルを取り出せるようになります。


あとは、リモコンのボタン間隔が詰まりすぎていてわかりにくかったり、
使いにくいですが、この値段なので、まぁ仕方ないでしょう。
今のところ不具合も出ていないので、LT-V100買って正解でした。
少し高くて機能が少しだけ多そうな

プリンストンテクノロジー メディアプレーヤー PAV-MP1

プリンストンテクノロジー メディアプレーヤー PAV-MP1

  • 出版社/メーカー: プリンストンテクノロジー
  • メディア: エレクトロニクス
との比較で迷っていたのですが、

BUFFALO メディアプレイヤー LinkTheater LT-V100

BUFFALO メディアプレイヤー LinkTheater LT-V100

  • 出版社/メーカー: バッファロー
  • メディア: エレクトロニクス



これで結果おーらいかな。

画質などは、DVI ISOファイルをTVで再生しているだけなので、DVDを普通に
TVで再生するのと同じですので、レビュー対象外。

ちなみにTVは


これで130本以上のDVDがテレビで見られるようになりました。
 
 
 他のメディアプレーヤーのレビューはこちら。
 
WD TV Live
 
PAV-MP1


samba 3.5.6 on ubuntu 10.04(Lucid) [Samba]

必要に迫られて、netatalk2.1.5が動いているファイルサーバーにsamba3.5.6をいれました。


# tar zxvf ./samba-3.5.6.tar.gz

# cd ./samba-3.5.6/source3

# ./autogen.sh
./autogen.sh: need autoconf 2.53 or later to build samba from GIT

あらま。
なにか入っていないといわれるので、、

# apt-get install autoconf
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-2.6.32-24-server linux-headers-2.6.32-24 linux-headers-2.6.32-26
  linux-headers-2.6.32-26-server
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  automake autotools-dev m4
Suggested packages:
  autoconf2.13 autoconf-archive gnu-standards autoconf-doc libtool gettext
The following NEW packages will be installed:
  autoconf automake autotools-dev m4
0 upgraded, 4 newly installed, 0 to remove and 29 not upgraded.
Need to get 1,730kB of archives.
After this operation, 5,005kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main m4 1.4.13-3 [286kB]
Get:2 http://jp.archive.ubuntu.com/ubuntu/ lucid/main autoconf 2.65-3ubuntu1 [772kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu/ lucid/main autotools-dev 20090611.1 [64.1kB]
Get:4 http://jp.archive.ubuntu.com/ubuntu/ lucid/main automake 1:1.11.1-1 [608kB]
Fetched 1,730kB in 1s (878kB/s)
Selecting previously deselected package m4.
(Reading database ... 97865 files and directories currently installed.)
Unpacking m4 (from .../archives/m4_1.4.13-3_amd64.deb) ...
Selecting previously deselected package autoconf.
Unpacking autoconf (from .../autoconf_2.65-3ubuntu1_all.deb) ...
Selecting previously deselected package autotools-dev.
Unpacking autotools-dev (from .../autotools-dev_20090611.1_all.deb) ...
Selecting previously deselected package automake.
Unpacking automake (from .../automake_1%3a1.11.1-1_all.deb) ...
Processing triggers for install-info ...
Processing triggers for man-db ...
Setting up m4 (1.4.13-3) ...
Setting up autoconf (2.65-3ubuntu1) ...
Setting up autotools-dev (20090611.1) ...
Setting up automake (1:1.11.1-1) ...
update-alternatives: using /usr/bin/automake-1.11 to provide /usr/bin/automake (automake) in auto mode.

# ./autogen.sh

# ./configure

# make

# make install

# /usr/local/samba/bin/smbstatus
/usr/local/samba/bin/smbstatus: error while loading shared libraries: libwbclient.so.0: cannot open shared object file: No such file or directory

おっと。またもや。
ということで、、、

# apt-get install libwbclient0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-2.6.32-24-server linux-headers-2.6.32-24 linux-headers-2.6.32-26
  linux-headers-2.6.32-26-server
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libtalloc2
The following NEW packages will be installed:
  libtalloc2 libwbclient0
0 upgraded, 2 newly installed, 0 to remove and 29 not upgraded.
Need to get 129kB of archives.
After this operation, 287kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main libtalloc2 2.0.1-1 [20.7kB]
Get:2 http://jp.archive.ubuntu.com/ubuntu/ lucid-updates/main libwbclient0 2:3.4.7~dfsg-1ubuntu3.2 [108kB]
Fetched 129kB in 0s (181kB/s)   
Selecting previously deselected package libtalloc2.
(Reading database ... 98154 files and directories currently installed.)
Unpacking libtalloc2 (from .../libtalloc2_2.0.1-1_amd64.deb) ...
Selecting previously deselected package libwbclient0.
Unpacking libwbclient0 (from .../libwbclient0_2%3a3.4.7~dfsg-1ubuntu3.2_amd64.deb) ...
Setting up libtalloc2 (2.0.1-1) ...

Setting up libwbclient0 (2:3.4.7~dfsg-1ubuntu3.2) ...

Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

ここで再度。

# /usr/local/samba/bin/smbstatus
params.c:OpenConfFile() - Unable to open configuration file "/usr/local/samba/lib/smb.conf":
No such file or directory
Can't load /usr/local/samba/lib/smb.conf - run testparm to debug it

はい、はい。なーんにもないわけですね。

# vi /usr/local/samba/lib/smb.conf

smb.confには

--

[global]

        dos charset = CP932

        display charset = UTF-8

        netbios name = FS-CIFS

        server string = %h Samba Server

        map to guest = Bad User

        obey pam restrictions = Yes

        pam password change = Yes

        passwd program = /usr/bin/passwd %u

        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

        unix password sync = Yes

        syslog = 0

        log file = /var/log/samba/log.%m

        max log size = 1000

        max xmit = 65535

        domain logons = Yes

        os level = 65

        preferred master = Yes

        dns proxy = No

        wins support = Yes

        panic action = /usr/share/samba/panic-action %d

        admin users = administrator

        create mask = 0754

        directory mask = 0754

        block size = 4096

        delete veto files = Yes

        ea support = Yes

        kernel oplocks = No

        oplocks = No

        level2 oplocks = No

        vfs objects = streams_xattr

 [nao-cifs]

        path = /st1/nao

        username = nao

        write list = nao

        read only = No

        write cache size = 262144

        hide dot files = No

--

こんな感じで。

それから、起動ファイルを作成。本当はupstartとか使うんでしたっけ??
よくわからないので、init.dでいきます。

# vi /etc/init.d/samba

ファイルにはこんな感じで。
--
#!/bin/sh

### BEGIN INIT INFO
# Provides:          samba
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      slapd
# Should-Stop:       slapd
# Short-Description: start Samba daemons (nmbd and smbd)
### END INIT INFO


# Defaults
RUN_MODE="daemons"

# Reads config file (will override defaults above)
[ -r /etc/default/samba ] && . /etc/default/samba

PIDDIR=/usr/local/samba/var/locks
NMBDPID=$PIDDIR/nmbd.pid
SMBDPID=$PIDDIR/smbd.pid

# clear conflicting settings from the environment
unset TMPDIR

# See if the daemons are there
test -x /usr/local/samba/sbin/nmbd -a -x /usr/local/samba/sbin/smbd || exit 0

. /lib/lsb/init-functions

case "$1" in
        start)
                log_daemon_msg "Starting Samba daemons"
                # Make sure we have our PIDDIR, even if it's on a tmpfs
                install -o root -g root -m 755 -d $PIDDIR

                NMBD_DISABLED=`testparm -s --parameter-name='disable netbios' 2>/dev/null`
                if [ "$NMBD_DISABLED" != 'Yes' ]; then
                        log_progress_msg "nmbd"
                        if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/nmbd -- -D
                        then
                                log_end_msg 1
                                exit 1
                        fi
                fi

                if [ "$RUN_MODE" != "inetd" ]; then
                        log_progress_msg "smbd"
                        if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/smbd -- -D; then
                                log_end_msg 1
                                exit 1
                        fi
                fi

                log_end_msg 0
                ;;
        stop)
                log_daemon_msg "Stopping Samba daemons"
                log_progress_msg "nmbd"

                start-stop-daemon --stop --quiet --pidfile $NMBDPID
                # Wait a little and remove stale PID file
                sleep 1
                if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
                then
                        # Stale PID file (nmbd was succesfully stopped),
                        # remove it (should be removed by nmbd itself IMHO.)
                        rm -f $NMBDPID
                fi

                if [ "$RUN_MODE" != "inetd" ]; then
                        log_progress_msg "smbd"
                        start-stop-daemon --stop --quiet --pidfile $SMBDPID
                        # Wait a little and remove stale PID file
                        sleep 1
                        if [ -f $SMBDPID ] && ! ps h `cat $SMBDPID` > /dev/null
                        then
                                # Stale PID file (nmbd was succesfully stopped),
                                # remove it (should be removed by smbd itself IMHO.)
                                rm -f $SMBDPID
                        fi
                fi

                log_end_msg 0

                ;;
        reload)
                log_daemon_msg "Reloading /usr/local/samba/lib/smb.conf" "smbd only"

                start-stop-daemon --stop --signal HUP --pidfile $SMBDPID

                log_end_msg 0
                ;;
        restart|force-reload)
                $0 stop
                sleep 1
                $0 start
                ;;
        status)
                status="0"
                NMBD_DISABLED=`testparm -s --parameter-name='disable netbios' 2>/dev/null`
                if [ "$NMBD_DISABLED" != "Yes" ]; then
                        status_of_proc -p $NMBDPID /usr/local/samba/sbin/nmbd nmbd || status=$?
                fi
                if [ "$RUN_MODE" != "inetd" ]; then
                        status_of_proc -p $SMBDPID /usr/local/samba/sbin/smbd smbd || status=$?
                fi
                if [ "$NMBD_DISABLED" = "Yes" -a "$RUN_MODE" = "inetd" ]; then
                        status="4"
                fi
                exit $status
                ;;
        *)
                echo "Usage: /etc/init.d/samba {start|stop|reload|restart|force-reload|status}"
                exit 1
                ;;
esac

exit 0
--

実行権限つけて。
# chmod +x /etc/init.d/samba

シンボリックリンク作って。
# ln -s /etc/init.d/samba /etc/rc3.d/S20samba

# /etc/rc3.d/S20samba start
* Starting Samba daemons
   ...done.

ユーザー作ります。
# /usr/local/samba/bin/pdbedit -a nao
new password:
retype new password:

Unix username:        nao
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-542004972-3484054483-2600468714-1000
Primary Group SID:    S-1-5-21-542004972-3484054483-2600468714-513
Full Name:            
Home Directory:       \\fs-cifs\nao
HomeDir Drive:        
Logon Script:         
Profile Path:         \\fs-cifs\nao\profile
Domain:               WORKGROUP
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          9223372036854775807 seconds since the Epoch
Kickoff time:         9223372036854775807 seconds since the Epoch
Password last set:    Fri, 28 Jan 2011 00:35:17 JST
Password can change:  Fri, 28 Jan 2011 00:35:17 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Macなどからつなげてみます。
OK


ちなみに、

# /usr/local/samba/bin/smbstatus

Samba version 3.5.6
PID     Username      Group         Machine                        
-------------------------------------------------------------------
21195     nao           nao           macbookpro   (192.168.1.60)
17053     nao           nao           192.168.1.67 (192.168.1.67)

Service      pid     machine       Connected at
-------------------------------------------------------
nao-cifs    21195   macbookpro    Fri Jan 28 23:40:14 2011
nao-cifs    17053   192.168.1.67  Fri Jan 28 01:44:22 2011

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------


とりあえずファイルは読めるようになりました[晴れ]
拡張属性周りはまだノーチェック。


Aircrack-ng チュートリアル: WPA/WPA2 のクラッキング方法について を記載。 [Aircrack-ng]

本家の方に日本語版をアップロードしておきました。


例によって意訳ですが。


このコンテンツに関連するコンテンツはこちら。




以下、そのだいじぇすと。

最初に

このチュートリアルは事前共有鍵を用いるWPA/WPA2ネットワークをクラッキングするためのものです。WPA/WPA2とは何かということをご存じの上で行われることを推奨します。
WPA/WPA2には事前共有鍵以外にも様々なタイプの認証方式が備わっています。aircrack-ngは事前共有鍵にたいしてのみ有効です。従って、airodump-ngではauthentication typeがPSKとなっているネットワークが表示されていることを確認してください。そうしないと、そもそもクラックできないネットワークに挑戦し、クラックできないことに悩むことになってしまいます。

WPA/WPA2とWEPではクラッキングに関して重要な違いがあります。これは以前のWPA/WPA2事前共有鍵のクラッキングへのアプローチです。WEPとは異なり、クラッキングプロセスの速度向上のために統計的な手法が用いられるものの、WPA/AP2に対しては単純な辞書攻撃が用いられています。鍵が固定でないため、WEP暗号をクラックする時のようにIV(初期化ベクタ)を大量に収集しても一向に速度が向上しません。クライアントとアクセスポイント間のハンドシェイクのみが攻撃のきっかけとなる情報を与えてくれます。事実ではない点も含まれますが、このチュートリアルの目的から考えれば、事実と考えていただいて差し支えありません。事前共有鍵は8から63文字長で構成されているため、現実的にはクラックが不可能です。

事前共有鍵をクラックできるケースとしては、鍵が辞書に含まれている言葉を用いている場合と比較的短い鍵を用いている場合です。
辞書攻撃を用いる影響は計りしれません。それは非常にコンピュータ集約的であり、CPUに依存します。

重要
つまりWPA/WPA2を破るには辞書に含まれている文字列が使われてなければなりません。辞書に含まれていなければ、aircrack-ngは鍵を特定することができません。



前提条件

まず、以下の条件を前提とします:  
* Injectionパッチの当たったドライバを用いる。injection testで確認できます。  
* アクセスポイントに対してパケットを送受するのに物理的に十分近い場所にいること。アクセスポイントからパケットを受け取れるからといって、パケットを遅れるとは限りません。一般的な無線LANカードはアクセスポイントほど強い電波を発しません。そのため、あなたのクライアントからアクセスポイントや他のワイヤレスクライアントに対してパケットを送ったり受け取るためには物理的に十分近づく必要があります。この方法で特定のアクセスポイントと通信できているかどうかを確認できます。  
* aircrack-ngのv0.9.1以上を使う。他のバージョンではコマンドオプションが違うかもしれません。

上記の条件を満たしていても、下記の通り動かない場合があります。以下の例中で用いられている”ath0”をあなたが利用している無線LANカードのインターフェース名に変更する必要があります。


無線LAN機器の設定値

このチュートリアルでは以下の値を用いています:

aircrack-ngスイートを動かしているPCのMACアドレス:00:0F:B5:88:AC:82
WPA2を利用している無線LANクライアントのMACアドレス:00:0F:B5:FD:FB:C2
BSSID (アクセスポイントのMACアドレス): 00:14:6C:7E:40:80
ESSID (無線LAN名): teddy
アクセスポイントのチャンネル: 9
無線LANインターフェース: ath0
あなたが試そうとしているネットワークについても上記と同等の情報を集めなくてはなりません。その上で、以下の例中の値を読み替えてください。


クラッキングの方法

概要

目標はWPA/WPA2ハンドシェイクを取得し、次に、aircrack-ngを用いて事前共有鍵をクラックすることです。

アクティブ方式とパッシブ方式、どちらの方式でも可能です。アクティブとは既に繋がっている無線LANクライアントの認証を一旦無効化することによりハンドシェイクの取得を早めることを意味しています。パッシブとは無線LANクライアントが新たにWPA/WPA2ネットワークに参加し認証されるのをただ待つことを意味しています。パッシブ方式の利点はInjectionができなくともよく、Windows版のaircrack-ngでも可能ということです。

基本的なステップ:

1.特定のチャネルに設定し、モニターモードで無線LANインターフェースを起動する。
2.ハンドシェイクを取得するために、BSSIDフィルタを用いてアクセスポイントのチャネルに合わせてairodump-ngを起動する。
3.認証済みの無線LANクライアントの認証を一旦無効化するためにaireplay-ngを用いる。
4.ハンドシェイクを用いて事前共有鍵をクラックするためにaircrack-ngを走らせる。


Step 1 - モニターモードで無線LANインターフェースを起動する

このステップの目標はあなたの無線LANカードをいわゆるモニターモードで起動することです。モニターモードは周辺環境の全ての無線LANパケットを拾うモードです。通常、無線LANカードはそのカードと無線通信を行っているパケットのみ拾うことができます。全てのパケットを拾うことで、WPA/WPA2の4Wayハンドシェイクも拾うことが可能となります。同様に、後のステップで述べるとおり、認証済み無線LANクライアントの認証を一旦無効化することも可能となります。

モニターモードを有効にするための厳密な手順はあなたの使っている無線LANカードのドライバによって変わります。ドライバを特定するために次のコマンドを実行してください。

 airmon-ng
Ralink, Atheros, Broadcomチップを搭載した無線LANカードでは、次のようにレスポンスがあります。

 Interface       Chipset         Driver
 
 rausb0          Ralink RT73     rt73
 wlan0           Broadcom        b43 - [phy0]
 wifi0           Atheros         madwifi-ng
 ath0            Atheros         madwifi-ng VAP (parent: wifi0)

ドライバ名の後の[phy0]タグの表示は、mac80211向けの表示です。つまり、ここでBroadcomカードはmac80211ドライバを利用しています。 注意 mac80211ドライバはaircrack-ng v1.0-rc1以降でサポートされています。v0.9.1.では動きません。 Aterosカードは両方ともドライバとして”madwifi-ng”を表示しています。Atherosカードはmadwifi-ng-specificステップに従って設定します。 最後に、Ralinkのドライバ欄にはどちらも表示されていません。従って、ieee80211ドライバを用いています。こちらの設定には一般的な設定手順をご覧ください。

Step 1a - madwifi-ng の設定

まず、ath0を止めます。

 airmon-ng stop ath0   
システムからのレスポンス

 Interface       Chipset         Driver
 
 wifi0           Atheros         madwifi-ng
 ath0            Atheros         madwifi-ng VAP (parent: wifi0) (VAP destroyed)
“iwconfig”と入力し、他にathXインターフェースが無いことを確認します。無い場合はこんな風に表示されます。

 lo        no wireless extensions.
 
 eth0      no wireless extensions.
 
 wifi0     no wireless extensions.

athXインターフェースがある場合は、それを止めます。それから”iwconfig”を実行し他にインタフェースが残っていないことを確認します。

さて、次のコマンドを入力し、チャンネル9でモニターモードで無線LANカードを起動します。

 airmon-ng start wifi0 9
注意:ここでは”ath0”の代わりに”wifi0”を用いました。これはmadwifi-ngドライバが使用中のためです。

システムからのレスポンスは

 Interface       Chipset         Driver
 
 wifi0           Atheros         madwifi-ng
 ath0            Atheros         madwifi-ng VAP (parent: wifi0) (monitor mode enabled)

上記のように”ath0”がモニターモードとしてレポートされていることに気づきます。

インターフェースが正しく設定されていることを確認するために、”iwconfig”と入力します。

システムからのレスポンスは

 lo        no wireless extensions.
 
 wifi0     no wireless extensions.
 
 eth0      no wireless extensions.
 
 ath0      IEEE 802.11g  ESSID:""  Nickname:""
        Mode:Monitor  Frequency:2.452 GHz  Access Point: 00:0F:B5:88:AC:82   
        Bit Rate:0 kb/s   Tx-Power:18 dBm   Sensitivity=0/3  
        Retry:off   RTS thr:off   Fragment thr:off
        Encryption key:off
        Power Management:off
        Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm
        Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
        Tx excessive retries:0  Invalid misc:0   Missed beacon:0

上記のレスポンスでは、ath0はチャンネル9、2.452GHz、モニターモードで起動されていることがわかります。またアクセスポイントはあなたの無線カードのMacアドレスを表示しています。madwifi-ngドライバのみAP欄にカードのMACアドレスが表示されます。他のドライバでは表示されません。次に進み適切に動かすためには、ここに表示されている全ての情報について確認することが重要です。


Step 1b - mac80211 ドライバの設定

madwifi-ngとはことなり、mac80211ドライバの設定にはwlan0インターフェースの削除は必要ありません。その代わり、チャンネル9でモニターモードを起動するためには次のコマンドが必要となります。

 airmon-ng start wlan0 9

システムからのレスポンスは

 Interface       Chipset         Driver
 
 wlan0           Broadcom        b43 - [phy0]
                                 (monitor mode enabled on mon0)

airmon-ngはmon0でモニターモードが起動していることに注意してください。そのため、このあとのチュートリアルではインターフェース名をmon0としてください。Wlan0はまだ通常(マネージド)モードで普通に使われ、攻撃しようとしているアクセスポイントと同じチャンネルで接続されています。そして、チャンネルホッピングは使われていない状態です。

設定を確かめるためには、”iwconfig”を実行してください。次のようなレスポンスがあります。

 lo        no wireless extensions.
 eth0      no wireless extensions.
 
 wmaster0  no wireless extensions.
 
 wlan0     IEEE 802.11bg  ESSID:""
           Mode:Managed  Frequency:2.452 GHz  Access Point: Not-Associated
           Tx-Power=0 dBm
           Retry min limit:7   RTS thr:off   Fragment thr=2352 B
           Encryption key:off
           Power Management:off
           Link Quality:0  Signal level:0  Noise level:0
           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
           Tx excessive retries:0  Invalid misc:0   Missed beacon:0
 
 mon0      IEEE 802.11bg  Mode:Monitor  Frequency:2.452 GHz  Tx-Power=0 dBm
           Retry min limit:7   RTS thr:off   Fragment thr=2352 B
           Encryption key:off
           Power Management:off
           Link Quality:0  Signal level:0  Noise level:0
           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
           Tx excessive retries:0  Invalid misc:0   Missed beacon:0

ここで、mon0はチャンネル9(2.452GHz)でモニターモードとして表示されています。madwifi-ngとは異なり、モニターインターフェースにはアクセスポイント欄がありません。また、wlan0は依然として表示され、マネージドモードですがこれが通常の状態です。両方のインターフェースは共通の無線を共有するため、常に同じチャンネルとして合わされることになります。一方のチャンネルを変更すれば他方のチャンネルも変わることになります。

Step 1c - 他のドライバの設定

他(ieee80211ベース)のドライバでは、モニターモードを有効にするには、次のコマンドを実行するだけです。(rausb0をあなたの環境のインターフェース名に変更してください。)

 airmon-ng start rausb0 9

システムのレスポンスは

 Interface       Chipset         Driver
 
 rausb0          Ralink          rt73 (monitor mode enabled)

この時点でインターフェースは使用する準備ができています。


Step 2 - ハンドシェイクを取得するために airodump-ng を起動する

このステップの目標はairodump-ngを実行し、ターゲットとなるアクセスポイントの4wayハンドシェイクを取得することです。

入力

 airodump-ng -c 9 --bssid 00:14:6C:7E:40:80 -w psk ath0

ここで、

-c 9 は無線LANネットワークのチャンネルです。
--bssid 00:14:6C:7E:40:80 はアクセスポイントのMACアドレスです。これにより余分なトラフィックを防げます。
-w psk はIVを含むファイルを保存する際のファイル名です。
ath0 はインターフェース名です。

重要:”--ivs”オプションは用いないでください。全てのパケットを取得しなければなりません。

ここで無線LANクラインアントがアクセスポイントに接続されている場合、このように表示されます

  CH  9 ][ Elapsed: 4 s ][ 2007-03-24 16:58 ][ WPA handshake: 00:14:6C:7E:40:80
                                                                                                               
  BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID
                                                                                                               
  00:14:6C:7E:40:80   39 100       51      116   14   9  54  WPA2 CCMP   PSK  teddy                           
                                                                                                               
  BSSID              STATION            PWR  Lost  Packets  Probes                                             
                                                                                                               
  00:14:6C:7E:40:80  00:0F:B5:FD:FB:C2   35     0      116  


上記で、右上にある”WPA handshake: 00:14:6C:7E:40:80”に注意してください。これはairodump-ngが4Wayハンドシェイクを正しく取得できたことを表しています。

これは無線LANクライアントと接続出来ていない状態です。

  CH  9 ][ Elapsed: 4 s ][ 2007-03-24 17:51 
                                                                                                               
  BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID
                                                                                                               
  00:14:6C:7E:40:80   39 100       51        0    0   9  54  WPA2 CCMP   PSK  teddy                           
                                                                                                               
  BSSID              STATION            PWR  Lost  Packets  Probes    

                                         
Step 3 - 無線LANクライアントの認証を無効化するためにaireplay-ngを用いる

このステップはオプションです。我慢強ければ、アクセスポイントへクライアントが接続しに来るまで待ち、airodump-ngでハンドシェイクを収集すればよいことです。この手順を自ら高速化する際にこのステップを実施すればよいでしょう。ここでの制約は、無線LANクライアントがアクセスポイントと接続済みでなければならないということです。もし一台もアクセスポイントと接続していなければ、ハンドシェイクを取得するためにクライアントがアクセスポイントに接続するまで我慢強く待たなければなりません。言うまでもありませんが、ハンドシェイクの取得に失敗すれば、またこのステップを実行することになります。

このステップでは無線LANクライアントに対して、既にアクセスポイントとの接続が切れていることを装うパケットを送ります。無線LANクライアントはアクセスポイントとの再認証を行い始めます。再認証が今必要としている4Wayハンドシェイクを発生させるきっかけとなります。これこそがWPA/WPA2の事前共有鍵を破るために必要なものです。

前のステップのairodump-ngの結果に基づき、どのクライアントが現在接続されているかを判断します。このあとでMACアドレスが必要となります。別のコンソールを開き、次のように入力します。

 aireplay-ng -0 1 -a 00:14:6C:7E:40:80 -c 00:0F:B5:FD:FB:C2 ath0

ここで

-0 は認証の取り消しを意味します。
1 は認証取り消し先の数を入力します。 (複数を設定することも可能です。)
-a 00:14:6C:7E:40:80 はアクセスポイントのMACアドレスです。
-c 00:0F:B5:FD:FB:C2 は認証取り消し先のクライアントのMACアドレスです。
ath0 はインターフェース名

アウトプット例

 11:09:28  Sending DeAuth to station   -- STMAC: [00:0F:B5:34:30:30]

幸運なことに、このケースではクライアントの再認証を引き起こし、4Wayハンドシェイクが得られました。


トラブルシューティング

認証取り消しパケットはあなたのPCからクライアントに直接送られます。そのため、パケットをクライアントに届かせるために、物理的に十分近づかなくてはなりません。クライアントが認証取り消しパケットを受信したことを確認するためには、tcpdumpか何かを使ってクライアントから戻ってきたACKパケットを観察すればよいでしょう。もしACkパケットが戻ってこなければ、クライアントは認証取り消しパケットを受け取っていないことになります。



Step 4 - 事前共有鍵をクラックするためにaircrack-ngを実行する

このステップの目標は実際にWPA/WPA2事前共有鍵をクラックすることです。クラックするためには辞書攻撃の入力に用いる辞書が必要となります。基本的には、aircrack-ngは1ワードづつそれが事前共有鍵かどうかを試すだけです。

aircrack-ngには小さな辞書”password.lst”が付属しています。このファイルはaircrack-ngのソースコードの”test”ディレクトリにあります。Wiki FAQには広範囲な辞書ソースが掲載されています。John the Ripper (JTR)を使えば、ご自身の辞書リストを作成できます。aircrack-ngへパイプします。JTRとaircrack-ngの連携はこのチュートリアルを超えるため割愛します。

別のコンソールを開き、次のように入力します

aircrack-ng -w password.lst -b 00:14:6C:7E:40:80 psk*.cap

ここで

-w password.lst は辞書ファイル名です。同じディレクトリにない場合はフルパスで記載してください。
*.cap はキャプチャーしたパケットを保存されているファイル群の名前です。複数のファイルを読み込むためにワイルドカード * を用いることが可能です。

これはハンドシェイクが見つからなかった場合の典型的なレスポンスです。

 Opening psk-01.cap
 Opening psk-02.cap
 Opening psk-03.cap
 Opening psk-04.cap
 Read 1827 packets.

 No valid WPA handshakes found.

こうなった場合は、ステップ3(無線LANクライアントの認証取り消し)を再度実行するか、パッシブ方式ならじっと待つことです。パッシブ方式の場合は、クライアントがアクセスポイントに認証を求めるまで待たなければなりません。

ハンドシェイクが見つかった場合の典型的なレスポンスです

 Opening psk-01.cap
 Opening psk-02.cap
 Opening psk-03.cap
 Opening psk-04.cap
 Read 1827 packets.
 
 #  BSSID              ESSID                     Encryption

 1  00:14:6C:7E:40:80  teddy                     WPA (1 handshake)
 
 Choosing first network as target.

ここで、aircrack-ngは事前共有鍵のクラックを試みることを始めます。CPUスピードと辞書サイズの大きさに依存し、クラックには長い時間がかかります。

事前共有鍵をクラックできた場合のレスポンスです

                               Aircrack-ng 0.8
 
 
                 [00:00:00] 2 keys tested (37.20 k/s)
 
 
                         KEY FOUND! [ 12345678 ]
 
 
    Master Key     : CD 69 0D 11 8E AC AA C5 C5 EC BB 59 85 7D 49 3E 
                     B8 A6 13 C5 4A 72 82 38 ED C3 7E 2C 59 5E AB FD 
 
    Transcient Key : 06 F8 BB F3 B1 55 AE EE 1F 66 AE 51 1F F8 12 98 
                     CE 8A 9D A0 FC ED A6 DE 70 84 BA 90 83 7E CD 40 
                     FF 1D 41 E1 65 17 93 0E 64 32 BF 25 50 D5 4A 5E 
                     2B 20 90 8C EA 32 15 A6 26 62 93 27 66 66 E0 71 
 
    EAPOL HMAC     : 4E 27 D9 5B 00 91 53 57 88 9C 66 C8 B1 29 D1 CB 



トラブルシューティング

ハンドシェイクが取得できない!

4Wayハンドシェイクを取得するにはテクニックが必要なことがあります。ここではいくつかのトラブルシューティングテクニックを提供します。

モニターに用いるカードはクライアント、アクセスポイントとともに同じモードにしなくてはなりません。例えば、モニター用のカードが”B”モードでクライアントやアクセスポイントが”G”モードを利用している場合、ハンドシェイクは取得できません。これは”turbo”モードや他の新しい技術が用いられている新しいアクセスポイントやクライアントでは特に重要となってきます。いくつかのドライバでは、モードを指定することが可能です。またiwconfigには”modulation”オプションが用意されています。”modulation”オプションについて、詳しくは”man iwconfig”でごらんください。1, 2, 5.5, 11Mbit は 'b'となり、 6, 9, 12, 18, 24, 36, 48, 54Mbit は 'g'となります。
モニターモードのカードを同じ速度に設定しなくてはならない場合もあります。IE auto, 1MB, 2MB, 11MB, 54MB, など。
パケットを取得するカードがアクセスポイントと同じチャンネルに固定されていることを確認してください。airodump-ng中には”-c <APのチャンネル>“で指定することが可能です。
同じPCで無線LANマネージャが動いていないことを確認してください。無線LANマネージャはあなたの知らないところでチャンネルやモードを変更します。
アクセスポイントと無線LANクライアントからのパケットを受信するために物理的に十分近づいてください。無線LANカードの電波強度はアクセスポイントのそれよりも低いのが通常です。
逆に、あまりにも近づきすぎるとエラーパケットを受け取ったり、パケットが破棄されることがあります。そのため近づきすぎは禁物です。
wikiに掲載されているドライバを使っていることを確認してください。ドライバによっては、古いバージョンでは全てのパケットを取得できないことがあります。
理想としては、ハンドシェイクを生成するために無線LANクライアントを実際に接続、切断することです。
認証を取り消すテクニックを用いる場合、クライアントが再認証を起こすのに必要な極々最低限のパケットを送ることです。通常、ここでは一つの認証取り消しパケットが用いられます。送りすぎるとクライアントは再接続に失敗するため4Wayハンドシェイクを生成しません。同様に、ブロードキャストではなく、直接認証取り消しを送ります。クライアントが認証取り消しパケットを受け取ったことを確認するために、tcpdumpなどACKパケットを観察できるツールを用います。ACKパケットを受け取れなかった場合は、クライアントは認証取り消しパケットを受け取っていないと言うことです。
クライアントの無線を一旦止めてから再起動してみる。
無線LANマネージャー, Kismetなどの邪魔をするプログラムやプロセスを実行させない。
WPA Packet Capture Explained tutorialを用いて取得したデータに問題がないかを確認する。アクセスポイントのパケットの欠損、クライアントのパケットの欠損などを特定できます。
残念ながら、4Wayハンドシェイクを適切に取得するためには少し実験じみたことが必要となることがあります。ポイントは、初回でダメなら、少し我慢していろいろと試してみることです。そうすればできるでしょう!

もう一つのアプローチはWiresharkを使って、取得したパケットを分析することです。これが問題を解く手がかりとなることがあります。WPA Packet Capture Explained tutorialはこのチュートリアルと一緒に読むことで、通常のWPA接続のしくみを理解する手引きになります。またFAQにはWiresharkの詳細な使い方が掲載されています。

理想的な話をすれば、ちゃんとパケットを取得できる無線LANデバイスを使うべきです。いくつかのドライバ、例えば、RTL8187Lなどはカード自身が送信したパケットを取得できません。またwikiに掲載されているバージョンのドライバを利用してください。RT73などの古いバージョンのドライバではクライアントパケットが取得できないことがあるためです。

Wiresharkを利用する際は、”eapol”フィルターを使うことでEAPOLパケットだけを手早く表示できます。どのEAPOLパケットが実際に取得できたかにより、修正計画を決めます。例えば、クライアントパケットを損失している場合は、理由を特定し、どうやってクライアントパケットを取得するかを考えます。

パケット分析をしっかり行えるようになるためには、airodump-ngをBSSIDフィルターなしで起動し、IVだけでなく全パケットを取得することです。BSSIDフィルターを用いない理由は、ACKパケットを含め全てのパケットを確認するためです。BSSIDフィルターを用いると、パケット取得時に特定のパケットが欠損してしまいます。

クライアントまたはアクセスポイントから送られる全てのパケットは承認されていなければなりません。これは元のパケットを送ったデバイスを宛先とするMACアドレスを持った承認パケットによってなされます。クライアントの認証取り消しを行えば、ACKパケットを受け取れることでこの事実を確認できます。このことはクライアントが認証取り消しパケットを受け取ったかどうかを確認できます。ACKパケットを受け取るのに失敗したということは、クライアントは送信範囲から外れていると言うことを意味します。従って、失敗したと言うわけです。

パケット分析をするに当たって、詳細な手引きをすることは不可能です。いくつかのテクニックと見るべき項目について触れました。WPA/WPA2についての技術を磨くことと、Wiresharkを使いこなすための努力こそが必要なことです。


            


netatalkを久々にアップデート on ubuntu 10.04 (lucid) [Netatalk]

割と長い間放置していた、netatalkですが、2.1.2以前はセキュリティ的な問題もあるので、そろそろアップデートしようかというわけです。

アップデート前:netatalk2.1
アップデート後:netatalk2.1.5

まあ、何です。そんなにやることはありません。


ただ、万一に備えて、すぐに古いバージョンでファイルサーバを運用できるよう、
USBメモリで稼働しているシステムを丸ごとバックアップしておきます。

# mount
/dev/sde1 on / type ext4 (rw,errors=remount-ro)
/dev/md0 on /st1 type ext4 (rw,user_xattr)

/dev/sde でシステムが動いているようなので、

USBメモリを新たに1本挿して、そちらにバックアップします。

# dd if=/dev/sde of=/dev/sdf
15949824+0 records in
15949824+0 records out
8166309888 bytes (8.2 GB) copied, 1690.11 s, 4.8 MB/s

時間がかかりましたが、無事終了。



では、netatalkのダウンロードから始めます。


# tar zxvf netatalk-2.1.5.tar.gz

# cd netatalk-2.1.5

# ./configure --enable-debian

Using libraries:
    LIBS =  -L$(top_srcdir)/libatalk
    CFLAGS = -I$(top_srcdir)/include -D_U_="__attribute__((unused))" -g -O2 -I$(top_srcdir)/sys
    SSL:
        LIBS   =  -L/usr/lib64 -lcrypto
        CFLAGS =  -I/usr/include/openssl
    LIBGCRYPT:
        LIBS   = -lgcrypt
        CFLAGS = 
    BDB:
        LIBS   =  -L/usr/lib64 -ldb-4.8
        CFLAGS = 
Configure summary:
    Install style:
         debian
    AFP:
         AFP 3.x calls activated: yes
         Large file support (>2GB) for AFP3: yes
         Extended Attributes: ad | sys
         DDP enabled: yes
    CNID:
         backends:  dbd last tdb
    UAMS:
         DHX     ( SHADOW)
         DHX2    ( SHADOW)
         RANDNUM ( SHADOW)
         passwd  ( SHADOW)
         guest
    Options:
         CUPS support:           no
         SLP support:            no
         tcp wrapper support:    no
         quota support:          yes
         admin group support:    yes
         valid shell check:      yes
         cracklib support:       no
         dropbox kludge:         no
         force volume uid/gid:   no
         Apple 2 boot support:   no
         ACL support:            no

# make

# make install

# /etc/init.d/netatalk restart

# /usr/local/sbin/afpd -V
afpd 2.1.5 - Apple Filing Protocol (AFP) daemon of Netatalk

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.

afpd has been compiled with support for these features:

        AFP3.x support: Yes
      Transport layers: TCP/IP DDP
         CNID backends: dbd last tdb 
           SLP support: No
  TCP wrappers support: No
         Quota support: Yes
   Admin group support: Yes
    Valid shell checks: Yes
      cracklib support: No
        Dropbox kludge: No
  Force volume uid/gid: No


という具合に完了。お疲れ様です。
2.1.xからの移行であれば、設定ファイルとかそのまま保存されていますので、何も触る必要は無いかと思います。


ビルド環境、設定は前回の2.1の時に残したこちらを参考に。


ちなみに、XbenchでMacbookProからのAFP共有でのベンチマークを取ってみましたが、ほとんど同じです。

BEFORE
System Info
Xbench Version 1.3
System Version 10.6.6 (10J567)
Physical RAM 4096 MB
Model MacBookPro5,5

Disk Test 79.55
Sequential 46.91
Uncached Write 21.38 13.13 MB/sec [4K blocks]
Uncached Write 143.42 81.15 MB/sec [256K blocks]
Uncached Read 39.27 11.49 MB/sec [4K blocks]
Uncached Read 164.89 82.87 MB/sec [256K blocks]
Random 261.41
Uncached Write 120.89 12.80 MB/sec [4K blocks]
Uncached Write 253.88 81.28 MB/sec [256K blocks]
Uncached Read 1289.05 9.13 MB/sec [4K blocks]
Uncached Read 431.88 80.14 MB/sec [256K blocks]

AFTER
Results 78.22
System Info
Xbench Version 1.3
System Version 10.6.6 (10J567)
Physical RAM 4096 MB
Model MacBookPro5,5

Disk Test 78.22
Sequential 46.08
Uncached Write 21.38 13.12 MB/sec [4K blocks]
Uncached Write 143.19 81.02 MB/sec [256K blocks]
Uncached Read 37.13 10.87 MB/sec [4K blocks]
Uncached Read 163.77 82.31 MB/sec [256K blocks]
Random 258.67
Uncached Write 118.05 12.50 MB/sec [4K blocks]
Uncached Write 252.84 80.94 MB/sec [256K blocks]
Uncached Read 1313.67 9.31 MB/sec [4K blocks]
Uncached Read 439.22 81.50 MB/sec [256K blocks]

それより、このファイルサーバで連続運用して200日くらい経ち、4TB中1TB以上使っていますが、全く
パフォーマンスの低下は見られません。
がんばっていますね。優秀。優秀。

ES34069-BK-180 Mini-DTX/Mini-ITX Micro Tower Chassis

ES34069-BK-180 Mini-DTX/Mini-ITX Micro Tower Chassis

  • 出版社/メーカー: Chenbro
  • メディア: 
あ。これは筐体だけですが〜。


PLANTRONICS DISCOVERY975 買いました [iPhone]

PLANTRONICS DISCOVERY975 って何かといいますと、Bluetooth接続のイヤフォンです。
イヤーピースともいいます。


【正規品】 PLANTRONICS Bluetooth イヤーピース DISCOVERY975

【正規品】 PLANTRONICS Bluetooth イヤーピース DISCOVERY975

  • 出版社/メーカー: PLANTRONICS
  • メディア: エレクトロニクス

ドラマ24で、Chloe O'Brianなどがよく耳に刺して通話しているアレです。

スクリーンショット(2011-01-05 3.15.35).png


もともとは↓これを使っていたのですが、両耳ふさがってしまうと割と危ないので、
片耳しかふさがらない、イヤーピースに変更です。

Apple In-ear Headphones with Remote and Mic MA850G/A

Apple In-ear Headphones with Remote and Mic MA850G/A

  • 出版社/メーカー: アップル
  • メディア: エレクトロニクス

使って一ヶ月ほど経ちましたので、使用感などのレポートです。


DISCOVERY975 はBluetooth2.1+ EDR(Enhanced Data Rate)+eSCO + セキュアシンプルペアリング(SSP)に対応し、PINコード(パスキー)を入力せずにイヤーピースのペアリングな便利な代物です。


私の場合はiPhone4で使っているのですが、最初のペアリングも至って簡単。


まず、iPhoneの「設定」→「一般」→「Bluetooth」と進み、Bluetoothをオフからオンにします。

そうしますと、iPhoneが自動的にBluetoothデバイスを探し始めます。
しばらくしますと、登録されていないBluetoothデバイスが発見されます。

IMG_1825.PNG


そこで、DISCOVERY975 の↓赤丸あたりを押してあげると、、

IMG_1822.jpg


いったん、

IMG_1826.PNG


という状態となり、数秒後、ペアリングが自動的に完了し、

IMG_1827.PNG


これで使用可能です。

通話に使用する場合は、このまま、キーパッドから電話をかけるだけです。

音声の入出力ソースは、オーディオソースから行います。

IMG_1829.PNG


「オーディオソース」をタップすると


IMG_1830.PNG


こちらから、通常のiPhoneによる通話への変更も可能です。


さて、当然といえば当然ですが、DISCOVERY975には充電池が内蔵されています。
それを感じさせない軽さですが、充電も至って簡単。


付属のACアダプタを用いて、直接イヤーピースを充電するか、携帯用充電ケース経由で
充電することになります。


携帯用充電ケースが優れもので、これ自体に充電池が内蔵されており、仕事などの
移動中などで未使用時にはこのケースにしまっておくだけでイヤーピースが自動的に
充電されます。

IMG_1820.JPG


ケースには液晶のインジケータが用意されており、イヤーピース、ケースの充電
レベルが三段階で表示されます。


IMG_1821.JPG


ケースからイヤーピースを取り外した絵。


IMG_1824.JPG


また装着した絵。取り外すには、引っ張るのではなく、右端のボタンを押し下げます。


IMG_1828.JPG


Bluetoothでリンクしているときには、リンクがわかるように表示されます。


IMG_1823.JPG


イヤーピースのイヤーチップはS,M,Lの三種類が同梱されております。

付け心地は、一瞬、落ちそう!と思うのですが、耳を下にしてみても、なかなかどうして
落ちません! よくできています。

通話クオリティは周辺ノイズに割と左右されていそうです。検証したわけではありません。

屋外での使用がもっともきれいな音声で聞き取れ、非常にクリアーです。

オフィスなどでは様々な無線機器の電波が飛び交っていますので、数秒おきに「プチッ」
というノイズが聞き取れますが、通話自体には問題ありませんし、通話先には聞こえて
いないようです。

通常の通話では全く問題ありません、というか、とても使い勝手がいいです。

iPhoneと10mくらい離れますと、Bluetoothのリンクが切れますが、DISCOVERY975の
ボタンを押すとすぐにリンクが復活するので手間もかかりません。


わたしはiPhoneで利用していますが、その他対応機種リストはこちら

日本語マニュアルはこちら


【正規品】 PLANTRONICS Bluetooth イヤーピース DISCOVERY975

【正規品】 PLANTRONICS Bluetooth イヤーピース DISCOVERY975

  • 出版社/メーカー: PLANTRONICS
  • メディア: エレクトロニクス

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。