PDA

View Full Version : سوال: بدست آوردن مشخصه سخت افزاری صددرصد



mehran901
یک شنبه 11 آبان 1393, 20:59 عصر
سلام بردوستان
کسی کدی داره که ازش مطمئن باشه روی تموم سیستم های 32 بیت به خوبی میتونه یک مشخصه کد سخت افزاری رو بیرون بیاره ؟

چون بنده هم خودم زیاد نوشتم و هم از کدهای آماده زیادی استفاده کردم یک مورد نسبتا خوب بود که در طراحی یک قفل استفاده کردم و درحال حاضر متوجه شدم که روی خیلی از سیستم ها به درستی کار نمیکنه

تشکر

samiasoft
یک شنبه 11 آبان 1393, 21:42 عصر
سلام

خود منم یه مدت دنبال این بودم اما متاسفانه فقط روی نسخه های 32 بیتی ویندوز ایکس پی امتحان کرده ام و به خوبی کدهای سخت افزاری مربوطه رو نشون میدن.

حال اگر دوستان هم لطف کنند اینارو داخل سایر ویندوزهای 32 بیتی از جمله 7 و 8 امتحان کنند خیلی خوب میشه.

فایل ضمیمه شامل 9 پروژه مختلف هست

mehran901
یک شنبه 11 آبان 1393, 21:54 عصر
سلام

خود منم یه مدت دنبال این بودم اما متاسفانه فقط روی نسخه های 32 بیتی ویندوز ایکس پی امتحان کرده ام و به خوبی کدهای سخت افزاری مربوطه رو نشون میدن.

حال اگر دوستان هم لطف کنند اینارو داخل سایر ویندوزهای 32 بیتی از جمله 7 و 8 امتحان کنند خیلی خوب میشه.

فایل ضمیمه شامل 9 پروژه مختلف هست

از دوستان دیگم میخوان سورس های تست شدشونو بذارن

من اینو رو سیستم های مختلف 32 بیت تست میکنم و در همین تاپیک طی مدتی اعلام میکنم
برای 64 بیت از دات نت استفاده کن به صورت 64 بیت کامپایل کنی حله

mehran901
یک شنبه 11 آبان 1393, 22:17 عصر
تا اینجایی که بنده بررسی کردم سورس cpu id روی تمامی سیستم های 32 بیت درست عمل نمیکنه متاسفانه
فکر کنم تمرکز رو سریال هارد موفق تر هستش

vbhamed
دوشنبه 12 آبان 1393, 00:44 صبح
سلام
دنبال يك DLL به نام GetDiskSerial.dll بگرديد ورژن 5
اين DLL حتي مي‌تونه مشخص كنه كامپيوتر شما واقعي است يا مجازي كه با Virtual PC يا vmWare ايجاد شده

gorg313
دوشنبه 12 آبان 1393, 14:26 عصر
سلام مهران سريال سي پي يو که با عوض شدن ويندوز عوض ميشه

سريال هارد را هم که ميشه نوشت اما با کد نويسي ساده کرکرها مي تونن کرک کنن

من يه ايده دارم و مي تونم بنويسم اينکه نرم افزارو را از سرور کنترل کنيم

نحوه کار آدرس ياب اينه که وقتي سايت في لتر ميشه از هاست آدرس عوض ميشه و تو کل نرم افزارها اون کدم عوض ميشه

حالا اين مورد چند تا ايراد داره

اينکه نرم افزار موقع بالا اومدن نياز به اينترنت داره
راه مطمئن اينه که وقتي کاربر نرم افزار را باز ميکنه کد را ازش بخواد وقتي تو هاست عوض شده باشه کاربر متخلف نمي تونه کاري بکنه
سومين ايراد اينه که برا هر نرم افزار بايد جدا کد تعريف کنيم
من چهارمين موردم اينه که اين کد ثابت نيست يعني نرم افزار را مي تونن تو سيستم هاي ديگه هم اجرا کنن

برا همين بايد سريال هارد را به عنوان نام کاربري و کد هاست را به عنوان سريال برنامه بديم

به نظر خودم ميشه يه نرم افزار قوي تک اجرايي ساخت

حدود 80 درصد را مي تونم بنويسم به راحتي و کد نويسي کم

ولي ايرادات زيادي داره که خودم گفتم شماها هم بگيد نظرتون را

:لبخند:

mehran901
دوشنبه 12 آبان 1393, 20:02 عصر
سلام مهران سريال سي پي يو که با عوض شدن ويندوز عوض ميشه

سريال هارد را هم که ميشه نوشت اما با کد نويسي ساده کرکرها مي تونن کرک کنن

من يه ايده دارم و مي تونم بنويسم اينکه نرم افزارو را از سرور کنترل کنيم

نحوه کار آدرس ياب اينه که وقتي سايت في لتر ميشه از هاست آدرس عوض ميشه و تو کل نرم افزارها اون کدم عوض ميشه

حالا اين مورد چند تا ايراد داره

اينکه نرم افزار موقع بالا اومدن نياز به اينترنت داره
راه مطمئن اينه که وقتي کاربر نرم افزار را باز ميکنه کد را ازش بخواد وقتي تو هاست عوض شده باشه کاربر متخلف نمي تونه کاري بکنه
سومين ايراد اينه که برا هر نرم افزار بايد جدا کد تعريف کنيم
من چهارمين موردم اينه که اين کد ثابت نيست يعني نرم افزار را مي تونن تو سيستم هاي ديگه هم اجرا کنن

برا همين بايد سريال هارد را به عنوان نام کاربري و کد هاست را به عنوان سريال برنامه بديم

به نظر خودم ميشه يه نرم افزار قوي تک اجرايي ساخت

حدود 80 درصد را مي تونم بنويسم به راحتي و کد نويسي کم

ولي ايرادات زيادي داره که خودم گفتم شماها هم بگيد نظرتون را

:لبخند:

سلام و ممنون از نظرت ، ببین سریال سی پی یو 90% مواقع با تغییر ویندوز عوض نمیشه
توی اون 10% هم واقعا نمیدونم چرا تغییر میکنه

این روشت خوبه ولی واسه کار من مناسب نیست زیاد .... درضمن نرم افزار به صورت اتوران یک سی دی هست که محصول خودمه اینقدرم ارزش وقت گذاشتن و کار نداره همون سریال هارد خوبه فکر کنم

gorg313
دوشنبه 12 آبان 1393, 22:03 عصر
سلام و ممنون از نظرت ، ببین سریال سی پی یو 90% مواقع با تغییر ویندوز عوض نمیشه
توی اون 10% هم واقعا نمیدونم چرا تغییر میکنه

این روشت خوبه ولی واسه کار من مناسب نیست زیاد .... درضمن نرم افزار به صورت اتوران یک سی دی هست که محصول خودمه اینقدرم ارزش وقت گذاشتن و کار نداره همون سریال هارد خوبه فکر کنم


مهران جان درسته ولي بهت پيشنهاد ميکنم کد دهي نرم افزارتم را پيچيده کن

مثلآ تو چند بخش از برنامه ات بياد و سريال را چک کنه اين کاره کرکرها را سخت ميکنه

مثلآ تو برنامه ده تا دکمه داريم

دکمه هاي مهم شامل - 1 - ذخيره 2- اجراي دستور 3 - تحليل و .... (منظورم از دکمه همون کامند) - تو اين دکمه ها که تو برنامه ها اکثرآ هستن و مهم هستن سريال را بزن اول دستور چک کنه بعد اجرا بشه :لبخند: ضد حال ميگن بهش

وقتي برنامه لود ميشه هم ميشه يه بار چک کرد اکثرآ اينطوريه کرکر مياد ميگه ---IF A=True then A=False يه همچين چيزي يعني سريال راحت مي سوزونه = a سريال بدست اومده توسط کرکر هستش

اما اگه تو چند بخش کد چک بشه پيچيده ميشه برنامه تنها ايرادش افزايش حجم برنامه است ولي خوبه حتي مي توني يه تايمر مخصوص چک کردن سريال بدي :لبخند:

بازم اميدوارم موفق و مويد باشي :لبخند:

m.4.r.m
سه شنبه 13 آبان 1393, 16:03 عصر
: module

Option Explicit


Private m_mainWmi As Object
Private m_deviceLists As Collection


Private Function GetMainWMIObject() As Object
On Error GoTo eh
If m_mainWmi Is Nothing Then
Set m_mainWmi = GetObject("WinMgmts:")
End If
Set GetMainWMIObject = m_mainWmi
Exit Function
eh:
Set GetMainWMIObject = Nothing
End Function


Public Function WmiIsAvailable() As Boolean
WmiIsAvailable = CBool(Not GetMainWMIObject Is Nothing)
End Function


Public Function GetWmiDeviceSingleValue(ByVal WmiClass As String, ByVal WmiProperty As String) As String
On Error GoTo done
Dim result As String

Dim wmiclassObjList As Object
Set wmiclassObjList = GetWmiDeviceList(WmiClass)
Dim wmiclassObj As Object
For Each wmiclassObj In wmiclassObjList
result = CallByName(wmiclassObj, WmiProperty, VbGet)
Exit For
Next


done:
GetWmiDeviceSingleValue = Trim(result)
End Function


Public Function GetWmiDeviceList(ByVal WmiClass As String) As Object
If m_deviceLists Is Nothing Then
Set m_deviceLists = New Collection
End If

On Error GoTo fetchNew

Set GetWmiDeviceList = m_deviceLists.Item(WmiClass)
Exit Function

fetchNew:
Dim devList As Object
Set devList = GetWmiDeviceListInternal(WmiClass)
If Not devList Is Nothing Then
Call m_deviceLists.Add(devList, WmiClass)
End If
Set GetWmiDeviceList = devList
End Function


Private Function GetWmiDeviceListInternal(ByVal WmiClass As String) As Object
On Error GoTo eh
Set GetWmiDeviceListInternal = GetMainWMIObject.Instancesof(WmiClass)
Exit Function
eh:
Set GetWmiDeviceListInternal = Nothing
End Function





: Code



Private Sub Form_Load()


Dim CPU As String
CPU = GetWmiDeviceSingleValue("Win32_Processor", "ProcessorID")
Text1.Text = CPU

Dim BIOS As String
BIOS = GetWmiDeviceSingleValue("Win32_BIOS", "SerialNumber")
Text2.Text = BIOS

End Sub

gorg313
سه شنبه 13 آبان 1393, 16:46 عصر
: module


[/

سلام بزرگوار سريال CPU + BIOS را ميده ؟

آيا تو کدهاي به دست اومده در تمام سيستم ها يکسان هستش؟

وقتي ويندوز عوض ميشه اين سريال هم تغيير ميکنه يا نه ؟


:لبخند:

mehran901
سه شنبه 13 آبان 1393, 18:00 عصر
سلام
دنبال يك DLL به نام GetDiskSerial.dll بگرديد ورژن 5

سلام
این دی ال ال با همین ورژنی ک فرمودینو استفاده کردم به نظر خوب میاد متاسفانه نسخه دمو هست ممکنه اگه نسخه کرک شده دارین بذارین ؟

mehran901
سه شنبه 13 آبان 1393, 18:04 عصر
: module

[VB]Option Explicit



جناب m4rm عزیز بنده قبلا از آیدی سی پی یو در مقیاس وسیع استفاده کردم بعد از مدتی کد های مشابه زیادی تو سرور به وجود اومد به تحقیقی ک کردم متوجه شدم آیدی سی پی یو برای تمامی سی پی یو ها متفاوت نیست مدل ب مدل داره...
تقریبا رو 2 هزار تا سیستم برنامه نصب شد

vbhamed
سه شنبه 13 آبان 1393, 23:48 عصر
سلام

در مورد WinMgmts يا همون Windows Management Instrument قبلا هم گفته شده قابل اعتماد نيست چون اين سرويس به راحتي در ويندوز قابل غير فعالسازي است و وقتي غير فعال بشه هميشه يك كد ثابت برمي‌گرده و طرف مي‌تونه با يكبار گرفتن كد از شما برنامتون رو روي بي نهايت سيستم اجرا كنه

Rasul75
چهارشنبه 14 آبان 1393, 09:45 صبح
سلام دوست عزیز شاید این برنامه به کارت بیاید.

mehran901
چهارشنبه 14 آبان 1393, 14:32 عصر
سلام دوست عزیز شاید این برنامه به کارت بیاید.

بسیار کامل و عالی ! wmi هم استفاده کرده
تشکر

vbhamed
چهارشنبه 14 آبان 1393, 19:20 عصر
سلام
دوستان اين راهها قبلا امتحان شده و همشون مشكل دارن، اگر امنيت برنامه براتون مهمه بهتره فكر ديگه اي كنيد، بعضيهاشون در ويندوزهاي مختلف مشكل دارن يا حتما بايد كاربر Admin باشه تا جواب بده و روي User جواب نميده، ممكنه با ويندوز 64 بيت هم مشكل داشته باشن
ضمنا كامپيوترهاي مجازي هم مشكل ديگه است