PDA

View Full Version : 17 YMSG protocol برای سی شارپ



debugger
جمعه 07 آبان 1389, 22:35 عصر
چگونه میتوان از 17 YMSG protocol در سی شارپ استفاده کرد ؟

چطور می توان برنامه ای نوشت که وارد روم های یاهو شده و قادر به ارسال پیام باشد

از کجا باید شروع کرد ؟

ایا کامپوننت خاصی دارد ؟

dll YMSG protocol17 اینو از کجا باید دانلود کنم ?

هر کسی پایه هست ابن پروژه را با هم شروع کنیم ؟؟؟

Amir Oveisi
شنبه 08 آبان 1389, 01:02 صبح
این نمونه با VB .NET هست
http://www.codeproject.com/KB/vb/YCC_Trainer.aspx
فکر کنم بتونین ازش ایده بگیرید

debugger
شنبه 08 آبان 1389, 09:00 صبح
این سورس را من قبلا معرفی کرده بودم ولی مشکل اینجاست که اصلا کار نمی کنه و فقط برای لاگین کردن هست

لاگین هم نمیشه . هیچ اروری هم نداره

debugger
یک شنبه 09 آبان 1389, 14:13 عصر
چرا کسی جلو نمیاد ؟؟ :کف:

بابا ترس نداره که :قهقهه: همیشه که دیتا بیس نمیشه

مطمئنم vb6 کارایی که بعدا به سی شارپ گرویدند (و تو این تالار هم کم نداریم) همشون بلدند . چون sample برای vb6 زیاده

razavi_university
یک شنبه 09 آبان 1389, 15:05 عصر
Yahoo Protocol Tutorial (YMSG 12) (http://ycoderscookbook.com/tutorials/index.html)

Yahoo! Messenger IM SDK User Guide (http://developer.yahoo.com/messenger/guide/)

dr_jacky_2005
یک شنبه 09 آبان 1389, 15:09 عصر
چگونه میتوان از 17 YMSG protocol در سی شارپ استفاده کرد ؟

چطور می توان برنامه ای نوشت که وارد روم های یاهو شده و قادر به ارسال پیام باشد

از کجا باید شروع کرد ؟

ایا کامپوننت خاصی دارد ؟

dll YMSG protocol17 اینو از کجا باید دانلود کنم ?

هر کسی پایه هست ابن پروژه را با هم شروع کنیم ؟؟؟
اگه میخواین وارد رووم بشه و پیغام بده،نمیشه،چون رووم های یاهو کپچا داره.
شما اول تلاش کن ببین چه جوری اون کبچا رو رد کنی یا کدی که نمایش میده رو نشون کاربر انسان بدی،که طرف کپچا رو بزنه،بعد برنامت شروع کنه به پیغام دادن!

debugger
یک شنبه 09 آبان 1389, 21:30 عصر
dr_jacky_2005 (http://barnamenevis.org/forum/member.php?u=62126) اقا ما هنوز نتوانستیم لاگین بشیم . نه توانستیم پیام مستقیم ارسال کنیم . نه توانستیم لیست روم ها را بیاریم . و ....

حالا شما میای میگی به فکر کد امنیتی باش !!!!!!!! طبیعتا وقتی به اون مرحله برسیم کد امنیتی را برای کاربر لود می کنیم تا خودش دستی وارد کنه

شاید شما تا این مرحله پیش رفتین خوشحال میشوم این حقیر را راهنمایی بفرمائید

debugger
یک شنبه 09 آبان 1389, 21:32 عصر
Yahoo Protocol Tutorial (YMSG 12) (http://ycoderscookbook.com/tutorials/index.html)

Yahoo! Messenger IM SDK User Guide (http://developer.yahoo.com/messenger/guide/)

مشکل اینجاست که این مطالب بسیار مطالب پیش پا افتاده هستند . مشکل کم آوردن کد در سی شارپ را داریم

مثل اینکه اصلا و ابدا نمیشه همچین برنامه ای با سی شارپ نوشت

یه چیزی مثل این میخواهیم

http://barnamenevis.org/forum/showpost.php?p=993760&postcount=42

si6arp
دوشنبه 10 آبان 1389, 00:37 صبح
پ.خ بده ببینیم چکار میتونیم برات بکنیم

ali.tohidi
دوشنبه 10 آبان 1389, 01:32 صبح
به نظر من اول باید ببینیم چت کلاینت های دیگه چجوری کار می کنن
اینکه با چه زبونی نوشته شدن تا بتونیم اونها رو Decompile کنیم
من با زبون VB6 تونستم ای دی لاگین کنم اما C#‎ نشده یعنی کدی که کمکم کنه رو پیدا نکردم
خوب حالا میدونین چجوری میشه فهمید یه برنامه با چه زبونی نوشته شده؟
چت کلاینت:
Yahoo Messenger
CheetaChat
Yahsmosis
Y!Epic
Yazak
Y!Supra
YahElite

debugger
دوشنبه 10 آبان 1389, 09:27 صبح
اینکه بدونیم این برنامه هایی که معرفی کردین با چی نوشته شده به چه درد ما میخوره ؟ شما میخوای decompile کنید و بعد به سی شارپ بازنویسی کنید ؟ شما فکر می کنید Decompile به همین راحتی هست . ثانیا نیازی به دکامپایل نیست . نمونه کد برای vb6 و دلفی خیلی خیلی زیاده از روی انها الهام بگیرید

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

dr_jacky_2005
دوشنبه 10 آبان 1389, 09:34 صبح
اینکه بدونیم این برنامه هایی که معرفی کردین با چی نوشته شده به چه درد ما میخوره ؟ شما میخوای decompile کنید و بعد به سی شارپ بازنویسی کنید ؟ شما فکر می کنید Decompile به همین راحتی هست . ثانیا نیازی به دکامپایل نیست . نمونه کد برای vb6 و دلفی خیلی خیلی زیاده از روی انها الهام بگیرید

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

دوستان هرکی توو این زمینه دیکد،دیکرایپ،کرکینگ،دزدی، خراب کردن خانه،و امثال اینها مشکل داره،پیغام بده...
بش توو پیغام کمک کنم.
چون اینجا بزارم،مدیرا پوستم رو میکنن.
بعد که پیغام رو خوند،بیاد همین پست من رو تشکر کنه D:

debugger
دوشنبه 10 آبان 1389, 11:17 صبح
اقا هر کمکی از دست بر میاد دریغ نکن . من متوجه منظور شما نشدم . ولی در رابطه با عنوان تاپیک اگر می توانید کمک کنید

Amir Oveisi
سه شنبه 11 آبان 1389, 17:19 عصر
این نمونه رو ببینید. با VB .NET نوشته شده
http://ycoderscookbook.com/code/YCC_Yahoo_Bot_Maker.html

debugger
سه شنبه 11 آبان 1389, 21:01 عصر
امیر جان نمونه ی خوبی بود . ولی در رابطه با ایجاد ایدی یاهو بود

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

یعنی ما میخواهیم مسنجر بنویسیم تا یک روبات وب : مثال بالا نمونه بسیار ایده ال برای یک روبات بود که می تونه صفحات اینترنتی را فقط پر کنه و submit کنه

بنده لینک های زیر را پیدا کردم .

http://www.adrensoftware.com/tools/yahoo_v16_protocol.php

http://kay21s.blog.com/2010/06/05/join-a-chat-room-in-ymsg-17/

http://www.viprasys.org/vb/f33/vb-net-c-ymsg-login-noobs-184078/

http://code.google.com/p/yahsmosis/wiki/YMSG

متاسفانه دوستان وی بی 6 کار یا دلفی کار کم لطفی می کنند . اگر کمی همت کنند میشه با سی شارپ هم نوشت

razavi_university
چهارشنبه 12 آبان 1389, 10:28 صبح
ما میخواهیم با پروتکل ارسال و دریافت متن و .... در یاهو کار کنیم .
پروژه YCC Trainer (http://ycoderscookbook.com/code/YCC_Trainer.html)دقیقا برای همین کار نوشته شده،


YCC Trainer is a program that can be used to better understand how the Yahoo! Messenger protocol works.
متاسفانه این کد هم با VB.Net 2005 نوشته شده، برای عملیاتش هم از E-F_YMSGLogin2.dll (http://ycoderscookbook.com/files/E-F_YMSGLogin2.dll) استفاده می کنه. یک محیط Debug داره و کل پکت ها و اطلاعات ارسالی و دریافتی رو هم میتونه نشون بده.

متاسفانه VS این DLL رو قبول نمی کنه، دلیلش رو نمیدونم
(برنامه رو نتونستم اجرا کنم هنگام Login مشکل لود همین DLL رو داشت)

debugger
چهارشنبه 12 آبان 1389, 11:08 صبح
ممنونم از معرفی و تست برنامه منم بررسی می کنم و نتیجه را همین جا اعلام می کنم . فقط یه خواهشی دارم که تاپیک را رها نکنید تا به نتیجه برسیم . چون تا به حال در این مورد در زبان سی شارپ برنامه ای نوشته نشده است

razavi_university
چهارشنبه 12 آبان 1389, 12:44 عصر
یک بازدید کننده این پیغام رو در صفحه codeproject این برنامه گذاشته!!!

The protocol used by this YCC Trainer is no longer supported by Yahoo. It will never work. So, forget about this project.

Amir Oveisi
چهارشنبه 12 آبان 1389, 14:36 عصر
این کار رو با جاوا انجام دادن، تست کنید ببینین اگه به درد میخوره میشه از library اون استفاده کرد و یا به #C تبدیلش کرد
http://sourceforge.net/projects/jymsg9/files/jymsg9/v0.64%2C%20Alpha%20release/

debugger
چهارشنبه 12 آبان 1389, 15:38 عصر
این کار رو با جاوا انجام دادن، تست کنید ببینین اگه به درد میخوره میشه از library اون استفاده کرد و یا به C#‎‎ تبدیلش کرد
http://sourceforge.net/projects/jymsg9/files/jymsg9/v0.64%2C%20Alpha%20release/

مثل اینکه تارگت از روی سایت پاک شده هر کاری کردم دانلود نشد

تنها سورس موجود دز این زمینه برای لاگین کردن که از زبان وی بی 6 به سی شارپ بازنویسی شده


Mojo/All YMSG 16 decryption credit goes to Martin Johnson
of www.ExplicitStudios.com (http://www.ExplicitStudios.com) essence this is a C#‎ version of his vb6 release...

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

سورس بسیار جالبی هست حتما دانلود کنید

Amir Oveisi
چهارشنبه 12 آبان 1389, 18:06 عصر
دانلود کردم اما exception میده نمیتونه host رو پیدا کنه. مطمئنی که host ای که تو برنامه هست درسته؟

Amir Oveisi
چهارشنبه 12 آبان 1389, 18:08 عصر
مثل اینکه تارگت از روی سایت پاک شده هر کاری کردم دانلود نشد

نه باید با آنتی فیلتری چیزی بری که IP ایران نشناستت، ایران رو تحریم کرده.
اینو بگیر تست کن فکر کنم به درد بخوره

Amir Oveisi
چهارشنبه 12 آبان 1389, 18:37 عصر
تو برنامه ای که گداشتی اگر host رو به scs.msg.yahoo.com تغییر بدی ظاهرا connect میشه و دیگه exception نمیده. این Host رو از رو همون برنامه جاوا برداشتم.

debugger
چهارشنبه 12 آبان 1389, 22:48 عصر
بله ظاهرا که exception رفع شده . ولی فکر کنم کانکت نشده . اگر بشه یک پیام به یک ایدی فرستاد میشه صحت کانکت بودن را بررسی کرد

razavi_university
چهارشنبه 12 آبان 1389, 23:25 عصر
کمی در قسمت مستندات توسعه یاهو (http://developer.yahoo.com/messenger/guide/index.html) گشت زدم، نتیجه مکاشفات:
پروتکل فعلی که yahoo messenger ازش استفاده می کنه YMSG 11 است. هرچند سرور یاهو ورژن 10 رو هم قبول می کنه ولی ورژن های قبل از اون دیگه پشتیبانی نمیشه.
تقریبا تمامی سورس های موجود و مستندات اونها با YMSG 9 هستند. تقریبا روش کار پروتکل ورژن 9 با 10 و 11 زمین تا آسمون متفاوته به همین دلیل نمیشه از سورس های موجود هیچ استفاده ای کرد و خودمون باید دست به کار بشیم.
من یکم روش کار کردم و تونستم LogIn کنم، فعلا دارم روی کار با Session و دریافت Contact List کار می کنم، انشاا... کامل شد میگذارمش اینجا واسه تست

YMSG-9 (http://libyahoo2.sourceforge.net/ymsg-9.txt)

debugger
پنج شنبه 13 آبان 1389, 13:48 عصر
منم روی لاگین متمرکز شدم . انشاالله بتونیم یک نمونه کاملتر از دیگر زبان ها ارائه کنیم. با تشکر از همه دوستان

راستی دوستان دیگر هم اگر نظری تجربه ای و ... دارند لطفا دریغ نفرمایند تا این تاپیک را به نتیجه برسونیم

13601360
پنج شنبه 13 آبان 1389, 17:20 عصر
می تونید از کتابخونه های مسنجر اوپن سورس pidgin هم استفاده کنید

http://developer.pidgin.im/viewmtn/revision/browse/cfca82f1fee3fa6401caf10cafe80caa073cc9d9/libpurple/protocols/yahoo

Louai_M
جمعه 14 آبان 1389, 17:21 عصر
با سلام
یه سری کد که وقت نکردم چک کنم:
ارسال پیام

#!perl
use Net::YMSG;
use strict;

my $yahoo = Net::YMSG->new;
$yahoo->id('yahoo_id');
$yahoo->password('password');
$yahoo->login or die "Can't login Yahoo!Messenger";

$yahoo->send('recipient_yahoo_id', 'Hello World!');
__END__

تغییر وضعیت
#!perl
use Net::YMSG;
use strict;
use constant IN_BUSY => 1;

my $yahoo = Net::YMSG->new(
id => 'yahoo_id',
password => 'password',
);
$yahoo->login or die "Can't login Yahoo!Messenger";;

$yahoo->change_state(IN_BUSY, q{I'm very busy now!});
sleep 5;
__END__
مخفی کردن
#!perl
use Net::YMSG;
use strict;

my $yahoo = Net::YMSG->new(
id => 'yahoo_id',
password => 'password',
);
$yahoo->login or die "Can't login Yahoo!Messenger";;

$yahoo->invisible();
__END__
دریافت خروجی
#!perl
use Net::YMSG;
use strict;

my $yahoo = Net::YMSG->new(
id => 'yahoo_id',
password => 'password',
);
$yahoo->set_event_handler(new ToStdoutEventHandler);
$yahoo->login or die "Can't login Yahoo!Messenger";
$yahoo->start;



package ToStdoutEventHandler;
use base 'Net::YMSG::EventHandler';
use strict;

sub ChangeState {}
sub GoesOffline {}
sub GoesOnline {}
sub UnImplementEvent {}

sub ReceiveMessage
{
my $self = shift;
my $event = shift;
printf "%s: %s\n", $event->from, $event->body;
}
__END__
اتصال به سرور یاهو
#!perl
use Net::YMSG;
use strict;

my $yahoo = Net::YMSG->new(
pre_login_url => 'http://edit.my.yahoo.co.in/config/ (http://edit.my.yahoo.co.in/config/)',
hostname => 'cs.yahoo.co.in',
);
$yahoo->id('yahoo_id');
$yahoo->password('password');
$yahoo->login or die "Can't login Yahoo!Messenger";

$yahoo->send('recipient_yahoo_id', 'Namaste!');
__END__
اتصال به روم ه (اتاقها)
my $yahoo = Net::YMSG->new(
id => 'yahoo_id',
password => 'password',
);
$yahoo->login or die "Can't login Yahoo!Messenger";;
# Join chat room C<$chatroom>
my $msg = $yahoo->pre_join();
my $msg=$yahoo->join_room($chatroom,$chatroomcode);
خروج از چت روم
$yahoo->logoffchat();
__END__

لطفاً بعد از تست جوابش را اعلان کنید.

ostovarit
جمعه 14 آبان 1389, 19:59 عصر
منم قبلا در باره این موضوع تاپیک زدم که نتیجه ای نرسید ... به محض اینکه خلوت بشم کمک میکنم تا این تاپیک به سرنوشت تاپیک خودم دچار نشه ... بهتون پیام خصوصی میدم و هر بخشی که لازم بود روش تحقیق بشه بگید من جستجو و تحقیق میکنم ...

debugger
شنبه 15 آبان 1389, 20:36 عصر
منم قبلا در باره این موضوع تاپیک زدم که نتیجه ای نرسید ... به محض اینکه خلوت بشم کمک میکنم تا این تاپیک به سرنوشت تاپیک خودم دچار نشه ... بهتون پیام خصوصی میدم و هر بخشی که لازم بود روش تحقیق بشه بگید من جستجو و تحقیق میکنم ...

1 - طریقه لاگین شدن

2 - طریقه ارسال پیام به یک ایدی دیگر

3 - طریقه وارد شدن به روم ها

این 3 تا مهمترین هاش هستند

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

razavi_university
سه شنبه 25 آبان 1389, 15:03 عصر
یکم روی این موضوع کار کردم و نحوه ارتباط با سرور یاهو رو در اوردم، ولی نتونستم به صورت کامل باهاش ارتباط برقرار کنم، هرچند روشم کاملا درست بود.(دلیلش رو درست نمی دونم:متفکر:) برآنشدم تا حداقل اطلاعاتی که در این زمینه پیدا کردم رو در اختیار سایر دوستان قرار بدم (به همراه سورس) تا سایر دوستانی که قصد ادامه کار را دارند راهگشای انها باشد.

yahoo در پرتکل جدید از روشOpen Authorization یا به اختصار OAuth استفاده می کنه. و اگر کل این ارتباط رو بخواهیم در نظر بگیریم به شکل زیر عمل می کند
http://1.xm.comuf.com/images/1cb608a30fc2.png
در ادامه هر کدام از این ارتباط با سرورهای Yahoo رو توضیح می دهم و اطلاعاتی که شما ارسال می کنید و اطلاعاتی که yahoo در اختیار شما قرار می دهد.

کمی مطالعه در مورد OAuth برای ادامه کار مورد نیاز است :
OAuth (from wikipedia) (http://en.wikipedia.org/wiki/OAuth)
oauth.net/documentation (http://oauth.net/documentation/getting-started/)

razavi_university
سه شنبه 25 آبان 1389, 21:28 عصر
همونطوری که خوندید، در یک ارتباط OAuth شما نیاز به ConsumerKey ، SecretKey وUser و Password دارید و user , pass که همان YahooID و Pass شماست. برای کلید مشتری باید در قسمت برنامه نیوسی yahoo ثبت نام کنید تا این کلید را به شما بدهد.

http://l.yimg.com/a/i/ydn/ydn-logo_1.gif (http://developer.yahoo.com/)

1- ابتدا وارد yahoo developer Network (http://developer.yahoo.com/) شوید.

2- روی MyProject کلیک کنید و در صفحه ای باز می شود، NewProject را بزنید.

http://img.x10.mx/images/2010/11/16/24920.jpg

3- در این قسمت گزینه دوم را انتخاب کنید

http://developer.yahoo.com/messenger/guide/images/Tutorial1Figure3.png

4- سپس مطالبی رو مورد برنامه تون در فیلدها درج کنید.(یک دومین رو هم باید برای برنامه Verify کنید)

5-در قسمت پایینی باید دسترسی برنامه تون به قسمتهای مختلف yahoo رو مشخص کنید. در قسمت yahoo messenger دسترسی Read/write را مشخص کنید.

6- در آخر وقتی Save رو بزنید اگر موارد بالا رو درست رعایت کرده باشید، اطلاعات مورد نیاز رو بهتون میده

ostovarit
سه شنبه 25 آبان 1389, 22:45 عصر
همونطوری که خوندید، در یک ارتباط OAuth شما نیاز به ConsumerKey ، SecretKey وUser و Password دارید و user , pass که همان YahooID و Pass شماست. برای کلید مشتری باید در قسمت برنامه نیوسی yahoo ثبت نام کنید تا این کلید را به شما بدهد.

با تشکر از مطلب مفیدی که گذاشتی ...
من کلید رو گرفتم ولی دید مشخصی نسبت به این قضیه لاگین شدن و غیره ندارم ... الان به dll نیاز دارم ؟ که این کی رو بهش بدم و کارهای دیگه یا باید از طریق url کانکت شدن و ارسال و دریافت انجام شه؟؟؟

razavi_university
سه شنبه 25 آبان 1389, 23:28 عصر
من یک کتابخانه برای اینکار اماده کرده ام ولی هنوز کامل نیست (به صورت DLL هم میتونم منتشر کنم)

در این روش کل ارتباط بوسیله Request های تحت وب است

razavi_university
سه شنبه 25 آبان 1389, 23:51 عصر
برای ارتباط با yahoo ابتدا بایستی یک درخواست Token به یاهو بفرستیم برای اینکار به چند چیز نیاز داریم:



آدرسی که به ان بفرستیم
userID
pass
APIKey(ConsumerKey)


https://login.yahoo.com/WSLogin/V1/get_auth_token

oauth_consumer_key string
login string
passwd string

که این فیلدها باید داخل URL قرار گیرند و بوسیله کد نویسی به سرور ارسال شوند و نتیجه برگردانده شود، ولی اگر عجله دارید میتونین موارد رو در URL زیر جایگذاری کنید و در WebBrowser اجرا کنید تا نتیجه را ببینید:



https://login.yahoo.com/WSLogin/V1/get_auth_token?&login=username&passwd=mypassword&oauth_consumer_key=consumerkey

اگر همه چیز درست باشد، یاهو چوابی مشابه زیر برای شما ارسال می کند، که این RequestToken در مرحله بعدی استفاده می شود.



RequestToken=jkdjkljsdflkjsfkjasldfkjsklfj02394239 04jsdklfjklsdfjlasdkf

ostovarit
جمعه 05 آذر 1389, 20:19 عصر
مطلب جدیدی نیست ولی شاید کمک کنه:
http://www.codeproject.com/KB/cs/Delicious-OAuth-API.aspx#2
http://www.codeproject.com/KB/aspnet/yahoo-contact-reader.aspx
http://developer.yahoo.com/dotnet/howto-bbauth_cs.html
http://fireeagle.yahoo.net/developer/documentation/getting_started


من یک کتابخانه برای اینکار اماده کرده ام ولی هنوز کامل نیست (به صورت DLL هم میتونم منتشر کنم)

در این روش کل ارتباط بوسیله Request های تحت وب است



که این فیلدها باید داخل URL قرار گیرند و بوسیله کد نویسی به سرور ارسال شوند و نتیجه برگردانده شود، ولی اگر عجله دارید میتونین موارد رو در URL زیر جایگذاری کنید و در WebBrowser اجرا کنید تا نتیجه را ببینید



درسته در نمونه هایی هم که لینکش رو گذاشتم همه به صورت Request هست ولی من که نمیخوام از بروزر استفاده کنم و میخوام یک اپلیکشن مثل یاهو مسنجر داشته باشم ... چطور این کار رو بکنم یعنی این Request ها رو چطور بفرستم و چطور متناسب باپاسخی که در قبال اون Request میگیرم واکنش نشون بدم ؟ ....

امکانش هست یک کد لاگین با روش فوق بزارید یا اگر کتابخونه ای که گفتید اماده شده آپلود کنید؟

با تشکر

================================================== ===

مثل اینکه تارگت از روی سایت پاک شده هر کاری کردم دانلود نشد


فایل های روی هاست sourceforge با آی پی ایران قابل دانلود نیست از طریق http://www.iranrobocup.com/sourceforge/ اقدام کنید

ostovarit
جمعه 12 آذر 1389, 17:21 عصر
چرا این تاپیک به فراموشی سپرده شد ...
دوستان مطلب جدید، پاسخ سوالات، راه حل؟!
........................

ali.tohidi
شنبه 30 بهمن 1389, 12:55 عصر
جمع بندی نمی کنین؟
لینک برنامه ها، کارایی که کردین یا نکردین
اینکه الان می خواین چیکار کنین.....
قرار بود در مورد #C باشه یهو زدین تو نخ vb جاوا!!!!!!!!

si6arp
دوشنبه 05 اردیبهشت 1390, 19:55 عصر
من نمیدونم اگه مدیران میبینن که این تاپیک به بنبست رسیده چرا نمیدندنش.
اگه نه که یه کمکی چیزی....
همیطوری که نمیشه.
مدیریت خیلی ضعیفه............

debugger
سه شنبه 03 خرداد 1390, 18:15 عصر
نمیشه دات نت برای این کار هیچ تعریفی نداره

haghft
چهارشنبه 18 خرداد 1390, 19:17 عصر
آقا پروتکل 17 هم داره از بین میره و پروتکل 18 اومده روکار.این یه کلاسه برای لاگین شدن و دستیابی به کانتکت ها.خواهشا بیایم با هم بگردیم نحوه ارسال پیام و رفتن تو رومو بقیه چیزاشم کشف کنیم من به شخصه خیلی محتاجشم.

haghft
یک شنبه 22 خرداد 1390, 18:36 عصر
کامپاننت YMSGGo رو استفاده کردم ولی باز مشکل داره کسی پروتکل های یاهو رو بلد نیست؟

saman6384
یک شنبه 22 خرداد 1390, 19:58 عصر
من اینو یکی دوماه پیش از همین فاروم دانلود کردم با sample هاش!
با اینم نشده کاری کنید؟

haghft
یک شنبه 22 خرداد 1390, 20:06 عصر
اين همون كلاسيه كه من گذاشتم من فراتر از اين كارهارو ميخام من ميخام يه اسپمر و ادر و ربات باهاش بنويسم براي همين پروتكل هاي ياهو رو ميخام

djahang
سه شنبه 21 تیر 1390, 15:16 عصر
با عرض سلام من برنامه نویس سی شارپ هستم ولی آخرش نتونستم با ymsg کار کنم بعدش رفتم سراغ وی بی با اون تونستم کامل کار کنم و روبوت بنویسم
امروز که دوباره خواستم با روبوت کانکت بشم دیدم روبوت لینک chapta رو نمی ده و پروتکل عوض کرده .حالا باید با اسنیف کردن پکت ها دوباره پروتوکل رو به دست بیاریم و با winsock ی دونه دیگه براش بنویسیم کی می تونه اطلاعات به دست اومده ار اسنیف رو decode کنه؟

djahang
چهارشنبه 22 تیر 1390, 08:44 صبح
تنها راه همینه که من توضیح دادم کسی نمی تونه decode کنه؟

securefc
سه شنبه 07 شهریور 1391, 04:09 صبح
من به شدت دنبال برنامه ای هستم که بشه باهاش فقط مسیج فرستاد فقط تا همینجاش برام کافیه خیلی گشتم واسه سی شارپ چیزی تو گوگل نیست در واقع بهترین سورسی که تا الان دیدم همین چیزی بود که یکی از بچه ها گذاشته بود من تست کردم دستی هاست رو به scs.msg.yahoo.com تغییر دادم اما از ایران وصل نشد بعد که vpn زدم و تست کردم دیدم که کانت شد. این جای شکرش باقیه من رو همین کار میکنم و به ارسال پیام میرسونمش. برای تست اینکه رفتار حال حاضر برنامه یاهو مسنجر رو ببینم شروع کردم به کپچر کردن پکت ها با wireshark باید بگم گه با ورژن ymsg 19 لوگین میکنه وجالب اینکه این برنامه که دوستمون گذاشته رو ورژن 10 هست پس این نشون میده هنوز این ورژن کار میکنه. به هر حال این پروتوکل ymsg رو بستر tcp هست و یه نقشه کامل ازش پیدا کردم که تو این لینک میتونید ببینید http://code.google.com/p/yahsmosis/wiki/YMSG .عکس زیر کاملا نشون دهنده این نقشه هست و من این نقشه رو با پکتی که با wireshark گرفتم مقایسه کردم:


91957
خوب طبق این عکس 4 بایت اول مربوط به اسم پروتکل هست.
2 بایت بعدی مربوط به ورژن پروتوکل هست.
و به همین صورت که تو عکس مشحص شده بقیه هم مشخصه حالا من با پکتی که با wireshark کپچر کردم مقایسه کردم که میتونید در زیر ببینید:
تو عکس مقدار های هگز یه سریشون به int تبدیل کردم و بعضی ها هم به string یه سریشم که بایت هست کاریش نمیشه کرد اما خود عکس گویا هست:


قسمتی که رنگ آبی داره request هست و قسمتی که با رنگ قرمز مشخص شده response هست.


91958

1-مقدار استرینگ این 4 بایت اول میشه YMSGکه پروتکلمون هست
2-مقدار اینتیجراین 2 بایت میشه عدد 19 که ورژن پروتوکل رو مشخص میکنه
3-مقدار اینتیجر این 2 بایت هم عدد 0 هست
4-مقدار اینتیجر این 2 بایت هم سایز دیتا رو مشخص میکنه(دیتا همون چیزیه که تو کادر سبز رنگ مشحص کردم) که اینجا میشه عدد 24
5-این 2 بایت هم تایپ رو مشخص میکنه که میشه کاراکترW تو اون لینکی که بالا گذاشتم تایپ ها رو مشخص کرده تو عکس زیر یه سری ها رو گذاشتم براتون


91959






6-این 4 بایت هم معلوم کننده وضعیت شماست .دیدین وقتی که میخواین لوگین کنید مثلا تیک invisible رو میزنید و لوگین میکنید در واقع این قسمت از پکت میشه مقدار اینیجر 12 و مقدار هگز
31 32
7-این قسمت مربوط به session شماست اگر اهراز هویت شده باشین اینجا 0 نخواهد بود اینجا چون تازه میخواد اهراز هویت کنه در نتیچه مقدار 0 میفرسته

خوب از اینجا به بعد که تو کادر سبز رنگ مشخص شده مربوط به قسمت دیتا میشه
در واقع یوزر و پسورد و یا وقتی که میخواین به یکی مسیج بفرستین و یا بسیاری از کارهای دیگه تو این قسمت قرار میگیره اما به صورت فیلد فرستاده میشه که هر فیلد از یک key و یک value تشکیل شده و جدا کننده یا همون delimeter این دو هم مقدار هگز

c0 80
پس فرمت زیر رو به باد داشته باشید:

FieldNumber<Delimeter>Value<Delimeter>
برای اطلاعات بیشتر به قسمت data format لینکی که گذاشتم مراجعه کنید
خوب حالا با دانستن این اطلاعات ببینیم تو قسمت دیتا اولین پکت من چی فرستاده میشه:


91960

1-گفتیم این قسمت key هست پس با مقدار اینتیجر سرو کار داریم و مقدار اینتیجر 31 میشه عدد 1
2-این جدا کننده هست که کاری بهش نداریم شما در نظر بگیرین مثلا میشه کاراکتر : یا - یا هر چیز دیگه
3-حالا نوبت value یا مقدار هست که مقدار استرینگی هگز زیر

73 68 61 73 69 64 61 73 75 40 79 6d 61 69 6c 2e 63 6f 6d
میشه آیدی من که تازه ساختم واسه تست

shasidasu@ymail.com
4-و باز بعدش جداکننده قرار میگیره

خوب اینم قسمت دیتا ، حالا هر چیز دیگه هم ممکنه به قسمت دیتا اضافه بشه اما قاعده زیر حتما باید رعایت بشه


FieldNumber<Delimeter>Value<Delimeter>

برای اینکه بفهمیم شماره هر فیلد ممکنه مربوط به چی باشه به قسمت field numbers لینکی که گذاشتم مراجعه کنید عکسش رو پایین میتونید ببینید:


91961

همین طور که مشخص هست شماره 1 یعنی مقدارش یوزر نیم هست بقیه هم که قابل فهم هست

این کل ساختار پروتوکل YMSG یاهو هست هر request و response باید طبق این پروتکل باشه.

در ضمن هیچ oficial document از طرف یاهو بیرون داده نشده :ناراحت: چون خودش این پروتکل رو برای برنامش طراحی کرده و نمیخواد عمومی بشه همه اطلاعاتی که میبینید سایرین با reverse کردن پکت ها و روش های متفاوت دیگه مثل آزمون و خطا و بررسی پکت های ارسالی هست.
برای نمونه شما موقعی که یه پیام به یکی تو مسنجرتون میدین با wireshark پکت رو کپچر کنید و طبق همین قاعده که گفتم پیش برید اگر این چیزی که براتون گفتم رو متوجه بشید میتونید همون پکت رو بسازید و ارسال کنید
کل همه اینارو گفتم تا این موضوع به سرانجام برسه چون هیچ برنامه ای به زبان C#‎‎‎‎‎‎‎ ندیدم واسه این قضیه.
پس فعلا اولین قدم ما میشه کپچر کردن پکت لوگین شدن و عین همون رو طبق پروتوکل YMSG ساختن وارسال کردن اون.

من دارم رو همین برنامه کار میکنم.
اگر دقت کرده باشین فایل YMSG_cls.cs تو این پروژه هم داره همین پروتوکل رو پیاده سای میکنه.

برای نمونه به این قسمت دقت کنید



private string Assemble(int Length)
{
return "YMSG" + (char)0x0 + (char)16 + new string((char)0x0, 2) +
(char)(Length / 256) + (char)(Length % 256) + (char)0x0;
}



چقدر زیبا :تشویق: داره 10 بایت اول پکت رو که
پروتکل(YMSG)
ورژن(19)
وندور(0)
سایز دیتا(24)
هست رو میسازه
پس با دانستن همه اینها دیگه باید برنامه رو بنویسم بسم الله...

موفق باشید...


آهان داشت یادم میرفت سراغ api که خود یاهو میده و یکی از دوستان گذاشته نرید چون اون تحت پروتکل http هست و باهاش نمیتونید spam و یا بوت و از این جفنگیات بنویسید به شدت کنترل شده .
من تستش کردم به 3 تا همزمان فرستادم سریع مسیج ها رو بلاک میکنه و دیگه هیچ مسیجی به طرف نمیرسه علاوه بر این با این api شما هر ثانیه فقط یک پیام میتونید بفرستید.

دیگه واقعا موفق باشید:لبخند: