0
에서 세션 기능에 더 많은 열을 추가하는 방법 내가이 테이블에 열을 추가 할 수있는 방법 scapy에서 함수 pkt.sessioins()을 좋아한다 :scapy
x.sessions()
{'TCP 10.0.2.15:32896 > 173.194.34.159:80': <PacketList: TCP:11 UDP:0 ICMP:0 Other:0>,
감사
에서 세션 기능에 더 많은 열을 추가하는 방법 내가이 테이블에 열을 추가 할 수있는 방법 scapy에서 함수 pkt.sessioins()을 좋아한다 :scapy
x.sessions()
{'TCP 10.0.2.15:32896 > 173.194.34.159:80': <PacketList: TCP:11 UDP:0 ICMP:0 Other:0>,
감사
추가하려면 자신 만의 "세션 추출기"기능을 정의하고 .sessions()
메소드로 전달하는 데 필요한 자세한 정보.
하지만 전체 세션을 읽은 경우에만 알 수 있으므로 전체 세션과 관련된 정보 (총 데이터 크기 등)를 추가 할 수 없습니다. 하지
def sessions(plist, session_extractor=None):
if session_extractor is None:
def session_extractor(p):
sess = "Other"
if 'Ether' in p:
if 'IP' in p:
if 'TCP' in p:
sess = p.sprintf("TCP %IP.src%:%r,TCP.sport% > %IP.dst%:%r,TCP.dport%")
elif 'UDP' in p:
sess = p.sprintf("UDP %IP.src%:%r,UDP.sport% > %IP.dst%:%r,UDP.dport%")
elif 'ICMP' in p:
sess = p.sprintf("ICMP %IP.src% > %IP.dst% type=%r,ICMP.type% code=%r,ICMP.code% id=%ICMP.id%")
else:
sess = p.sprintf("IP %IP.src% > %IP.dst% proto=%IP.proto%")
elif 'ARP' in p:
sess = p.sprintf("ARP %ARP.psrc% > %ARP.pdst%")
else:
sess = p.sprintf("Ethernet type=%04xr,Ether.type%")
return sess
sessions = defaultdict(lambda: [plist.__class__(), 0])
for p in plist.res:
sess = session_extractor(plist._elt2pkt(p))
sessions[sess][0].append(p)
sessions[sess][1] += len(p)
return dict(sessions)
각 값합니다 (키 :
전체 데이터 크기를 추가하는 빠른 방법, 예를 들어, 자신의 sessions()
기능 (원래 PacketList.sessions()
방법에서 적응 만들 것 변경)의 결과는 두 개의 요소 인 list
이고 첫 번째 요소는 PacketList
개체이며 .sessions()
메서드와 마찬가지로 두 번째 요소는 세션의 총 데이터 크기입니다.
각 세션에 대한 더 많은 데이터를 원하십니까? – RyPeck
예, pkts 크기 – user3030637