Find the failure point
I can separate DNS failure, TCP failure, TLS failure, HTTP failure, firewall behavior, retransmissions, resets, and application problems.
Basic Wireshark teaches me how to capture packets and use simple filters. Advanced Wireshark is where I start asking better questions: what failed, who talked to who, which service responded, how long it took, and what the packet evidence actually proves.
This is the version I would use for deeper troubleshooting, CTF packet captures, honeynet review, server debugging, home lab analysis, and private wireless lab captures from a Raspberry Pi and Alfa adapter.
A beginner capture answers “what packets do I see?” An advanced capture answers “what happened, why did it happen, and what evidence supports that conclusion?”
I can separate DNS failure, TCP failure, TLS failure, HTTP failure, firewall behavior, retransmissions, resets, and application problems.
In CTFs, honeynet logs, and security labs, a PCAP is a record of what happened. I can use Wireshark to build a timeline instead of guessing.
With my own private lab and an Alfa adapter, I can study beacons, probes, channels, management frames, and encrypted traffic metadata safely.
When a capture gets large, I do not start by clicking random packets. I start with structure: endpoints, conversations, protocols, timing, and then packet details.
Am I investigating DNS, TCP, TLS, HTTP, DHCP, ARP, latency, failed login, or suspicious traffic?
I check endpoints, conversations, protocol hierarchy, and I/O graphs before drilling down.
I use display filters to isolate one host, port, stream, protocol, or time window.
I document the packet numbers, timestamps, hosts, ports, and explanation.
The statistics menus are underrated. They give me the map before I inspect individual packets.
| Wireshark view | What I use it for | Why it matters |
|---|---|---|
| Protocol Hierarchy | See which protocols appear in the capture. | Quickly separates DNS, TCP, TLS, HTTP, DHCP, ARP, ICMP, and other traffic. |
| Endpoints | List the IPs, MACs, and hosts involved. | Helps identify the main devices before looking at packet details. |
| Conversations | See which hosts talked to each other. | Useful for finding the main client-server relationships. |
| I/O Graphs | Visualize traffic over time. | Helpful for bursts, scans, failures, retries, and timing patterns. |
| Resolved Addresses | View resolved names from DNS and name resolution. | Helps connect IPs to domains and hostnames. |
Display filters are how I turn a huge capture into a focused investigation.
Show traffic to or from one device.
ip.addr == 192.168.1.50
Show traffic between two specific hosts.
ip.addr == 192.168.1.50 && ip.addr == 192.168.1.1
After I right-click a packet and find the stream number, I can isolate it.
tcp.stream == 3
Useful when a site or service name does not resolve.
dns.flags.rcode != 0
Useful for packet loss, congestion, or unreliable connections.
tcp.analysis.retransmission
Useful when connections are being forcefully closed.
tcp.flags.reset == 1
Useful for seeing encrypted connection setup.
tls.handshake
Useful for plain HTTP labs and intentionally unencrypted test traffic.
http.request
Useful for watching connection attempts and scans in my lab.
tcp.flags.syn == 1 && tcp.flags.ack == 0
Useful when Wireshark flags slow or duplicate acknowledgments.
tcp.analysis.ack_rtt
tcp.analysis.duplicate_ack
One of the most useful Wireshark features is “Follow TCP Stream.” It rebuilds a conversation so I can understand the exchange without reading every packet one at a time.
Individual packets are fragments. A stream shows the full exchange. This is useful for HTTP labs, CTFs, protocol debugging, and understanding client-server behavior.
TCP is where Wireshark becomes extremely useful. A connection problem usually leaves clues.
| What I see | Possible meaning | Useful filter |
|---|---|---|
| SYN with no SYN-ACK | The server may be down, filtered, blocked, or unreachable. | tcp.flags.syn == 1 |
| RST packet | A host forcefully closed or refused the connection. | tcp.flags.reset == 1 |
| Retransmissions | Packet loss, congestion, bad Wi-Fi, or path instability. | tcp.analysis.retransmission |
| Duplicate ACKs | The receiver may be missing data and asking for recovery. | tcp.analysis.duplicate_ack |
| Long handshake time | Latency, routing path, remote server delay, or network congestion. | tcp.analysis.ack_rtt |
DNS is one of the first things I check when a service “does not work.” Sometimes the network is fine, but name resolution is broken.
# Generate a lookup
dig launchshell.org
dig example.com
# Wireshark filters
dns
dns.qry.name contains "launchshell"
dns.flags.rcode != 0
ip.addr == 1.1.1.1
ip.addr == 8.8.8.8
I check the DNS query name and confirm the client asked for the name I expected.
I check whether the answer came from my router, Pi-hole, Cloudflare, Google, or another resolver.
I look for NXDOMAIN, SERVFAIL, refused responses, or no response at all.
I compare the returned address with what I expected.
HTTPS encrypts the content, but Wireshark can still show useful metadata. This is good for troubleshooting, but it is also a reminder that encrypted traffic still has visible patterns.
# Useful TLS filters
tls
tls.handshake
tcp.port == 443
ip.addr == 192.168.1.50 && tcp.port == 443
For CTFs and honeynet analysis, I usually start with the same questions every time.
Use endpoints and conversations to identify clients, servers, and noisy systems.
Check protocol hierarchy before assuming the capture is about one service.
Look for errors, scans, unusual ports, repeated attempts, cleartext traffic, or bursts.
Use packet timestamps and streams to explain the order of events.
# Useful filters for PCAP review
tcp.flags.syn == 1 && tcp.flags.ack == 0
tcp.flags.reset == 1
dns
http
ftp
smb || nbss
icmp
frame contains "password"
With a Raspberry Pi and Alfa Wi-Fi adapter, I can capture wireless frames in my own lab and analyze the PCAP files later in Wireshark. This is for learning and troubleshooting, not for spying on other people.
Wireshark is great visually, but tshark is better for quick summaries, scripts,
servers, and repeatable analysis.
# Basic pcap summary
tshark -r capture.pcap
# Show protocol hierarchy
tshark -r capture.pcap -q -z io,phs
# Show TCP conversations
tshark -r capture.pcap -q -z conv,tcp
# Show IP endpoints
tshark -r capture.pcap -q -z endpoints,ip
# Filter DNS packets
tshark -r capture.pcap -Y dns
# Filter one host
tshark -r capture.pcap -Y "ip.addr == 192.168.1.50"
This is the short version I would keep nearby when analyzing a real capture.
# Core display filters
ip.addr == 192.168.1.50
ip.src == 192.168.1.50
ip.dst == 192.168.1.50
tcp.port == 22
tcp.port == 80
tcp.port == 443
udp.port == 53
# TCP analysis
tcp.stream == 3
tcp.flags.syn == 1 && tcp.flags.ack == 0
tcp.flags.reset == 1
tcp.analysis.retransmission
tcp.analysis.duplicate_ack
tcp.analysis.ack_rtt
# DNS analysis
dns
dns.flags.rcode != 0
dns.qry.name contains "example"
# Web and TLS
http
http.request
http.response
tls
tls.handshake
# Local network protocols
arp
dhcp
icmp
# Command-line summaries
tshark -r capture.pcap -q -z io,phs
tshark -r capture.pcap -q -z conv,tcp
tshark -r capture.pcap -q -z endpoints,ip
Advanced Wireshark is about evidence, not guessing. I use it to find the hosts, isolate the conversation, inspect the packets, explain the failure, and document what actually happened. It turns networking from something invisible into something I can prove with packet-level detail.