SMB2でファイルをアクセスしてみたい
そんな単純な動機でコードを書いてみたが、仕様が複雑過ぎてさっぱりわからない。ネゴシエーションのハードルを下げまくって何とかNTLM認証を通し、目的のファイルアクセスが出来るようにはなったものの、どういうわけかMacOSXのファイル共有にアクセス出来ない。本家の2008R2/Win7/8.1/10やsamba4には入れるのに、MacOSXだけは弾かれる。WireSHARKでパケット見ても、他のSMB2通信と比べて、それなりに遜色ないデータを送ってるんだがなぁ、、、最後にsmbclientでアクセスしたパケットを見るとMICがない。まぁ、ダメ元でMICを抜くと認証が通った、、、何故?w ハッシュの計算は多分合ってると思うんだけど、理由が不明。それにWindowsからMacOSXへのアクセスでは普通にMIC付けて通ってるんだよなぁ。
謎が多い、、、
2016/3/9 水曜日
SMB2再び
iOS 9.2
以前、習作として作ったiOSアプリだが
iOSのバージョンアップで動かなくなってしまった。面倒なのでしばらく放置していたのだが、動かないのも癪に触るので久しぶりにXcodeを立ち上げてみる。swiftとObj-Cの混成ソースなのだが、普段使わない言語は一瞬で忘れてしまうもので、自分で書いたソースの意味がわからない。ま、動かなくなった原因はiOSではよくありがちな、APIが使えなくなったとういうもので、代替えのコードも親切な人がサイトで紹介してくれていたのを参考に書き換えるとビルドも警告が出なくなり、無事実機でも動作するようになった。
自己満足の世界w
2016/1/19 火曜日
Norton
MBPにインストしたWindows10であるが
どういう訳かKasperskyがインストできない。外部ディスクとして認識され条件にマッチしないと拒否されてしまうのだ。さすがにノーガードで使うのは怖いので試しにNortonの試用版を入れてみると普通に入った。うーむ、これはどうしたもんか、このWin10だけNortonにするか、、、
2016/1/8 金曜日
Bluetooth マウス
2016/1/3 日曜日
Mac miniでbootcamp
512GB SSDの半分も使っていなかったmac mini
これは勿体無いなと、Windows化することに。2011モデルのminiはAppleがWindows10の対象外としているので、ドライバをダウンしても8.1までのver5系統。thunderbolt=>usb3.0変換器からは起動が出来ないので、素直にbootcampを選択しWindows8.1化してみる。割とあっさりとインストールでき、普通に動いた。
ま、何するわけでもないが、きっと役に立つ日が来るだろうw
2015/12/26 土曜日
MacでWindows10のハマったところ
インストールは出来たがハマった点
・BootcampドライバのインストールがRealTekから進まない
※タスクマネージャでrealteksetup.exeを強制終了させるとRealTekがスキップされて続行された。
・MacBookProのJISキーボードが英語配列になる
※こちらのサイトの通り、しかし当該のキーはなかったので手で追加した。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
key="LayerDriver JPN" value="kbd106.dll"
key="OverrideKeyboardIdentifier" value="PCAT_106KEY"
key="OverrideKeyboardSubtype" value="2"
key="OverrideKeyboardType" value="7"
下の二つはDWORD型
Bootcamp無しでWindows10を起動
意外と簡単だったのでやってみた
こちらのサイトを参考にさせて頂いた。結論から言うとインストールは無事成功。
以下は手順の備忘録:
シナリオ:外付けHDDの下準備をWindowsで行い、それからMacに繋いでインストールを実行する。
-----ここからは作業用Windowsマシンで行う
1) Windows10のisoファイルを用意する
2) 作業用マシンでisoファイルをマウントし、source/install.wimファイルを
抜き出し退避しておく(今回は、c:\wimを作って、そこにコピーした)
3) 作業用マシンに外付けHDDを繋ぐ
4) 管理者権限のコマンドラインを開く
5) DISKPARTで一旦外付けHDDをcleanしてgpt変換する
6) EFI用のパーティションをFAT32で作る
7) Windowsインストールイメージ用のパーティションをNTFSで作る
8) DISMコマンドでinstall.wimの中身をチェックし、7)のパーティションに
イメージを作成する
9) bcdbootコマンドで7)からEFI起動出来るように設定する
10) 7)に予め用意しておいたBootcampのドライバをコピーしておく
-----ここからはMacで行う
注意)家のMacBookProは無線LANはOFFでThunderbolt変換のEtherを使っている。
11) 先の外付けHDDをMacに接続する
12) optionキーを押しながら電源を入れ、外付けHDDから起動する
13) Windowsのインストールが始まる
-----ここれ以降は普通のインストール作業になる
14) bootcamp用のドライバのsetup.exeを実行する
>diskpart
DISKPART> list disk
DISKPART> select disk < 外付けHDDの番号>
DISKPART> clean
DISKPART> convert gpt
DISKPART> create partition efi size=256
DISKPART> format fs=fat32 quick label="EFI"
DISKPART> assign label=S
DISKPART> create partition primary size=256000
DISKPART> format fs=ntfs quick lable="Windows"
DISKPART> assign label=I
DISKPART> exit
>dism /get-wiminfo /wimfile:C:\wim\Install.wim
>dism /apply-image /imagefile:C:\wim\Install.wim /index:2 /applydir:I:\
>bcdboot i:\Windows /l ja-jp /s s: /f UEFI
2015/11/8 日曜日
SMB #2
よくわからないが返事が来たので
次にSETUPと呼ばれる認証を見てみる。パケットを見るがサッパリわからない。GSSやらSPNEGOやらNTLMやら謎の用語が飛び交っている。SPNEGOに関してはここを見てパケットの構成が少しだけ判明。そして更にNTLMSSPのメッセージが入れ子になっているようだ。GSS/SPNEGOでは最初にnegTokenInit形式で送り、以降はnegTokenTarg形式でやり取りをするようだ。そして、入れ子のNTLMSSPでは最初にType1メッセージを送り、Type2を受け取り、最期にType3を送って認証を行うっぽい。ほほぅ、、、、大雑把なことは何となくわかったような気もするが、実際にどんな値を入れればいいのやら、、、しかも、当然ではあるが返答次第では動的に送るものも変化する。認証が済んで初めてファイルを探し、その後ファイルの操作が出来るとある、、、
SMB2は当方にはちょっと(かなり)難しいかなw
SMB
以前、iOSを作った時にsamba経由でファイル読めるといいなと思ったが
余りに面倒臭そうなので諦めた。ちょっと心残りだったので、SMBプロトコルを調べてみる。MS-SMB/MS-SMB2/MS-CIFS等、本家がドキュメントを出しているので斜め読みしつつ、WireSHARKでパケットを見ながら簡単なプログラムでsambaサーバにアクセスしてみる。まずはネゴシエーションを行うらしいが、SMB2で話しかけてもちっとも返事が来ない、、、しばし悩む。しかし、Windows7やLinux上のsmabaはガン無視されるのだが、何故かMacOSからは返事が来た。もう一度WireSharkをよく見ると、Requestに対してResponseが2つ来ている。おや?と思いSMB2だけでなくSMBのパケットも見ると最初にSMB1で話しかけ次にSMB2で再度話しかけているようだ。同じようにやってみると見事に返事が来た。何故、SMB1の返事がSMB2で来るのか謎だが、来るものは仕方ないw そして何故MacOSだけはいきなりSMB2で返事が来るのかもわからない。
これは相当闇が深そうだな、、、
2015/10/30 金曜日
alac to flac
iTunesでalac化した楽曲をAndroidでも聴きたい
これまでは、alac対応のplayerを入れていたのだが、折角Xperiaにはwalkman機能があるのに使えないのも癪だなと思い手軽に変換出来ないもんかと思案。WindowsではSONYのMedia Goがあるので、これでもいいのだがMacOSXやLinuxではffmpegでいけるらしい。CentOSには標準のリポジトリにはないので、他のリポジトリを入れようか迷っているとMacOSX用のバイナリが配布されていたので、これを使って見る。シェルスクリプトを使えばdir内のファイルを一括変換出来るので便利だ。
これでXperiaでも純正ソフトで聴けそうだ
# for f in *.m4a; do ff=${f##*/}; ./ffmpeg -i "$f" "${ff%.m4a}.flac"; done
