Scapy

1. 패킷 생성도구, Scapy

  • Scapy? HTTP, DNS, TCP, IP, Ethernet 프로토콜의 메시지를 생성시키는 Python Library 입니다.

  • 설치

    • Scapy는 Python 3 에서 실행하도록 설치해야합니다(쉬운 방법은 anaconda 와 함께 설치). 그리고, sudo 로 루트권한으로 패킷 생성해야합니다.

  • DNS패킷 생성하기

  • 계층별 헤더 생성하기

2. TCP Three-way handshake 연결 만들고 HTTP GET 메소드 메시지 전송하기

  • 아래 코드는 커널의 TCP 모듈을 거치지 않고, 직접 TCP 헤더를 생성해서 raw socket으로 전송하는 방식

  • TCP three-way handshake

    • 클라이언트에서 SYN flag, random sequence number 생성후 전송

    • TCP SYN 세그먼트 전송 후 SYN/ACK 수신(sr1())

    • ACK를 위하여 seq + 1, ack + 1 하여 ACK 전송(send())

    • HTTP GET 메소드 전송 후 응답 수신(sr())