scapy.asn1fields¶
Classes that implement ASN.1 data structures.
-
class
scapy.asn1fields.ASN1F_BIT_STRING(name, default, default_readable=True, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_field-
ASN1_tag= <ASN1Tag BIT_STRING[3]>¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_BIT_STRING_ENCAPS(name, default, cls, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_BIT_STRINGWe may emulate simple string encapsulation with explicit_tag=0x04, but we need a specific class for bit strings because of unused bits, etc.
-
holds_packets= 1¶
-
i2m(pkt, x)¶
-
m2i(pkt, s)¶
-
-
class
scapy.asn1fields.ASN1F_BMP_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag BMP_STRING[30]>¶
-
-
class
scapy.asn1fields.ASN1F_BOOLEAN(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_field-
ASN1_tag= <ASN1Tag BOOLEAN[1]>¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_CHOICE(name, default, *args, **kwargs)¶ Bases:
scapy.asn1fields.ASN1F_fieldMultiple types are allowed: ASN1_Packet, ASN1F_field and ASN1F_PACKET(), See layers/x509.py for examples. Other ASN1F_field instances than ASN1F_PACKET instances must not be used.
-
ASN1_tag= <ASN1Tag ANY[0]>¶
-
holds_packets= 1¶
-
i2m(pkt, x)¶
-
m2i(pkt, s)¶ First we have to retrieve the appropriate choice. Then we extract the field/packet, according to this choice.
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_ENUMERATED(name, default, enum, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_enum_INTEGER-
ASN1_tag= <ASN1Tag ENUMERATED[10]>¶
-
-
class
scapy.asn1fields.ASN1F_FLAGS(name, default, mapping, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_BIT_STRING-
get_flags(pkt)¶
-
i2repr(pkt, x)¶
-
-
class
scapy.asn1fields.ASN1F_GENERALIZED_TIME(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag GENERALIZED_TIME[24]>¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_IA5_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag IA5_STRING[22]>¶
-
-
class
scapy.asn1fields.ASN1F_INTEGER(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_field-
ASN1_tag= <ASN1Tag INTEGER[2]>¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_IPADDRESS(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag IPADDRESS[64]>¶
-
-
class
scapy.asn1fields.ASN1F_ISO646_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag ISO646_STRING[26]>¶
-
-
class
scapy.asn1fields.ASN1F_NULL(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_INTEGER-
ASN1_tag= <ASN1Tag NULL[5]>¶
-
-
class
scapy.asn1fields.ASN1F_NUMERIC_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag NUMERIC_STRING[18]>¶
-
-
class
scapy.asn1fields.ASN1F_OID(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_field-
ASN1_tag= <ASN1Tag OID[6]>¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_PACKET(name, default, cls, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_field-
holds_packets= 1¶
-
i2m(pkt, x)¶
-
m2i(pkt, s)¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_PRINTABLE_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag PRINTABLE_STRING[19]>¶
-
-
class
scapy.asn1fields.ASN1F_SEQUENCE(*seq, **kwargs)¶ Bases:
scapy.asn1fields.ASN1F_field-
ASN1_tag= <ASN1Tag SEQUENCE[48]>¶
-
build(pkt)¶
-
dissect(pkt, s)¶
-
get_fields_list()¶
-
holds_packets= 1¶
-
is_empty(pkt)¶
-
m2i(pkt, s)¶ ASN1F_SEQUENCE behaves transparently, with nested ASN1_objects being dissected one by one. Because we use obj.dissect (see loop below) instead of obj.m2i (as we trust dissect to do the appropriate set_vals) we do not directly retrieve the list of nested objects. Thus m2i returns an empty list (along with the proper remainder). It is discarded by dissect() and should not be missed elsewhere.
-
-
class
scapy.asn1fields.ASN1F_SEQUENCE_OF(name, default, cls, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_field-
ASN1_tag= <ASN1Tag SEQUENCE[48]>¶
-
build(pkt)¶
-
holds_packets= 1¶
-
is_empty(pkt)¶
-
islist= 1¶
-
m2i(pkt, s)¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_SET(*seq, **kwargs)¶ Bases:
scapy.asn1fields.ASN1F_SEQUENCE-
ASN1_tag= <ASN1Tag SET[49]>¶
-
-
class
scapy.asn1fields.ASN1F_SET_OF(name, default, cls, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_SEQUENCE_OF-
ASN1_tag= <ASN1Tag SET[49]>¶
-
-
class
scapy.asn1fields.ASN1F_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_field-
ASN1_tag= <ASN1Tag STRING[4]>¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_T61_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag T61_STRING[20]>¶
-
-
class
scapy.asn1fields.ASN1F_TIME_TICKS(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_INTEGER-
ASN1_tag= <ASN1Tag TIME_TICKS[67]>¶
-
-
class
scapy.asn1fields.ASN1F_UNIVERSAL_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag UNIVERSAL_STRING[28]>¶
-
-
class
scapy.asn1fields.ASN1F_UTC_TIME(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag UTC_TIME[23]>¶
-
randval()¶
-
-
class
scapy.asn1fields.ASN1F_UTF8_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag UTF8_STRING[12]>¶
-
-
class
scapy.asn1fields.ASN1F_VIDEOTEX_STRING(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_STRING-
ASN1_tag= <ASN1Tag VIDEOTEX_STRING[21]>¶
-
-
exception
scapy.asn1fields.ASN1F_badsequence¶ Bases:
Exception
-
class
scapy.asn1fields.ASN1F_element¶ Bases:
object
-
class
scapy.asn1fields.ASN1F_enum_INTEGER(name, default, enum, context=None, implicit_tag=None, explicit_tag=None)¶ Bases:
scapy.asn1fields.ASN1F_INTEGER-
i2m(pkt, s)¶
-
i2repr(pkt, x)¶
-
-
class
scapy.asn1fields.ASN1F_field(name, default, context=None, implicit_tag=None, explicit_tag=None, flexible_tag=False)¶ Bases:
scapy.asn1fields.ASN1F_element-
ASN1_tag= <ASN1Tag ANY[0]>¶
-
any2i(pkt, x)¶
-
build(pkt)¶
-
context¶ alias of
scapy.asn1.asn1.ASN1_Class_UNIVERSAL
-
dissect(pkt, s)¶
-
do_copy(x)¶
-
extract_packet(cls, s)¶
-
get_fields_list()¶
-
holds_packets= 0¶
-
i2h(pkt, x)¶
-
i2m(pkt, x)¶
-
i2repr(pkt, x)¶
-
is_empty(pkt)¶
-
islist= 0¶
-
m2i(pkt, s)¶ The good thing about safedec is that it may still decode ASN1 even if there is a mismatch between the expected tag (self.ASN1_tag) and the actual tag; the decoded ASN1 object will simply be put into an ASN1_BADTAG object. However, safedec prevents the raising of exceptions needed for ASN1F_optional processing. Thus we use ‘flexible_tag’, which should be False with ASN1F_optional.
Regarding other fields, we might need to know whether encoding went as expected or not. Noticeably, input methods from cert.py expect certain exceptions to be raised. Hence default flexible_tag is False.
-
randval()¶
-
set_val(pkt, val)¶
-