RAW 소켓을 사용하지 않고, 라이브러리를 이용하여 패킷을 캡처하거나 프로토콜 헤더를 직접 작성하여 전송할 수 있다.
유닉스 계열에서 네트워크 패킷 캡처를 위해 가장 많이 libpcap 라이브러리를 사용한다.
libpcap은 데이터 링크 계층부터 프로토콜 스택을 통과하는 네트워크 패킷을 캡처할 수 있도록, 네트워크 패킷을 전송할 수 있게 해 준다.
리눅스에서 libpcap 이용하여 네트워크 디바이스 정보를 확인해보자.
첫 번째로 libpcap 라이브러리가 필요하므로 다운로드를 하여보자.
#apt-get install libpcap-dev
컴파일할 때는 gcc -o libpcap_test libpcap_test.c -lpcap 이렇게 해줘야 pcap.h 파일을 인식해 컴파일이 된다.
이렇게 실행하면 네트워크 디바이스 정보들이 잘 나오는 것을 확인할 수 있다.
위에서 사용한 소스코드를 윈도우에서도 사용이 가능하다.
윈도우 환경에서는 winpcap 드라이버가 설치되지 않았으면 드라이버와 dll파일을 먼저 설치해줘야 한다.
http://www.winpcap.org/install/default.htm
[그림 2-1] 위에 보이는 것처럼 Installer for Windows를 다운로드하여 설치해준다.
또한, 개발에 필요한 헤더 파일 등이 포함된 개발자 패키지를 다운로드해야 한다.
http://www.winpcap.org/devel.htm
사이트에 접속해서 [그림 2-2]에 나온 것처럼 다운로드하면 된다.
다운로드한 개발자 패키지를 사용하려면 따로 설정이 필요하다.
일단 Visual Studio를 열어서 프로젝트를 하나 만들어 리눅스에서 사용한 소스코드까지 작성해보자.
[그림 3-1]처럼 코드를 작성하면 아직 헤더랑 라이브러리가 적용이 안돼서 빨간 줄이 뜬다.
적용하려면 프로젝트를 오른쪽 클릭하여 속성을 들어간다.
첫 번째 헤더 파일을 적용해야 한다. 다운로드한 winpcap 폴더 안에 include 폴더가 존재한다.
[그림 3-2] include 폴더 경로를 C/C++ -> 일반 -> 추가 포함 디렉터리 항목에 추가시킨다.
두 번째 라이브러리 파일을 적용해야 한다. winpcap 폴더 안에 include 폴더 말고도 lib 폴더가 존재한다.
[그림 3-3] lib 폴더 경로를 링커 -> 일반 -> 추가 라이브러리 디렉터리 항목에 추가시킨다.
마지막으로 링크(Link) 과정에서 추가할 라이브러리 파일을 지정해줘야 한다.
[그림 3-4] 링커 -> 입력 -> 추가 종속성 항목에 wpcap.lib, ws2_32.lib 파일을 추가한다.
wpcap.lib : Winpcap 라이브러리 사용을 위해
ws2_32.lib : 소켓 관련 함수 사용을 위해 (지금은 안 넣어도 됨)
이렇게 설정을 하고 나면 [그림 3-5]처럼 빨간 에러가 사라지고 정상 컴파일 및 실행[그림 3-6]이 된다.
'프로그래밍 > C언어를 활용한 네트워크 해킹' 카테고리의 다른 글
ARP 프로토콜 (0) | 2020.12.02 |
---|---|
Ethernet 헤더 (0) | 2019.09.05 |
체크섬(Checksum) (0) | 2019.09.03 |
Packet Capture 라이브러리2 (0) | 2019.09.03 |
RAW 소켓 (0) | 2019.09.03 |