본문 바로가기
파이썬

파이썬 Scapy로 TCP 플래그 얻기

by º기록 2020. 12. 28.
반응형

PCAP 파일을 구문 분석하고 있으며 TCP 플래그 (SYN, ACK, PSH, URG, ...)를 추출해야합니다. 한 번에 모든 플래그를 얻기 위해 packet [ 'TCP']. flags 값을 사용하고 있습니다.

pkts = PcapReader(infile)
for p in pkts:
        F = bin(p['TCP'].flags)
        print F, bin(F), p.summary()
        # manual flags extraction from F

packet [ 'TCP']. flags 값에서 수동으로 추출하지 않고 단일 TCP 플래그를 얻는 방법이 있습니까?

 

해결 방법

 

일반적으로 FLAGS를 처리하는 일반적인 방법은 비트 맵과 비트 연산자를 사용하는 것입니다. Packet 클래스에 플래그를 테스트 할 특정 메서드가없는 경우 IMHO를 수행 할 수있는 가장 좋은 방법은 다음과 같습니다.

FIN = 0x01
SYN = 0x02
RST = 0x04
PSH = 0x08
ACK = 0x10
URG = 0x20
ECE = 0x40
CWR = 0x80

그리고 다음과 같이 테스트하십시오.

F = p['TCP'].flags    # this should give you an integer
if F & FIN:
    # FIN flag activated
if F & SYN:
    # SYN flag activated
# rest of the flags here

슬프게도 파이썬은 이것을 더 우아하게 만들기위한 switch 문을 가지고 있지 않지만 실제로는 그다지 중요하지 않습니다.

도움이 되었기를 바랍니다!

 

참조 페이지 https://stackoverflow.com/questions/20429674

 

 

반응형

댓글