View Full Version : سوال: سريال نامبر فلش مموري
shahram_g
چهارشنبه 22 دی 1389, 20:41 عصر
سلام.
از طرق هاي رايج ميشه سريال نامبر درايو ها از جمله فلش مموري ها رو به دست آورد ولي اين روش دو تاايراد بزرگ داره:
اولا اينكه اين سريال با فرمت فلش مموري تغيير ميكنه و دوم اينكه معمولا فلش مموري هاي ساخت يك شركت داراي سريال هاي مشابه هستند.
حالا كسي راهي سراغ نداره كه بشه يك عدد مخصوص و غير قابل تغيير براي فلش مموري به دست آورد?
براي هارد ديسك تونستم با استفاده از يك فايل Dll مشكل رو حل كنم ولي فلش مموري نه!!
ali.rezaei7
پنج شنبه 23 دی 1389, 19:17 عصر
درود.
اولا اينكه اين سريال با فرمت فلش مموري تغيير ميكنه
اين سريال رو ويندوز به هر درايو اختصاص مي ده و سريال سخت افزاري نيست. زماني كه فلش به كامپيوتر متصل مي شه، ويندوز براي اين فلش درايوي ايجاد مي كنه و يك شناسه، بهش تعلق مي گيره. سريال سخت افزاري رو مي تونيد از Device Manager بدست بياريد(در قسمت Details دستگاه).
اما بوسيله اين كد مي تونيد سريال فلشو بدست بياريد:
اول يه Text به فرمت اضافه كن و خاصيت MultiLine رو True كن.
Dim objConnectWMI As Object
Dim objGetUSBdevices As Object
Dim objGetDeviceInfo As Object
Set objConnectWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objGetUSBdevices = objConnectWMI.ExecQuery("Select * from Win32_DiskDrive WHERE InterfaceType='USB'")
Text1 = ""
Text1.Width = Width
For Each objGetDeviceInfo In objGetUSBdevices
With objGetDeviceInfo
Text1 = Text1 & String(50, "_") & vbCrLf & "MediaType: " & _
.MediaType & vbCrLf & "Device Type: " & .InterfaceType & _
vbCrLf & "Model: " & .Model & vbCrLf & "Device Index: " & _
.Index & vbCrLf & "Size to Byte: " & .Size & vbCrLf & _
"Plug and Play identifier: " & .PNPDeviceID
End With
Next
در اين كد از WMI استفاده كردم و به وسيله كلاس Win32_DiskDrive و مشخصات تمامي دستگاه هاي USB وصل شده به كامپيوتر رو استخراج كردم.(اين كلاس فقط مشخصات دستگاه هاي فيزيكي رو بر مي گردونه.)
آبجكت objGetUSBdevices خاصيت بنام PNPDeviceID داره كه اطلاعات دستگاه از قبيل نوع،شماره و سريال ذخيره شده(با يك فرمت ثابت).
مثلا مقدار PNPDeviceID فلش من USBSTOR\DISK&VEN_GENERIC&PROD_USB_FLASH_DISK&REV_0.00\00000000001735&0 هست.
هميشه سريال بعد از آخرين علامت "\" و قبل از آخرين علامت "&" قرار داره. اون قست بنفش سريال فلش من هست.
ديگه جدا كردن سريال از رشته با خودت.:چشمک:
shahram_g
پنج شنبه 23 دی 1389, 22:51 عصر
درود.
اين سريال رو ويندوز به هر درايو اختصاص مي ده و سريال سخت افزاري نيست. زماني كه فلش به كامپيوتر متصل مي شه، ويندوز براي اين فلش درايوي ايجاد مي كنه و يك شناسه، بهش تعلق مي گيره. سريال سخت افزاري رو مي تونيد از Device Manager بدست بياريد(در قسمت Details دستگاه).
اما بوسيله اين كد مي تونيد سريال فلشو بدست بياريد:
اول يه Text به فرمت اضافه كن و خاصيت MultiLine رو True كن.
Dim objConnectWMI As Object
Dim objGetUSBdevices As Object
Dim objGetDeviceInfo As Object
Set objConnectWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objGetUSBdevices = objConnectWMI.ExecQuery("Select * from Win32_DiskDrive WHERE InterfaceType='USB'")
Text1 = ""
Text1.Width = Width
For Each objGetDeviceInfo In objGetUSBdevices
With objGetDeviceInfo
Text1 = Text1 & String(50, "_") & vbCrLf & "MediaType: " & _
.MediaType & vbCrLf & "Device Type: " & .InterfaceType & _
vbCrLf & "Model: " & .Model & vbCrLf & "Device Index: " & _
.Index & vbCrLf & "Size to Byte: " & .Size & vbCrLf & _
"Plug and Play identifier: " & .PNPDeviceID
End With
Next
در اين كد از WMI استفاده كردم و به وسيله كلاس Win32_DiskDrive و مشخصات تمامي دستگاه هاي USB وصل شده به كامپيوتر رو استخراج كردم.(اين كلاس فقط مشخصات دستگاه هاي فيزيكي رو بر مي گردونه.)
آبجكت objGetUSBdevices خاصيت بنام PNPDeviceID داره كه اطلاعات دستگاه از قبيل نوع،شماره و سريال ذخيره شده(با يك فرمت ثابت).
مثلا مقدار PNPDeviceID فلش من USBSTOR\DISK&VEN_GENERIC&PROD_USB_FLASH_DISK&REV_0.00\00000000001735&0 هست.
هميشه سريال بعد از آخرين علامت "\" و قبل از آخرين علامت "&" قرار داره. اون قست بنفش سريال فلش من هست.
ديگه جدا كردن سريال از رشته با خودت.:چشمک:
خيلي ممنون از توضيحاتي كه دادي.
من هم امروز قبل از اينكه شما زحمت بكشي از اين كلاس استفاده كردم و تونستم كه سريال فلش مموري رو به دست بيارم.حالا يك مشكل ديگه دارم.اگه دقت كنيد عبارت Each objGetDeviceInfo In objGetUSBdevices باعث ميشه كه مشخصات تمام فلش مموري هاي كه به دستگاه وصل هست برگردونده بشه.تا اينجاي كار خيلي خوبه و ميشه تك تك مموري هايي كه به دستگاه وصل شدند رو مشخصاتش رو كشيد بيرون ولي اين كلاس يك اشكال داره و او اينه كه تو متد هاش نام درايور رو بر نمي گردونه.
يعني شما نمي تونيد وقتي همزمان چند تا فلش به دستگاهتون وصل هست به تفكيك نام درايو مشخصات رو جدا كنيد و حتما بايد فلش ها رو تك تك امتحان كنيد.
براي اين مسئله راه حلي نداريد؟
ضمنا از خط چهارم كدتون ايراد مي گيره
ali.rezaei7
جمعه 24 دی 1389, 14:14 عصر
اگه دقت كنيد عبارت Each objGetDeviceInfo In objGetUSBdevices باعث ميشه كه مشخصات تمام فلش مموري هاي كه به دستگاه وصل هست برگردونده بشه.تا اينجاي كار خيلي خوبه و ميشه تك تك مموري هايي كه به دستگاه وصل شدند رو مشخصاتش رو كشيد بيرون ولي اين كلاس يك اشكال داره و او اينه كه تو متد هاش نام درايور رو بر نمي گردونه.همون طور كه تو پست ابتداييم گفتم كلاس Win32_DiskDrive دستگاه هاي فيزيكي(CD/DVDRom,Flash Disk,Hard Disk) رو پوشش مي ده. و ازطرفي شما هم دنبال شماره سريال سخت افزاري هستي، پس درنتيجه بايد از كلاس هايي در WMI استفاده كنيم كه روي دستگاه ها فعاليت دارند (مثل همين كلاس). به خاطر همين هست اين كلاس نام درايو رو بر نمي گردونه(چون درايو يه موجوديت منطقي هست در حالي كه اين كلاس روي سخت افزار فعاليت مي كنه). البته كلاس هاي ديگه اي تو WMI هستند كه دريواهاي منطقي رو پوشش مي دن، مثل كلاس Win32_LogicalDisk ولي خاصيت هايي مشترك ندارن كه بشه توسط اون با كلاس Win32_DiskDrive ارتباط برقرار كرد.
ضمنا از خط چهارم كدتون ايراد مي گيره خط 4 براي وصل شدن به WMI ويندوز هست. نبايد مشكلي داشته باشه. شما قسمت بعد از كاركتر ":" رو حذف كن شايد درست شه. يعني عبارت داخل پرانتز اين بشه: ":winmgmts"
shahram_g
جمعه 24 دی 1389, 15:43 عصر
65055
البته كلاس هاي ديگه اي تو WMI هستند كه دريواهاي منطقي رو پوشش مي دن، مثل كلاس Win32_LogicalDisk ولي خاصيت هايي مشترك ندارن كه بشه توسط اون با كلاس Win32_DiskDrive ارتباط برقرار كرد.
:winmgmts"
درسته دقيقا مشكل همينه كه خاصيت هاي مشترك ندارند.
يك DLL پيدا كردم به نام USBPhysic.dll كه دقيقا هم سريال رو بر ميگردونه و هم نام درايو رو و نمي دونم چطوري اين كاررو مي كنه؟
سورس و فايل رو پيوست مي كنم.دقيقا اين سورس به كمك فايلي كه گفتم هم سريال رو بر مي گردونه و هم نام درايو.
مشكل اينه كه براي رفرش سخت افزاري صداي درايو فلاپي رو در مياره و اگه تو يه تايمر براي تشخيص فلش مموري هاي جديد قرار داده بشه مدام اين صدا رو مي شنوي كه آزار دهنده است.
منتظر نظرت هستم.
ali.rezaei7
جمعه 24 دی 1389, 15:55 عصر
يك DLL پيدا كردم به نام USBPhysic.dll كه دقيقا هم سريال رو بر ميگردونه و هم نام درايو رو و نمي دونم چطوري اين كاررو مي كنه؟
سورس و فايل رو پيوست مي كنم.دقيقا اين سورس به كمك فايلي كه گفتم هم سريال رو بر مي گردونه و هم نام درايو.
مشكل اينه كه براي رفرش سخت افزاري صداي درايو فلاپي رو در مياره و اگه تو يه تايمر براي تشخيص فلش مموري هاي جديد قرار داده بشه مدام اين صدا رو مي شنوي كه آزار دهنده است.
منتظر نظرت هستم.
بزار تو سايت ما هم استفاده كنيم. دستت دردنكنه.:قلب:
shahram_g
جمعه 24 دی 1389, 16:26 عصر
بزار تو سايت ما هم استفاده كنيم. دستت دردنكنه.:قلب:
گذاشتمش ديگه.
بالاي پست قبلي.
ببين و نظرتو بده.
اميدوارم به جايي برسيم.
ali.rezaei7
جمعه 24 دی 1389, 16:40 عصر
لايبري خوبيه. ولي يه مشكلي كه هست، اينكه اين كتاخانه هم نمي تونه از روي نام درايو سريالو بر گردونه، بلكه از روي شماره ديسك بر مي گردونه. خب اگه مي خواستيم از روي شماره سخت افزار، USB رو كشف كنيم با همون WMI هم مي تونستي اينكارو انجام بدي.
shahram_g
جمعه 24 دی 1389, 19:46 عصر
لايبري خوبيه. ولي يه مشكلي كه هست، اينكه اين كتاخانه هم نمي تونه از روي نام درايو سريالو بر گردونه، بلكه از روي شماره ديسك بر مي گردونه. خب اگه مي خواستيم از روي شماره سخت افزار، USB رو كشف كنيم با همون WMI هم مي تونستي اينكارو انجام بدي.
درسته كه از روي شماره ديسك بر مي گردونه ولي تو تكست آخرش دقيقا به شماره درايو اشاره مي كنه يعني تونسته به خاصيت مشترك برسه.
من ميخوام به همين برسم در يك ركورد هم شماره سريال داده بشه و هم نام درايو.
ali.rezaei7
جمعه 24 دی 1389, 20:48 عصر
درسته كه از روي شماره ديسك بر مي گردونه ولي تو تكست آخرش دقيقا به شماره درايو اشاره مي كنه يعني تونسته به خاصيت مشترك برسه.
من ميخوام به همين برسم در يك ركورد هم شماره سريال داده بشه و هم نام درايو.
خب پس دراين صورت همه چي حل ديگه:تشویق:. فقط بايد دنبال نسخه كرك شدش بگردي تا بتوني ازش استفاده كني. و يه فكري هم بحال صداي فلاپي بكني. كه دليل اونم بخاطر چك كردن فلاپي توسط توابع داخل كتابخانه است. البته من اين صدارو از فلاپيم نشنيدم. چون اصلا فلاپي ندارم كه بخوام صدايي ازش بشنم.:لبخند:
همچنين من دارم در اين رابطه تحقيق مي كنم، تا بتونم از پايه خودم اين برنامه رو بنويسم. تا الان متوجه شدم كه خود ويندوز يك فايل كتابخانه اي بنام Setupapi.dll داره كه، وظيفش انجام همين كاراست.بوسيله توابع اين كتابخانه، ميشه از هر راهي(نام درايو، شماره انديس سخت افزاري و...) شماره سريال هر سيستم چندرسانه اي رو بيرون كشيد. اگه به نتيجه رسيدم حتما تو سايت قرارش مي دم. تا همه استفاده كنند.
shahram_g
جمعه 24 دی 1389, 22:47 عصر
خب پس دراين صورت همه چي حل ديگه:تشویق:. فقط بايد دنبال نسخه كرك شدش بگردي تا بتوني ازش استفاده كني. و يه فكري هم بحال صداي فلاپي بكني. كه دليل اونم بخاطر چك كردن فلاپي توسط توابع داخل كتابخانه است. البته من اين صدارو از فلاپيم نشنيدم. چون اصلا فلاپي ندارم كه بخوام صدايي ازش بشنم.:لبخند:
همچنين من دارم در اين رابطه تحقيق مي كنم، تا بتونم از پايه خودم اين برنامه رو بنويسم. تا الان متوجه شدم كه خود ويندوز يك فايل كتابخانه اي بنام Setupapi.dll داره كه، وظيفش انجام همين كاراست.بوسيله توابع اين كتابخانه، ميشه از هر راهي(نام درايو، شماره انديس سخت افزاري و...) شماره سريال هر سيستم چندرسانه اي رو بيرون كشيد. اگه به نتيجه رسيدم حتما تو سايت قرارش مي دم. تا همه استفاده كنند.
اتفاقا نسخه هك مربوطش رو پيدا كردم(اگه خواستي بگو لينك بدم دانلود كني) ولي مشكل صداي فلاپي درايو حل نشد.
يك راهي به ذهنم رسيد فكر كنم جواب بده.كد زير رو نگاه كن:
Dim obj, objs, buf, PnPID
Dim countflsh() As Byte
' Get the PnPDevice ID
Set objs = GetObject("Winmgmts:").ExecQuery("Select * from Win32_DiskDrive ")
For Each obj In objs
If Mid(obj.PNPDeviceID, 1, 7) = "USBSTOR" Then
PnPID = obj.PNPDeviceId
Get_SerialNo = obj.PNPDeviceID
End If
'Text1.Text = Text1.Text & "*******************************************" & vbCrLf
'End If
Next
اين كد هر چند تا فلش مموري(نكته جالبش اينه كه صداي فلاي درايو نداره:لبخند:) رو داشته باشي اطلاعاتش رو ميده بيرون.حالا كافيه يك كانتر توش بذاريم و از طرفي درايو هايي كه مربوط به USB هستند رو با كلاس FileSystemObject مشخص كنيم كه قطعا به تعداد كانتر بالاست.طبيعيه كه بايد ترتيب درايو ها با ترتيب اطلاعات كد بالا يكي باشه.
البته هنوز تست نكردم ولي فكر كنم جواب بده.
ali.rezaei7
جمعه 24 دی 1389, 23:05 عصر
خب اين كدي كه گذاشتي، شد همون كدي كه من تو پست اولم گذاشتم:لبخندساده:. اين كد، مثل كد من تمامي فلشارو بر مي گردونه. فقط من تو حلقه تمامي اطلاعت Device رو نشون دادم ولي شما فقط PNPDeviceId رو برگردوندي. مي شه بگي چه فرقي با اون داشت؟ حالا چجوري مي خواي از FileSystemObjectاستفاده كني؟
shahram_g
شنبه 25 دی 1389, 00:00 صبح
خب اين كدي كه گذاشتي، شد همون كدي كه من تو پست اولم گذاشتم:لبخندساده:. اين كد، مثل كد من تمامي فلشارو بر مي گردونه. فقط من تو حلقه تمامي اطلاعت Device رو نشون دادم ولي شما فقط PNPDeviceId رو برگردوندي. مي شه بگي چه فرقي با اون داشت؟ حالا چجوري مي خواي از FileSystemObjectاستفاده كني؟
آره تقريبا همونه.منظورم خود كد نبود.منظورم اين بود كه با استفاده از FileSystemObject بشه خاصيت Drivetype درايو ها رو بيرون كشيد كه براي فلش ها 1 هست.
ولي متاسفانه كد رو كه نوشتم ديدم كه هميشه ترتيب بيرون دادن اطلاعات كلاسWin32_DiskDrive به ترتيب صعودي نام درايو ها نيست.يعني هيچ چي....
ali.rezaei7
شنبه 25 دی 1389, 00:16 صبح
من هنوز نفهميدم كه با كمك FileSystemObjectچطوري مي خواي سريال نامبر همراه با نام درايو بگري؟:متفکر:
من چند بار گفتم اين Win32_DiskDrive اصلا نام درايو رو بر نمي گردونه كه بخواد براساس اون مرتب سازي كنه!
shahram_g
شنبه 25 دی 1389, 00:42 صبح
من هنوز نفهميدم كه با كمك FileSystemObjectچطوري مي خواي سريال نامبر همراه با نام درايو بگري؟:متفکر:
من چند بار گفتم اين Win32_DiskDrive اصلا نام درايو رو بر نمي گردونه كه بخواد براساس اون مرتب سازي كنه!
دقت نكردي.
سريال رو كه با همون كلاس پيدا مي كنم با FilesystemObject تايپ درايو رو پيدا مي كنم كه از جنس فلش هست يا هارد يا...
ولي خوب جواب نداد چون ترتيب درايوهاي فلش با ترتيب سريال هاي برگردونده شده توسط كلاس هميشه يكي نيست.
ali.rezaei7
شنبه 25 دی 1389, 01:05 صبح
خب اينكه كاملا طبيعي هست كه ترتيبشون يكي نباشه. چون ترتيب دستگاه ها از روي شماره انديس(Index) كه بر حسب زمان اتصال اونا تنظيم ميشه هست ولي در درايو ها براساس نام هست.از طرفي هم تعداد دستگاه ها با تعداد درايو ها برابر نيست كه شما از اين روش مي خواي استفاده كني.
vbhamed
شنبه 25 دی 1389, 08:12 صبح
سلام
اگر مي خواين از اين روش براي ساخت قفل سخت افزاري استفاده كنيد بايد بدونيد كه اگر Windows Managment Instrument رو سيستم طرف نصب نباشه، اين برنامه كلا هيچ اطلاعاتي بر مي گردونه، ضمن اينكه استفاده از فلش براي اين كار اصلا ايمن نيست
shahram_g
شنبه 25 دی 1389, 08:19 صبح
خب اينكه كاملا طبيعي هست كه ترتيبشون يكي نباشه. چون ترتيب دستگاه ها از روي شماره انديس(Index) كه بر حسب زمان اتصال اونا تنظيم ميشه هست ولي در درايو ها براساس نام هست.از طرفي هم تعداد دستگاه ها با تعداد درايو ها برابر نيست كه شما از اين روش مي خواي استفاده كني.
دقيقا همينطوره (متاسفانه).شما Setupapi.dll با كار نكردي؟ من البته براي safety فلش ازش استفاده كردم ولي براي Drive Letter چيزي ازش نمي دونم
سلام
اگر مي خواين از اين روش براي ساخت قفل سخت افزاري استفاده كنيد بايد بدونيد كه اگر Windows Managment Instrument رو سيستم طرف نصب نباشه، اين برنامه كلا هيچ اطلاعاتي بر مي گردونه، ضمن اينكه استفاده از فلش براي اين كار اصلا ايمن نيست
نه براي قفل سخت افزاري نيست و فقط مي خواستم اطلاعات سخت افزاري هر فلش مموري كه به دستگاه وصل هست رو با نام درايوش برگردونه.
ضمنا ممنون ميشم يه توضيحي راجع به Windows Managment Instrument بدي و كلا براي ساخت قفل سخت افزاري چه راهي پيشنهاد مي كني؟(موضوع جالب شد):لبخند:
ali.rezaei7
شنبه 25 دی 1389, 09:50 صبح
سلام
اگر مي خواين از اين روش براي ساخت قفل سخت افزاري استفاده كنيد بايد بدونيد كه اگر Windows Managment Instrument رو سيستم طرف نصب نباشه، اين برنامه كلا هيچ اطلاعاتي بر مي گردونه، ضمن اينكه استفاده از فلش براي اين كار اصلا ايمن نيست
با درود. منظورتون از نصب نبودن WMI چي هست؟ چون WMI امكانات داخلي ويندوز محسوب مي شه. و از Win2k به بالا رو تمامي نسخه هاي ويندوز موجود هست.
ضمنا ممنون ميشم يه توضيحي راجع به Windows Managment Instrument بدي
WMI ابزاري در ويندوز هست كه بوسيله اون برنامه نويسا مي تونن روي منابع و داده هاي سيستم، چه كامپيوترهاي شبكه و يا كامپيوتري كه برنامه در اون اجرا مي شه. مديريت كنن.
براي اطلاعات بيشتر: http://barnamenevis.org/showthread.php?132842-WMI-%DA%86%DB%8C%D8%B3%D8%AA-%D8%9F
vbhamed
شنبه 25 دی 1389, 10:11 صبح
سلام
در هر حال نرم افزاري كه روي ويندوز نصب هست، قابل عزل هم هست، حتي از راههاي سخت و هكرها هم كه معمولا دنبال اين چيزها هستند پس نميشه اطمينان كرد
براي ساخت قفل پيشنهاد مي كنم اگر برنامه نويس هستيد قفل آماده بخريد، اگر قراره قفل توليد كنيد مي تونيد از ميكروكنترلرها استفاده كنيد كه ميشه بحث الكترونيك
ali.rezaei7
شنبه 25 دی 1389, 11:10 صبح
سلام
در هر حال نرم افزاري كه روي ويندوز نصب هست، قابل عزل هم هست، حتي از راههاي سخت و هكرها هم كه معمولا دنبال اين چيزها هستند پس نميشه اطمينان كرد
براي ساخت قفل پيشنهاد مي كنم اگر برنامه نويس هستيد قفل آماده بخريد، اگر قراره قفل توليد كنيد مي تونيد از ميكروكنترلرها استفاده كنيد كه ميشه بحث الكترونيك
خب پس در این صورت به هیچ یک از امکانات داخلی ویندوز هم نمی تونیم اطمینان کنیم دیگه، چون هکرا می تونن هر چیزی رو غیر فعال کنن یا تغییر بدن. مثل توابع api رو تغییر بدن، ساختار ابزارهای دیگه و ... .
WMI یکی از مهمترین اجزای ویندوز هست، و به دلیل ایجاد سهولت در نوشتن کدها، و جلو گیری از درگیر شدن با توابع WinAPI کاربرد فراوانی در ویندوز و برنامه های مبتنی بر ویندوز داره، و در صورت نبود این ابزار نه تنها برنامه ما، بلکه سیستم عامل از عملکرد طبیعی خودش خارج می شه.
از طرفی هم این دوستمون که نمی خوان قفل سخت افزاری بسازن که نگران هک شدن قفل توسط هکرها باشن، فقط می خوان یه نرم افزار معمولی طراحی کنند که شماره سریال فلش رو برگردونه.
Felony
شنبه 25 دی 1389, 12:17 عصر
مثل توابع api رو تغییر بدن
چیشو تغییر بدن ؟!!!
ali.rezaei7
شنبه 25 دی 1389, 13:00 عصر
خود تابع رو. چيزي در مورد آلوده شدن فايل هاي كتابخانه اي(DLL,...) شنيدي؟ ويروس هايي هستند كه توابع داخل اين نوع فايل ها رو آلوده مي كنند و با تغيير آن ها به هدف موردنظرشون مي رسند. چند وقت پيش عملكرد يه ويروسو تو يه سايت مي خوندم. و توضيح داده بود كه اين ويروس توابع داخل winsock32.dll و mapi.dll و يه سري فايل هاي ديگه رو تغيير مي ده. و هنگامي كه از طريق نرم افزار هايي مثل outlook ايميلي ارسال مي شد. يك نسخه از اون ايميل به ميل تعيين شده توسط ويروس نويس ارسال مي شد. يا RootKit ها كه هسته سيستم عامل رو تغيير مي دن و يا كلا با يه نسخه طراحي شده توسط هكر تغيير عوض مي شه. خب زماني كه يه كرنل تغيير داده مي شه، هك كردن يه تابع api و تغيير اون فكر نمي كنم كه، كار چندادن مشكلي باشه.
shahram_g
شنبه 25 دی 1389, 13:18 عصر
بحث خيلي از موضوعش خارج شد.
دوستان اگه در مورد موضوع اصلي نظر دارند بفرمايند.
vbhamed
شنبه 25 دی 1389, 22:02 عصر
سلام
اولا من گفتم اگر اين دوستمون براي قفل مي خواد بايد اين مسائل رو در نظر بگيره
اگر واقعا قصد داشته باشيم امنيت رو برقرار كنيم بايد تن به مشكلاتش هم بديم، حتي اگر مجبور شديم از خيلي امكانات ويندوز صرفنظر كنيم
البته فكر نكنيد خيلي هم راحته و ما مي شينيم تا هكر بياد DLL هاي ويندوز رو تغيير بده، تغيير dll ها و ساير فايلهاي ويندوز رو ميشه با يك Checksum ساده بررسي كرد و حتي ميشه فايل مورد نظر رو كنار برنامه خودمون داشته باشيم و البته بازم با كنترل Checksum فايل قبل از هر فراخواني
ali.rezaei7
یک شنبه 26 دی 1389, 09:27 صبح
درود. منم کاملا موافقم که هک توابع کار دشواری هست،ولی خوب هر چه قدر هم دشوار باشه، خب شدنی که هست! همون طور که تو پست قبلیم اشاره کردم. در مورد اینکه هکر بیادو اونو روی سیستم ما تغییر بده... من چنین چیزی گفتم؟! فقط گفتم یه ویروسی هست که اینکارو انجام داده. درمورد checksum همچین ساده هم نیستش! اگه الگوریتم هاشون دارید بدید ما هم استفاده کنیم.
vbhamed
یک شنبه 26 دی 1389, 10:07 صبح
سلام
Checksum كه كار سختي نيست، مي تونيد از روش دلخواه استفاده كنيد مثلا :
1 - فايل مورد نظر رو باز كنيد
2 - بايت به بايت بخونيد
3 - كد اسكي هر كاراكتر خونده شده رو رو ضربدر موقعيت اون كاراكتر در فايل كنيد و حاصل رو به متغير Sum اضافه كنيد (متغير Sum بايد Currency يا Double باشه)
4 - در نهايت يك عدد بزرگ به دست مياد
5 - اين عدد رو تو برنامتون داشته باشيد
حالا هر وقت برنامه مي خواد تابع رو اجرا كنه اول Checksum مي گيره مي بينه همون عدد هست يا نه و اينطوري مي فهمه فايل اصليه يا تغيير داده شده، چون حتي اگر 1 بايت تغيير كنه عدد نهايي عوض ميشه
البته براي سرعت بيشتر الگوريتم Checksum يك بايت در ميون يا حتي 10 بايت در ميون هم بخونيد معمولا مشكلي نداره !
ali.rezaei7
یک شنبه 26 دی 1389, 10:31 صبح
سپاس. من فكر كردم كه شما به الگوريتم هاي رسمي checksum مثل CRC يا MD5 رو اشاره مي كنيد.اينم روش جالبيه(در مورد امنيت نظري ندارم).خب بازم يه مشكلي هست شايد ما تو برناممون از كلي فايل كتابخانه اي استفاده كنيم. در اينصورت بايد چك سام همه اونارو بدست بياريم. و از طرفي هم ساختار اين فايل ها در سيستم عامل هاي مختلف تغيير مي كنه. و اين مشكل رو دو چندادن مي كنه. تو ايرانم كه قربونش برم، شركت هاي توزيع كننده ي ويندوز اين قدر اين فايل ها رو دستكاري مي كنند كه... .
vbhamed
یک شنبه 26 دی 1389, 11:44 صبح
سلام
خب هر كه طاووس خواهد جور هندوستان كشد
ضمنا شما مي تونيد براي ورژنهاي مختلف ويندوز فايلهاي DLL مورد نياز رو كنار برنامت بزاري و از فايلهاي ويندوز استفاده نكني، اينطوري گرفتار مشكلات ويندوزهاي ايراني هم نمي شي
البته جديدا مد شده همه رو سي دي ويندوز مي نويسن ويندوز اصل ميكروسافت بدون دستكاري !
با استفاده از روش بالا مي تونيد برنامه خودتون رو هم از تغيير و ويروسي شدن محافظت كنيد !!!
ali.rezaei7
یک شنبه 26 دی 1389, 12:04 عصر
باشه. به هر حال ممنون. ولي از موضوع خيلي خار شديم. شرمنده دوستان.
shahram_g
یک شنبه 26 دی 1389, 20:22 عصر
من از همون Dll استفاده كردم (بدون ينكه واقعا بدونم چطوري نام درايو رو بر مي گردونه) ولي خوب مشكل صداي فلاپي همچنان پا برجاست.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.