2014-09-05 2 views
1

패킷이 내 인터페이스에 들어올 때 패킷을 검사하려고합니다.라이브 트래픽 scapy에서 패킷을 검사하는 방법이 있습니까?

그래서 내가해야 할 일입니다 : 내가 전달 시스템을 실행하고

. 그래서 기본적으로 나는 나의 lan에있는 컴퓨터를위한 라우터처럼 행동한다. 따라서 패킷을 적절한 목적지로 라우팅해야합니다. 내가 일하는이 부분.

  1. 그 패킷의 페이로드를 기반으로

이 어떻게이 단계를 수행 할 수있는 적절한 라우팅 결정을 내 PC를 통해 흐르는 패킷을 검사하여 다음과 같이

다음 부분은 1 및 2 scapy를 사용하여?

답변

3

이것은 매우 간단합니다. 들어오는 패킷을 반복 처리 한 다음 필드를보고 어느 쪽이든 보낼 수 있습니다.

이 예는 인터페이스의 eth1의 모든 패킷을 캡처하고 소스 IP가 5로 끝나는 경우 1.1.1.1 모든 IP 패킷을 전송합니다

from scapy.all import * 
for pkt in sniff(iface='eth1'): 
    if IP in pkt and pkt[IP].src.endswith('5'): 
     pkt[IP].dst = '1.1.1.1' 
     sendp(pkt, iface='eth2') 
+0

오 메이트 ..이 내가 찾던 정확히 것입니다 ... 하나의 질문 : 네트워킹 프로세스를 인수합니까 ... 인터페이스에 들어오는 패킷이이 코드가 실행될 때까지 어디에도 가지 않을 것입니까? ..... 다른 말로하면 나는 패킷이 내 리눅스 박스에서 iptables를 사용하여 리다이렉트되는 것을 원하지 않는다. 그리고 나서이 코드가 실행될 때 다른 목적지로 라우팅된다. 나는 단지 이것들 중 하나만을 원한다. 위의 실행은 전체 networkign 프로세스를 대신 수행합니까? – sukhvir

+1

아니요, 그렇지 않습니다. 패킷을 캡처하여 가져옵니다 (패킷을 "훑어보기"만합니다). 이 패킷이 실제 목적지 (예 : 웹 브라우저 또는 iptables)에 도착하지 않게하려면 iptables와 같은 것을 사용해야합니다. 그렇지 않으면 자신 만의 커널을 만들 수 있습니다. – KimiNewt

+0

:(그 모든 목적을 이기고 ... 어쨌든 건배 – sukhvir

관련 문제