أي المرافق العامة أو المكتبات لتحويل عرافة مقالب في الإنسان للقراءة ؟
-
08-07-2019 - |
سؤال
أنا أعمل كثيرا مع الاتصالات التسلسلية مع مجموعة متنوعة من الأجهزة ، لذلك أنا في كثير من الأحيان إلى تحليل عرافة مقالب في ملفات السجل.حاليا أنا القيام بذلك يدويا من خلال النظر في مقالب ، وتبحث في البروتوكول المواصفات و تدوين النتائج.ومع ذلك ، وهذا هو مملة عرضة للخطأ ، وخاصة whem رسائل تحتوي على مئات بايت تحتوي على خليط من big-endian و endian طفيف البيانات, ASCII, Unicode, ضغط, مراكز البرامج النسائية ....
وقد كتبت بعض البرامج النصية بيثون للمساعدة في أكثر الحالات شيوعا.ولكن هناك الكثير من بروتوكولات للتعامل مع ، فإنه لا معنى لقضاء الوقت في كتابة سيناريو مخصص إلا وأنا أعلم أنني سوف يكون الكثير من مقالب لتحليل.
ما أود هو نوع من الأداة التي يمكن تنفيذ هذا النشاط.لذا, فعلى سبيل المثال, إذا كان لدي النصية عرافة تفريغ مثل هذا:
7e ff 00 7b 00 13 86 04
00 41 42 43 44 56 ef 7e
ونوعا من وصف تنسيق الرسالة, مثل هذا:
# Field Size Byte Order Output Format
Flag 1 hex
Address 1 hex
Control 1 hex
DataType 1 decimal
LineIndex 1 decimal
PollAddress 2 msb hex
DataSize 2 lsb decimal
Data (DataSize) ascii
CRC 2 lsb hex
Flag 1 hex
أود الحصول على إخراج مثل هذا:
Flag 0x7e
Address 0xff
Control 0x00
DataType 123
LineIndex 0
PollAddress 0x1386
DataSize 4
Data "ABCD"
CRC 0xef56
Flag 0x7e
الأجهزة القائمة على بروتوكول تحليل كثير من الأحيان يتوهم الميزات تفعل هذا النوع من الشيء ، ولكن أنا بحاجة إلى العمل مع النصوص ملفات السجل.
هل أي من هذه الأداة أو مكتبة موجودة ؟
بعض إجابات جيدة ظهرت منذ إنشاء الجائزة.أعتقد خيرات العمل!
يريشارك و HexEdit على حد سواء تبدو واعدة ، سوف نلقي نظرة على تلك ، سوف proabably جائزة فضله إلى أيهما يناسب احتياجات بلدي.ولكن أنا لا تزال مفتوحة إلى أفكار أخرى.
المحلول
يريشارك هو جيد جدا في بروتوكولات الشبكة الافتتاح.
نصائح أخرى
وأنا افترض أنك بحاجة إلى محرر عرافة جيد. إلقاء نظرة على hexedit . لقد استخدمت نسخة مجانية في الماضي، وانه لامر جيد، ولكن لا أعرف ما اذا كان يقدم ما كنت تبحث عنه. في الأساس كنت تريد أن تكون قادرة على تحديد البنية ثم تكون قادرة على فك رموز البيانات عرافة ضدها. أفترض أن محرر عرافة جيدة تدعم هذا. تحقق النسخة المدفوعة من HexEdit أو جوجل لمحرر آخر. هناك العديد من المتاحة.
وعادة، وأنا استخدم ايماكس hexl وضع لعرض الملفات الثنائية بأنها "النص تفريغ". عندما كنت في حاجة الانتاج أكثر تحديدا، أنا فقط تفعل ما كنت وكتابة محلل في C ++.
في عملي كنا تصميم الشبكة والبروتوكولات التسلسلية للسيطرة على الأجهزة المدمجة. كما أنني حصلت تعبت من القراءة مقالب الخطأ، وكتابة النصوص لكل بروتوكول، ولذا فإنني كتب مكتبة لتفعل بالضبط ما تصفون. هل يمكن أن تقدم له وصفا ملف نص البروتوكول، وكان واجهة المستخدم الرسومية دعم خانات الاختيار لتحديد بت واحدة، وأزرار الراديو لاختيار بين مجموعات صالحة البتات، والقوائم المنسدلة عندما كان هناك الكثير من الخيارات. هل يمكن تعديل وجهة نظر عرافة من البيانات، وعرض ثنائي من كل حقل، أو حتى نقطة وانقر في الحقول، وكانت جميع وجهات النظر الأخرى تحديث. أنها وفرت لنا طن من الوقت. انها قليلا سريعة وقذرة، ولكن كنت بعد ذلك إذا لم يكن المملوكة من قبل صاحب العمل. وهذه النقطة هي، لم يكن من الصعب جدا أن يكتب، وعندما ذهبت بعيدا عن النصوص لكل بروتوكول وبرنامج واحد يمكن أن نفهم وصفا للبروتوكول، فإن الأمور كانت كبيرة. توقفنا شكا من المسمار المتعلقة قراءة خاطئة تفريغ، وأصبحت مضيفا بروتوكولات جديدة تافهة. بالإضافة إلى وصف نصية من البروتوكول ذهب مباشرة الى المواصفات التنمية حتى الرجال البرمجيات من شأنه أن نعرف ما يجب القيام به مع الجهاز. وأهيب بكم أن تأخذ صدع في ذلك.
ويجب عليك استخدام تى سى ال ثنائي أوامر للأشياء مثله. ما يلي هو نقطة الانطلاق على سبيل المثال الخاص بك فوق. تى سى ال هو حقا من السهل تعلم وكتابة البرامج النصية في. إذا كنت تريد ان تفعل الاشياء المسلسل بالاتصالات لكم مدينون لنفسك لتعلم أساسيات على الأقل.
bash$ tclsh
% binary scan [binary format H* 7eff007b00138604004142434456ef7e] \
H2H2H2ccH4sa4h4H2 \
flag1 addr ctl datatype lineidx polladdr datasize data crc flag2
10
% puts "$flag1 $addr $ctl $datatype $lineidx \
$polladdr $datasize $data $crc $flag2"
7e ff 00 123 0 1386 4 ABCD 65fe 7e
عند فعلتم ما تبذلونه من الاشياء البايت الترتيب الذي تحول حول بايت ولكن ليس بت، لذلك لست متأكدا حقا ما كنت تبحث عنه هناك. على أي حال، وهذا سوف تحصل على انك بدأته.
وإلقاء نظرة على hexworkshop
ولقد تم استخدامه لسنوات لتحليل مقالب عرافة. كان لديه عارض الهيكل الذي يتيح لك تحديد البيانات بنية وفي C / C ++ أسلوب ومن ثم يعرض البيانات في هذا الشكل.
WinHex يدعم عرض / تحرير صيغ قياسية المعرفة من قبل المستخدم. وهناك بعض الأمثلة على <لأ href = "HTTP: // www.x-ways.net/winhex/templates/index.html "يختلط =" نوفولو noreferrer "> http://www.x-ways.net/winhex/templates/index.html
أنا متأكد من أنني رأيت شيئا مثل هذا على CPAN.أنا يمكن أن يكون أكثر غموضا إذا كنت تحب.:-)
تحديث: ليس بالضبط ما تريد ، ولكن إلقاء نظرة على تحليل::ثنائي::FixedFormat
هناك BSD أداة سطر الأوامر تسمى hexdump
أن يفعل ذلك من خلال استخدام شكل سلاسل (التي يمكن أن تكون في ملف خارجي).انظر https://www.suse.com/communities/blog/making-sense-hexdump/ على مقدمة ، على سبيل المثال https://www.freebsd.org/cgi/man.cgi?query=hexdump&sektion=1 لدليل الصفحة (مع اهتمام خاص -e
و -f
خيارات القسم بعنوان صيغ).