Wireshark实战经验

Wireshark使用技巧
每次我跟精英说:糟了,Fiddler抓不到包,怎么办?

精英总是狠狠地吸了一口烟,再慢慢地吐出来:用Wireshark !!!

我很迷茫:什么是Wireshark ?

精英的脸隐藏在烟雾之后,悠悠的说:神器一样存在的东西。


于是开始接触Wireshark的一些功能,深深的被它的强大所折服,不得不写一篇博客来纪念一下。

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。


目前我们所用的到两个重要的功能是:

第一,过滤数据包,只显示自己感兴趣的数据包进行查看,这样就会非常有利于排除干扰,顺利推图。

目前我所知道的过滤的规则如下:

1.过滤IP,如来源IP或者目标IP等于某个IP


例子:
ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107
或者
ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP

2.过滤端口

例子:
tcp.port eq 80 // 不管端口是来源的还是目标的都显示
tcp.port == 80
tcp.port eq 2722
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80 // 只显tcp协议的目标端口80
tcp.srcport == 80 // 只显tcp协议的来源端口80

udp.port eq 15000

过滤端口范围
tcp.port >= 1 and tcp.port <= 80

5.包长度过滤

例子:
udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
tcp.len >= 7   指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
frame.len == 119 整个数据包长度,从eth开始到最后

eth —> ip or arp —> tcp or udp —> data


7.TCP参数过滤

tcp.flags 显示包含TCP标志的封包。
tcp.flags.syn == 0x02     显示包含TCP SYN标志的封包。
tcp.window_size == 0 && tcp.flags.reset != 1

8.包内容过滤

-----------------------------------------------

tcp[20]表示从20开始,取1个字符
tcp[20:]表示从20开始,取1个字符以上


第二,插件,插件可以让我们在上面做二次开发,尤其是可以显示游戏中的包的名字,这对推图非常的有利

do
	cmds = {}

	
    --[[
    Proto.new(name, desc)
        name: displayed in the column of “Protocol” in the packet list
        desc: displayed as the dissection tree root in the packet details
    --]]
    local Hero = Proto("Hero", "Hero Packet")
 
    --[[
    ProtoField:
        to be used when adding items to the dissection tree
    --]]
    --[[
    (1)BH Packet Header
    --]]
    local f_bh_packlen = ProtoField.uint32("BH.PacketLen", "Length", base.DEC)
    -- rtp over http interleaved channel(1 byte)
	
	local f_bh_cmd = ProtoField.string("BH.Cmd", "CMD", base.DEC)
	
	local f_bh_cmd_string = ProtoField.string("BH.CmdString", "CMD String", base.DEC)
 
    -- define the fields table of this dissector(as a protoField array)
    Hero.fields = {f_bh_packlen, f_bh_cmd, f_bh_cmd_string}
 
    --[[
    Data Section
    --]]
    local data_dis = Dissector.get("data")
	
	
	function string2hex (s) 
		local hex = ""
		for i=1, #s, 1 do 
			hex = hex .. string.format("%x", s:byte(i)) 
		end 
		return hex 
	end 
 
    --[[
    bh Dissector Function
    --]]
    local function bh_dissector(buf, pkt, root)
 
        -- check buffer length
        local buf_len = buf:len()

 

        --[[
        packet list columns
        --]]
        pkt.cols.protocol = "Hero"
        pkt.cols.info = "Hero Packet"
 
        --[[
        dissection tree in packet details
        --]]
        -- tree root
        local t = root:add(Hero, buf(0,buf:len()))
		
		--local header = t:add(f_bh_cmd, buf(0,buf:len()))
        -- child items
        -- bh Header
		local packlen = buf(0,4):uint()

		pkt.cols.info = cmds[buf(4,4):uint()]
		--data:add("content:", string2hex(buf(38, buf:len()-38)))

 
        return true
    end
 
    --[[
    Dissect Process
    --]]
    function Hero.dissector(buf, pkt, root)
        if bh_dissector(buf, pkt, root)
        then
        -- valid bh diagram
        else
            data_dis:call(buf, pkt, root)
        end
    end
 
    --[[
    Specify Protocol Port
    --]]
    local tcp_encap_table = DissectorTable.get("tcp.port")
    tcp_encap_table:add(11324, Hero)
	tcp_encap_table:add(11311, Hero)
end

1. 找到wireshark 安装目录 

2. 打开 init.lua (D:\Program Files\Wireshark\init.lua),用 — 注释disable_lua或者改为disable_lua=false。这样 wireshark 就会支持 Lua 了

-- Set disable_lua to true to disable Lua support.
disable_lua = false

if disable_lua then
    return
end

 

3. 在 init.lua 结尾,添加 dofile(”1.lua”) ,wireshark 在每次启动时会自动载入1.lua



### Wireshark 实战教程:网络协议分析与抓包工具使用指南 #### 什么是WiresharkWireshark是一款功能强大的开源网络协议分析器,能够捕获并显示网络数据包的详细信息。它被广泛应用于网络故障排查、安全审计以及底层通信机制的研究中[^4]。 #### 安装组件概述 在安装过程中可以选择多个组件以满足不同的需求: - **Wireshark**: 主要用于图形界面下的网络流量分析。 - **TShark**: 提供命令行支持,适合脚本化操作和自动化任务。 - **Plugins & Extensions Tools**: 扩展核心功能,增强特定场景的支持能力。 - **Tools**: 额外提供了多种基于命令行的小型实用程序。 - **Documentation**: 包含离线版的帮助文档,便于随时查阅[^3]。 #### Telnet 协议抓包分析实践 为了更好地理解Wireshark的功能,可以通过实际案例来进行练习。例如,在《WireShark实战:Telnet协议抓包分析指南》一文中提到的具体方法可以作为入门参考。该文章不仅介绍了基本的操作流程,还深入探讨了如何解析Telnet协议的数据交互细节[^2]。 以下是简单的步骤说明(注意这里不涉及具体顺序描述): 1. 启动Wireshark后设置过滤条件以便专注于目标会话; 2. 开始捕捉指定接口上的所有活动直至完成所需时间段内的记录工作为止; 3. 结束录制之后筛选感兴趣的事件类型比如TCP三次握手过程等重要环节; 4. 利用内置解码器查看高层应用层消息内容从而进一步挖掘潜在的安全隐患或其他异常情况; ```python import os def start_capture(interface="eth0"): """启动数据包捕获""" command = f"tshark -i {interface} -w output.pcap" os.system(command) if __name__ == "__main__": interface_name = input("请输入网卡名称:") start_capture(interface=interface_name) ``` 上述Python脚本展示了如何调用`TShark`实现自动化的数据收集作业。通过调整参数即可灵活应对各种复杂环境下的定制化需求。 #### 总结 掌握Wireshark不仅可以提高日常运维效率还能加深对计算机科学原理的认识水平。无论是初学者还是资深工程师都能从中受益匪浅。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值