أي المرافق العامة أو المكتبات لتحويل عرافة مقالب في الإنسان للقراءة ؟

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

سؤال

أنا أعمل كثيرا مع الاتصالات التسلسلية مع مجموعة متنوعة من الأجهزة ، لذلك أنا في كثير من الأحيان إلى تحليل عرافة مقالب في ملفات السجل.حاليا أنا القيام بذلك يدويا من خلال النظر في مقالب ، وتبحث في البروتوكول المواصفات و تدوين النتائج.ومع ذلك ، وهذا هو مملة عرضة للخطأ ، وخاصة 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 ++.

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

واحد الممكنة نقطة البداية ستكون libPDL أو مكتبة C ++.

قد يكون هناك خيار آخر NetPDL .

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

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 خيارات القسم بعنوان صيغ).

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