Scapy 코드를 살펴봅니다.구조체를 어떻게 처리하는가.

의 목적


예를 들면, Scapy의 인코딩을 봤는데 어떤 느낌이 들었는지.
Scapy는
Scapy is a powerful Python-based interactive packet manipulation program and library.
(참조: https://pypi.org/project/scapy/)
파이썬에는 구조체가 없습니다.
패킷 등 구조 데이터를 어떻게 처리하는지 확인했다.
대상 코드는
https://github.com/secdev/scapy
인용 코드도 모두 상술한 바와 같다.

뻔한 일


개요


코드에는 다음과 같은 두 가지 구조와 관련된 처리가 있다
  • struct 모듈
  • Structure 클래스
  • 기본적으로 전자를 사용한다.

    struct 모듈


    ↓ 다음 느낌으로 패키지.
        psdhdr = struct.pack("!4s4sHH",
                             inet_pton(socket.AF_INET, u.src),
                             inet_pton(socket.AF_INET, u.dst),
                             proto,
                             ln)
    

    Structure 클래스


    ↓ Windows의 pcap 페어에는 다음 코드가 있습니다??
    나는 어떻게 쓰는지 모르겠다.
    class sockaddr_in(Structure):
        _fields_ = [("sin_family", SHORT),
                    ("sin_port", USHORT),
                    ("sin_addr", in_addr),
                    ("sin_zero", 8 * CHAR)]   
    

    총결산


    유명한 Scapy에서 그룹화된 구조 데이터가 어떻게 처리되는지 확인했다.
    struct 모듈을 사용했습니다.
    (상술한 바와 같이 약간의 어폐가 있다. 데이터를 공고히 하는 부분에서struct 모듈을 사용하는 것이 적절할 수 있다.)
    c언어 등에서 구조체가 어떻게 처리되는지 의미에서 공고함을 제외한 부분은 보통 반 구성원이 된다는 말이 옳다고 생각합니다.
    댓글 있으면 부탁드려요.

    좋은 웹페이지 즐겨찾기