Skip to content

leehoegyu/VirtualLAN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

VirtualLAN

Windows 환경에서 네트워크 패킷을 캡처하고 포워딩하는 C++ 라이브러리입니다. Raw 소켓을 사용하여 브로드캐스트 UDP 패킷을 특정 수신자들에게 전달합니다.

기술적 개요

핵심 기능

  • Raw 소켓 기반 패킷 캡처: Windows Raw Socket API를 사용하여 네트워크 인터페이스의 모든 패킷을 캡처
  • 브로드캐스트 패킷 필터링: UDP 브로드캐스트 패킷(255.255.255.255)만을 선별적으로 처리
  • 패킷 포워딩: 캡처된 패킷을 지정된 수신자 IP 목록으로 재전송

아키텍처

클래스 구조

VirtualLAN (메인 클래스)
├── VirtualLANThread (워커 스레드 관리)
├── IPHeader (IP 헤더 구조체)
├── UDPHeader (UDP 헤더 구조체)
└── PseudoHeader (UDP 체크섬용 의사 헤더)

네트워크 프로토콜 처리

IP 헤더 처리

struct IPHeader {
    uint8_t ver_ihl;        // Version (4비트) + IHL (4비트)
    uint8_t tos;            // Type of Service
    uint16_t tot_len;       // 전체 길이
    uint16_t id;            // 식별자
    uint16_t frag_off;      // 단편화 오프셋
    uint8_t ttl;            // Time To Live
    uint8_t protocol;       // 프로토콜 (UDP=17)
    uint16_t check;         // 헤더 체크섬
    uint32_t saddr;         // 소스 IP
    uint32_t daddr;         // 목적지 IP
};

UDP 헤더 처리

struct UDPHeader {
    uint16_t source;        // 소스 포트
    uint16_t dest;          // 목적지 포트
    uint16_t length;        // UDP 길이
    uint16_t check;         // UDP 체크섬
};

체크섬 계산

IP 체크섬

  • RFC 791 표준을 따른 16비트 단위 합계 계산
  • 캐리 비트 처리 및 1의 보수 연산

UDP 체크섬

  • RFC 768 표준을 따른 의사 헤더 포함 체크섬
  • IP 헤더의 소스/목적지 주소, 프로토콜, UDP 길이 포함

Raw 소켓 기술

소켓 설정

  1. Raw 소켓 생성

    socket(AF_INET, SOCK_RAW, 0)
  2. 프로미스큐어스 모드 설정

    WSAIoctl(socket, SIO_RCVALL, ...)
  3. IP 헤더 포함 모드

    setsockopt(socket, IPPROTO_IP, IP_HDRINCL, ...)

패킷 캡처 프로세스

  1. 네트워크 인터페이스에서 모든 패킷 수신
  2. IP 헤더 파싱 및 프로토콜 확인 (UDP만 처리)
  3. 목적지 IP가 브로드캐스트(255.255.255.255)인지 확인
  4. 조건을 만족하는 패킷을 수신자 목록으로 포워딩

패킷 포워딩 프로세스

  1. 원본 패킷 데이터 복사
  2. IP 헤더의 목적지 주소를 수신자 IP로 변경
  3. IP 및 UDP 체크섬 재계산
  4. Raw 소켓을 통해 수정된 패킷 전송

시스템 요구사항

Windows API 의존성

  • Winsock2: 네트워크 소켓 API
  • ws2tcpip: TCP/IP 프로토콜 지원
  • 관리자 권한: Raw 소켓 사용을 위해 필수

컴파일러 요구사항

  • C++11 이상 (std::thread, std::atomic, std::mutex 사용)
  • Windows SDK
  • ws2_32.lib 링크 필요

보안 고려사항

권한 요구사항

  • Raw 소켓 사용으로 인한 관리자 권한 필수
  • 네트워크 인터페이스 직접 접근

방화벽 설정

  • Windows 방화벽에서 Raw 소켓 트래픽 허용 필요
  • 인바운드/아웃바운드 규칙 설정 권장

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages