الأربعاء، 20 أكتوبر 2010

استخراج ملفات الصوت والصور من ملفات الفلاش (SWF) في نظام لينكس


استخراج ملفات الصوت والصور من ملفات الفلاش (SWF) في نظام لينكس


تحتوي ملفات الفلاش على العديد من الملفات الصوتية و الصور , و لابد أنك أردت استخراج ملف صوتي أو صورة من هذه الملفات , في هذا الشرح البسيط سأبين كيفية الحصول على الملفات المراد أستخرجها.

 التنصيب:


·         في محث الأوامر "Terminal" قم بكتابة الأمر التالي:
apt-get install swftools

سيقوم هذا الأمر بتثبيت مجموعة من الأوامر للتعامل مع ملفات الفلاش (SWF) , في هذا الدرس سنتعامل فقط مع البرنامج "swfextract" .

الاستخدام :


لعرض محتويات ملف الفلاش أاستخدام البرنامج كالتالي في محث الأوامر :
swfextract 1.swf

*لقد استخدمت ملف الفلاش "1.swf" كمثال تستطيع استخدام أي ملف فلاش لديك .


سيعرض الأمر المكونات كالتالي :
Objects in file 1.swf:
 [-i] 61 Shapes: ID(s) 5, 12, 14, 16, 23, 25-36, 38, 41, 47-58, 61, 63-68, 71-74, 77-79, 82-84, 89, 91-99, 102, 103, 106
 [-i] 20 MovieClips: ID(s) 6, 8, 10, 11, 13, 15, 17-19, 39, 45, 59, 69, 75, 80, 85, 87, 100, 104, 107
 [-j] 3 JPEGs: ID(s) 4, 60, 88
 [-p] 1 PNG: ID(s) 22
 [-F] 3 Fonts: ID(s) 1-3
 [-f] 1 Frame: ID(s) 0
 [-m] 1 MP3 Soundstream



يقوم البرنامج بعرض المكونات حسب النوع مع المعرف الخاص بالمكون "ID" , سنستخدم هذا الرقم في عملية الحصول على الملفات , لاحظ أن البرنامج يعرض لك الأمر المستخدم لكل نوع من الملفات كملفات PNG "[-p]".
الآن إلى مثال  بسيط للحصول على ملفات "PNG" :

swfextract –p 22 1.swf –o image1.png

و الأن لشرح الأمر :
-p: الأمر يدل على أننا اخترنا نوع الملف المراد أستخرجها ملحقا برقم المعرف للعنصر 22 .
1.swf: أسم الملف المراد الحصول على الملفات منه         .
-o: أسم الملف الذي ستحفظ في البيانات .

الاثنين، 18 أكتوبر 2010

شرح الأداة Netcat في لينكس و ويندوز

شرح الأداة NETCAT


مقدمة:
تعد الأداة "netcat" من الأدوات المتعدد أستخدمها , تستطيع تحويلها ألى سيرفر أو كاشف للمنافذ المتاحة , سأتطرق في هذا الموضوع ألى طريقة تثبيت الأداة و أستعمالتها .


التثبيت :


Windows:


1-قم بتنزيل البرنامج من هذا الرابط .
2- قم بفك ضغط الملف في المجلد "c:\Windows\System32".
3-الآن تستطيع استخدام الأمر "nc" من منفذ الأوامر   "cmd"(لكي تتعرف على منفذ الأوامر أتبع الرابط).

Ubuntu:


·         في الغالب تأتي أنظمة لينكس مع البرنامج "netcat" , و لكن في حالة عدم وجوده أستخدم الأمر التالي :
apt-get install netcat
تستطيع التعامل مع الأمر بواسطة المحطة الفرعية "Terminal" أو محث الأوامر بطباعة الأمر "nc".

الأوامر الخاصة بــ"netcat":


الأمر
الشرح
-c
استخدام "/bin/bash" لتنفيذ الأوامر عند اتمام الأتصال (هذا الاختيار موجود في لينكس فقط)
-e
تحديد أسم البرنامج الذي سينفذ عند نجاح الأتصال
-h
أظهار التعليمات لبرنامج Netcat
-i
تحديد الوقت بين كل عملية اتصال يقوم بها البرنامج "هذا الاختيار مفيد في حالة البحث عن المنافذ المتاحة "port scanner" "
-l
يصبح البرنامج في حالة انتظار الاتصال "server mode"
-n
يعتمد البرنامج على "IP" بدل أسم الموقع "domain"
-o
الملف المستخدم في حفظ البيانات المستقبلة.
-p
رقم المنفذ المستخدم
-r
استخدام قيم عشوائية لقيمة المنفذ
-q
عدد الثواني الانتظار قبل إغلاق الاتصال النشط , بعد استلام أشارة نهاية الملف "EOF".
-s
تحديد عنوان المصدر
-t
استخدام "TELNET negotiation" الخاصة برتوكول التلنت
-u
استخدام برتوكول UDP
-v
أظهار المزيد من المعلومات عن الاتصال , أذا اردت عرض جميع المعلومات قم بكتابة "-vv"
-z
يستخدم هذا الأمر في حالة البحث عن المنافذ المتاحة "Port scanning"



الأمثلة:


·         برنامج محادثة بسيط :
قم بكتابة الأمر :
nc –l –p 244
ثم قم بكتابة الأمر التالي في حاسب أخر على نفس الشبكة أو قم باستخدام نافذة أخرى لمحث الأوامر (لقد قمت بتنفيذ الأمر على نفس الحاسب لذا استعملت عنوان الحاسب الداخلي (localhost) أو الأي بي "127.0.0.1" , لذ أذا قمت بتنفيذ الأمر على حاسبين على نفس الشبكة أستبدل العنوان الذي وضعته بالأي بي الخاص بالحاسب) :
nc localhost 244
ستلاحظ أن الكتابة التي تطبع في أي الشاشتين .
·         
 عرض نوع السيرفر الذي يستضيف الموقع :
قم بكتابة الأمر التالي :
nc example.com 80

يقوم الأمر بالاتصال بالموقع "example.com" , عند نجاح الاتصال قم بكتابة الأمر :

GET / HTTP/1.1
<ENTER>
<ENTER>


قم بضغط <ENTER> مرتين بعد السطر الأول , أبحث في السطور الأولى من رد السيرفر عن ما يشابه التالي :

HTTP/1.1 200 OK
Date: Fri, 28 Nov 2008 14:11:49 GMT
Server: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c
Last-Modified: Wed, 26 Nov 2008 19:34:17 GMT
ETag: "228c707-21b1-b6b7e040"
Accept-Ranges: bytes
Content-Length: 8625
Content-Type: text/html


سترى في السطر الأول التعليمة "HTTP/1.1 200 OK" التي تدل على نجاح الاتصال , ثم أنظر الى التعليمة "Server:" سترى أننا نتعامل من سيرفر من نوع apache  و الإصدارة "2.2.3" يعمل على نظام Debian.

·         أنشاء سيرفر HTTP بسيط :

cat page.html > nc –l –p 80

قم باستبدال الأمر "cat" بالأمر "sort" في نظام ويندوز , يقوم الأمر netcat بإرسال محتويات الملف "page.html" ألى المتصفح , لكي ترى عمل السيرفر قم بفتح المتصفح على الحاسوب الذي نفذه عليه الأمر , و أكتب في العنوان "localhost" .

·         برنامج بحث عن منافذ TCP المتاحة :

nc –z –v example.com 2-2344
"2-2344" يدل على مجال المنافذ التي تنفذ عليها عملية البحث , في حالة تفقد حالة منفذ واحد تستطيع كتابته كالتالي "80" , وفي حالة أكثر من قيمة للمنفذ تستطيع أن تمرره كالتالي "70 234 12 234" تفصل بينهما محرف المسافة.

·         برنامج يبحث عن منافذ UDP المتاحة:

nc –z –v –u example.com 123 23 12

الفرق الوحيد بين الأمرين هو وجود التعليمة "-u" , التي تستخدم لبرتوكول "UDP" .









الخميس، 14 أكتوبر 2010

شرح الأداة Netstat في نظام ويندوز


NETSTAT

في نظام ويندوز

المقدمة:
تستخدم الأداة "NETSTAT" في عرض معلومات عن الاتصالات بالشبكة و البروتوكولات المستخدمة مع المنافذ المستخدمة و التي تنتظر الاتصال و العناوين المتصلة لحاسبك وتتواجد على نظامي ويندوز و لينكس وسأبدأ بشرح استخدام الأداة على نظام ويندوز ثم نظام لينكس (أن شاء الله) .

الاستخدام :
يقدم برنامج "NETSTAT" معلومات الاتصال على شكل نصي لذا يجب استخدام مترجم الأوامر "cmd" لكي تستطيع التعامل معه,(أذا أردت التعرف على مترجم الأوامر أضغط الرابط" .
قم بطباعة الأمر "NETSTAT" في مترجم الأوامر , سيكون المخرجات كالتالي:


Active Connections
  Proto  Local Address          Foreign Address        State
TCP    DELL-LAPTOP:211   www.google.com:80 ESTABLISED


هذا الأمر سيظهر الاتصالات الجارية فقط , نبدأ بشرح المعطيات :
proto: نوع البرتوكول المستخدم في الاتصال (TCP, UDP)
Local Address: عنوان الجهاز المستخدم (جهازك) و المنفذ المستخدم , لاحظ أنه يفصل بين أسم الحاسب و المنفذ باستخدام ":" .
Foreign Address: عنوان الحاسب الذي يتم الاتصال به مع رقم المنفذ , يفصل بينها بـ ":".
State: حالة الاتصال و في هذه الحالة "ESTABLISED" , و لكي تفهم الحالات الأخرى سأتطرق بشكل مبسط لبرتوكول "TCP" و "UDP".


البرتوكول "TCP" :
يعتمد برتوكول "TCP" على Flags)-أعلام( في الحزمة للتحكم بعملية الاتصال كما في عملية الاتصال العادية  والتي تسمى عملية "3-Way Hand Shack" لبدأ الاتصال أنظر النموذج :
 

1-يقوم حاسبك بإرسال طرد "TCP" يكون فيه العلم (Flag) "ACK" موجود ليطلب الاتصال لنفترض أنه المنفذ 80 تكون حالة الاتصال في الحاسب العميل "SYN_SENT" .
2-في حالة كون المنفذ متاح على الحاسب "Server", أي أن المنفذ في وضعية  انتظار الاتصال "LISTENING" في هذه الحالة يرسل الخادم "SERVER" طرد "TCP"  يحمل العلمين (Flag) "SYN/ACK" إلى المنفذ الذي صدر منه الطلب على حاسبك لنفترض أن 2443 و تكون حالة الاتصال في الخادم(ٍSERVER) "SYN_RCVD".

3- تصبح حالة الاتصال في العميل "Client" "ESTABLISHED" متصل ,لتأكيد الطلب يرسل حاسبك طرد "TCP" يحمل العلم (Flag) "ACK".

4-عند استلام الحزمة من العميل , تتحول حالة الاتصال إلى  "ESTABLISHED" متصل.


في حالة إنهاء الاتصال تكون كالتالي:

1-يرسل أحد أطراف الاتصال حزم "TCP" مع العلم "Flag" (FIN) الذي يرمز لطلب إنهاء الاتصال تصبح حالة الاتصال (FIN_WAIT_1).

2- عند استلام الحزم التي تحتوي على طلب إنهاء الاتصال يتحول حالة الاتصال في الخادم إلى "CLOSE_WAIT".
3-يرسل الخادم حزمة تحتوي على العلم "Flag" (ACK) إلى العميل , تتحول حالة الاتصال في العميل إلى "FIN_WAIT_2" .

4-يرسل الخادم حزمة تحتوي على العلم "Flag" (FIN) , وتتحول حالة الاتصال إلى "LAST_ACK" في الخادم.

5-عند استقبال "LAST_ACK" , يقوم العميل بتحويل حالة الاتصال لديه إلى "TIME_WAIT" ,أي أنه ينتظر لإنهاء الاتصال , ويقوم أيضا بإرسال حزمه تحتوي على العلم "Flag" (ِACK)
 
6- عند استلام الخادم (SERVER) لحزمة من العميل , يقوم بإغلاق الاتصال. 



البرتوكول UDP:
يعتمد البرتوكول "UDP" على طريقة اتصال أقل تعقيدا كما في المثال التالي:

في البرتوكول "UDP" يحتوي على حالتين لمنفذ برتوكول "UDP" و هي :
1-      LISTENING ( حالة انتظار الاتصال)
2-      ESTABLISED (في حالة الاتصال النشط)

 

المعلمات :
الأمر
الشرح
-a
عرض جميع الاتصالات , و المنافذ المستخدمة و التي في حالة انتظار لاتصال " LISTENING".
-e
عرض إحصائيات مثل عدد البايتات المرسلة و المستقبلة و الأخطاء.
-n
تقوم بعرض العناوين الرقمية "IP ADDRESS" بدل الأسماء .
-o
يقوم بعرض معرف العملية (رقم يستخدم في ويندوز لتعريف العمليات) PID .
-p
تحديد البرتوكول المراد عرض الإحصائيات له (TCP,UDP,TCPv6)
-b
عرض الملفات التنفيذية التي قامت بإنشاء الاتصال .
(رقم الثواني)
تستطيع أن تضع عدد يرمز للثواني التي يقوم فيها برنامج "Netstat" بتحديث الإحصائيات , و لإيقاف البرنامج أضغط "CTRL+C" , يوضع هذا الرقم في نهاية الأمر.

الأمثلة:
netstat -ano
 سيكون مخرجات البرنامج كالتالي:


ستلاحظ وجود السطر "PID" الذي يدل على معرف البرنامج .

netstat –anb
أنظر التالي كمثال للمخرجات :
  Proto     Local Address          Foreign Address        State           PID 
TCP        0.0.0.0:445                     0.0.0.0:0          LISTENING   4
  [System]
سيعرض الأمر معلومات الاتصال و معرف البرنامج ثم سيعرض في سطر جديد أسم الملف  .

netstat –na 3
سيقوم بعرض جميع الاتصالات الجارية , و بدل أسم الموقع سيعرض "IP" و ستحدث المعلومات كل 3 ثواني إلى أن تضغط "CTRL+C".

استخدام "PID" في ويندوز:
لكي تعرف المزيد من المعلومات عن العمليات التي تستخدم تحاول الاتصال بالشبكة , ستستخدم برنامج "أدارة المهام في ويندوز" , لتشغيل البرنامج أضغط أزرار لوحة المفاتيح "CTRL+ALT+DEL".





1-قم باختيار "العمليات"





2-ثم بأخيار "عرض" ثم "تحديد الأعمدة"




3-قم بتحديد الاختيار "معرف العملية PID".







4-الآن تستطيع البحث بواسطة القيمة "PID" و إنهاء العملية في حالة شكك أن هذه العملية تابعة لبرنامج تجسس.




اقرأ هذا المقال لأنظمة ويندوز الأحدث عن بديل برنامج netstat


الخميس، 7 أكتوبر 2010

لغة البرمجة Batch في نظام ويندوز

Batch programming
لغة البرمجة Batch  في نظام ويندوز

ما هو برنامج Batch:
هو ملف نصي يحتوي على مجموعة من الأسطر التي تحتوي على أوامر تنفذه بالتتابع من السطر الأول إلى نهاية الملف, ويكون الملف النصي بالامتداد .bat"" , ويفرر نظام ويندوز XP و Vista مجموعة من الأوامر التي تسمح لغة Batch بأن تتعامل مع جميع مكونات النظام بما فيها الملفات و الشبكات و أيضا حسابات المستخدمين, يتعامل البرنامج "cmd.exe" مع ملفات الباتش, لمعرفة استخدام هذا البرنامج أقرأ الموضوع التالي.

 

كيفية أنشاء ملف batch  بسيط: