※ これは、「2.8.3.3 Creating the LM Hash – Implementing CIFS」の勝手日本語訳です。 LMチャレンジ/レスポンス認証は、プレーンテキストなパスワードがネットワーク上に流れることやディスクに格納されることが決してないことを保証することによって、パスワードが盗まれることを防ぎます。代わりに、”LMハッシュ”として知られている分離された値が生成されます。LMハッシュは認証で使うためにサーバサイドに格納され、チャレンジに...

※ これは、「3.9.2 Capabilities – NEGOTIATE: Negotiate Protocol – https://tools.ietf.org/html/draft-heizer-cifs-v1-spec-00」の勝手日本語訳です。 CAP_RAW_MODE 0×0001 サーバはSMB_COM_READ_RAWおよびSMB_COM_WRITE_RAWをサポートする。 CAP_MPX_MODE 0×0002 サーバはSMB_COM...

※ これは、「3.1.8 Data Buffer (BUFFER) and String Formats – https://tools.ietf.org/html/draft-heizer-cifs-v1-spec-00」の勝手日本語訳です。 SMBのデータの一部分は典型的に、読み込みまたは書き込まれるデータ、ファイルパス、またはディレクトリパスを含んでいます。データの一部分の書式は、メッセージに依存します。データの一部分のすべてのフィールドは、同じ書式を持っています。各ケースにお...

※ これは、「3.1.5 Mid Field – https://tools.ietf.org/html/draft-heizer-cifs-v1-spec-00」の勝手日本語訳です。 LANMAN 1.0やそれよりも新しい方言を使うクライアントは、典型的にマルチタスクであり、タスクごとに複数の非同期I/Oリクエストを許すでしょう。それ故に、multiplex ID (MID)は、クライアントの複数プロセス、スレッド、スレッドごとのリクエストの間でシングルクライアントとサーバの複数の...

※ これは、「3.1.2 Flags2 field – https://tools.ietf.org/html/draft-heizer-cifs-v1-spec-00」の勝手日本語訳です。 右のビットから順に0, 1, …。 0: もしセットされた場合、クライアントはMS-DOSの8.3名前規約に従わない名前を扱う方法を知っています。 1: もしセットされた場合、クライアントは拡張された属性を認識します。 2: もしセットされた場合、SMB_FLAGS2_IS_LONG...

※ これは、「3.1.1 Flags field – https://tools.ietf.org/html/draft-heizer-cifs-v1-spec-00」の勝手日本語訳です。 右のビットから順に0, 1, …。 0: SMB_COM_NEGOTIATE, サーバがLockandRead/WriteandUnlockプロトコルからなる”Sub dialect”をサポートする場合に1になる。 1: Serverに送ったSMBリスエスト: ...

※ 下記は「2.10 Authentication – Common Internet File System Protocol (CIFS/1.0)」の勝手日本語訳です。 SMBサーバは、クライアントのパスワードの暗号化された形式を保持します。サーバリソースへのアクセスの認証を得るために、サーバはクライアントへチャレンジを送り、クライアントはクライアントのパスワードが合致することを証明する方法として応答します。 認証はブロックモードにおけるDES暗号方式を利用します。私たちは、7バ...

[Basic Packet structure] 1 byte (Fixed 0) 3 bytes (Data size) Any length bytes (Data) [SMB header] 1 byte (Fixed 0xFF) 3 bytes (Fixed “SMB”) 1 byte (Command) 1 byte (Error class) 1 byte (Reserved) 2 bytes (Error code) ———...

申し訳ありません、このコンテンツはただ今 English のみです。...

最近Chromebookを買いました。Dell Chromebook 11 です。ちゃちい作りかと思ってたのですが、かなりしっかりした作りで、かなり気に入りました。ただし、macbook airを持ってるので、もちろん普段はChromebookを使う機会は少ないです。ただし、僕にはどうしても作ってみたいものがあり、その動作検証のため、そして僕が作ったものによって、僕がChromebookを利用する機会が増えるように、と購入を決意しています。 その作りたいものとは何か、それはFile System...

HTML5 FileSystem APIを使うと、ユーザのローカルファイルシステムにファイルを書いたりすることができます。もちろん自由にファイルを読み込めるわけではなく、Chrome Webブラウザが持っているサンドボックス内に通常は限定されます(Chromeアプリの場合はその限りではないですが)。オフライン対応アプリケーションを開発する場合には、非常に魅力的なAPIです。 僕の場合はChromeアプリ内でFileSystem APIを使っていたのですが、「既存ファイルの上書き処理」をする際に困...

早いものでもう2014年の大晦日です。今年の自分を振り返ってみようと思います。 娘が1歳に 10月に娘がめでたく1歳の誕生日を迎えました。 妻には子育てを任せっきりでとても申し訳ないですが、すくすくと成長し、すでに体重は10キロを超えています。抱っこすると重いです。ずっしりしてます。まだ一人では歩けないですが、第一歩を踏み出すのは時間の問題です。 そして、とにかく「わんわん好き」です。特に実物のわんわんではなく、めざましテレビで毎日やってる「今日のわんこ」が大好きです。それを見ないと朝食を食べて...

Chromeは、NativeClientと呼ばれる「OSが直接理解できるコンパイル済みコードを(サーバ側ではなく)Chromeブラウザ側で実行する仕組み」が備わっています。最近はGo言語でもNaClが書けるみたいですが、基本的にはCやC++でNaClモジュールを書くことになります。もうそれだけで「うわ、難しそう」と思ってしまうことでしょう。実際、CやC++でコードを書いたことがほとんどなければ、かなり難しく感じると思います。少なくともLL系などの超高級言語(?)しか経験のない人にとっては、CやC...

Chrome MySQL Adminで「SSH Tunnelingできないから星1つ」とか頭にくるフィードバックする人が結構いて、それができないからって全否定かよ!としばらく怒っていました。その怒りを力に変えて、NaClでlibssh2使ってSSH2 Port forwardingできるように機能追加をしました。 https://github.com/yoichiro/chrome_mysql_admin 記憶に残っているうちに、ハマリどころを書いておこうと思います。 NaCl moduleから...

AngularJSには、自分独自のHTML要素を作り出すためのDirectiveという仕組みがあります。これを使うと、一般的に「div地獄」となるような動的Webアプリケーションの作り方ではなく、論理的で直感的な、やりたいこと実現したいことを端的に表すタグを記述するだけで、Webアプリケーションを構成していくことが可能になります。現在Web Componentsの仕様策定や実装、さらにそれを推し進めるためのPolymerの開発が進んできていますが、それを先取りしたようなものと考えれば良いでしょう...

最近はずっとChrome MySQL Adminの機能追加にいそしんでいる毎日です。データベースと言ったら、何を連想しますか?SQL?Oracle?いろいろと出てくると思いますが、きっと10位以内に入ってるキーワードとして、必ず「ER図」はあると思います。ER図は書くのが面倒なので、もし手元にある実際のデータベースからER図を自動的に書いてくれたら、こんなに楽なことはないですよね?はい、作ってみました。 この機能を作るために、いくつか図を描画するためのライブラリを検討しました。しかし、しっくり来...

ここのところ、PNaClについていろいろと調べてきました。なんで調べていたかというと、自分で作ってるChrome appsの中で、JavaScriptで書くのは非常にしんどい処理を既存のNative codeを呼び出すことで利用して楽したい、というのがあります。特に暗号系の処理は、扱う値の桁数も非常に大きく、もしOpenSSLにある関数で事足りるのであれば、それを利用したいところですよね。こういったことが、PNaClで可能なはず。それを自分でできるように習得したかったということです。まぁ、C++...

NaClやPNaClをいろいろ試していく中で、自分で書いたコードだけでなく、他のコードを使いたいときが出てきます。例えば、opensslやその他便利なライブラリが、それに該当するでしょう。これらのライブラリは、NaCl SDKに付属するビルドツールでmakeされて初めて、自分のNaClコードから利用可能になります(と思ってます)。 NaCl向けに各種Patchがあてられた状態になっているライブラリ集が、naclportsです。この中に含まれる使いたいライブラリをビルドすることで、自分のNaClモ...

前のエントリでは、Native Client SDKに含まれるgetting_started、つまりチュートリアルについての説明ドキュメントを和訳して掲載しました。このエントリでは、そのチュートリアルの続きです。ここでは、SDKに付いてくるMakefileをより簡単に書くためのマクロの紹介や、共通的に使われるであろう関数を集めたJavaScriptコードの説明について言及しています。Native Clientモジュールの開発には欠かせないものですので、ぜひ読んでみてください。 原文: C++ T...

前のエントリでは、Native Client SDKに含まれる各種サンプルコードのビルドと実行方法について紹介したドキュメントを和訳して掲載しました。このエントリでは、更に進んで、C++によるシンプルなNative Clientモジュールを作成するチュートリアルについて和訳してみましたので、掲載してみたいと思います。このチュートリアル自体は本当に簡単であり、しかし仕組みが良くわかる内容になっています。試すこと自体はあっという間にできるので、ぜひ試してみてください。 原文: C++ Tutoria...