Projeto
Teste a raiz, truncamentos e o limite expandido de 255 bytes, rejeitando marcadores inválidos, ciclos e ponteiros que não retrocedam.
Decodifique um nome DNS de um pacote de até 65535 bytes e retorne os rótulos originais e o próximo deslocamento.
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
Teste a raiz, truncamentos e o limite expandido de 255 bytes, rejeitando marcadores inválidos, ciclos e ponteiros que não retrocedam.
Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
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.
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 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.
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.
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.
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.
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.
LabelFen · Atualizado 2026-10-25