LLabelFen
Ruang kerja kode dengan AI

Nama DNS dengan penunjuk mundur

Dekode nama DNS dari paket paling besar 65535 byte dan kembalikan label mentah beserta posisi berikutnya.

● ● ●LabelFen●
Alur kerja · Nama DNS dengan penunjuk mundur ×
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
✳Nama DNS dengan penunjuk mundur
✓ PerubahanTinjau sebelum menerapkan ↗
Ilustrasi ruang kerja
01

Proyek

Uji akar, pemotongan dan batas nama terurai 255 byte, lalu tolak penanda salah, siklus dan penunjuk yang tidak mundur.

02

Tinjau sebelum menerapkan

Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.

03

Model

Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.

Alur kerja

Nama DNS dengan penunjuk mundur

Alur kerja ↗
Alur kerja
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
Ruang kerja kode dengan AI

Tinjau hasil parser beserta posisi yang ditinggalkannya

LabelFen membawa pemeliharaan protokol ke ruang kerja pemrograman AI untuk Windows. Buka folder proyek dan jelaskan perilaku paket yang perlu diubah, termasuk ekspektasi tahap berikutnya setelah parsing. Percakapan yang berlandaskan berkas tersebut dapat menghubungkan perbaikan lokal dengan pembaca secara keseluruhan, alih-alih menilai fungsi pembantu hanya berdasarkan nilai keluarannya.

Nama DNS terkompresi menyediakan contoh tugas. Minta model memeriksa penanganan pointer, penolakan masukan cacat, dan offset yang dikembalikan kepada pemanggil. Sertakan paket dengan nama terkompresi yang diikuti field lain. Ini memberi tambalan yang diusulkan persyaratan konkret: memulihkan nama sambil menempatkan parser di sekitarnya pada posisi yang benar.

Selama peninjauan, bedakan posisi tujuan pointer dari posisi tempat pemanggil harus melanjutkan. Nama terdekode yang masuk akal tidak membuktikan field berikutnya akan dibaca dengan benar. Jalankan pengujian terkait menggunakan data uji terpotong dan valid, periksa offset akhir, serta bandingkan hasil parser di sekitarnya sebelum menerima perubahan.

Anda dapat memilih model AI abliterated yang ditawarkan endpoint kompatibel OpenAI atau endpoint Anthropic yang didukung, dengan kredensial jika diperlukan. Batasan respons, alat, dan batas konteksnya tetap bergantung pada model dan server. LabelFen mendukung pembahasan proyek; peninjauan dan data uji protokol Anda menyediakan bukti untuk keputusan perangkat lunak.

Menelusuri perbaikan parsing protokol

Mengapa memeriksa offset keluaran selain nama?

Pemanggil mungkin menggunakan offset itu untuk membaca field berikutnya. Nama yang benar dengan posisi kelanjutan yang salah dapat merusak penafsiran sisa paket. Sertakan field berikutnya dalam data uji dan periksa kedua hasil secara eksplisit.

Haruskah parser kecil menerima setiap bentuk pointer?

Terima hanya bentuk yang didukung kontrak terdokumentasi Anda. Bandingkan implementasi dengan subset tersebut sebelum memperluasnya. Minta model mengidentifikasi masukan yang baru diterima agar perapian tidak diam-diam mengubah aturan penerimaan protokol.

Apa yang membuat data uji paket terpotong berguna?

Data itu harus berakhir pada batas bermakna, seperti pointer atau label yang tidak lengkap, dan menetapkan penolakan yang diharapkan. Tinjau apakah parser gagal sebelum mengonsumsi byte yang tidak tersedia, lalu periksa cara pembaca di sekitarnya menangani kesalahan.

Bisakah pemeriksaan paket mengekspos data ke luar komputer saya?

Ya, tergantung konfigurasi endpoint dan alat. Utamakan data uji byte yang telah dibersihkan dari informasi sensitif dan tinjau tujuan pengiriman sebelum membagikan tangkapan. Menjalankan server model lokal secara terpisah tidak membuat setiap alat pemeriksaan terhubung atau layanan eksternal menjadi lokal.

Unduh untuk Windows ↗

LabelFen · Diperbarui 2026-10-25