2010-01-15 4 views
1

루비 1.9를 사용하여 컴파일 (->ptr/->len-_PTR/_LEN 변환) gem install pcap를 최신 고칠 +, 내가 발견 간단한 코드 수행 후 :루비 (ver 1.9)의 pcap 보석에 왜 접근 했습니까?

require 'pcap' 
cap = Pcap::Capture.open_offline('1.dmp') 
cap.each { |pkt| p pkt.src; } 

exit 

PCAP 보석 블록 cap.each을 떠나지 않을, 즉 출력 :

... 
213.248.106.202 
192.168.1.50 
213.248.106.202 
192.168.1.50 

^C 
^C 
^C 
^C 
^C 

그리고 프로세스는 kill -s KILL <process_id>에 의해서만 종료 될 수 있습니다.
이 문제를 해결할 방법이 있습니까?

P. 1.dmp 파일은 tcpdump -w 1.dmp을 사용하여 생성됩니다.

답변

1

Pcap :: Capture # each 또는 Pcap :: Capture # each_packet은 선택적 count 인수를 취합니다. -1이면 EOF까지 반복됩니다.

각각에 숫자를 전달하고 어떤 일이 발생하는지 볼 수 있습니다.

cap.each_packet(4) {|pkt|p pkt.src} 

중단되면 확장 코드에 문제가있을 수 있습니다.

+0

사실, each_packet (최신 버전 이상)은 숫자를 사용하지 않습니다. Pcap 객체 자체를 만들 때 초기화되는 내부 @count 변수가 있습니다. – tjarratt