المشروع
اختبر الجذر والاقتطاع وحد الاسم الموسع 255 بايت وارفض الوسوم غير الصالحة والدورات والمؤشرات التي لا تعود للخلف.
فك اسم DNS من حزمة لا تتجاوز 65535 بايت وأعد التسميات الخام والموضع التالي.
def dns_name(data, offset):
if type(data) is not bytes or len(data) > 65535 or type(offset) is not int or not 0 <= offset < len(data):
raise ValueError("dns.input")
labels, seen, pos, end, size = [], set(), offset, None, 1
while True:
if pos in seen or pos >= len(data):
raise ValueError("dns.pointer")
seen.add(pos)
count = data[pos]
if count & 192 == 192:
if pos+1 >= len(data):
raise ValueError("dns.truncated")
target = ((count & 63) << 8) | data[pos+1]
if target >= pos:
raise ValueError("dns.forward")
if end is None:
end = pos+2
pos = target
continue
if count & 192 or pos+1+count > len(data):
raise ValueError("dns.label")
pos += 1
if count == 0:
return labels, pos if end is None else end
size += count+1
if size > 255:
raise ValueError("dns.length")
labels.append(data[pos:pos+count])
pos += count
اختبر الجذر والاقتطاع وحد الاسم الموسع 255 بايت وارفض الوسوم غير الصالحة والدورات والمؤشرات التي لا تعود للخلف.
قارن السلوك الفعلي بالنتيجة المتوقعة. إذا فشل فحص، تحقّق من السبب قبل إجراء تغييرات إضافية.
اضبط نقطة اتصال متوافقة مع OpenAI أو Anthropic باستخدام العنوان الأساسي ومفتاح API عند الحاجة. اختبر الاتصال. يجب أن يعمل خادم النموذج المحلي؛ وقد ترسل الأدوات البعيدة البيانات بشكل منفصل.
def dns_name(data, offset):
if type(data) is not bytes or len(data) > 65535 or type(offset) is not int or not 0 <= offset < len(data):
raise ValueError("dns.input")
labels, seen, pos, end, size = [], set(), offset, None, 1
while True:
if pos in seen or pos >= len(data):
raise ValueError("dns.pointer")
seen.add(pos)
count = data[pos]
if count & 192 == 192:
if pos+1 >= len(data):
raise ValueError("dns.truncated")
target = ((count & 63) << 8) | data[pos+1]
if target >= pos:
raise ValueError("dns.forward")
if end is None:
end = pos+2
pos = target
continue
if count & 192 or pos+1+count > len(data):
raise ValueError("dns.label")
pos += 1
if count == 0:
return labels, pos if end is None else end
size += count+1
if size > 255:
raise ValueError("dns.length")
labels.append(data[pos:pos+count])
pos += count
يجلب LabelFen صيانة البروتوكولات إلى مساحة عمل للبرمجة بالذكاء الاصطناعي على Windows. افتح مجلد المشروع وصف سلوك الحزمة الذي تريد تغييره، بما فيه ما تتوقعه المرحلة التالية بعد التحليل. تربط محادثة تستند إلى هذه الملفات التصحيح الموضعي بالقارئ الأوسع بدلاً من الحكم على الدالة المساعدة بقيمتها المعادة وحدها.
توفر أسماء DNS المضغوطة مهمة مثال. اطلب من النموذج فحص معالجة المؤشرات ورفض المدخلات المشوهة والإزاحة المعادة للمستدعي. أدرج حزمة باسم مضغوط يتبعه حقل آخر. يمنح ذلك التعديل المقترح متطلباً ملموساً: استعادة الاسم مع إبقاء المحلل المحيط في الموضع الصحيح.
أثناء المراجعة، ميّز موضع تتبع المؤشر عن الموضع الذي يجب أن يستأنف منه المستدعي. الاسم المفكوك المعقول لا يثبت قراءة الحقل التالي بصورة صحيحة. شغّل الاختبارات ذات الصلة بحالات مبتورة وصالحة، وافحص الإزاحة النهائية وقارن نتيجة المحلل المحيط قبل اعتماد التغيير.
يمكنك اختيار نموذج ذكاء اصطناعي منزوع آليات الرفض توفره نقطة نهاية مدعومة متوافقة مع OpenAI أو خاصة بـ Anthropic، مع بيانات اعتماد عند الحاجة. تظل قيود استجاباته وأدواته وحدود سياقه معتمدة على النموذج والخادم. يدعم LabelFen مناقشة المشروع؛ وتقدم مراجعتك وحالات اختبار البروتوكول أدلة القرار البرمجي.
قد يستخدم المستدعي الإزاحة لقراءة الحقل التالي. اسم صحيح مع موضع استئناف خاطئ قد يفسد تفسير بقية الحزمة. أدرج حقلاً تالياً في حالة الاختبار وتحقق من النتيجتين صراحة.
اقبل فقط الأشكال التي يدعمها عقدك الموثق. قارن التنفيذ بتلك المجموعة الفرعية قبل توسيعها. اطلب من النموذج تحديد المدخلات المقبولة حديثاً كي لا يغير التنظيف قواعد قبول البروتوكول بصمت.
ينبغي أن تنتهي عند حد ذي معنى، مثل مؤشر أو تسمية غير مكتملة، وتحدد الرفض المتوقع. راجع ما إذا كان المحلل يفشل قبل استهلاك بايتات غير متاحة، ثم تحقق من معالجة القارئ المحيط للخطأ.
نعم، حسب إعداد نقطة النهاية والأدوات. فضّل حالات بايتات منزوعة البيانات الحساسة وراجع الوجهات قبل مشاركة الالتقاطات. تشغيل خادم نموذج محلي منفصل لا يجعل كل أداة فحص متصلة أو خدمة خارجية محلية.
LabelFen · آخر تحديث 2026-10-25