GSS(3)

πŸ’… GSS β€” the packet.application.gss module

okay bestie, listen up, this is the manual page for GSS(3) from the gss 3.0 manual, and we're gonna get you so comfy with it πŸŽ€


✨ NAME ✨

packet.application.gss β€” it's the GSS module, periodt πŸ’–


🌸 DESCRIPTION 🌸

This thing decodes GSS layers. That's the whole vibe. Decoding. Layers. Slay.

And because receipts matter, here are the RFCs it's living by:

  • RFC 2203 β€” RPCSEC_GSS Protocol Specification
  • RFC 5403 β€” RPCSEC_GSS Version 2
  • RFC 7861 β€” RPCSEC_GSS Version 3
  • RFC 1964 β€” The Kerberos Version 5 GSS-API Mechanism
⚠️ NOTE: Procedure RPCSEC_GSS_BIND_CHANNEL is not supported. Not me catching strays in the spec πŸ’€ it's just not here, bestie, don't come for me.

πŸ‘‘ CLASSES πŸ‘‘

πŸ¦‹ class GSS(baseobj.BaseObj)

GSS Data object. She's the base object, so do not instantiate her β€” she's giving foundation, not main character. 🌈

What she hands you:

# Decode data preceding the RPC payload when flavor is RPCSEC_GSS
x.decode_gss_data()

# Decode data following the RPC payload when flavor is RPCSEC_GSS
x.decode_gss_checksum()

Methods defined here:

  • decode_gss_checksum(self) β€” Decode GSS checksum πŸ”₯
  • decode_gss_data(self) β€” Decode GSS data ✨

🧚 class GSS_API(baseobj.BaseObj)

GSS-API DEFINITIONS ::=

BEGIN

MechType ::= OBJECT IDENTIFIER
-- representing Kerberos V5 mechanism

GSSAPI-Token ::=
-- option indication (delegation, etc.) indicated within
-- mechanism-specific token
[APPLICATION 0] IMPLICIT SEQUENCE {
        thisMech MechType,
        innerToken ANY DEFINED BY thisMech
           -- contents mechanism-specific
           -- ASN.1 structure not required
        }

END

Methods defined here:

  • __bool__(self) β€” Truth value testing for the built-in operation bool() πŸ’…
  • __init__(self, data) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. 🫢

🌟 class GetCfxMIC(baseobj.BaseObj)

struct GSS_GetCfxMIC {
    unsigned char       flags;        /* Attributes field */
    opaque              filler[5];    /* Filler bytes: 0xffffffffff */
    unsigned long long  snd_seq;      /* Sequence number field */
    unsigned char       sgn_cksum[];  /* Checksum of "to-be-signed data" */
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. ✨

πŸ’– class GetMIC(baseobj.BaseObj)

struct GSS_GetMIC {
    unsigned short      sgn_alg;      /* Integrity algorithm indicator */
    opaque              filler[4];    /* Filler bytes: 0xffffffff */
    unsigned long long  snd_seq;      /* Sequence number field */
    opaque              sgn_cksum[8]; /* Checksum of "to-be-signed data" */
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸŽ€

πŸ”₯ class gss_major_status(packet.utils.Enum)

enum gss_major_status β€” that's it, that's the class, no notes πŸ’…


πŸ”₯ class gss_minor_status(packet.utils.Enum)

enum gss_minor_status β€” iconic, brief, unbothered 🌸


πŸ”₯ class gss_sgn_alg(packet.utils.Enum)

enum gss_sgn_alg β€” tiny but mighty ✨


πŸ”₯ class rgss3_assertion_type(packet.utils.Enum)

enum rgss3_assertion_type β€” the type of assertion, we love a label 🏷️


πŸ¦„ class rgss3_assertion_u(baseobj.BaseObj)

union switch rgss3_assertion_u (rgss3_assertion_type atype) {
    case const.LABEL:
        rgss3_label label;
    case const.PRIVS:
        rgss3_privs privs;
    default:
        opaque ext<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸ’œ

πŸ¦„ class rgss3_create_args(baseobj.BaseObj)

struct rgss3_create_args {
    rgss3_gss_mp_auth  auth<1>;
    rgss3_chan_binding mic<1>;
    rgss3_assertion_u  assertions<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. 🌈

πŸ¦„ class rgss3_create_res(baseobj.BaseObj)

struct rgss3_create_res {
    opaque             context<>;
    rgss3_gss_mp_auth  auth<1>;
    rgss3_chan_binding mic<1>;
    rgss3_assertion_u  assertions<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸ“

πŸ¦„ class rgss3_gss_mp_auth(baseobj.BaseObj)

struct rgss3_gss_mp_auth {
    opaque context<>;  /* Inner handle */
    opaque mic<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. 🧚

πŸ¦„ class rgss3_label(baseobj.BaseObj)

struct rgss3_label {
    rgss3_lfs lfs;
    opaque    label<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸŽ€

πŸ¦„ class rgss3_lfs(baseobj.BaseObj)

struct rgss3_lfs {
    unsigned int lfs_id;
    unsigned int pi_id;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. ⭐

πŸ¦„ class rgss3_list_args(baseobj.BaseObj)

struct rgss3_list_args {
    rgss3_list_item items<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸ’–

πŸ¦‹ class rgss3_list_item(rgss3_assertion_type)

enum rgss3_assertion_type β€” yes bestie, she inherits the vibe and keeps the same enum energy πŸ’…


πŸ¦„ class rgss3_list_item_u(baseobj.BaseObj)

union switch rgss3_list_item_u (rgss3_list_item itype) {
    case const.LABEL:
        rgss3_label labels<>;
    case const.PRIVS:
        rgss3_privs privs<>;
    default:
        opaque ext<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. 🌸

πŸ¦„ class rgss3_list_res(baseobj.BaseObj)

struct rgss3_list_res {
    rgss3_list_item_u items<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸ”₯

πŸ¦„ class rgss3_privs(baseobj.BaseObj)

struct rgss3_privs {
    utf8str_cs name;
    opaque     privilege<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸ‘‘

πŸ¦‹ class rgss_checksum(rgss_init_arg)

struct rpc_gss_init_arg {
    opaque token<>;
};

no cap, that's the whole struct 🫢


πŸ¦„ class rgss_data(baseobj.BaseObj)

struct rgss_data {
    unsigned int length;
    unsigned int seq_num;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. ✨

πŸ¦„ class rgss_init_arg(baseobj.BaseObj)

struct rpc_gss_init_arg {
    opaque token<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸ’œ

πŸ¦„ class rgss_init_res(baseobj.BaseObj)

struct rgss_init_res {
    opaque       context<>;
    unsigned int major;
    unsigned int minor;
    unsigned int seq_window;
    opaque       token<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. 🌈

πŸ¦„ class rgss_priv_data(baseobj.BaseObj)

struct rgss_priv_data {
    opaque data<>;
};

Methods defined here:

  • __init__(self, unpack) β€” Constructor. Initialize object's private data according to the arguments given. Arguments can be given as positional, named arguments or a combination of both. πŸ“

🌟 SEE ALSO 🌟

the way these are all linked together, we love a friend group:


πŸ’€ BUGS πŸ’€

No known bugs. we're flawless, we're unproblematic, we simply ate πŸ’…βœ¨


🫢 AUTHOR 🫢

Jorge Mora (mora@netapp.com) β€” thank you king πŸ‘‘


and that's a wrap bestie!! this page came to you from NFStest 3.2, dated 21 March 2023, and it's literally the GSS(3) manual, so go forth and decode those layers fr fr πŸŽ€πŸ’–βœ¨