كيف يمكنك إجراء هندسة عكسية لمجموعة من البيانات الثنائية التي يتم سحبها من الجهاز؟

StackOverflow https://stackoverflow.com/questions/115836

سؤال

طرح أحد أصدقائي هذا السؤال في أحد الأيام، وقد اشترى مؤخرًا جهازًا لمراقبة معدل ضربات القلب من Garmin والذي يتتبع معدل ضربات القلب ويسمح له بتحميل إحصائيات معدل ضربات القلب ليوم واحد إلى جهاز الكمبيوتر الخاص به.

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

من أين يبدأ المرء عند إجراء هندسة عكسية للبيانات عندما لا يعرف شيئًا عن الهيكل؟

هل كانت مفيدة؟

المحلول

لقد واجهت نفس المشكلة ووجدت في البداية هذا المشروع في Google Code والذي يهدف إلى إكمال إصدار متعدد المنصات من الأدوات لأجهزة Garmin ...يرى: http://code.google.com/p/garmintools/.يوجد رابط على الصفحة الأولى لهذا المشروع للبروتوكولات التي تحتاجها، والتي كانت شركة Garmin مدروسة بما يكفي لإصدارها علنًا.

وهذا رابط مباشر لمواصفات Garmin I/O: http://www.garmin.com/support/pdf/IOSDK.zip

نصائح أخرى

سأبدأ في النظر إلى البيانات في محرر سداسي عشري، وآمل أن يكون محررًا جيدًا يعرف الترميزات الأكثر شيوعًا (ASCII، وUnicode، وما إلى ذلك) ثم أحاول فهمها من خلال البيانات التي تعلم أنه قام بتخزينها.

كما ذكر ملصق آخر، الهندسة العكسية يمكن أن تكون صعبة، ليس من الناحية العملية ولكن من الناحية القانونية.

ومع ذلك، قد تتمكن من العثور على كل ما يتعلق بسؤالك الأساسي عن طريق التحقق من هذا المشروع ورمزه... وهم يتعاملون أيضًا مع معدل ضربات قلب العداء وبيانات نظام تحديد المواقع العالمي (GPS) المجمعة.

http://www.gpsbabel.org/

أقترح عليك أن تبدأ بالتحقق من شرعية الهندسة العكسية في بلدك الأصلي.لدى معظم البلدان قوانين صارمة للغاية بشأن ما هو مسموح به وما هو غير مسموح به فيما يتعلق بأجهزة الهندسة العكسية والتعليمات البرمجية.

سأبدأ برؤية البيانات التي يرسلها الجهاز، ثم أفكر في كيفية تمثيل هذه البيانات وتعبئتها.

أود أولاً التقاط العديد من العينات، ومعرفة ما إذا كان هناك أي نمط يظهر نفسه، نظرًا لأن نبضات القلب شيء منتظم وهذا قد يشير إلى أن القياس مرتبط بالقلب نفسه.وأود أيضًا أن أبحث عن حقول البت التي تتزايد بشكل رتيب، لأن ذلك قد يوحي بنوع من الطابع الزمني.

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

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

سأبدأ بإنشاء تفريغ سداسي عشري للبيانات.من المحتمل أن يكون محظورًا في بعض القطع ذات الحجم المزدوج.ابدأ بالبحث عن الأنماط المتكررة.فكر في نوع البيانات التي من المحتمل أن يرسلوها.إما أنهم يسجلون كل نبضة قلب على حدة، أو يسجلون كل ما يرسله المستشعر على فترات زمنية محددة.إذا كانت نبضات فردية، فسيكون هناك دلتا زمنية (منذ آخر نبضة)، ومدة، وأقصى أو متوسط ​​قوة من نوع ما.إذا كانت فواصل زمنية ثابتة، فمن المحتمل أن تكون ناقلًا بسيطًا للقراءات.من المحتمل أن تكون هناك مقدمة من نوع ما، مع طابع زمني للبدء ومعدل أخذ العينات.يمكنك محاولة فك تشفير الطابع الزمني بنفسك، أو يمكنك ببساطة إرساله إليه ctime() ومعرفة ما إذا كانوا يستخدمون تنسيق الوقت المطلق القياسي.

ضع في اعتبارك أن الكثير من محولات A/D الرخيصة تنتج فقط مخرجات 12 بت، لذلك من غير المرجح أن تكون قراءاتك أكبر من 16 بت (ويمكن استخدام 4 بتات ذات الترتيب العالي للأعلام).أنصح بإعادة ضبط الجهاز بحيث يكون "فارغًا"، وتفريغ المحتويات وتخزينها، ثم أخذ مجموعة من القراءات، وتسجيل النتائج (أيًا كان ما يبلغ عنه الجهاز عادةً)، ثم تفريغ المحتويات مرة أخرى ومحاولة ربط النتائج المسجلة مع أي بيانات ظهرت بعد التفريغ "الفارغ".

لست متأكدًا مما إذا كان هذا هو ما تبحث عنه ولكن Garmin قامت بإنشاء واجهة برمجة تطبيقات تعمل مع متصفحك.يبدو أن OSX مدعوم، وكذلك متصفحات Windows...سأجربه من Google Chromium لمعرفة ما إذا كان يمكن استخدامه بدلاً من هذه الهندسة العكسية...

http://developer.garmin.com/web-device/garmin-communicator-plugin/

ميزات واجهة برمجة التطبيقات

كشف تلقائي للأجهزة المتصلة بالكمبيوتر إلى معلومات منتج الجهاز مثل اسم المنتج وإصدار البرنامج ، قراءة المسارات والطرق ونقاط الطريق من أجهزة الترفيه والملاءمة المدعومة والملاحة. البيانات من العنوان المدعوم من أجهزة اللياقة البدنية وحفظها على الجهاز كنقطة طريق أو مفضلة للقراءة وكتابة ملفات Garmin XML (GPX و TCX) بالإضافة إلى الملفات الثنائية.دعم معظم أجهزة Garmin (USB ، USB Storage ، معظم الأجهزة التسلسلية) دعم لـ Internet Explorer و Firefox و Chrome على Microsoft Windows.دعم Safari و Firefox و Chrome على Mac OS X.

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

من المحتمل أن يكون تمزيق الجهاز والتحقق من ما بداخله مفيدًا أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top