windows ऑनल कंप्यूटर की विशिष्ट पहचान करने का एक अच्छा तरीका क्या है?




ई आधार डाउनलोड (12)

मैं क्लाइंट के पुनर्विक्रय के लिए कुछ डेस्कटॉप सॉफ़्टवेयर विकसित कर रहा हूं। ग्राहक सॉफ़्टवेयर को प्रतिबंधित करना चाहता है ताकि पंजीकरण कोड एक और केवल एक कंप्यूटर के लिए विशिष्ट हो।

नेटवर्क कार्ड से मैक का उपयोग करने के अलावा, क्या किसी के पास कंप्यूटर की विशिष्ट पहचान करने के लिए कोई अन्य तकनीक है (जो विंडोज और मैक ओएस एक्स दोनों पर काम करती है)?


मैं अनुरोध कुंजी उत्पन्न करने के लिए बस मैक पते का उपयोग करूंगा, फिर उपयोगकर्ताओं को आपके क्लाइंट के साथ पंजीकरण करने की आवश्यकता होगी। आपके क्लाइंट के पास एक विशेष एप्लिकेशन होगा जो उस अनुरोध कुंजी को लेता है और एक सक्रियण कुंजी उत्पन्न करता है जिसे उपयोगकर्ता सॉफ़्टवेयर को सक्रिय करने के लिए उपयोग कर सकता है। एक बार सक्रिय होने पर, सॉफ़्टवेयर काम करता है, बस काम करता है - सत्यापन के लिए कभी-कभी घर पर फोन नहीं करता है।

ऐसा लगता है कि यह एक वास्तविक आवश्यकता थी। मेरा पहला काम क्लाइंट को आजमाने और मनाने के लिए होगा कि यह एक बुरा विचार था।

कारण यह है कि ये योजनाएं व्यावहारिक रूप से आपके कोड को क्रैक होने से कभी नहीं रोकती हैं। हालांकि वे आपके असली ग्राहकों के जीवन को कठिन बनाते हैं। मुझे किसी भी अन्य उद्योग के बारे में सोचना मुश्किल लगता है जो अपने वास्तविक ग्राहकों को उन योजनाओं के साथ परेशान करने के तरीके से बाहर निकलता है जो कभी भी अपने लक्ष्यों को प्राप्त नहीं करते हैं (सरकारी सेवा के अलावा ,-)।

यदि आपको ऐसा करना है, तो मैं अनुबंधिक दायित्व को पूरा करने के लिए केवल एक टोकन प्रयास करता हूं (हालांकि अपने ग्राहक को यह बताना न दें)। मैक पता लेना (या एक यादृच्छिक संख्या अगर, $DEITY forbid, कंप्यूटर के पास नेटवर्क कार्ड नहीं था) अनुरोध कुंजी के रूप में और सक्रियण कुंजी प्राप्त करने के लिए केवल एक ASCII स्ट्रिंग के साथ XOR लिए प्रोग्राम का उपयोग करके, ऐसा लगता है व्यावहारिक दृष्टिकोण। मैं दोनों चाबियाँ भी स्टोर करूंगा क्योंकि आप नहीं चाहते हैं कि सॉफ़्टवेयर डी-एक्टिवेट करें यदि वे सिर्फ अपने नेटवर्क कार्ड (या यहां तक ​​कि मदरबोर्ड) को बदलते हैं - वे अभी भी उसी कंप्यूटर के रूप में देखते हैं और सॉफ़्टवेयर काम करना बंद कर देता है तो खुश नहीं होगा।

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

हार्डवेयर की एक विशिष्टता पर निर्भर सभी योजनाओं के साथ मुख्य समस्या यह है कि ग्राहक उस हार्डवेयर को बदलने का विकल्प चुन सकता है:

  • अपनी डिस्क सामग्री को एक बड़ी हार्ड डिस्क पर भूत करना एचडी सीरियल नंबर बदलता है।
  • सीपीयू सीरियल नंबरों का उपयोग करने का मतलब है नवीनतम इंटेल bigmutha CPU को अपग्रेड करने से आपके सॉफ़्टवेयर को मार दिया जाता है।
  • मैक पते का उपयोग करने का मतलब है कि वे अपने एनआईसी को नहीं बदल सकते हैं।

इन सभी को इंस्टॉल समय पर एक कुंजी बनाने के लिए उन मानों का उपयोग करके तय किया जा सकता है और ट्रैक के नीचे छह महीने के बदले गए मूल्य को नहीं, केवल उस कुंजी के विरुद्ध जांचें। इसका मतलब है कि आपको अनुरोध और सक्रियण मूल्यों को संग्रहित करना है, लेकिन अपग्रेड को आपके उपयोगकर्ताओं को अपने सॉफ़्टवेयर को फिर से सक्रिय करने की प्रक्रिया के माध्यम से जाने की आवश्यकता नहीं होगी। मेरा विश्वास करो, वे आपको ऐसा करने के लिए तुच्छ मानेंगे।


मदरबोर्ड अद्वितीय सीरियल नंबर का उपयोग करने के बारे में कैसे?


जिस विचार के साथ मैं बात कर रहा हूं वह कुछ धारावाहिक संख्याओं या अद्वितीय आईडी से हार्डवेयर से संबंधित है और उन्हें एक साथ रख रहा है।

चीजें जो अपग्रेड हो जाती हैं: -मेमरी-एमएसीएस (स्पूफ किया जा सकता है, यूएसबी एडाप्टर प्लग इन हो जाते हैं आदि)

ऐसी चीजें जिन्हें अक्सर अपग्रेड नहीं किया जाता है: -CPU -BIOS -Motherboard

WMIC का उपयोग करना कुछ जानकारी प्राप्त करने का एक शानदार तरीका हो सकता है, मैं उन चीजों को पकड़कर शुरू करूंगा जो अक्सर पहली और पसंदीदा पसंद के रूप में नहीं बदलते हैं, मैं कम से कम 2 सीरियल नंबर या डिवाइस बनाने के लिए उपयोग करने के लिए फिंगरप्रिंट करने में सक्षम होना चाहता हूं एक पंजीकरण कुंजी।

wmic cpu get DeviceId /format:value

वह सीपीयू आईडी ले जाएगा, आप उस कमांड को चलाने के लिए चला सकते हैं:

1 - सीपीयू (सीपीयू: डिवाइसआईडी) 2 - मदरबोर्ड (बेसबोर्ड: सीरियल नम्बर) 3 - बीआईओएस (बायोस: सीरियलनंबर)

यदि आपको कम से कम 2 आबादी वाले मूल्य नहीं मिलते हैं, तो पकड़ लें

4 - नेटवर्क एडाप्टर - (एनआईसी: मैकएड्रेस) 5 - रैम - (मेम्फिजिकल: सीरियल नम्बर)

अपने व्यावसायिक तर्क के आधार पर आप अपना पंजीकरण नंबर बनाने के लिए उपलब्ध पहले दो धारावाहिक संख्याओं का उपयोग कर सकते हैं, और यदि आप हमेशा एक ही क्रम का पालन करते हैं तो पंजीकरण संख्या फिर से इंस्टॉल करने पर भी काम करेगी, हालांकि यदि डिवाइस बदलता है या कोई उपयोगकर्ता कोशिश करता है एक माध्यमिक कंप्यूटर पर स्थापित करें, आईडी के परिवर्तन पंजीकरण संख्या को अमान्य कर दें। तकनीकी सहायता की मात्रा को कम करने के लिए कम से कम हार्डवेयर की फिंगरप्रिंट कम से कम सिरदर्द देगी और अगर आप कम से कम संभावित वस्तुओं को अपग्रेड करने की कोशिश करते हैं तो आगे बढ़ने के लिए सिरदर्द कम हो जाता है। मेरी प्राथमिकता उपरोक्त आदेश है।

आप एक डिफी-हेलमैन कुंजी एक्सचेंज स्कीम का उपयोग कर सकते हैं ताकि उपयोगकर्ता अपने हार्डवेयर आईडी के साथ एक पेलोड के रूप में एक निजी / पुलिक कुंजी जोड़ी उत्पन्न कर सके, फिर यह जानकारी पंजीकरण सर्वर तक पास करें जहां पंजीकरण सर्वर सार्वजनिक / निजी कुंजी का उपयोग करेगा पेलोड को डिक्रिप्ट करें और अंतिम उपयोगकर्ता को वापस लौटने के लिए पंजीकरण कुंजी की गणना करें। मैं जेडब्ल्यूटी के पेलोड में शामिल सार्वजनिक कुंजी के साथ चीजों को आगे और आगे पास करने के लिए जेडब्ल्यूटी का उपयोग करना पसंद करता हूं। उम्मीद है की वो मदद करदे।

यूयूआईडी का उल्लेख ऊपर किया गया था और यह एक अच्छा विचार है कि आप इसे प्राप्त कर सकते हैं:

wmic csproduct get UUID /format:vale

इन आदेशों को अस्वीकार करें केवल विंडोज़ के लिए काम करते हैं, मुझे 2000 और उससे ऊपर लगता है लेकिन आपको सत्यापित करने की आवश्यकता होगी, वे शायद 2000 से नीचे सिस्टम के लिए उपलब्ध हैं लेकिन उस समय मैं वास्तव में उन उपकरणों का समर्थन नहीं करने की कोशिश करता हूं। सौभाग्य।


HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ क्रिप्टोग्राफी

"मशीनगुइड" कुंजी विंडोज की स्थापना के दौरान विशिष्ट रूप से जेनरेट की जाती है और यह किसी भी हार्डवेयर स्वैप के बावजूद नहीं बदलेगी (बूट-सक्षम हार्ड ड्राइव को बदलने के अलावा जहां ओएस इंस्टॉल किया गया है)। मुझे इस बारे में निश्चित नहीं है।

मेरा सुझाव

आप उस मशीनगुइड, हार्ड डिस्क सीरियल नंबर, मदर बोर्ड सीरियल नंबर और यूयूआईडी का उपयोग कर सकते हैं। साथ में यह SHA 256 या किसी अन्य HASH फ़ंक्शन का उपयोग कर रहा है।

यूयूआईडी - wmic csproduct यूयूआईडी मिलता है

मशीनगुइड - HKEY_LOCAL_MACHINE \ सॉफ़्टवेयर \ माइक्रोसॉफ्ट \ क्रिप्टोग्राफी

हार्ड डिस्क सीरियल नंबर - Wmic डिस्कड्राइव serialnumber मिलता है

बीआईओएस सीरियल नंबर - Wmic bios serialnumber मिलता है

मदर बोर्ड सीरियल नंबर - Wmic बेसबोर्ड serialnumber मिलता है


या आपके पास कोई सक्रियता कोड नहीं हो सकता है और यह सुनिश्चित कर सकता है कि आपके पास EULA में लेखापरीक्षित अधिकार हैं और समय-समय पर ऑडिट करने का अधिकार उपयोग करें।

ओरेकल के लिए अद्भुत काम करता है।


रजिस्ट्री खोलें और नेविगेट करें

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ क्रिप्टोग्राफी

"मशीनगुइड" नामक कुंजी खोजें, यह कुंजी विंडोज की स्थापना के दौरान विशिष्ट रूप से जेनरेट की गई है और यह किसी भी हार्डवेयर स्वैप के बावजूद नहीं बदलेगी (बूट-सक्षम हार्ड ड्राइव को बदलने के अलावा, जहां ओएस इंस्टॉल है)। इसका मतलब है कि यदि आप प्रति ओएस पर ट्रैकिंग स्थापना रखना चाहते हैं तो यह एक और विकल्प है। यह तब तक नहीं बदलेगा जब तक आप विंडोज़ की ताजा पुनर्स्थापना नहीं करते।


कोई एक धारावाहिक कुंजी बना सकता है जिसे उपयोगकर्ता को एक बार दर्ज करना होता है। इसमें उपयोगकर्ता का ईमेल पता शामिल होना चाहिए (कुछ ऐसा है जैसे [email protected])। यह कई लोगों को इसके साथ छेड़छाड़ करने या अन्य लोगों को देने की कोशिश करने से रोक देगा। सक्रियण के दौरान, सीरियल कुंजी मौजूद होने पर सॉफ़्टवेयर को ऑनलाइन डीबी के खिलाफ जांच करनी चाहिए।


मुझे इस पर कुछ अनुभव है। मेरे समाधान में जब हम ग्राहक को उत्पाद बेचते हैं तो हम सेवा कुंजी जारी करते हैं।

उस समय क्लाइंट एप्लिकेशन इंस्टॉल करता है, यह क्लाइंट मशीन के मदरबोर्ड सीरियल को पढ़कर एक कुंजी उत्पन्न करता है। क्लाइंट को उत्पाद कुंजी को सक्रिय करने के लिए हमारे संगठन को इंस्टॉलेशन में जेनरेट की गई कुंजी और ईमेल को ईमेल करना होगा।

हम समस्या सक्रियण कुंजी पर संगठन में एक व्यवस्थापक आवेदन बनाए रखते हैं। हम किसी विशेष सेवा कुंजी के लिए कुंजी के लिए केवल एक सक्रियण कुंजी प्रदान करते हैं।

हमने प्रतियों की संख्या बेची और यह बिना किसी मुद्दे के चलाता है। लेकिन फिर हमने कुछ कंप्यूटरों को पाया जो मदरबोर्ड सीरियल नंबर प्रदान नहीं करते हैं। वे मशीन मदरबोर्ड सीरियल नंबर के रूप में शून्य मान लौटती हैं। फिर भी हम इस मुद्दे को ठीक करने की कोशिश कर रहे हैं।


विंडोज़ में सी # का उपयोग करके यूयूआईडी का सबसे अच्छा तरीका ले रहा है

एक विंडोज मशीन की विशिष्ट पहचान करने का सबसे अच्छा तरीका

public string GetUUID()
{
    var procStartInfo = new ProcessStartInfo("cmd", "/c " + "wmic csproduct get UUID")
    {
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };

    var proc = new Process() { StartInfo = procStartInfo };
    proc.Start();

    return proc.StandardOutput.ReadToEnd().Replace("UUID", string.Empty).Trim().ToUpper();
}

जहां तक ​​मैंने देखा है, सीपीयू में छापे गए सीरियल नंबर का उपयोग किया जाता था; यह जानकारी (पीएसएन, पेंटियम सीरियल नंबर) को हटा दिया गया है। जानकारी संभवतः अभी भी मौजूद हो सकती है, लेकिन कम से कम पी 3 दुनिया में यह चला गया था। साथ ही, मुझे लगता है कि मेजबान के लिए उपयोग किए जाने वाले मुख्य इंटरफ़ेस के लिए एनआईसी पर मैक पते की स्पष्ट पसंद को वास्तविक संभावना माना जाना चाहिए। जब तक कि आपका ग्राहक उन होस्टों पर ईथरनेट इंटरफेस मौजूद न होने की अपेक्षा नहीं कर रहा है, जिन्हें वे बेचते हैं।


कंप्यूटर को विशिष्ट रूप से पहचानने का कोई निश्चित तरीका नहीं है, अगर आपको लगता है कि कंप्यूटर कई हिस्सों के साथ बनाया गया है जिसे अंततः बदला जा सकता है।

कुछ हार्डवेयर पार्ट्स - मैक एड्रेस, एचडीडी डिस्क सीरियल नंबर, यहां तक ​​कि मदरबोर्ड सीरियल इत्यादि - "विशिष्टता" के कुछ अच्छे स्रोत हैं, लेकिन जैसा कि आप जानते हैं कि कोई क्लाइंट उस हिस्से को अपग्रेड करने का निर्णय लेता है, जिस पर लाइसेंस निर्भर करता है ... के लिए तैयार रहें कुछ ग्राहक समर्थन। यह भी ध्यान में रखना है कि कुछ हिस्सों को धोखा दिया जा सकता है (मैक उनमें से एक है)।

एक ऑनलाइन लाइसेंस जांच जाने का एक और अच्छा तरीका है - आप सर्वर की ओर से सब कुछ प्रबंधित कर सकते हैं और इसके लिए अपने नियम भी परिभाषित कर सकते हैं (प्रति ग्राहक / इंस्टॉल, समेकन, आदि के कितने लाइसेंस) लेकिन ध्यान देने योग्य बड़ी बात यह है कि क्या होता है कनेक्शन स्थापित नहीं किया जा सकता है?


एक और समाधान एक dongle साथ एक लाइसेंस प्रौद्योगिकी का उपयोग करना dongle । यह एक छोटा सा डिवाइस है जो होस्ट पर यूएसबी या अन्य I / O पोर्ट में प्लग करता है, और सॉफ़्टवेयर को सक्रिय करने के लिए एक अद्वितीय, भौतिक कुंजी के रूप में कार्य करता है।

एक तीसरा समाधान लाइसेंस प्रबंधक प्रदान करना है। यही है, जब सॉफ़्टवेयर शुरू होता है, तो यह नेटवर्क पर किसी सर्वर से पूछताछ करता है (या तो ग्राहक के लैन पर या इंटरनेट के माध्यम से आपकी कंपनी में एक्सेस किया जाता है) जो मान्य करता है कि ग्राहक का सॉफ़्टवेयर का उपयोग वैध है। यह "समवर्ती लाइसेंस" के लिए एक अच्छा समाधान है, इसलिए ग्राहक कई होस्टों पर अपने सॉफ़्टवेयर को इंस्टॉल कर सकते हैं, लेकिन आप इसे सीमित संख्या में होस्ट पर एक साथ उपयोग के लिए लाइसेंस देते हैं। FLEXnet प्रकाशक लाइसेंस प्रबंधन समाधान का एक उदाहरण है।

नेटवर्क कार्ड का मैक पता वह समाधान है जिसका मैंने पिछली बार उपयोग किया था, मैंने एक कंपनी के लिए काम किया था जो एक विशिष्ट मेजबान पर चलाने के लिए लाइसेंस प्राप्त सॉफ़्टवेयर था।

हालांकि, मैं सावधानी बरतना चाहता हूं: यदि आप इस प्रकार के लाइसेंसिंग करते हैं, तो आपको उम्मीद करनी होगी कि यह आपके ग्राहकों के लाइसेंस को ट्रैक करने के लिए एक सतत प्रशासनिक कोर बन जाएगा। एक बार आपके पास कुछ सौ ग्राहक होने के बाद, आप आश्चर्यचकित होंगे कि कुंजी बदलने के अनुरोधों के साथ आप कितनी बार फोन कॉल प्राप्त करते हैं

"हमने अपने सर्वर को एक गीगाबिट नेटवर्क एडाप्टर में अपग्रेड किया है, और अब लाइसेंस काम नहीं करेगा क्योंकि नए एडाप्टर के पास एक अलग मैक पता है।"

अन्यथा ग्राहक अपनी पूरी मशीन को प्रतिस्थापित कर सकते हैं, और अपने सॉफ्टवेयर को नई मशीन पर चलाने के लिए एक अद्यतन लाइसेंस की आवश्यकता है। हमने जिस कंपनी के लिए काम किया था उसमें हमें हर दिन व्यावहारिक रूप से ये कॉल मिल गईं।

यदि आप उन्हें एक नई कुंजी देते हैं तो आपको पुराने कंप्यूटर (या नेटवर्क एडाप्टर) पर अपने सॉफ़्टवेयर का उपयोग रोकने के लिए ग्राहक पर भरोसा करने की भी आवश्यकता है। यदि आप पहले स्थान पर लाइसेंस का पालन करने के लिए उन पर भरोसा नहीं कर सकते हैं, तो आप कैसे भरोसा कर सकते हैं कि वे पुरानी कुंजी फेंक देंगे?

यदि आप इस प्रशासनिक गतिविधि का समर्थन करने के लिए योजना नहीं बना रहे हैं, तो इस तरह से अपने उत्पाद को लाइसेंस न दें। आप केवल अपने अच्छे ग्राहकों को असुविधा देंगे, जो वैसे भी सहयोग करेंगे।





uniqueidentifier