
Dump1090 هو مفكك شيفرة بسيط لنمط Mode S لأجهزة RTLSDR
Dump1090 هو مفكك تشفير لرزم الوضع S مصمم خصيصًا لأجهزة RTLSDR.
أبرز الميزات هي:
اكتب "make".
لالتقاط حركة المرور مباشرة من جهاز RTL وعرض حركة المرور الملتقطة على المخرجات القياسية، شغّل البرنامج دون أي خيارات:
./dump1090
لإخراج الرسائل بالنظام الست عشري فقط:
./dump1090 --raw
لتشغيل البرنامج في الوضع التفاعلي:
./dump1090 --interactive
لتشغيل البرنامج في الوضع التفاعلي مع دعم الشبكة، والاتصال بمتصفحك على http://localhost:8080 لمشاهدة حركة المرور الحية:
./dump1090 --interactive --net
في الوضع التفاعلي، يمكن الحصول على مخرجات أقل كثافة بالمعلومات لكنها بأسلوب "ألعاب الأركيد" أكثر، حيث تُحدَّث الشاشة كل ثانية لعرض جميع الطائرات التي شوهدت مؤخرًا مع بعض المعلومات الإضافية مثل الارتفاع ورقم الرحلة، المستخرجة من رزم الوضع S المستقبلة.
لفك تشفير البيانات من ملف، استخدم:
./dump1090 --ifile /path/to/binfile
يجب إنشاء الملف الثنائي باستخدام rtl_sdr مثل هذا (أو باستخدام أي برنامج
آخر قادر على إخراج عينات IQ غير موقعة ذات 8 بت بمعدل أخذ عينات 2 ميجاهرتز).
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
في المثال يُستخدم كسب بقيمة 50 مع rtl_sdr؛ ببساطة يجب عليك استخدام أعلى
كسب متاح لموالفك. هذا ليس ضروريًا عند استدعاء Dump1090 نفسه
لأنه قادر على اختيار أعلى كسب مدعوم تلقائيًا.
من الممكن تغذية البرنامج بالبيانات عبر الإدخال القياسي باستخدام خيار --ifile مع "-" كوسيط.
يمكن استدعاء Dump1090 مع خيارات أخرى لسطر الأوامر لتعيين كسب مختلف، وتردد مختلف، وما إلى ذلك. للحصول على قائمة بالخيارات استخدم:
./dump1090 --help
كل ما لم يُوثق هنا يجب أن يكون واضحًا، وبالنسبة لمعظم المستخدمين فإن استدعاءه دون أي وسائط على الإطلاق هو أفضل ما يمكن فعله.
افتراضيًا، يتحقق Dump1090 من أخطاء فك التشفير باستخدام المجموع الاختباري CRC ذي 24 بت، حيثما كان متاحًا. يتم تجاهل الرسائل التي تحتوي على أخطاء.
يتيح مفتاح سطر الأوامر --fix تصحيح أخطاء البت المفرد بناءً على المجموع الاختباري CRC. تقنيًا، يستخدم جدولًا بفروق المجموع الاختباري المحسوبة مسبقًا والناتجة عن أخطاء البت المفرد لتحديد موضع البت الخاطئ.
هذا قادر بالفعل على تصحيح الأخطاء ويعمل بموثوقية في تجربتي، ومع ذلك إذا كنت مهتمًا ببيانات موثوقة للغاية، أقترح استخدام مفتاح سطر الأوامر --no-fix لتعطيل تصحيح الأخطاء.
في تجربتي المحدودة، كان Dump1090 قادرًا على فك تشفير عدد كبير من الرسائل حتى في الظروف التي واجهت فيها مشاكل باستخدام برامج أخرى، ومع ذلك لم يُجرَ أي اختبار رسمي، لذا لا يمكنني الادعاء حقًا أن هذا البرنامج أفضل أو أسوأ مقارنة بالبرامج المماثلة الأخرى.
إذا كان بإمكانك التقاط حركة مرور لا يستطيع Dump1090 فك تشفيرها بشكل صحيح، أرسل لي بريدًا إلكترونيًا مع رابط للتحميل. قد أحاول تحسين الكشف خلال وقت فراغي (هذا مجرد مشروع هواية).
من خلال تفعيل دعم الشبكة باستخدام --net، يبدأ Dump1090 بالاستماع لاتصالات العملاء على المنفذين 30002 و30001 (يمكنك تغيير كلا المنفذين إذا أردت، راجع مخرجات --help).
يتم تقديم البيانات للعملاء المتصلين فور وصولها من الجهاز (أو من الملف إذا تم استخدام --ifile) بالتنسيق الخام المشابه لما يلي:
*8D451E8B99019699C00B0A81F36E;
يتم فصل كل إدخال بسطر جديد بسيط (حرف LF، بالنظام الست عشري 0x0A).
المنفذ 30001 هو منفذ الإدخال الخام، ويمكن استخدامه لتغذية Dump1090
بالبيانات بنفس التنسيق المحدد أعلاه، برسائل سداسية عشرية تبدأ
بـ * وتنتهي بحرف ;.
لذا على سبيل المثال إذا كانت هناك نسخة أخرى بعيدة من Dump1090 تجمع البيانات، فمن الممكن تمرير المخرجات إلى نسخة محلية من Dump1090 بفعل شيء مثل هذا:
nc remote-dump1090.example.net 30002 | nc localhost 30001
من المهم ملاحظة أن ما يُستقبل عبر المنفذ 30001 يُبث أيضًا إلى العملاء المستمعين على المنفذ 30002.
بشكل عام، كل ما يُستقبل من المنفذ 30001 يُعالج تمامًا مثل حركة المرور العادية من أجهزة RTL أو من الملف عند استخدام --ifile.
من الممكن استخدام Dump1090 كمركز (hub) فقط باستخدام --ifile مع /dev/zero كوسيطة كما في المثال التالي:
./dump1090 --net-only
أو بديلًا لذلك لمشاهدة ما يحدث على الشاشة:
./dump1090 --net-only --interactive
ثم يمكنك تغذيته من مصادر بيانات مختلفة عبر الإنترنت.
يتم تقديم الرسائل للعملاء المتصلين بصيغة SBS1 (BaseStation)، على غرار:
MSG,4,,,738065,,,,,,,,420,179,,,0,,0,0,0,0
MSG,3,,,738065,,,,,,,35000,,,34.81609,34.07810,,,0,0,0,0
يمكن استخدام هذا لتغذية البيانات إلى مواقع المشاركة المختلفة دون الحاجة إلى استخدام مفكك تشفير آخر.
تُرسل رسائل الوضع S على تردد 1090 ميجاهرتز. إذا كان لديك هوائي لائق ستتمكن من التقاط إشارات من طائرات بعيدة جدًا عن موقعك، خاصة إذا كنت في الخارج وفي موقع بإطلالة جيدة على السماء.
يمكنك بسهولة بناء هوائي رخيص جدًا باتباع التعليمات على:
http://antirez.com/news/46
بهذا الهوائي البسيط تمكنت من التقاط إشارات طائرات على بعد 200+ كم من موقعي.
إذا كنت مهتمًا بهوائي أكثر جدية، راجع الموارد التالية:
باستخدام --aggressive من الممكن تفعيل الوضع العدواني، وهو نسخة معدلة من كشف وفك تشفير رزم الوضع S. يستهلك الوضع العدواني عادةً المزيد من المعالج (خاصة إذا كان هناك العديد من الطائرات ترسل رزم DF17)، لكنه يمكنه اكتشاف المزيد من الرسائل.
الخوارزمية في الوضع العدواني معدلة بالطرق التالية:
لا يُنصح باستخدام الوضع العدواني إلا في الأماكن ذات حركة المرور المنخفضة لإتاحة فرصة لالتقاط المزيد من الرسائل.
وضع التصحيح هو مساعدة بصرية لتحسين خوارزمية الكشف أو لفهم سبب عدم عمل البرنامج مع مدخلات معينة.
في هذا الوضع تُعرض الرسائل في تمثيل رسومي بأسلوب الفن ASCII، حيث تُعرض أشرطة المقدار الفردية المأخوذة بتردد 2 ميجاهرتز.
يُظهر مؤشر رقم العينة، حيث 0 هي العينة التي تم العثور فيها على أول قمة للوضع S. تتم أيضًا إضافة بعض ضوضاء الخلفية الإضافية قبل القمة الأولى لتوفير بعض السياق.
لتفعيل وضع التصحيح والتحقق من مجموعات الرزم التي يمكنك
تسجيلها، استخدم mode1090 --help للحصول على قائمة بعلامات التصحيح المتاحة.
يتضمن وضع التصحيح مخرجات جافاسكربت اختيارية تُستخدم لتصور الرزم باستخدام متصفح ويب، يمكنك استخدام ملف debug.html داخل دليل 'tools' لتحميل ملف frames.js المولد.
الكود موثق جيدًا ومكتوب ليكون سهل الفهم. بالنسبة للمبرمج المجتهد الذي لديه مواصفات الوضع S بين يديه، يجب أن يكون فهم كيفية عمله أمرًا بسيطًا.
الخوارزميات التي استخدمتها تم الحصول عليها أساسًا بالنظر إلى العديد من الرسائل كما تُعرض باستخدام برنامج SDL مؤقت، ومحاولة نمذجة الخوارزمية استنادًا إلى الشكل الرسومي للرسائل.
إذا كان لديك جهاز RTLSDR وكنت في منطقة تمر فيها طائرات فوق رأسك، فقط شغّل البرنامج وتحقق من الإشارات.
ومع ذلك إذا لم يكن لديك جهاز RTLSDR، أو إذا كان وجود الطائرات في منطقتك محدودًا جدًا، فقد ترغب في تجربة ملف العينة الموزع مع نسخة Dump1090 داخل دليل "testfiles".
شغّله هكذا:
./dump1090 --ifile testfiles/modes1.bin
إنه مجرد عامل تصفية بسيط يأخذ عينات IQ الخام ذات 8 بت كمدخلات ويخرج ملفًا محذوفًا منه جميع الأجزاء التي تكون فيها I وQ أقل من <المستوى> المحدد لأكثر من 32 عينة.
استخدمه هكذا:
cat big.bin | ./dump1090 --snip 25 > small.bin
استخدمته لإنشاء ملف اختبار صغير لأدرجه داخل توزيعة الكود المصدري لهذا البرنامج.
كُتب Dump1090 خلال بعض وقت الفراغ في عيد الميلاد 2012، وهو مشروع هواية لذا سأتمكن من معالجة المشكلات وتحسينه فقط خلال وقت الفراغ، ومع ذلك أشجعك على إرسال طلبات السحب (pull requests) لتحسين البرنامج. يمكن أن تكون قائمة المهام المتبقية (TODO) المضمنة في توزيعة المصدر نقطة بداية جيدة.
Dump1090 من كتابة Salvatore Sanfilippo [email protected] وهو مُصدَر بموجب ترخيص BSD ثلاثي البنود.