نمایش نتایج 1 تا 6 از 6

نام تاپیک: لاگین کردن در نرم افزار دسکتاپی

  1. #1

    لاگین کردن در نرم افزار دسکتاپی

    سلام دوستان
    نرم افزاری مثل یاهو مسنجر بعد از اینکه نام کاربری و پسورد رو چک میکنه (یا نرم افزار های دیگه) چطوریه عمل میکنن اونا که session ندارن

  2. #2

    نقل قول: لاگین کردن در نرم افزار دسکتاپی

    هر نرم افزاری روشی داره اما من زمان مسنجر 9 یک روبات نوشته بودم تبلیغات کارمو میکردم
    از TcpClient استفاده کردم و سوکت و همون اول که میخواستم به سرورش کانکت بشم یکسری داده هارو میفرستادم تا اجازه برقرارری و باز نگه داشتن ارتباط رو بده
    داده هاشو با اسنیفر چک کرده بودم شکل ثابتی داشت. اما همونم با آدرس
    https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login={0}&passwd={1}&cha l={2}
    لاگین میکردم یک توکن میداد بعد به آدرس
    https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token={0}
    توکنی که گرفته بودم میفرستادم در نهایت که اجازه میداد از طریق tcpclient یک ارتباط پایدار داشته باشم
    الان که پرسیدی برناممو باز کردم اینهارو برای مواردی که گفتم نوشته بودم


    public void Connect(string userName, string password)
    {
    binaryObject = new binaryDataClass();
    binaryObject.CompleteHttpRequest += new Action<List<string[]>>(binaryObject_CompleteHttpRequest);
    binaryObject.UserName = userName;
    binaryObject.UserPassword = password;
    string ip = getServerIpAddress();
    tc = new TcpClient();
    tc.Connect(ip, 5050);
    sendPacket(yahooService.Verify);
    listener = new Thread(new ThreadStart(initializeReciveData));
    listener.Start();
    }


    private void sendPacket(yahooService yc)
    {
    byte[] data = null;
    switch (yc)
    {
    case yahooService.Verify:
    data = binaryObject.getPacket(yahooService.Verify);
    break;
    case yahooService.Auth:
    data = binaryObject.getAuthPacket();
    break;
    case yahooService.AuthResp:
    data = binaryObject.getAutRespPacket();
    break;
    case yahooService.Chat:
    data = binaryObject.getChatPacket();
    break;
    case yahooService.ChatJoin:
    data = binaryObject.getChatJoinPacket(roomName, roomId, lobbyId);
    break;
    case yahooService.Message:
    if (addStyle)
    data = binaryObject.getMessagePacketWithStyle(destination UserName, sendMessage, messageFontName, messageFontSize);
    else
    data = binaryObject.getMessagePacketWithoutStyle(destinat ionUserName, sendMessage);
    break;
    }
    packetDataClass pk = convertBinaryToPacket.ConvertFrom(data);
    SendPacketEvent(pk);
    tc.Client.Send(data);
    }

    enum yahooService
    {
    None = 0x0,
    Logon = 0x1,
    Logoff = 0x2,
    IsAway = 0x3,
    IsBack = 0x4,
    Idle = 0x5,
    Message = 0x6,
    NewMail = 0xB,
    Ping = 0x12,
    Notify = 0x4B,
    Verify = 0x4C,
    AuthResp = 0x54,
    PersonalInfo = 0x55,
    Auth = 0x57,
    ExperimentalBrowser = 0x9A,
    LoginUnknown2 = 0xEF,
    BuddyUpdate = 0xF0,
    List = 0xF1,
    Chat = 0x96,
    ChatJoin = 0x98,
    ChatExit = 0x9B,
    Comment = 0xA8,
    ChatLogout = 0xA0
    }



    public byte[] getPacket(yahooService ys)
    {
    byte[] data = new byte[20];
    for (int i = 0; i < 20; i++)
    data[i] = 0;
    data[0] = Convert.ToByte('Y');
    data[1] = Convert.ToByte('M');
    data[2] = Convert.ToByte('S');
    data[3] = Convert.ToByte('G');
    setPacketVersion(ref data);
    data[11] = Convert.ToByte(ys);
    setSessionId(ref data);
    if (ys == yahooService.AuthResp)
    {
    setStatus(ref data);
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(string.Forma t(
    "https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login={0}&passwd={1}&cha l={2}",
    UserName, UserPassword, ChallengeString));
    HttpWebResponse response = null;
    response = (HttpWebResponse)request.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream());
    string reciveString = sr.ReadToEnd();
    string[] splitedReciveString = reciveString.Split(new char[] { '\r', '\n' });
    httpRequestData.Add(new string[] { splitedReciveString[0], null });
    for (int a = 1; a < splitedReciveString.Length; a++)
    if (!string.IsNullOrEmpty(splitedReciveString[a]))
    httpRequestData.Add(new string[]{
    splitedReciveString[a].Substring(0, splitedReciveString[a].IndexOf('=')),
    splitedReciveString[a].Substring(splitedReciveString[a].IndexOf('=') + 1)});
    tokenString = httpRequestData.Single(a=>a[0]=="ymsgr")[1];
    request = (HttpWebRequest)HttpWebRequest.Create(string.Forma t(
    "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token={0}", tokenString));
    response = (HttpWebResponse)request.GetResponse();
    sr = new StreamReader(response.GetResponseStream());
    reciveString = sr.ReadToEnd();
    splitedReciveString = reciveString.Split(new char[] { '\r', '\n' });
    httpRequestData.Add(new string[] { splitedReciveString[0], null });
    for (int a = 1; a < splitedReciveString.Length; a++)
    if (!string.IsNullOrEmpty(splitedReciveString[a]))
    httpRequestData.Add(new string[]{
    splitedReciveString[a].Substring(0, splitedReciveString[a].IndexOf('=')),
    splitedReciveString[a].Substring(splitedReciveString[a].IndexOf('=') + 1)});
    crumbString = httpRequestData.Single(a=>a[0]=="crumb")[1];
    Ystring = httpRequestData.Single(a=>a[0]=="Y")[1];
    Tstring = httpRequestData.Single(a=>a[0]=="T")[1];
    string crumbChallengeString = crumbString + ChallengeString;
    MD5 m = MD5.Create();
    yahooHash = Convert.ToBase64String(m.ComputeHash(System.Text.E ncoding.ASCII.GetBytes(crumbChallengeString))).Rep lace("+", ".").Replace("/", "_").Replace("=", "-");
    CompleteHttpRequest(httpRequestData);
    }
    return data;
    }





  3. #3

    نقل قول: لاگین کردن در نرم افزار دسکتاپی

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

  4. #4

    نقل قول: لاگین کردن در نرم افزار دسکتاپی

    بطور مشخص من روی سرویس های وبلاگ کار نکردم
    اما الان که شما فرمودین سایت blogfa رو نگاه کردم سیستم لاگینشون از طریق یک صفحه html بود یعنی شما session و کوکی دم دستته
    از طریق وب سرویس هم میتونی اقدام کنی مثل همون یاهو توکن بدی و سیستم لاگین عادیتم داشته باشی
    منطقی همینه که شما از ابزار مناسب و موجود استفاده کنی
    مشکلی یا محدودیتی برای استفاده از کوکی و سشن دارید؟

  5. #5

    نقل قول: لاگین کردن در نرم افزار دسکتاپی

    نقل قول نوشته شده توسط am_al_59 مشاهده تاپیک
    بطور مشخص من روی سرویس های وبلاگ کار نکردم
    اما الان که شما فرمودین سایت blogfa رو نگاه کردم سیستم لاگینشون از طریق یک صفحه html بود یعنی شما session و کوکی دم دستته
    از طریق وب سرویس هم میتونی اقدام کنی مثل همون یاهو توکن بدی و سیستم لاگین عادیتم داشته باشی
    منطقی همینه که شما از ابزار مناسب و موجود استفاده کنی
    مشکلی یا محدودیتی برای استفاده از کوکی و سشن دارید؟
    با کوکی و سشن مشکلی ندارم ولی مگه امکان استفاده از اینا توی برنامه های C#‎‎‎‎ وجود داره؟؟؟؟؟
    حرف تاکن هم شد؛ من تا حالا فقط از سشن استفاده کردم. احتمالا تاکن منحصر به فرده درسته؟؟؟ موضوعش چیه؟؟؟
    به کلمه وبلاگ هم توجه نکنید
    اصل منظورم یک اپلیکیشن دسکتاپ برای وبسایتم هست....

  6. #6

    نقل قول: لاگین کردن در نرم افزار دسکتاپی

    token یک چیزی مثل امضا یا عبارت یکتا هست مثل همون ای دی من فقط از این مواردش استفاده کردم اگر معانی و کاربردهای دیگه ای داشته باشه من اطلاعی ندارم
    راستش من اینو نفهمیدم
    1- شما یک نرم افزار دسکتاپ داری میخای به یک وبسایت متصل بشی؟ اگر اینه که وب سایت با asp php یک چیزی نوشته شده و مطابق قواعد همون کارهای لاگین رو انجام میده شما فقط باید پیروی کنی مشکلی برای session , cookie نیست
    2- شما یک سایت داری میخوای ملت با desktop app کانکت بشن که خوب اینم مشکلی نیست شما هم میتونی از session , cookie استفاده کنی اما فکر کنم راحت تر باشه یک وب سرویس بزاری که محتویات رو دریافت کنه در این روش شما عملیات تشخیص هویت رو میتونی از طریق یک httpRequest انجام بدی و یک عبارت یکتا رو بعنوان توکن بدی به درخواست کننده و از طریق وب سرویس محتوی رو همراه توکن بگیری و ادامه موارد

تاپیک های مشابه

  1. سوال در مورد set کردن gateway نرم افزار netsupport manager
    نوشته شده توسط bitaaa در بخش شبکه و Networking‌
    پاسخ: 5
    آخرین پست: شنبه 05 مهر 1393, 09:33 صبح
  2. سوال: Share کردن یک نرم افزار
    نوشته شده توسط hani_prog در بخش شبکه و Networking‌
    پاسخ: 2
    آخرین پست: دوشنبه 24 فروردین 1388, 00:03 صبح
  3. هماهنگ کردن رزولوشن نرم افزار با مانیتور
    نوشته شده توسط سيد مجتبي هاشمي در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 14
    آخرین پست: سه شنبه 18 فروردین 1388, 23:10 عصر
  4. سوال: عمومی کردن یک نرم افزار با دیتابیس
    نوشته شده توسط thelastphoenix در بخش تولید و توسعه برنامه های Setup و Install
    پاسخ: 0
    آخرین پست: پنج شنبه 08 اسفند 1387, 13:02 عصر
  5. کار کردن با نرم افزار MapGuide در php
    نوشته شده توسط roya2002_80 در بخش PHP
    پاسخ: 4
    آخرین پست: دوشنبه 27 آبان 1387, 12:32 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •