Scapy
1. 패킷 생성도구, Scapy
1. 패킷 생성도구, Scapy
Scapy? HTTP, DNS, TCP, IP, Ethernet 프로토콜의 메시지를 생성시키는 Python Library 입니다.
설치
Scapy는 Python 3 에서 실행하도록 설치해야합니다(쉬운 방법은 anaconda 와 함께 설치). 그리고, sudo 로 루트권한으로 패킷 생성해야합니다.
DNS패킷 생성하기
계층별 헤더 생성하기
2. TCP Three-way handshake 연결 만들고 HTTP GET 메소드 메시지 전송하기
2. TCP Three-way handshake 연결 만들고 HTTP GET 메소드 메시지 전송하기
아래 코드는 커널의 TCP 모듈을 거치지 않고, 직접 TCP 헤더를 생성해서 raw socket으로 전송하는 방식
iptables 설정에서 TCP RST를 무시하도록 설정해야함
https://stackoverflow.com/questions/9058052/unwanted-rst-tcp-packet-with-scapy
TCP three-way handshake
클라이언트에서 SYN flag, random sequence number 생성후 전송
TCP SYN 세그먼트 전송 후 SYN/ACK 수신(sr1())
ACK를 위하여 seq + 1, ack + 1 하여 ACK 전송(send())
HTTP GET 메소드 전송 후 응답 수신(sr())