LLabelFen
Ambiente de programação com IA

Nomes DNS com ponteiros anteriores

Decodifique um nome DNS de um pacote de até 65535 bytes e retorne os rótulos originais e o próximo deslocamento.

● ● ●LabelFen●
Fluxos de trabalho · Nomes DNS com ponteiros anteriores ×
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
✳Nomes DNS com ponteiros anteriores
✓ AlteraçõesRevise antes de aplicar ↗
Ilustração do ambiente
01

Projeto

Teste a raiz, truncamentos e o limite expandido de 255 bytes, rejeitando marcadores inválidos, ciclos e ponteiros que não retrocedam.

02

Revise antes de aplicar

Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.

03

Modelos

Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.

Fluxos de trabalho

Nomes DNS com ponteiros anteriores

Fluxos de trabalho ↗
Fluxos de trabalho
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 de programação com IA

Revise o resultado do analisador e a posição que ele deixa

LabelFen traz a manutenção de protocolos para um ambiente de programação com IA para Windows. Abra a pasta do projeto e descreva o comportamento do pacote que precisa mudar, incluindo o que a próxima etapa espera após a análise. Uma conversa baseada nesses arquivos pode relacionar uma correção local ao leitor mais amplo, em vez de julgar uma função auxiliar apenas pelo valor retornado.

Nomes DNS comprimidos fornecem uma tarefa de exemplo. Peça ao modelo para examinar o tratamento de ponteiros, a rejeição de entradas malformadas e o deslocamento retornado ao chamador. Inclua um pacote com um nome comprimido seguido de outro campo. Isso dá à correção proposta um requisito concreto: recuperar o nome deixando o analisador externo na posição correta.

Durante a revisão, distinga o local para onde o ponteiro é seguido do local onde o chamador deve retomar. Um nome decodificado plausível não prova que o próximo campo será lido corretamente. Execute testes relevantes com casos truncados e válidos, examine o deslocamento final e compare o resultado do analisador externo antes de adotar a alteração.

Você pode selecionar um modelo de IA abliterada oferecido por um endpoint compatível com OpenAI ou Anthropic aceito, com credenciais quando exigidas. Suas restrições de resposta, ferramentas e limites de contexto continuam dependendo do modelo e do servidor. LabelFen apoia a discussão do projeto; sua revisão e os pacotes de teste do protocolo fornecem as evidências para a decisão sobre o software.

Rastreamento de uma correção na análise de protocolos

Por que examinar o deslocamento retornado além do nome?

O chamador pode usar esse deslocamento para ler o próximo campo. Um nome correto com posição de retomada incorreta pode corromper a interpretação do restante do pacote. Inclua um campo seguinte no caso de teste e verifique explicitamente ambos os resultados.

Um analisador pequeno deve aceitar toda forma de ponteiro?

Aceite apenas as formas permitidas pelo contrato documentado. Compare a implementação com esse subconjunto antes de ampliá-lo. Peça ao modelo para identificar entradas recém-aceitas para que uma limpeza não altere silenciosamente as regras de aceitação do protocolo.

O que torna útil um caso de teste de pacote truncado?

Ele deve terminar em um limite significativo, como um ponteiro ou rótulo incompleto, e especificar a rejeição esperada. Revise se o analisador falha antes de consumir bytes indisponíveis e confira como o leitor externo trata o erro.

A inspeção de pacotes pode expor dados fora da minha máquina?

Dependendo da configuração do endpoint e das ferramentas, sim. Prefira casos de teste de bytes sem dados sensíveis e revise os destinos antes de compartilhar capturas. Executar separadamente um servidor de modelo local não torna local toda ferramenta de inspeção conectada ou serviço externo.

Baixar para Windows ↗

LabelFen · Atualizado 2026-10-25