2011-02-16 11 views
10

मैंने पुराने Z80 आधारित मशीन के लिए एक एसएमबी सर्वर का विकास शुरू कर दिया है। यह मशीन एक बहुत ही सरल, एमएस-डॉस ऑपरेटिंग सिस्टम की तरह चलती है (कोई मल्टीटास्क, उपयोगकर्ताओं की कोई अवधारणा नहीं, केवल एफएटी फाइल सिस्टम, कोई यूनिकोड नहीं, 8.3 फाइलनाम केवल) और सीमित स्मृति है, इसलिए मेरा पहला विचार केवल एसएमबी कोर प्रोटोकॉल को लागू करना है । मैं टीसीपी परिवहन का उपयोग करूंगा।क्या विंडोज 7 वास्तव में एसएमबी कोर प्रोटोकॉल का समर्थन करता है?

अभी के लिए, मेरे पास सिर्फ एक बहुत छोटा परीक्षण कोड है जो केवल SMB_COM_NEGOTIATE कमांड का जवाब देता है, जो दर्शाता है कि कोर प्रोटोकॉल ("पीसी नेटवर्क प्रोग्राम 1.0") वांछित बोली है। इसका परीक्षण करने के लिए, मैं एक एक्सप्लोरर विंडो खोलकर और एड्रेस बार में "\\<server IP>" टाइप करके विंडोज 7 मशीन से कनेक्ट करने का प्रयास करता हूं। मैंने वायरशर्क के साथ सत्यापित किया है कि सर्वर बातचीत वार्ता प्राप्त करता है और एक (स्पष्ट रूप से) सही प्रतिक्रिया भेजता है।

समस्या : जैसे ही Windows क्लाइंट प्रतिक्रिया प्राप्त करता है, यह एक सामान्य से पता चलता "संसाधन तक नहीं पहुंच सकता" त्रुटि संदेश (त्रुटि कोड 0x80004005 के साथ) और फिर कुछ नहीं होता (आगे कोई एसएमबी संदेश भेजे जाते हैं) । मैं SMB_COM_TREE_CONNECT या एक समान कमांड प्राप्त करने की अपेक्षा कर रहा था।

मैं सोच रहा था कि शायद विंडोज 7 कोर प्रोटोकॉल का समर्थन नहीं करता है (यह बहुत पुराना है और इसमें किसी भी सुरक्षा सुविधा की कमी है), लेकिन फिर, यह वार्ता अनुरोध में कोर बोली नाम क्यों सूचीबद्ध करता है? शायद मुझे कुछ कदम याद आ रहा है? बातचीत के बाद सर्वर को कोई अतिरिक्त पैकेट भेजना चाहिए?

ग्राहक ओएस विंडोज 7 अंतिम 64 बिट्स है, और यहाँ Wireshark दोनों अनुरोध और मामले किसी में प्रतिक्रिया कुछ भी इस प्रक्रिया में गलत पहचान सकते हैं की उदासीनता हैं:

अनुरोध:

SMB dialect negotiate request

प्रतिक्रिया:

SMB dialect negotiate response

अपडेट: यदि मैं कोर बोली के बजाय एनटी एलएम 0.12 बोली का चयन करता हूं, तो मुझे क्लाइंट से SESSION_SETUP_AND_REQUESTX कमांड प्राप्त होता है। तो जाहिर है ऐसा लगता है कि वास्तव में, मूल प्रोटोकॉल विंडोज 7 द्वारा समर्थित नहीं है। वैसे भी, किसी भी अतिरिक्त जानकारी की सराहना की जाएगी।

उत्तर

4

मेरा मानना ​​है कि विंडोज 7 कोर प्रोटोकॉल का समर्थन करता है। here के अनुसार पुराने सर्वर से कनेक्ट करते समय यह एसएमबी 1.0 में डाउनग्रेड करता है।

विंडोज 7 के पास सांबा सर्वर से कनेक्ट होने वाले मुद्दों के आधार पर, मेरा मानना ​​है कि कोर प्रोटोकॉल को निर्दिष्ट करने के साथ समस्या विंडोज 7 मशीन पर LANMAN वर्कस्टेशन/क्लाइंट सेटिंग्स के कारण है।

अनुशंसित परिवर्तन

  • सक्षम करने एलएम होगा और NTLM Network security: LAN Manager authentication level Send LM & NTLM responses
  • को रजिस्ट्री कुंजी की 【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa \【LmCompatibilityLevel 】 मूल्य बदल रहे हैं सुरक्षा नीति के भाग के रूप में होने के लिए हैश 0 के रूप में प्रति here
  • रजिस्ट्री HKLM\System\CCS\Services\LanmanWorkstation\Parameters DWORD DomainCompatibilityMode = 1 0 में LanmanWorkStation और NetLogon में निम्न पैरामीटर जोड़ना

    HKLM\System\CCS\Services\Netlogon\Parameters DWORD RequireSignOnSeal = 0 DWORD RequireStrongKey = 0

    दोनों रजिस्ट्री के माध्यम से और सुरक्षा नीति के माध्यम से इन सेटिंग्स के लिए संभावित परिवर्तन here

इन परिवर्तनों को सूचीबद्ध किया गया है LanmanWorkstation यह सुनिश्चित करना चाहिए NTLMv2 सत्र सुरक्षा का उपयोग नहीं करता।

2

यह जानकारी मूल रूप से @ Appleman1234 प्रदान की गई है (धन्यवाद!), लागू करने के लिए बस थोड़ा आसान है।

  1. अपनी वर्तमान reg सेटिंग्स को निर्यात करें ताकि आप जो भी आवश्यक हो उसे पुनर्स्थापित कर सकें। निम्नलिखित कोड को .bat फ़ाइल में रखें और यह आपके C: पर निर्यात करेगा जो 3 reg कुंजी को संशोधित करने के लिए तैयार हो रहे हैं।
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. प्रतिबंध निकाल आवश्यक रजिस्ट्री सेटिंग। नीचे लगभग ऐप्पलमैन 1234 सुझाव दिया गया है, सिवाय इसके कि यह सादा पाठ पासवर्ड भी सक्षम करता है और सुरक्षा हस्ताक्षर अक्षम करता है। निम्नलिखित कोड को .reg फ़ाइल में रखें और इसे अपनी रजिस्ट्री में आयात करें।
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 
संबंधित मुद्दे