الأربعاء، 19 سبتمبر 2012

برمجة sniffer بواسطة البايثون (الجزء الثاني )

بسم الله الرحمن الرحيم

في الجزء الأول  شرحت كيفية تأسيس القابس الخام "Raw Socket" , و الأن سنبدأ في التعامل مع البيانات المستقبلة من القابس .

في حالة القابس الخام يترك للمبرمج التعامل مع برتوكولات الشبكة , و التعامل مع بنية الحزم لكل برتوكول , وسنبدأ بالبرتوكول IP .


الأحد، 2 سبتمبر 2012

برمجة sniffer بواسطة البايثون (الجزء الأول )

بسم الله الرحمن الرحيم

مقدمة :

في أغلب البرامج التي تتعامل مع الشبكة يتعامل المبرمج مع طبقة التطبيقات "Application Layer" بواسطة الواجهة SOCK_STREAM للبرامج العاملة بواسطة بروتوكول TCP و الواجهة SOCK_DGRAM للبرامج التي تستخدم بروتوكول UDP .

 

و تقوم هذه الواجهتين بتسهيل عملية البرمجة و أخذ جميع المهام من المبرمج , و قد شرحت هذه الواجهتين في هذا الموضوع .

الجمعة، 31 أغسطس 2012

تعلم لغة البرمجة Go بالعربي ( الدرس التاسع )

بسم الله الرحمن الرحيم

تحتوي لغة GO على المؤشرات مشابه لغة C , و لكن قام المطورون بمنع العمليات الحسابية على مواقع الذاكرة ,  و لمن ليس لديه فكرة فسوف تتوضح لديك الفكرة عندما تتنفذ المثالين التالين :

package main

import "fmt"

func main() {

    i := 5

    fmt.Println("i is: ", i)

    fmt.Println("address of i is: ", &i)

}

في هذا السطر أستخدمنا الحرف  & لطباعة عنوان المتغير في الذاكرة :

fmt.Println("address of i is: ", &i)

كمبرمج يجب أن تعلم بأن لك متغير في برنامج عنوان في الذاكرة يتم حفظ فيه القيم , و بالنسبة للمبرمجين فالذاكرة من الموارد المهمة جداّ و يجب المحافظة لذا قم المطورون بأستخدام المؤشرات, حيث أنه برمجياً من الأوفر نسخ عنوان الذاكرة الدال على البيانات بدل نسخ البيانات كلما تم التعامل معها في برنامجك , و هذا مثال بسيط على أستخدامها :

الحصول على جميع المواقع على السيرفر

بسم الله الرحمن الرحيم

للحصول على جميع المواقع الموجودة على السيرفر , تستطيع أستخدام موقع bing  و ذلك بأستخدام عنوان الأي بي , الذي تستطيع الحصول عليه بواسطة الأمر ping في موجه الأوامر في نظامك :
ping example.com


ثم في موقع البحث bing أكتب الكلمة :ip متبوعة بعنوان الأي بي للحصول على قائمة المواقع العاملة على نفس رقم الأي بي .

ip:127.0.0.1

الخميس، 30 أغسطس 2012

ubuntu 12: تشغيل أفلام DVD المشفرة

بسم الله الرحمن الرحيم

لتشغيل أفلام DVD الأصلية المحمية بنظام تشفير في نظام لينكس ubuntu قم بأستخدام موجة الأوامر لتثبيت المكتبة  libdvdread4 :
sudo apt-get install libdvdread4

sudo /usr/share/doc/libdvdread4/install-css.sh

بعد أنتهاء التثبيت تستطيع أستخدام برنامج المشغل vlc  مباشرة بدون الحاجة لأي أعدادات أخرى .

الأربعاء، 22 أغسطس 2012

BASH Script: قراءة كلمات السر من المستخدم

بسم الله الرحمن الرحيم

قد يحتاج المبرمج للحصول على بيانات من المستخدم من دون عرضها على الشاشة مثل كلمات السر و لذا تستطيع أستخدام الأمر read كالتالي :
#!/bin/bash

echo "Enter the password:"

read -s password

echo "Password:"$password

فقط قم بأضافة المعامل s- بعد الأمر read ليتم أخفاء القيم عن الشاشة .

BASH SCRIPT: البحث و الأستبدال في النصوص

بسم الله الرحمن الرحيم

يحتوي سكربيت الباش على العديد من الخصائص لتعامل مع النصوص و منها البحث و الأستبدال بواسطة هذه الصيغة :
${Text/old/new}

و هذا السكريبت مثال عملي على  أستخدام هذه الصيغة :

#!/bin/bash

text="Hello,World"

old="World"

new="UAE"

echo "old text:" $text

newtext=${text/$old/$new}

echo "new text:" $newtext


هنالك ملاحظة عند أستخدام هذه الصيغة , تلاحظ اننا لم نستخدم $ قبل المتغير text حيث أن كتابة المتغير بهذه الصورة $text سيؤدي لخطأ عند التنفيذ .

BASH SCRIPT: تنفيذ حلقة تكرارية في الخلفية

بسم الله الرحمن الرحيم

تستطيع تنفيذ حلقة تكرارية في الباش سكريبت في الخلفية , بدل من الأنتظار لمتابعة التنفيذ , و ذلك كهذا المثال :
#!/bin/bash

for i in {1..10}
do
echo -n $i
done&

for i in a b c d f
do
echo -n $i
done

echo


 تلاحظ اننا في الحلقة التكرارية الأولى وضعنا & في النهاية و الذي يستخدم لنقل البرامج للخلفية في لينكس :

for i in {1..10}
do
echo -n $i
done&

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

BASH SCRIPT:طباعة الوقت الذي أستغرقه تنفيذ السكريبت

بسم الله الرحمن الرحيم

يتوافر في سكريبت الباش المتغير الخاص SECONDS الذي يمكننا من معرفة عدد الثواني منذ بدأ التنفيذ إلى حين أستدعاء المتغير و يمكن أستخدامه عن نهاية السكريبت لأعطاءنا الوقت الكلي بالثواني لتنفيذ السكريبت كما في مثالنا التالي :
#!/bin/bash

sleep 10

echo "Total time taken by this script:"$SECONDS

السبت، 28 يوليو 2012

تثبيت مكتبة opencv في البايثون


بسم الله الرحمن الرحيم

تشتهر مكتبة opencv البرمجية بأستخدمها في التعرف على الأنماط و الأشكال في الصور و الفيديو , و ما يميز هذه المكتبة كونها تدعم منصات متعددة ( ويندوز , ماكنتوش , لينكس ) و يمكن أستخدمها في لغة C و C++ و البايثون .
و في هذه السلسة سوف أستخدم واجهة opencv الخاصة باللغة البايثون لسهولة هذه اللغة بالنسبة للمبرمجين الهواة و سرعة كتابة البرامج باللغة البايثون .


التثبيت :

* أن مكتبة opencv تدعم الأصدارتين 2.7 و 2.6 , وإلى الأن لا يوجد دعم رسمي للأصدارة 3.0 .
  • لينكس :

    بالنسبة لمستخدمي نظام لينكس نسخة ubuntu كما ما تحتاجه هو تنفيذ هذا الأمر في موجه الأوامر :
sudo apt-get install python-opencv