精华内容
下载资源
问答
  • 1.python的读写操作:在终端运行前需输入 #!/usr/bin/python 辨别python的代码。若想要读某个文件,可以输入其内置函数open()打开相应文件,后面需跟一个'r'来表示读取该文件,读取成功...2.wireshark的使用 (1)

    1.python的读写操作:在终端运行前需输入 #!/usr/bin/python 辨别python的代码。若想要读某个文件,可以输入其内置函数open()打开相应文件,后面需跟一个'r'来表示读取该文件,读取成功后可以输入read()来读取文件中的内容。(文件使用后必须用close()关闭)      若想要写文件,则需把标识符'r'换成'w'。


    2.wireshark的使用 (1) 使用菜单中的File打开文件  (2)在Capture中抓包  (3)在Go中查找已抓取包的详细信息  (4)用Edit对封包进行查找与编辑

    展开全文
  • python,既可以当脚本,也可以用于开发应用,学习python就2个都满足了,python的好处其实很多呀,学起来也简单,新手容易学习 我其实目前也就只会python皮毛,写一点脚本之类的,但是我明显的感知到开发语言的重要...

    最近看了一篇文章其实道理跟很多书都有相同之处,《俭省:释放少的潜能,取得多的成就》这本书,说到检省思维模式的关键,是从已有的资源中发挥出创造性的价值,一个最普遍的方法就是"想法的连接"能把一个遥远的想法跟你手中的东西连接在一起,提供了一个新思路。

    这个时代的专才和通才,专才就是一辈子或者几十年长期做一件事情,日本国家的匠人精神,东西是很好,但是日本国家往往是缺乏创造性精神的,这个时代是需要不断创新的通才,也就是涉猎多个行业,这样才能把遥远的想法连接起来,创造新的思路,拥有解决新的问题能力,这个其实跟巨人的工具中说到的思想类似,都提出了这个时代需要的是跨维度的知识,思想会把这2个不同的思想相连接就能诞生意想不到的效果

    前面啰嗦了那么多,我要讲的就是我们能做什么呢?
    成为通才,才能很好的生存

    从技术方面,我们要涉猎多个行业技术,那么作为网络工程师手中的资源有什么呢?

    Wireshark

    Wireshark是一个开源的网络抓包分析软件

    可能这个是网络工程师需要必会的技能了,如果不会抓包分析,恐怕停留在初级阶段也不足为其。

    1、网络的理论是很难通过视频或者语言来理解的,实践的最好办法就是抓包来看。
    2、网络中存在的复杂问题有时是很难通过表面现象观察到的,这个时候Wireshark能给你一个新的解决思路
    3、Wireshark其实还能起到网络维护作用,通过端口镜像的所有流量就能分析出公司整个网络的健康程度

    Wireshark学习其实不难,难的是没有实践的机会锻炼,还有就是网上很少有相关的视频和资料,我是直接购买的腾讯课堂的录制视频,好像是199吧,视频录制的效果不是很好,是我目前找到最好的了

    我的几点建议:
    1、对于新手来说,熟悉一项技术很重要,前期不带任何目的的了解它,最好的就是看相关的视频
    2、买书,如果你还能坚持下来,就是需要买一本Wireshark相关专业的书了,书中能详细讲解到各种协议分析,记得做好笔记工作
    3、实践机会不多也是导致我们放弃学习的一个因素,这里其实我的做法是实践多练习分析正常的包是什么样,记录自己的学习加深记忆理解,只要以后分析中出现不正常的包就是自己需要重点观察的,有时我还协助运维抓包分析,有机会就上。

    好的是我想办法要到了腾讯课堂的视频,放到了百度云盘上,有需要的可以下载学习

    链接:https://pan.baidu.com/s/1rhAepvxgil1kkFMIBValkw
    提取码:qdni

    Linux

    学习视频:
    链接:https://pan.baidu.com/s/1eTWH5n9PSaDHUfH56qub2A
    提取码:brbk

    很奇怪吧,为什么做网络还需要学Linux系统,其实学习系统主要是需要Linux系统来支持我们的服务

    zabbix

    zabbix 一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,其实就是监控网络状态

    1、取值,通过SNMP协议连通网络设备取值到硬件信息和软件信息
    2、报警,根据取值来定义触发报警阀值
    3、支持多种报警方式,邮件,钉钉,微信
    4、趋势图展示,能够提供时间维度上的趋势图可供分析
    5、目前开源监控系统有很多,总体下来zabbix综合能力属于前列,页面布局非常适合新手

    zabbix其实知识量还是很庞大的,好处就是官网提供相关的帮助文档(英文),网络上教程文档也非常多,很适合自己研究学习,会有种成就感

    难点就是需要情况zabbix的前后关系,以及网络设备的相关SNMP的配置

    1、SNMP协议的理解,目前各个厂商官网都能下载到取值需要的OID号,有点难找,可以400叫客服要一个文档
    华为和H3C的百度云盘下载:链接:https://pan.baidu.com/s/1lpBSj4MQNr-XGYJ–1LOGQ
    提取码:e4se
    2、取值,通过厂商的oid号对应的取值内容,就能取值了
    3、报警阀值,有些值不是固定的,如果温度,我就经常修改,因为每个公司的环境需求不一样,这个值需要不断优化选择最好的。
    4、网络监控需要关注一个叫依赖关系的操作,这个是要考虑的,不然报警就不会准确,因为网络的通讯是对于多个设备相连的,需要考虑监控的设备是否有上联的依赖关系
    5、报警方式,效果最好的就是钉钉了,微信经常有个问题就是会发生延迟,效果不是很好,而且配置相对麻烦
    6、趋势图,zabbix自带的,但是我们一般是不会用的,因为太丑,而且不能多个取值合并显示,而是选择grafana
    grafana是一个开源图形可视化工具,对接功能很强大,支持zabbix、数据库等等很多,基本满足需求,主要是配置很简单

    ELK日志分析系统

    由3个技术组成Elasticsearch, Logstash, Kibana 是一套实时数据收集,存储,索引,检索,统计分析及可视化的解决方案

    一般情况下我们都是用rsyslog来收集网络设备的日志,其实这样基本满足了日志存储,但是不能体现日志有什么用处,不太可能我实时的看日志,这样其他事还怎么做,但是日志是一个非常重要的信息,对于设备的任何异常都会体现在日志上,那么就一个日志分析系统来帮助管理员,就是ELK

    1、Elasticsearch能实时拿到日志存储后按照Logstash过滤重组方式,把日志信息进行切割存储,通过Kibana WEB页面展示
    2、好处就是过滤重组后的信息,能够通过标签来搜索到想要的日志,比如网络设备信息都级别的日志,这样我每天可以只看重要级别的日志,过滤不重要的,等等都可以通过关键字来搜索到自己想要看的,而不是给一个日志文本然后通过查询来找到想要的
    3、统计功能,ELK能做到各个标签的统计数量,这样很容易看出设备的大致问题情况,也能根据统计功能给到公司一份具体的网络情况报表,比如一年中设备中断过几次,温度是否有异常等等

    ELK的知识量还是很大的,我目前能用到的功能也就这一点,其实还可以做报警,目前还在研究中,惭愧呀。。

    难点:
    其实就是Logstash的过滤表达式,这个需要根据日志的类型自己来定义的,也是有个网站的,可以实施验证自己写的是否对,但是需要翻墙才行
    链接:http://grokdebug.herokuapp.com/,上写日志,下面写过滤表达式

    当然我有现成写好的,有需要可以找我,H3C和华为的。

    oxidized

    目前最好用的网络设备自动备份系统

    备份方式其实很多,比如人肉备份,脚本备份,有一天经理过来就说,你有什么办法备份我们H3C和华为的厂商的配置吗,最好能有个web页面可以看的,还能看到每次备份信息的差异,还能把差异的信息发到我邮箱。。我心里一万个什么。这个需求也太刁难了,我写脚本也没法做到呀,惆怅中我看到了希望“oxidized”

    1、基本支持大部分厂商的自动备份
    2、支持web页面浏览
    3、支持查看备份信息的差异
    4、支持报警,也就是把信息的差异发送出来

    基本功能就这些了,是不是能满足上级的的需求,其实也是符合常理的,上级不会看你写的什么脚本备份,太不直接,我需要看到结果就行,好了,可以涨工资,哈哈哈哈

    总结:其实基于Linux系统搭建服务来协助管理员是很有帮助的,比如LDAP,可以统一管理vpn的管理账号,ntop可以查看每个IP的实时流量,这些其实都是免费的资源,不用公司花钱,才是公司想要的,也是自己能力的一个表现

    以后可以写点服务上的一些配置注意难点,具体的安装可以看csdn上文章就有很多,而且写得都非常的好

    python

    高级编程语言

    奇怪呀,做网络还要学点编程干嘛呢?这样的,公司是个园区,设备有一百台左右,我现在需要针对设备的管理配置还需要一台台人工上去操作一遍吗,当然要脚本呀,对的,自动化运维嘛,那么你怎么选择一个好的脚本语言呢?
    那么我们怎么建立网络自动化系统呢?

    python,既可以当脚本,也可以用于开发应用,学习python就2个都满足了,python的好处其实很多呀,学起来也简单,新手容易学习

    我其实目前也就只会python皮毛,写一点脚本之类的,但是我明显的感知到开发语言的重要性,现在不都是叫开发运维,自动化运维,这些都是需要开发语言上的基础

    我学习基本思路就是上面讲过的,先能接受它,然后再学习它,看视频就是最简单的接受它,要是这个过不去,还是先放一放,过段时间想好了在看,不然后面怎么努力学都是徒劳,我希望能帮助你熟悉python,接受它

    百度云盘0基础python视频(全系列)

    链接:https://pan.baidu.com/s/1ZCwWwSnHAJQkggZFKAqorQ
    提取码:5hko

    IT行业趋势已经往通才方向发展,跟随趋势才能在这个时代生存

    展开全文
  • 今天小编就为大家分享一篇使用PYTHON解析Wireshark的PCAP文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 比如tcp/ip协议的某些关键字段,如果提取出来. 或者某一部分流程提取出来, 应该怎么做? 除了把log转为文本格式,偶别的方法可以分析字节流吗
  • 同事甩给我这个录了40分钟的wireshark的pcapng格式的包, 大概3.6GB, 要分析下UDP丢帧问题, 用wireshark打开不得了, 整整500多万行. 好家伙… 环境配置 Win10, Python3.9.4, 64bit. 安装pcapng的一个包: pip install ...

    背景

    Ubuntu上写程序, UDP发给MCU, 长度51字节, 10ms/帧, MCU如果100ms内收不到, 就报出UDP Lost错误.

    同事甩给我这个录了40分钟的wireshark的pcapng格式的包, 大概3.6GB, 要分析下UDP丢帧问题, 用wireshark打开不得了, 整整500多万行. 好家伙…

    环境配置

    Win10, Python3.9.4, 64bit. 安装pcapng的一个包:

    pip install python-pcapng
    

    参考:

    包处理

    载入包, 打印出相比上一帧的时间差大于100ms(0.1s)的行号:

    import pcapng
    from datetime import datetime
    
    cnt = -2
    old_timestamp = 0
    with open('2021672005_666.pcapng', 'rb') as fp:
        scanner = pcapng.FileScanner(fp)
        for block in scanner:
            cnt += 1
            if (cnt>0):
                if (cnt == 1):
                    old_timestamp = block.timestamp
                if (block.packet_payload_info[0]==93):
                    dt = block.timestamp - old_timestamp
                    if (dt > 0.1):
                        print("line:", cnt, '%.4fs' % dt)
                    old_timestamp = block.timestamp
    

    其中:

    • 包的第一个block为SectionHeader 信息(cpu, os, wireshark version等)

    • 包的第二个block为InterfaceDescription, 主要是接口的信息, 如以太网网卡信息等

    • 包的第三个block以及往后才开始是EnhancedPacket, 也是正常的包信息, 典型的格式如下:

      <EnhancedPacket interface_id=0 timestamp_high=377899 timestamp_low=1033621862 packet_payload_info=(93, 93, b'\x11"3DUfH\xb0-\x13G*\x08\x00E\x00\x00O^e@\x00@\x11NN\xc0\xa8\x06B\xc0\xa8\x06X\xe2\x15\x0f\xa1\x00;\xbc\xd3\xaa\x00\x00\x00\x19\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') options=Options({})>
      
    • packet_payload 为93字节, 除去头部的42字节信息, 对应51字节的数据

    • block里面的时间戳为timestamp_high和timestamp_low, 可以对比下不同格式的时间戳表示, 这里用block.timestamp求时间差, 单位s:

      print(block.timestamp_high, block.timestamp_low, block.timestamp)
      print(datetime.utcfromtimestamp(block.timestamp).strftime("%Y-%m-%d %H:%M:%S:%f"))
      
      377899 1033621862 1623064879.8129659
      2021-06-07 11:21:19:812966
      

    运行结果如下:

    > python3 .\2.py
    line: 231442 0.2080s
    line: 236810 0.1918s
    line: 276706 0.6385s
    line: 283443 1.3004s
    line: 284352 1.3068s
    line: 285149 0.8137s
    line: 288395 0.4814s
    line: 292113 0.6660s
    line: 293014 0.3902s
    line: 295419 0.9919s
    line: 296189 1.0845s
    line: 296845 1.3165s
    line: 297662 1.2829s
    line: 298549 1.3162s
    line: 299379 1.5020s
    ...
    

    wireshark转到最严重的299379行, 发现ssh图形界面占据了大量带宽, 导致UDP包阻塞, 之后一口气发出来100多帧, 如果MCU处理不好, 可能直接就卡死了:

    在这里插入图片描述

    SSH图形界面还是很占用带宽的, 慎用. 很多问题思路需要思考尝试, 如何彻底解决问题呢?

    • 交换/路由的小包优先+带宽均分+简单队列限制?: ROS小包优先+带宽均分+简单队列限制
    • TCP可以优化UDP的这个问题么?
    • Ubuntu和MCU改用SPI/UART通信?
    • 连发时MCU的接收如何处理?
    • Linux的实时补丁是否可用?
    • Linux监测带宽负载率, 做流量的整体规划?
    • 点对点通信和经过交换机的风险评估

    微信公众号

    欢迎扫描二维码关注本人微信公众号, 及时获取最新文章:
    在这里插入图片描述

    展开全文
  • 长话短说,wireshark有一个follow tcp stream功能,这个功能很...这里简单用python实现了一个简单follow tcp stream功能,同时保留了tcp信息。 原理很简单,仍然是基于wireshark,里面有一个Export packet dissect

    长话短说,wireshark有一个follow tcp stream功能,这个功能很方便。美中不足的是提取出的stream 数据没有时间戳等其他信息,在分析数据的延时和丢包问题时就有些力不从心了。这里简单用python实现了一个简单follow tcp stream功能,同时保留了tcp信息。


    原理很简单,仍然是基于wireshark,里面有一个Export packet dissection as XML ‘pdml’ file。 导出来之后的文件内容是这个样子的:

    <proto name="tcp" showname="Transmission Control Protocol, Src Port: 59203 (59203), Dst Port: 80 (80), Seq: 1, Ack: 1, Len: 381" size="20" pos="34">
        <field name="tcp.srcport" showname="Source Port: 59203 (59203)" size="2" pos="34" show="59203" value="e743"/>
        <field name="tcp.dstport" showname="Destination Port: 80 (80)" size="2" pos="36" show="80" value="0050"/>
        <field name="tcp.port" showname="Source or Destination Port: 59203" hide="yes" size="2" pos="34" show="59203" value="e743"/>
        <field name="tcp.port" showname="Source or Destination Port: 80" hide="yes" size="2" pos="36" show="80" value="0050"/>
        <field name="tcp.stream" showname="Stream index: 4" size="0" pos="34" show="4"/>
        <field name="tcp.len" showname="TCP Segment Len: 381" size="1" pos="46" show="381" value="50"/>
        <field name="tcp.seq" showname="Sequence number: 1    (relative sequence number)" size="4" pos="38" show="1" value="3b0ac4bd"/>
        <field name="tcp.nxtseq" showname="Next sequence number: 382    (relative sequence number)" size="0" pos="34" show="382"/>
        <field name="tcp.ack" showname="Acknowledgment number: 1    (relative ack number)" size="4" pos="42" show="1" value="397d7582"/>
        <field name="tcp.hdr_len" showname="Header Length: 20 bytes" size="1" pos="46" show="20" value="50"/>


    看到上面的内容,我想什么都不用说了。用python简单的做个xml文件解析,将数据提取出来就可以了。

    那么剩下的一个问题就是follow tcp stream 这个算法如何实现?本质就是一个tcp数据如何重组的过程,具体可以参考这篇博文TCP数据包重组实现分析

    这里,简单起见,我做了一些约束:

    1.  只能提取A-->B这样的单个方向的数据。如果需要提取B-->A的数据,可以重新过滤一下数据,然后执行一次脚本。
    2. 忽略最开头的syn包和断开连接时的Fin包。
    基于上面两个简化,实际算法可以简化为根据tcp帧中的seq,从小到大排序。简单举个例子:有三个tcp包,按seq排序后如下样子

    (seq=1, nxtseq=5, data='1234') , (seq=4, nxt=6, data='45') , (seq=7,nxt=8, data='7')

    第一个数据包的nxtseq > 第二个数据的seq,说明两个数据包之间有数据重复,事实也是如此,重复了数字‘4’

    第二个数据包的nxtseq < 第三个数据包的seq,说明这两个数据包之间有丢帧。事实也是如此,丢失了数字‘6’

    好了,原理就介绍到这儿。


    剩下稍微介绍一下wireshark过滤规则和这个算法的局限性

    1. 按照ip过滤某个方向的数据,一般可以使先执行wireshark的follow tcp stream功能,一般在filter一栏会有这样一个表达式 tcp.stream eq xxx。在这个表达式的后面可以继续跟上ip过滤的表达式:  tcp.steam eq xxx and ip.src==xxx  and ip.dst==xxx
    2. 按照tcp端口号过滤某个方向的数据。首先同ip过滤,先固定到一条tcp连接上,得到tcp.stream eq xxx。 然后加上端口过滤:tcp.stream eq xxx and tcp.srcport==xxx and tcp.dstport==xxx
    3. 这个工具的局限性,因为是基于python element tree 对xml文件进行解析和数据提取,所以即使是解析100M的pcap文件,首先生成的pdml文件就会暴增到几百兆,然后这几百兆的文件又要被读入内存,(python element tree的特点),总计下来就是生成pdml文件有点慢(几分钟),内存消耗特大,几百兆。


    最后简单贴一些关键代码。完整的脚本可以从这里免费下载 TCPParser -- follow tcp stream by python

    这是从pdml文件的某个proto中提取需要的元素信息。

    def extract_element(self, proto, elem):
            result = dict()
            for key in elem.keys():
                result[key]=""
            
            fieldname   = ""
            attribname  = ""    
            for field in proto.findall("field"):
                fieldname = field.get('name')
                if fieldname in elem:
                    attribname = elem[fieldname]
                    result[fieldname] = field.get(attribname, '')
                    
            return result


    def regularize_stream(self, frame_list):
            '''
                        正则化tcp stream的数据,主要是根据seq,nxtseq补上缺少的segment,以及删除重复的数据
                        不少缺少的segment时,data为空,frame.number='lost'
                        删除重复的数据时,尽可能保留较早之前收到的数据,也就是前一个包的数据
            '''
            self.reporter.title("TCPParser regularize timestamp")
            timer = Timer("regularize_stream_data").start()
            reg_frame_list = []
            expectseq = -1
            first = True
            for frame in frame_list:
                if first:
                    # 第一个数据包
                    first = False
                    expectseq = frame["tcp.nxtseq"]
                    reg_frame_list.append(frame)
                    continue
                
                # 从第二个数据包开始
                seq = frame["tcp.seq"]
                nxtseq = frame["tcp.nxtseq"]
                if seq == expectseq :
                    # 数据刚好,完全连续,不多不少
                    if nxtseq == 0: continue # 表示ack包,无意义
                    expectseq = nxtseq
                    reg_frame_list.append(frame)
                elif seq > expectseq:
                    # 数据有缺失,说明丢包了
                    self.reporter.error("previous tcp segment is lost: " + str(frame[TCPFrame.KEY_FRAMENo]))
    #                newpacket = self.new_lost_packet(frame, str(expectseq), str(seq))
    #                reg_frame_list.append(newpacket)
                    reg_frame_list.append(frame)
                    expectseq = nxtseq
                    
                elif seq < expectseq:
                    # 数据有重叠,数据重传时补传过多数据了
                    self.reporter.warning("tcp segment retransmission: " + str(frame[TCPFrame.KEY_FRAMENo]))
                    if expectseq < nxtseq:
                        # 当前数据包需要舍弃一部分内容
                        # pre_packet[-(expectseq-seq):-1] == frame[0:expectseq-seq]
                        frame["tcp.seq"] = expectseq 
                        frame["data"] = frame["data"][expectseq-nxtseq:]
                        frame["datalen"] = len(frame["data"])
                        expectseq = nxtseq
                        reg_frame_list.append(frame)
                    else:
                        # 当前数据包的内容可以完全舍弃
                        # expectseq 保持不变
                        # pre_packet[-(nxtseq-seq):] = frame[:nextseq-seq]
                        pass
            timer.stop()        
            return reg_frame_list



    展开全文
  • python中调用wireshark lua 脚本,pyshark使用方法,在python中直接利用wireshark提供的报文信息
  • PYTHON首先要安装scapy模块 PY3的安装scapy-python3,使用PIP安装就好了,注意,PY3无法使用pyinstaller打包文件,PY2正常 PY2的安装scapy,比较麻烦 from scapy.all import * pcaps = rdpcap("file.pcap") ...
  • 步骤: 1、将PC变成Wifi热点,手机连接到此热点 2、编写Python抓包/安装WireShark抓包
  • Wireshark是可以解析LTE的空口数据。但是在wireshark的实现中,这些数据都是被封装到UDP报文中。然后根据wireshark的格式文件对LTE的数据加上头信息。头信息的定义参考附件packet-mac-lte.h文件 大致结构如下: ...
  • Python 工具 之 Wireshark 网络抓包工具的下载安装,和简单使用说明 网址:https://www.wireshark.org/download.html 安装 ...
  • 使用tcpdump 和wireshark进行Android(root过后)设备的实时抓包
  • Chapter21 python进阶——wireshark

    千次阅读 2018-06-06 10:45:37
    一、wireshark (1)windows下的ping命令 ping www.baidu.com 可以获取百度的ip地址   (2)TFTP介绍   (3)tftp示例——服务器下载程序 梳理步骤: 配置tftp和网络 此时...
  • Python绝技 运用Python成为顶级黑客 Wireshark数据包分析实战详解 各一本,因为购买的时候手滑点多了.所以基本是新的,自己放着也是无用,想把它给需要的人.负担运费即可. 本人不是大款,只是觉得不要浪费...
  • 用于tshark的Python包装器,允许使用Wireshark Dissector解析python数据包。 扩展文档: : 有很多python数据包解析模块,这是不同的,因为它实际上并不解析任何数据包,它只是使用tshark的(wireshark命令行实用...
  • 本次使用wireshark版本3.0.0 抓包工具的作用:只要程序发出了数据,抓包工具百分之百能抓到(甚至发给自己) 打开软件后如下: 点击上面有波动的一项后显示如下: 比如,如果只想查看使用tcp协议的部分,就在过滤处...
  • 抓包分析,一直都是学习网络协议过程中,理论联系实践的最好方式,而目前最常用的抓包工具就是Wireshark。 随着我们教程的深入,我们也会使用Wireshark来准备测试用的数据包,校验程序的准确性,编写程序之前做人工...
  • 1. 安装wireshark 2. wireshark的使用
  • 欢迎技术交流和帮助,提供IT相关服务,如果有需要,请联系博主QQ: 503587937
  • 主要实现十六进制字符型NAS消息数据,通过python脚本转换为wireshark可以识别的pcap文件格式,使用wireshark打开生成的文件后既可以得到相应信元的配置。 原始数据 转换脚本 class ConvertEngine(object)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,789
精华内容 3,515
关键字:

pythonwireshark

python 订阅