VaioPro11にWindows7(32bit)をインストールしてから試した3つのこと

こんにちは、木佐貫です。

年があけてあっという間に4月に入りましたね。

この季節になると、6年前の社会人になったばかりの自分をよく思い出します。

右も左もわからないくせに、野望だけは一人前で、
「日本一のエンジニアになってやる!!」という熱き気持ちで新入社員研修に励んでいたなーなんて思い返していました。
(あ~、恥ずかしい)

その新入社員研修に受けた組織論みたいな講座の中でこんな問いかけがありました。

 なぜ企業は社会人経験もない素人を雇うのか

当時は考えたことすらなかったのですが、人を雇えば当然給料を払わないといけないですし、
雇ったあともお金を貰えるような生産的な仕事はなかなかできず、企業から見ればただただ赤字です。

特に私が最初に務めた企業は新入社員を100名以上採用し、さらに3ヶ月もみっちり研修をするくらい教育に熱を入れてる企業でした
(いま思い返してもありがたいです)

つまり、月20万円×100人×3ヶ月=6千万円!!!の赤字です。
しかも研修講師や研修会場費用もかかるので更に費用は大きくなります。

つまり、企業の経営者は6千万円以上を”投資”するだけの”価値”が若者にはある!と考えているわけです。

その”価値”が何なのかを知るための有名な話があります。
カマスの実験です。

<カマスの実験>
 1.水槽にカマスという魚をいれ、まずは普通に餌を与えて飼育します。
 2.次に水槽を透明なガラス板で仕切り、カマスのエリアと何もいないエリアに分けます
 3.次に餌を与えるのですが、何もいないエリアにだけ餌をあたえます。
   するとカマスは餌を食べに行きますが、ガラス板にぶつかり餌までたどり続けません
   ガラスに激突し、痛い思いをした上に、餌が食べられないわけです。
 4.引き続き、何もいないエリアにだけ餌を与え続けると次第にカマスは「餌を食べれない」
   ということを学習し、餌を入れても食べに行こうとしなくなります。
 5.その後にガラス板を外して普通に餌を与えるとどうなるでしょうか?
   今度はガラス板がなく餌を食べに行くことができるのに、カマスは餌を食べに行かないのです。
   それどころか自分の目の前を餌が漂っているのに食べようとせず餓死してしまうのだそうです。

このように餌は食べれないのだと”諦めてしまった”カマスは何をしても餌を食べようとしなかったそうです。
失敗ばかりして挑戦する心が折れてしまったんですね。

ただ、唯一この哀れなカマスくんに餌を食べれるようにしてあげる方法があったそうです。
それがわかると企業がなぜ新入社員を雇うのかの1つの答えが得られます。

答えが知りたい方は適当にググってみてください(笑)

しかし僕は、この話でよく言われる教訓以外にも更に大切な学びがあると思うのです。

つまり、

 100回失敗しても101回目に成功するかも知れない
 だから、くよくよ考えずに行動を起こせ!

です。

今日はくよくよしながらも諦めずに試してみたらなんとかなったという話です。
(そんな大層な話ではないのですけど・・・)

VaioPro11にWindows7(32bit)をインストールしてから試した3つのこと

VaioPro11を購入し半年程は普通に使っていたのですが、どうしても慣れないことがありました。
『ツールは使いこなせてこそ意味がある』とういポリシーのもと、標準機能を色々使い倒し、使いこなして来たのですが、
Windows8の新スタートメニューはどうしても拒否反応が出てしまいました。

あと、画像ビューアとかIEとかが意味もなくストアアプリで起動することもイライラを募らせ、
ついにLinuxデスクトップ環境へ手を伸ばしておりました。

が、ここにも問題が、、、

Ubuntu → PearOS → Fedora → Ubuntuと渡り歩きましたが
ドライバ周りが満足する動作をせず、断念。。。

マウスがぴゅんぴゅん飛び回って、使い物にならないのです(ノД`)・゜・。

とは言えいえ、今更Widnows8に戻ろうという気持ちにもなれずに悶々としており、
思い切ってWindows7に入れ替えることにしました。

しかし、インストールしたあとに気づいたのですが、SonyはWindows7の64bit用ドライバしか
提供しておらず、Windows7の標準ドライバでは全く使い物にならに状態で途方にくれていました。

そんなこんなで、VaioPro11に無計画にWindows7(32bit)をインストールしてから、

Picasa Content

使えるレベルにまで行った3つのステップをまとめておきます。

1.デバイスマネージャーからドライバの更新を行う。

デバイスマネージャーを使うと、動作しているハードウェアと動作していないハードウェアを調べることができます。
動作していないハードウェアは画像のように黄色いはてなマークで表示されます。

はてなマークを右クリックして「ドライバソフトウェアの更新」を実施することで、Windowsが提供しているドライバで動作する場合は自動的にドライバがインストールされます。

この操作でサウンドか何かのはてなマークを消すことができました。
(メモをとってなかったので詳細は忘れてしましました)

しかし、「ドライバソフトウェアの更新」をしても見つからないドライバがまだまだ多数。。。
次の作戦に移ります。

2.ハードウェアベンダーが提供しているドライバを適用する

当然といえば当然なのですが、PCメーカがPCの部品すべてを提供しているわけではなく、
たとえばCPUならインテル製、トラックパッドならSynaptics製というようにいくつかのメーカーのハードウェアを組み合わせて1台のPCが出来上がっています。

なので、VaioProに搭載されているハードウェアを調べて、そのメーカーがドライバを提供していれば適用できる可能性があります。

まず、VaioPro11の詳しい仕様を調べます。

SVP11219CJB・S SVP11218CJBI スペック(Sonyサイト)
http://www.sony.jp/vaio/pre_include/html/VP21/spec_retail2.html

Sonyのサイトによると以下のパーツが使われているようです。
あと、いろいろググってみると、タッチパッドはSynaptics製であることもわかりました。
 チップセット:インテル Core i5-4200U プロセッサー(内蔵)
 Wifi:Intel 7260 Wi-Fi
 グラフィック:インテル HD グラフィックス 4400
 タッチパッド:Synaptics

あとは、「パーツ名+ドライバ」などでググってドライバが公開されていないか調べます。
すると案の定それっぽいドライバにたどり着きました。

 Wifi:Intel 7260 Wi-Fi
 IT 管理者向けインテル® PROSet/Wireless ソフトウェアとドライバー(Intelサイト)
https://downloadcenter.intel.com/Detail_Desc.aspx?lang=jpn&changeLang=true&DwnldID=23715
 ・Wireless_17.0.0_Ds32.zip

 グラフィック:インテル HD グラフィックス 4400
 ダウンロード・センター(Intelサイト)
https://downloadcenter.intel.com/
 Windows7(32bit)のもの

 タッチパッド:Synaptics
 Drivers(Synapticsサイト)
http://www.synaptics.com/en/drivers.php
 Windows 8/7/XP/Vista 64/32-bit Edition v17.0.19

そしてインストールすると、エラーなくインストールが完了し、はてなマークも消えました。
ただし、マウスはいまだ挙動が怪しく、しょっちゅう飛びます。
この症状は使い勝手が悪く、非常にストレスがたまります。
なので、なんとか他の解決策を探すことにします。

チップセットはCPUに内蔵されているのですが、検索してもそれらしいものがヒットしませんでした。
おそらく検索キーワードが悪かったんだと思います。

とは言え、妙案があるわけでもなく、ググり続けれど解決策も思いつかず時間だけが過ぎていきました。

3.Sonyが公開しているドライバをダメ元でインストールしてみる

で、なんとなく閃いたのが、Sony提供の64bitドライバを何とか32bit環境で動作させられないか、というアプローチ。
結論を先にいうと、64bitドライバを普通にインストールしたらなんら問題なく動作しました!

ドライバーダウンロード(Sonyサイト)
http://vcl.vaio.sony.co.jp/business/download/driver/model_list.html

型番によってドライバが2種類公開されているようですが、ダメ元だったので何も考えず上のドライバページに飛びます。

不明だったチップセットドライバをダウンロードしやけくそ気味に実行!
どうせ「このWindowsには対応しておりません」とかエラーが出るかなーっと思ったら

・‹‹(´ω` )/››

・・・‹‹(  ´)/››

・・・・・ ‹‹( ´ω`)/››

・・・・・・・・・∑( ゚д゚)/ 「はてなマークが消えた」

と消えたことにびっくりさせられました。

調子にのって、他にもいろいろとインストールしてみますが、エラーも一切なくすべてすんなり入って行きました。

もしかしたら最初からすべて64bit用ドライバを入れがほうが良いのかもしれませんが、
何が起こるかわからないため、ひとまず必要最小限のものだけ導入しました。

僕が導入したものは以下の4つです。
 ・Chipset Driver (Intel)チップセットドライバー(EP0000308487.exe)
 ・Pointing Driver (Synaptics)タッチパッドドライバー(EP0000308540.exe)
 ・USB 3.0 Driver (Intel)USB 3.0 ドライバー(EP0000319809.exe)
 ・Bluetooth Driver (Intel)Bluetoothドライバー(EP0000319827.exe)

そして、なんといっても嬉しい事にこのドライバを入れることでじゃじゃ馬マウスがおしとやかマウスに変身!
2本指スクロールもちゃんと機能するようになりました。

理由はわからないですが、64bitOS上で32bitアプリを動かく仕組みがWindowsには備わっているので、
もともと32bitドライバだったのかなーっと思っていますが、これはまた時間があるときに調べてみようと思います。

ということで、普通の方はドライバなんてインストールすることは中々ないとは思いますが、
外付けのデバイスとか動作が芳しくないときの参考にでもなれば幸いです。

ありがとうございました!

コメントする

WireSharkで通信量を測定しながら世の中の原理とか本質とかを考えてみたときの話

こんにちは、木佐貫です。

唐突ですが僕は「原理」とか「本質」って言葉が好きです。(なんの告白だ!)

子供の時から漠然とですが、

「世の中は実はシンプルな法則で満ちていて、複雑極まりない世の中も実はシンプルに説明できてるのじゃないのかな」と考えていました。

そして、そんな究極の法則ってやつがきっとあるはずという気持ちから学生時代は物理学を専攻していました。

世の中を支配する究極の法則

それにとてつもないエレガントさやロマンを感じちゃっていたわけです。

(プログラムを書く人は「短く簡潔なコード」ほど美しいと感じるでしょ? あれみたいな感じです)

社会に出てそんな気持ちも忘れて“現実的”な仕事に没頭する中で、久しぶりに「原理」とか「本質」が大切だよね、ってことを思い出すきっかけになったのがネットワークのパケットキャプチャーです。

普段当たり前のように使っているインターネットの具体的な中身の観察。

インターネットを「川」に例えるなら、「水」の動きを観察するって感じでしょうか。

本日はインターネットという「川」を観察できるWireSharkというツールのお話。
さして面白い話でもなく、技術屋のメモとしてどうぞ。

WireSharkで通信量を測定してみる

WireSharkを使うのは初めてでしたが、パケットキャプチャーの老舗ソフトみたいなものなのですぐに測定する方法も分かるだろうと思っていたのですが、ドンピシャなサイトも見つからず、試行錯誤したのでその内容をご紹介します。

試行錯誤の結果なのでもっと良い方法が見つかれば追記しますね。

■WireSharkのインストール、初期設定

インストールや初期設定についてはいろいろな紹介サイトがありますのでそちらにお任せします。

例えば以下のサイトなんかがわかりやすかったです。

http://beginners-network.com/wireshark.html

■通信量の測定

で、通信量の測定ですが、統計した情報の表示やグラフ表示機能があり、そちらから通信量を知ることができそうです。

しかし、これは測定結果全体の統計を表示しているだけで、狙った通信以外の通信も合算されています。

したがって、

 1.測定範囲の期間を絞る

 2.パケットをフィルターし、測定対象の通信に限定する。

 3.上記の絞込を行った結果の統計情報を表示する

というアプローチを取ることにしました。

1.測定範囲の期間を絞る

まず、パケットキャプチャーをしつつ、想定したい通信を行います。

今回は高画質の動画を配信した場合のネットワーク負荷を測定したかったため、サンプル動画を配信しました。

このとき、配信開始~配信終了の時間をメモしておきます。

測定データを流し終わったらキャプチャーは止めてしまって構いません。

次に、測定データの開始と終了時のパケット番号を調べます。

[Statistics]->[IO Graph]をクリックすうと、いま測定した通信がグラフ化されます。

[View as time of day]にチェックを入れると横軸を時刻で表示してくれて便利です。

また、グラフをクリックすると該当するパケットが選択されます。

想定データの開始、終了時間や配信サーバのIPアドレスなどから開始と終了付近のパケット番号をメモします。

 

2.パケットをフィルターし、測定対象の通信に限定する。

WireSharkは様々なフィルター機能が用意されています。

例えば、「あるIPアドレスからの通信で、パケット番号(frame number)の○番~□番までを表示」みたいなことが簡単にできます。

まぁ、難しいことは僕はまだわからないので取り敢えず「パケットを右クリック」->「Prepare as」->「and Selected」をクリックしてみてください。

自動的にフィルタールールが登録されます。

WireSharkのこの機能が秀逸なのが、「No」列を右クリックするとパケット番号(frame number)でのフィルタールールを追加してくれ、「Source」列を右クリックして追加するとSourceIPでのフィルタールールを追加してくれる点です。

具体的には今回は以下のフィルタールールになりました。

((frame.number == 3195) && (frame.number == 12653)) && (ip.src == 74.125.12.115)

ただ、これだとフィルターを適用しても何も表示されません。

これは「frame.numberが3195かつ12653のパケットを表示する」という意味になっており、そんなパケットがないのでなにも表示されなくなってしまします。

なので、以下の赤字のように修正します。で「Apply」をクリックします。

((frame.number >= 3195) && (frame.number <= 12653)) && (ip.src == 74.125.12.115)

こんな感じで、右クリック->フィルター登録+微調整をすると細かなフィルターの文法を覚えなくてもなんとなくで使えます。

3.上記の絞込を行った結果の統計情報を表示する

上記の手順で通信量を測定したいデータのみを表示することができました。

あとは統計情報を表示するのですが、その前に「Edit」->「Make All Displayed Packets」をクリックします。

すると今表示されているパケットすべてにマーキングが施されます。

この状態で「Statistics」->「Summary」をクリックします。

すると以下のとおり、「キャプチャー全体」「表示されているパケット」「マーキングされたパケット」についての統計情報が表示されます。

表示される統計情報は以下のものです。

・パケット数

・キャプチャーした時間(秒)

・平均パケット数(数/秒)

・平均パケットサイズ(Byte/個)

・バイト

・平均バイト数(byte/sec)

・平均bps(Mbps/sec)

 

マーキングしなくてもフィルターをしたらDisplayedに表示されるのですが、マーキングは色々と使えるテクニックなのでご紹介しました。

あと、流れているパケットを見ているだけでも面白いですよね

(そんなやつはいないか(;・∀・)

お役に立てたら幸いです。
ありがとうございました!

コメントする

Windowsのログインパスワードをクラックする羽目になった話

先日クライアントから問い合わせがあり、私の収めたWIn7のパソコンでログインが出来なくて困っていると問い合わせがあった。

話をよく聞いて見ると、パスワードの有効期間をデフォルトの42日のままで出荷していたのだが、
クライアントが納品時に初回ログインして、ウイルスソフトのインストールなど必要設定をしたのち2ヶ月あまり放置しており、
久しぶりに起動したらログインできなくなった、という事情らしい。

パスワードの有効期間が切れた場合、通常ならログイン時に有効期間が切れている旨の通知がされ、新しいパスワードを設定するとログインできるので、クライアントの言う「ログインできない」状態というのが不可解であった。

クライアント曰く「42日を過ぎたから古いパスワードが使用できなくなってしまったんじゃないか」と私側の責任に感じているらしく、ちょっとまずい空気感だなーと重いパスワードを解析させてもらうことになった。

Win7のパスワード解析は初めてで、思ったより勉強になったのでポイントをこちらにまとめて置く。

プラン1:Ophcrack

WindowsXP時代からあるツールとしてOphcrackというツールがある。詳細は他のサイトで解説されているので割愛。
Gigazine:Windowsのパスワードをわずか数分で解析する「Ophcrack」の使い方

こちらのツールを試すが、「not tables found」と表示され、パスワード解析そのものがされていない模様。
調べてみると、そもそもWindowsは”パスワードそのもの”は保存しておらず、パスワードから一意に生成できるハッシュ値のみを保持しており、ログイン認証時には入力されたパスワードから同じようにハッシュ値を生成し、保存されているハッシュ値と一致するかを比較することで、パスワードの正否を確認する仕組みらしい。

そして、ハッシュにはLMハッシュとNTLMハッシュという2種類がある。
LMハッシュは強度が低く、簡単に解析されてしまうのだが、NTLMハッシュは強度が高く、今のコンピュータの処理速度では現実的な時間内には解析できないようなものらしい。

そして、OphcrackはWindowsXP時代のLMハッシュなら瞬殺で解析できるが、NTLMハッシュの場合は4文字までのパスワードしか解析しようとせず、それ以外の場合は解析できないツールらしい。

とういか、今回の場合は対象のパソコンのHDDが暗号化されており、CDブートしてもそもそもディスクの情報が読み取れないというオチ。

うっかりしてました。

プラン2:utilman.exeをcmd.exeに置き換えるハック

これも割りかし昔からある手法だが、utilman.exeをcmd.exeに置き換えることによって、ログインしなくてもコマンドプロンプトを立ちあげられるようにしてしまうというハック。しかし、今回の場合、

  1. パスワード自体を解析したい
  2. HDDが暗号化されているのでそもそもutilman.exeの置き換えができない

という点で却下。

しかし、CDブートからOSのシステムファイルにアクセスするという手法ははじめて知った時には目からウロコで、知っておいて損はないと思う。
詳しく知りたい方は@ITにて解説されているのでそちらを一読すると勉強になると思う。
@IT:パスワードを忘れたWindows 7/8/8.1にログオン(サインイン)する

プラン3:ハッシュ入るを引っこ抜いて、手動で解析する

とうことで、結論を先にいうと、今回は手動で解析することで何とか問題解決。
作業の流れを記すと

  1. SAMデータベース(ハッシュ値が格納されいるファイル)を取得する。
  2. samdump2というLinux用のツールでSAMデータベースからハッシュ値を解析する。
  3. ハッシュ値のマッチングを行うPerlスクリプトを書いて、解析させる。

という流れになる。

1.SAMデータベース(ハッシュ値が格納されいるファイル)を取得する。

SAMデータベースはアクセスできない領域に保存されているため通常の方法はアクセスできない。
そこでCDブートして適当なOSを起動し、そのOSからSAMデータベースにアクセスする手法をとる。

WindowsのOSメディアやなければWinPEという復旧用Windowsを作成する。
WinPEの作成の仕方は例によって@IT様にお任せしよう。
@IT:最強のデータ・サルベージ・ツールWindows PE 3.0

CDブートしたのち、(たぶん)Shift+F11でコマンドプロンプトを立ち上げる。
そして以下のパスにあるSAM、SYSTEMの2ファイルを適当なフォルダ、例えばCドライブ直下にコピーする。

cp C:\Windows\System32\config\SAM C:\
cp C:\Windows\System32\config\SYSTEM C:\

2.samdump2というLinux用のツールでSAMデータベースからハッシュ値を解析する。

続いて、ハッシュ値を取得するのだが、パスワードのハッシュ値はSAMファイルに暗号化された形で格納されており、復号するためにはSYSTEMを用いる。
ここの詳しい暗号化の仕組みについては調べていないが、Linuxのsamdump2というコマンドで暗号化を解除し、ハッシュ値を取得することができる。

ということで、VMPlayerにCentOSのMinimal版を構築し,samdump2をインストールする。

sudo yum -y install samdump2

続いて、CentOSにSAM、SYSTEMを転送し、以下のコマンドでハッシュ値を取得する。

samdump2 SAM SYSTEM

ちなみに、他の文献ではbkhiveというコマンドを使って予め復号のための鍵を取得しておく手順がよく解説されているが、

Error reading ControlSet: _RegOpenKey

というエラーが発生しうまくいかないことがあった。
samdumpのヘルプをよむと直接SYSTEMファイルを食べさせることができるようなので上記コマンドで処理した。
めでたく解析に成功すると以下のような結果が表示される。
<ユーザ名>:<UID>:<LMハッシュ>:<NTLMハッシュ>
という形式で出力されるようだ。
Win7環境はデフォルトではLMハッシュは無効化されているのに、LMハッシュの位置にも何かのハッシュ値が表示されていた。
が、本題には関係なさそうなので無視して次にいく。

Administrator:500:5FE055EE93CA7DB048D7645CD4E30C8G:4FEBC2EC1E27A3168F24289B5850F48G:::

3.ハッシュ値のマッチングを行うPerlスクリプトを書いて、解析させる。

つづいて、ハッシュ値とマッチする文字列を見つけ出す作業だが、どうやらWindowsはMD4というアルゴリズムを用いてハッシュ化している。
詳細は例によって@ITに任せ(ry
@IT:人の造りしもの――“パスワード”の破られ方と守り方

ちなみに今のパソコンのマシンパワーを持ってしてもNTLMハッシュを総当り的にクラックしようとすると天文学的な時間が必要になるので解析はまず不可能。
だが、パスワードに一定の傾向や推測されやすいパスワード(例えば誕生日や辞書に乗っている言葉)に限定できる場合、とたんにパスワード候補の数が絞られるため、場合によっては破られてしまう可能性がある。
今回もまさにその通りで、クライアントのパスワードのタイプミスが原因だろうと推測されるので、クライアントが本来設定する予定だったパスワードの文字列あらNumLockやCapsLockがOnになっていた場合、周辺のミスタイプしそうなキーなどから9万種程度にパスワード候補が絞れたため、その9万種と上記手順までで取得したハッシュ値を照合することにした。そのために以下のようなPerlコードを書いた。

#!/usr/bin/perl
use strict;
use utf8;
use Encode ‘encode’;
use Digest::Perl::MD4 qw(md4 md4_hex md4_base64);

#パスワードパターン
my @pattern = q(x x x x x x x x x x x x x);
my $hash_str = uc “取得したハッシュ値”;

if( scalar @ARGV > 0){
    $hash_str = uc $ARGV[0];
}

foreach(@pattern){
    if( $hash_str eq md4_hex encode(“UTF16LE”, $_ ) ){
        print “HIT!!! => “, $_, “\n”;
        exit ;
    }
}

print “Not Found …\n”;

ポイントとしてはWindowsは内部文字列をUnicode(UTF16LE)形式で保持するため、文字列を正しくエンコードした後にハッシュ値に変換するところくらい。ちなみにWindowsの内部文字列のエンコード形式を単にUnicodeとしか書いていない文献がおおくて、思いの外ハマったのはここだけの秘密。

他にも小さなハマりポイントはあったけど、おおまかにはこうした流れで解決することができた。
結果的には再インストールすることもなく、信用を失うこともなく、解決しめでたしめでたしといったところだ。

ふ~、よかった(*´∇`*;△

2件のコメント

はじめまして!

はじめまして、木佐貫 明です。

ものづくりに携わって7年目のIT技術者です。
便利なツールから日常のライフハック、果ては低コストでも美味しいたこ焼きの作り方まで、

〜プロフィール〜

東京理科大学という関東で合コンに誘いたくない大学トップ3に入るほどのコテコテ理系大学を卒業後、
富士通系システム会社に入社!

期待と不安を胸に輝かしい東京生活が始まるかと思いきや、
入社2日目にして、まさかの大阪転勤(;・∀・)

大阪7年目にして未だに大阪弁が話せません。
OOSAKA-BENとってもムズカシイデス(ーー;)

得意分野はWindows、Linux、Vmwareなどのインフラ系
好きな言語はPerl、VBAもたまにをむしゃむしゃ
得意料理は銀だこバイト時代に身につけたたこ焼き

不定期にまったりナレッジをためていきますのでよろしくお願いします。日々の調べ事や発見などの中から役に立ちそうな情報をお届けします。

少しでもお役立てできれば幸いです。

コメントする