recent
أخبار ساخنة

مكتبة struct المعروفة في مجال sniffing في بايثون Python الدرس |21|

الصفحة الرئيسية
مكتبة struct في لغة بايثون
 

مكتبة struct في بايثون

مكتبة struct أو في اللغة الإنجليزية struct library, بدأنا بجزء خاص في ما يسمى sniffing, توجد لدينا مكتبة مهمة. في لغة بايثون python تساعدنا كثيراً في السنيفينغ إسمها struct تُفيدنا بهذا القسم و هي تعني. أنه نأخذ البيانات الموجودة لدينا و نعمل لها packing لتحويلها إلى بايت Byte لكي تسير في الشبكة و unpacking العكس لإرجاعها.

توجد لدينا فورمات Format تُمكننا من هذا العمل لكن يلزم أن نعرف أنه يوجد كركترز Caracter معين.


Character struct

Alignment
Size
Byte order
Character
nativeاnativenative@
noneStandardnative=
noneStandardlittle-endian>
noneStandardbig-endian
<
noneStandardnetworks
!

شرح الجدول السابق
  • الـ @ هذا الأفتراضي يكون إن لم نستخدم احد التاليات.
  • الـ = بنفس مبدأ @ لكن حجم و المحاذاة هنا تكون موحدة.
  • الـ > للعمل little endian.
  • الـ < للعمل على big endian.
  • الـ ! تستخدم في الشبكات.

Format library struct

يجب أن يكون التحويل بين قيم C و Python واضحاً نظراً لأنواعها و يشير عمود "Standard Size" إلى حجم القيمة المجمعة بالبايت. عند إستخدام الحجم القياسي, أي عندما تبدأ سلسلة التنسيق بأحد الرموز <، >، ! أو = و عند إستخدام الحجم الأصلي يعتمد حجم القيمة المجمعة على النظام الأساسي.

struct python format

أمثلة عملية على مكتبة struct

>>> import struct
>>> struct.pack("x") #pad bytes
b'\x00'
>>> struct.unpack("x",b' \x00') #عكس العملية السابقة
()
>>> struct.pack("c",b'F') #char
b'F'
>>> struct.pack("b",1) #signed char
b'\x01'
>>> struct.unpack("b",b'\x01') #عكس العملية السابقة
(1,)
>>> struct.pack("bb",1,2) #قيمتين
b'\x01 x02'
>>> struct.pack("2b",1,2)
b'\x01 x02'
>>> struct.unpack("2b",b'\x01\x02') #عكس السابقة
(1, 2)
>>> struct.pack("f",1.5) #float
b'\x00\x00\xc0?'
>>> struct.pack("b",1.5) #سيعطي خطأ لأنه ليس فلوت
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
struct.error: required argument is not an integer
>>> struct.unpack("f",b'\x00\x00\xc0?')
(1.5,)
>>>

باقي الفورمات Format جربوها بأنفسكم من خلال الذهاب إلى موقع بايثون الرسمي أو كتابة الجملة "Format Characters python struct" في متصفح جوجل و إختيار نتيجة البحث الأولى.

google-playkhamsatmostaqltradent