[python] scapy 를 이용한 패킷 캡쳐 Develop Tip

scapy 라는 것은 파이썬으로 만들어진 일련의 모듈 및 실행파일로,
2007년에 세상에 나와 지금껏 많은 사람들에 의하여 사용되어 지는
패킷 캡쳐, 보기, 패킷 생성 및 다루기 등의 패킷 관련하여 다양한 작업을
할 수 있는 툴입니다.

(물론 초당 백만 개 이상의 패킷을 다루는 과도한 패킷 처리 등은 불가합니다.
 저 성능의 빠른 패킷 핸들링을 위해서는 아주 편한 도구인 것 같습니다)

이번에는 이 스캐피를 이용한 파일 캡쳐 및 그 결과 보기를 간단히 살펴봅니다.

역시 우분투에서 

$ sudo apt-get install python-scapy

로 간단히 설치했습니다.


파일 캡쳐를 위해서는 sudoer 이어야 하고,

$ sudo scapy
라고 명령을 내린다음, 무슨 명령이 가능한지

>>> lsc()

명령을 주면 다양한 기능을 확인할 수 있습니다. (아랫 부분에 sniff 기능도 활성화 되어 있습니다)

일단 패킷 4개만 잡아 봅니다.

>>> sniff(count=4)

(인터페이스 지정을 안하면 모든 인터페이스 입니다... 아마도)

아마도 scapy를 만든 사람은 perl 에도 많이 익숙한 모양입니다.

perl의 @_ 등과 같이, python에선 잘 사용하지 않는 _ 를 사용했네요.

>>> a = _

그러면 이전에 다운받은 4개 패킷의 목록이 a 변수에 들어가 있습니다.

>>> a[0]

하면 default 문자열 출력이 보이고,


>>> a[0].show()

show 메소드로 더 human readable 하게 보여줄 수도 있습니다.


또한,

>>> sniff() 

명령만 주어 계속 캡쳐를 하다가,
Control+C 를 눌러 끝낸다음, 동일한 작업을 할 수 있습니다.



어느분께는 도움이 되셨기를...

핑백

덧글

  • dslab 2016/05/30 12:48 # 삭제 답글

    패킷 수집을 위해 여러 종류의 파이썬 라이브러리를 테스트해 본 결과
    트래픽을 많이 수집하거나, 빠른 속도의 네트워크 환경에서는 scapy 라이브러리로 패킷을 캡쳐 할 경우 CPU 오버헤드가 심하고, 패킷손실이 큰 것을 확인했습니다.
    대안으로 pcapy라는 라이브러리가 있습니다. scapy는 주로 패킷에서 정보를 추출하고, 분석하는 용도로 많이 쓰인다고 합니다.
    그리고 wireshark를 직접 활요하는 pyshark라는 라이브러리도 있습니다 ^^
    오래된 포스팅 글이지만, 그냥 혹시 도움이 되실까해서 글을 남겨봅니다. ^^
  • 지훈현서아빠 2016/05/30 15:57 #

    파이썬의 가장 큰 단점이 C 보다 많이 늦고 제대로 작성하지 않으면 CPU를 많이 먹을 확률이 높다는 것입니다.
    이것은 모든 라이브러리도 마찬가지 이구요.
    특히나 패킷 캡쳐 등과 같은 일반 환경보다 훨씬 더 많은 자원을 이용해야 하는 경우는
    때로는 C, C++ 밖에는 대안이 없을 때가 많습니다.
    그렇지 않으면 분산 환경으로 극복해 가야 되겠지요.
    좋은 정보 감사드립니다~~ ^^
댓글 입력 영역

구글애드텍스트