RADIUS is a protocol for remote user authentication, authorization and accounting (AAA). Its primary use is for Internet Service Providers, though it may as well be used on any network that needs a centralized authentication and/or accounting service for its workstations.

RADIUS is often used in larger Wi-Fi (wireless) networks for AAA purposes, replacing the simple shared key methods which are uncomfortable if a Wi-Fi network reaches a specific size.

The DIAMETER protocol is the designated successor, but RADIUS is still commonly used today.


RADIUS was originally specified in an RFI by Merit Network in 1991 to control dial-in access to NSFnet. Livingston Enterprises responded to the RFI with a description of a RADIUS server. Merit Network awarded the contract to Livingston Enterprises that delivered their PortMaster series of Network Access Servers and the initial RADIUS server to Merit. RADIUS was later (1997) published as RFC 2058 and RFC 2059 (current versions are RFC 2865 and RFC 2866)

Protocol dependencies

Example traffic

XXX - Add example traffic here (as plain text or Wireshark screenshot).


RADIUS dissector is fully functional.

Preference Settings

Shared Secret

 radius.shared_secret  If not empty it will try to use the string given to decrypt encrypted AVPs (password)

Radius Dictionary

Since version 0.10.12 the Radius dissector will try to load protocol information (Vendors, Attributes and Values) from the dictionary file located in the radius directory of either the user's directory or the defaults directory, and the files included by the dictionary file.

#  The format of the dictionary (and the default dictionary)
#  is a subset of of FreeRADIUS'.
#  Valid data types for attributes are:
#       string  - 0-253 octets
#       ipaddr  - 4 octets in network byte order
#       integer - 32 bit value in big endian order (high byte first)
#             (wireshark uses this type for non-standard 1-2-3 and 8 byte integers as well)
#       date    - 32 bit value in big endian order - seconds since
#                                       00:00:00 GMT,  Jan.  1,  1970
#       ifid    - 8 octets in network byte order
#       ipv6addr   - 16 octets in network byte order
#       ipv6prefix - 18 octets in network byte order
#       octets  - raw octets, printed as hex strings

# include another dictionary file from this directory
$INCLUDE dictionary.juniper

VENDOR  Cosine  3085
VENDOR  Cisco   9

ATTRIBUTE  Cosine-Connection-Profile-Name       1 string
ATTRIBUTE  Cosine-VPI-VCI                 5 octets
ATTRIBUTE  Cosine-DLCI                    6 integer

# standard avps
ATTRIBUTE  User-Name            1 string

# encrypted avps 
ATTRIBUTE  Password             2 string encrypt=1

# avps with tag 
ATTRIBUTE  Tunnel-Type          64 integer has_tag
ATTRIBUTE  Tunnel-Password      69 string has_tag,encrypt=2

# single vendor avps 
ATTRIBUTE Cisco-Disconnect-Cause 195 integer Cisco

# Values are declared
VALUE  Tunnel-Type  PPTP     1
VALUE  Tunnel-Type  L2F      2
VALUE  Tunnel-Type  L2TP     3
VALUE  Tunnel-Type  ATMP     4
VALUE  Tunnel-Type  VTP      5
VALUE  Tunnel-Type  AH       6
VALUE  Tunnel-Type  IP       7
VALUE  Tunnel-Type  MIN-IP   8
VALUE  Tunnel-Type  ESP      9
VALUE  Tunnel-Type  GRE      10
VALUE  Tunnel-Type  DVS      11
VALUE  Tunnel-Type  IP-in-IP 12
VALUE  Tunnel-Type  VLAN     13

Example capture file

XXX - Add a simple example capture file. Keep it short, it's also a good idea to gzip it to make it even smaller, as Wireshark can open gzipped files automatically.

Display Filter

A complete list of RADIUS display filter fields can be found in the display filter reference

Show only the RADIUS traffic:


Show only RADIUS Access-Request messages:

 radius.code == 1 

Show only RADIUS Access-Accept messages:

 radius.code == 2 

Show only RADIUS Access-Reject messages:

 radius.code == 3 

Show only RADIUS Accounting-Request[start] messages:

 radius.Acct_Status_Type == 1 

Show only RADIUS Accounting-Request[stop] messages:

 radius.Acct_Status_Type == 2 

Show only RADIUS response messages that take longer than two seconds from the request:

 radius.time >= 2 

Show only RADIUS Access-Reject messages that come with an Reply-Message attribute containing "password":

 radius.code == 3 and radius.Reply_Message contains "password" 

Capture Filter

You cannot directly filter RADIUS protocols while capturing. However, if the RADIUS traffic is using one or more of the standard UDP ports (see above), you can filter on that port or ports.

Capture RADIUS authentication and configuration traffic over the assigned port (1812):

 udp port 1812 

Capture RADIUS accounting traffic over the assigned port (1813):

 udp port 1813 

Capture RADIUS authentication and configuration traffic, and RADIUS accounting traffic, over the assigned ports):

 udp port 1812 or udp port 1813 

External links

RADIUS servers

See RadiusServers for information about various RADIUS server distributions.


Imported from https://wiki.wireshark.org/Radius on 2020-08-11 23:23:47 UTC