LLabelFen
Ambiente di sviluppo con IA

Nomi DNS con puntatori all’indietro

Decodifica un nome DNS da un pacchetto di massimo 65535 byte e restituisci etichette grezze e posizione successiva.

● ● ●LabelFen●
Flussi di lavoro · Nomi DNS con puntatori all’indietro ×
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
✳Nomi DNS con puntatori all’indietro
✓ ModificheControlla prima di applicare ↗
Illustrazione dell’ambiente
01

Progetto

Prova radice, troncamenti e limite espanso di 255 byte, rifiutando marcatori errati, cicli e puntatori non rivolti indietro.

02

Controlla prima di applicare

Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.

03

Modelli

Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.

Flussi di lavoro

Nomi DNS con puntatori all’indietro

Flussi di lavoro ↗
Flussi di lavoro
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
Ambiente di sviluppo con IA

Rivedi il risultato del parser e la posizione che lascia

LabelFen porta la manutenzione dei protocolli in un ambiente di programmazione con IA per Windows. Apri la cartella del progetto e descrivi il comportamento dei pacchetti da modificare, incluso ciò che la fase successiva si aspetta dopo il parsing. Una conversazione basata su quei file può collegare una correzione locale al lettore complessivo, invece di giudicare una funzione ausiliaria soltanto dal valore che restituisce.

I nomi DNS compressi forniscono un'attività di esempio. Chiedi al modello di esaminare la gestione dei puntatori, il rifiuto degli input malformati e l'offset restituito al chiamante. Includi un pacchetto con un nome compresso seguito da un altro campo. Questo dà alla modifica proposta un requisito concreto: recuperare il nome lasciando il parser circostante nella posizione corretta.

Durante la revisione, distingui il punto in cui viene seguito un puntatore da quello in cui il chiamante deve riprendere. Un nome decodificato plausibile non dimostra che il campo successivo sarà letto correttamente. Esegui test pertinenti con casi troncati e validi, esamina l'offset finale e confronta il risultato del parser circostante prima di adottare la modifica.

Puoi selezionare un modello di IA abliterata offerto da un endpoint supportato compatibile con OpenAI o Anthropic, con credenziali quando richieste. Restrizioni delle risposte, strumenti e limiti di contesto dipendono comunque dal modello e dal server. LabelFen supporta la discussione del progetto; la tua revisione e i pacchetti di test del protocollo forniscono le prove per decidere sul software.

Seguire una correzione al parsing di un protocollo

Perché esaminare l'offset restituito oltre al nome?

Il chiamante può usare quell'offset per leggere il campo successivo. Un nome corretto con una posizione di ripresa errata può compromettere l'interpretazione del resto del pacchetto. Includi un campo successivo nel caso di test e controlla esplicitamente entrambi i risultati.

Un piccolo parser deve accettare ogni forma di puntatore?

Accetta solo le forme supportate dal contratto documentato. Confronta l'implementazione con quel sottoinsieme prima di ampliarlo. Chiedi al modello di identificare gli input appena accettati affinché una pulizia del codice non cambi silenziosamente le regole di accettazione del protocollo.

Cosa rende utile un pacchetto di test troncato?

Deve terminare a un confine significativo, come un puntatore o un'etichetta incompleti, e specificare il rifiuto atteso. Rivedi se il parser fallisce prima di consumare byte non disponibili, poi controlla come il lettore circostante gestisce l'errore.

L'esame dei pacchetti può esporre dati fuori dal mio computer?

Sì, a seconda della configurazione di endpoint e strumenti. Preferisci sequenze di byte di test depurate dai dati sensibili e controlla le destinazioni prima di condividere acquisizioni. Eseguire separatamente un server di modelli locale non rende locali tutti gli strumenti di ispezione collegati o i servizi esterni.

Scarica per Windows ↗

LabelFen · Aggiornato 2026-10-25