2017-10-24 3 views
1

파이썬 (v2.7)에서 scapy (v2.3.3)에 PTPv2 Layer를 추가하고 싶습니다. 필자는 PTP 항목이있는 ptpv2 클래스를 /scapy/layers/inet.py 파일에 추가했습니다 (PTP는 계층 4에 있기 때문에). 필자는 ptpv2 계층을 상위 계층에 바인딩했습니다. scapy 명령 입력scapy에 PTPv2 레이어 추가

bind_layers(Ethernet,ptpv2) 

"LS는()"생성 ptpv2 층은 보통, 성공을 나열한다. 하지만 파이썬 명령을 통해 레이어에 액세스하여

for packet in PcapReader('/media/sf_SharedFolder/test.pcap'): 
    if packet[ptpv2].sequenceId == anything: 
    # do sth 

다음과 같은 오류가 발생합니다

File "/usr/lib/python2.7/dist-packages/scapy/packet.py", line 817, in __getitem__ 
    raise IndexError("Layer [%s] not found" % lname) 
IndexError: Layer [ptpv2] not found 

와이어 샤크 파일은 레이어의 프레임을 가지고 -> 이더넷 -> PTP, 나의 바인딩 명령은 바로이어야한다 .

어디서 오류인지 알 수 없습니다.

Pls, 도와주세요!

들으

크리스

답변

1
귀하의 해부학자는 아마 실패

하지만 Scapy는 것을 숨기고 Raw()로 레이어를 디코딩. 당신이 할 수있는

:

  • 확인하는 것이 packet.payloadRaw 인스턴스 인 것을 확인하여.
  • conf.debug_dissector = True을 설정하여 해부학 검사에서 충돌을 찾으십시오.
+0

"conf.debug_dissector = True"를 추가했습니다. 다음 오류가 발생합니다. 파일 "/usr/lib/python2.7/dist-packages/scapy/fields.py", getfield 의 75 행, return s [self.sz :], self.m2i (pkt, struct. struct.error : unpack에는 길이가 2 인 문자열 인수가 필요합니다. – crappidy

+0

"conf.debug_dissector = True"를 통해서만 오류 정보가 더 이상 표시되지 않습니다. 오류가 여전히 존재합니다. 내 질문을 다른 주제로 편집하지 않았으므로 더 많은 정보를 얻기 위해 질문을 편집했습니다. – crappidy

+0

좋아, 그럼 나는 새로운 질문을한다. – crappidy