LLabelFen
Không gian lập trình với AI

Tên DNS có con trỏ lùi

Giải mã tên DNS từ gói tối đa 65535 byte và trả nhãn thô cùng vị trí tiếp theo.

● ● ●LabelFen●
Quy trình · Tên DNS có con trỏ lùi ×
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
✳Tên DNS có con trỏ lùi
✓ Thay đổiKiểm tra trước khi áp dụng ↗
Minh họa không gian làm việc
01

Dự án

Thử gốc, dữ liệu cụt và giới hạn tên bung 255 byte, từ chối dấu sai, chu trình và con trỏ không lùi.

02

Kiểm tra trước khi áp dụng

So sánh hành vi thực tế với kết quả mong đợi. Nếu kiểm tra thất bại, tìm nguyên nhân trước khi sửa tiếp.

03

Mô hình

Cấu hình endpoint tương thích OpenAI hoặc Anthropic bằng URL cơ sở và khóa API nếu cần. Kiểm tra kết nối. Máy chủ mô hình cục bộ phải đang chạy; công cụ từ xa có thể truyền dữ liệu riêng.

Quy trình

Tên DNS có con trỏ lùi

Quy trình ↗
Quy trình
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
Không gian lập trình với AI

Rà soát kết quả phân tích và vị trí mà nó để lại

LabelFen đưa bảo trì giao thức vào không gian lập trình AI trên Windows. Mở thư mục dự án và mô tả hành vi gói tin cần thay đổi, bao gồm điều giai đoạn tiếp theo mong đợi sau phân tích. Cuộc trao đổi dựa trên các tệp đó có thể nối sửa đổi cục bộ với bộ đọc rộng hơn thay vì đánh giá hàm hỗ trợ chỉ bằng giá trị trả về.

Tên DNS nén cung cấp nhiệm vụ mẫu. Yêu cầu mô hình kiểm tra xử lý con trỏ, từ chối đầu vào sai dạng và độ lệch trả về cho mã gọi. Bao gồm gói tin có tên nén theo sau bởi trường khác. Điều đó đặt yêu cầu cụ thể cho bản vá: khôi phục tên đồng thời để bộ phân tích xung quanh ở đúng vị trí.

Khi rà soát, phân biệt nơi đi theo con trỏ với nơi mã gọi nên tiếp tục. Tên giải mã có vẻ đúng không chứng minh trường tiếp theo sẽ được đọc đúng. Chạy kiểm thử liên quan với dữ liệu hợp lệ và bị cắt cụt, kiểm tra độ lệch cuối và so sánh kết quả của bộ phân tích xung quanh trước khi áp dụng thay đổi.

Bạn có thể chọn mô hình AI đã gỡ cơ chế từ chối do điểm cuối tương thích OpenAI hoặc Anthropic được hỗ trợ cung cấp, cùng thông tin xác thực khi cần. Hạn chế phản hồi, công cụ và giới hạn ngữ cảnh vẫn phụ thuộc mô hình và máy chủ. LabelFen hỗ trợ thảo luận dự án; việc rà soát và dữ liệu kiểm thử giao thức của bạn cung cấp bằng chứng cho quyết định phần mềm.

Lần theo sửa đổi phân tích giao thức

Tại sao kiểm tra cả độ lệch trả về lẫn tên?

Mã gọi có thể dùng độ lệch đó để đọc trường tiếp theo. Tên đúng nhưng vị trí tiếp tục sai có thể làm hỏng diễn giải phần còn lại của gói tin. Đưa trường tiếp sau vào dữ liệu kiểm thử và kiểm tra rõ cả hai kết quả.

Bộ phân tích nhỏ có nên chấp nhận mọi dạng con trỏ không?

Chỉ chấp nhận dạng quy ước đã ghi của bạn hỗ trợ. So sánh triển khai với tập con đó trước khi mở rộng. Yêu cầu mô hình xác định đầu vào mới được chấp nhận để dọn mã không âm thầm đổi quy tắc chấp nhận giao thức.

Điều gì khiến dữ liệu kiểm thử gói tin cắt cụt hữu ích?

Nó nên kết thúc ở ranh giới có ý nghĩa, như con trỏ hoặc nhãn chưa hoàn chỉnh, và nêu việc từ chối kỳ vọng. Rà soát liệu bộ phân tích thất bại trước khi dùng byte không sẵn có, rồi kiểm tra bộ đọc xung quanh xử lý lỗi ra sao.

Kiểm tra gói tin có thể làm lộ dữ liệu ra ngoài máy không?

Có, tùy cấu hình điểm cuối và công cụ. Ưu tiên dữ liệu byte đã loại thông tin nhạy cảm và rà soát đích đến trước khi chia sẻ bản ghi. Chạy riêng máy chủ mô hình cục bộ không khiến mọi công cụ kiểm tra kết nối hoặc dịch vụ bên ngoài thành cục bộ.

Tải cho Windows ↗

LabelFen · Cập nhật 2026-10-25