/packet-sniffer

packet sniffer

Primary LanguageC

Packet Sniffer

TCP/IP 프로토콜 분석 프로그램 개발

PC 1대로 논리적 분리 환경을 구축하여 A, B를 운영하고 A에서 HTTP / DNS / ICMP를 요청하고 B에서 패킷을 캡쳐 후 로그로 저장 및 필터링 기능을 갖춘 프로그램을 구현

Environment

  • 구조도
    structure
  • 배치 다이어그램
    batch-diagram

Flow Chart

flow-chart

Features

  • HTTP, HTTPS, DNS, ICMP 패킷 캡쳐
  • 패킷 캡쳐 중지
  • 필터링
  • 전체 패킷을 log.txt, 필터링된 패킷을 filter.txt로 출력

How to use

  • Installation
git clone https://github.com/oognuyh/packet-sniffer.git

cd packet-sniffer

gcc -o packet_sniffer packet_sniffer.c

./packet_sniffer
  • Filtering
    엔터키 입력 시 필터링 모드로 전환
    필터링 모드에서 값을 주지 않을 시 종료
<http|https|dns|icmp|all> 
<http|https|dns|icmp|all> <ip>
<http|https|dns|icmp|all> <source ip|all> <dest ip|all>

Screenshots

main

  • Wireshark와 비교 http dns icmp

What i learned

  • HTTP / DNS / ICMP 프로토콜에 대한 이해
  • 각 프로토콜 별 패킷의 구조 및 이해
  • Raw Socket에 대한 이해
  • 3-Way Handshaking 동작 원리
  • 네트워크 속 패킷의 송수신 과정에 대한 원리