当前位置:   article > 正文

python利用pyshark模块抓包并提取字段之探测局域网各个设备的信息_pyshark.filecapture

pyshark.filecapture

环境:python3.5,pycharm,wireshark
利用pyshark读取报文中的相应字段主要是要知道Capture对象各个属性个方法都着哪些信息,然后再一层一层读取出来。
其中apply_on_packets() 方法是另一种遍历数据包的方式,它接受一个函数作为参数并将之作用于所有的数据包。

离线版本:分析已有的pcap文件:

import pyshark

cap = pyshark.FileCapture(input_file="D:\\test2.pcap",display_filter="browser")
#capture.sniff(timeout=10)
count = []
def counter(*args):
    count.append(args[0])
   # print(args[0].ip.src)
    #print(args[0].browser.__dict__['_all_fields'],type(args[0].browser.__dict__))
    if '_all_fields' in args[0].browser.__dict__:
        if 'browser.server' in args[0].browser.__dict__['_all_fields']:
            if args[0].browser.__dict__['_all_fields']['browser.windows_version']=='Windows 7 or Windows Server 2008 R2':
                win_v = 'Windows 7 or Windows Server 2008 R2'
            else: win_v = 'Windows 10'
            print('ip地址:',args[0].ip.src.ljust(14),';','设备名:',args[0].browser.__dict__['_all_fields']['browser.server'].ljust(20),';','windows版本:',win_v.ljust(35),';',end=" ")
            print('服务种类:',end=" ")
            for key,value in args[0].browser.__dict__['_all_fields'].items():
                if 'browser.server_type' in key:
                    if value=='1':
                        print(key[20:],end=", ")
            print("")
print(dir(cap[0].browser))
print(type(cap[0]))
cap.apply_on_packets(counter, timeout=10000)
print(len(count))
#print(count[1])
# print(len(count))
# print(dir(cap[0]))
# a=cap[0]
# #print(a)
# print(a.ip.__dir__)
# print(a.ip.dst)
# print(dir(a.layers[1]))

# for pkt in cap:
#     print("第%d条:"%i)
#     print(pkt)
#     i=i+1
#     if i>10:
#         break
# print(cap[5].highest_layer)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

在线版本,抓包的同时分析:

import pyshark

# tshark_path = 'D:\\good\\Wireshark\\tshark.exe'
# cap = pyshark.FileCapture(input_file="D:\\test2.pcap",display_filter="browser")
tshark_path = 'D:\\good\\Wireshark\\tshark.exe'
cap = pyshark.LiveCapture(output_file="test_pcap4.pcap",interface="以太网",display_filter="browser",
                              tshark_path=tshark_path)
cap.sniff(timeout=100)
count = []
def counter(*args):
    count.append(args[0])
   # print(args[0].ip.src)
    #print(args[0].browser.__dict__['_all_fields'],type(args[0].browser.__dict__))
    if '_all_fields' in args[0].browser.__dict__:##brower层的信息存在__dict__字典中
        if 'browser.server' in args[0].browser.__dict__['_all_fields']:
            if args[0].browser.__dict__['_all_fields']['browser.windows_version']=='Windows 7 or Windows Server 2008 R2':
                win_v = 'Windows 7 or Windows Server 2008 R2'
            else: win_v = 'Windows 10'
            print('ip地址:',args[0].ip.src.ljust(14),';','设备名:',args[0].browser.__dict__['_all_fields']['browser.server'].ljust(20),';','windows版本:',win_v.ljust(35),';',end=" ")
            print('服务种类:',end=" ")
            for key,value in args[0].browser.__dict__['_all_fields'].items():
                if 'browser.server_type' in key:
                    if value=='1':
                        print(key[20:],end=", ")
            print("")
print(dir(cap[0].browser))
print(type(cap[0]))
cap.apply_on_packets(counter, timeout=10000)
print(len(count))
#print(count[1])
# print(len(count))
# print(dir(cap[0]))
# a=cap[0]
# #print(a)
# print(a.ip.__dir__)
# print(a.ip.dst)
# print(dir(a.layers[1]))

# for pkt in cap:
#     print("第%d条:"%i)
#     print(pkt)
#     i=i+1
#     if i>10:
#         break
# print(cap[5].highest_layer)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/156807?site
推荐阅读
相关标签
  

闽ICP备14008679号