Coverage Report

Created: 2026-06-30 07:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-kadm5.c
Line
Count
Source
1
/* packet-kadm5.c
2
 * Routines for kadm5 dissection
3
 *
4
 * Wireshark - Network traffic analyzer
5
 * By Gerald Combs <gerald@wireshark.org>
6
 * Copyright 1998 Gerald Combs
7
 *
8
 * SPDX-License-Identifier: GPL-2.0-or-later
9
 */
10
11
/*
12
 * The kadm5 RPC protocol is used to administer Kerberos principals
13
 * and policies.  It is not officially documented anywhere.  The
14
 * information for this dissector came from the MIT kadmin source.
15
 */
16
17
#include "config.h"
18
19
#include "packet-rpc.h"
20
21
void proto_register_kadm5(void);
22
void proto_reg_handoff_kadm5(void);
23
24
14
#define KADM5_PROGRAM     2112
25
#define KADM5PROC_NULL       0
26
#define KADM5PROC_CREATE_PRINCIPAL   1
27
#define KADM5PROC_DELETE_PRINCIPAL   2
28
#define KADM5PROC_MODIFY_PRINCIPAL   3
29
#define KADM5PROC_RENAME_PRINCIPAL   4
30
#define KADM5PROC_GET_PRINCIPAL    5
31
#define KADM5PROC_CHPASS_PRINCIPAL   6
32
#define KADM5PROC_CHRAND_PRINCIPAL   7
33
#define KADM5PROC_CREATE_POLICY    8
34
#define KADM5PROC_DELETE_POLICY    9
35
#define KADM5PROC_MODIFY_POLICY   10
36
#define KADM5PROC_GET_POLICY    11
37
#define KADM5PROC_GET_PRIVS   12
38
#define KADM5PROC_INIT      13
39
#define KADM5PROC_GET_PRINCS    14
40
#define KADM5PROC_GET_POLS    15
41
#define KADM5PROC_SETKEY_PRINCIPAL  16
42
#define KADM5PROC_SETV4KEY_PRINCIPAL  17
43
#define KADM5PROC_CREATE_PRINCIPAL3 18
44
#define KADM5PROC_CHPASS_PRINCIPAL3 19
45
#define KADM5PROC_CHRAND_PRINCIPAL3 20
46
#define KADM5PROC_SETKEY_PRINCIPAL3 21
47
48
static int proto_kadm5;
49
static int hf_kadm5_procedure_v2;
50
static int ett_kadm5;
51
52
/* proc number, "proc name", dissect_request, dissect_reply */
53
static const vsff kadm5_v2_proc[] = {
54
  { KADM5PROC_NULL,   "NULL",     dissect_rpc_void, dissect_rpc_void },
55
  { KADM5PROC_CREATE_PRINCIPAL, "CREATE_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
56
  { KADM5PROC_DELETE_PRINCIPAL, "DELETE_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
57
  { KADM5PROC_MODIFY_PRINCIPAL, "MODIFY_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
58
  { KADM5PROC_RENAME_PRINCIPAL, "RENAME_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
59
  { KADM5PROC_GET_PRINCIPAL,  "GET_PRINCIPAL",  dissect_rpc_unknown,  dissect_rpc_unknown },
60
  { KADM5PROC_CHPASS_PRINCIPAL, "CHPASS_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
61
  { KADM5PROC_CHRAND_PRINCIPAL, "CHRAND_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
62
  { KADM5PROC_CREATE_POLICY,  "CREATE_POLICY",  dissect_rpc_unknown,  dissect_rpc_unknown },
63
  { KADM5PROC_DELETE_POLICY,  "DELETE_POLICY",  dissect_rpc_unknown,  dissect_rpc_unknown },
64
  { KADM5PROC_MODIFY_POLICY,  "MODIFY_POLICY",  dissect_rpc_unknown,  dissect_rpc_unknown },
65
  { KADM5PROC_GET_POLICY,   "GET_POLICY",   dissect_rpc_unknown,  dissect_rpc_unknown },
66
  { KADM5PROC_GET_PRIVS,    "GET_PRIVS",    dissect_rpc_unknown,  dissect_rpc_unknown },
67
  { KADM5PROC_INIT,   "INIT",     dissect_rpc_unknown,  dissect_rpc_unknown },
68
  { KADM5PROC_GET_PRINCS,   "GET_PRINCS",   dissect_rpc_unknown,  dissect_rpc_unknown },
69
  { KADM5PROC_GET_POLS,   "GET_POLS",   dissect_rpc_unknown,  dissect_rpc_unknown },
70
  { KADM5PROC_SETKEY_PRINCIPAL, "SETKEY_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
71
  { KADM5PROC_SETV4KEY_PRINCIPAL, "SETV4KEY_PRINCIPAL", dissect_rpc_unknown,  dissect_rpc_unknown },
72
  { KADM5PROC_CREATE_PRINCIPAL3,  "CREATE_PRINCIPAL3",  dissect_rpc_unknown,  dissect_rpc_unknown },
73
  { KADM5PROC_CHPASS_PRINCIPAL3,  "CHPASS_PRINCIPAL3",  dissect_rpc_unknown,  dissect_rpc_unknown },
74
  { KADM5PROC_CHRAND_PRINCIPAL3,  "CHRAND_PRINCIPAL3",  dissect_rpc_unknown,  dissect_rpc_unknown },
75
  { KADM5PROC_SETKEY_PRINCIPAL3,  "SETKEY_PRINCIPAL3",  dissect_rpc_unknown,  dissect_rpc_unknown },
76
  { 0,         NULL,      NULL, NULL }
77
};
78
79
static const value_string kadm5_v2_proc_vals[] = {
80
  { KADM5PROC_NULL,   "NULL" },
81
  { KADM5PROC_CREATE_PRINCIPAL, "CREATE_PRINCIPAL" },
82
  { KADM5PROC_DELETE_PRINCIPAL, "DELETE_PRINCIPAL" },
83
  { KADM5PROC_MODIFY_PRINCIPAL, "MODIFY_PRINCIPAL" },
84
  { KADM5PROC_RENAME_PRINCIPAL, "RENAME_PRINCIPAL" },
85
  { KADM5PROC_GET_PRINCIPAL,  "GET_PRINCIPAL" },
86
  { KADM5PROC_CHPASS_PRINCIPAL, "CHPASS_PRINCIPAL" },
87
  { KADM5PROC_CHRAND_PRINCIPAL, "CHRAND_PRINCIPAL" },
88
  { KADM5PROC_CREATE_POLICY,  "CREATE_POLICY" },
89
  { KADM5PROC_DELETE_POLICY,  "DELETE_POLICY" },
90
  { KADM5PROC_MODIFY_POLICY,  "MODIFY_POLICY" },
91
  { KADM5PROC_GET_POLICY,   "GET_POLICY" },
92
  { KADM5PROC_GET_PRIVS,    "GET_PRIVS" },
93
  { KADM5PROC_INIT,   "INIT" },
94
  { KADM5PROC_GET_PRINCS,   "GET_PRINCS" },
95
  { KADM5PROC_GET_POLS,   "GET_POLS" },
96
  { KADM5PROC_SETKEY_PRINCIPAL, "SETKEY_PRINCIPAL" },
97
  { KADM5PROC_SETV4KEY_PRINCIPAL, "SETV4KEY_PRINCIPAL" },
98
  { KADM5PROC_CREATE_PRINCIPAL3,  "CREATE_PRINCIPAL3" },
99
  { KADM5PROC_CHPASS_PRINCIPAL3,  "CHPASS_PRINCIPAL3" },
100
  { KADM5PROC_CHRAND_PRINCIPAL3,  "CHRAND_PRINCIPAL3" },
101
  { KADM5PROC_SETKEY_PRINCIPAL3,  "SETKEY_PRINCIPAL3" },
102
  { 0,         NULL }
103
};
104
105
static const rpc_prog_vers_info kadm5_vers_info[] = {
106
  { 2, kadm5_v2_proc, &hf_kadm5_procedure_v2 },
107
};
108
109
void
110
proto_register_kadm5(void)
111
14
{
112
14
  static hf_register_info hf[] = {
113
14
    { &hf_kadm5_procedure_v2, {
114
14
        "V2 Procedure", "kadm5.procedure_v2", FT_UINT32, BASE_DEC,
115
14
        VALS(kadm5_v2_proc_vals), 0, NULL, HFILL }},
116
14
  };
117
118
14
  static int *ett[] = {
119
14
    &ett_kadm5,
120
14
  };
121
122
14
  proto_kadm5 = proto_register_protocol("Kerberos Administration",
123
14
      "KADM5", "kadm5");
124
14
  proto_register_field_array(proto_kadm5, hf, array_length(hf));
125
14
  proto_register_subtree_array(ett, array_length(ett));
126
14
}
127
128
void
129
proto_reg_handoff_kadm5(void)
130
14
{
131
  /* Register the protocol as RPC */
132
14
  rpc_init_prog(proto_kadm5, KADM5_PROGRAM, ett_kadm5,
133
      G_N_ELEMENTS(kadm5_vers_info), kadm5_vers_info);
134
14
}
135
136
/*
137
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
138
 *
139
 * Local variables:
140
 * c-basic-offset: 8
141
 * tab-width: 8
142
 * indent-tabs-mode: t
143
 * End:
144
 *
145
 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
146
 * :indentSize=8:tabSize=8:noTabs=false:
147
 */