پرش به محتوای اصلی
رؤوفResearchOS
فارسی
سیدنی، استرالیازمان کنونی سیدنی—
برای بستن این پنجره، کلید Escape را فشار دهید.
شنود بسته با سوکت خام

شناسه آزمایش: 002

شنود بسته با سوکت خام

فعال

اسکریپت Python با سوکت خام برای دریافت و تجزیهٔ دستی سرآیندهای TCP/IP؛ بسته‌های TCP SYN را به‌عنوان نقطهٔ شروع تشخیص اسکن چاپ می‌کند، بدون وابستگی به libpcap.

هدف

تجزیه دستی سرآیندهای IP/TCP برای شناخت ساختار پروتکل و تشخیص الگوهای اسکن بدون اتکا به Wireshark.

محدودیت‌ها

به دسترسی root یا مدیر نیاز دارد. فقط Linux با AF_PACKET؛ در macOS باید از سوکت BPF استفاده شود.

  • Python
  • شبکه
  • سوکت خام
کد منبع · زبان اصلیsrc/main.py
1import socket2import struct34ETH_P_IP = 0x080056def parse_ip(raw: bytes) -> tuple[int, int, str, str]:7    # Skip 14-byte Ethernet header on AF_PACKET8    iph = struct.unpack("!BBHHHBBH4s4s", raw[14:34])9    ihl = (iph[0] & 0xF) * 410    proto = iph[6]11    src = socket.inet_ntoa(iph[8])12    dst = socket.inet_ntoa(iph[9])13    return ihl + 14, proto, src, dst1415def parse_tcp(raw: bytes, offset: int) -> tuple[int, int, int]:16    tcph = struct.unpack("!HHLLBBHHH", raw[offset:offset + 20])17    flags = tcph[5]18    syn = (flags & 0x02) >> 119    return tcph[0], tcph[1], syn2021def sniff() -> None:22    sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(ETH_P_IP))23    print("[*] Sniffing TCP — Ctrl+C to stop")24    while True:25        raw, _ = sock.recvfrom(65535)26        try:27            offset, proto, src, dst = parse_ip(raw)28            if proto != 6:  # TCP only29                continue30            sp, dp, syn = parse_tcp(raw, offset)31            if syn:32                print(f"[SYN] {src}:{sp} -> {dst}:{dp}")33        except struct.error:34            continue3536if __name__ == "__main__":37    sniff()
کد فقط‌خواندنیUTF-8

جست‌وجو

پروژه، مقاله، نوشته یا صفحه‌ای را پیدا کنید.

۳۰ / ۴۱ · نتایج جست‌وجو

↑ ↓ ناوبری فضای کارEnter باز کردنEsc بستن