LLabelFen
Spațiu de programare cu AI

Nume DNS cu pointeri înapoi

Decodează un nume DNS dintr-un pachet de cel mult 65535 de octeți și întoarce etichetele brute cu poziția următoare.

● ● ●LabelFen●
Fluxuri de lucru · Nume DNS cu pointeri înapoi ×
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
✳Nume DNS cu pointeri înapoi
✓ ModificăriVerifică înainte de aplicare ↗
Ilustrarea spațiului de lucru
01

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.

02

Verifică înainte de aplicare

Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.

03

Modele

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.

Fluxuri de lucru

Nume DNS cu pointeri înapoi

Fluxuri de lucru ↗
Fluxuri de lucru
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
Spațiu de programare cu AI

Examinează rezultatul parserului și poziția pe care o lasă în urmă

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.

Urmărirea unei corecții de parsare a protocolului

De ce să examinez deplasamentul returnat împreună cu numele?

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.

Ar trebui un parser mic să accepte orice formă de pointer?

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.

Ce face util un caz de test cu pachet trunchiat?

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.

Poate examinarea pachetelor expune date în afara calculatorului meu?

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.

Descarcă pentru Windows ↗

LabelFen · Actualizat 2026-10-25