PDA

View Full Version : ثبت یک آی دی منحصر به فرد برای هر کامپیوتر( نه هر کاربر)



behrad110
یک شنبه 30 بهمن 1390, 10:46 صبح
با عرض سلام خدمت دوستان عزیز
مشکلی که من دارم اینه که نیاز به این دارم که بتونم بازدید کننده های یک سایت رو به وسیله یک آی دی یکتا شناسایی کنم تا یک نفر نتونه چند با رثبت نام کنه در واقع چیزی که تو برنامه من که یه جور هایی خاص هست وجود داره اینه که سیستمی که با اون ثبت نام میشه مهم هست نه user . راه های معمول مثل ذخیرهip به درد نمیخوره چون با قطع ارتباط از اینترنت و اتصال مجدد آیپی عوض میشه cookie هم چندان جالب نیست چون کاربر یه کم حرفه ای تر میتونه از سیستم پاکش کنه اما من میخوام آیدی یونیک cpu رواز طریق برنامه وب بدست بیارم و ذخیره کنم . من این کار رو از طریق C#‎‎‎‎ میتونم انجام بدم که تاپیک اش رو الان در ادامه میزنم تا دوستان ببینند. اما از طریق وب نمیدونم چطور میشه آیدی client رو بدست آورد وسمت سرور فرستاد تا ذخیره بشه .
اگه دوستان همکاری کنن این مطلب به درد خیلی ها میخوره مثلا کسانی که میخوان برای سایتشون آمار گیریهایی مثل آمار رضایت از سایت یا آمار گیری های دیگه بگذارن چون یک نفر نمی تونه با عوض کردن IP صد بار رای بده و اختلال ایجاد بکنه(بعضی ها که حالشون بده از این کارها زیاد میکنن ). البته من برای یه کار خیلی مهم تر این رو لازم دارم
من این سوال رو تو انجمن های خارجی هم مطرح کردم که نتیجه ای نگرفتم واسه همین فکر کردم جوابی نداره و تاپیک رو حذف کردم ولی دوستان پیام خصوصی دادن خواستن تاپیک بمونه شاید اساتید ایرانی جوابی داشته باشن
خیلی ممنون و متشکر

behrad110
یک شنبه 30 بهمن 1390, 14:31 عصر
داشت یادم میرفت...
در خیلی از مواقع پیش میآد که به یک آی دی یکتا در برنامه های تحت وین نیاز داریم یکی اش برای زمانی هست که شما یک دسکتاپ اپلی کیشن درست کردید و میخواید این برنامه فقط برای یک کامپیوتر رجیستر بشه
در این جور موارد کافیه شما id cpu رو تو برنامه تون بدست بیارید و برنامه رو با اون ای دی یکتا رجیستر کنید
با این روش اون برنامه فقط تو اون سیستم اجرا میشه
قراردادی که بین کمپانی های ساخت cpu هست اینه که سریال هر سی پی یو در کل دنیا ثابت باشه. که از طریق کد زیر قابل دسترس هست



private void button1_Click(object sender, EventArgs e)
{
System.Management.ManagementClass theClass = new System.Management.ManagementClass("Win32_Processor");
System.Management.ManagementObjectCollection theCollectionOfResults = theClass.GetInstances();

foreach (System.Management.ManagementObject currentResult in theCollectionOfResults)
{
MessageBox.Show(currentResult["ProcessorID"].ToString());
}
}



این از کد سی شارپش حالا اساتید لطف کنن بگن سمت کلاینت چه روشی وجود داره

fakhravari
یک شنبه 30 بهمن 1390, 15:18 عصر
من هم برای نظر سنجی به کد شما رسیدم اما تا حالا جوابی دریافت نکردم.

dorparasti
یک شنبه 30 بهمن 1390, 16:36 عصر
تا جایی که من میدونم به علت حفظ امنیت کلاینت ها مرورگرها مجاز به دسترسی به تنظیمات و مشخصات سیستم نیستن .

clover
یک شنبه 30 بهمن 1390, 17:12 عصر
هیچ راهی صد درصدی برای اینکار وجود نداره، چون در این صورت دیگه امنیت معنایی نداره.
اما می تونید از تکنیک های مختلفی از جمله کوکی های فلش استفاده کنید.
یکی از تکنیک ها چیزی هست که در لینک زیر توضیح داده شده که بعضا با نام Browser Fingerprinting شناخته میشه:
http://panopticlick.eff.org/

sara_aryanfar
یک شنبه 30 بهمن 1390, 18:03 عصر
طبق گفته شرکت اینتل تعداد زیادی از شماره cpu ها تکراری هست و قابل استناد نیست بهتر هست از ترکیبی از قطعات استفاده کنید

A.Yousefi
یک شنبه 30 بهمن 1390, 18:31 عصر
من این سوال رو تو انجمن های خارجی هم مطرح کردم که نتیجه ای نگرفتم واسه همین فکر کردم جوابی نداره و تاپیک رو حذف کردم ولی دوستان پیام خصوصی دادن خواستن تاپیک بمونه شاید اساتید ایرانی جوابی داشته باشن
خیلی ممنون و متشکر
مثه اینکه آقای موسوی و سایر دوستان رو دست کم گرفتین!

behrad110
یک شنبه 30 بهمن 1390, 19:22 عصر
اینطور نیست یکتا بودن سریال توسط تمام کمپانی های ساخت سی پی یو تضمین شده اما اگه شماسند معتبری برای رد اون دارید ارائه کنید ما هم یاد بگیریم

behrad110
یک شنبه 30 بهمن 1390, 20:14 عصر
تا جایی که من میدونم به علت حفظ امنیت کلاینت ها مرورگرها مجاز به دسترسی به تنظیمات و مشخصات سیستم نیستن .

این امکان وجود داره به شرطی که Initialize and script ActiveX controls فعال بشه ( کاربر رو مجبور کنیم خودش فعال کنه) . اما در این صورت به قول شما امنیت کاربر به خطر می افته . اما به هر حال میشه دسترسی داشت

sara_aryanfar
یک شنبه 30 بهمن 1390, 20:45 عصر
اینجا یک بار بحث شده و چند جای دیگه
لینک (http://barnamenevis.org/showthread.php?296427-%D8%A7%D9%85%DA%A9%D8%A7%D9%86-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C-%D8%A8%D9%88%D8%AF%D9%86-%D8%B4%D9%85%D8%A7%D8%B1%D9%87-%D8%B3%D8%B1%DB%8C%D8%A7%D9%84-CPU-%D9%88-motherboard-%D8%AF%D8%B1-%D9%84%D9%BE-%D8%AA%D8%A7%D9%BE-%D9%87%D8%A7-%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%A7%D8%B1%D8%AF-%D9%88-%D8%B1%D8%A7%D9%87-%D8%AD%D9%84%D8%B4-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F)

behrad110
یک شنبه 30 بهمن 1390, 21:00 عصر
دوست عزیز ممنون از لینک اما این تعهدی است که اینل و amd و تگزاس اینسترومنت و ... انجام دادن نظر دوستان هم که بحث کردن محترم هست اما من یه سند از یکی از این شرکت ها یا در داکیومنت ها شون میخواستم که این را موکد تایید کنه . یا یک مثال نقض عملی

A.S.Roma
یک شنبه 30 بهمن 1390, 21:21 عصر
این امکان وجود داره به شرطی که Initialize and script ActiveX controls فعال بشه ( کاربر رو مجبور کنیم خودش فعال کنه) . اما در این صورت به قول شما امنیت کاربر به خطر می افته . اما به هر حال میشه دسترسی داشت
ActiveX فقط در IE‌ران میشه !

ضمنا" MAC Address‌کارت شبکه کاملا"‌Unique هست اما کلا" دسترسی به Hardware سمت کلاینت مطمئنا" نباید امکان‌پذیر باشه.

behrad110
یک شنبه 30 بهمن 1390, 21:27 عصر
ActiveX فقط در IE‌ران میشه !
متاسفانه همینطوره


اما کلا" دسترسی به Hardware سمت کلاینت مطمئنا" نباید امکان‌پذیر باشه.
اینقدر با اطمینان صحبت کردن کار درستی نیست این کار با جاوا اسکریپت شدنی هست پست زیر رو نگاه کنید

sara_aryanfar
یک شنبه 30 بهمن 1390, 21:29 عصر
من قبلا یه مقاله تو یکی از سایت های خارجی مطالعه کرده بودم در این مورد چون نتونستم لینکشو پیدا کنم این برا همین گذاشتم تلاش می کنم لینکشو پیدا کنم و بزارم چون خودم یه مدت دنبال ساخت قفل نرم افزاری بودم

behrad110
یک شنبه 30 بهمن 1390, 21:31 عصر
<script type="text/javascript">
var cpu_id = "";
var get_cpuid = GetObject("winmgmts:{impersonationLevel=impersonate}");
e = new Enumerator(get_cpuid.InstancesOf("Win32_Processor"));
for(; !e.atEnd(); e.moveNext()) {
var s = e.item();
cpu_id = s.ProcessorID;
}
</script>
و
.
.
.

function Button1_onclick() {
alert(cpu_id);
}

behrad110
یک شنبه 30 بهمن 1390, 21:39 عصر
من قبلا یه مقاله تو یکی از سایت های خارجی مطالعه کرده بودم در این مورد چون نتونستم لینکشو پیدا کنم این برا همین گذاشتم تلاش می کنم لینکشو پیدا کنم و بزارم چون خودم یه مدت دنبال ساخت قفل نرم افزاری بودم
می دونم دوست عزیز من هم یکی دو جا دیدم که چنین چیزی میگن اما مطلبی که من میگم اینه که موثق نیست . همه میگن یکتا است ما هم میگیم یکتا است اینتل هم تعهد کرده یکتا باشه اگه چند نفر پیدا بشن که بگن یکتا نیست یعنی دو تا cpu پیدا کردن که آی دی یکتا نداشته . خودمونیم به نظر شما بین این همه cpu که تولید میشه تو دنیا امکان داره کسی بتونه بگرده دو تا cpu پیدا کنه که آی دی یکتا نداشته باشن. به نظر من عقلانی نیست با این حال پا فشاری نمی کنم اگه مطلبی رسمی ( نه بحث شده تو انجمن های خارجی چون قبلا خودم دیدم) پیدا کردید خیلی خیلی هم از شما ممنون میشم که این مطلب رو در اختیار من هم بگذارید چون این آی دی واسه کار من خیلی مهمه
باز هم از پیگیری تون ممنونم

Saman Hashemi
دوشنبه 01 اسفند 1390, 09:10 صبح
<script type="text/javascript">
var cpu_id = "";
var get_cpuid = GetObject("winmgmts:{impersonationLevel=impersonate}");
e = new Enumerator(get_cpuid.InstancesOf("Win32_Processor"));
for(; !e.atEnd(); e.moveNext()) {
var s = e.item();
cpu_id = s.ProcessorID;
}
</script>
و
.
.
.

function Button1_onclick() {
alert(cpu_id);
}

اینو شما خودت امتحان کردی جواب داده یا سیستم کپیه...! :متفکر:

behrad110
دوشنبه 01 اسفند 1390, 09:59 صبح
اینو شما خودت امتحان کردی جواب داده یا سیستم کپیه...! :متفکر:
سیستم کپیه یعنی چی؟ :عصبانی: من جواب گرفتم شما هم اگه تست کنی جواب میگیری.

alonemm
دوشنبه 01 اسفند 1390, 10:46 صبح
باسلام:
اگه وافعا میخواید نظر سنجی یکتا باشه بهتره که نظر سنجی برای کاربران باشه که اعتبار نظر سنجی هم بالا باشه.

fakhravari
دوشنبه 01 اسفند 1390, 12:02 عصر
پست 15 شماره هاست میده.
کلاینت که دسترسی ندارید

behrad110
دوشنبه 01 اسفند 1390, 19:30 عصر
این روش خیلی خوب کار میکنه اما روش خوبی نیست ( کدی که ارائه کردم)به دو دلیل مهمترین دلیلش اینه که تو فایر فاکس و اپرا کارنمیکنه دلیل دوم اش اینه که این روش جوانمردانه نیست :خجالت: :چشمک: کار بر رو مجبور میکنه اجازه بده اسکرپت ها و اکتیو ایکس ها تو سیستم اش اجرا بشن کار ما رو راه می اندازه ولی کاربر رو بیچاره میکنه :شیطان:


اگه وافعا میخواید نظر سنجی یکتا باشه بهتره که نظر سنجی برای کاربران باشه که اعتبار نظر سنجی هم بالا باشه.

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

alonemm
سه شنبه 02 اسفند 1390, 13:20 عصر
این روش خیلی خوب کار میکنه اما روش خوبی نیست ( کدی که ارائه کردم)به دو دلیل مهمترین دلیلش اینه که تو فایر فاکس و اپرا کارنمیکنه دلیل دوم اش اینه که این روش جوانمردانه نیست :خجالت: :چشمک: کار بر رو مجبور میکنه اجازه بده اسکرپت ها و اکتیو ایکس ها تو سیستم اش اجرا بشن کار ما رو راه می اندازه ولی کاربر رو بیچاره میکنه :شیطان:



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

من متوجه نشدم منظور شما رو اما اگه واقعا انقد براتون مهمه میتونید نظر سنجی رو فقط برای کاربران بزارید هر کاربر با یک Email نام کاربری منحصر به فرد.

hamed.1117009
پنج شنبه 30 خرداد 1392, 19:43 عصر
با سلام و عرض خسته نباشید جا داره اول از بزرگواریتان تشکر کنم من یک مشکل کوچک دارم
زمانی که با windows server 2008 r2 این برنامه را اجرا می کنم در قسمت هایی که از win32 استفاده شده خطا می گیره البته روی الباقی ویندوز ها درست کار می کنه
لازم به ذکر است که من از webapplication استفاده می کنم یعنی این کد ها رو توی webapplication استفاده کردم که توی ویندوز 7 جواب داد ولی توی 2008 نه لطفاً کمک کنید با تشکر

fakhravari
پنج شنبه 30 خرداد 1392, 20:27 عصر
با سلام و عرض خسته نباشید جا داره اول از بزرگواریتان تشکر کنم من یک مشکل کوچک دارم
زمانی که با windows server 2008 r2 این برنامه را اجرا می کنم در قسمت هایی که از win32 استفاده شده خطا می گیره البته روی الباقی ویندوز ها درست کار می کنه
لازم به ذکر است که من از webapplication استفاده می کنم یعنی این کد ها رو توی webapplication استفاده کردم که توی ویندوز 7 جواب داد ولی توی 2008 نه لطفاً کمک کنید با تشکر

چه روشی !؟

asadi.hasan
پنج شنبه 30 خرداد 1392, 23:30 عصر
بازدید کننده های یک سایت رو به وسیله یک آی دی یکتا شناسایی کنم تا یک نفر نتونه چند با رثبت نام کنه در واقع چیزی که تو برنامه من که یه جور هایی خاص هست وجود داره اینه که سیستمی که با اون ثبت نام میشه مهم هست نه user
با این شرایط ، اونایی که از طریق کافی نت ، میان به سایت شما و به هر دلیلی میخوان توی سیستم شما مشارکت کنند چی میشه ؟

fakhravari
جمعه 31 خرداد 1392, 01:26 صبح
عزیزان راه زیادی وجود ندارد.
در نهایت اگر نتیجه مهم باید از کاربران ایمیل بگیرین یا ثبتنام داشته باشید.
-------------------------------------------------------------------------------------
از همین جا از بچه های برنامه نویس byby میکنم .
میرم سربازی آموزشی کرمان شهید باهنر.
http://fakhravary.blogfa.com/post-41.aspx