Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pypacker — :package: Python을 위한 가장 빠르고 간단한 패킷 조작 라이브러리 | Kitploit
도구/GitLabGitLab/mike01/pypacker
Packet Sniffing & AnalysisWeb Proxies & InterceptionNetwork SecurityPenetration TestingUtilities & FrameworksRed Teaming
GitLabmike01/pypacker

pypacker

📦 Python을 위한 가장 빠르고 간단한 패킷 조작 라이브러리

저장소 보기
281823일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

일반 정보

이것은 Pypacker입니다: Python을 위한 가장 빠르고 간단한 저수준 패킷 조작 라이브러리입니다. 아래 예제에서 무엇을 할 수 있는지 확인하세요.

이 프로젝트를 지원하려면 PayPal을 통해 Donate with PayPal 할 수 있습니다.

Pypacker로 할 수 있는 것

  • 키워드 또는 원시 바이트로 사용자 정의 패킷을 생성하고 Python으로 데이터를 읽거나 변경하세요: examples/create_packets.py
  • pcap 파일에서 패킷을 읽고 쓰세요 (Wireshark/tcpdump pcap 형식만 지원): examples/pcap_read_write.py
  • 여러 pcap 파일을 하나의 파일로 병합하세요. 손상된 pcap 파일 읽기를 시도하고 콜백으로 필터링할 수 있습니다: examples/pcap_merge.py
  • 레이어 2 패킷을 송수신하세요: examples/send_receive_l2.py
  • 패킷을 가로채거나 수정하세요. 예: MITM: examples/interceptor3.py

사전 요구 사항

  • Python 3.x (CPython, Pypy, Jython 또는 기타 인터프리터)
  • 선택 사항: netifaces >=0.10.6 (유틸리티용)
  • 선택 사항 (인터셉터용):
    • CPython
    • NFQUEUE 대상을 지원하는 커널이 있는 Linux 기반 시스템. 커널 구성 옵션은 다음 위치에 있습니다:
      • Networking Options -> Network packet filtering -> Core Netfilter -> NFQUEUE target
    • iptables (대안: nftables)
      • NFQUEUE 관련 규칙은 예를 들어 "iptables -I INPUT 1 -j NFQUEUE --queue-num 0"와 같이 추가할 수 있습니다.
    • libnetfilter_queue 라이브러리 (http://www.netfilter.org/projects/libnetfilter_queue 참조)
  • 설치

    일부 예시:

    • 최신 버전 클론
      • git clone https://gitlab.com/mike01/pypacker.git
      • cd pypacker
      • python setup.py install

    pip/pypi는 복잡한 인증 메커니즘 때문에 더 이상 지원되지 않습니다. 죄송합니다.

    사용 예제 및 문서

    참조:

    • 위의 예제들
    • ./examples 디렉토리의 예제들
    • Gitlab Wiki: https://gitlab.com/mike01/pypacker/-/wikis/home

    프로토콜 자체(layerXYZ 참조)는 일반적으로 문서가 많지 않습니다. 해당 프로토콜들은 각자의 RFC/공식 표준으로 문서화되어 있기 때문입니다.

    테스트

    테스트는 다음과 같이 실행됩니다:

    1. Pypacker 디렉토리를 PYTHONPATH에 추가하세요.
    • cd pypacker
    • export PYTHONPATH=$(pwd):$PYTHONPATH
    1. 테스트 실행
    • python tests/test_pypacker.py

    성능 테스트 결과:

    root@kitploit:~
    Hardware: Intel CPU, 4 Cores @ 3.2 GHz
    Python: CPython v3.10
    
    nr = new results on this machine
    Rounds per test: 10000
    =====================================
    >>> Packet parsing (Ethernet + IP + UDP + DNS): Search UDP port
    Time diff: 0.1409761905670166s
    nr = 70933 p/s
    >>> Packet parsing (Ethernet + IP + TCP + HTTP): Search TCP port
    Time diff: 0.3157649040222168s
    nr = 31669 p/s
    >>> Packet parsing (Ethernet + IP + TCP + HTTP): Reading all header
    Time diff: 0.5989120006561279s
    nr = 16696 p/s
    >>> Parsing first layer (IP + ICMP)
    Time diff: 0.014587163925170898s
    nr = 685534 p/s
    >>> Creating/direct assigning (IP only header)
    Time diff: 0.02884364128112793s
    nr = 346696 p/s
    >>> bin() without change (IP)
    Time diff: 0.013646364212036133s
    nr = 732795 p/s
    >>> Output with change/checksum recalculation (IP)
    Time diff: 0.07719659805297852s
    nr = 129539 p/s
    >>> Basic/first layer parsing (Ethernet + IP + TCP + HTTP)
    Time diff: 0.019113540649414062s
    nr = 523189 p/s
    >>> Changing Triggerlist element value (Ethernet + IP + TCP + HTTP)
    Time diff: 0.017654895782470703s
    nr = 566415 p/s
    >>> Changing dynamic field (Ethernet + IP + TCP + HTTP)
    Time diff: 0.006037473678588867s
    nr = 1656321 p/s
    >>> Direct assigning and concatination (Ethernet + IP + TCP + HTTP)
    Time diff: 0.2050457000732422s
    nr = 48769 p/s
    .>>> Performance test pypacker vs. dpkt vs. scapy
    Comparing pypacker, dpkt and scapy performance (parsing Ethernet + IP + TCP + HTTP)
    nr = new results on this machine
    Rounds per test: 10000
    >> Testing pypacker parsing speed
    nr = 194382 p/s
    >> Testing dpkt parsing speed
    Could not execute dpkt tests: ModuleNotFoundError("No module named 'dpkt'")
    >> Testing scapy parsing speed
    nr = 2775 p/s
    

    FAQ

    남은 질문이 있으면 버그로 등록해 주세요("questions"로 태그됩니다).

    Q: pypacker는 얼마나 빠른가요?

    A: 위 결과를 참조하세요. 자신의 머신에서 자세한 결과를 보려면 테스트를 실행하세요: python tests/test_pypacker.py PerfTestCase

    Q: 어떤 프로토콜이 지원되나요?

    A: 현재 최소 지원 프로토콜은 다음과 같습니다: Ethernet, Radiotap, IEEE80211, ARP, DNS, STP, PPP, OSPF, VRRP, DTP, IP, ICMP, PIM, IGMP, IPX, TCP, UDP, SCTP, HTTP, NTP, RTP, DHCP, RIP, SIP, Telnet, HSRP, Diameter, SSL, TPKT, Pmap, Radius, BGP

    Q: [xyz]를 지원할 계획이 있나요?

    A: 새 기능은 제가 필요하거나 사람들이 기여함으로써 Pypacker에 추가됩니다. 특정 기능을 향후 릴리스에서 지원할 공식적인 계획은 없습니다. 기여에 대한 일반적인 지침은 HACKING 파일에서 확인할 수 있습니다.

    Q: 이 프로젝트에 어떻게 기여할 수 있나요?

    A: 버그/기능 요청은 Gitlab 버그 트래커를 사용하세요. 새로 등록하기 전에 이미 알려진 버그가 있는지 버그 트래커를 읽어 보세요. 패치는 풀 리퀘스트를 통해 보낼 수 있습니다.

    Q: Windows 3.11/XP/7/8/mobile 등에서 Pypacker에 xyz 문제가 있습니다. 고칠 수 있나요?

    A: 기본 기능은 모든 OS에서 작동해야 합니다. 선택적 기능은 문제를 일으킬 수 있습니다 (예: 인터셉터).

    Q: Pypacker는 어떤 라이선스로 배포되나요?

    A: GPLv2 라이선스입니다 (자세한 내용은 LICENSE 파일 참조).

    Q: copy.deepcopy(some_packet) 호출 시 "TypeError: can't pickle Struct objects" 예외가 발생합니다.

    A: Struct 객체를 pickle할 수 있도록 다음 해결 방법을 시도해 보세요:

    root@kitploit:~
    import struct, copyreg
    def pickle_struct(s):
    	return struct.Struct, (s.format,)
    
    copyreg.pickle(struct.Struct, pickle_struct)
    

    사용 팁

    성능 관련

    최대 성능을 얻으려면 다음 인덱스 표기법을 사용해 가장 낮은 레벨에서 속성에 접근하세요. 이렇게 하면 필요할 때만 레이어를 지연 파싱합니다:

    root@kitploit:~
    pkt_eth, pkt_ip, pkt_tcp, pkt_http = pkt[
     	None,
    	(None, lambda b: b.__class__ in [ip.IP, ip6.IP6]),
    	(tcp.TCP, lambda c: c.dport==80),
    	http.HTTP
    ]
    ...
    
    • "%s" 또는 "%r" 형식을 사용해 패킷을 변환하지 마세요. 그렇게 하면 백그라운드에서 파싱이 발생합니다:
    root@kitploit:~
    pkt = Ethernet() + IP() + TCP()
    # This parses ALL layers
    packet_print = "%s" % pkt
    
    • pkt[L]을 사용한 단일 값 인덱스 표기법으로 레이어를 검색하지 마세요. L을 찾거나 최상위 레이어에 도달할 때까지 모든 레이어를 파싱하기 때문입니다:
    root@kitploit:~
    packet_found = pkt[Telnet]
    # Alternative: Use multi-value index-notation. This will stop parsing at any non-matching layer:
    packet_found = pkt[Ethernet,IP,TCP,Telnet]
    
    • pypy를 사용하세요 (전체 패킷 파싱에 대해 CPython보다 약 3배 빠름)

    • 더 높은 성능을 위해 자동 필드를 비활성화하세요 (bin(...) 호출에 영향):

    root@kitploit:~
    pkt = ip.IP(src_s="1.2.3.4", dst_s="1.2.3.5") + tcp.TCP()
    # Disable checksum calculation (and any other update) for IP and TCP (only THIS packet instance)
    pkt.sum_au_active = False
    pkt.tcp.sum_au_active = False
    bts = pkt.bin(update_auto_fields=False)
    
    • 최대 성능을 얻으려면 수신/송신 버퍼를 늘리세요. 이는 다음 명령으로 수행할 수 있습니다 (출처: http://www.cyberciti.biz/faq/linux-tcp-tuning/):
    root@kitploit:~
    sysctl -w net.core.rmem_max=12582912
    sysctl -w net.core.rmem_default=12582912
    sysctl -w net.core.wmem_max=12582912
    sysctl -w net.core.wmem_default=12582912
    sysctl -w net.core.optmem_max=2048000
    sysctl -w net.core.netdev_max_backlog=5000
    sysctl -w net.unix.max_dgram_qlen=1000
    sysctl -w net.ipv4.tcp_rmem="10240 87380 12582912"
    sysctl -w net.ipv4.tcp_wmem="10240 87380 12582912"
    sysctl -w net.ipv4.tcp_mem="21228 87380 12582912"
    sysctl -w net.ipv4.udp_mem="21228 87380 12582912"
    sysctl -w net.ipv4.tcp_window_scaling=1
    sysctl -w net.ipv4.tcp_timestamps=1
    sysctl -w net.ipv4.tcp_sack=1
    

    기타 관련

    • TCP/UDP 스트림의 조립은 tshark에서 파이프와 함께 "-i -" 및 "-z follow,prot,mode,filter[,range]"를 사용해 수행할 수 있습니다.
    • 캡처 파일을 읽을 때 올바른 "최하위 레이어"를 선택하세요: 예를 들어 Wireshark로 파일을 열고 데이터 링크 레이어의 패킷 세부 정보를 확인하세요. 대부분의 경우 이는 layer12.ethernet.Ethernet으로 파싱할 수 있는 Ethernet II일 것입니다. 예를 들어 Wireshark/tshark의 "-i any" 옵션으로 캡처하면 layer12.linuxcc.LinuxCC로 표현되는 Linux cooked capture가 생성됩니다.
    도구 다운로드