PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : دانلود روبوت ياهو به درخواست كاربران وي بي ايران(فارسي) *



Zirmizi
2011/10/13, 08:30 PM
درود
ديدم اين برنامه خيلي طرفدار داره گفتنم بزارم كه شما هم بهره ببريد.

بفرماييد اينم لينك دانلود مستقيم.

براي دانلود بر روي تشكر (http://dc391.4shared.com/download/2kgmgtgN/Vorojak_Yahoo_RoboT13.exe?tsid=20111013-165533-de49102d)كليك كنيد.:دی:-"

کلبه دار
2011/10/13, 09:14 PM
رفیق
این کارش شیه ؟
بطور دقـــــــــــــیـــــــــ ـــق توضیح بده من خر فم شم ایول
کلبه دار :sarma:

PreSideNt
2011/10/13, 09:18 PM
روبات یاهو مسنجر چیست؟
خوب حالا باید بدونیم یک ربات یاهو چی هست اصلا! یعنی مثلا چطوری آنلاین می شه و چه فرقی با یه آی دی (ID) معمولی دار.
در اصل آی دی یه روبات یاهو مسنجر هیچ فرقی با آی دی های دیگه نداره فقط نحوه لاگین (Login) کردنش فرق میکنه. یعنی بر عکس من و شما که با یاهو! مسنجر (Yahoo! Messenger) لاگین می کنیم یه روبات با یاهو! مسنجر لاگین نمی کنه و با یه برنامه ی دیگه که بهش اصطلاحا میگن شبیه سازی شده یاهو! مسنجر (Yahoo! Messenger Clone) لاگین می کنه! کار ما هم برای روبات ساختن دقیقا همینه یعنی باید یه یاهو مسنجر کلون بسازیم.

یاهو! مسنجر چگونه لاگین می شود؟
خوب برای اینکه بتونیم یه چیزی عین یاهو! مسنجر بسازیم اول باید ببینیم یاهو! مسنجر وقتی ما دکمه Sign In رو می زنیم چیکارا میکنه...
فعلا یه توضیح مختصر میدم بعدا سعی میکنم هر تیکشو به طور مفصل توضیح بدم:
یاهو! مسنجر اول میاد به سرور یاهو! پیغام میفرسته که میخوام بهت کانکت (Connect) بشم.
سوال دارین بکنین...

ببخشید، سرور چیه؟
" کلا به هر کامپیوتری که هر نوع سرویسی بده میگن سرور! مثلا توی شبکه داخلی (LAN) به اون کامپیوتری که همه کامپیوترا بهش کانکت میشن رو میگن سرور!
اما تو اینترنت وقتی صحبت از سرور میشه منظور یه کامپیوتره که همیشه آنلاینه! (معنی اصلیش اونیه که بالا گفتما! بعدا نگی این سیاوش همه چیو اشتباه میگه) "
این سرور که یاهو! مسنجر یهش وصل میشه ربطی به همون وب سرور (Web Server) اینا داره که روش سایت می ریزن؟
" نه عزیز من! این سرورا اصلابرنامه وب سرور (Web Server) روش نصت نیست. بجاش تمام یوزرنیم (Username) ها و پسورد های آی دی های یاهو روی این کامپیوترا ذخیره هستن... روی این سرورا یه برنامه نصب هست که کارش اینه که وقتی یاهو! مسنجر بهش خواست وصل شه اول بهش اجازه وصل شدن بده و بعد یه سری از اطلاعات (مثل یوزرنیم و پسوورد) رو چک کنه و اگه درست نبود ارتباط رو قطع کنه.
دز ضمن تقریبا تمام پی ام (PM) هایی هم که میفرستین اول میاد تو این سرورا و بعد به وسیله همین برنامه از سرور به اون شخصی که قرار بوده پی ام بهش برسه فرستاده میشه! "
ببخشید شما چرا تو جوابتون گفتین سرورا؟ مگه بیشتر از یکین؟
" آفرین! خوشم میاد تیزی! یک سرور برای این که این همه اطلاعات رو چک کنه و دریافت کنه و بفرسته کمه... یعنی اصلا نمی کشه. در نتیجه یاهو! اومده این کار رو بین کلی کامپیوتر تقسیم کرده. "
پس چرا آخرش گفتین از سرور به اون شخص میفرسته به جای از سرورا؟
" یه بار گیر دادی ازت تعریف کردم. حالا دیگه گیر ملا لغتی نده. منظورم اون سرور خاص بود که پیغام رو دریافت کرده. "
اونوقت یه سوال دیگه! چرا گفتین تقریبا تمام پی ام ها اول میرن تو سرور بعد از اونجا فرستاده میشن؟ چرا نگفتین همشون؟
" انگار جو گرفتتا! تو قرار نیست پشت سر هم سوال کنی. آقای قراره اینطوری باشه!
برای این گفتم تقریبا چون بعضی اوقات که یاهو ببینه ترافیک زیاده ارتباط مستقیم (Direct Connection) بر قرار می کنه یعنی پی ام ها دیگه به سرور نمی رن و مستقیم سند (Send) میشن به کسی که قراره بگیردش.
بعضی از برنامه های مسنجر مثل AOL همیشه ارتباط مستقیم بین کاربراشون بر قرار میکنن اینطوری هم سرورا زیاد بارشون سنگین نمیشه هم اگه مثلا اگر لاگ اوت (Logout) کنین خود AOL رو، می تونین به چتتون ادامه بدین چون برای ادامه چت نیازی به سرور نیست. "
ببخشید، ما میتونیم بفهمیم کی ارتباط غیر مستقیمه کی مستقیم؟
" آره! وقتی تو مسنحر داری چت می کنی بالای هر پنجره چت اسم تو و کسی که داری باهاش چت می کنی رو نوشته و یه - (dash) بینشون گذاشته. اگه به جای یک - دو تا دش ( -- ) اومد بینشون یعنی ارتباط مستقیم بر قرار شده.
خوب سوال دیگه بسه ... از موضوع اصلی خیلی دور شدیم. داشتیم میگفتیم یاهو! مسنجر اول به یکی از سرور پیغام میفرسته که میخوام کانکت شم. "
ببخشید ...
" بسه دیگه. الان سوال نکن. یه ذره وایسا این تیکرو گفتم دوباره سوال کن. "
خلاصه بعد سرور یاهو! قبول میکنه و کانکت میشن... اینجا باید دقت کنید که منظور از کانکت شدن لاگین شدن نیست. بلکه فقط کانکت شدن که اطلاعات بتونن به هم بفرستن. خوب حالا یاهو! مسنجر یوزرنین (Username) رو میفرسته و سرور بر حسب یوزرنیم و زمان یه اطلاعاتی رو میفرسته که به اون Seed میگن. حالا یاهو! مسنجر با توجه به Seed و یوزرنیم، پسورد رو encrypt میکنه و میفرسته به سرور یاهو!!! این تیکه مشکل ساز ترین قسمت برای ساختن یه یاهو! مسنجر کلون (Clone) هست. چون باید بفهمیم پسورد رو یاهو! مسنجر چطوری با توجه به یوزرنیم و سید، encrypt میکنه. این کار خیلی سخت هست و کار من و شما نیست در نتیجه ما برای این قسمت از یک DLL استفاده می کنیم که عمل encrypt کردن پسورد رو مثل یاهو مسنجر انجام میده (این DLL رو مدیون پروژه گیم (Gaim Project) هستیم! از همینجا از تمام دست اندر کاران این پروژه تشکر میکنم...)
حالا اگر سوالی دارین بپرسین...
ببخشید، من نفهمیدم encrypt چیه اصلا.
" خوب حق داری. ببین عزیز من معمولا برای امنیت بیشتر پسورد ها و اطلاعاتی که به راحتی نباید درز کنرو رمز میکنن. رمز کردن بطور کلی به دو دسته تقسیم میشه:
دسته اول encrypt یا encode کردن هست. مثل base64 encoding
این دسته همیشه دوطرفه هستن یعنی میشه از رمز شده دوباره به اصلش برگشت.
بعضی encrypt ها هم یک یا چند پارامتر به عنوان key میگیرن. یعنی با توجه به اون اطلاعات encrypt میکنن.
مثلا encrypt کردن کلمه syavash به وسیله الگوریتم Blowfish با کی a1 میشه No0ICOlDP6E= و با کی b2 میشه cu/FsS9kwvg= و مینونیم با داشتن کی (key) دوباره این دو تا رو به syavash برگردوند.
encryption پسورد یاهو! مسنجر هم تقریبا همینطوریه... یعنی چند تا پارامتر مثل Seed و یوزرنیم رو میگیده و پسورد رو encrypt میکنه!
دسته دوم رو hash بهشون میگن. در این مدل رمز کردن، ممکنه رمز برگشت پذیر نباشه چون تابع یک به یک نیست. برای مثال وقتی syavash رو با الگوریتم md5 هش میکنیم این شکلی میشه : 07fcf2ae7ef576f7d31d845e91001097
حالا از همین رمزی که بالا در اومده امکان نداره بشه به syavash رسید. "
یاهو برای چی اصلا Seed رو میفرسته؟ خوب بر حسب یوزرنیم و پسورد این کارو انجام میداد.
" دلیل اصلی اینه که زمان هم در اون تاثیر داشته باشه. چون اگه اینطوری نباشه یکی راحت میتونه encrypt شده پسورد یکی دیگرو رو به وسیله یه sniffer (بعدا دربارش توضیح میدم) بدست بیاره و بعدا هر وقت خواست با آی دی اون لاگین کنه. اما اگر زمان هم توش اثر داشته باشه فقط در همون لحظه (که دیگه تکرار نخواهد شد) از اون پسورد encrypt شده استفاده می شه کرد. "
DLL چیه دیگه؟ ربطی به download داره؟
" نه... DLL مخفف Dynamic Link Library هست و یه سری فرمان های اجرایی توش قرار دارن که میشه ازشون در هر برنامه ای استفاده کرد. فقط باید به این توجه داشته باشیم که DLL ها فقط برای ویندوزن و تو بقیه سیستم عامل ها نمیشه ازشون استفاده کرد.
کار DLL ای که بالا دربارش توضیح دادم اینه که پسورد رو همونطوری که یاهو! مسنجر رمز میکنه، رمز کنه! "
آقای انگار سوال داشتی؟
اممم... یادم رفت...
" باشه پس وقتی یادت اومد بگو. "
خوب وقتی ما این اطلاعات رو فرستادیم سرور یاهو! چک میکنه اطلاعاتی که بهش دادیم (همون یوزرنیم و پسورد) درست هستن یا نه. در صورتی که غلط باشن برای یاهو! مسنجر یه پیغام میفرسته که پسورد و یوزرنیم مطابقت ندارن و قطع میکنه ارتباط رو. در صورتی هم که درست باشه یه پیغام میفرسته که لاگین انجام شد و دقیقا در همون لحظست که چراغ آی دی شما تو یاهو! مسنجر دوستاتون روشن میشه و بعدشم لیست دوستان (Friend List) و سایر اطلاعات فرستاده میشه.
خوب! برای این جلسه بسه دیگه... این دفعه فقط همینطوری فهمیدیم چه اتفاقی میوفته که ما از طریق یاهو مسنجر آنلاین میشیم. جلسه ی دیگه میبینیم دقیقا چه اطلاعاتی فرستاده و دریافت میشن و چطوری میتونیم یه برنامه درست کنیم که دقیقا همون کارارو بکنه.
تعریف آی پی و پورت
خوب. اولین تعریفها آی پی و پورت هستن. بذارید معنی اینا رو با مثال توضیح بدم. ببینید توی یه شهر کلی خونه هست که هر کدوم از خونه ها یه آدرس و پلاک مخصوص خودشونو دارن... مثلا میگیم تهران. خ شریعتی .... پلاک 9.1. آدرس همیشه منحصر به فرد هست یعنی دو تا خونه وجود ندارن که آدرسشون یکی باشه...
کی گفته آقا ما یه دوست داریم پلاک خونشون با پلاک خونه بقلیشون یکیه!!!
" ببین من منظورم یه شهر قانونمند بود تهران رو نمیگفتم... "
خوب داشتم می گفتم. آدرس منحصر به فرد هست. این آدرس توی شهر همون آی پی هست توی شبکه. یعنی توی اینترنت (و کلا توی شبکه) هر کامپیوتری یه آدرس داره که بهش میگن آی پی.
حالا مثلا به دوستتون آدرس میدین بعد میگین رسیدی به خونمون از در جلو بیا تو یا از مثلا از در عقب بیا. یا اصلا میگی از پنجره بیا تو. به این میگن پورت. در اصلپورت یعنی از چه راهی به اون آدرس وصل بشیم. شاید این مثال بهتری باشه. آی پی آدرس هست و پورت جاده. از جاده های مختلف می شه با یه آدرس رسید.
آقا اجازه ما یه دوست دیگه داریم...
" ساکت!!! میدونم چی میخوای بگی. تو شهری که من گفتم بین هر دو تا خونه حداقل چند تا راه هست... "
حالا که مفهوم آی پی و پورت رو فهمیدیم یکم در باره شکل ظاهری اونا توضیح میدم.
آی پی به شکل ###.###.###.### هستش که به جای هر کدوم از #ها یک عدد قرار میگیره. مثلا 84.241.32.64
پورت هم به طور معمول یک عدد هستش بین 1 تا 65536 (2 به توان 16) و پورت های کوچک هم (زیر 1024) معمولا رزرو شده هستن یعنی معلومه مخصوص چه کاری هستن. مثلا پورت 80 برای http هست یعنی وقتی میرید تو یه سایت اطلاعات اون سایت از طریق این پورت فرستاده میشه یا مثلا پورت 21 برای FTP هست. بعدا بیشتر درباره پورت توضیح میدم. قاعدتا الان زیاد نباید چیزی ازش فهمیده باشین.
آقا اجازه؟ ما فکر کنیم شما دارین آی پی پورت رو اشتباه تعریف می کنین. آی پی پورت از اون چیزاییه که وارد می کنیم بعد از فیلتر باهاش رد میشیم. همین دیروزم دوستم یه آی پی پورت حدید بهم داد.
" ای بابا... چه ربطی داره! بذار برات توضیح بدم. ببین اول مختصرا باید بدونی چطوری سایتا رو فیلتر میکنن. شما وقتی میرید تو یه سایت اول براوزرتون (Browser) یه پیغام به آی اس پی (Internet Service Provider) میفرسته که من این سایت رو میخوام بعد آی اس پی آدرس رو چک می کنه اگه آدرس سایت جزو لیستی که باید فیلتر شه باشه اون صفحرو با اکسس بلاکد (Access Blocked) یا هر چیزی که براش تنظیم کرده باشن عوض میکنه و اونو بجای صفحه اصلی براتون میفرسته.
اون آی پی و پورتی که شما وارد میکنید آی پی و پورت یه ###### سرور (##### Server) هستش. کار ###### سرور اینه که اطلاعات رو بصورت غیر مستقیم بفرسته. یعنی وقتی شما اون آدرس رو وارد میکنید از اون به بعد میرید تو هر سایتی به جای اینکه براوزر به آی اس پی مستقیم بگه من این سایتو میخوام به ###### سرور میگه اون صفحرو بگیره بعد برای شما بفرسته. اینطوری در واقع گول می خوره آی اس پی.
پس شما اینو درست گفتین که اونا آی پی و پورت هستن ولی تعریف آی پی و پورت نیستن بلکه آی پی و پرت یا آدرس اون ###### سرور هستن. "
آهان پس اینطوریه.
خوب. یه قرار دادم میگم حالا. اگه یکی به شما بگه برو به فلان آی پی وصل شو معنی نداره. چون معلوم نیست از کدوم راه باید بهش وصل بشی. چون پورت رو مشخص نکرده. عین اینه که یه تک سیم به شما بدن بعد بگن اینو بزن به پریز و نگن به فاز بزن یا نول.
برای اینکه هی نگن به فلان آی پی با فلان پرت وصل شو یه قرار داد گذاشتن. میگن به IP:Port وصل شو. یعنی آی پی رو میگن و بعدش یه دو نقطه میذارن و بعد پورت رو میگن، مثلا: 84.241.32.64:21
ببخشید ما نفهمیدیم این فاز و نول چین؟
" هیچی ولش کن. اونارو ندونیم می تونی روبات یاهو! مسنجر بسازی. "
آقا آی پی خودمونو از کجا میتونیم پیدا کنیم؟
" اگر ویندوزتون XP باشه که خیلی راحت میتونن دوبار کلیک (Double Click) کنید روی عکس دو تا کامپیوترا که وقتی به نت وصل میشید میان بعد بزنید رو Details و آی پی که جلوی Client Address نوشته شده آی پی شماست. راه دیگشم اینه که برید تو Start->Run و بعد بنویسید cmd و اینتر (Enter) کنید تا Command Prompt باز شه و بعد بنویسید ipconfig و اینتر کنید. جلوی IP Address آی پی شما رو نوشته. "
ببخشید من وقتی تو کامپیوترم ipconfig رو میزنم دو تا IP Address میاد. ماجرا چیه؟
" شما کامپیوترتون به شبکه داخلی هم وصله. درست عین اینه که دو تا خونه داشته باشی. حالا اینجا شاید سوال پیش باید بالاخره آدرس من کدومه؟ جوابشم اینه که شما تو شبکه داخلی (مثلا LAN) یک آدرس دارین و تو اینترنت هم یه آدرس دیگه. فهمیدن این هم که کدوم آدرس داخلیه و کدوم آدرس اینترنته معمولا آسونه چون آی پی داخلی معمولا با 192.168 شروع میشه. در ضمن بالای هر آدرس نوشته مربوط به کجاست مثلا اگه اینترنتتون دیال آپ (Dial Up) باشه بالای آدرس اینترنتتون نوشته PPP adapter. "
تعریف سوکت
خوب حالا میگیم سوکت چیه! سوکت یه مکانیسم ارتباط هست که اولین دفه روی ورژن BSD از سیستم عامل یونیکس ارائه داده شد. ما زیاد به این تعریفش کاری نداریم. شما در این حد بدونید که با استفاده از سوکت می تونیم اطلاعات رو تو اینترنت و کلا تو شبکه انتقال بدیم.
میشه به دو طریق با سوکت اطلاعات رو روی شبکه انتقال داد: TCP و UDP
که ما در بیشتر مراحل ساختن روبات باهو! مسنجر (به جز Voice Chat و Webcam) به نوع اول یعنی TCP نیاز داریم.
مختصرا توضیح میدم فرق این دو تا چیه:

TCP که مخفف Transmission Control Protocol هستش یه تیکه از اطلاعات رو میفرسته و بعدش منتظر میشه ببینه تمام اطلاعات کامل رسیده یا نه و اطلاعاتی که نرسیدرو دوباره میفرسته و دوباره همین کارو تکرار می کنه. خوبیشم اینه که تمام اطلاعات مطمعنا فرستاده میشه و بدیشم اینه که سرعتش کمتره نسبت به UDP چون کلی اطلاعات اضافی ردو بدل میشه برای اینکه چک بشه تمام اطلاعات کامل منتقل شده یا نه.
UDP که مخفف User Datagram Protocol هست دقیقا برعکس TCP هست یعنی پشت سر هم اطلاعات فرستاده میشه و چک نمیشه که همش رسیده.

وقتی شما دارین یه فایل رو دانلود (Download) میکنید از TCP استفاده میشه چون باید تمام اطلاعات به طور کامل دریافت شه اما وقتی مثلا ویس چت (Voice Chat) میکنید از UDP استفاده میشه چون مهم اینه چیزی که الان گفته میشه برسه برای همینه بعضی اوقات صدا قطع و وصل میشه. در ضمن ترتیب رسیدن هم معلوم نیست تو UDP یعنی ممکنه وقتی abc فرستاده میشه acb دریافت بشه برای همینه بعضی اوقات تو ویس چت صدا روباتی یا شطرنجی میشه.
خوب دیگه برای این جلسه کافیه! جلسه دیگه یاد میگیریم چطوری بفهمیم یه برنامه چه اطلاعاتی رو داخل شبکه ردو بدل می کنه و بعد میریم سراغ یاهو! مسنجر که ببینیم چیا میفرسته و دریافت میکنه تا بتونیم اصل روبات ساختن رو شروع کنیم.

fariborz_ra
2011/10/13, 09:37 PM
روبات یاهو مسنجر چیست؟
خوب حالا باید بدونیم یک ربات یاهو چی هست اصلا! یعنی مثلا چطوری آنلاین می شه و چه فرقی با یه آی دی (ID) معمولی دار.
در اصل آی دی یه روبات یاهو مسنجر هیچ فرقی با آی دی های دیگه نداره فقط نحوه لاگین (Login) کردنش فرق میکنه. یعنی بر عکس من و شما که با یاهو! مسنجر (Yahoo! Messenger) لاگین می کنیم یه روبات با یاهو! مسنجر لاگین نمی کنه و با یه برنامه ی دیگه که بهش اصطلاحا میگن شبیه سازی شده یاهو! مسنجر (Yahoo! Messenger Clone) لاگین می کنه! کار ما هم برای روبات ساختن دقیقا همینه یعنی باید یه یاهو مسنجر کلون بسازیم.

یاهو! مسنجر چگونه لاگین می شود؟
خوب برای اینکه بتونیم یه چیزی عین یاهو! مسنجر بسازیم اول باید ببینیم یاهو! مسنجر وقتی ما دکمه Sign In رو می زنیم چیکارا میکنه...
فعلا یه توضیح مختصر میدم بعدا سعی میکنم هر تیکشو به طور مفصل توضیح بدم:
یاهو! مسنجر اول میاد به سرور یاهو! پیغام میفرسته که میخوام بهت کانکت (Connect) بشم.
سوال دارین بکنین...

ببخشید، سرور چیه؟
" کلا به هر کامپیوتری که هر نوع سرویسی بده میگن سرور! مثلا توی شبکه داخلی (LAN) به اون کامپیوتری که همه کامپیوترا بهش کانکت میشن رو میگن سرور!
اما تو اینترنت وقتی صحبت از سرور میشه منظور یه کامپیوتره که همیشه آنلاینه! (معنی اصلیش اونیه که بالا گفتما! بعدا نگی این سیاوش همه چیو اشتباه میگه) "
این سرور که یاهو! مسنجر یهش وصل میشه ربطی به همون وب سرور (Web Server) اینا داره که روش سایت می ریزن؟
" نه عزیز من! این سرورا اصلابرنامه وب سرور (Web Server) روش نصت نیست. بجاش تمام یوزرنیم (Username) ها و پسورد های آی دی های یاهو روی این کامپیوترا ذخیره هستن... روی این سرورا یه برنامه نصب هست که کارش اینه که وقتی یاهو! مسنجر بهش خواست وصل شه اول بهش اجازه وصل شدن بده و بعد یه سری از اطلاعات (مثل یوزرنیم و پسوورد) رو چک کنه و اگه درست نبود ارتباط رو قطع کنه.
دز ضمن تقریبا تمام پی ام (PM) هایی هم که میفرستین اول میاد تو این سرورا و بعد به وسیله همین برنامه از سرور به اون شخصی که قرار بوده پی ام بهش برسه فرستاده میشه! "
ببخشید شما چرا تو جوابتون گفتین سرورا؟ مگه بیشتر از یکین؟
" آفرین! خوشم میاد تیزی! یک سرور برای این که این همه اطلاعات رو چک کنه و دریافت کنه و بفرسته کمه... یعنی اصلا نمی کشه. در نتیجه یاهو! اومده این کار رو بین کلی کامپیوتر تقسیم کرده. "
پس چرا آخرش گفتین از سرور به اون شخص میفرسته به جای از سرورا؟
" یه بار گیر دادی ازت تعریف کردم. حالا دیگه گیر ملا لغتی نده. منظورم اون سرور خاص بود که پیغام رو دریافت کرده. "
اونوقت یه سوال دیگه! چرا گفتین تقریبا تمام پی ام ها اول میرن تو سرور بعد از اونجا فرستاده میشن؟ چرا نگفتین همشون؟
" انگار جو گرفتتا! تو قرار نیست پشت سر هم سوال کنی. آقای قراره اینطوری باشه!
برای این گفتم تقریبا چون بعضی اوقات که یاهو ببینه ترافیک زیاده ارتباط مستقیم (Direct Connection) بر قرار می کنه یعنی پی ام ها دیگه به سرور نمی رن و مستقیم سند (Send) میشن به کسی که قراره بگیردش.
بعضی از برنامه های مسنجر مثل AOL همیشه ارتباط مستقیم بین کاربراشون بر قرار میکنن اینطوری هم سرورا زیاد بارشون سنگین نمیشه هم اگه مثلا اگر لاگ اوت (Logout) کنین خود AOL رو، می تونین به چتتون ادامه بدین چون برای ادامه چت نیازی به سرور نیست. "
ببخشید، ما میتونیم بفهمیم کی ارتباط غیر مستقیمه کی مستقیم؟
" آره! وقتی تو مسنحر داری چت می کنی بالای هر پنجره چت اسم تو و کسی که داری باهاش چت می کنی رو نوشته و یه - (dash) بینشون گذاشته. اگه به جای یک - دو تا دش ( -- ) اومد بینشون یعنی ارتباط مستقیم بر قرار شده.
خوب سوال دیگه بسه ... از موضوع اصلی خیلی دور شدیم. داشتیم میگفتیم یاهو! مسنجر اول به یکی از سرور پیغام میفرسته که میخوام کانکت شم. "
ببخشید ...
" بسه دیگه. الان سوال نکن. یه ذره وایسا این تیکرو گفتم دوباره سوال کن. "
خلاصه بعد سرور یاهو! قبول میکنه و کانکت میشن... اینجا باید دقت کنید که منظور از کانکت شدن لاگین شدن نیست. بلکه فقط کانکت شدن که اطلاعات بتونن به هم بفرستن. خوب حالا یاهو! مسنجر یوزرنین (Username) رو میفرسته و سرور بر حسب یوزرنیم و زمان یه اطلاعاتی رو میفرسته که به اون Seed میگن. حالا یاهو! مسنجر با توجه به Seed و یوزرنیم، پسورد رو encrypt میکنه و میفرسته به سرور یاهو!!! این تیکه مشکل ساز ترین قسمت برای ساختن یه یاهو! مسنجر کلون (Clone) هست. چون باید بفهمیم پسورد رو یاهو! مسنجر چطوری با توجه به یوزرنیم و سید، encrypt میکنه. این کار خیلی سخت هست و کار من و شما نیست در نتیجه ما برای این قسمت از یک DLL استفاده می کنیم که عمل encrypt کردن پسورد رو مثل یاهو مسنجر انجام میده (این DLL رو مدیون پروژه گیم (Gaim Project) هستیم! از همینجا از تمام دست اندر کاران این پروژه تشکر میکنم...)
حالا اگر سوالی دارین بپرسین...
ببخشید، من نفهمیدم encrypt چیه اصلا.
" خوب حق داری. ببین عزیز من معمولا برای امنیت بیشتر پسورد ها و اطلاعاتی که به راحتی نباید درز کنرو رمز میکنن. رمز کردن بطور کلی به دو دسته تقسیم میشه:
دسته اول encrypt یا encode کردن هست. مثل base64 encoding
این دسته همیشه دوطرفه هستن یعنی میشه از رمز شده دوباره به اصلش برگشت.
بعضی encrypt ها هم یک یا چند پارامتر به عنوان key میگیرن. یعنی با توجه به اون اطلاعات encrypt میکنن.
مثلا encrypt کردن کلمه syavash به وسیله الگوریتم Blowfish با کی a1 میشه No0ICOlDP6E= و با کی b2 میشه cu/FsS9kwvg= و مینونیم با داشتن کی (key) دوباره این دو تا رو به syavash برگردوند.
encryption پسورد یاهو! مسنجر هم تقریبا همینطوریه... یعنی چند تا پارامتر مثل Seed و یوزرنیم رو میگیده و پسورد رو encrypt میکنه!
دسته دوم رو hash بهشون میگن. در این مدل رمز کردن، ممکنه رمز برگشت پذیر نباشه چون تابع یک به یک نیست. برای مثال وقتی syavash رو با الگوریتم md5 هش میکنیم این شکلی میشه : 07fcf2ae7ef576f7d31d845e91001097
حالا از همین رمزی که بالا در اومده امکان نداره بشه به syavash رسید. "
یاهو برای چی اصلا Seed رو میفرسته؟ خوب بر حسب یوزرنیم و پسورد این کارو انجام میداد.
" دلیل اصلی اینه که زمان هم در اون تاثیر داشته باشه. چون اگه اینطوری نباشه یکی راحت میتونه encrypt شده پسورد یکی دیگرو رو به وسیله یه sniffer (بعدا دربارش توضیح میدم) بدست بیاره و بعدا هر وقت خواست با آی دی اون لاگین کنه. اما اگر زمان هم توش اثر داشته باشه فقط در همون لحظه (که دیگه تکرار نخواهد شد) از اون پسورد encrypt شده استفاده می شه کرد. "
DLL چیه دیگه؟ ربطی به download داره؟
" نه... DLL مخفف Dynamic Link Library هست و یه سری فرمان های اجرایی توش قرار دارن که میشه ازشون در هر برنامه ای استفاده کرد. فقط باید به این توجه داشته باشیم که DLL ها فقط برای ویندوزن و تو بقیه سیستم عامل ها نمیشه ازشون استفاده کرد.
کار DLL ای که بالا دربارش توضیح دادم اینه که پسورد رو همونطوری که یاهو! مسنجر رمز میکنه، رمز کنه! "
آقای انگار سوال داشتی؟
اممم... یادم رفت...
" باشه پس وقتی یادت اومد بگو. "
خوب وقتی ما این اطلاعات رو فرستادیم سرور یاهو! چک میکنه اطلاعاتی که بهش دادیم (همون یوزرنیم و پسورد) درست هستن یا نه. در صورتی که غلط باشن برای یاهو! مسنجر یه پیغام میفرسته که پسورد و یوزرنیم مطابقت ندارن و قطع میکنه ارتباط رو. در صورتی هم که درست باشه یه پیغام میفرسته که لاگین انجام شد و دقیقا در همون لحظست که چراغ آی دی شما تو یاهو! مسنجر دوستاتون روشن میشه و بعدشم لیست دوستان (Friend List) و سایر اطلاعات فرستاده میشه.
خوب! برای این جلسه بسه دیگه... این دفعه فقط همینطوری فهمیدیم چه اتفاقی میوفته که ما از طریق یاهو مسنجر آنلاین میشیم. جلسه ی دیگه میبینیم دقیقا چه اطلاعاتی فرستاده و دریافت میشن و چطوری میتونیم یه برنامه درست کنیم که دقیقا همون کارارو بکنه.
تعریف آی پی و پورت
خوب. اولین تعریفها آی پی و پورت هستن. بذارید معنی اینا رو با مثال توضیح بدم. ببینید توی یه شهر کلی خونه هست که هر کدوم از خونه ها یه آدرس و پلاک مخصوص خودشونو دارن... مثلا میگیم تهران. خ شریعتی .... پلاک 9.1. آدرس همیشه منحصر به فرد هست یعنی دو تا خونه وجود ندارن که آدرسشون یکی باشه...
کی گفته آقا ما یه دوست داریم پلاک خونشون با پلاک خونه بقلیشون یکیه!!!
" ببین من منظورم یه شهر قانونمند بود تهران رو نمیگفتم... "
خوب داشتم می گفتم. آدرس منحصر به فرد هست. این آدرس توی شهر همون آی پی هست توی شبکه. یعنی توی اینترنت (و کلا توی شبکه) هر کامپیوتری یه آدرس داره که بهش میگن آی پی.
حالا مثلا به دوستتون آدرس میدین بعد میگین رسیدی به خونمون از در جلو بیا تو یا از مثلا از در عقب بیا. یا اصلا میگی از پنجره بیا تو. به این میگن پورت. در اصلپورت یعنی از چه راهی به اون آدرس وصل بشیم. شاید این مثال بهتری باشه. آی پی آدرس هست و پورت جاده. از جاده های مختلف می شه با یه آدرس رسید.
آقا اجازه ما یه دوست دیگه داریم...
" ساکت!!! میدونم چی میخوای بگی. تو شهری که من گفتم بین هر دو تا خونه حداقل چند تا راه هست... "
حالا که مفهوم آی پی و پورت رو فهمیدیم یکم در باره شکل ظاهری اونا توضیح میدم.
آی پی به شکل ###.###.###.### هستش که به جای هر کدوم از #ها یک عدد قرار میگیره. مثلا 84.241.32.64
پورت هم به طور معمول یک عدد هستش بین 1 تا 65536 (2 به توان 16) و پورت های کوچک هم (زیر 1024) معمولا رزرو شده هستن یعنی معلومه مخصوص چه کاری هستن. مثلا پورت 80 برای http هست یعنی وقتی میرید تو یه سایت اطلاعات اون سایت از طریق این پورت فرستاده میشه یا مثلا پورت 21 برای FTP هست. بعدا بیشتر درباره پورت توضیح میدم. قاعدتا الان زیاد نباید چیزی ازش فهمیده باشین.
آقا اجازه؟ ما فکر کنیم شما دارین آی پی پورت رو اشتباه تعریف می کنین. آی پی پورت از اون چیزاییه که وارد می کنیم بعد از فیلتر باهاش رد میشیم. همین دیروزم دوستم یه آی پی پورت حدید بهم داد.
" ای بابا... چه ربطی داره! بذار برات توضیح بدم. ببین اول مختصرا باید بدونی چطوری سایتا رو فیلتر میکنن. شما وقتی میرید تو یه سایت اول براوزرتون (Browser) یه پیغام به آی اس پی (Internet Service Provider) میفرسته که من این سایت رو میخوام بعد آی اس پی آدرس رو چک می کنه اگه آدرس سایت جزو لیستی که باید فیلتر شه باشه اون صفحرو با اکسس بلاکد (Access Blocked) یا هر چیزی که براش تنظیم کرده باشن عوض میکنه و اونو بجای صفحه اصلی براتون میفرسته.
اون آی پی و پورتی که شما وارد میکنید آی پی و پورت یه ###### سرور (##### Server) هستش. کار ###### سرور اینه که اطلاعات رو بصورت غیر مستقیم بفرسته. یعنی وقتی شما اون آدرس رو وارد میکنید از اون به بعد میرید تو هر سایتی به جای اینکه براوزر به آی اس پی مستقیم بگه من این سایتو میخوام به ###### سرور میگه اون صفحرو بگیره بعد برای شما بفرسته. اینطوری در واقع گول می خوره آی اس پی.
پس شما اینو درست گفتین که اونا آی پی و پورت هستن ولی تعریف آی پی و پورت نیستن بلکه آی پی و پرت یا آدرس اون ###### سرور هستن. "
آهان پس اینطوریه.
خوب. یه قرار دادم میگم حالا. اگه یکی به شما بگه برو به فلان آی پی وصل شو معنی نداره. چون معلوم نیست از کدوم راه باید بهش وصل بشی. چون پورت رو مشخص نکرده. عین اینه که یه تک سیم به شما بدن بعد بگن اینو بزن به پریز و نگن به فاز بزن یا نول.
برای اینکه هی نگن به فلان آی پی با فلان پرت وصل شو یه قرار داد گذاشتن. میگن به IP:Port وصل شو. یعنی آی پی رو میگن و بعدش یه دو نقطه میذارن و بعد پورت رو میگن، مثلا: 84.241.32.64:21
ببخشید ما نفهمیدیم این فاز و نول چین؟
" هیچی ولش کن. اونارو ندونیم می تونی روبات یاهو! مسنجر بسازی. "
آقا آی پی خودمونو از کجا میتونیم پیدا کنیم؟
" اگر ویندوزتون XP باشه که خیلی راحت میتونن دوبار کلیک (Double Click) کنید روی عکس دو تا کامپیوترا که وقتی به نت وصل میشید میان بعد بزنید رو Details و آی پی که جلوی Client Address نوشته شده آی پی شماست. راه دیگشم اینه که برید تو Start->Run و بعد بنویسید cmd و اینتر (Enter) کنید تا Command Prompt باز شه و بعد بنویسید ipconfig و اینتر کنید. جلوی IP Address آی پی شما رو نوشته. "
ببخشید من وقتی تو کامپیوترم ipconfig رو میزنم دو تا IP Address میاد. ماجرا چیه؟
" شما کامپیوترتون به شبکه داخلی هم وصله. درست عین اینه که دو تا خونه داشته باشی. حالا اینجا شاید سوال پیش باید بالاخره آدرس من کدومه؟ جوابشم اینه که شما تو شبکه داخلی (مثلا LAN) یک آدرس دارین و تو اینترنت هم یه آدرس دیگه. فهمیدن این هم که کدوم آدرس داخلیه و کدوم آدرس اینترنته معمولا آسونه چون آی پی داخلی معمولا با 192.168 شروع میشه. در ضمن بالای هر آدرس نوشته مربوط به کجاست مثلا اگه اینترنتتون دیال آپ (Dial Up) باشه بالای آدرس اینترنتتون نوشته PPP adapter. "
تعریف سوکت
خوب حالا میگیم سوکت چیه! سوکت یه مکانیسم ارتباط هست که اولین دفه روی ورژن BSD از سیستم عامل یونیکس ارائه داده شد. ما زیاد به این تعریفش کاری نداریم. شما در این حد بدونید که با استفاده از سوکت می تونیم اطلاعات رو تو اینترنت و کلا تو شبکه انتقال بدیم.
میشه به دو طریق با سوکت اطلاعات رو روی شبکه انتقال داد: TCP و UDP
که ما در بیشتر مراحل ساختن روبات باهو! مسنجر (به جز Voice Chat و Webcam) به نوع اول یعنی TCP نیاز داریم.
مختصرا توضیح میدم فرق این دو تا چیه:

TCP که مخفف Transmission Control Protocol هستش یه تیکه از اطلاعات رو میفرسته و بعدش منتظر میشه ببینه تمام اطلاعات کامل رسیده یا نه و اطلاعاتی که نرسیدرو دوباره میفرسته و دوباره همین کارو تکرار می کنه. خوبیشم اینه که تمام اطلاعات مطمعنا فرستاده میشه و بدیشم اینه که سرعتش کمتره نسبت به UDP چون کلی اطلاعات اضافی ردو بدل میشه برای اینکه چک بشه تمام اطلاعات کامل منتقل شده یا نه.
UDP که مخفف User Datagram Protocol هست دقیقا برعکس TCP هست یعنی پشت سر هم اطلاعات فرستاده میشه و چک نمیشه که همش رسیده.

وقتی شما دارین یه فایل رو دانلود (Download) میکنید از TCP استفاده میشه چون باید تمام اطلاعات به طور کامل دریافت شه اما وقتی مثلا ویس چت (Voice Chat) میکنید از UDP استفاده میشه چون مهم اینه چیزی که الان گفته میشه برسه برای همینه بعضی اوقات صدا قطع و وصل میشه. در ضمن ترتیب رسیدن هم معلوم نیست تو UDP یعنی ممکنه وقتی abc فرستاده میشه acb دریافت بشه برای همینه بعضی اوقات تو ویس چت صدا روباتی یا شطرنجی میشه.
خوب دیگه برای این جلسه کافیه! جلسه دیگه یاد میگیریم چطوری بفهمیم یه برنامه چه اطلاعاتی رو داخل شبکه ردو بدل می کنه و بعد میریم سراغ یاهو! مسنجر که ببینیم چیا میفرسته و دریافت میکنه تا بتونیم اصل روبات ساختن رو شروع کنیم.



بفرما اینم از توضیح
حالا کلبه دار جان تا صبح بشین بخون تا به قول خودت خر فهم بشی:دی

Zirmizi
2011/10/13, 09:49 PM
من الان خيلي وقته ازش استفاده نكردم الان يك ماهه.
بچه ها سالمه؟:-bd

Revenger
2011/10/14, 12:12 AM
]i [,vd ldai tuhga

چه جوری میشه فعالش کنیم که وقتی افلاینیم ربات فعال باشه؟؟؟

Mr.FranK
2011/10/14, 12:16 AM
ایول بر روی تشکر کلیک کنید خیلی باحال بود =))

Zirmizi
2011/10/14, 12:16 AM
]i [,vd ldai tuhga

چه جوری میشه فعالش کنیم که وقتی افلاینیم ربات فعال باشه؟؟؟

شفك كنم شما بايد نت وصل باشين و رها كنيد.همين

Razagh
2011/10/14, 12:22 AM
روبات یاهو مسنجر چیست؟
خوب حالا باید بدونیم یک ربات یاهو چی هست اصلا! یعنی مثلا چطوری آنلاین می شه و چه فرقی با یه آی دی (ID) معمولی دار.
در اصل آی دی یه روبات یاهو مسنجر هیچ فرقی با آی دی های دیگه نداره فقط نحوه لاگین (Login) کردنش فرق میکنه. یعنی بر عکس من و شما که با یاهو! مسنجر (Yahoo! Messenger) لاگین می کنیم یه روبات با یاهو! مسنجر لاگین نمی کنه و با یه برنامه ی دیگه که بهش اصطلاحا میگن شبیه سازی شده یاهو! مسنجر (Yahoo! Messenger Clone) لاگین می کنه! کار ما هم برای روبات ساختن دقیقا همینه یعنی باید یه یاهو مسنجر کلون بسازیم.

یاهو! مسنجر چگونه لاگین می شود؟
خوب برای اینکه بتونیم یه چیزی عین یاهو! مسنجر بسازیم اول باید ببینیم یاهو! مسنجر وقتی ما دکمه Sign In رو می زنیم چیکارا میکنه...
فعلا یه توضیح مختصر میدم بعدا سعی میکنم هر تیکشو به طور مفصل توضیح بدم:
یاهو! مسنجر اول میاد به سرور یاهو! پیغام میفرسته که میخوام بهت کانکت (Connect) بشم.
سوال دارین بکنین...

ببخشید، سرور چیه؟
" کلا به هر کامپیوتری که هر نوع سرویسی بده میگن سرور! مثلا توی شبکه داخلی (LAN) به اون کامپیوتری که همه کامپیوترا بهش کانکت میشن رو میگن سرور!
اما تو اینترنت وقتی صحبت از سرور میشه منظور یه کامپیوتره که همیشه آنلاینه! (معنی اصلیش اونیه که بالا گفتما! بعدا نگی این سیاوش همه چیو اشتباه میگه) "
این سرور که یاهو! مسنجر یهش وصل میشه ربطی به همون وب سرور (Web Server) اینا داره که روش سایت می ریزن؟
" نه عزیز من! این سرورا اصلابرنامه وب سرور (Web Server) روش نصت نیست. بجاش تمام یوزرنیم (Username) ها و پسورد های آی دی های یاهو روی این کامپیوترا ذخیره هستن... روی این سرورا یه برنامه نصب هست که کارش اینه که وقتی یاهو! مسنجر بهش خواست وصل شه اول بهش اجازه وصل شدن بده و بعد یه سری از اطلاعات (مثل یوزرنیم و پسوورد) رو چک کنه و اگه درست نبود ارتباط رو قطع کنه.
دز ضمن تقریبا تمام پی ام (PM) هایی هم که میفرستین اول میاد تو این سرورا و بعد به وسیله همین برنامه از سرور به اون شخصی که قرار بوده پی ام بهش برسه فرستاده میشه! "
ببخشید شما چرا تو جوابتون گفتین سرورا؟ مگه بیشتر از یکین؟
" آفرین! خوشم میاد تیزی! یک سرور برای این که این همه اطلاعات رو چک کنه و دریافت کنه و بفرسته کمه... یعنی اصلا نمی کشه. در نتیجه یاهو! اومده این کار رو بین کلی کامپیوتر تقسیم کرده. "
پس چرا آخرش گفتین از سرور به اون شخص میفرسته به جای از سرورا؟
" یه بار گیر دادی ازت تعریف کردم. حالا دیگه گیر ملا لغتی نده. منظورم اون سرور خاص بود که پیغام رو دریافت کرده. "
اونوقت یه سوال دیگه! چرا گفتین تقریبا تمام پی ام ها اول میرن تو سرور بعد از اونجا فرستاده میشن؟ چرا نگفتین همشون؟
" انگار جو گرفتتا! تو قرار نیست پشت سر هم سوال کنی. آقای قراره اینطوری باشه!
برای این گفتم تقریبا چون بعضی اوقات که یاهو ببینه ترافیک زیاده ارتباط مستقیم (Direct Connection) بر قرار می کنه یعنی پی ام ها دیگه به سرور نمی رن و مستقیم سند (Send) میشن به کسی که قراره بگیردش.
بعضی از برنامه های مسنجر مثل AOL همیشه ارتباط مستقیم بین کاربراشون بر قرار میکنن اینطوری هم سرورا زیاد بارشون سنگین نمیشه هم اگه مثلا اگر لاگ اوت (Logout) کنین خود AOL رو، می تونین به چتتون ادامه بدین چون برای ادامه چت نیازی به سرور نیست. "
ببخشید، ما میتونیم بفهمیم کی ارتباط غیر مستقیمه کی مستقیم؟
" آره! وقتی تو مسنحر داری چت می کنی بالای هر پنجره چت اسم تو و کسی که داری باهاش چت می کنی رو نوشته و یه - (dash) بینشون گذاشته. اگه به جای یک - دو تا دش ( -- ) اومد بینشون یعنی ارتباط مستقیم بر قرار شده.
خوب سوال دیگه بسه ... از موضوع اصلی خیلی دور شدیم. داشتیم میگفتیم یاهو! مسنجر اول به یکی از سرور پیغام میفرسته که میخوام کانکت شم. "
ببخشید ...
" بسه دیگه. الان سوال نکن. یه ذره وایسا این تیکرو گفتم دوباره سوال کن. "
خلاصه بعد سرور یاهو! قبول میکنه و کانکت میشن... اینجا باید دقت کنید که منظور از کانکت شدن لاگین شدن نیست. بلکه فقط کانکت شدن که اطلاعات بتونن به هم بفرستن. خوب حالا یاهو! مسنجر یوزرنین (Username) رو میفرسته و سرور بر حسب یوزرنیم و زمان یه اطلاعاتی رو میفرسته که به اون Seed میگن. حالا یاهو! مسنجر با توجه به Seed و یوزرنیم، پسورد رو encrypt میکنه و میفرسته به سرور یاهو!!! این تیکه مشکل ساز ترین قسمت برای ساختن یه یاهو! مسنجر کلون (Clone) هست. چون باید بفهمیم پسورد رو یاهو! مسنجر چطوری با توجه به یوزرنیم و سید، encrypt میکنه. این کار خیلی سخت هست و کار من و شما نیست در نتیجه ما برای این قسمت از یک DLL استفاده می کنیم که عمل encrypt کردن پسورد رو مثل یاهو مسنجر انجام میده (این DLL رو مدیون پروژه گیم (Gaim Project) هستیم! از همینجا از تمام دست اندر کاران این پروژه تشکر میکنم...)
حالا اگر سوالی دارین بپرسین...
ببخشید، من نفهمیدم encrypt چیه اصلا.
" خوب حق داری. ببین عزیز من معمولا برای امنیت بیشتر پسورد ها و اطلاعاتی که به راحتی نباید درز کنرو رمز میکنن. رمز کردن بطور کلی به دو دسته تقسیم میشه:
دسته اول encrypt یا encode کردن هست. مثل base64 encoding
این دسته همیشه دوطرفه هستن یعنی میشه از رمز شده دوباره به اصلش برگشت.
بعضی encrypt ها هم یک یا چند پارامتر به عنوان key میگیرن. یعنی با توجه به اون اطلاعات encrypt میکنن.
مثلا encrypt کردن کلمه syavash به وسیله الگوریتم Blowfish با کی a1 میشه No0ICOlDP6E= و با کی b2 میشه cu/FsS9kwvg= و مینونیم با داشتن کی (key) دوباره این دو تا رو به syavash برگردوند.
encryption پسورد یاهو! مسنجر هم تقریبا همینطوریه... یعنی چند تا پارامتر مثل Seed و یوزرنیم رو میگیده و پسورد رو encrypt میکنه!
دسته دوم رو hash بهشون میگن. در این مدل رمز کردن، ممکنه رمز برگشت پذیر نباشه چون تابع یک به یک نیست. برای مثال وقتی syavash رو با الگوریتم md5 هش میکنیم این شکلی میشه : 07fcf2ae7ef576f7d31d845e91001097
حالا از همین رمزی که بالا در اومده امکان نداره بشه به syavash رسید. "
یاهو برای چی اصلا Seed رو میفرسته؟ خوب بر حسب یوزرنیم و پسورد این کارو انجام میداد.
" دلیل اصلی اینه که زمان هم در اون تاثیر داشته باشه. چون اگه اینطوری نباشه یکی راحت میتونه encrypt شده پسورد یکی دیگرو رو به وسیله یه sniffer (بعدا دربارش توضیح میدم) بدست بیاره و بعدا هر وقت خواست با آی دی اون لاگین کنه. اما اگر زمان هم توش اثر داشته باشه فقط در همون لحظه (که دیگه تکرار نخواهد شد) از اون پسورد encrypt شده استفاده می شه کرد. "
DLL چیه دیگه؟ ربطی به download داره؟
" نه... DLL مخفف Dynamic Link Library هست و یه سری فرمان های اجرایی توش قرار دارن که میشه ازشون در هر برنامه ای استفاده کرد. فقط باید به این توجه داشته باشیم که DLL ها فقط برای ویندوزن و تو بقیه سیستم عامل ها نمیشه ازشون استفاده کرد.
کار DLL ای که بالا دربارش توضیح دادم اینه که پسورد رو همونطوری که یاهو! مسنجر رمز میکنه، رمز کنه! "
آقای انگار سوال داشتی؟
اممم... یادم رفت...
" باشه پس وقتی یادت اومد بگو. "
خوب وقتی ما این اطلاعات رو فرستادیم سرور یاهو! چک میکنه اطلاعاتی که بهش دادیم (همون یوزرنیم و پسورد) درست هستن یا نه. در صورتی که غلط باشن برای یاهو! مسنجر یه پیغام میفرسته که پسورد و یوزرنیم مطابقت ندارن و قطع میکنه ارتباط رو. در صورتی هم که درست باشه یه پیغام میفرسته که لاگین انجام شد و دقیقا در همون لحظست که چراغ آی دی شما تو یاهو! مسنجر دوستاتون روشن میشه و بعدشم لیست دوستان (Friend List) و سایر اطلاعات فرستاده میشه.
خوب! برای این جلسه بسه دیگه... این دفعه فقط همینطوری فهمیدیم چه اتفاقی میوفته که ما از طریق یاهو مسنجر آنلاین میشیم. جلسه ی دیگه میبینیم دقیقا چه اطلاعاتی فرستاده و دریافت میشن و چطوری میتونیم یه برنامه درست کنیم که دقیقا همون کارارو بکنه.
تعریف آی پی و پورت
خوب. اولین تعریفها آی پی و پورت هستن. بذارید معنی اینا رو با مثال توضیح بدم. ببینید توی یه شهر کلی خونه هست که هر کدوم از خونه ها یه آدرس و پلاک مخصوص خودشونو دارن... مثلا میگیم تهران. خ شریعتی .... پلاک 9.1. آدرس همیشه منحصر به فرد هست یعنی دو تا خونه وجود ندارن که آدرسشون یکی باشه...
کی گفته آقا ما یه دوست داریم پلاک خونشون با پلاک خونه بقلیشون یکیه!!!
" ببین من منظورم یه شهر قانونمند بود تهران رو نمیگفتم... "
خوب داشتم می گفتم. آدرس منحصر به فرد هست. این آدرس توی شهر همون آی پی هست توی شبکه. یعنی توی اینترنت (و کلا توی شبکه) هر کامپیوتری یه آدرس داره که بهش میگن آی پی.
حالا مثلا به دوستتون آدرس میدین بعد میگین رسیدی به خونمون از در جلو بیا تو یا از مثلا از در عقب بیا. یا اصلا میگی از پنجره بیا تو. به این میگن پورت. در اصلپورت یعنی از چه راهی به اون آدرس وصل بشیم. شاید این مثال بهتری باشه. آی پی آدرس هست و پورت جاده. از جاده های مختلف می شه با یه آدرس رسید.
آقا اجازه ما یه دوست دیگه داریم...
" ساکت!!! میدونم چی میخوای بگی. تو شهری که من گفتم بین هر دو تا خونه حداقل چند تا راه هست... "
حالا که مفهوم آی پی و پورت رو فهمیدیم یکم در باره شکل ظاهری اونا توضیح میدم.
آی پی به شکل ###.###.###.### هستش که به جای هر کدوم از #ها یک عدد قرار میگیره. مثلا 84.241.32.64
پورت هم به طور معمول یک عدد هستش بین 1 تا 65536 (2 به توان 16) و پورت های کوچک هم (زیر 1024) معمولا رزرو شده هستن یعنی معلومه مخصوص چه کاری هستن. مثلا پورت 80 برای http هست یعنی وقتی میرید تو یه سایت اطلاعات اون سایت از طریق این پورت فرستاده میشه یا مثلا پورت 21 برای FTP هست. بعدا بیشتر درباره پورت توضیح میدم. قاعدتا الان زیاد نباید چیزی ازش فهمیده باشین.
آقا اجازه؟ ما فکر کنیم شما دارین آی پی پورت رو اشتباه تعریف می کنین. آی پی پورت از اون چیزاییه که وارد می کنیم بعد از فیلتر باهاش رد میشیم. همین دیروزم دوستم یه آی پی پورت حدید بهم داد.
" ای بابا... چه ربطی داره! بذار برات توضیح بدم. ببین اول مختصرا باید بدونی چطوری سایتا رو فیلتر میکنن. شما وقتی میرید تو یه سایت اول براوزرتون (Browser) یه پیغام به آی اس پی (Internet Service Provider) میفرسته که من این سایت رو میخوام بعد آی اس پی آدرس رو چک می کنه اگه آدرس سایت جزو لیستی که باید فیلتر شه باشه اون صفحرو با اکسس بلاکد (Access Blocked) یا هر چیزی که براش تنظیم کرده باشن عوض میکنه و اونو بجای صفحه اصلی براتون میفرسته.
اون آی پی و پورتی که شما وارد میکنید آی پی و پورت یه ###### سرور (##### Server) هستش. کار ###### سرور اینه که اطلاعات رو بصورت غیر مستقیم بفرسته. یعنی وقتی شما اون آدرس رو وارد میکنید از اون به بعد میرید تو هر سایتی به جای اینکه براوزر به آی اس پی مستقیم بگه من این سایتو میخوام به ###### سرور میگه اون صفحرو بگیره بعد برای شما بفرسته. اینطوری در واقع گول می خوره آی اس پی.
پس شما اینو درست گفتین که اونا آی پی و پورت هستن ولی تعریف آی پی و پورت نیستن بلکه آی پی و پرت یا آدرس اون ###### سرور هستن. "
آهان پس اینطوریه.
خوب. یه قرار دادم میگم حالا. اگه یکی به شما بگه برو به فلان آی پی وصل شو معنی نداره. چون معلوم نیست از کدوم راه باید بهش وصل بشی. چون پورت رو مشخص نکرده. عین اینه که یه تک سیم به شما بدن بعد بگن اینو بزن به پریز و نگن به فاز بزن یا نول.
برای اینکه هی نگن به فلان آی پی با فلان پرت وصل شو یه قرار داد گذاشتن. میگن به IP:Port وصل شو. یعنی آی پی رو میگن و بعدش یه دو نقطه میذارن و بعد پورت رو میگن، مثلا: 84.241.32.64:21
ببخشید ما نفهمیدیم این فاز و نول چین؟
" هیچی ولش کن. اونارو ندونیم می تونی روبات یاهو! مسنجر بسازی. "
آقا آی پی خودمونو از کجا میتونیم پیدا کنیم؟
" اگر ویندوزتون XP باشه که خیلی راحت میتونن دوبار کلیک (Double Click) کنید روی عکس دو تا کامپیوترا که وقتی به نت وصل میشید میان بعد بزنید رو Details و آی پی که جلوی Client Address نوشته شده آی پی شماست. راه دیگشم اینه که برید تو Start->Run و بعد بنویسید cmd و اینتر (Enter) کنید تا Command Prompt باز شه و بعد بنویسید ipconfig و اینتر کنید. جلوی IP Address آی پی شما رو نوشته. "
ببخشید من وقتی تو کامپیوترم ipconfig رو میزنم دو تا IP Address میاد. ماجرا چیه؟
" شما کامپیوترتون به شبکه داخلی هم وصله. درست عین اینه که دو تا خونه داشته باشی. حالا اینجا شاید سوال پیش باید بالاخره آدرس من کدومه؟ جوابشم اینه که شما تو شبکه داخلی (مثلا LAN) یک آدرس دارین و تو اینترنت هم یه آدرس دیگه. فهمیدن این هم که کدوم آدرس داخلیه و کدوم آدرس اینترنته معمولا آسونه چون آی پی داخلی معمولا با 192.168 شروع میشه. در ضمن بالای هر آدرس نوشته مربوط به کجاست مثلا اگه اینترنتتون دیال آپ (Dial Up) باشه بالای آدرس اینترنتتون نوشته PPP adapter. "
تعریف سوکت
خوب حالا میگیم سوکت چیه! سوکت یه مکانیسم ارتباط هست که اولین دفه روی ورژن BSD از سیستم عامل یونیکس ارائه داده شد. ما زیاد به این تعریفش کاری نداریم. شما در این حد بدونید که با استفاده از سوکت می تونیم اطلاعات رو تو اینترنت و کلا تو شبکه انتقال بدیم.
میشه به دو طریق با سوکت اطلاعات رو روی شبکه انتقال داد: TCP و UDP
که ما در بیشتر مراحل ساختن روبات باهو! مسنجر (به جز Voice Chat و Webcam) به نوع اول یعنی TCP نیاز داریم.
مختصرا توضیح میدم فرق این دو تا چیه:

TCP که مخفف Transmission Control Protocol هستش یه تیکه از اطلاعات رو میفرسته و بعدش منتظر میشه ببینه تمام اطلاعات کامل رسیده یا نه و اطلاعاتی که نرسیدرو دوباره میفرسته و دوباره همین کارو تکرار می کنه. خوبیشم اینه که تمام اطلاعات مطمعنا فرستاده میشه و بدیشم اینه که سرعتش کمتره نسبت به UDP چون کلی اطلاعات اضافی ردو بدل میشه برای اینکه چک بشه تمام اطلاعات کامل منتقل شده یا نه.
UDP که مخفف User Datagram Protocol هست دقیقا برعکس TCP هست یعنی پشت سر هم اطلاعات فرستاده میشه و چک نمیشه که همش رسیده.

وقتی شما دارین یه فایل رو دانلود (Download) میکنید از TCP استفاده میشه چون باید تمام اطلاعات به طور کامل دریافت شه اما وقتی مثلا ویس چت (Voice Chat) میکنید از UDP استفاده میشه چون مهم اینه چیزی که الان گفته میشه برسه برای همینه بعضی اوقات صدا قطع و وصل میشه. در ضمن ترتیب رسیدن هم معلوم نیست تو UDP یعنی ممکنه وقتی abc فرستاده میشه acb دریافت بشه برای همینه بعضی اوقات تو ویس چت صدا روباتی یا شطرنجی میشه.
خوب دیگه برای این جلسه کافیه! جلسه دیگه یاد میگیریم چطوری بفهمیم یه برنامه چه اطلاعاتی رو داخل شبکه ردو بدل می کنه و بعد میریم سراغ یاهو! مسنجر که ببینیم چیا میفرسته و دریافت میکنه تا بتونیم اصل روبات ساختن رو شروع کنیم.



ميشه كوتاه يكي بگه كارش چيه اين همه نوشته رو تا 2 ساعت هم تموم نميشه

Zirmizi
2011/10/14, 12:26 AM
ميشه كوتاه يكي بگه كارش چيه اين همه نوشته رو تا 2 ساعت هم تموم نميشه

يعني پست من مستحق تشكر نبود؟!!!:(


ایول بر روی تشکر کلیک کنید خیلی باحال بود =))

يعني پست من مستحق تشكر نبود؟!!!:(

ATROAN
2011/10/14, 12:28 AM
بد نیست از سازنده هم یه نامی برده بشه
سازندش یاسر جان هستن که خیلی واقعا زحمت کشیدن این برنامرو رایگان در اختیار همه گذاشتن
اخرین نسخشم
1.3
اینم سایت خود یاسر جان

http://divarezazerani.blogfa.com/

Razagh
2011/10/14, 12:32 AM
خب عزيز من هنوز ازش استفاده نكردم كه تشكر بزنم صبر كن ببينم خوبه يا نه اگه خوب بود چشـــــــــــــــــــــــ ــــــم تشكر هم ميزنم
الان موندم كار اصليش چيه

Zirmizi
2011/10/14, 12:35 AM
خب عزيز من هنوز ازش استفاده نكردم كه تشكر بزنم صبر كن ببينم خوبه يا نه اگه خوب بود چشـــــــــــــــــــــــ ــــــم تشكر هم ميزنم
الان موندم كار اصليش چيه

خــــيــــلي باحالي:دی
چه اسپمي من دادم:o:D

ATROAN
2011/10/14, 12:36 AM
خب عزيز من هنوز ازش استفاده نكردم كه تشكر بزنم صبر كن ببينم خوبه يا نه اگه خوب بود چشـــــــــــــــــــــــ ــــــم تشكر هم ميزنم
الان موندم كار اصليش چيه
کار اصلیش پاسخ دادن به پی ام هاست
یه سری سوال از پیش تعریف شدرو خودت براش تعیین میکنی و جوابشم همین طور
مثلا براش مشخص میکنی که
اگه هر کسی بهت پی ام داد و گفت
hi
تو بگو salam
و این به طور خودکار این کارو انجام میده

Zirmizi
2011/10/14, 12:46 AM
کار اصلیش پاسخ دادن به پی ام هاست یه سری سوال از پیش تعریف شدرو خودت براش تعیین میکنی و جوابشم همین طور مثلا براش مشخص میکنی که اگه هر کسی بهت پی ام داد و گفت hi تو بگو salam و این به طور خودکار این کارو انجام میده razagh بگيرمت ميكشمت. داره از روبات استفاده ميكنه ميگه تشكر نميزنم من باهاش چت ميگنم خوب برام رو روبات گذاشته . بهتره نگم

شهریار جون
2011/10/14, 12:54 AM
رویه یاهو 11 کار می کنه ؟

Zirmizi
2011/10/14, 12:56 AM
رویه یاهو 11 کار می کنه ؟


دوست عزيز اين خودش يه برنامه ي ديگه اي هست.
دانلود كنيد متوجه ميشيد.
موفق باشيد.

Razagh
2011/10/14, 12:58 AM
به نظرم خرابه خوب جواب نميده خود دانيد دوستان

Zirmizi
2011/10/14, 01:39 AM
به نظرم خرابه خوب جواب نميده خود دانيد دوستان

دوست خوب خراب نيست.
شما خيلي از سوال ها و جواب ها رو بهش ياد ندادي .
انوقت اونم به طرف ميگه بلد نيستم:دی
بايد براش سوال و جواب تعيين كني...!

Razagh
2011/10/14, 01:46 AM
خودش داره هزاران هزار سوال و جواب داره