scapy.contrib.tacacs

TACACS

Based on tacacs+ v6 draft https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06

class scapy.contrib.tacacs.TacacsAccountingReply(_pkt, /, *, server_msg_len=None, data_len=None, status=None, server_msg=b'', data=b'')[source]

Bases: Packet

Tacacs accounting reply body from section 6.2 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-6.2

aliastypes = [<class 'scapy.contrib.tacacs.TacacsAccountingReply'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<FieldLenField (TacacsAccountingReply).server_msg_len>, <FieldLenField (TacacsAccountingReply).data_len>, <ByteEnumField (TacacsAccountingReply).status>, <StrLenField (TacacsAccountingReply).server_msg>, <StrLenField (TacacsAccountingReply).data>]
class scapy.contrib.tacacs.TacacsAccountingRequest(_pkt, /, *, flags=0, authen_method=0, priv_lvl=1, authen_type=1, authen_service=1, user_len=None, port_len=None, rem_addr_len=None, arg_cnt=None, arg_len_list=[], user=b'', port=b'', rem_addr=b'')[source]

Bases: Packet

Tacacs accounting request body from section 6.1 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-6.1

aliastypes = [<class 'scapy.contrib.tacacs.TacacsAccountingRequest'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (TacacsAccountingRequest).flags>, <ByteEnumField (TacacsAccountingRequest).authen_method>, <ByteEnumField (TacacsAccountingRequest).priv_lvl>, <ByteEnumField (TacacsAccountingRequest).authen_type>, <ByteEnumField (TacacsAccountingRequest).authen_service>, <FieldLenField (TacacsAccountingRequest).user_len>, <FieldLenField (TacacsAccountingRequest).port_len>, <FieldLenField (TacacsAccountingRequest).rem_addr_len>, <FieldLenField (TacacsAccountingRequest).arg_cnt>, <FieldListField (TacacsAccountingRequest).arg_len_list>, <StrLenField (TacacsAccountingRequest).user>, <StrLenField (TacacsAccountingRequest).port>, <StrLenField (TacacsAccountingRequest).rem_addr>]
guess_payload_class(pay)[source]
class scapy.contrib.tacacs.TacacsAuthenticationContinue(_pkt, /, *, user_msg_len=None, data_len=None, flags=1, user_msg=b'', data=b'')[source]

Bases: Packet

Tacacs authentication continue body from section 4.3 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-4.3

aliastypes = [<class 'scapy.contrib.tacacs.TacacsAuthenticationContinue'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<FieldLenField (TacacsAuthenticationContinue).user_msg_len>, <FieldLenField (TacacsAuthenticationContinue).data_len>, <ByteEnumField (TacacsAuthenticationContinue).flags>, <StrLenField (TacacsAuthenticationContinue).user_msg>, <StrLenField (TacacsAuthenticationContinue).data>]
class scapy.contrib.tacacs.TacacsAuthenticationReply(_pkt, /, *, status=1, flags=0, server_msg_len=None, data_len=None, server_msg=b'', data=b'')[source]

Bases: Packet

Tacacs authentication reply body from section 4.2 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-4.2

aliastypes = [<class 'scapy.contrib.tacacs.TacacsAuthenticationReply'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (TacacsAuthenticationReply).status>, <ByteEnumField (TacacsAuthenticationReply).flags>, <FieldLenField (TacacsAuthenticationReply).server_msg_len>, <FieldLenField (TacacsAuthenticationReply).data_len>, <StrLenField (TacacsAuthenticationReply).server_msg>, <StrLenField (TacacsAuthenticationReply).data>]
class scapy.contrib.tacacs.TacacsAuthenticationStart(_pkt, /, *, action=1, priv_lvl=1, authen_type=1, authen_service=1, user_len=None, port_len=None, rem_addr_len=None, data_len=None, user=b'', port=b'', rem_addr=b'', data=b'')[source]

Bases: Packet

Tacacs authentication start body from section 4.1 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-4.1

aliastypes = [<class 'scapy.contrib.tacacs.TacacsAuthenticationStart'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (TacacsAuthenticationStart).action>, <ByteEnumField (TacacsAuthenticationStart).priv_lvl>, <ByteEnumField (TacacsAuthenticationStart).authen_type>, <ByteEnumField (TacacsAuthenticationStart).authen_service>, <FieldLenField (TacacsAuthenticationStart).user_len>, <FieldLenField (TacacsAuthenticationStart).port_len>, <FieldLenField (TacacsAuthenticationStart).rem_addr_len>, <FieldLenField (TacacsAuthenticationStart).data_len>, <scapy.fields.ConditionalField object>, <StrLenField (TacacsAuthenticationStart).port>, <StrLenField (TacacsAuthenticationStart).rem_addr>, <StrLenField (TacacsAuthenticationStart).data>]
class scapy.contrib.tacacs.TacacsAuthorizationReply(_pkt, /, *, status=0, arg_cnt=None, server_msg_len=None, data_len=None, arg_len_list=[], server_msg=b'', data=b'')[source]

Bases: Packet

Tacacs authorization reply body from section 5.2 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-5.2

aliastypes = [<class 'scapy.contrib.tacacs.TacacsAuthorizationReply'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (TacacsAuthorizationReply).status>, <FieldLenField (TacacsAuthorizationReply).arg_cnt>, <FieldLenField (TacacsAuthorizationReply).server_msg_len>, <FieldLenField (TacacsAuthorizationReply).data_len>, <FieldListField (TacacsAuthorizationReply).arg_len_list>, <StrLenField (TacacsAuthorizationReply).server_msg>, <StrLenField (TacacsAuthorizationReply).data>]
guess_payload_class(pay)[source]
class scapy.contrib.tacacs.TacacsAuthorizationRequest(_pkt, /, *, authen_method=0, priv_lvl=1, authen_type=1, authen_service=1, user_len=None, port_len=None, rem_addr_len=None, arg_cnt=None, arg_len_list=[], user=b'', port=b'', rem_addr=b'')[source]

Bases: Packet

Tacacs authorization request body from section 5.1 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-5.1

aliastypes = [<class 'scapy.contrib.tacacs.TacacsAuthorizationRequest'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (TacacsAuthorizationRequest).authen_method>, <ByteEnumField (TacacsAuthorizationRequest).priv_lvl>, <ByteEnumField (TacacsAuthorizationRequest).authen_type>, <ByteEnumField (TacacsAuthorizationRequest).authen_service>, <FieldLenField (TacacsAuthorizationRequest).user_len>, <FieldLenField (TacacsAuthorizationRequest).port_len>, <FieldLenField (TacacsAuthorizationRequest).rem_addr_len>, <FieldLenField (TacacsAuthorizationRequest).arg_cnt>, <FieldListField (TacacsAuthorizationRequest).arg_len_list>, <StrLenField (TacacsAuthorizationRequest).user>, <StrLenField (TacacsAuthorizationRequest).port>, <StrLenField (TacacsAuthorizationRequest).rem_addr>]
guess_payload_class(pay)[source]
class scapy.contrib.tacacs.TacacsClientPacket(_pkt, /)[source]

Bases: Packet

Super class for tacacs packet in order to get them unencrypted Obfuscation methodology from section 3.7 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-3.7

aliastypes = [<class 'scapy.contrib.tacacs.TacacsClientPacket'>, <class 'scapy.packet.Packet'>]
post_dissect(pay)[source]
class scapy.contrib.tacacs.TacacsHeader(_pkt, /, *, version=192, type=1, seq=1, flags=0, session_id=0, length=None)[source]

Bases: TacacsClientPacket

Tacacs Header packet from section 3.8 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-3.8

aliastypes = [<class 'scapy.contrib.tacacs.TacacsHeader'>, <class 'scapy.contrib.tacacs.TacacsClientPacket'>, <class 'scapy.packet.Packet'>]
answers(other)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (TacacsHeader).version>, <ByteEnumField (TacacsHeader).type>, <ByteField (TacacsHeader).seq>, <ByteEnumField (TacacsHeader).flags>, <IntField (TacacsHeader).session_id>, <IntField (TacacsHeader).length>]
guess_payload_class(payload)[source]
hashret()[source]
payload_guess: List[Tuple[Dict[str, Any], Type[Packet]]] = [({'dport': 49, 'type': 1}, <class 'scapy.contrib.tacacs.TacacsAuthenticationStart'>), ({'sport': 49, 'type': 1}, <class 'scapy.contrib.tacacs.TacacsAuthenticationReply'>)]
post_build(p, pay)[source]
class scapy.contrib.tacacs.TacacsPacketArguments(_pkt, /, *, data=b'')[source]

Bases: Packet

Class defined to handle the arguments listed at the end of tacacs+ Authorization and Accounting packets.

aliastypes = [<class 'scapy.contrib.tacacs.TacacsPacketArguments'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<StrLenField (TacacsPacketArguments).data>]
guess_payload_class(pay)[source]
pre_dissect(s)[source]
scapy.contrib.tacacs.obfuscate(pay, secret, session_id, version, seq)[source]

Obfuscation methodology from section 3.7 https://tools.ietf.org/html/draft-ietf-opsawg-tacacs-06#section-3.7