الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح : طريقة من أحدى الطرق لحماية برامج الشبكات

بدأه Swift في 26 فبراير 2009 · 8 رد · 4,451 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــة ،،

---------------------------------------

نلاحظ بعض البرامج المتعلقة بالشبكات تستخدم هذا النوع من الحماية عن طريق MD5

ماذا نقصد بــ Md5 : رقم يختص بأى ملف بالكمبيوتر وهذا الرقم يتغير بتغير الملف مثل حزم نظام التشغيل لينوكس مثلاً يكتب باسفل التحميل رقم مثلاً

MD5 : 602627F5AAC515F08B1457403B21FC59

وهذا الملف اذا قمت بالعبث به باى برنامج من برامج الهندسة العكسية او فقط ضفت حرف واحد بأى ملف نصى وقمت باعادة تحزيم البرنامج سوف يتغير هذا الرقم حتماً وبذلك لن تستطيع ان تنصب الحزمة .

استخدامة الشائع : برامج الشبكات ( اللتى تستخدم كلينت وسيرفر )

مثال بسيط :-

1. قم بتحميل هذه الصورة post-87900-1235660398_thumb.jpg .

2. قم بتحميل هذا البرنامج MD5Checker.rar

3. قم بتحميل الصورة داخل البرنامج وقم بفحص رقم Md5 سوف تلاحظ هذا الرقم .

1EB428E774971B9D08FBFC50275788D4

4. افتح الصورة باى محرر صور وقم بتعديل بسيط جداً فى الصورة وقم بحفظها .

5. اختبر الرقم او المسلسل سوف تلاحظ انة تغير وهذا ليس مقصوراً فقط على الصور ولكن على جميع انواع الملفات .

التطبيق من حيث الأستخدام فى الدلفى ؟

* الحفاظ على حزم البيانات المنقولة بين الشبكات وتفحص البرامج , وهذا يظهر عندما نقوم بتعديل اى Client يستخدم هذا النوع وتشغيلة حيث سوف يرفض السيرفر هذا الكلينت حيث ان السيرفر مسجل لدية الرقم المتسلسل للكلينت الحقيقى .

مثال على الدلفى :-

مرفق برنامج يوضح الميكانيكية للكود وهو عبارة عن سطور صغيرة .

1. قم بارفاق ملف md5 الموجود مع البرنامج .

2. عرف md5 بــ uses

3.استخدم الكود التالى لأرسال md5 الخاص بالبرنامج

Connection1.Socket.SendText(MD5Print(MD5File(application.ExeName)));

للأستفسار انا حاضر واعزرونى لقلة دخولى والله يعلم

شكر خاص للعضو Super_rio

تم تعديل هذه المشاركة بواسطة Swift في 27 فبراير 2009 في 01:56 — السبب: شكر

Comming Soon

#2

السلام عليكم

أخي بارك الله فيك، فينك من زمان؟ والله إني حقا كنت محتاج لطريقة تعرف الكلاينت للسيرفر (سيرفر الويب طبعا).

#3

هل يتم استخدام UDP في هذه الحالة كبروتوكول للنقل أخ Swift؟

تم تعديل هذه المشاركة بواسطة Xacker في 11 مارس 2009 في 05:08

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

لم أجرب من قبل باستخدام UDP لكن قمت بغستخدامها بالفعل TCP

Comming Soon

#5

ما كنت أود الإشارة إليه هو أن بروتوكول TCP أساساً reliable وفيه خوارزميات لكشف وتصحيح الأخطاء أثناء النقل، فإن قمت بتأسيس اتصال 3-way هل يبقى هناك ضرورة لتنفيذ خوارزميات CRC أو MD5 على البيانات لضمان وصولها بشكل صحيح؟

عذراً أنا أتكلم عن الأمر من مفهوم آلية عمل الشبكة وربما يختلف الوضع عندما يصل الأمر إلى البرمجة عند استثمار هذه الشبكة.

سأحاول أن أسأل أحدهم أو البعض لعلهم يفيدوني بإجابة دقيقة في هذا الموضوع.

شكراً على الموضوع أخ Swift، طرح فكرة مهمة بالنسبة لي.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

نعم يا X التحقق من سلامة البيانات من أولويات بروتكول TCP , فال 3way لتحقيق الإتصال فقط بين السيرفر وال client , لكن عملية نقل البيانات نفسها قد تحدث مشكلة في إحدى الحزم المرسلة بالتالي يجب التحقق منها كل مرة , لذلك يتم إرسل ack كل مرة من ال client للسيرفر كل عدد packets معين يتم تحديده بحجم ال window سلفا .. يضمن هنا أن البينات التي إستلمها ال client سليمة بعد التحقق من ال CRC .

لكن في UDP لايوجد أي reply من ال client للسيرفر لكل عدد باكتس يتم إستلامها بذلك يقلل ال overhead ... ويصلح فقط في الأمور التي لاتحتاج لموثوقية كبيرة أو التي تكون في real time ك VoiP مثلا ..

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#7

شكراً على سرعة تجاوبك معي يا H

طيب جيد الكلام الذي ذكرته أنا مؤمن به قلباً وقالباً وهو صراحة ليس النقطة التي طلبتك من أجلها، كونك لديك خبرة جيدة بالبرمجة والشبكات سواء كان استفساري في موضوع الـ reliability الخاص بالـ TCP، أليس الـ CRC الذي يتم إجراؤه على الـ frames يتم تنفيذه سلفاً من قبل ميكانيكية الـ TCP stack .. أم (وهذا هو لب سؤالي) يجب على المبرمج حتى في حال 3way أن يقوم بعمل تحقق آخر على البيانات للتأكد من دقتها؟

جزيت الخير سلفاً

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

لأ التحقق من CRC يتم من ضمن آلية عمل ال TCP/IP نفسها , وأذكر برنامج كان طرحته في مكان ما في المنتدى "لم أكتبه أنا"

/index.ph...st&p=296252

كان يعيد كتابة layer 3 & layer 4 وال payload , ليمكن عمل spoofing كما تريد .. "طبعا كل هذه المفاهيم موجودة في hping وغيره من البرامج الجاهزة" لكن مايهمني موضوع ال checksum هنا في جزئية من الكود يتم كتابته حيث أننا نبني الهدر من جديد , وهذا دليل كما أقصد أن عملية ال checksum في الإرسال تتم عن طريق ال tcp/ip mechanizm نفسها في مرحلة ما وليس للتطبيق أي علاقة بها إلا أذا أردت أن تبنيها بنفسك "إن قمت بالتعديل على بيانات الباكيت المرسلة" بالنسبة للتحقق في المستقبل أيضا تتم بشكل آلي .

أي أن ليس للمبرمج أي علاقة بعمليات التحقق من سير برتوكول tcp/ip في layer1,2,3,4 يمكن أن يتدخل من 5-7

اقتباس
جزيت الخير سلفاً

r u X ؟ :D

في العادة الموضوع يكون أمر وليس طلب :P

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#9
HGB كتب:

أي أن ليس للمبرمج أي علاقة بعمليات التحقق من سير برتوكول tcp/ip في layer1,2,3,4 يمكن أن يتدخل من 5-7

شكراً جزيلاً يا H

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

إذا لا يوجد المزيد من الأسئلة أستاذ H، خلاصة: TCP كاف لضمان موثوقية البيانات التي يتم إرسالها بين نقطتين لو أهملنا تدخل عامل خارجي كـ MiTM.

HGB كتب:

r u X ؟ :D

في العادة الموضوع يكون أمر وليس طلب :P

don't push it :lol:

بعدين لماذا تعطيني هذه السمعة السيئة، أنا مهذب عندما أسأل post-46090-1221949221.gif

بالمناسبة شكراً على رابط الموضوع القديم، لديك مقالات قديمة رائعة لا أعلم بها لأنها في قسم C++ الذي لم أكن أقربه :D

ارجع عضو خبير عشان ترجع تكتب مثل الأول ;)

تم تعديل هذه المشاركة بواسطة Xacker في 16 مارس 2009 في 11:03

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

مواضيع مشابهة