void pcap_close(pcap_t* p)
p와 할당되지 않은 데이터에 연계된 파일을 닫는 함수
int pcap_datalink(pcap_t* p)
어댑터의 link layer 값을 반환하는 함수
pcap_datalink() 여러 타입의 link layer 값을 반환한다.
l DLT_NULL BSD loopback encapsulation
l DLT_EN10MB Ethernet (10Mb, 100Mb, 1000Mb, and up)
l DLT_IEEE802 IEEE 802.5 Token Ring
l DLT_ARCNET ARCNET SLIP
l DLT_PPP PPP
l DLT_FDDI FDDI
l DLT_ATM_RFC1483 RFC 1483 LLC/SNAP-encapsulated ATM
l DLT_RAW raw IP
l DLT_PPP_SERIAL PPP in HDLC-like framing
l DLT_PPP_ETHER PPPoE
l DLT_C_HDLC Cisco PPP with HDLC framing
l DLT_IEEE802_11 IEEE 802.11 wireless LAN
l DLT_LOOP OpenBSD loopback encapsulation
l DLT_LINUX_SLL Linux "cooked" capture encapsulation
l DLT_LTALK Apple LocalTalk
int pcap_datalink_name_to_val(const char* name)
int pcap_datalink_name_to_val(pcap_t* p, int cnt, pcap_handler callback, u_char* user)
pocket의 그룹을 수집한다. cnt pocket 받았을때 , 또는 시간이 초과 되어서 pcap_open_live()가 만기 설정되었을 때 return 된다.
Void pcap_fakecallback(u_char* userData, const sruct_pkthdr* h, const u_char* pkt)
FILE* pcap_file(pcap_t* p)
파일 capture 의 데이터 흐름의 값을 return
“savefile”이 pcap_open_offlint()에 의해 열려지거나 또는NULL의 값 또는 네트웨크 장치가 pcap_open_live()에 의해 열려져 있을 때, pcap_file()은 “savefile” 기본적인 I/O stream 을 return
int pcap_fileno(pcap_t* p)
캡쳐 장치의 file descriptor를 return
네트웨크 장치가 pcap_open_live()에 의해 열려지거나 -1
“savefile”이 pcap_open_offline()에 의해 열려질 때
pcap_fileno()는 캡쳐된 packet이 읽혀진 곳에서부터 file
descriptor 숫자를 return
char* pcap_geterr(pcap_t* p)
마지막 pcap library error 에 포함된 error text return
int pcap_getnonblock(pcap_t* p, char* errbuf)
인터페이스의 non-blocking 상태를 얻는다
int pcap_is_swapped(pcap_t* p)
현재의 system이 현재의 savefile과 비교하여 다른 byte order를 가지고 있으면 true 반환
int pcap_list_datalinks(pcap_t* p, int**, dlt_buffer)
int pcap_loop(pcap_t* p, int cnt, pcap_handler callback, u_char* user)
cnt packet이 받아들여질 때 return, 그러나 pcap_open_live()에 의해 timeout set이 되지 않는다. 그래서 영원히 block 될수 있다.
int pcap_major_version(pcap_t* p)
savefile을 쓰는데 사용되는 pcap library의 major version number return
int pacp_minor_version(pcap_t* p)
savefile을 쓰는데 사용되는 pcap library의 minor version number return
const u_char* pcap_next(pcap_t* p, struct pcap_pkthdr* h)
다음 사용 가능한 packet return
int pcap_next_ex(pcap_t* p, struct pcap_pkthdr** pkt_header, u_char** pkt_data)
오프라인 capture나 인터페이스로부터 packet 읽음
return 값
l 1, packet이 문제 없이 읽혀지면 return
l 0, pcap_open_live()이 시간이 경과되어 timeout이 set 되면 return
l -1, 에러가 발생하면 return
l -2, 오프라인 capture로부터 읽을떄 EOF에 도달하면 return
pcap_t* pcap_open_dead(int linktype, int snaplen)
library 에서 다른 함수를 호출할 때 pcap_open_dead() 는 pcap_t structure를 생성하기 위해 사용되어진다. 이것은 BPF code를 컴파일하기 위하셔 libpcap를 사용할 때 일시적으로 사용된다.
void pcpa_perror(pcap_t* p, char* prefix)
마직막 pcap library의 에러를 출력한다.
int pcpa_setnonblock(pcap_t* p, int nonblock, char* errbuf)
blocking mode 와 unblocking mode 를 교환한다.
Pcap_setnonblock()는 pcap_opern_live()가 열려 있고 non-blocking mode안에서 또는 non-blocking mode를 배척하고, non-blocking mode가 0 or 1 에 따라 capture descriptor를 입력한다.
int pcap_snapshot(pcap_t* p)
프로그램에 보내질 packet 부분의 범위를 return
int pcap_strcasecmp(const char* sa, const char* s2)
char* pcap_strerror(int error)
pcap_strerror()는 strerror()이 가능하지 않을떄 제공된다.
'IT > WinpcapProgramming' 카테고리의 다른 글
TCP 패킷 체크섬(Checksum) C언어로 구현하기 (0) | 2015.07.31 |
---|---|
TCP/IP IP 패킷 체크섬(Checksum) C언어로 구현하기 (1) | 2015.04.25 |
windump를 사용하여 TCP/IP 패킷 분석하기 (0) | 2015.04.03 |
windump 사용법 (0) | 2015.04.03 |
Winpcap 프로그래밍 - 패킷 스니핑 (감청/분석) 하기 (0) | 2015.03.31 |