[Share Experiences] Deepin V23 商店中 wireshark 无法直接打开 pcap 文件的解决办法
Tofloor
poster avatar
178******17
deepin
2024-07-31 20:41
Author

问题概述

在 Deepin V23 的应用商店下载了 wireshark, 版本非常新已经到 4.2.0, 但使用的时候发现一些不符合个人习惯的点.

我一般使用 wireshark 有两种场景:

  1. 用来打开别人发过来的 pcap 文件进行查看, 比如某个 http 请求发的对不对.
    • 如果只是打开 pcap 文件是不需要 root 权限的.
    • 通常是双击 pcap 文件直接打开, 有时候也需要在命令行执行 wireshark xxx.pcap
  2. 用来抓取网卡上的报文.
    • 抓取网卡数据包需要 root 权限.
    • 通常从命令行打开 sudo wireshark

从商店下载的 wireshark 也提供了两种打开方式, 普通权限模式和 root 权限模式.

但是双击打开 pcap 文件时会先提示一段话, 告诉用户 wireshark 大部分功能都需要在 root 权限下打开, 点击确定后会提示 pcap 文件找不到, 此时只能再把 pcap 文件拖进 wireshark 来打开.

当我尝试在命令行下执行 wireshark xxx.pcap 时, 提示找不到命令.

如果按照我的使用习惯, 我会有如下改进

  1. 去掉普通用户权限打开 wireshark 时的提示(或者仅第一次提示).
  2. 双击 pcap 文件能够直接使用 wireshark 打开.
  3. 在命令行可以执行 wireshark xxx.pcap 来打开文件.

尝试解决的过程

  1. 找到 wireshark 的安装目录及启动命令
    • 打开开始菜单, 找到 wireshark 的图标点击右键 -> 发送到桌面
    • 到桌面上右键点击 wireshark 图标 -> 打开方式 -> 文本编辑器
    • 可以找到 Exec=/opt/apps/org.wireshark/files/Run.sh %f
    • 其中 Run.sh 是启动脚本, %f 就是传入打开 pcap 文件路径的参数
  2. 查看启动命令
    • 命令行执行 cat /opt/apps/org.wireshark/files/Run.sh 查看 Run.sh 脚本内容.
    • 可以看到前面的 zenity 是在弹提示信息框, 将这几行用 # 号注释就可以去除提示框了
  3. 定位无法打开 pcap 文件的问题
    • 因为 desktop 文件中调用 Run.sh 脚本时是传入了 %f 文件路径的, 所以先看以下传入的路径是啥
    • zenity 提示框就可以用来帮忙调试, 网上搜索得知 Run.sh 脚本中第一个输入参数是 $1, 可以使用 zenity 将其打印出来
    • 最后发现传入的参数是 file:///xxx/yyy/zzz.pcap, 由于多了 file 前缀导致 wireshark 不识别了
  4. 解决路径不识别问题
    • 方法是在 Run.sh 脚本中调用 wireshark 前把多余的前缀去掉, 继续网上搜索发现 ${word/ab/} 可以删除开头的 ab
    • 修改好之后测试发现能正常打开 pcap 文件了
  5. 尝试在命令行下执行 wireshark
    • 执行就报错了, 这个问题能力不够解决不了, 不过好在问题影响不大

最终效果

修改 /opt/apps/org.wireshark/files/Run.sh 文件为如下内容

#!/bin/bash

INPUT=$1
FILE=${INPUT/file:\/\//}

#zenity --info --title="警告!" --text="${FILE}" --width=350 --height=100

exec /opt/apps/org.wireshark/files/bin/wireshark ${FILE}
Reply Favorite View the author
All Replies
f@deepin
deepin
2024-07-31 21:47
#1

感谢分享

Reply View the author
神末shenmo
deepin
Spark-App
2024-08-01 00:42
#2
Reply View the author
waittingsummer
deepin
2024-08-01 13:41
#3

亲测有效 👍

Reply View the author
Ziggy
deepin
2024-08-01 13:43
#4

这个看起来更像是传参的问题,正常%F、%U都可以作为url来被程序处理的

可以加入内测通道更新下看看

Reply View the author
来自其他发行版的小明哥
deepin
2024-08-09 10:44
#5
It has been deleted!
来自其他发行版的小明哥
deepin
2024-08-09 11:27
#6

wow, 我也遇到了这个问题

正想着不知道怎么调试.desktop, 都没对Run.sh起反应

没想到弹警告问题和附带参数都能调试了

而且这个帖子就在一周前发的

感谢大佬 让我加深了对zenity的认识orz👍

Reply View the author
来自其他发行版的小明哥
deepin
2024-08-09 11:34
#7
Ziggy

这个看起来更像是传参的问题,正常%F、%U都可以作为url来被程序处理的

可以加入内测通道更新下看看

是不是wireshark本身没支持url? 我在终端尝试wireshark file:/// 这种方式会报错"file xxx does not exist"

Reply View the author