مشاهدة النسخة كاملة : التحكم بمنافذ الشبكة عن بعد (مشروع تخرج )


محمد منصور فرايتر
02-25-2006, 11:53 PM
السلام عليكم

الملخص (الهدف منه تقديم فكرة مختصرة عن المشروع)

يهدف البحث الى تصميم نظام امني خاص بحماية خدمات الشبكات المحلية المرتبطة بالشبكة العالمية Internet مثل خدمة استعراض المواقع او خدمة ارسال البريد الالكتروني او خدمة ارسال و التبادل المعلومات بين الشبكتين و ذلك في سبيل تحقيق مبدأ الحماية الداخلية تقي شر الاخطار الخارجية ، و حفاضاً في الوقت ذاته على وقت الشبكة و كفاءتها من ان تهدر خلال طلب خدمات غير مجديه لها .
من خلال البحث يتم تصميم نظام قادر على ان يتحكم بالخدمات التي تعطى لأي عضو في الشبكة من غلق تلك الخدمات او فتحها و بشكل مستقل عن باقي اعضاء الشبكة و ذلك مع امكانية تحديد مجموعات معينة من الشبكة ليغلق عنها خدمة ما ، و ايضاً يقوم النظام بتقديم العديد من التقارير التي تفيد مدير الشبكة و تساعده في اتخاذ القرارات حول الخدمات المتاحة للأجهزة الموجودة في الشبكة المحلية و الخدمات المغلقة عن كل جهاز وتاريخ غلق كل خدمة من الخدمات .
تم الاعتماد في تصميم النظام على بعض الادوات التي تدعمها لغة Visual Basic مثل الاداة Winsock و دوال الـ API و كذلك دعم هذه اللغة للإرتباط بقاعدة البيانات Access و ملفات الـ INI .
يحتوي هذا النظام على شاشات عربية سهلة الفهم تتيح لمدير الشبكة استخداماً غير معقد مما يوفر الوقت و المجهود عليه، و نأمل من خلال هذا النظام تحقيق الاهداف المرجوة و ان نقدم الشيء اليسير في مجال حماية الشبكات الداخلية .
_____________


المقدمة (الهدف منها هو التقديم للمشاكل التي يعالجها النظام)
يجلب الارتباط مع شبكة الانترنت تحديات امنية جديدة لشبكات الشركات الكبيرة ، فقد شهد العامان الماضيان دخول آلاف الشركات الي شبكة انترنت، حيث أنشأت هذه الشركات مواقع لها علي شبكة ويب، وزودت موظفيها بخدمات البريد الالكتروني ومتصفحات انترنت واصبح بذلك امام المستخدم الموجود ضمن الشبكة الاستفادة من العديد من الخدمات التي توفرها الشبكة العالمية سواءاً أكان استخدامه لصالح الشركة او لغرض الترفية او حتى لغرض نقل ملفات خاصة بالشركة الى خارج الشبكة عبر خدمة نقل الملفات الى الانترنيت ، مما يؤدي الى احتمالية حدوث خطر كبير على الشركة و ذلك من داخل الشبكة نفسها .
تتصرف بعض الشركات وكأن التحديات الامنية لم تكن خطرا حقيقيا بالامس القريب حيث تتطلع الى البنية التحتية لشبكة انترنت، كوسيلة رخيصة نسبيا، لربط شبكتين او عدة شبكات محلية LAN معزولة جغرافيا مع بعضها البعض او للربط عن بعد مع شبكة ما , وتجدر الاشارة الي ان الاعمال التجارية على شبكة انترنت والتي تتطلب الملايين من التبادلات المصرفية السرية اصبحت قريبة من متناول الكثيرين.
ولن يكون الربط مع شبكة انترنت مثل الربط مع اي نوع آخر من الشبكات آمنا تماما، وبدلا من أن تلجأ الشركات الي تحقيق الامن المطلق عليها ان تقوم بتقدير اهمية المعلومات التي تقوم بحمايتها، وتحقق نوعا من التوازن بين احتمالات خرق الترتيبات الامنية وبين كلفة تحقيق مخترق هذه الترتيبات.
قد يخطر في بال معظم الناس عند الحديث عن امن شبكة انترنت برامج جدران النار Firewalls فعلى الرغم من ان برامج جدران النار لا تعتبر علاجا لجميع مشاكل امن المعلومات علي شبكة الانترنت، الا انها ضرورية لاي استراتيجية متعبة، في مجال امن انترنت.
تعتبر برمجيات جدران النار ببساطة حاجزا بين شبكتين وهما في اغلب الاحيان شبكة داخلية وتسمي الشبكة الموثوقة trusted network شبكة خاجية تسمي untrusted network وهي شبكة انترنت في هذه الحالة وتقوم برمجيات جدران النار بفحص رزم البيانات القادمة والخارجة اعتمادا علي مجموعة قواعد التي يضعها المشرف علي الشبكة، للسماح لهذه الرزم بالمرور او يقوم بحجبها ومنعها من الوصول الي الشبكة الداخلية .
كما ان هذا النوع من البرامج يتيح حضر خدمة ما على الجهاز ( Block Port ) مثل خدمة نقل الملفات FTP او استعراض صفحات الويب HTTP او حتى الدردشة عبر الانترنيت CHAT ، و ذلك عند انزال برنامج الجدار الناري على الجهاز المراد التحكم به .
و من الجدير ذكره ان نظم تشغيل الخاصة بالشبكات مثل Windows 2000 Server قادرة على اداء غرض حظر خدمة ما على الشبكة بحيث ان يتم حضر هذه الخدمة على كل اعضاء الشبكة.
__________________________________________________ _
المشكلة التي يعالجها النظام (الهدف منها هو تسليط الضوء على اهداف النظام ) :

من خلال التقديم السابق ، يتضح انه من الممكن تقيد الخدمات التي تمنح لأعضاء الشبكة الداخلية عن طريق استخدام برامج الجدران النارية ، بحيث يتم انزالها على كل جهاز داخل الشبكة بشكل فردي و عليه فإن حظر خدمة ما يتطلب المرور على الجهاز الهدف و غلق الخدمة عنها يدوياً ، او القيام بعملية حظر خدمة ما على جميع اعضاء الشبكة من خلال الـ Server نفسه بحيث لا تكون مسموحة لأي عضو في الشبكة ، و في كلا الحالتين تكمن المشكلة في عدم وجود نظام قادر على ان يتحكم في الخدمات لكل جهاز في الشبكة بشكل مستقل عن الاخر و ذلك عن طريق نظام وحيد موجود على الشبكة يتم انزاله ( غالباً ) على خادم الشبكة Server أي عن بعد ، حيث أن مدير الشبكة يحتاج إلى نظام بالمواصفات السابقة فيحل له المشكلة ويوفر له الوقت والجهد في التعامل مع خدمات الشبكة .
بالاضافة الى المشكلة الرئيسية السابقة توجد بعض المشاكل الجزئية وهي:-
* وجود عناء في إدارة منافذ كل جهاز بشكل منفرد عن الاخر.
* صعوبة في عملية ادارة الشبكة وعدم توفر المرونة في استخدام الـ Firewall.
* التكلفة المادية العالية للـ Firewall والتي قد تصل قيمته الى خمسين الف دولار.

__________________________________________________ _______
سوف اضع لكم الآن معلومات مختصرة جداً عن الشبكة و البروتوكلات و بالذات البروتوكول TCP/IP .. و عن المنافذ Ports ...
__________________________________________________ _____________

الخلفية النظرية (الهدف منها هو تسهيل المفردات و المصطلحات التي ترد في البحث او عند البحث عن اساليب برمجة الشبكات )

ما المقصود بالشبكة اولاً ؟
الشبكة هي نظام اتصالات يقوم بربط عدة حواسيب والتجهيزات الطرفية المرافقة بعضها ببعض بصورة مشابهة نوعا ما للشبكة الهاتفية بهدف تقديم الخدمات الحاسوبية المختلفة للمستخدمين .
كلمة شبكة (Network ) تشير إلى أثنين أو أكثر من أجهزة الحاسب متصلين معا . وهناك عدة أسباب لربط أجهزة الحاسب فى شبكة أهمها ما يلي :
• اتصال أجهزة الحاسب يسمح باتصال الأشخاص ونقل المعلومات.
• اتصال أجهزة الحاسب يسمح بمشاركة موارد الحاسب.


__________________________________________________ _______________

البروتوكولاتProtocols:
يعرف البروتوكول في مصطلحات الشبكات بأنه طريقة قياسية او لغة متفق عليها عالمياً، تتيح لاجهزة الكمبيوتر المتصلة عبر الشبكة التخاطب فيما بينها وتسهيل نقل وتبادل المعلومات المختلفه ، وكأمثله لهذه المعلومات(تصفح البريد، نقل ملف الى سيرفر، وغيره).
وإذا أردنا تعريف البروتوكول بلغة تقنية، نقول عنه أنه وصف رسمي لهيئة الرسائل والقواعد التي يجب على كمبيوترين اتباعها لتبادل الرسائل.
تستطيع البروتوكولات وصف تفاصيل البنية التحتية للواجهة البينية بين كمبيوترين (مثل ترتيب البتات والبايتات المرسلة عبر الأسلاك) وتستطيع أيضاً وصف عمليات التبادل التي تجري بين البرامج على مستوى البنية الفوقية (مثل الطريقة التي يتبادل بها برنامجان الملفات عبر إنترنت) .

أساسيات في البروتوكول TCP/IP :
يمثل الاختصار TCP/IP العبارة Transmission Control Protocol/Internet Protocol أي بروتوكول التحكم بالنقل / بروتوكول الانترنت، ويتألف TCP/IP من بروتوكولات عديدة ، ولذلك كثيرا ما يشار اليها بعبارة مجموعة TCP/IP، حيث يشكل TCP و IP البروتوكولين الأساسين في المجموعة .
السبب الذي يجعل من TCP/IP مهما للغاية هذه الأيام هو انه يؤمن الاتصال بين أي حاسوبين متصلين الي شبكة تعمل وفقا لهذا البروتوكول، و السماح للشبكات المستقلة بالاتصال مع الانترنت، ويقوم بروتوكولTCP/IP بتقديم حلا لمسألة إمكانية تبادل البيانات بين حاسوبين متصلين إلي الانترانت ذاته ولكنها ينتميان إلي شبكات فيزيائية مختلفة، وياتي حل هذه المسألة في أجزاء متعددة بحيث يؤدي كل عضو من عائلة TCP/IP نصيبه في حل جزء من المسألة، وذلك بأن يرسل بروتوكول IP وهو البروتوكول الأهم في طاقم TCP/IP وحدات منفصلة تسمي حزم بيانات IP (IP PACKET) وذلك عن طريق Router ، ويخفي بروتوكول TCP/IP عمليا الموجهات ومعمارية الشبكة ويجعل كل شيء يبدو كشبكة كبيرة واحدة.
كل محطة عمل TCP/IP اوجهاز على الشبكة يجب أن يحمل رقماً منطقياً يعرف باسم IP Address، ويُعرِّف عنوان IP مكان توضع المحطة ضمن الشبكة بنفس الطريقة التي يتم التعريف بها عن عنوان منزل داخل مدينة ما باستخدام اسم الشارع.
ويتيح الـ IP Address بالاستدلال على رقم الشبكة Network ID ورقم محطة العمل داخل الشبكة Host ID، ويدل رقم الشبكة على النظام المتوضع على نفس الشبكة الفيزيائية، ويجب على جميع محطات العمل الموجودة على شبكة فيزيائية واحدة أن تمتلك نفس رقم الشبكة، و كما يجب أن يكون رقم الشبكة وحيداً ايضاً بين أرقام بقية الشبكات، و يجب أن يكون عنوان كل محطة عمل وحيداً بالنسبة للشبكة.
يحوي عنوان IP على 32 بت ويتألف من أربعة حقول ذات ثمانية بتات مفصولة بوساطة نقاط. تمثل كل ثمانية رقماً عشرياً محصوراً بين0-255 ، تدعى هذه البنية بالتمثيل العشري المنقط Dotted Decimal Notation.

تنقسم البروتوكولات بشكل عام الى قسمين:
1.Connection-Oriented.
2.Connectionless.

يعمل البروتوكول من النوع الأول Connection-Oriented بإعداد إتصال مباشر يسمى دائرة ظاهرية أو افتراضية Virtual Circuit بين الأجهزة المتصلة في الشبكة.
ويحقق هذا الإتصال المباشر موثوقية عالية لتسليم البيانات و لكنه قد يؤدي الى بطئ في عمل و أداء الشبكة.
يعتبر بروتوكول TCP/IP (Transmission Control Protocol/Internet Protocol ) مثالاً واضحاً على البروتوكولات محددة وجهة الإتصال Connection-Oriented.
بينما البروتوكولات من النوع الثاني Connectionless فإنها لا توفر اتصالاَ مباشراً مع الكمبيوتر المستقبل قبل إرسال البيانات، مما يعني أن البيانات تنتقل بسرعة أكبر مما ادى الى تحسين في أداء الشبكة، و لكن هذه الطريقة ليست تامة الموثوقية نظراً لعدم التمكن من معرفة حدوث خطأ أثناء الإرسال أم لا.
وأما النوع الثاني من البروتوكولات عديمة الإتصال Connectionless فيعتبر بروتوكول UDP مثالاً واضحاً عليه.
ينص برتوكول الـ TCP/IP على أن الانترنت مقسمة إلى عدة منافذ Ports لتبادل البيانات، عدد هذه المنافذ يقارب 65535 منفذ، وقد جرى العرف على إعطاء منفذ لكل خدمة من خدمات إنترنت الأساسية، فمنفذ بروتوكول http هو 80، لذلك فإن المتصفح الذي تستعمله يقوم تلقائيا بتوجيه طلباته عبر المنفذ 80، والمنفذ القياسي لبروتوكول نقل الملفات FTP هو 21، وهكذا.

__________________________________________________ _____________

بوابات الاتصال (Ports) :
هي عبارة عن بوابات اومنافذ اتصال و قد يظن البعض بأنها منافذ مادية في امكانه رؤيتها كمنافذ الطابعة والفأرة ولكنها في واقع الأمر جزء من الذاكرة له عنوان معين يتعرف علية الجهاز بأنه منطقة إتصال يتم عبره ارسال واستقبال البيانات ويمكن استخدام عدد كبير من المنافذ للأتصال وعددها يزيد عن 65000 يميز كل منفذ عن الاخر رقمه فمثلا المنفذ رقم 1001 يمكن اجراء اتصال عن طريقة وفي تفس اللحظه يتم استخدام المنفذ رقم 2001 لإجراء اتصال آخر, يتم الاتصال بين الجهازين عبر الـ ports.

شرح مفهوم مصطلح المنافذ الـ Ports :
المنافذ في ابسط اشكالها هي عبارة عن ممرات تسمح بتبادل المعلومات والبيانات بين شبكة الانترنت وجهاز الكمبيوتر حيث ان الشخص الذي يريد ان يتصل بخدمة شكبة الانترنت لابد وان يتسخدم ممر او منفذ للعبور الى هذا العالم الواسع حتى يتم الاتصال والتواصل، ويبلغ عدد البورتات في الجهاز (65535) بورت وكل من هذه المنافذ له وظيفة او خدمة محددة وتستخدم برامج محددة بورتات محددة وعلى سييل المثال من المعروف ان المنفذ 80 غالباً ما يكون مخصصاً لموفر الخدمة كي يتم دخول المستخدم الانترنت وفي بعض الأوقات يكون المنفذ رقمه 8080.

تنقسم المنافذ الى ثلاثة اقسام هي:
1.The Well Known Ports :
هي عبارة عن ارقام ثابية لصالح تظبيقات معينة تم تحديدها من قبل منظمة INAN و هي تقع في المدى 0 –1023.
2.The Registered Ports :
هي التي تقوم الشركات الخاصة بحجزها من اجل تطبيقاتها و هي تقع في المدى 1024 – 49151.
3.The Dynamic and/or Private Ports :
هي التي لا تكون ثابتة بل متغيرة و هي تقع في المدى 49152 – 65535.

__________________________________________________ _____________

ارجوا ان لا اكون اطلت عليكم (لأني اطلت عليكم فعلاً) ... و لكن هذه المفاهيم قد يلم بها البعض غير انها مفيدة .. و قد وضعتها لأني اريد ان اجعل هذا الموضوع يمثل مرجعاً للكل بلا استثناء ...

نظرة عامة عن الأداة(Winsock) :

تستخدم أداة الـ Winsock في عملية الاتصال بين جهازين فقط (جهاز خادم وجهاز عميل) ، أو عملية اتصال متعددة تشمل جهاز خادم واحد وعدة أجهزة عميلة وهذا النوع من الاتصال هو الأكثر ، و تبادل المعلومات معه باستخدم بروتوكول TCP أو البروتوكول UDP
(User Datagram Protocol).

كيفية عملها :

يعتمد عمل هذه الأداة على وجود طرفين أو برنامجين أحد هما وهو البرنامج العميل(Clients) والآخر هو البرنامج الخادم(Server)، وتتم عملية الاتصال على النحو التالي:
أولاً: يقوم أحدا البرنامجين ( غالباً ما يكون برنامج الخادم ) بعملية تحديد رقم المنفذ الذي سوف يستقبل عليه الاتصال ويبدأ عملية انتظار اتصال
ثانياً: يقوم البرنامج العميل بطلب الاتصال وذلك عن طريق معرفة كلاً من رقم المنفذ (Port no) للبرنامج الخادم و عنوانه (IP Address).
ثالثاً: يقوم البرنامج الخادم بإرسال قبول طلب العميل بالاتصال.
رابعاً: يتم الاتصال بين الطرفين.
خامساً: تتم عملية تبادل الملفات وغيرها من الخدمات المتوفرة.
طبعاً في الحقيقة العملية ليست بهذه البساطة ولكن هذه تقريباً أهم الخطوات التي تتم بها عملية الاتصال بين جهازين عبر شبكة الانترنت والشبكات المحلية.

خواص الأداة Winsock :
Bytes Received : هذه الخاصية تخبرك بعدد البايتات المستقبلة حالياً في الذاكرة Buffer وهي خاصية تقرأ فقط – آى لا يمكن تغييرها – والعدد الذي يعبر عن البياتات يكون من نوع Long Integer فمثلاً :
CODE Myvar=MyWinsockControl.BytesReceived

وهذا يساعدك علي معرفة المعلومات الموجودة بالذاكرة .
-----------------------------------
Local Hostname: هذه الخاصية تسترجع returns اسم نظام المضيف المحلي وهي للقراءة فقط وفي الظروف العادية تجد تلك الخاصية تستعيد اسم الكمبيوتر وهو الاسم الذي اخترته لجهازك عند تركيب أو تنصيب ويندوز ، ويمكنك معرفته بفتح لوحة التحكم واختيار شبكة الاتصال – تعريف .
----------------------------------
LocalIP : وهي تستعيد IP لجهازك في صيغته الرقمية وهي للقراءة فقط ونوع ما تستعيده هو حرفي.

CODE Myvar= MyWinsockControl.LocalIP

-----------------------------------
Local Port : تستعيد و تضبط set رقم اللوحة المحلية وهي خاصية (قراءة – كتابة) ونوع ما تسترجعه Long Integer:

CODE Myvar= MyWinsockControl.LocalPort

ولضبط الخاصية علي رقم اللوحة أو المنفذ port رقم 1001 نكتب:

CODE MyWinsockControl.LocalPort=1001

-------------------------------------
Protocol : هذه الخاصية تضبط البروتوكول فلضبط الأداة علي البروتوكول FTP نكتب:

CODE MyWinsockontrol.Protocol=sckTCPProtocpl

ولضبطها علي UDP نكتب :

CODE MyWinsockControl.Protocol=sckUDPProtocol

ولمعرفة البروتوكول المستخدم

CODE Myvar=MyWinsockControl.Protocol

--------------------------------------
Remote Host : وهي تستعيد و تضبط الكمبيوتر البعيد أو عنوانه ويمكن أن تكون رقمية أو ودية –علي شكل اسم معروف – (http://www.microsoft.com/) أو في صورة رقمية 192.143.29.47 ، مثلاً :

CODE Myvar= MyWinsockControl.RemoteH
ost
ولضبطها علي عنوان معين :

CODE MyWinsockControl.RemoteHost=”www.bizland.com”
MyWinsockControl.RemoteHost=”192.143.29.47”

-------------------------------------
Remote Port : وهو يستعيد ويضبط رقم اللوحة أو المنفذ و القيمة المستعادة من نوع long integer
فلقراءة رقم لوحة السرفر

CODE Myvar= MyWinsockControl.RemotePort

ولضبط لوحة السرفر أو منفذه

CODE MyWinsockControl.RemotePort=1001

وبذلك يمكنك اختيار التطبيق الذي ترغب في الاتصال به علي السرفر .
-----------------------------------------
State : تستعيد حالة الأداة علي هيئة عدد صحيح يعبر عن حالة الأداة:
0 SckClosed مغلق
1 SckOpen مفتوح
2 SckListening إصغاء
3 sckConnetionPending ربط الاتصال
4 sckResolvingHost جاري فك شفرة المضيف
5 sckHostResolved تم فك شفرة المضيف
6 SckConnecting جاري الاتصال
7 SckConnected تم الاتصال
8 SckClosing الكمبيوتر المرافق أغلق الاتصال
9 SckError يوجد خطأ


طرق Methods الأداة Winsock (دوال)

الطرق هي دوال معدة سلفاً تؤدي وظائف خاصة على الأداة Winsock وسوف نناقش أهم تلك الخواص :

Accept : تستخدم تلك الخاصية مع فقط مع تطبيق السرفر FTP ، حيث تقبل طلب الاتصال من الكمبيوتر التابع ، وحتي تستخدم تلك الخاصية يجب أن تكون الأداة في حدث الاتصال ConnectionRequest وصيغته:
CODE Private Sub MyWinsockControl ConnectionRequest(ByVal requestedID as Long)
MyWinsockControl.Accept
End Sub
--------------------------------------------------
Close : و تستخدم لغلق الاتصال بين السرفر والتابع :

CODE MyWinsockControl.Close
--------------------------------------------------
GetData : وتستخدم في استعادة Retrieve بلوك البيانات الموجود حالياً في الذاكرة Buffer و اختزانه في متعير من نوع variant

CODE MyWinsockControl.GetData myvar
--------------------------------------------------
Listen : وتستخدم علي تطبيق السرفر لجعله ينتظر لطلب الاتصال TCP من الكمبيوتر التابع

CODE MyWinsockControl.Listen
--------------------------------------------------
SendData : وتستخدم لإرسال بيانات للكمبيوتر البعيد ويستخدم في حالة السرفر والتابع معاً .

CODE MyWinsockControl.SendData myvar

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

أحداث (Events) الأداة Winsock :

الأحداث هي الشرارة التي تبدأ تشغيل الطرق الخاصة بالأداة Winsock.

Close : يقع هذا الحدث عندما يغلق الكمبيوتر البعيد الاتصال ويمكن استخدامه في نهاية الاتصال.

Connect : ويقع لدي حدوث الاتصال بالكمبيوتر البعيد.

ConnectionRequest : ويقع لدي يستقبل السرفر الاتصال من الكمبيوتر التابع .

DataArrival : ويقع لدي استقبال بيانات من الكمبيوتر البعيد

نظرة عامة عن دوال API :

كلمة API هي اختصار لكلمة Application Programming Interface ويمكن ترجمتها " لواجهة برمجة التطبيقات " ، وعندما نتحدث عن نظام التشغيل ويندوز فإننا نعني واجهة برمجة التطبيقات الخاصة بنظام ويندوز وهذا يقودنا إلى استنتاج أن لكل نظام تشغيل واجهة برمجية مختلفة عن الأخرى ويمكن الاستفادة من هذه الواجهة في عملية اختصار حجم التطبيقات بشكل كبير وذلك فقط باستدعاء العملية التي نريدها من الواجهة وسوف يقوم نظام التشغيل بتنفيذ تلك العملية بدلا من التطبيق ولهذا يمكن اعتبار ذلك من الأشياء المفيدة جدا في عملية البرمجة وذلك ليس فقط بسبب اختصار حجم التطبيق ولكن أيضا بسبب اختصار الوقت اللازم للبرمجة بشكل خيالي وذلك لاحتواء الواجهة على جميع العمليات والدوال الشائعة الاستخدام في عمليات البرمجة مثل عمليات الحفظ واختيار الخطوط والألوان واختيار أبعاد الشاشة والتحكم في الفأرة وغيرها الكثير.
فكرتها هي تجميع مجموعة ضخمة من الدوال والإجراءات داخل ملف واحد ، وهذه الدوال تستخدم من قبل أكثر من برنامج ولها وظائف محددة مسبقاً ، وغالباً ما تكون تلك الملفات من النوع DLL .
استخدام API ليس مقتصر على لغة برمجية معينة ولكن تختلف طريقة استخدامه من لغة إلى أخرى .
ما هي فائدة دوال API ؟
تكمن الإجابة ببساطة في أنه توجد عدة أشياء يقوم بها المبرمجون بشكل متكرر مما يضطرهم لكتابة نفس الخطوات البرمجية في كل برنامج يستخدم ميزة أو خاصية تم برمجتها في برنامج آخر ، وتم حل هذا لاشكال بتوحيد تلك الوظائف وصقلها بحيث تصبح أكثر ملائمة وتوافقية .
متى تستخدم تلك الوظائف ؟
يرجع استخدامها لمهارة المبرمج وقدرته على الاستفادة من تلك الدوال أو عند الحاجة لتنفيذ أمر معين لا توفره لغة البرمجة بشكل ضمني .

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

و بهذا اكون انهيت المعلومات النظرية التي من المهم الالمام بها من اجل فهم برمجة نظام "التحكم بمنافذ الشبكة عن بعد" .. و ارجوا ان تكونوا استفدوا منها و لو الكم القليل ..

وصف مكونات نظام التحكم بمنافذ الشبكة عن بعد :

+ واجهة رئيسية خاصة بالنظام يتم انزالها على الـ (Server) او الجهاز المتحكم ببقية الاجهزة ويتم من خلالها الوصول الى الواجهات الفرعية في النظام ، و يتم من خلال هذه الواجهة تحديد نوع التحكم المطلوب أي هل هو تحكم بجهاز واحد مستقل او بمجموعة اجهزة .

+ تعرض الواجهة الرئيسية للنظام بعرض جميع المستخدمين المتصلين حالياً بالشبكة من اجل تحديد الجهات الممكن التحكم بها .

+ تقوم واجهة الرئيسية للنظام بالتحكم بمنافذ الشبكة على مستوى مجموعات يتم اختيارها من قائمة المستخدمين المتصليين حالياً بالشبكة .

+ تقوم واجهة الرئيسية للنظام بالتحكم بمنافذ الشبكة على مستوى جهاز محدد يتم اختياره من قائمة المستخدمين المتصليين حالياً بالشبكة .

+ يقوم النظام بتقديم التقارير التالية :
- عرض تقرير الاجهزة المغلق عنها خدمة محددة.
- عرض تقرير الخدمات المغلقة عن جهاز محدد.
- عرض التقرير العام للخدمات المغلقة عن كل جهاز.

+ يقوم النظام بتقديم بعض المهام الثانوية التي يتهدف الى تدعيم عمل مدير الشبكة و توفير الوقت و المجهود عليه و هي:
- غلق جهاز او مجموعة اجهزة في الشبكة عن بعد.
- ارسال رسائل الى جهاز او مجموعة اجهزة في الشبكة عن بعد.
- يعرض قائمة لمدير الشبكة تحتوي على ارقام منافذ جميع الخدمات التي تقدمها شبكة الأنترنيت من اجل توفير عملية البحث عليه.

+ تصميم برنامج خاص بالــ (Client) يعمل تلقائياً عند دخوله الى الشبكة، بحيث يكون البرنامج غير مرئي بالنسبة للمستخدم و يكون ضمن برامج الـ System Tray الموجودة بالقرب من الساعة اسفل شريط المهام في الويندوز.

__________________________________________________ ____________

الشفرة الخاصة ببناء عمليات نظام " المتحكم بمنافذ الشبكة عن بعد " :

نظام " المتحكم عن بعد " عبارة عن برنامجين ، يتم انزال الأول – و الذي يتم من خلاله المتحكم ببقية الاجهزة – على الجهاز المتحكم ، و يتم انزال البرنامج الثاني على الجهاز المراد التحكم به .
بين البرنامجين التابعين للنظام يتم تكوين قناة اتصال (Winsock) يتم عبرها ارسال رسائل تم تعريف معناها مسبقاً بين البرنامجين ، فعندما يقوم المتحكم بإرسال رسالة ما يقوم العميل بتحليل الامر الواصل اليه حتى يتعرف على معناه و منثما يقوم بإستدعاء الشفرة الخاصة بتنفيذ الامر .

http://www.l22l.com/up/vouoohsys_pic.jpg

على سبيل التفصيل ، عندما يريد المتحكم تنفيذ عملية ما لجهاز محدد في الشبكة (مثل غلق/فتح منفذ فيه او ارسال رساله له او حتى غلقه) فإنه في البداية يقوم بتحديد الجهاز من قائمة الجهات المتصلة و هذه القائمة تحتوي على جميع الاجهزة المتصلة الآن داخل الشبكة المحلية ، و بعد تحديد الجهاز يقوم بإرسال الأمر المراد تنفيذه اليه مثل الأمر : BlockRemotePort-80 من اجل غلق الخدمة رقم 80 الخاصة بإستعراض الويب ، و عندما يستقبل العميل هذا الأمر يقوم بتحليله و استخلاص رقم المنفذ المراد غلقة و منثما يستدعي الدالة التي تنفذ هذا الأمر .

كبداية ، كيف يتم استعراض الاجهزة المتصلة حالياً بالشبكة المحلية ؟

توجد العديد من الطرق التي يتم من خلالها استعراض الاجهزة المتصلة و جميعها جيدة ، مثلاً عمل قناة اتصال مع كل اجهزة الشبكة على منفذ محدد و الجهاز الذي يتم تكوين القناة معه بنجاح يعتبر جهاز متصل حالياً بالشبكة ... غير اني لم اعتمد هذه الطريقة كونها مهددة بحدوث أي خلل في تكوين القناة مما يعني امكانية عدم التحكم في جهاز هو اصلاً متواجد داخل الشبكة .. !! (هل وضحت المسألة هنا جيداً) .. ، و هناك طريقة تعتمد على استخدام احدى دوال الـ API غير اني لم اعتمدها كون ان الشفرة كانت معقدة جداً و صعبة (على الأقل بالنسبة لي) و من الممكن وضعها في حالة ارد ذلك أي شخص ...
اما عن الطريقة التي اعتمدها فهي (من وجهة نظري) بسيطة و سهلة و مجدية ... و فيها اقوم بتنفيذ الأمر Net View داخل الـ Dos عن طريق جملة Shell من داخل الـ VB حيث ان الأمر Net View خاص بإستعراض جميع الأجهزة المتصلة بالشبكة الآن ، و من اجل الحصول على ناتج هذا الأمر يتم نسخ النواتج الى ملف في السواقة C:\ و قرأته من الـ VB سطر تلو الآخر على انه تدفقي Stream File ...
الامر الذي يقوم بذلك هو :

CODE Shell "cmd /c net view >C:\comName.txt"

و بشكل عام الدالة التي تقوم بذلك :


CODE Private Sub Computers_Name_List()
On Error Resume Next
' تفريغ قائمة الجهات المتصلة
Computers_List.Clear
' انشاء الملف التدفقي
Shell "cmd /c net view >C:\comName.txt", vbHide
Dim FileSystemObject, TextStream As Object
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
'
Set TextStream = FileSystemObject.OpenTextFile("C:\comName.txt")
' قراءة محتويات الملف التدفقي سطر تلو الأخر
x = 0
Do Until TextStream.AtEndOfStream
x = x + 1
strLine(x) = TextStream.ReadLine
strLine(x) = Mid(strLine(x), 3, 18)
strLine(x) = Trim(strLine(x((
Loop

' غلق الملف التدفقي
TextStream.Close

' اظهار النتائج في قائمة الأتصال
For i = 4 To x - 2
Computers_List.AddItem strLine(i(
Computers_List2.AddItem strLine(i(
Next i

End Sub


و هنا اعرض لكم الشاشة الرئيسية للنظام (لأول مرة .. و حصرياً على منتديات الفريق العربي للبرمجة http://www.arabteam2000-forum.com/html/emoticons/regular_smile.gif ) و التي تظهر الأجهزة المتصلة حالياً بالشبكة ...


متابعة الحديث عن شفرات آلية التحكم بالمنافذ عن بعد :

كما قلت سابقاً ان آلية التحكم عن بعد تعتمد في الاساس على مجموعة من الرسائل المعرفة مسبقاً بين المتحكم و العميل ، و بالتالي اي رسالة تصل الى العميل فإنه تتطلب منه القيم بتنفيذ شفرة معينة موجودة في برنامجه ...

آلية غلق منفذ (خدمة) عن بعد :

بناء على ما سبق فإن الفكرة التي تأتي حالياً الى الذهن هي انه بمجرد ارسال امر معين الى جهة العميل من المتحكم تطلب منه غلق منفذ او خدمة معينة فإنه سوف يتم استدعاء شفرة غلق المنفذ .. ، لكن الذي يحدث في الحقيقة كما يلي :
1. تحليل الرسالة القادمة من المتحكم من اجل استخلاص شيئين منها ، الاول هو الامر المراد تنفيذه و الثاني هو عبارة عن رقم معين (و هو يدل على رقم منفذ ما ) ، و من خلال الشفرة التالية ، نلاحظ انه تم استقبال الامر و استدعاء الدالة do_comm و التي تعمل على تحليل الامر :

CODE Private Sub Winsock_controller_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim data As String

Winsock_controller.GetData data
do_comm (data)
End Sub
-------------------------------------------------------------------
الدالة do_comm(data) الخاصة بتحليل و الاوامر القادمة من المتحكم ..
Private Sub do_comm(data As String)
On Error Resume Next

Dim comm As String
Dim port_no As Integer

pos = InStr(data, "-")
comm = Left(data, pos - 1)
port_no = Right(data, Len(data) - pos)

If (comm = "BlockRemotePort") Then
Add_BlockRemPortList (port_no)
End If
If (comm = "OpenRemotePort") Then
Del_BlockRemPortList (port_no)
End If
If (comm = "OpenAllBlockedPort") Then
Blocked_RPort_List.ListItems.Clear
End If
If (comm = "ShutDown") Then
Call ShutDown
End If

End Sub

2. في حالة ان الامر القادم من السيرفر هو BlockRemotePort-80 ، فإنه سوف يتم استدعاء الدالة Add_BlockRemPortList (لأن الامر الذي تم استخلاصه هو BlockRemotePort) و هذه الدالة تتوقع ان يتم يمرير رقم المنفذ اليها port_no (الذي هو الرقم 80 ) ، و كل ما تقوم به هذه الدالة هو اضافة رقم المنفذ الى قائمة تعرف بقائمة المنافذ المغلقة ...

3. هل تمت عملية الغلق الى الآن ؟؟ .. نعم .... فالذي يحدث في الاساس ان هناك دالة اخرى تستدعى كل نصف ثانية من خلال Timer تقوم هذه الدالة بمراقبة أي منفذ يطلبه العميل الآن ... دالة الـ Timer كما يلي :


CODE Private Sub Tcp_Tab_Timer_Timer()
On Error Resume Next
Call block_port
End Sub

و الداله التي يتم استدعاءها كل نصف ثانية هي block_port و كما قلت تقوم هذه الدالة بمراقبة أي منفذ يطلبه العميل الآن (كيف .. ؟ ) عند طريق الدالة GetTcpTable ، و هي احدى دوال الـ API و الذي تقوم به بكل اختصار هو نفس العمل الذي يقوم به الامر net stat التي نستخدمها في الـ Dos من اجل معرفة معلومات عن الجهات التي الاتصال قائم بيننا و بينها حالياً .. هذه المعلومات هي مثل المنفذ الذي نحن نطلبه للأتصال بالجهاز المتصل و المنفذ الذي فتح في الجهاز من اجل عملية الاتصال و الـ IP للجهاز المتصل .. و غيرها من المعلومات المفيدة .. ، و الذي يفيدنا حالياً هو المنفذ الذي اطلب الاتصال به ، فإذا كان هذا المنفذ هو 80 فهذا يعني انني اطلب خدمة استعراض الويب http لأن هذا المنفذ محجوز لهذا الغرض .. و بعد ان تعرف الدالة block_port المنفذ الذي اريد الاتصال به الآن تقوم بمقارنة رقمه مع الارقام الموجودة في قائمة المنافذ المغلقة .. فإن كان الرقم موجود في قائمة المنافذ المغلقة فإنة تقوم بغلق الاتصال (هل اسمع كيف مرة اخرى ؟؟ http://www.arabteam2000-forum.com/html/emoticons/regular_smile.gif ) ... من الجدير ذكره ان من المعلومات التي احصل عليها عن طريق الدالة GetTcpTable ايضاً حالة الاتصال بين الجهاز و الجهاز المتصل و هي تكون حالة من 12 حالة (مغلق – متصل – استقبال شيئ – ارسال شيء – تأسيس اتصال – انتظار ...... و حذف اتصال ) ... و عليه ، فإني حتى الغي اتصال بمنفذ غير مرغوب فيه اقوم بتغير حالة الاتصال الى حالة حذف الاتصال و التي يعطى لها الرقم 12 مما يعني انهاء الاتصال ، او غلق هذا المنفذ .. و الشفرة التالية هي الخاصة بالدالة block_port() :


CODE Private Sub block_port()
On Error Resume Next
Dim no_port As Long
Dim flag As Boolean

flag = False
'------------------------------------------------
For i = 1 To lngRows
CopyMemory TcpTableRow, arrBuffer(4 + (i - 1) * Len(TcpTableRow)), Len(TcpTableRow)
Counter = 0
no_port = GetTcpPortNumber(TcpTableRow.dwRemotePort)
For j = 1 To Blocked_RPort_List.ListItems.Count
If no_port = Blocked_RPort_List.ListItems.Item(j) Then
flag = True
TcpTableRow.dwState = 12
SetTcpEntry TcpTableRow
DoEvents
End If
Next j
Next i

If (flag) Then
MsgBox " الخدمة التي تطلبها غير متاحة لك ... تستطيع مراجعة مدير الشبكة ", 1048576 + 524288 + 16, "المتحكم"
End If

End Sub

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

محمد منصور فرايتر
02-25-2006, 11:58 PM
المطلوب الاول هو تحصل على النوافذ المفتوحة في الجهاز العميل Client ، و هذا يتم عن طريق احدى دوال الـ API وهي FindWindow .. و اليك الرابط التالي الذي من الممكن ان يقرب لك مفهوم التعامل مع هذه الدالة لأني في الحقيقة كنت دوماً امر عليها مرور الكرام ..

ادخل الى الرابط و تتبع كيف تم التعامل مع الدالة FindWindow (http://www.vb4arab.com/vb/showthread.php?t=2236&highlight=%E3%DE%C8%D6+%C7%E1%E4%C7%DD%D0%C9)

و عندما تصل الى النوافذ المفتوحة حاول ان تأخذ معلوماتها و تخزنها في ملف نصي ما ، و منثما قم بإرسال الملف النصي الى الـ Server ليقم بقراءة الملف و عرضه .. و للتعامل مع كيف ارسال الملفات بين العميل و السيرفر

بالنسبة لسؤالك ... فهذا شيء غريب (على الأقل على حد علمي) .. لأني ايضاً لدي الاصدارة ذاتها منVB 6.0 Enterprise edition ، و لدي الأداة Winsock ... عموماً دعنا نرى الأسباب http://www.arabteam2000-forum.com/html/emoticons/regular_smile.gif :

+ هل اضفت الأداة بشكل صحيح ؟؟؟ و خطوات الإضافة كالتالي :

ابدأ من القائمة Project كما يلي ..

CODE Project ---> Components --> Microsoft Winsock Control 6.0


و بعدها سوف تظهر لك الاداة في شريط الادوات و ما عليك الا الضغط عليها مرتين (دبل كليك) .. و سوف تتم اضافتها الى مشروعك ..

+ اذا لم يجدي ما ذكرت لك فحاول استخدام الملف المرفق ... كما يلي


CODE Project ---> Components --> Browse

و منثما ادخل المسار الذي يوجد به الملف المرفق ...

+ و اخيراً اذا لم ينفع معك احد الحلول ، انصحك بإعادة تحميل الـ VB ... http://www.arabteam2000-forum.com/html/emoticons/regular_smile.gif

بالنسبة لقائمة المنافذ .. ارفق لك ملف يحتوي على قائمة المنافذ في دالة ترسل لها رقم المنفذ فتعيد لك وظيفة المنفذ .. و ان شاء الله سوف ارفق لك ملف بقائمة المنافذ .. لأنه موجود لدي في جهاز و يحتاج مني الى قليل من البحث .. و اعتبر الملف المرفق تصبيره http://www.arabteam2000-forum.com/html/emoticons/regular_smile.gif

QUOTE لو افترضنا مثلا ان البورت الخاص بالا نترنت هو رقم 8888 وقمنا نحن بغلق هذا البورت ومن ذلك تم منع المستخدم من العبور الى شبكة الانترنت أليس باستطاعة ذلك المستخدم استخدام اى بورت اخر مكانة لتادية هذة المهم ( ممكن تكون دى ميزة فى نظام تشغيل ذكى )


طيب خلينا اولاً مع بعض نرتب الأفكار ..
المنفذ يخصص لوضيفة محددة ... الوطيفة او الخدمة تنفذ فقط من خلال هذا المنفذ ... مثلاً عندك المنفذ 80 متخصص بطلب صفحات الويب اي ببروتوكول HTTP (هو فقط و المنفذ 8080 يؤديان هذه المهمة) ..
و عليه فأنت حينما تريد ان تقطع على المستخدم خدمة ما .. فإنك سوف تغلق فقط المنفذ الذي يطلب من خلاله هذا الخدمة ...

السؤال الآن هو كيف سأغلق الخدمة (سر الطبخة يعني) .. ؟؟

عندما تريد ان تتصفح انت موقع ما .. فإنك تتطلب من المزود ISP ان تتصل به عن طريق المنفذ 80 .. اي انك تقول له افتح لي المنفذ 80 (المنفذ 80 في سيرفر المزود) .. و بعدها هو يرسل لك الصفحة التي طلبتها ..

و عملية الغلق التي قمت بها .. تتلخص في مراقبة المنافذ التي يطلبها العميل Client و في حالة ان المنفذ المطلوب الاتصال به غير متاح .. اقوم بغلق الأتصال ...

جعلت الفقرة السابقة بلون مختلف .. لأنها هي سر المشروع .. اما السر الأخر (و الأسرار هنا لا تنتهي http://www.arabteam2000-forum.com/html/emoticons/regular_smile.gif ) .. ان المراقبة لا تتم من خلال السيرفر.. بل من خلال العميل نفسه ..

حيث يقوم السيرفر بإرسال رقم المنفذ المراد اغلاقه الى العميل .. و منثما يضع العميل هذا الرقم في قائمة بها كل المنافذ المحضورة ... و في حال ان قام بإتصال مع احدها فإن الأتصال سوف ينتهي ...
عملية المراقبة تتم كل نصف ثانية في جهاز العميل .. و لا تحدث له اي تباطيء و تكون ضمن الـStartUP .. و بشكل لا يتيح للعميل ان يتدخل به ..

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

بالنسبة للسؤال :


QUOTE شى اخر لو افترضنا اننا سقوم بقطع الطريق تمام على المستخدم وجعلنا كل يتم من على الServer مش دة يعتبر ارهاق للشبكة


انا متأكدة انك تعرف الجواب الآن .. حيث ان كل ما يقوم به السيرفر هو ارسال رقم المنفذ المراد حضره الى العميل .. و اما المراقبة فهي تتم داخل جهاز العميل و بشكل محلي و لا تسبب لجهازه اي بطىء ..
و بيني و بينك .. حتى ان كانت عملية المراقبة من السيرفر (و هي عملية كئية جداً و تؤثر على كفاءة الشبكة) .. فإن هذا لا يقلل من اهمية النظام .. لأن لكل خدمة ثمنها ..
و لكن كان من احد اهداف المشروع هو ان نرفع من اداء الشبكة .. لذلك كان الحل كما قدمته لك ..

ترى هل فهمت مني شيء ؟؟؟

سوف اقوم الآن بشرح تشغيل النظام (شاشات النظام ) و بعدها سوف اختم بالملاحظات و الاستنتاجات .. (ان شاء الله http://www.arabteam2000-forum.com/html/emoticons/teeth_smile.gif )
__________________________________________________ _____________

بعد اتمام عملية التحميل للنظام الى الجهاز الرئيسي "المتحكم" و تحميل نظام "المتحكم– العميل" الى اجهزة العملاء ، سوف تصبح مهام النظام الرئيسية و الفرعية متاحة من غلق و فتح خدمات الشبكة عن العملاء و ذلك عن بعد ، هذا بالاضافة الى بعض المهام الفرعية من غلق الاجهزة عن بعد او ارسال الرسائل اليها كما و يمكن الاستفادة من التقارير الهامة التي يقوم النظام بإنتاجها ، و لمراجعة الهيكل العام للنظام تستطيع العودة الى الصفحة رقم 2 ..

الشاشة الرئيسية للنــظام :
من خلال هذه الشاشة تستطيع الوصول الى اغلب و ظائف النظام ، و هي تعرض نوعين للتحكم بخدمات الشبكة ، النوع الاول يتمثل بالتحكم بمجموعة محددة يتم اختيارها من قائمة الجهات المتصلة Online حالياً و ذلك من خلال التبويب "التحكم بمنافذ الشبكة – مجموعات"، و النوع الثاني يتمثل بالتحكم بجهاز محدد في الشبكة يتم اختياره من قائمة الجهات المتصلة و ذلك من الخلا التبويب "التحكم بمنافذ الشبكة – فردي" .
الشكل التالي يوضح شكل الشاشة الرئيسية للنظام ، مع اهم الوظائف التي تنجز من خلال هذه الشاشة :

http://www.arabteam2000.com/picload/Files/p1_2612005341420.6398737.JPG

1.للتحديث قائمة الجهات المتصلة من اجل معرفة أي جهاز دخل الى الشبكة حديثاً .
2.الدخول الى قائمة اختيار نوع التقرير .
3.الدخول الى قائمة تعرض ارقام منافذ الشبكة و الخدمة التي يقدمها كل منفذ .
4.للتصغير شاشة النظام الى شريط المهام .
5.للخروج من النظام .
6.التبويب الخاص بالتحكم منافذ الشبكة على مستوى فردي لكل جهاز .
7.التبويب الخاص بالتحكم منافذ الشبكة على مستوى مجموعات .
8.للدخول شاشة المساعدة .
9.للدخول الى شاشة حول النظام .

شاشة التحكم بمنافذ الشبكة – مجموعات :
و تأتي هذه الشاشة كجزء من الواجهة الرئيسية للنظام على شكل تبويب ، و يتم من خلالها التحكم بمجموعة من الاجهزة على الشبكة في آن واحد ، مما يوفر من عملية التحكم الفردي اذا كان امر التحكم معني فيه اكثر من جهاز على الشبكة ، و الشكل التالي يوضح شاشة التحكم هذه :
http://www.arabteam2000.com/picload/Files/p2_2612005350120.1485407.JPG

1.قائمة تقوم بعرض الجهات ( الاجهزه ) التي هي الآن على اتصال Online ، و التي استطيع التحكم بها بمجرد انزال نظام " المتحكم – العميل " عليها .
2.مجموعة من الازرار التي تعمل على نقل الاجهزة من (و الى) قائمة الحظر ، حيث انه في حين يقوم الزر الاول بنقل جهاز ( او مجموعة الاجهزة ) محددة من قائمة جهات الاتصال الى قائمة الحظر يقوم الزر الثاني بحذفها من قائمة الحظر و ارجاعها الى قائمة جهات الاتصال ، و في حين يقوم الزر الثالث بنقل جميع جهات الاتصال الى قائمة الحظر يقوم الزر الرابع بحذفهم من قائمة الحظر و ارجاعهم الى قائمة جهات الاتصال .
3.قائمة تعرض قائمة الحظر ، و هي القائمة التي سوف يطبق عليها الخدمات التي يقدمها النظام من غلق خدمة ما او ارسال رسالة معينة او اغلاق الجهاز ، و جميع ذلك يتم عن بعد .
4.بعد تحديد جهات الحظر ، يتم الضغظ على زر "اعتمد قائمة الحظر" و الذي يقوم في الاساس بتكوين قناة الاتصال مع كل جهاز موجود في قائمة الحظر و ارسال الاوامر اليه و التي تكون كغلق خدمة ما عنه او ارسال رسالة اليه او اغلاقة ، و عند الغط عليه يتم تفعيل "الخدمات" التي يقدمها النظام .
5.يتم ادخال رقم المنفذ المراد غلقة عن قائمة الحظر في مربع النص هذا.
6.عند الضغط على هذا الزر يتم غلق المنفذ المحدد في مربع النص السابق على جميع الاجهزة الموجودة في قائمة الحظر .
7.عند الضغط على هذا الزر يتم طلب ادخال الرسالة المراد ارسالها الى جميع الاجهزة الموجودة في قائمة الحظر .
8.عند الضغط على الزر يتم غلق جميع الاجهزة الموجودة في قائمة الحظر .
9.يقوم هذا الشريط بإظهار مدى تقدم عملية تنفيذ الخدمة التي تم تحديدها Progress Bar.

شاشة التحكم بمنافذ الشبكة – فردي :
و تأتي هذه الشاشة كجزء من الواجهة الرئيسية للنظام على شكل تبويب (مثل شاشة شاشة التحكم بمنافذ الشبكة – مجموعات) ، و يتم من خلالها التحكم بجهاز محدد على الشبكة ، و الشكل التالي يوضح شاشة التحكم هذه :

http://www.arabteam2000.com/picload/Files/p3_2612005351480.3285639.JPG

1.قائمة تقوم بعرض الجهات ( الاجهزه ) التي هي الآن على اتصال Online ، و التي استطيع التحكم بها بمجرد انزال نظام " المتحكم – العميل " عليها .
2.عند الضغط على هذا الزر سوف يتم الدخول الى شاشة التحكم الخاصة بالجهاز المحدد في قائمة الاتصال ، و التي من خلالها يقوم النظام بتقديم الخدمات الخاصة بالتحكم بالمنافذ الخاصة بهذا الجهاز من فتح خدمة او غلقها ، و سوف يأتي تفصيلها لاحقاً .
3.عند الضغط على هذا الزر يقوم التقرير بعرض تقرير عن الخدمات المغلقة عن هذا الجهاز ، و سوف يأتي تفصيل التقاير التي يقدمها النظام لاحقاً .
4.عند الضغط على هذا الزر سوف يتم طلب ادخال الرسالة المراد ارسالها الى الجهاز المحدد في قائمة الاتصال .
5.عند الضغط على هذا الزر سوف يتم تكوين قناة الاتصال مع الجهاز المحدد في قائمة الاتصال ، و ذلك من اجل تنفيذ الخدمات التي تحتاج الى اجراء اتصال مباشر مثل خدمة غلق خدمة ما او غلق الجهاز ، و عند حدوث الاتصال ، سوف يتم تفعيل الزرين غلق الخدمة ، و اغلاق الجهاز .
6.يتم ادخال رقم المنفذ المراد غلقة عن الجهاز المحدد في قائمة الحظر في مربع النص هذا.
7.عند الضغط على هذا الزر يتم غلق المنفذ المحدد في مربع النص السابق على الجهاز المحدد في قائمة الاتصال.
8.عند الضغط على الزر يتم غلق الجهاز المحدد في قائمة الاتصال .

__________________________________________________ __________
شاشة التحكم الخاصة:
و يتم من خلال هذه الشاشة التحكم بمنافذ جهاز محدد من قائمة الاتصال الموجودة في شاشة "التحكم بمنافذ الشبكة - فردي"، و يكون هذا التحكم على شكل فتح و غلق المنافذ، و الشكل التالي يوضح على سبيل المثال شاشة التحكم الخاصة بالجهاز jam-pc:

http://www.arabteam2000.com/picload/Files/p4_2612005353340.2168085.JPG

1.اسم الجهاز التي لوحة التحكم خاصة به .
2.قائمة بجميع المنافذ المغلقة عن الجهاز و الخدمات التي تقدمها هذه المنافذ و تاريخ غلق كل منفذ .
3.قائمة منسدلة يتم الوصول اليها بالضغط على الزر الايمن للفأرة و ذلك بعد تحديد منفذ معين يتم فتحة لإختيار الامر "افتح الخدمة" من القائمة المنسدلة ، و اختيار الامر "افتح جميع الخدمات المغلقة" ليتم فتح جميع المنافذ المغلقة عن الجهاز .
4.يتم ادخال رقم المنفذ المراد غلقة عن مربع النص هذا.
5.عند الضغط على هذا الزر يتم غلق المنفذ المحدد في مربع النص السابق على الجهاز.
6.عند الضغط على هذا الزر تتم العودة الى الواجهة الرئيسية للنظام .

شاشة التقارير :
و يتم الوصول الى هذه الشاشة عن طريق الواجهة الرئيسية للنظام كما ذكرنا سابقاً ، و هي تعرض لنا انواع التقارير التي يقدمها النظام ، الشكل التالي يوضح شاشة التقارير و الانواع المتاحة :

http://www.arabteam2000.com/picload/Files/p5_2612005354220.7265283.JPG

1.النوع الاول من التقارير يقوم بعرض الخدمات المغلقة عن جهاز معين
2.النوع الثاني من التقارير يقوم بعرض الاجهزة المغلق عنها خدمة معينة
3.النوع الثالث من التقارير يقوم بعرض تقرير عام عن جميع الاجهزة و الخدمات المغلقة عن كل جهاز .

و في جميع الانواع السابقة و بعد اختيار النوع المطلوب و الضغط على الزر "التالي" تظهر لنا الشاشة في الشكل التالي و التي تعرض على سبيل المثال تقرير عام ( النوع الثالث من التقارير) عن جميع الاجهزة و الخدمات المغلقة عن كل جهاز :

http://www.arabteam2000.com/picload/Files/p6_301200546450.4269068.JPG

و عند الضغط على الزر "الشاشة الرئيسية" فسوف يغلق النظام شاشات التقارير و يعود الى الواجهة الرئيسية للنظام ، و عند الضغط على الزر "عودة" فسوف يعود النظام الى الشاشة الخاصة بإختيار نوع التقرير ، و عند الضغط على الزر "عرض التقرير للطباعة" فأن النظام سوف يفتح لنا الشاشة الموضحة في الشكل التالي و التي تتيح لنا اخراج التقرير بالطابعة :

http://www.arabteam2000.com/picload/Files/p7_301200547253.159732E-02.JPG
______________________________________


:36_3_15:

محمد منصور فرايتر
02-26-2006, 12:05 AM
اليوم اصل معكم الى اخر محطة في هذا الموضوع ، و اطرح فيها الملاحظات و الاستنتاجات ،،

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

الملاحظات و الاستنتاجات :
1. تم تحقيق الهدف الرئيسي للنظام ، و هو بناء نظام يتحكم بخدمات الشبكة على مستوى جهاز او مجموعة محددة من الاجهزة بمعزل عن بقية اعضاء الشبكة الاخرين .

2. النظام قادر على حظر خدمات يحددها مدير الشبكة عن جهاز محدد في الشبكة .

3. النظام قادر على حظر خدمات يحددها مدير الشبكة عن مجموعة من الاجهزة في الشبكة .

4. النظام قادر على فتح خدمات كانت محظورة على جهاز محدد في الشبكة.

5. النظام قادر على فتح كل الخدمات التي كانت محظورة على جهاز محدد في الشبكة .

6. يقدم النظام العديد من التقارير التي تساعد مدير الشبكة في اتخاذ القرار وهي:
6.1. تقرير عن الخدمات المغلقة عن جهاز محدد.
6.2. تقرير عن الاجهزة المغلق عنها خدمة محددة .
6.3. تقرير عام يعرض جميع الاجهزة و الخدمات المغلقة عن كل جهاز .

7. النظام يقدم خدمات اضافية لمدير الشبكة و هي :
7.1. خدمة غلق جهاز او مجموعة اجهزة محددة في الشبكة .
7.2. ارسال رسائل الى جهاز او مجموعة اجهزة محددة في الشبكة .

8. جميع الانجازات السابقة تقدم دعم لوقت و مجهود مدير الشبكة ، كما انها تضيف خصائص جديدة للجهاز المتحكم لإجهزة الشبكة .

9. لا يشترط ان يتم تنفيذ نظام " المتحكم " على جهاز Server ، حيث انه يعمل من أي جهاز و يتحكم بجميع الاجهزة التي يتم تحميل نظام " المتحكم – العميل " عليها .

10. عند تحميل نظام " المتحكم – العميل " على اجهزة الشبكة فإنه سوف يتم تحميله ضمن الـ Start Up من اجل ان يعمل في كل مرة يدخل فيها العميل الى الشبكة ، كما ان النظام سوف يكون في الـ System Tray و هي البرامج التي تكون بقرب الساعة على شريط المهام ، و عند الضغط عليها سوف يظهر للعميل قائمة الخدمات المغلقة عنه.

11. تم ربط نظام " المتحكم" بقاعدة بيانات Access ليتم حزن اسم كل جهاز و المنافذ المغلقة عنه و الخدمة التي يقدمها كل منفذ و تاريخ غلق المنفذ في قاعدة البيانات، في حين تم ربط نظام "المتحكم - العميل" بملف نصي من الامتداد.ini و ذلك ليتم خزن المنافذ المغلقة عن الجهاز و يتم استرجاعها في كل مرة يعمل فيها النظام ، و السبب في ذلك ان برنامج العميل لن يحتاج الى قاعدة بيانات كبيرة حتى يتم ربطة بقاعدة بيانات ، هذا بالاضافة الى الملفات .ini تستخدم عادة لهذا الغرض ( غرض حفظ اعدادات البرامج) ، و كما انه قبل اعتماد نظام الـ Registry للـ Windows لخزن معلومات النظام كان يتم خزنها في ملفات .ini ، و يتم التعامل مع الملف .ini بنفس الطريقة التي نتعامل بها مع الـ Registry و ذلك من حيث تخزن المعلومات في اقسام Section و كل قسم يحتوي على مفتاح Key و لكل مفتاح قيمة Value .

12. من المشاكل التي واجهة النظام هي حدوث خلل في الاتصال من حين الى اخر بين نظام "المتحكم" و نظام "المتحكم - العميل" و ذلك عندما كنا نقوم بتديل مستوى التحكم من فردي الى مجموعات الى تحكم عبر شاشة التحكم الخاصة بجهاز محدد ، و تم تفادي هذه المشكلة بتكوين ثلاث قنوات اتصال Winsocks تكون الاولى مخصصة للتحكم مجموعة اجهزة و الثانية للتحكم بجهاز معين و الثالثة للتحكم بجهاز معين عبر شاشة التحكم الخاصة .

13. كذلك كان من المشاكل التي واجهت النظام هي صعوبة الحصول على المتصلين حالياً بالشبكة ، حيث انه كانت هناك طريقتين الاولى عمل اصال وهمي مع جميع اطراف الشبكة و الجهاز الذي يرد على الاتصال يتعبرانه متصل ، و الطريقة هذه تم استبعاده تحسباً لدوث أي خطأ في الاتصال مع الجهاز مما يتعذر الاتصال به او استقبال استجابة منه ، اما الاسلوب الثاني هو طريق استخدام دوال الـ API و تم استبعاد هذه الطريق لتعقيد هذه الطريقة ، وتم حل هذه المشكل باسلوب بسيط و هو تنفيذ الامر net view في الـ Dos عن طريق الـ Shell في الـ VB و الذي يقوم بعرض جميع حالات الاتصال حالياً في الشبكة و تم خزن ناتج هذه الامر في ملف نصي من اجل ان تتم قراءته على شكل ملف Stream في الـ VB هيئة سطر يلي سطر و علاض المحتويات في قائمة الجهات المتصلة .

14. من الجدير ذكره هنا ان مرحلة البحث حول هذا الموضوع ( و التي كانت منذ الصيف الماضي و حتى شهر فبراير ) اسفرت عن سهولة عند تصميم النظام و جعلت جميع المشاكل التى ظهرت غير معيقة ابداً ، كما انها اعطت نظرة جيدة عن موضوع امنية الشبكات ، و الحمدللة و الفضل لله من قبل و من بعد .

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

ارجوا فعلاً ان اكون قد افلحت فيما قدمت ، و ان يقبله الله منى كعمل صالح ، و ان يكون هناك من استفاد من هذا الطرح ...

و نصيحتي لكل مهتم ان يقرأ فقرة الملاحظات و الاستنتاجات ، لانها تمثل خلاصة جيدة للموضوع ...
بالنسبة لفائدة النظام كـ ISP Server ، فإنه ينبغي التنوية الى ان سيرفر الجهة المزودة لخدمة النت به العديد من المهام ، احدها الـ Proxy كما ذكرت و الذي يقدم بشكل رئيسي خدمة حجب المواقع و ايضاً خدمة غلق المنافذ الغير مرغوب فيها (و الكل يندرج تحت نظم الجدران النارية Firewalls) ، و هذا ما يقدمة النظام الذي وضعته ،،، و بالفكرة التي يعمل بها نظام التحكم هذا فإن العديد من خدمات الحماية التي تقدمها الجدر النارية ممكنه جداً و لكن ينبغي ان اذكر ان نظام التحكم بمنافذ الشبكة عن بعد قد يبدو مفيداً لفكرة خدمة يقدمها الـ ISP Server و لكن الهدف الرئيسي من النظام هو خدمة الشبكات الداخلية فقط ، و لم اجربه الا على شبكة داخلية بسيطة ، و لم اطمح ان اصل به الى ابعد من ذلك بعد ، و لكن في المستقبل من يدري !! http://204.157.36.16/style_emoticons/default/regular_smile.gif

اما بالنسبة لتعدد المهام او الـ MultiAgent System الذي ذكرته ، فإذا تقصد بذلك خدمة اكثر من عميل Agent في نفس الوقت ، فإن ذلك احد اهم اهداف هذا النظام و قد تم تحقيق ذلك بنجاح من خلال استخدام الأداة الـ Winsock التي استخدمت لإجراء ربط متعدد الاتصالات - جهاز الخادم يستقبل أكثر من عميل - و قد ادت الغرض بنجاح و الحمدلله ،، و من الممكن ارفق لك مثال بسيط على ذلك (وجدته في النت) على استخدام الوينسوك لإجراء ربط متعدد الاتصالات ..
و اخيراً فكما رأيت أن الفكرة في هذا النظام هي التحكم بأجهزة الشبكة عن طريق الـ Server ، و الذي يحدث هو ان الـ Server يرسل فقط اشارة (امر) الى العميل و عملية التحكم تتم بشكل كامل من داخل جهاز العميل .. و عليه فإننا حتى نجعل النظام في غاية الكفاءة علينا ان نمنع غلق برنامج العميل ، و الاقتراح في هذا النظام هو ان يضع النظام مع برامج الـ Start Up و ان يمنع ظهوره في شاشة الـ Task Manager (بإستخدام دالة API) و بالتالي فإنه سيعمل في الخلفية بدون ان يصل له العميل .. و في الحقيقة ، النظام لم يضع تحت تجربة واقعية 100% و لكن إن شاء الله سوف اقوم بتغطية اي عيب من هذا الجانب (المهم جداً) عند التطرق الى وضع نسخة عمل حقيقة من النظام ،،،

في مسألة الغاء البرنامج لائحة البرامج ، لماذا لا تجرب الامر التالي :

CODE
App.TaskVisible=False


الامر السابق سوف يمنع ظهور البرنامج ضمن القائمة Task Manager اي (Alt +Ctr+ Del) ، و بذلك لن يمكن ان يتم اغلاق البرنامج (و لقد جربت الامر حتى على XP) ..
الشيء الاخر البرنامج كما اشرت سابقاً سوف يكون ضمن الـ SysTray اي انه بشكل مستر شغال .. و المراقبة تتم في كل لحظة ،،
و اريد ان اوضح لك شيء مهم ، النظام لا يعتمد على لغة VB بشكل كامل ، على العكس ، الفكرة الاساسية تعتمد على دوال API ، و بالتالي من الممكن تحويل الكود في لحظة الى لغة اخرى - مثل السي - ، و قد قلت سابقاً اني بدأت العمل بلغة سي بلس (تستطيع العودة الى موضوع برمجة الشبكات في منتدى قسم السي و سوف تجد بداية الموضوع هناك http://204.157.36.16/style_emoticons/default/regular_smile.gif ) ، و لكني عدت و استخدمت الـ API مع الـ VB لأني وجدت مشكلة في تصميم واجهات جيدة و سهلة في لغة السي ،، و مع ذلك ، فإن قدرة الـ VB و قوتها اكثر من ما تتصور بكثير و من الممكن عمل الكثير من التطبيقات الهامة فيها ، فيكفي هذه المرونة فيها في التعامل مع دوال الـ API التي تمكنك من عمل اعقد التطبيقات !!
بالنسبة للمصطلح multithreading فأنا لا اعرف ما المقصودة به ، فهل لااعطتني فكرة عنه (مشكور مسبقاً http://204.157.36.16/style_emoticons/default/regular_smile.gif ) حتى استطيع ان اعرف ان كان هذا الامر سيوقف فعالية VB او لا http://204.157.36.16/style_emoticons/default/rolleyes.gif
بخصوص عدم تمكن الامر TaskVisible من ابعاد البرنامج عن المستخدم ، و هو شيء الى حد ما مقلق ، و لكن من الممكن ايضاً الاستعاضة عنه بغلق امكانية الوصول الى TaskManager ، او حتى تعطيل الازرا Alt,Ctrl,Del كما في الشيفرة التالية :



CODE
ضع التعريفين التاليين في قسم التعريفات

Private Declare Function SystemParametersInfo Lib _
"user32" Alias "SystemParametersInfoA" (ByVal uAction _
As Long, ByVal uParam As Long, ByVal lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Sub DisableCtrlAltDelete(bDisabled As Boolean)
Dim X As Long
X = SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub
لإبطال عمل المفاتيح ضع السطر التالي في المكان المناسب

Call DisableCtrlAltDelete(True)

لإعادة عمل المفاتيح ضع السطر التالي في المكان المناسب

Call DisableCtrlAltDelete(False)


و عموماً ، ارجوا منك ان وجدت شيء اجدى من ذلك ، ان تفيدنا به ، و لن اخفيك اني كنت اركز في النظام على عملية غلق المنافذ عن بعد ، و تركت هذا الجانب لمن يريد ان يطور النظام المقترح ،، و المجال للتطوير و التعديل ما زال في بدايته .
اما نقطة تنفيذ عدة مهام بالتوازي ، فأنا اعتقد انك ترمي الى ان عمل النظام في الخلفية سوف يؤثر على اداء الجهاز الهدف ، و هذا ما طرح من قبل من احد الاخوة او الخوات هنا ، و في الحقيقة لكل شيء مفيد ثمن ، و لقد جربت عمل النظام في شبكة LAN و لم تؤثر العملية على السرعةة او الاداء بشكل ملحوظ و لكن هذا شيء ايضاً من الممكن تطويره ،،


QUOTE
الأمر net view يعرض الأجهزة المتصلة بدومين أو بالورك جروب اللي أنها فيها فقط


كلام صحيح لأن هذا هو الغرض فقط ، اي ان اعرض المتصلين بالشبكة الداخلية الواحدة (التابعة لدومين واحد) ، و التحكم يتم فقط على مستوى المجموعة التي معك .. قد ترى ان في ذلك قصور .. لكن يا اخي الكريم كلما كانت الأجهزة التي تتحكم بها معروفة و محددة عندك كلما زادت فعالية النظام ، و العكس يؤدي الى التشتت و قلت المرونة ، هذا ما رأيته انا على الاقل .. ما رأيك ؟؟ (كل جروب لهم متحكم واحد ) .. http://204.157.36.16/style_emoticons/default/regular_smile.gif


QUOTE
وعند تنفيذ الأمر بالكامل كما هو مكتوب في الصفحة 2 فأجد الجهاز كما لو دخل في infinite loop
وأعتقد لأنه عند تنفيذ سطر الnet view وعمل ملف بها ، يكون البرنامج بينفذ السطر الخاص بالقراءة من الملف مما يؤدي لما حدث.


اممممم ، هذا الكود ماشي معي - ميت فل و حلاوة http://204.157.36.16/style_emoticons/default/regular_smile.gif - اممممم خليني اعملك برنامج مصغر بالفكرة هاذي و نشوف مشكلتك فين ، اوكي ..


QUOTE
بالنسبة للكتابة في ملف ini والقراءة منه أرجو وضع وصله له حتى يتسنى لي فهمها


حالياً و للأمانة ما عندي مرجع بالملفات ini ، لكن ممكن اعمل لك بحث ، و ممكن تجرب ان تعمل هنا بحث في المنتدى لأنو سبق و تم الحديث عنها على ما اذكر ..


QUOTE
بالنسبة للدالة block_port أرجو وضع شرح شامل لها وكيف عرفتي الدوال التي استخدمتيها مع طريقة استخدامها


الله المستعان !!!!!!! و الله اخي m_ab_78 الدالة هاذي هي التي شرحتها بالتفصيل هنا ، فقط عد الى الموضوع و سوف تجد شرحها مفصل مع توضيح الدوال .. اوكي http://204.157.36.16/style_emoticons/default/regular_smile.gif


QUOTE
أرجو وضع ملف بقائمة المنافذ


حاضر اخي الكريم ، الملف ليس في جهازي هذا (حيث اني الآن في العمل) ، حالما اصل الى جهازي في البيت سوف ارفق لك قائمة المنافذ ..


QUOTE
هل يوجد طريقة تعرف المستخدم العادي المنافذ المفتوحة والمغلقة ، مع فتح المغلق طبعاً، إذا وجدت فأعتقد إنها قد أصابت البرنامج في مقتل


لم افهم سؤالك بالضبط ، لكني اعتقد اني اعرف ما ترمي اليه ,,, هل يستطيع المستخدم الوصول الى البرنامج ليفتح و يغلق المنافذ بنفسه ؟؟ (صح)
و هذا يجعلني اقول انك لم تتمعن في فكرة مشروعي بالضبط .. http://204.157.36.16/style_emoticons/default/regular_smile.gif
اخي الكريم : عملية الغلق و الفتح تتم من خلال الجهاز المتحكم (السيرفر غالباً) فقط فقط فقط ،، المستخدم العادي لا تظهر عنده الا شاشة بها ارقام و اسماء المنافذ الممنوعة عنه - فقط فقط فقط http://204.157.36.16/style_emoticons/default/regular_smile.gif


QUOTE
بالنسبة لكود تعطيل الازرار Alt,Ctrl,Del لم يعمل معي ولا أدري لماذا، مع العلم أنه يمكن تشغيل الTask Manager
عن طريق TaskBar بضط الزر الأيمن عليه فتظهر لنا قائمة منسدلة بها Task Manager،
غير أنه من الممكن عمل uninstall للبرنامج(لأن مدير الشبكة لن يعرف الأجهزة المنصب عليها البرنامج).


امممم فكرة تعطيل الازرار Alt,Ctrl,Del تعمل فعلاً ، و اذا لم يجدي معك الكود فهناك العديد من المواضيع التي تتحدث عن هذا الموضوع ، لكني في الحقيقة لم اقتنع بأحدها ، الا موضوع قرأته قريباً و هو عمل ذلك عن طريق الريجستري و هذا افضل و اقوى جداً

:36_1_11:

ghaith
03-26-2008, 02:40 PM
الف شكررررررررررررررررررررررررررررررررررررر

galag8
06-18-2008, 09:36 AM
مشروعع يجنن انا شغال نفس الموضوع بس عن طريق دلفي