0%

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

ما الفائدة من تعطيل الخدمات؟… الخدمات الغير مستخدمة تستهلك بعض موارد الجهاز كالذاكرة والمعالج وكذلك تبطئ عملية الإقلاع وتعطيلها يوفر تلك الموارد ويجعل النظام يقلع بشكل اسرع، سأقوم بسرد الخدمات التي يمكن تعطيلها مع شرح بسيط لها. أولا توزيعة فيدورا تستخدم systemd لإدارة الخدمات و هناك عدة طرق لمعرفة الخدمات التي تعمل أثناء الإقلاع منها تنفيذ امر systemctl حيث سيعرض قائمة طويلة بجميع الخدمات وحالتها. لكن الطريقة الاسهل هي عن طريق فتح مجلد /etc/systemd/system/ حيث ان داخل هذا المجلد عدد من المجلدات والملفات وكل ملف من هذه الملفات يمثل خدمة محددة ولتعطيل الخدمة تنفذ التالي من سطر الاوامر:

1
sudo systemctl disable <اسم الخدمة>

وبالإمكان إدراج اكثر من خدمة في نفس السطر

1
sudo systemctl disable الخدمة3 الخدمة2 الخدمة1

والآن مع قائمة الخدمات وشرحها بالعربي:

abrtd.service خدمة التبليغ عن أخطاء النظام
abrt-ccpp.service تابع لخدمة التبليغ عن أخطاء النظام
abrt-oops.service تابع لخدمة التبليغ عن أخطاء النظام
abrt-vmcore.service تابع لخدمة التبليغ عن أخطاء النظام
abrt-xorg.service تابع لخدمة التبليغ عن أخطاء النظام
atd.service خدمة تشغيل البرامج بشكل تلقائي في أوقات محددة
auditd.service خدمة متقدمة لمراقبة احداث النظام من النواة مباشرة
avahi-daemon.service خدمة التعرف على الأجهزة الأخري في الشبكة كالطابعات
avahi-daemon.socket تابع لخدمة Avahi للتعرف على الأجهزة
bluetooth.service البلوتوث، لا فائدة منها في الأجهزة التي لا تحتوي عليه
crond.service خدمة تشغيل البرامج بشكل تلقائي في أوقات محددة
dmraid-activation.service خاص بتفعيل RAID البرامجي الخاص بالاقراص (لا تقم بتعطيلها في حال كنت تستخدم Software RAID)
dm-event.socket تابع لخدمة RAID
iscsi.service بروتوكول خاص بوحدات التخزين عبر الشبكة
iscsid.socket تابع لبروتوكول وحدات التخزين عبر الشبكة
iscsiuio.socket تابع لبروتوكول وحدات التخزين عبر الشبكة
lvm2-monitor.service نظام تقسيم القرص lvm، لا تقم بتعطيله في حال اخترت التقسيم التلقائي
lvm2-lvmetad.socket نظام تقسيم القرص lvm، لا تقم بتعطيله في حال اخترت التقسيم التلقائي
mdmonitor.service خدمة RAID البرامجي الخاص بالأقراص (لا تقم بتعطيلها في حال كنت تستخدم Software RAID)
ModemManager.service خدمة الاتصال بالإنترنت عن طريق استخدام شبكة الجوال
multipathd.service خدمة تعدد المسارات (تستخدم غالبا مع الخوادم الكبيرة)
nfs-lock.service بروتوكول مشاركة الملفات عبر الشبكة بنظام NTS
nfs.target بروتوكول مشاركة الملفات عبر الشبكة بنظام NTS
pcscd.service خدمة البطاقات الذكية (تتطلب قارئ بطاقات خاص)
pcscd.socket تابع لخدمة البطاقات الذكية
remote-fs.target خاص بوحدات الأقراص عبر الشبكة (نظام ملفات عن بعد)
rngd.service خدمة توليد الأرقام العشوائية، تعمل فقط مع المعالجات الحديثة ولا تعمل داخل الوهمي
rpcbind.service خاص ببروتوكولات مشاركة الملفات عبر الشبكة
rpcbind.socket تالع لبروتوكولات مشاركة الملفات عبر الشبكة
spice-vdagentd.service خدمة التحكم بالطرفيات عن بعد باستخدام Spice
sshd.service خدمة الدخول الآمن للطرفية (خدمة مفيدة جدا لكن ينصح بتعطيلها في حال عدم استخدامها)
vmtoolsd.service أدوات خاصة بالوهمي عند استخدام VMware

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

1
2
3
4
5
6
sudo systemctl disable abrt-ccpp.service abrtd.service abrt-oops.service abrt-vmcore.service /
abrt-xorg.service atd.service auditd.service avahi-daemon.service bluetooth.service crond.service /
dmraid-activation.service dm-event.socket iscsi.service iscsid.socket iscsiuio.socket /
lvm2-lvmetad.socket lvm2-monitor.service mdmonitor.service ModemManager.service /
multipathd.service nfs-lock.service nfs.target sshd.service pcscd.service pcscd.socket /
remote-fs.target rpcbind.service spice-vdagentd.service vmtoolsd.service

ثم قم بإعادة تشغيل الجهاز، وفي حال وجود مشكلة او احتجت لتشغيل احد تلك الخدمات فقم بتفعيلها هكذا:

1
sudo systemctl enable <اسم الخدمة>

ولتشغيلها:

1
sudo systemctl start <اسم الخدمة>

وللاستعلام عن حالة الخدمة:

1
systemctl status <اسم الخدمة>

** ملاحظة: قد لا تكون جميع الخدمات تلك ظاهرة لديك إذ أنها تعتمد على حزم البرامج المحملة على النظام، لكني حاولت إدراج اكبر قدر ممكن من الخدمات التي تأتي مع Fedora 20 و التي قد لا تكون ضرورية للجميع أو لعمل النظام ومن الممكن الاستغناء عنها.

**ANNOUNCMENT: Due to the irresponsible behavior and awkward policy of Telegram company, and after they have taken my username @Fahad and given it to someone else without even asking me or notifying me I decided to delete my telegram account and stop the development of Telegram Ultra. And whoever was contacting me through that username should stop since it is not me anymore!

**إعلان: بعد التصرف الغير منطقي و السياسة المتخلفة من شركة تيليقرام حيث قامو بسحب اسم المستخدم @Fahad مني ومنحة لشخص اخر بدون حتى سؤالي او تنبيهي قررت حذف حساب التيليقرام وايقاف تطروير نسخة الترا. وعلى من كان يتواصل معي بالاسم ان يتوقف لانه ليس انا!

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

https://github.com/fduraibi/Telegram

بالامكان تحميل احدث اصدارة من متجر قووقل (قووقل بلاي)

(تم حذف التطبيق - The app is removed from the store)

التغيرات التي قمت بها هي التالي مع تعديلات المطور: (ساقوم بتحديث هذه القائمة عند اصدار تحديثات جديدة تحت تاريخ التعديل)

  • اضافة خاصية إخفاء حالة الظهور (فعلها من قائمة الإعدادات)
  • اضافة خاصية اعادة التمرير بدون ظهور اسم المرسل الاصلي (فعلها من قائمة الإعدادات)
  • اصلاح اختفاء بعض الوجوه التعبيرية (Emoji) عند لصق الرسائل من الواتساب [مثال]
  • المحافظة على عدد المسافات والاسطر عند كتابة او لصق رسالة
  • امكانية عمل بعض التنسيق للرسائل النصية (لتكبير الخط ضعه بين ^ ^ ولتلوينة بالازرق ضعه بين * *) [مثال]
  • زيادة حجم الرسالة النصية للضعف
  • اضافة عنوان عند مشاركة الروابط من بعض البرامج مثل اليوتيوب [مثال]
  • اظهار اسم المرسل على الصور والفديو [مثال]
  • اضافة خيار اخر لتمرير الرسائل بدون اسم المرسل الاصلي بالاضافة لخيار المشاركة لمشاركة الملفات مع البرامج الاخرى [مثال]

* بالامكان تركيب نسخة تيليقرام الترا بجانب النسخة الرسمية واستخدامهما معا بنفس الرقم او ارقام مختلفة.

اذا كنت تصنع لوح دوائر اليكترونية بكميات كبيرة او كنت تستخدم قطع الليكترونية صغيرة حيث يصعب لحماها باليد فانك بحاجة الى استخدام ما يسمى بالستنسل وهي عبارة عن شريحة معدنية او بلاستيكية رقيقة تحتوي على فتحات تطابق تصميم الدائرة تستخدم في وضع معجون اللحام بشكل سهل. هناك عدة طرق لصناعة تلك الشرائح واكثرها شيوعا هو باستخدام الليزر او استخدام طريقة Etching وهي الطريقة التي قمنا بشرحها في الفيديو التالي على قناة “تقنيات بالعربي”:

قام احد الباحثين في أمن المعلومات “HD Moore” بعد اكتشاف ثغرة في بروتوكول UPnP المستخدم في محولات الشبكات Routers خصوصا الشبكات المنزلية، قام بعمل مسح لجميع عناوين الإنترنت في نطاق IPv4 مرة كل أسبوع ولمدة خمسة شهور واكتشف وجود ما بين 40 الى 50 مليون جهاز يحتوي على تلك الثغرة.

يستخدم بروتوكول UPnP للسماح للبرامج والأجهزة الموجودة في الشبكة الداخلية بفتح منافذ في جدار الحماية الخارجي للشبكة حسب الحاجة و بشكل تلقائي دون الحاجة لتدخل مستخدم الشبكة حيث يقوم البرنامج “مثلا خادم لعبة جماعية” بإرسال رسالة من الداخل لجهاز الشبكة وطلب فتح منفذ معين فيقوم جهاز الشبكة بفتح ذلك المنفذ في جدار الحماية مما يمكن اللاعبين بالاتصال من الخارج بالخادم داخل الشبكة، هذه الطريقة لا تمثل مشكلة كبيرة حيث تعتبر الطلبات القادمة من داخل الشبكة المنزلية موثوقة، لكن المشكلة تكمن في إهمال بعض الشركات المصنعة لأجهزة الشبكات حيث سمحو لجهاز الشبكة باستقبال طلبات فتح المنافذ من الداخل ومن خارج الشبكة أيضا! وهذي يعني أن الهاكرز يستطيعون إرسال الطلبات من الإنترنت وفتح منافذ في أجهزة الشبكات وتمكين انفسهم من الوصول للحواسيب داخل الشبكة.

مثال يبين عملية تجاوز جدار الحماية

اول خطوة يجب عليك عملها هو فحص جهاز الشبكة الخاص بك، عملية الفحص سهلة جدا وكل ما عليك هو زيارة هذا الرابط من موقع Rapid7 بشرط أن تكون داخل الشبكة المراد فحصها ومن تلك الصفحة قم بالضغط على زر Scan My Router وسيقوم الموقع بفحص جهازك و إعلامك بالنتائج بعد انتهاء عملية الفحص. إذا كانت نتيجة الفحص مشابهة لهذه الصورة:

نتيجة الفحص

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

  1. تعطيل خاصية UPnP من جهاز الشبكة (الراوتر)
  2. تحديث نظام (الفيرموير) جهاز الشبكة أو تركيب احد الأنظمة المفتوحة مثل DD-WRT أو Tomato
  3. تغيير جهاز الشبكة باخر محمي إن لزم الأمر

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

للمهتمين بمجال اختبار الاختراقات (Penetration testing) تم عمل اضافة لـ Metasploit اسمها “UPnP SSDP M-SEARCH Information Discovery” لفحص الشبكات والبحث عن تلك الثغرة حيث يمكنك إدخال نطاق من عناوين الإنترنت وفحصها دون الحاجة لأن تكون في داخل الشبكة نفسها ومزيد من المعلومات تجدها هنا.

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

كل ما تحتاج هو أن يكون لديك هاتف أو جهاز حاسب الآلي متصل بالإنترنت وكذلك برنامج موبايلي المسمى ب Roamtalk (تم تغيير الاسم الى) Mobily Business SoftPhone و الحصول على اسم المستخدم والرقم السري عن طريق موقع موبايلي (تمت بعض التغييرات وربما يشترط الاشتراك في باقة للشركات او رجال الاعمال لكنها لا تزال تعمل لدي بباقة فلة القديمة). انا استخدمت البرنامج على عدد من هواتف الاندرويد مثل Nexus S و Samsung Galaxy Note و Galaxy S2 وهو موجود في Google Play وما عليك سوى إدخال اسم المستخدم وكلمة السر وسيعمل البرنامج مباشرة.

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

لكن ولحسن الحظ فان تقنية هاتف الانترنت المستخدمة من قبل موبايلي تقنية عالمية ومستخدمة من قبل شركات كثيرة وتوجد عدة برامج مجانية يمكن استخدامها بدلا عن برنامج Roamtalk Mobily Business SoftPhone من موبايلي وتحل كثير من مشاكل برنامج موبايلي . سوق الاندرويد مليء بمثل هذه البرامج لكن سأذكر أفضل حلين توصلت اليهم:

1- استخدام نظام الاندرويد نفسة حيث يدعم خاصية الاتصال يالانترنت واستقبال المكالمات دون الحاجة لاستخدام برامج اضافية. وهذا يمكنك من استخدام نفس برنامج الاتصال الموجود في الجهاز لكن لايوجد دعم للرسائل.
2- استخدام برنامج CSipSimple وهو مجاني ومفتوح المصدر وله عدة مميزات منها استقبال الرسائل لكن لايستقبل العربي. مشكلة اللغة العربية قد تكون من البرنامج او قد تكون من خادم SIP لدى موبايلي، ولم اتوصل الى الان لمصدر المشكلة.

لاستخدام هذه الطرق يجب استخدام اسم المستخدم وكلمة السر المقدمة من موبايلي بالاضافة لعنوان خادم SIP وهو: vi.mobily.com.sa وهذه بعض الصور لاعدادت الاندرويد وكذلك برنامج CSipSimple
Android Inernet Calling
Android Inernet Calling
CSipSimple
CSipSimple

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




اذا كان جهازك بدون صلاحيات المستخدم المسؤول (بدون root كأن يكون الجهاز جديدا ولم تقم بعمل تعديلات للنظام لتفعيل تلك الخاصية) فإن امكاناتك ستكون محدودة. كما نرى في الصورة السابقة فالبرنامج يقدم خيار “طلب صلاحيات المستخدم الخارق” في حال وجود root للجهاز او الاستمرار بدونه.

في حال عدم وجود صلاحيات مستخدم مسؤول فعليك تحميل متصفح مخصص لاستخدام برنامج التور Orweb و برنامج اخر يقوم على تشفير بعض برامج المحادثة Gibberbot

اليرامج اللتي تدعم برنامج التور بدون روت

اما في حال وجود صلاحيات الروت (root) فبالامكان اعداد البروكسي الشفاف لكافة البرامج في الجهاز او بعضها لكي تستخدم التور في نقل البيانات كما نرى في الصورة التالية

بعد الانتهاء من اعداد البرنامج قم بضغط زر التشغيل للارتباط بخوادم التور




الامر لم يكمل بعد، بل يجب تجربة الارتباط والتحقق من ان برنامجك متصل عن طريق التور وليس بشكل مباشر. برنامج التور يوفر خاصية اختبار المتصفح، الصور التالية توضح عملية اختبار فايرفوكس (Firefox) بدون التور


وهنا الصور تبين تفعيل صلاحيات المستخدم المسؤول “الروت” واختيار فايرفوكس كأحد البرامج التي يتم تمرير بياناتها عن طريق خوادم التور ثم اعادة عملية الاختبار



مبروك قد تم اعداد المتصفح بشكل صحيح، تصفح آمن.

** ملاحظة: يجب أخذ الحذر عند استخدامها ومحاولة عدم استخدام معلومات شخصية قد تدل عليك، وايضا يجب ان تتقي الله ولا تستخدمها في ما يغضبه.

If you go to many places with open wireless access you might find it annoying that every time you have to open the browser to accept the same rules and conditions from that provider before you can have real internet access. It is even worse if you have tabs left open from your last session and they all now point to the same wifi login page!

However, if you are using Linux and you have NetworkManager set as the default network management tool then I have a solution for you, NetworkManager will run the scripts inside the folder “dispatcher.d” whenever the connection status changed for any of the network cards on the machine. Under Fedora the folder is located in “/etc/NetworkManager/dispatcher.d/“ and I will assume other Linux distributions will be similar if not the same.

So all you have to do is create a script in that folder that will run whenever the wireless connection is up and the network name (SSID) matches the location that have the open wifi, then the script should automate the process of clicking on the accept button or whatever it takes to get internet access.

I have already made such a script that will allow me to login to Panera Bread and Baltimore County Public Library, but it can be expanded easily to include other locations. The first part of the script should be placed under the “dispatcher.d“ folder and should be accessible by “root“ only (This is a security feature, since NetworkManager will execute all scripts in that folder as root and anyone with access to these files can change their content to do other stuff that might harm your system, so make sure to set the permission to root only). That script will parse the iwconfig output to find the name of the wifi and call the script that matches the name if any.

Here is my main script (07-autologin_openwifi)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.1
#------------------------------

export LC_ALL=C
LogFile="/var/log/07-WIFI_ACCESS.log"

# The parameters that get passed to the script are:
# $1 = The interface name ( eth0, wlan0 ...etc)
# $2 = Interface status ( "up" or "down" )

# Check if wireless status is up
# I have two wifi cards in my laptop, named "wlan0 and wlan1"
# so I use regular expression "wlan[01]" to match both of them.
if [[ "$1" =~ wlan[01] && $2 == "up" ]]; then

# Get the network name from "iwconfig" or (can also locate the network based on IP or MAC address if needed)
ESSID=$(/sbin/iwconfig $1 | grep ESSID | cut -d'"' -f2)

# Record the date and time for debugging purposes only
echo "[`date`] ESSID=($ESSID)" >> $LogFile

# If the wireless name matches then run its python script
if [[ "$ESSID" == "BCPL-PUBLIC-WIFI" ]]; then
/usr/bin/python /myscripts/baltimore-county_library_wifi.py 1>> $LogFile 2>&1
elif [[ "$ESSID" == "PANERA" ]]; then
/usr/bin/python /myscripts/panera.py 1>> $LogFile 2>&1
elif [[ "$ESSID" == "Nordstrom_Wi-Fi" ]]; then
/usr/bin/python /myscripts/nordstrom.py 1>> $LogFile 2>&1
#elif .... (you can add more open wifi here)
fi
fi

#if [[ "$1" =~ wlan[01] && $2 == "down" ]]; then
##If you want to do somehting when the network is down
#fi

As you can see that the above script will call another python script when a name matches which are located in another folder (change it to whatever suits you and don’t forget to set the root only permissions) And here is the script for “baltimore-county_library_wifi.py”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.0
#------------------------------
import httplib
conn = httplib.HTTPConnection("1.1.1.1")
conn.request("GET", "/fs/customwebauth/login.html?switch_url=http://1.1.1.1/login.html&wlan=BCPL-PUBLIC-WIFI")
r1 = conn.getresponse()
print r1.status, r1.reason
output1 = r1.read()

headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
params = "buttonClicked=4&err_flag=0&err_msg=&info_flag=0&info_msg=&redirect_url=&username=guest&password=guest"
conn.request("POST", "/login.html", params, headers)
r2 = conn.getresponse()
print r2.status, r2.reason
output2 = r2.read()

conn.close()

In this script I used the “httplib” python library which is kind of a low level library since you have to setup all HTTP stuff manually also if one of the URL or its parameters changed in the future the script will not work and will need to be updated. However, in the second script “panera.py” I use the “mechanize” library which act as a web browser and takes care of the low level HTTP details (mechanize might not be among the standard library and you might have to install it) panera.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.1
#------------------------------
import mechanize
import sys

br = mechanize.Browser()
br.set_handle_equiv(True)
#br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0')]

testURL = 'http://www.fadvisor.net/blog/'
response = br.open(testURL)

if response.geturl() == testURL:
print "FAD: You are already logged in to Panera."
sys.exit()

try:
forms = mechanize.ParseResponse(response, backwards_compat=False)
except:
print "FAD: Error in parsing forms, Am I already logged in to Panera?"
sys.exit()

response.close

form = forms[0]
#print form
#print "----------------------------------- Login"
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- Validate"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- ConfirmLogin New"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- ConfirmLogin Validate"
#print
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- CompleteLogin New"
#print

request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()

form = forms[0]
#print form
#print "----------------------------------- HttpLoginRequest"
#print

request = form.click()
response = br.open(request)
#print response.read()

response.close()
print "--- Panera Done ---"

Panera uses a more complicated process, but mechanize made it much easier to develop the script, and I didn’t hardcode any link or parameters which means the script will work even if they change the URLs, but will still fail if they change the login process.

nordstrom.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#------------------------------
# By Fahad Alduraibi
# Last update: June 12, 2012
# Version: 1.0
#------------------------------

import mechanize
import sys

br = mechanize.Browser()
br.set_handle_equiv(True)
#br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0')]

testURL = 'http://www.fadvisor.net/blog/'
response = br.open(testURL)

if response.geturl() == testURL:
print "FAD: You are already logged in to Nordstrom."
sys.exit()

try:
forms = mechanize.ParseResponse(response, backwards_compat=False)
except:
print "FAD: Error in parsing forms, Am I already logged in?"
sys.exit()

response.close

form = forms[0]
#print form
#print "----------------------------------- Login"
request = form.click()
response = mechanize.urlopen(request)
forms = mechanize.ParseResponse(response, backwards_compat=False)
response.close()
print "--- Nordstrom Done ---"

You can add other providers as well like starbucks and many other coffee shops, all you need is some network capturing tool like tcpdump or wireshark and some scripting skills. A similar thing can be done under Microsoft Windows Vista and above, since you can create a task under “Task Scheduler” that will trigger based on network event.

Disclaimer: you still have to read and agree to the terms and conditions before you start using such script, and you will be responsible for not complying with them.

هل رغبت يوما في عمل لوحة إلكترونية لكن تراجعت بسبب صعوبة العملية أو عدم وجود الأجهزة اللازمة؟

إذا كان هذا هو السبب فلدي الحل، قمت أنا وزميلي أحمد عباس بتصوير فيديو يبين طريقة عمل وتحميض تلك الدوائر باستخدام مواد وأدوات موجودة في المنزل أو متوفرة في السوق. هذا هو الفيديو الأول من سلسلة نود تقدمها في المستقبل تستهدف الهواة ومحبي التقنية في العالم العربي. لن أطيل عليكم وهذا هو الفيديو كما يمكنكم متابعته في اليوتيوب على قناة “تقنيات بالعربي” “TechsInArabic” (كما يمكن عرضه بجودة عالية HD)

NOTE: These cheats do not work anymore

I am going to list here few tricks and cheats that you can use while playing airline manager on facebook. But be careful as some might get you banned from the game. For all of these tricks all you need is Google Chrome browser or Firefox with the Firebug add-on. 1- The BIG Money maker For this cheat to work you need to have cargo planes, so get your pax points up and buy the cargo feature. Once you buy your cargo plane (get one that can carry big load for short distance, it makes more money) start creating its route (again demand is important, distance is not) but stop at the point where you need to sign a contract. As you can see most prices are about $1.0 to $2.5. So pick any of these contracts, lets say the first one, and right click on the “Sign“ button, from the list you will see an item called “Inspect Element” click on that and the browser will open a small box at the bottom of the page showing you some HTML code of that page and the code for the button you right click on is highlighted. See the picture:

Now double click of that highlighted part of the code, and it will allow you to edit. Look for “tcc=x.xxxx” where the x is a the current price of the contract. Simply change that value to whatever your like, the limit that you can set it to is $99,999 per lbs. Don’t set it to high or you will be noticed 8)

Now, click on the same “Sign” button which you modified the code for and you are done. You will be rich in no time ;-) 2- Buying more than 10 aircraft at once (Thanks Luke for this trick) For most aircraft, pax and cargo, the limit that can be bought at once is just 10 (i don’t know why, seems that they like you to click and click more), to get more than that at once, maximum you can get is 99, go to the page for buying the plane you like, like in this picture:

then right click on the drop down box for the “Amount to purchase” and select “Inspect Element”, see the picture:

in the above picture click on the part of code that is highlighted with the second red oval, click on the code to change the number from value=”1“ to value=”99“ or whatever number you like, but 99 is the max, see picture:

You are done, set registration name and click “Buy aircraft”. I am sure you can use the same method to do other tricks and make playing the game easier. But my number one recommendation is to use the Autopilot script ;) that will make you on the top 10 list like me

After upgrading to Fedora 14 I noticed that the built-in mic in my Dell D620 stopped working, after searching here and there I the problem is between ALSA and Pulseaudio, since alsa will show to capture devices “Mic” & “Front Mic” and Pulseaudio will use Mic as the default instead of Front Mic.

So I used “alsamixer” to set the correct capture source and that worked but after a reboot it was set back to Mic. Then I found about “alsactl” which should store the current setting by doing “alsactl store” but that did not work either since I think pulseaudio does not look into that.

Uninstalling pulseaudio as some people suggested solved the Mic problem but caused many other problems when playing many applications that want to play audio (like flash apps such as youtube and video apps…etc), this is an ALSA problem that pulseaudio try to solve AFAIK.

The solution that I found was to use “amixer” which can be run from the command line with the parameters to set “Front Mic” as the capture source. Here is the full command for my device:

1
amixer -c 0 cset numid=6,iface=MIXER,name='Input Source' 1

To explain the previous command: [-c 0] is to select the first sound card (the only card in my laptop, but if you have two cards they will be 0 and 1) [cset] is to tell amixer that you want to set these settings [numid, iface, and MIXER] are information about your card and what source you want to change the settings for, and here is how I get these information:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[fad@fad ~\]$ amixer -c0 contents
numid=2,iface=MIXER,name='Master Playback Switch'
; type=BOOLEAN,access=rw------,values=2
: values=on,on
numid=1,iface=MIXER,name='Master Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
: values=14,14
| dBscale-min=-46.50dB,step=1.50dB,mute=0
......
......
numid=6,iface=MIXER,name='Input Source'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Mic'
; Item #1 'Front Mic'
: values=0
......
......

And as you can see in the previous result the part that am looking for is (numid=6,iface=MIXER,name=’Input Source’) and it lists Mic=0 and Front Mic=1 but the selected values=0 which is for Mic and I need to set it to 1

Here is the command again:

1
amixer -c 0 cset numid=6,iface=MIXER,name='Input Source' 1

put this command in a script file and make it run whenever you login to your profile (I tried adding it to the rc.local so it will execute with every boot but that didn’t work, since I think the settings is applied during login time for each user)

For KDE users you can put that script (or a link to it) under:

1
/home/<username>/.kde/Autostart/

or through the KDE “System Settings”>”Startup and Shutdown”>”Autostart” Now at each login this command should set the correct input source which pulseaudio will use it.

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

اول هذه الاوامر هو lsof وهو اختصار (List Open Files) يعني عرض الملفات المفتوحة، والملفات في نظام اللنكس ليس محصورة بالملفات العادية كما تعرف في نظام الوندوز ولكنها تشمل المجلدات و المكتبات و ارتباطات الشبكة و انواع اخرى من الملفات الخاصه. وعند تنفيد الامر فسيقوم بعرض قائمة بجميع الملفات المفتوحه حاليا و اسم المستخدم الذي قام بفتح الملف ورقم العملية التي تم من خلالها فتح الملف (Process ID) و نوع الملف وحجمة (اذا كان ذو حجم معروف) و مسار الملف. القائمة في الغالب ستكون كبيره جدا ولذا تحتاج في الغالب لعمل تخصيص للتحكم في المخرجات.

احد الاستخدامات هي معرفة جميع البرامج المتصلة بالانترنت في حال الشك بان الجهاز قد يكون مخترقا او التاكد من حالة الاتصال بالمواقع او معرفة رقم المنفذ الذي يستخدمة خادم معين:

1
lsof -i

اوامر مشابهه

1
2
ss -ap
netstat -tuap

اما في حال اردت معرفة (او اغلاق) ملف مفتوح (مثلا قمت بفتح ملف في كرت ذاكرة خارجي Flash Drive ولكن عند محاولت ازالة الكرت اخبرك النظام بان احد الملفات لازال مفتوحا) فالتوصل للملف المفتوح ومعرفة البرنامج المتصل بذلك الملف عمليه سهلة جدا باستخدام lsof وهي كالتالي: اولا نفرض ان مسار كرت الذاكرة هو /media/disk/ فتقوم بتنفيذ الامر التالي:

1
lsof | grep /media/disk/

فالامر الاول lsof سيعرض جميع الملفات المفتوحة لكن بدل من تعرض النتائج على الشاشه بل سوف ترسل للامر التالي grep و المسؤل عن عمليه الارسال تلك هي علامة الانبوب | (pipe) حيث ان نظام اللنكس عندما يجد ذلك الخط العمودي بين امرين فانه يمرر مخرجات الامر الاول كمدخلات للامر الثاني. اما الامر grep فان امر ترشيح (Filter) حيث ان يقوم بالبحت في المدخلات عن اي سطر يحتوي على الكلمة المذكورة بعد (في مثالنا هذا فانه يبحث عن /media/disk/) ثم يعرض السطر الكامل الذي يوجد به مثل ذلك النص. فالناتج النهائي من تنفيذ هذا الامر هو قائمة باسم الملف او الملفات التي لاتزال مفتوحة من كرت الذاكرة والبرنامج الذي قام بفتح ذلك الملف ثم ما عليك سوى اغلاق ذلك البرنامج وستتمكن من ازالت الكرت بشكل امن. ولاغلاق البرامج يمكن استخدام الامر kill مع رقم العملية (Process ID) كالتالي:

1
2
kill <PID>  (اغلاق البرنامج بطيقة امنة)
kill -9 <PID>  (اغلاق اجباري للبرنامج)

اوامر اخرى من عائلة lsof هي:

lsusb يعرض قائمة باجهزة USB المتصلة حاليا بالجهاز
lspci يعرض قائمة كروت PCI المركبة بداخل الجهاز
lsmod يعرض قائمة بمعرفات الاجهزة التي تم تشغيلها
lspcmcia قائمة كروت PCMCIA المركبة بالجهاز
lshal قائمة الاجهزة المركبة في الجهاز (USB و PCI و غيرة)
lscpu معلومات عن المعالج المستخدم

في هذا الموضوع سوف احاول تقديم بعض الاوامر المهمة لمستخدمي النظام المفتوح المصدر والمجاني لنكس. جميع هذه الاوامر تنفذ من خلال نافذة الاوامر (Terminal or Command Line) وفي الغالب ستجدها في جميع توزيعات اللينكس واليونكس كذلك مع بعض الاختلافات البسيطه احيانا.

* توضيح: ما أضعه بين علامتي <> يعني انه يجب استبداله بشي مناسب كاسم ملف او مجلد وما هو بين اقواس ( ) فهذا فقط شرح مني للامر المذكور ولايكتب اثناء التنفيذ.

سوف ابدأ بأحد الاوامر المهمة:

الامر: man
التعريف: عرض معلومات عن معظم اومر النظام وشرحها وطرق استخدامها طريقة الاستخدام:

1
man <الامر>

الامر: ls
التعريف: لعرض الملفات الموجود في المجلد الحالي طريقة الاستخدام:

1
2
3
ls (عرض الملفات والمجلدات فقط)
ls -l (الملفات على شكل قائمة مع عرض حجم الملف والصلاحيات)
ls -a (الملفات المخفية اللتي تبدا بنقطه)

كما يمكن دمج بعض الخيارات كدمج a و l للحصول على قائمة الملفات مع الملفات المخفية ولمزيد من الخيارات يمكن استخدام الامر man للحصول على المزيد من التفاصيل

الامر: cp
التعريف: نسخ ملف او ملفات الى مجلد اخر (او انشاء نسخه للملف باسم مختلف) طريقة الاستخدام:

1
2
cp <file> <folder/>  (نسخ ملف الى مجلد)
cp <file> <newfile> (انشاء نسخة من الملف)

الامر: mv
التعريف: نقل ملف او ملفات الى مجلد اخر (او تغيير اسم الملف) طريقة الاستخدام:

1
2
mv <file> <folder/>  (نقل ملف الى مجلد)
mv <file> <newfilename> (تغيير اسم ملف)

الامر: rm
التعريف: مسح ملفات او مجلدات طريقة الاستخدام:

1
2
rm <files>  (مسح ملفات)
rm -r <folder/> (مسح المجلد و الملفات التي بداخله)

الامر: mkdir و rmdir
التعريف: انشاء و حذف مجلد (لحذف مجلد يشترط ان يكون فارغا، وان لم يكن فارغا فيستخدم الامر السابق) طريقة الاستخدام:

1
2
mkdir <folder>  (انشاء مجلد)
rmdir <folder> (حذف مجلد)

الامر: ps
التعريف: عرض قائمة البرامج التي تعمل الان طريقة الاستخدام:

1
2
ps  (سيعرض فقط البرامج التي تعمل في نافذة الاوامر)
ps aux (جميع البرامج اللتي تعمل وتفاصيل مهمه اخرى)

الامر: df
التعريف: عرض معلومات عن المساحة المستخدمة والمتبقية من القرص الصلب لجميع الاقسام طريقة الاستخدام:

1
2
df (عرض الارقام بالبايت)
df -h (عرض الارقام يصيغة اسهل للقرائة مثل ميقا قيقا)

الامر: free
التعريف: عرض معلومات عن استخدام الذاكرة والذاكرة الاحتياطية في القرص الصلب (swap) طريقة الاستخدام:

1
2
free (عرض الارقام بالكيلو بايت)
free -m (عرض الارقام بالميقا بايت)

هذه بعض الاوامر وهناك الكثير وساقوم بكتابه موضوع اخر عن اوامر اخرى متقدمة

If you are a Fedora user then you must be using RPM Fusion and if you are not then please do since it provides you with many cool packages that Fedora doesn’t come with (like ATI & nVidia drivers, video and audio codec…etc). After you install RPM Fusion repositories (through their provided rpm packages which you can find about under the ‘Configuration’ in their website) you will be able to use it right away from the command line by using ‘yum’ or if you like the GUI (like I do) then it is PackageKit. However, there is one thing that I don’t like about PackageKit which is dealing with dependencies.PackageKit will only resolve dependencies when you apply the changes not while you are making them (selecting to install or remove a package). I find that annoying since sometimes when I select to remove some packages that I think I don’t need and when I click on apply it will show the list of dependencies of all the selected packages and will not tell you which one of the selected packages is needed by those other packages and the only way to find out is by removing packages one by one. Same thing when installing. However, there is a solution to this problem, it is called Smart, Smart is a package manager that can be used to manage ‘rpm’ packages (and also apt as well). You can install Smart and the GUI from Fedora repos with this command:

1
yum install smart smart-gui

The biggest advantage of using Smart over PackageKit is the way it resolves dependencies. Smart will do that instantly while you are clicking to install a new package or trying to remove one. So for example if you are using Fedora with KDE and wanted to remove all Gnome packages and you clicked for example on ‘gnome-vfs2’ Smart will immediately look for all other packages that depends on this one and if any it will show you a windows of the list of all other packages that will be removed as a result of removing this one, among that list you will find ‘Firefox’, ‘vlc’ and other packages that I actually need, so that means this one is important and i will just hit cancel to keep it. Same thing when for example you want to install and try some application but you find that it needs many other packages to be installed as well.

However, it seems that Fedora and RPMfusion are not giving much attention to Smart and the channels files (channel = repo) are not updated for Fedora 14 (was also the case for F13 when it was released) so I decided to update those packages myself and maybe find a way to send them to Fedora and RPMFusion so they will sign them and add them to their main repositories.

Download the appropriate files for your system or the source if you wanna compile the rpms and sign them yourself (you will need to rerun Smart so it detects the changes):

Update: Since not much attention from Fedora and RPMfusion is giving to Smart and it is not supported anymore I stopped making the rpms for it.

While working on my script Autopilot to enable buying advertisement I started collecting information about the price changes over time, and found out that it is not actually random, but repeats every week. So here is a graph that shows the prices for 1 week and a table that shows the same thing and highlights the cheapest ones.

AM Advertisement Prices

SatSunMonTueWedThuFri
12 AM49890480893208043022470173221340693
01 AM48089190043204348612377683579249415
02 AM2389674353284550324322134543949838
03 AM7831140213447547017338694989039308
04 AM8870254823685340843406934983814928
05 AM214588658398013517747250432327530
06 AM2277520310430223221349890238968870
07 AM736621438461123255550097976319060
08 AM203108083486123579248089743525482
09 AM234479777501054069339308887014038
10 AM1009439347503244543923896164998675
11 AM7531501684922948567118512488322794
12 PM1904543179470174989078312277523447
01 PM4616732218440705016874731101511824
02 PM50109492444084349838887086757472
03 PM4317936829377684808914021203109777
04 PM31976365453517743232214582558229278
05 PM44098496113328934525255851903748103
06 PM43972439724397243972439724397243972
07 PM32043415313896736524344393290932080
08 PM48612389673443932080328453685343022
09 PM37768365243208034475430225010547017
10 PM35792344393284543022503244084332213
11 PM49415329093685350105408433197740693

Note: the table and graph timings are based on the US-Eastern Time (-5) so adjust your times accordingly. Also the listed prices are for the most expensive type of advertisements (Billboards on 20 international airports).

NOTE: The script no longer works, and the development was stopped

After being bored with Airline Manager in Facebook in which you have to keep watching your airplanes when they arrive to send them in another flight, I decided to write my own script to use with greasemonkey in FireFox to do that thing for me. Basically, you will need a computer that is connected to the internet and running for most of the time. Install Firefox and add the Greasemonkey add-on to it, then install my script in greasmonkey and enable it if it is not enabled by default. Now when you visit the flight section of the game under facebook you will see the Auto Pilot control box (shown below) in the left column. Simply set the time that you want the script to repeat the task then click on the button. That’s it, now just watch the script fly the first 10 ready airplanes and the count down will start to trigger the next run.

كثير منا يجد العاب الفيسبوك (Facebook) مملة بعد فترة من اللعب بسبب ان اسلوب اللعب يصبح متكر ورتيب ومن امثلتها لعبه مدير الطيران (Airline manager) اذ يجب عليك متابعه مئات من الطائرات وانتظار وصولها لكي تقوم بارسالها مرة اخرى في رحلة جديدة، فلذك السبب قمت ببرمجة برنامج صغير يعمل في متصفح الفايرفوكس (Firefox) تحت اضافة قريسمونكي (Greasemonkey). فاذا كنت من من يلعب هذه اللعبة وعندك جهاز متصل بالانترنت ويعمل بشكل مستمر فكل ما عليك هو تركيب متصفح الفايرفوكس واضافة القريسمونكي له ثم تحميل برنامجي فيه ومن ثم قم بقتح صفحة اللعبة من الفيسبوك واضغط على رابط الطيران (Flight) و سوف تجد ادوات التحكم ظاهرة في الجهه اليسرى من الصفحة كما تراها في الصورة التالية. قم بتحديد الزمن الذي تريدة لتكرار عملية الطيران ثم اضغط زر (Auto Pilot) فسيقوم البرنامج بارسال اول 10 طائرات جاهزة ثم سيكرر العملية بعد انقضاء العد التنازلي.

Here is an image showing the position on the control box in the page:

هذه الصوره توضح موقع ادوات التحكم في الصفحة:

Download the code from here: https://github.com/fduraibi/Autopilot

Change log:

1.2.14: (July/28/2011)

  • Updating the script to work with new AM changes

1.2.13: (July/27/2011)

  • Fix fly link.

1.2.12: (July/25/2011)

  • Allow more wait time (up to 999 minutes + 999 random minutes), using longer time + random makes it hard to get detected ;)
  • Fix: the control box might show up in a weird location and cannot be clicked.
  • Fix: Update fly link.
  • Fix: Reset the tank max to 999999999 since AM will not accept 1000000000 even it is the max as they say!

1.2.11: (July/21/2011)

  • New: Buying advertisement is now possible.
  • Redesign the way tasks are being done to prevent some tasks from starting before other finish.
  • Added two fields to change the lucky fuel price and the max fuel tank capacity.
  • User interface enhancements.
  • Better use of CSS to make the code smaller and looks neat.

1.2.10: (July/04/2011)

  • Enhanced fly function will not reload for every patch of aircraft.
  • New: Lucky Fuel, when the fuel price drops to 50 (which happens once a month) fill the tank.
  • New: Options box to tune some of the script features to your liking:
    • Autostart on page load.
    • Change the delay and random delay times.

1.2.9: (Jun/10/2011)

  • New: Titlebar for the controlbox which is used to move it.
  • Update: Coloring the box to make it look nicer.

1.2.8: (Jun/8/2011)

  • New: Fuel Rescue option, if fuel tank is empty the script will buy enough fuel to fly the aircraft, no matter what the price is.
  • New: Autopilot Controlbox is movable, and the position will be saved.
  • Fix: Pages fetched will use the same protocol as the main page (http or https).
  • Update: If for unknow reasons a page won’t load, the script will reload AM
  • Removed some unused code.

1.2.7:

  • Added Cargo flights.
  • Script tested and works under Google Chrome using “tampermonkey” extension.
  • Fixed some compatibility with Google Chrome.
  • Small fix to allow running on secure Facebook page (https).
  • Increasing the delay and random delay between tasks, to help people with slow connections and make the script a bit harder to detect.

1.2.6:

  • Server update check of the script is back.
  • Added Tooltips to explain the functionality of the controlbox.
  • Enhanced fly function (if there are more than 10 aircraft waiting it will fly them in the same run).
  • Small changes and fixes here and there.

1.2.5:

  • Aircraft fly Fix (Thanks Olla)

1.2.4:

  • Fixed the script after the game code was updated.
  • Removed the Check4Update function <– since this will be the last update (sorry guys, i would love to keep doing this but I have other stuff to do)
  • Included the developer code (all the code that I use for myself including the unused functions, debuging stuff)
    • If you open Firefox Error Console you can see the logs about what the script is doing, very helpful for debugging.
    • Buy airplanes and sell airplanes functions are there but need to be enabled and integrated to the controlbox.
    • Check4Update is still there but disabled, i will remove the file from my server later so the function will not be useful for this script but I kept the code for others to use if someone want to take over.

1.2.3:

  • Fuel, now you can auto buy fuel by checking the fuel checkbox and setting the maximum amount needed and the highest price. It will check once every hour. (I found a way to fly the airplanes even with no fuel (negative amount) and was about to include it in the script but thought that would be cheating so I did not.)

1.2.2:

  • Added ability to buy catering by selecting the type and amount, so it buys them before flying the airplanes. But you have to make sure that you put the right amount for the selected catering type (minimum and maximum) by following the values giving by the game otherwise it will not buy them. And when the catering finishes it will buy them again in the next round.

1.2.1:

  • Added Note taker to keep notes about the game, like airport names, what to buy next…etc.
  • Fixed a bug in autoupdate if the version file on the server is not accessible.
  • Added a timeout for waiting loops so they will not loop forever in case a page did not load correctly.
  • Refresh (reload) the facebook page, including AM page, every 20 iterations to overcome a bug in AM (which i have no control over) that appears after keeping the script running for long time.

1.2.0:

This version went through a restructuring of the code. In the previous versions I was injecting the whole code inside the AM page (AM iframe inside Facebook page to be precise) and because of that I was also storing the script settings as AM cookies. This approach is simple and makes interacting with the page easy, however, it makes it easy for AM admins to detect the script by either adding a function that searches for my functions or the entries in the cookies. In order to solve this problem I changed the way the script works. Now when you open the AM game under Facebook my script will be loaded twice, the first instance will load under Facebook frame and it will inject the AP Control box in that frame, which AM has no access to so they cannot detect it. The second instance will load under AM frame, however, it will not inject anything but rather will remain in Greasemonkey sandbox and that is also hidden from AM cannot be detected. The last thing is the settings which are now being stored in Firefox itself under GM settings using GM functions (GM_getValue & GM_setValue). The two script instances are working separately and cannot communicate with each other since they run under different domains (facebook.com & airlinemanager.activewebs.dk) as this is a security feature enforced by Firefox to prevent malicious websites from accessing other websites functions and variables. To overcome this obstacle I used the GM stored settings which are shared by both instances to communicate. In addition to all of that I added some randomization to the timer so executing the tasks will not happen at the exact intervals.

  • Replaced using (eval) which can be harmful with location.assign
  • Settings are not stored in AM cookies anymore.
  • No code injection in AM page.
  • Time randomization.
  • Repairs and C-Check have their own check box so you can do one and not the other.
  • Auto check for script update every 3 days.
  • The timer now loops every 5 seconds instead of every 1 second to reduce the load on the browser.

* Note:

  • I recommend removing the stored cookies by the older version (delete all cookies if you are not sure how).
  • Even with all of these precautions this automating script can still be detected by AM admin if they want to, even though I don’t expect them to do it but they can detect and close your AM account. (Farmville knows about the automation tools and the users who use them but they did not prevent/block them because it did not harm them, rather it might have increase their users by keeping the lazy ones like me.)
  • I expect this version to have many bugs, because I did many changes. Also there are still some changes that I wanted to do but decided to release this first and work later on these changes and whatever bugs you guys find.

1.1.2:

  • More enhancement to the C-Check and Repair, it should miss less repairs and checks now. Basically I increased the waiting delay between tasks to give more time for the pages to load before starting the new one. If your internet connection is slow and the script does not work as it should then try increasing the delay by modifying this part of the script “fDelay=5000”, 5000 means 5 seconds, set the value to something suitable for your net speed.
  • Repairs and C-Checks will not work after the new AM update (April-08), so in order to keep using the script to fly airplanes uncheck the repair box, and kindly wait for the coming update.

1.1.1:

  • Solved the problem of not working under Firefox 3.6.x.
  • Removed the dependency on jQuery.
  • Fixed a bug that causes the control box not to show if the airline is not AM trusted.
  • The C-Check and Repairs are not perfect and it get missed sometimes

1.1.0:

  • Major change in how the script works.
  • Added the ability to repair airplanes and do C-Check before flying them.
  • Save control box settings in AM cookies.
  • Will load on all AM pages not just the Flight page.
  • Fixed the file name so it will install directly by greasmonkey
  • This version does not work with the new Firefox 3.6.x, I am trying to solve this issue.

1.0.0:

  • Inisial release.

Disclaimer: The author of this script cannot be held responsible for any thing that might result from using this code, so use it at your own risk.

تنويه: المبرمج لن يتحمل مسئولية اي اضرار قد تنجم عن استخدام هذا البرنامج، فاستخدمة على مسؤليتك.

إذا كنت تعمل في مجال تقنية المعلومات (IT) او انك ذو المام بتركيب البرامج وتقوم بتركيب برنامج الاوفيس 2007 على العديد من الاجهزة فان هذا الموضوع قد يساعدك في جعل تلك المهمة اسهل بكثير مما اعتدت عليه.

توفر ميكروسوفت امكانية تعديل وتخصيص الاعدادات الافتراضية لبرنامج اعداد الاوفيس (Setup) مما يمكنك من تركيب البرنامج فيما بعد بضغطة زر واحدة، واليكم الطريقة بالصور.

  • اولا قم بنسح برنامج الاوفيس من القرص الضوئي الى مجلد في القرص الصلب (مثلا D:\Office2k7)
  • افتح نافذة الاوامر (Command Prompt) ثم انتقل الى مجلد الاوفيس
  • قم بتشغيل برنامج الاعداد مع تمرير امر تخصيص الاعدادات كالتالي: setup.exe /admin (بامكانك تنفيذ setup.exe /? لروية جميع الاوامر)

نافذة اعدادات الاوفيس

  • من خلال هذة النافذة تستطيع تخصيص البرامج والاعدادات لحزمة الاوفيس بما يتناسب مع متطلباتك او متطلبات الشركة والصور التالية توضح اهم تلك الاعدادات مع شرح مبسط (اضغط على الصورة لرؤيتها بحجم اكبر):

oct-location

  • بعد الانتهاء من جميع الاعدادات قم بحفظها عن طريق “File->Save”، (اسميت ملفي FAD.MSP) ويمكنك فتح الملف مرة اخرى للقيام بمزيد من التعديل والتخصيص.

  • الخطوة الثانية هي دمج التحديثات والرقع الامنية الخاصة بالاوفيس مثل “Sevice Packs” و “Security patches” بحيث يتم تركيبها مباشرة بعد تنصيب البرنامج.

  • قم بتحميل اخر التحديثات و السيرفس باك من موقع ميكروسوفت وستكون ملفات تنفيذية بامتداد exe.

  • من نافذة الاوامر قم بتشغيل تلك الملفات بالطريقة التالية: office_sp2.exe /extract:D:\office2k7\updates حيث ان office_sp2.exe هواسم ملف التحديث و D:\office2k7\updates هو المسار لمجد التحديثات الموجود في مجلد الاوفيس، وستقوم تلك العملية بنسخ ملفات التحديث ذات الامتداد msp الى ذلك المجلد.

  • الخطوة الاخيرة هي عملية التثبيت للاوفيس على الاجهزة كالتالي: setup.exe /adminfile FAD.MSP

  • وبامكانك انشاء ملف باتش “setup.bat” يحتوي على هذا السطر لكي تسهل عملية التنفيذ.

والان لن تحتاج الى ادخال الرقم التسلسلي في كل مرة ولن تحتاج الى تخصيص الاعدادات او تركيب كل البرامج في كل مرة ولا الى تركيب التحديثات.

في البداية اهني من يوجد عندهم تغطية لشبكة الوايماكس (WiMAX) الخاصة بشركة عذيب (Go) بتلك الخدمة اللتي انقذتنا من احتكار شركة الاتصالات. عند بدء الخدمة اشرت على احد اخوتي بالغاء خدمة الدي اس ال (DSL) والاشتراك مع “قو” بسرعة 2 ميقا، قمت بتجربة السرعة مع موقع Speedtest لخادمين في الرياض واوروبا وكانت النتائج تبعث على السرور وانمتى ان تبقى كذلك خصوصا بعد ازدياد عدد المشتركين.

Go-Speedtest-Riyadh

Go-Speedtest-Rome

بعد استخدام الخدمة بفترة وجيزة قام جهاز المودم بعمل تحديث ذاتي لنفسه (اعتفد ان النحديثات يتم ارسالها عن طريق شركة عذيب) اعتقد ان الاصداؤ القديم كان 02.00.20.05.37 اما التحديث الجديد فهو 02.00.20.06.45 وقد تنبهت لذلك بعد ما قام الجهاز بعمل ريسيت (Reset) وعادت كلمة السر والاعدادات الاصليه.

قد يكون التحديث قام بحل بعض المشاكل لكن هناك مشكلة لازالت قائمة الى لحظة كتابة هذا المقال واتنمى ان تحل سريعا من Motorola او عذيب والمشكلة تكمن في تعطل خدمة تمرير طلبات اسماء النطاقات (DNS) الموجودة في المودم. حيث ان المودم يقوم بتعيين نفسه كخادم اسماء النطاقات في شبكتك الداخلية ثم يقوم هو بدورة بتمرير الطلبات الى خادم النطاقات الحقيقي الموجود لدى مزود الخدمة عذيب، لكن ولسبب مجهول تتعطل هذه الخدمة في المودم ولايقوم بتمرير الطلبات ولكن الاتصال لازال يعمل وبامكانك الدخول على المواقع والخوادم باستخدام عنوان ال اي بي (IP address).

الحل المؤقت لهذه المشكلة هو تعريف عنوان خادم النطاقات الحقيقي وبشكل يدوي في الجهاز اما باستخدام خادم عذيب او خادم OpenDNS

في حال رغبت في استخدام خادم عذيب فعليك الحصول على عنوان الـ IP من صفحة اعدادات المودم

DNS Server IP

الغريب ان عذيب يستخدمون IP لخادم واحد فقط والعادة بان يكون هناك اثان في حال تعطل احدهم ولعلهم يستخدمون تقنية توزيع الحمل (Load balancing)، المهم العنوان الضاهر في الصورة هو 94.77.215.126 ستقوم بتثيته في اعدادات الشبكة في جميع الاجهزة التي تستخدم الشبكة، الصورة التالية تبين طريقة عمل ذلك في الاجهزة العاملة بنظام وندوز

tcp-dns-setting-small

قمت باستخدام عنوان IP اخر من OpenDNS في حال تعطل خادم عذيب. اما بالنسبة لنظام اللينكس فيمكن القيام بذلك عن طريق ملف (etc/resolv.conf) او اعدادات NetworkManager ولمزيد من الايضاح ارجو السؤال عن طريق التعليقات على هذا الموضوع.

I have just found out that you can include images into gmail, not just through attachments but to embed them with in the email content. To activate this feature go to gmail Setting then Labs and look for and enable “Inserting Images”

Insert Image - Gmail Labs

After enabling this feature you will find a new icon in the email text editing toolbar clicking on this icon will allow you to embed images from your computer or from the internet using a URL

Inserting image into an email

You can also find more useful features in gmail Labs like adding more Emoticons and browsing your emails offline.

اكتشفت قبل قليل اثناء قيامي بتعديل بعض الاعدادات في بريد الجيميل (Gmail) انهم قد اضافو امكانية ارفاق الصور في داخل الرسالة وليس كمرفقات فقط، وفي حد علمي اعتقد انهم اول من قام بذالك في بريد متصفح مجاني (Web email). ولتفعيل ذلك ماعليك سوى الذهاب لاعدادات بريدك (Settings) قم اختر من شريط الاعدادات المختبر (Labs) ومن ثم قم بتفعيل خاصية ادراج الصور

Insert Image - Gmail Labs

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

Inserting image into an email

وهناك ادوات وخصائص اخرى مفيدة وجميلة يمكن تفعيلها ايضا من نفس المكان (مختبرات Labs) مثل زيادة الرسومات المضحكة (Emoticons) تصفح البريد بدون اتصال (Offline) حيث يقول الجيميل بحفظ الرسائل في جهازك اثناء اتصالك بالشبكة مما يمكنك من تصفحها وارسال الرسائل بدون اتصال وفي حال وجد اتصال يقوم بعمل تزامن مع الخادم.