1장. 주요 헤더의 구조와 항목
1-1 UDP 헤더의 구조와 항목
1-2 TCP 헤더의 구조와 항목
1-3 IP 헤더의 구조와 항목
1-4 ICMP 헤더의 구조와 항목
2장. 주요 내장 모듈의 소개와 활용
3장. 소켓의 개념과 객체 생성 방법
4장. 간단한 서버와 클라이언트 구현과 응용
5장. 간단한 포트 스캐너 구현
6장. 간단한 FTP 클라이언트 구현
7장. 원시 소켓 방식에 따른 헤더의 생성
8장. 오류 검사 여부에 따른 TCP/IP 헤더의 생성
9장. 수신 관점에 따른 주요 헤더의 복원
10장. 하위 계층 기반의 원시 소켓 방식에 따른 주요 헤더의 복원
11장. 헤더 복원을 통한 단순한 패킷 스니핑 도구의 구현
12장. ARP 스푸핑 공격 도구의 구현
13장. 스캐닝 도구의 구현
13-1 호스트 스캔 도구의 구현
13-2 포트 스캔 도구의 구현
13-3 다중 스레딩을 이용한 고속 스캐너 도구의 구현
14장. 서비스 거부 공격 도구의 구현
14-1 LAND 공격 도구
14-2 UDP/TCP 플러딩 공격 도구
14-3 슬로우로리스 공격 도구
15장. 네트워크 퍼징 도구의 구현
15-1 퍼징 개요
15-2 Echo Server에 대한 퍼징
15-3 FTP Server에 대한 퍼징
이 책의 구성
제1장, ‘주요 헤더의 구조와 항목’에서는 네트워크 프로그래밍을 시작하기 위한 사전 지식으로서 TCP/IP 패킷 헤더를 설명한다. 제1장의 배경 지식을 토대로 소스 코드를 이용해 패킷을 자유자재로 생성하거나 조작할 수 있다.
제2장, ‘주요 내장 모듈의 소개와 활용’에서는 본격적으로 네트워크 프로그래밍을 시작하기에 앞서, 파이썬 3의 주요 모듈을 살펴본다. 파이썬은 현재 2 버전과 3 버전이 혼용되고 있지만, 향후 2 버전의 지원이 중단될 예정이므로 3 버전을 기준으로 설명한다. 파이썬 3의 os?socket 등의 패키지 활용법은 반드시 숙지하기 바라며, 바이트 순서 내용을 명확히 이해하고 다음 장으로 넘어가기 바란다.
제3장. ‘소켓의 개념과 객체 생성 방법’에서는 본격적으로 파이썬 3의 socket 모듈을 사용해 간단한 통신 객체 생성 방법을 설명한다. 특히, 통신 연결 과정에서 사용되는 connect(?bind(?accept( 등과 같은 함수들이 호출되는 순서를 서버 측과 클라이언트 측에 알맞게 배치할 수 있도록 반드시 숙지하고 넘어가기 바란다.
제4장, ‘간단한 서버와 클라이언트 구현과 응용’에서는 네트워크 관점에서 서버와 클라이언트를 서로 다른 위치에 있다고 가정하고, 소켓을 통해 상호 통신이 가능함을 확인한다. 파이썬 3는 다른 언어에 비해 월등히 수월하게 소켓 관련 기능을 구현할 수 있으므로, 필수 함수 정도는 꼭 기억하기 바란다.
제5장, ‘간단한 포트 스캐너 구현’에서는 포트 스캐닝을 수행할 수 있는 오픈 소스 nmap 패키지를 파이썬 3와 연동해 간단한 포트 스캐닝 도구를 구현한다. 제5장의 내용을 정확히 숙지한다면, nmap 관련 스크립트 코드들을 해석하는 기초를 쌓을 수 있다.
제6장, ‘간단한 FTP 클라이언트 구현’에서는 직접 FTP 클라이언트 프로그램을 구현하는 과정을 진행한다. 여기에서 제시한 내용을 기반으로 각자에게 필요한 기능을 검색을 통해 하나씩 추가하면서 구현해보기 바란다.
제7장, ‘원시 소켓 방