
التنصت على الفيديو عن بُعد باستخدام منصة راديو معرّف بالبرمجيات
هذا المشروع عبارة عن مجموعة أدوات برمجية للتنصت عن بُعد على شاشات الفيديو باستخدام مستقبل راديو معرف بالبرمجيات (SDR). يستغل التسريبات الكهرومغناطيسية من الكابلات التي تنقل إشارات الفيديو.
عادةً ما يُرسَل فيديو المسح (Raster video) سطرًا واحدًا من البكسلات في كل مرة، مُرمَّزًا على شكل تيار كهربائي متغير. يولّد هذا التيار موجة كهرومغناطيسية يمكن لمستقبل SDR التقاطها. يقوم البرنامج بتحويل قوة المجال المستقبَلة لكل بكسل إلى درجة رمادية في الوقت الفعلي. وهذا يكوّن تقديرًا بألوان زائفة لإشارة الفيديو الأصلية.
تستخدم المجموعة أجهزة جاهزة من السوق دون تعديل، مما يقلل التكاليف ويزيد الحركة مقارنة بالحلول الحالية. كما تتيح معالجة لاحقة إضافية تحسّن نسبة الإشارة إلى الضوضاء. لا يحتاج المهاجم إلى معرفة مسبقة بشاشة الفيديو المستهدفة. جميع المعاملات مثل الدقة ومعدل التحديث تُقدَّر بمساعدة البرنامج.
يتكوّن البرنامج من مكتبة مكتوبة بلغة C، ومجموعة إضافات (plug-ins) لعدة واجهات أمامية لراديو SDR، وواجهة مستخدم رسومية (GUI) مبنية على Java. وهو تطبيق متعدد المنصات، حيث تُجمَّع جميع المكتبات الأصلية مسبقًا وتُوضَع في ملف Java jar واحد.
انقر نقرًا مزدوجًا على ملف JTempestSDR.jar للتشغيل. إذا فشل في التشغيل، فستحتاج إلى إعادة تجميع المشروع.
هذا هو غلاف Java وواجهة GUI. يقوم ببناء جميع المشاريع والإضافات المدعومة بما في ذلك واجهة Java GUI نفسها. ادخل إلى مجلد 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
على نظام Mac OSX قد يبدو الأمر بهذا الشكل
make all JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
ملاحظة: سيقوم هذا أيضًا بتجميع الإضافات. بعضها يتطلب مكتبات إضافية! يمكنك تعطيل تجميع الإضافات عن طريق تعديل Makefile في JavaSDR.
يجب أن يكون لديك MinGW مثبتًا.
على Windows، سيقوم هذا أيضًا ببناء إضافة SDRplay RSP. يجب أولاً تثبيت برنامج تشغيل SDR من http://www.sdrplay.com/
مثال على كيفية التجميع لنظام Windows x64
export PATH=$PATH:"/cygdrive/C/Program Files/Java/jdk<put_your_version_here>/bin"
make all JAVA_HOME=C:/PROGRA~1/Java/jdk<put_your_version_here> CC=x86_64-w64-mingw32-gcc ARCHNAME=X64
واستبدل <put_your_version_here> بإصدار JDK لديك.
عند تشغيل إضافة SDRplay، تأكد من أن mir_sdr_api.dll و sdrplay_api.dll موجودان في مسار المكتبات (أو في نفس دليل الملف التنفيذي). يمكنك العثور على ملف dll في C:/Program Files/SDRplay/API/x86 أو C:/Program Files/SDRplay/API/x64 حسب بنية جهازك.
إذا كنت لا تنوي استخدام دونجل RSP، يمكنك تخطي هذه الخطوة عن طريق تعديل Makefile في دليل JavaGUI. أزل TSDRPlugin_SDRPlay من السطر 89، بتغييره من
PLUGINS += TSDRPlugin_SDRPlay TSDRPlugin_ExtIO
إلى
PLUGINS += TSDRPlugin_ExtIO
على Linux و OS X، سيؤدي تجميع واجهة GUI أيضًا إلى تجميع برنامج تشغيل UHD، لذا ستحتاج إلى تثبيت UHD ومكتبات boost المقابلة (سيقوم UHD بتثبيتها تلقائيًا). إذا كنت لا تريد برامج تشغيل UHD، يمكنك تخطي تجميعها عن طريق إزالة السطر 91 لنظام Linux والسطر 93 لنظام OS X من Makefile في دليل JavaGUI.
يمكن بناء جميع المشاريع باستخدام 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 في مسارك. كما يجب أن يكون javac و javah في مسارك أيضًا.
libuhd-dev