مشروع برنامج RAT || سوكت Asynchronous

تم تحميل الصفحة في 1,5001982 ثانية
مشروع برنامج RAT || سوكت Asynchronous

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
اذا كنت تريد ...

مثال على ... ال ResetEvent ..

تفضل ... :38:

C#:
Public Class SK
   

     Public EventRest As ManualResetEvent = New ManualResetEvent(False)
 

     Public Sub New(ByVal port As Integer)

      ' Do Something Here
     
      EventRest.WaitOne()
     
    End Sub

    Public Sub accept(ar As IAsyncResult)

      EventRest.Set()
         
      ' Do Something Here

    End Sub

End Class


كل الشكر لك على متابعتك للموضوع أخي الكريم.

نعم توقعت أنك تقصد هذة النقطة. هل من الممكن أن تشرح لماذا يجب علي أن أعمل waitone أو بالأحرى ما فائدتها بالضبط في برنامج متعدد العملاء؟ لأني لم أفهم لماذا نعطل الثريد لنستقبل أو نتحقق من أمر ما



كود:
Public Class SK
        
 
     Public Sub New(ByVal port As Integer)
 
      ' Do Something Here
              
    End Sub
 
    Public Sub accept(ar As IAsyncResult)
 
      If TcpListener.Pending Then   '--> none-blocking method
          
      ' Do Something Here
      
      End if
      
    End Sub
 
End Class
 
إنضم
19 يناير 2012
المشاركات
1,502
الإعجابات
1,514
النقاط
133
الإقامة
IRAQ
كل الشكر لك على متابعتك للموضوع أخي الكريم.

نعم توقعت أنك تقصد هذة النقطة. هل من الممكن أن تشرح لماذا يجب علي أن أعمل waitone أو بالأحرى ما فائدتها بالضبط في برنامج متعدد العملاء؟ لأني لم أفهم لماذا نعطل الثريد لنستقبل أو نتحقق من أمر ما



كود:
Public Class SK
       

     Public Sub New(ByVal port As Integer)

      ' Do Something Here
             
    End Sub

    Public Sub accept(ar As IAsyncResult)

      If TcpListener.Pending Then   '--> none-blocking method
         
      ' Do Something Here
     
      End if
     
    End Sub

End Class


نستخدم ال Event ...

لتسلسل ... العمليات ...

في ... Asynchronous Programing ...

_____+


:38:
 

Spawner Freezo

.:: مُساعد مُشرف أقسام البرمجة ::.
rankrank
إنضم
12 أبريل 2015
المشاركات
301
الإعجابات
447
النقاط
63
العمر
20
الإقامة
Morocco
هذا مشاركتي مع الأخ في PM، هذا كان للكود #C، لكنه لم يعد موجد و لكن يمكن تطبيقه على VB.NET أيضاً

كود:
So I will be reviewing C# Async RAT -> Client/ClientSocket.cs ( I really don't have time, but I made a few points to consider, it can be applied on VB.NET as you know )

• The naming should be more understandable, I know that "S" refers to Socket, but just for a better Readability.
• I really don't understand the size of the buffer, the size is based on what, what makes you think that 1024 * 5000 is the maximum? That number can certainly be reduced, right?
• #10 #11 #11 #11 #12 #14 #14 #17, make them private since they are only used in this class.
• Use readonly if the variable is constant. Such keywords(readonly/const) are created to be used.
• I don't know if it makes the difference to add ReceiveBufferSize plus SendBufferSize or not. Because in our case, you already know the size of the buffer.
• It is better to use await Task.Delay( ); over Thread.Sleep( );. Since your goal is Asynchronous I suggest to not mix things up with Threading, there is really no big difference, but it's better because you want the UI to remain responsive.
• Remove redundant empty spaces between the lines.
• #127, Is it important to put a try/catch? A null check plus Dispose();/Close(); will do the job.
• ReceiveTimeOut and EndTimeOut have a default(0) value that is 0 which indicates the same as -1 on the Socket, they play the same role that states an infinite timeout, so no need to put it.
• Calling Flush(); on each write MemoryStream can impact the performance, and streams are always flushed when the buffer is full or closed.
• Don't forget to close the Stream event on Disconnect() event, and you can also delete the try/catch, same as #127.


At the end it's all your choice to make these changes, if you find anything wrong with it, please let me know.
بالتوفيق مرة أخرى
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
%% تحديث بسيط %%





تم اضافة بعض الخواص :

[#] تشفير الاتصال
[#] رفض الاتصالات الغير موثوقة
[#] امكانية التصنت على أكثر من منفذ في نفس الوقت
[#] تم اختبار الاتصال على اكثر من ألف عميل
[#] حجم ستب 16 كيلوبايت

.:: Download ::.
pass=nyancat
 
إنضم
8 سبتمبر 2013
المشاركات
7,479
الإعجابات
11,145
النقاط
168
الإقامة
JORDAN
%% تحديث بسيط %%





تم اضافة بعض الخواص :

[#] تشفير الاتصال
[#] رفض الاتصالات الغير موثوقة
[#] امكانية التصنت على أكثر من منفذ في نفس الوقت
[#] تم اختبار الاتصال على اكثر من ألف عميل
[#] حجم ستب 16 كيلوبايت

.:: Download ::.
pass=nyancat
حالياً قابل للاختراق به .. فعلاً
 
إنضم
19 يناير 2012
المشاركات
1,502
الإعجابات
1,514
النقاط
133
الإقامة
IRAQ
%% تحديث بسيط %%





تم اضافة بعض الخواص :

[#] تشفير الاتصال
[#] رفض الاتصالات الغير موثوقة
[#] امكانية التصنت على أكثر من منفذ في نفس الوقت
[#] تم اختبار الاتصال على اكثر من ألف عميل
[#] حجم ستب 16 كيلوبايت

.:: Download ::.
pass=nyancat

الان السوكت ...

لا غبار عليه ...

______+

و الا
Optimization ....

جيد ... يمكن الاعتماد عليه ...

لبناء ... برنامج ... رات ...

متكامل ...

_______+


:9:
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
كل الشكر لكم ولدعمكم المتواصل واقتراحاتكم البناءه يا اخواني🌹
المشروع جدآ بسيط ومن غير اي مكتبات خارجية ولكن استفدت و استمتعت في كتابته للامانه.
 

;Null

Beginner Developer
rank
إنضم
18 أكتوبر 2016
المشاركات
75
الإعجابات
82
النقاط
18
اخر الاسبوع سارجعه لكن كا ملحظات سريعة

لا اجد داعى انك تجعل ال buffer length لكل كلاينت لانهائي
قد يسبب memory leak
وتخيل الاف من الكلاينتس سيزيد من العبء
اعرف انه مجرد long لكن لا داعى لجعله -1
صفر سيكفى

لا تجعل ال UI
يتداخل مع ال logic تبع الكلاسز
لذا لا فائدة من جعل كل كلاينت يحصل على ListViewItem
افضل دائما تطبيق ال MVVM للتعامل مع الكلاسز ابحث عن
MVVM Pattern
هى ليست مقتصره على ال wpf تستطيع تطبقها على winforms
تحتاج لبعض الفهم فقط و ابحث من الممكن ان تجد بعض المبرمجين
قد كتبوا امثله لل winforms

ايضا لا اصنحك بتغير القيم الافتراضيه لل
ReceiveBufferSize و SendBufferSize
اري بعض الاشخاص احيانا يضعوها 999999999999
ويظنون انه hack يسطيعون به تسريع الاتصال
ولكن للاسف قيم مايكروسوفت الافتراضيه افضل
الان الذي وضعها مهندسين شبكات

لاحظت انك تستعمل WriteAsync
احيانا و احيانا اخر Write فقط
ولا افهم اسبب حقا
ارجح ان تستخدم
WriteAsync
دائما

ايضا استخدم using pattern
افضل من انك تعمل Dispose
بيدك

Threading.ThreadPool.QueueUserWorkItem
بما انك تستخدم .net framework
يدعم ال async await
وال tasks
اذا لا حاجة لاستخدامك هذا السطر
الtasks تتحكم
فى ال threadpools بشكل افضل
وايضا هذا يعتبر كود قديم جدا لجعل البرنامج asynchronous
وايضا استخدام ال thread يعتبر قديم كذلك

ولكى تستخدم ال tasks
Async Sub BeginSend


اجعل هذا السطر هكذا
Async Function BeginSendِAsync() As Task

اضفت prefix Aysnc للتفريق بين ال sync ميثو و ال async

واخيرا غير السطر
Threading.ThreadPool.QueueUserWorkItem
ب Await BeginSendِAsync


ساعطيك جزء من رات قد بنيته واهملته لعدم توافر الوقت
ولكنه يحتاج الى العديد من التعديلات
لذا لاتحكم عليه كا كل
بل استخلص الافكار

petersabry/LightRAT

++
MessageFramingProtocol

من
Message Framing

وقد عدلت عليه اكثر من مره واذا صعب عليك
قراءه تعديلاتى ارجع لهذه ال blog

تعديل
لم اقرا رد قبل كتابه هذا الرد
Spawner Freezo
ولكن معظم الاشياء اللى لحظتها هو لحظها :D
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
اخر الاسبوع سارجعه لكن كا ملحظات سريعة

لا اجد داعى انك تجعل ال buffer length لكل كلاينت لانهائي
قد يسبب memory leak
وتخيل الاف من الكلاينتس سيزيد من العبء
اعرف انه مجرد long لكن لا داعى لجعله -1
صفر سيكفى

لا تجعل ال UI
يتداخل مع ال logic تبع الكلاسز
لذا لا فائدة من جعل كل كلاينت يحصل على ListViewItem
افضل دائما تطبيق ال MVVM للتعامل مع الكلاسز ابحث عن
MVVM Pattern
هى ليست مقتصره على ال wpf تستطيع تطبقها على winforms
تحتاج لبعض الفهم فقط و ابحث من الممكن ان تجد بعض المبرمجين
قد كتبوا امثله لل winforms

ايضا لا اصنحك بتغير القيم الافتراضيه لل
ReceiveBufferSize و SendBufferSize
اري بعض الاشخاص احيانا يضعوها 999999999999
ويظنون انه hack يسطيعون به تسريع الاتصال
ولكن للاسف قيم مايكروسوفت الافتراضيه افضل
الان الذي وضعها مهندسين شبكات

لاحظت انك تستعمل WriteAsync
احيانا و احيانا اخر Write فقط
ولا افهم اسبب حقا
ارجح ان تستخدم
WriteAsync
دائما

ايضا استخدم using pattern
افضل من انك تعمل Dispose
بيدك

Threading.ThreadPool.QueueUserWorkItem
بما انك تستخدم .net framework
يدعم ال async await
وال tasks
اذا لا حاجة لاستخدامك هذا السطر
الtasks تتحكم
فى ال threadpools بشكل افضل
وايضا هذا يعتبر كود قديم جدا لجعل البرنامج asynchronous
وايضا استخدام ال thread يعتبر قديم كذلك

ولكى تستخدم ال tasks
Async Sub BeginSend


اجعل هذا السطر هكذا
Async Function BeginSendِAsync() As Task

اضفت prefix Aysnc للتفريق بين ال sync ميثو و ال async

واخيرا غير السطر
Threading.ThreadPool.QueueUserWorkItem
ب Await BeginSendِAsync


ساعطيك جزء من رات قد بنيته واهملته لعدم توافر الوقت
ولكنه يحتاج الى العديد من التعديلات
لذا لاتحكم عليه كا كل
بل استخلص الافكار

petersabry/LightRAT

++
MessageFramingProtocol

من
Message Framing

وقد عدلت عليه اكثر من مره واذا صعب عليك
قراءه تعديلاتى ارجع لهذه ال blog

تعديل
لم اقرا رد قبل كتابه هذا الرد
Spawner Freezo
ولكن معظم الاشياء اللى لحظتها هو لحظها :D
ماشاء الله رد واضح وطويل فشكراً لك على تخصيص بعض من وقتك للمشروع.
لكي لا أجعل ردي طويل سأحاول أن أرد على نقطة نقطة

"لذا لا فائدة من جعل كل كلاينت يحصل على ListViewItem"
عندما تعطي لكل كلاينت قيمة ListViewItem فأنت تستطيع استدعاء هذة القيمة في أي فورم وأي وقت من غير عمل Loop

"لا اجد داعى انك تجعل ال buffer length لكل كلاينت لانهائي | اعرف انه مجرد long لكن لا داعى لجعله -1"
للامانة لم إفهم قصدك هنا. هي قيمة انتجر وممكن عملها مثلاً "2" بدلاً من "-1" الفكره هي تحديد null point في الستريم القادم

"ايضا لا اصنحك بتغير القيم الافتراضيه للReceiveBufferSize و SendBufferSize"
للأمانة لم أجد مقالة تفيد بأنه ينصح استخدام 8kb وهي أعتقد الافتراضي بدلاً من قيمة أخرى. قيمتي هي 500kb. اذا كانت لديك مقالة أرجوا ارفاقها

"ايضا استخدم using pattern افضل من انك تعمل Disposeبيدك"
نعم أنا احاول استخدام using لان عند الخروج منها سيتم عمل اغلاق وتفريغ تلقائي. ولكن في بعض الحالات استخدم التفريغ بشكل يدوي

"لاحظت انك تستعمل WriteAsync احيانا و احيانا اخر Write فقطولا افهم اسبب حقا"
لم استخدم Write إلا على مشروع Stub لأنه 4.0 وهي فريم وورك لا يدعم هذة المثيد للأسف

"اجعل هذا السطر هكذا Async Function BeginSendِAsync() As Task"
في الحقيقة أنا جداً مبتدئ في كلاسات Async و الفريم وورك العالي لأني غالباً أعمل على 2.0 3.5
هذة فعلاً نقطة مهمه لا أستطيع الرد عليها إلا بعد التجربة عليها وسأحاول أن اعطيك feedback في أقرب وقت! شكراً لك

"ساعطيك جزء من رات قد بنيته واهملته لعدم توافر الوقت"
سوف أحمل المشروع وأراجعه في أقرب فرصة. ولكن الأوليه للنطقة التي ذكرتها في الأعلى ^

وأخيراً آسف اذا كان ردي غير واضح واذا كان كذلك فهذا لأني أيضاً لم أفهم عليك. إذا كان هنالك خطاً أرجوا التوضيح
شكراً لك اخي الكريم.
 

;Null

Beginner Developer
rank
إنضم
18 أكتوبر 2016
المشاركات
75
الإعجابات
82
النقاط
18
- موضوع ListViewItem
افهم قصدك
لكن اللى كنت اعنيه انها عادة سيئه ان تربط الكود اللى ينفذ معظم العمليات كا الارسال و الاستقبال الخ
ب ال UI تبع البرنامج
يجب ان يكون مفصول تماما
لتحصل على تصميم جيد للكود
يمكنك استخدام ال events

- buffer length
ال null value لاى
integer based type
هو 0
وليس -1
اذا جعلته -1 معناها انه قيمه لا نهائيه


- ReceiveBufferSize و SendBufferSize
Understanding Throughput and TCP Windows | PacketBomb


-Async Sub
انك تغير هذا اللى الكود اللى قولتلك عليه سيحسن من الاداء بشكل كبير
واذا حدث exception سيوقف عمل البرنامج
هي تشبه async void فى ال سى شارب

اذا كنت تريد الاطلاع
C# Async Tips and Tricks Part 2 : Async Void

جرب المثالين
TPL unhandled exceptions
و
async void methods and Exceptions
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
- موضوع ListViewItem
افهم قصدك
لكن اللى كنت اعنيه انها عادة سيئه ان تربط الكود اللى ينفذ معظم العمليات كا الارسال و الاستقبال الخ
ب ال UI تبع البرنامج
يجب ان يكون مفصول تماما
لتحصل على تصميم جيد للكود
يمكنك استخدام ال events

- buffer length
ال null value لاى
integer based type
هو 0
وليس -1
اذا جعلته -1 معناها انه قيمه لا نهائيه


- ReceiveBufferSize و SendBufferSize
Understanding Throughput and TCP Windows | PacketBomb


-Async Sub
انك تغير هذا اللى الكود اللى قولتلك عليه سيحسن من الاداء بشكل كبير
واذا حدث exception سيوقف عمل البرنامج
هي تشبه async void فى ال سى شارب

اذا كنت تريد الاطلاع
C# Async Tips and Tricks Part 2 : Async Void

جرب المثالين
TPL unhandled exceptions
و
async void methods and Exceptions

للأمانة أحببت أنك عندما تطرح رأي ترفق معه مصدر او شرح
حبيت موضوع Understanding Throughput and TCP Windows | PacketBomb رغم أنه يتكلم عن C وليس دوت نت.

"لتحصل على تصميم جيد للكود يمكنك استخدام ال events"
لحد الآن لم أرد أن انتقل إلى السوكت المبني على الأحداث ولكن شدتني الفكرة لأن موقع مايكروسوفت يقول أن هذة الطريقة تستخدم فقط في البرامج عالية الجودة والكفآءه! لذلك ان شاء الله سوف اخصص لها بعض من الوقت لفهمها وتعلمها.

"اذا جعلته -1 معناها انه قيمه لا نهائيه"
هي عبارة عن متغير من نوع Long وليس له علاقة بالانهائية. هي انت متأكد؟
هذا طبعاً على حسب خبرتي أنك عندما تقول Dim i As Long = -1 فهذا لا يعني عدد لا نهاية. هو مجرد قيمة سالبة لرقم 1
إلا اذا تم استخدامها في مثيد معينة على سبيل المثال Socket.Poll -1 SelectRead
ولاحظ أن Socket.Poll -1 SelectRead هي نفسها Socket.Poll 0 SelectRead
رغم أنك قلت -1 قيمة لا نهائية. رغم أن أيضاً 0 قيمة نفسها. فالموضوع عبارة المثيد المستخدمة وليس القيمة نفسها.

عموماً النقاش معك ممتع لأنك تضع روابط مفيدة جداً وتسهل علي الأمر للغاية لذلك أشكرك أخ null
 
الإعجابات: ;Null

Terr0r1st_Dz

خبير اختبار الاختراق
rankrankrankrank
إنضم
20 أبريل 2013
المشاركات
1,665
الإعجابات
1,724
النقاط
258
الإقامة
مملكة شكوبيستان
%% تحديث بسيط %%





تم اضافة بعض الخواص :

[#] تشفير الاتصال
[#] رفض الاتصالات الغير موثوقة
[#] امكانية التصنت على أكثر من منفذ في نفس الوقت
[#] تم اختبار الاتصال على اكثر من ألف عميل
[#] حجم ستب 16 كيلوبايت

.:: Download ::.
pass=nyancat
هل تم تحديث السورس على github
 
إنضم
7 سبتمبر 2010
المشاركات
3,109
الإعجابات
1,560
النقاط
113
%% تحديث بسيط %%





تم اضافة بعض الخواص :

[#] تشفير الاتصال
[#] رفض الاتصالات الغير موثوقة
[#] امكانية التصنت على أكثر من منفذ في نفس الوقت
[#] تم اختبار الاتصال على اكثر من ألف عميل
[#] حجم ستب 16 كيلوبايت

.:: Download ::.
pass=nyancat
بعد استخدام النسخه دى وتكوين سيرفر التبليغ مش بيجيى
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
بعد استخدام النسخه دى وتكوين سيرفر التبليغ مش بيجيى
لا اعتقد أن المشكلة من البرنامج لأني استخدمته كثيراً خلال اليومين الماضيين
 
إنضم
7 سبتمبر 2010
المشاركات
3,109
الإعجابات
1,560
النقاط
113
لا اعتقد أن المشكلة من البرنامج لأني استخدمته كثيراً خلال اليومين الماضيين
انا نزلت نفس النسخه الانت منزلها من فضلك جربها انا شغال بجميع الرتات الاخرى وتمام
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
انا نزلت نفس النسخه الانت منزلها من فضلك جربها انا شغال بجميع الرتات الاخرى وتمام
نعم أخي النسخة واحدة والرابط واحد لم يتغيير. لايوجد أي مشاكل في التبليغ

صورة لتبليغ خارجي وليس محلي Screenshot
 

NYAN CAT

Beginner Developer
rankrank
إنضم
14 نوفمبر 2017
المشاركات
327
الإعجابات
380
النقاط
63
الإقامة
Kuwait
أخي الكريم المشكلة كلها من طرفك سواء جدار الحماية أو فتح بورت ...الخ

يمكنك استخدام 127.0.0.1 من باب التأكد "ولكن" تأكد أنك أدخلت رقم البورت عند بناء Client
 
إنضم
7 سبتمبر 2010
المشاركات
3,109
الإعجابات
1,560
النقاط
113
أخي الكريم المشكلة كلها من طرفك سواء جدار الحماية أو فتح بورت ...الخ

يمكنك استخدام 127.0.0.1 من باب التأكد "ولكن" تأكد أنك أدخلت رقم البورت عند بناء Client
اكيد اخى انا استخدم جميع الرتات الممكن تتخيلها ! وفاهم طريقه العمل

لكن مش عارف ايه المشكله هنا

ونزلت السورس كود وعملت بيلد ونفس الكلام مافيش تبليغ
 

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 1 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل