Proiect
Testează rădăcina, trunchierea și limita extinsă de 255 de octeți, respingând marcaje invalide, cicluri și pointeri care nu merg înapoi.
Decodează un nume DNS dintr-un pachet de cel mult 65535 de octeți și întoarce etichetele brute cu poziția următoare.
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
Testează rădăcina, trunchierea și limita extinsă de 255 de octeți, respingând marcaje invalide, cicluri și pointeri care nu merg înapoi.
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
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 aduce întreținerea protocoalelor într-un spațiu de lucru Windows pentru programare cu IA. Deschide folderul proiectului și descrie comportamentul pachetelor pe care trebuie să îl modifici, inclusiv așteptările etapei următoare după parsare. O conversație ancorată în aceste fișiere poate lega o corecție locală de cititorul mai amplu, în loc să evalueze o funcție auxiliară doar după valoarea returnată.
Numele DNS comprimate oferă un exemplu de sarcină. Cere modelului să examineze tratarea pointerilor, respingerea intrărilor malformate și deplasamentul returnat apelantului. Include un pachet cu un nume comprimat urmat de alt câmp. Astfel, modificarea propusă are o cerință concretă: recuperarea numelui, lăsând parserul care îl înconjoară în poziția corectă.
În timpul examinării, distinge locul unde este urmărit un pointer de locul unde apelantul trebuie să reia citirea. Un nume decodat plauzibil nu dovedește că următorul câmp va fi citit corect. Rulează testele relevante cu cazuri trunchiate și valide, examinează deplasamentul final și compară rezultatul parserului înconjurător înainte să adopți modificarea.
Poți selecta un model de IA abliterată oferit de un endpoint acceptat compatibil cu OpenAI sau Anthropic, cu credențiale când sunt necesare. Restricțiile răspunsurilor sale, instrumentele și limitele contextului rămân dependente de model și server. LabelFen susține discuția despre proiect; examinarea ta și pachetele de test pentru protocol oferă dovezile pentru decizia software.
Apelantul poate folosi acel deplasament pentru a citi câmpul următor. Un nume corect cu o poziție de reluare incorectă poate corupe interpretarea restului pachetului. Include un câmp următor în cazul de test și verifică explicit ambele rezultate.
Acceptă doar formele susținute de contractul documentat. Compară implementarea cu acel subset înainte să îl extinzi. Cere modelului să identifice intrările nou acceptate, astfel încât o simplificare să nu modifice implicit regulile de acceptare ale protocolului.
Acesta trebuie să se termine la o limită relevantă, precum un pointer sau o etichetă incompletă, și să precizeze respingerea așteptată. Examinează dacă parserul eșuează înainte să consume octeți indisponibili, apoi verifică modul în care cititorul înconjurător tratează eroarea.
Da, în funcție de configurarea endpointului și a instrumentelor. Preferă cazuri de test cu octeți din care ai eliminat datele sensibile și verifică destinațiile înainte să distribui capturi. Rularea separată a unui server local de modele nu face local fiecare instrument conectat de examinare sau serviciu extern.
LabelFen · Actualizat 2026-10-25