
التنصت على الفيديو عن بُعد باستخدام منصة راديو معرّفة بالبرمجيات
هذا المشروع عبارة عن مجموعة أدوات برمجية للتنصت عن بُعد على شاشات المراقبة باستخدام مستقبل راديو معرَّف بالبرمجيات (SDR). يستغل الانبعاثات الكهرومغناطيسية المسرِّبة من الكابلات التي تنقل إشارات الفيديو.
عادةً ما يُنقل فيديو المسح النقطي سطرًا من البكسلات في كل مرة، مشفَّرًا كتيار متغير. يولّد ذلك موجة كهرومغناطيسية يمكن لمستقبل SDR التقاطها. يقوم البرنامج بربط شدة المجال المستقبَل للبكسل بدرجة رمادية في الوقت الفعلي. وهذا يشكّل تقديرًا تقريبيًا بالألوان الزائفة لإشارة الفيديو الأصلية.
تستخدم مجموعة الأدوات أجهزة جاهزة غير معدّلة، مما يخفض التكاليف ويزيد من قابلية الحركة مقارنةً بالحلول الموجودة. كما أنها تتيح معالجة لاحقة إضافية تعمل على تحسين نسبة الإشارة إلى الضوضاء. لا يحتاج المهاجم إلى معرفة مسبقة بشاشة عرض الفيديو المستهدفة. جميع المعاملات مثل الدقة ومعدل التحديث تُقدَّر بمساعدة البرنامج.
يتكوّن البرنامج من مكتبة مكتوبة بلغة C، ومجموعة من الإضافات (plug-ins) لمختلف الواجهات الأمامية للراديو المعرَّف بالبرمجيات (SDR)، وواجهة مستخدم رسومية (GUI) مبنية على Java. وهو تطبيق متعدد المنصات، حيث يتم تجميع جميع المكتبات الأصلية مسبقًا وضمّها في ملف jar واحد بلغة Java.
انقر نقرًا مزدوجًا على ملف JTempestSDR.jar لتشغيله. إذا فشل في التشغيل، فستحتاج إلى إعادة ترجمة المشروع.
هذا هو غلاف Java البرمجي وواجهة المستخدم الرسومية (GUI). يقوم ببناء جميع المشاريع والإضافات المدعومة بما في ذلك واجهة Java الرسومية نفسها. انتقل إلى مجلد JavaGUI واكتب ما يلي:
make all
إذا تعذّر العثور على "jni.h"، يجب عليك تشغيل أحد الأوامر التالية:
make all JAVA_HOME=path_to_jdk_installation
على نظام Windows 8 x64 قد يبدو الأمر كالتالي:
make all JAVA_HOME=C:/PROGRA~2/Java/jdk1.7.0_45
لفرض الترجمة لمعمارية X64 أو X32 (في حال كان المترجم الذي تستخدمه يدعم ذلك)، نفّذ ما يلي:
make all JAVA_HOME=C:/PROGRA~2/Java/jdk1.7.0_45 ARCHNAME=X64
على Ubuntu مع openjdk قد يبدو الأمر كالتالي:
make all JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
ملاحظة: سيقوم هذا أيضًا بترجمة الإضافات (plugins). بعضها يتطلب مكتبات إضافية! يمكنك تعطيل ترجمة الإضافات عن طريق تعديل ملف Makefile في JavaSDR.
يجب أن يكون MinGW مثبّتًا على نظامك.
على نظام Windows، سيؤدي هذا أيضًا إلى بناء إضافة Mirics SDR الخاصة بجهاز FlexiTV™ MSi3101 SDR USB Dongle. يجب أولاً تثبيت برنامج تشغيل SDR من http://www.mirics.com/
لتجميع الإضافة، انتقل إلى مجلد الإضافة واكتب ما يلي:
make all MIRICS_HOME=path_to_mirics_installation
على نظام Windows 8 x64 قد يبدو الأمر كالتالي:
make all MIRICS_HOME=C:/PROGRA~1/MiricsSDR
إذا كنت تشغّل إضافة Mirics، فتأكد من أن mir_sdr_api.dll موجود في مسار المكتبات (أو في نفس مجلد الملف التنفيذي). يمكنك العثور على ملف dll في C:/Program Files/MiricsSDR/API/x86 أو C:/Program Files/MiricsSDR/API/x64 اعتمادًا على بنية نظامك.
إذا كنت لا تنوي استخدام موصّل Mirics، يمكنك تخطي هذه الخطوة عن طريق تعديل ملف Makefile في مجلد JavaGUI. أزل TSDRPlugin_Mirics من السطر 89، بحيث يتغير من:
PLUGINS += TSDRPlugin_Mirics TSDRPlugin_ExtIO
إلى
PLUGINS += TSDRPlugin_ExtIO
على Linux وOS X، سيؤدي تجميع واجهة المستخدم الرسومية أيضًا إلى تجميع برنامج تشغيل UHD، لذا ستحتاج إلى تثبيت UHD ومكتبات boost المقابلة (سيقوم UHD بتثبيتها تلقائيًا). إذا كنت لا تريد برامج تشغيل UHD، يمكنك تخطي تجميعها عن طريق إزالة السطر 91 لنظام Linux والسطر 93 لنظام OS X من ملف Makefile في مجلد JavaGUI. هكذا تبدو تلك الأسطر افتراضيًا:
PLUGINS += TSDRPlugin_UHD
يمكن بناء جميع المشاريع باستخدام Eclipse أو make أيضًا.
ادخل إلى المجلد واكتب:
make all
سيعمل هذا على إنتاج المكتبة التي يمكن العثور عليها في المجلد الفرعي bin. ملفات الترويسة (headers) التي تحتاجها للتعامل معها موجودة في src/include.
انتقل إلى مجلد الإضافة واكتب:
make all
يجب أن يعمل ذلك ما لم يكن هناك متطلب خاص بالإضافة نفسها. في هذه الحالة، ابحث عن ملف README.
تحتوي المجلدات المختلفة على المشاريع الفرعية المختلفة. يحتوي مجلد TempestSDR على مكتبة C الرئيسية. يهدف المشروع إلى أن يكون متعدد المنصات مع دعم الإضافات لواجهات SDR الأمامية في مجلدات مختلفة.
يُبنى المشروع باستخدام Eclipse مع إضافة CDT (ولكن هذا ليس مطلوبًا). يدعم حاليًا Windows وLinux وOS X. قد لا تكون بعض إضافات الواجهات الأمامية متعددة المنصات. تحتاج أيضًا إلى تثبيت Java Development Kit (JDK).
يجب أن يكون MinGW مثبّتًا وأن تكون أوامر gcc وmake في مسار الأوامر (PATH). كما يجب أن يكون javac وjavah في المسار أيضًا.
سيُعلن عنه قريبًا.