2014-03-18 7 views
0

BPF 필터를 일반 사용자로 확인하는 가장 간단한 방법은 무엇입니까?유효한 BPF 필터를 확인하는 간단한 방법

가장 쉬운 방법은 작은 pcap 파일을 사용하여 tcpdump를 -r 옵션의 입력으로 실행하는 것입니다.

$ tcpdump -r one_packet.pcap -F invalid_bpf.conf 2> /dev/null ; echo $? 
1 
$ tcpdump -r one_packet.pcap -F valid_bpf.conf 2> /dev/null ; echo $? 
0 

유효하지 않거나 유효한 BPF 필터의 표준 오류 코드를 반환합니다. 이를 위해서는 입력으로 제공 할 PCAP 파일이 있어야합니다.

PCAP 파일이나 특별 권한없이이 간단한 테스트를 수행 할 수있는 방법이 있습니까?

답변

1

당신은 이스케이프 시퀀스를 지원하는 내장 된 "에코"명령을 가진 쉘은,이 일을 한 다소-비뚤어진 방법이 근무

echo -en "\0324\0303\0262\0241\02\0\04\0\0\0\0\0\0\0\0\0\0377\0377\0\0\01\0\0\0"|\ 
    ./tcpdump -r - -F bpf.conf 2>/dev/null; echo $? 

을하는 것입니다있는 경우 OS X 10.8에서 bash 3.2.48 (1) -release (x86_64-apple-darwin12)를 사용하고 있습니다.

"echo"명령은 패킷이없는 짧은 pcap 파일과 DLT_EN10MB의 링크 계층 헤더 유형을 씁니다. 그러면 필터가 이더넷에서 유효한지 테스트합니다. 일부 링크 계층 헤더 유형에는 유효하지만 다른 부분에는 유효하지 않은 필터가 있습니다 (예 : "브로드 캐스트가 아닌", 이더넷에서는 유효하지만 PPP에서는 유효하지 않음). 따라서 일부를 선택해야합니다. 링크 계층 헤더 테스트 할 때 사용할 유형.

+0

그건 ... 끝내 주네. 'tcpdump : unknown file format'하지만 다음과 같은 에러가 난다. Mac OS X 10.9에서'GNU bash, 버전 3.2.51 (1) -release (x86_64-apple-darwin13)'tcpdump 버전'tcpdump 버전 4.3.0 - Apple 버전 56' – RyPeck

+0

출력을 에코에서 넣으면 작동합니다. pcap 파일을 실행하고 그것을 실행하십시오. – RyPeck

+0

"tcpdump : 알 수없는 파일 형식'| Mac OS X 10.9"에서 다음 오류가 발생합니다. 애플이 tcpdump 나 libpcap을 깨뜨린 것처럼 보입니다. 나는 그것을보고 버그를 제기 할 것이다. –