LLabelFen
AI 코딩 작업 공간

뒤쪽 포인터를 쓰는 DNS 이름

최대 65535바이트 패킷에서 DNS 이름을 디코딩하고 원시 레이블과 다음 위치를 반환하세요.

● ● ●LabelFen●
작업 흐름 · 뒤쪽 포인터를 쓰는 DNS 이름 ×
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
✳뒤쪽 포인터를 쓰는 DNS 이름
✓ 변경 사항적용하기 전에 검토하세요 ↗
작업 공간 예시 화면
01

프로젝트

루트, 잘린 데이터, 확장 이름의 255바이트 한계를 시험하고 잘못된 태그, 순환, 뒤로 가지 않는 포인터를 거부하세요.

02

적용하기 전에 검토하세요

실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.

03

모델

기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.

작업 흐름

뒤쪽 포인터를 쓰는 DNS 이름

작업 흐름 ↗
작업 흐름
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
AI 코딩 작업 공간

파서 결과와 파싱 후 남는 위치를 함께 검토하세요

LabelFen은 프로토콜 유지보수를 Windows용 AI 코딩 작업 공간으로 가져옵니다. 프로젝트 폴더를 열고 파싱 이후 다음 단계의 기대 사항을 포함하여 변경할 패킷 동작을 설명하세요. 해당 파일에 근거한 대화는 헬퍼의 반환값만으로 판단하지 않고 국소적인 수정을 더 큰 리더와 연결할 수 있습니다.

압축된 DNS 이름이 작업 예시입니다. 모델에 포인터 처리, 잘못된 입력 거부, 호출 코드에 반환되는 오프셋을 검토하도록 요청하세요. 압축된 이름 뒤에 다른 필드가 있는 패킷을 포함하세요. 그러면 패치는 이름을 복원하면서 주변 파서가 올바른 위치에 있도록 한다는 구체적인 요구 사항을 갖게 됩니다.

검토할 때 포인터를 따라가는 위치와 호출 코드가 재개해야 하는 위치를 구분하세요. 그럴듯하게 디코딩된 이름만으로 다음 필드를 올바르게 읽는다고 입증할 수 없습니다. 잘린 데이터와 유효한 테스트 데이터로 관련 테스트를 실행하고 최종 오프셋을 살펴보며 변경을 채택하기 전에 주변 파서의 결과를 비교하세요.

지원되는 OpenAI 호환 또는 Anthropic 엔드포인트가 제공하는 거부 성향 제거 AI 모델을 선택할 수 있으며 필요하면 자격 증명을 사용합니다. 응답 제한, 도구, 컨텍스트 한계는 여전히 모델과 서버에 따라 다릅니다. LabelFen은 프로젝트 논의를 지원하며, 소프트웨어 결정의 증거는 사용자의 검토와 프로토콜 테스트 데이터에서 나옵니다.

프로토콜 파싱 수정 추적

이름과 함께 반환 오프셋도 검토하는 이유는 무엇인가요?

호출 코드가 그 오프셋으로 다음 필드를 읽을 수 있습니다. 이름이 올바르더라도 재개 위치가 잘못되면 나머지 패킷 해석이 망가질 수 있습니다. 테스트 데이터에 후속 필드를 포함하고 두 결과를 명시적으로 확인하세요.

작은 파서가 모든 포인터 형식을 허용해야 하나요?

문서화된 계약이 지원하는 형식만 허용하세요. 범위를 넓히기 전에 해당 부분집합과 구현을 비교하세요. 정리 작업이 프로토콜 허용 규칙을 조용히 바꾸지 않도록 새로 허용되는 입력을 모델에 식별하도록 요청하세요.

유용한 잘린 패킷 테스트 데이터는 어떤 것인가요?

불완전한 포인터나 레이블 같은 의미 있는 경계에서 끝나고 예상 거부 동작을 명시해야 합니다. 파서가 없는 바이트를 소비하기 전에 실패하는지 검토하고 주변 리더의 오류 처리를 확인하세요.

패킷 검토 중 내 컴퓨터 밖으로 데이터가 노출될 수 있나요?

엔드포인트와 도구 설정에 따라 가능합니다. 민감한 정보를 제거한 바이트 테스트 데이터를 우선 사용하고 캡처를 공유하기 전에 전송 대상을 검토하세요. 로컬 모델 서버를 별도로 실행한다고 연결된 모든 검토 도구나 외부 서비스가 로컬이 되는 것은 아닙니다.

Windows용 다운로드 ↗

LabelFen · 업데이트 2026-10-25