[scapy] pcap 파일안에 들어있는 전체 패킷 갯수는?
어떤 .pcap 파일안에 들어있는 전체 패킷 갯수는 어떻게 알아낼까?
Python scapy를 이용해서 아래와 같이 단 몇줄로 쉽게 알아낼 수 있다. Python version은 3.7이고, IDE는 spyder3를 이용했다.
# getTotalNumPackets.py
import scapy.all as sc
pkts = sc.rdpcap('test.pcapng')
print('Total packets =', len(pkts))
단 세줄로 구현할 수 있는데 첫번째로 scapy의 모든 class를 import하고 sc로 별칭을 정해준다.
그리고 두번째 줄에서 scapy의 rdpcap() 함수를 이용해서 test.pcapng를 parsing하여 모든 패킷들을 pkts에 넣어준다. 여기서 주의할 점은 test.pcapng가 getTotalNumPackets.py와 같은 디렉토리안에 있어야 한다.
rdpcap()은 생각하고 있는대로 read pcap file 정도가 되겠지? 마지막으로 세번째 줄에서 전체 패킷 갯수를 출력한다. 실행 결과는 아래와 같이 나온다.
Total packets = 7910
test.pcapng 파일 안에 7910개의 패킷이 들어 있는 것을 알 수 있다. 실제 pcap파일을 열어보면 가장 왼쪽에 정렬되는 'No'이 1부터 7910까지 있는 것을 확인 할 수 있다.
이 다음은 같은 일을 하는 code를 import하는 방법만 조금 바꿔서 해봤다 (확인하고 싶은 분은 아래 버튼 클릭)
다음 코드는 완전 동일한 일을 하는 것을 import하는 방법만 조금 바꿨다. 'scapy.all'에서 rdpcap 함수만 import했다. 그럼 위의 코드에서 처럼 sc.rdpcap()을 사용하지 않고 rdpcap()를 사용하면 된다.
비슷하게 import 부분은 "from scapy.all import *"로 해도 되는데 이렇게 하면 Spyder에서 불필요한 warning message가 나와서 제일 처음 코드처럼 사용한다. 실행 결과는 당연 똑같음!
# getTotalNumPackets2.py
from scapy.all import rdpcap
pkts = rdpcap('test.pcapng')
print('Total packets =', len(pkts))
'PYTHON' 카테고리의 다른 글
Python 로그(log) 함수 (0) | 2021.03.02 |
---|---|
Pyinstaller를 PyCharm에 연결해서 사용하는 방법 (0) | 2019.01.29 |
[scapy] import error 해결 방법 (0) | 2019.01.24 |
[scapy] pcap 파일안에 UDP packet은 몇개있을까? (1) | 2019.01.24 |
댓글
이 글 공유하기
다른 글
-
Python 로그(log) 함수
Python 로그(log) 함수
2021.03.02Python에서 log 함수는 "math"을 import해서 쓸 수 있다. import math 밑이 2인 로그 함수 ($ log_2 x$) import math print(math.log2(1)) # output: 0.0 print(math.log2(2)) # output: 1.0 print(math.log2(4)) # output: 2.0 print(math.log2(5)) # output: 2.321928094887362 밑이 10인 로그 함수 ($ log_{10} x $) import math print(math.log10(1)) # output: 0.0 print(math.log10(2)) # output: 0.3010299956639812 print(math.log10(10)) # output… -
Pyinstaller를 PyCharm에 연결해서 사용하는 방법
Pyinstaller를 PyCharm에 연결해서 사용하는 방법
2019.01.29PyCharm에서 Pyinstaller를 편하게 연결해서 사용하고 싶은데…. 어떻게 하면 될까? File 메뉴에서 setting에 들어간 다음, Tools에서 External tools를 Click! "+"를 누르면 아래와 같은 화면이 나오는데 Name, Description, Program, Arguments, Working directory를 아래와 같이 입력한 다음 "OK"를 클릭한다. Arguments와 Working directory에서 "$"로 묶여있는 부분은 PyCharm에서 정의한 macro이다. "Insert Macro…." 버튼을 눌러서 추가하거나 직접 입력해줘도 된다. Arguments에서 "--onefile"은 말그대로 단 하나의 exe 파일로 만들어주는 옵션이다. "--wind… -
[scapy] import error 해결 방법
[scapy] import error 해결 방법
2019.01.24Python 3.7을 사용하는데 pip로 scapy를 install하고 import하니까 error가 났다. > pip install scapy 이렇게 설치하게 되면 현시점에서 가장 최신버전으로 설치가 된다. 내가 설치한 현시점 최신버전은 2.4.2였다. 근데 googling해보니 이 scapy 2.4.2이 python 3.7과 안맞는 부분이 있나보다. import하면 error를 띄우는데 아래와 같이 uninstall하고 2.4.0 버전으로 다시 설치하니 import할때의 error가 없어졌다. 기능상 문제도 없는 것 같다. uninstall을 꼭 해야 하는지는 잘 모르겠음… > pip uninstall scapy > pip install scapy==2.4.0 -
[scapy] pcap 파일안에 UDP packet은 몇개있을까?
[scapy] pcap 파일안에 UDP packet은 몇개있을까?
2019.01.24.pcap 파일안에 UDP 패킷이 몇개 있는지 어떻게 알 수 있을까? 다음 예제 파일은 test.pcapng 파일을 읽어서 Ethernet/IP/ICMP/TCP/UDP packet이 각각 몇개씩 있는지 확인하고 출력해준다. 핵심인 haslayer() 함수는 각각의 패킷에 어떤 protocol layer가 있는지 확인해준다. Return은 boolean으로 True/False로 확인하면 된다. # Imports import scapy.all as sc pkts = sc.rdpcap('test.pcapng') print('Total packets :', len(pkts)) # init counts count_ether = 0 count_ip = 0 count_icmp = 0 count_tcp = 0 coun…
댓글을 사용할 수 없습니다.