(Update 20201130):
Looks like the PPA is active again with at least 3.2.x (it was inactive and still running 2.x at the time I wrote this):
https://launchpad.net/~wireshark-dev/+archive/ubuntu/stable
I recommend using PPA versus compiling from source, unless you need to compile from source…or like to do it the hard way. 😛
(Updated 2020101 with new dependencies needed)
In my previous post, I gave instructions on how to build and install Wireshark 3.0.1 for Ubuntu 18.04, which did the trick at the time, but it was a little hasty and had a few bugs that I didn’t know how to resolve at the time. Come Monday morning at Sharkfest 2019, during a TLS training session with @SYNbit, I had a problem with decrypting packets (I couldn’t add RSA keys). I found out that in my compiling of Wireshark, I didn’t include the GNUTLS package — and actually, it turns out there’s a lot I didn’t include that would actually solve the bugs I mentioned in the previous post. You can see all I didn’t include in the compiling here:
So in other words, I didn’t compile this correctly, and even shared how to do it incorrectly. Not going to say I was wrong, but perhaps you could say it was half-baked.
Well, I’m hoping to correct the record here.
Wireshark and Ubuntu 18.04+
If you’re doing packet analysis and run Debian/Ubuntu, you may have noticed that Wireshark is currently at version 3.0.2 (at the time of writing this), but both Debian and Ubuntu are running 2.6.x versions of Wireshark (Debian Stretch is at 2.6.7-1, and Ubuntu 18.04 is at 2.6.8-1). While Fedora 30 is running Wireshark 3.0.1, even Ubuntu 19.10 (Eoan) is still running Wireshark 2.6.9-1 (again at the time of writing this).
Now for probably really good reasons, there still isn’t a Wireshark 3.0.2 deb package for Debian-Ubuntu distributions, and if you just so happen to be at Sharkfest 2019 running some flavor of Debian/Ubuntu and you’re taking the packet analysis classes, you needed to be running Wireshark 3.0.2. Of course, you could just fire up a VM on your laptop and run Windows, or grab that random spare Mac in your bag — why you have a spare Mac in your bag is beyond me — but your only option is to compile from source the Wireshark package.
Background On Compiling and Installing Wireshark 3.0.2 for Ubuntu Desktop 18.04
The first thing to note here is that the previous post focused on 3.0.1, but that wasn’t the most recent Wireshark source, so for this we’re updating to 3.0.2.
Next, when compiling applications from source, usually the approach is to extract the tarball, then run ‘configure, make, make install’ and you’re done. However, Wireshark actually has info on how to build this within the tarball in a file called “INSTALL” (I know, I pretty much can hear “RTFM” as I type this). Starting at about line 191, the file says:
11/b. If you ‘re running a system that supports APT (Debian/Ubuntu/etc.)
rundpkg-buildpackage -us -uc -rfakeroot
in the source directory right after extracting of checking out
Wireshark’s source code. (You don’t have to run configure/make/etc.
prior to running dpkg-buildpackage)
Ok, great, but if you run the command above, you’ll likely find that you have a few dependencies that you’re missing. The instructions below should help clear this all up.
Compiling and Installing Wireshark 3.0.2 for Ubuntu Desktop 18.04
Disclaimer: like I noted in my previous post, Wireshark is a complicated application, and I am not a developer, so my instructions could have some flaws (they certainly have improved). My main intent here is to just share the dependencies needed to get Wireshark 3.0.2 compiled because otherwise you’re going to be running the dpkg-buildpackage command, get the dependency error messages, Google the dependency package for Ubuntu, install it, then find the next one over and over again — if only someone just posted the dependencies!
Install the Dependencies
First off, let’s install all the dependencies needed (there’s a lot):
sudo apt install build-essential gnutls-bin qtbase5-dev qtbase5-dev-tools qttools5-dev qttools5-dev-tools qtmultimedia5-dev libqt5svg5-dev libpcap0.8-dev flex zlib1g-dev debhelper po-debconf libtool python3-ply libc-ares-dev xsltproc dh-python docbook-xsl docbook-xml libxml2-utils libpcre3-dev libcap-dev bison quilt libparse-yapp-perl libgnutls28-dev libgcrypt20-dev libkrb5-dev liblua5.2-dev libsmi2-dev libmaxminddb-dev libsystemd-dev libnl-genl-3-dev libnl-route-3-dev asciidoctor cmake libsbc-dev libnghttp2-dev libssh-gcrypt-dev liblz4-dev libsnappy-dev libspandsp-dev libxml2-dev cdbs dh-translations intltool jq libfile-which-perl libjq1 libonig4 libpython-stdlib libsnacc-dev libsnacc0c2 omniidl python python-minimal python2.7 python2.7-minimal python3-scour scour snacc snacc-doc libzstd-dev libbrotli-dev libspeexdsp-dev
(Update 20200101: I’ve updated the dependencies to include the following that were missing before: libzstd-dev libbrotli-dev libspeexdsp-dev
.
Grab the Source Tarball and Set Up the Build Environment
After doing this a few times, I learned that it’s easier to set up a build directory because when you run the dpkg-buildpackage command, it’s going to build .deb files in the parent directory of the extracted tarball directory (see later). Let’s create the build directory, grab the source tarball, and extract it:
mkdir wireshark_build wget https://2.na.dl.wireshark.org/src/wireshark-3.0.2.tar.xz tar xf wireshark-3.0.2.tar.xz cd wireshark-3.0.2
Build Wireshark 3.0.2
Assuming everything above went off without a hitch, we should be able to build Wireshark now. Within the ‘wireshark-3.0.2’ directory, run the following command:
dpkg-buildpackage -us -uc -rfakeroot
‘dpkg-buildpackage’ is a program that builds packages for installation; the command won’t install Wireshark (that comes next), but it does build the .deb files for installation. The process can take anywhere from 10-30 minutes (maybe more) depending on your system. Once the process is done, in the parent directory (‘wireshark_build’), you should see the following deb files:
libwireshark12_3.0.2_amd64.deb libwireshark-data_3.0.2_all.deb libwireshark-dev_3.0.2_amd64.deb libwiretap9_3.0.2_amd64.deb libwiretap-dev_3.0.2_amd64.deb libwscodecs2_3.0.2_amd64.deb libwsutil10_3.0.2_amd64.deb libwsutil-dev_3.0.2_amd64.deb tshark_3.0.2_amd64.deb wireshark_3.0.2_amd64.deb wireshark-common_3.0.2_amd64.deb wireshark-dbg_3.0.2_amd64.deb wireshark-dev_3.0.2_amd64.deb wireshark-doc_3.0.2_all.deb wireshark-qt_3.0.2_amd64.deb
Now we can install the packages.
Install Wireshark
To the install the packages above, within ‘wireshark_build’, run the following command:
sudo dpkg -i *.deb
You’ll likely get a prompt during the install about dumpcap and running as root. Basically, it’s best practice to not run Wireshark as root but to instead create a group that has permissions to capture packets. During the .deb installation, the installer will create the group ‘wireshark’, so enter ‘Yes’ at the prompt to create the group, then add your user account to the group with the following command:
sudo usermod -a -G wireshark <your_username>
If during the install you have dependency errors, usually that can be resolve by running an apt install fix that will install the dependencies and finish the Wireshark install:
sudo apt install -f
Assuming everything went well, Wireshark should be installed and you should get the following under Help > About Wireshark:
BCG729 Package Missing
One thing to note is that there is one package that is missing from these instructions: BCG729. BCG729 is a an open-source encoder/decoder for the G729 codec, and if you wish to have that, you’ll need to build and compile that before you build and compile the Wireshark .deb files. More info on that here.
That should be it! Happy packet analyzing!