10

古いZ80ベースのマシン用のSMBサーバーの開発を開始しました。このマシンは非常にシンプルなMS-DOSのようなオペレーティングシステム(マルチタスクなし、ユーザーの概念なし、FATファイルシステムのみ、ユニコードなし、8.3ファイル名のみ)を実行し、メモリが限られているため、私の最初のアイデアはSMBコアプロトコルのみを実装することです。TCPトランスポートを使用します。

今のところ、SMB_COM_NEGOTIATEコマンドに応答する非常に短いテストコードがあり、コアプロトコル(「PCネットワークプログラム1.0」)が目的の方言であることを示しています。"\\<server IP>"それをテストするために、エクスプローラーウィンドウを開き、アドレスバーに入力して、Windows7マシンから接続しようとします。サーバーがnegotiateコマンドを受信し、(明らかに)正しい応答を送信することをWiresharkで確認しました。

問題: Windowsクライアントが応答を受信するとすぐに、一般的な「リソースにアクセスできません」エラーメッセージ(エラーコード0x80004005)が表示され、その後何も起こりません(それ以上のSMBメッセージは送信されません)。SMB_COM_TREE_CONNECTまたは同様のコマンドを受け取ることを期待していました。

Windows 7はコアプロトコルをサポートしていないのではないかと思っていましたが(非常に古く、セキュリティ機能がまったくありません)、ネゴシエートリクエストにコアダイアレクト名が表示されるのはなぜですか?多分私はいくつかのステップを逃していますか?サーバーは、ネゴシエート応答の後に追加のパケットを送信する必要がありますか?

クライアントOSはWindows7Ultimate 64ビットであり、プロセスで誰かが何か問題を発見した場合に備えて、要求と応答の両方のWiresharkダンプを次に示します。

リクエスト:

SMB方言交渉リクエスト

応答:

SMB方言は応答を交渉します

更新:コアダイアレクトの代わりにNT LM 0.12ダイアレクトを選択すると、クライアントからSESSION_SETUP_AND_REQUESTXコマンドを受け取ります。したがって、明らかに、コアプロトコルはWindows 7ではサポートされていないようです。とにかく、追加情報があれば幸いです。

4

2 に答える 2

4
于 2012-03-03T17:23:03.083 に答える
2

This info is basically the same as @Appleman1234 provided (thanks!), just a bit easier to apply.

  1. Export your current reg settings so you can restore what you had if necessary. Put the following code into a .bat file and it will export to your C: drive the 3 reg keys we are getting ready to modify.
reg export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa HKEY_LOCAL_MACHINE.SYSTEM.CurrentControlSet.Control.Lsa.reg
reg export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters HKEY_LOCAL_MACHINE.SYSTEM.CurrentControlSet.services.LanmanWorkstation.Parameters.reg
reg export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters HKEY_LOCAL_MACHINE.SYSTEM.CurrentControlSet.services.Netlogon.Parameters.reg
  1. Un-restrict the required registry settings. Below is almost exactly what @Appleman1234 suggested except it also enables plain text passwords and disables security signatures. Put the following code into a .reg file and import it to your registry.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"lmcompatibilitylevel"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
"EnablePlainTextPassword"=dword:00000001
"EnableSecuritySignature"=dword:00000000
"RequireSecuritySignature"=dword:00000000
"DomainCompatibilityMode"=dword:00000001
"DNSNameResolutionRequired"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
"RequireSignOrSeal"=dword:00000000
"RequireStrongKey"=dword:00000000
"RequireSignOnSeal"=dword:00000000
于 2015-01-16T15:19:35.980 に答える