diff --git a/scapy/asn1/asn1.py b/scapy/asn1/asn1.py index 5e1866da5aae6d0152f6b42acfac575baf50b350..f333cbe3ca646fa393556ff4a87e03920204fb25 100644 --- a/scapy/asn1/asn1.py +++ b/scapy/asn1/asn1.py @@ -20,6 +20,9 @@ class RandASN1Object(RandField): o = random.choice(self.objlist) if issubclass(o, ASN1_INTEGER): return o(int(random.gauss(0,1000))) + elif issubclass(o, ASN1_IPADDRESS): + z = RandIP()._fix() + return o(z) elif issubclass(o, ASN1_STRING): z = int(random.expovariate(0.05)+1) return o("".join([random.choice(self.chars) for i in range(z)])) diff --git a/scapy/asn1/ber.py b/scapy/asn1/ber.py index 371274bf66950de660f393b0f5ddf7094c5507c0..1e66ffd7dc5ad98fb18fe40d06c9cc4efddef0d3 100644 --- a/scapy/asn1/ber.py +++ b/scapy/asn1/ber.py @@ -233,7 +233,7 @@ class BERcodec_NULL(BERcodec_INTEGER): if i == 0: return chr(cls.tag)+"\0" else: - return super(cls,cls).enc(i) + return BERcodec_INTEGER.enc(i) class BERcodec_SEP(BERcodec_NULL): tag = ASN1_Class_UNIVERSAL.SEP @@ -260,6 +260,12 @@ class BERcodec_T61_STRING (BERcodec_STRING): class BERcodec_IA5_STRING(BERcodec_STRING): tag = ASN1_Class_UNIVERSAL.IA5_STRING +class BERcodec_NUMERIC_STRING(BERcodec_STRING): + tag = ASN1_Class_UNIVERSAL.NUMERIC_STRING + +class BERcodec_VIDEOTEX_STRING(BERcodec_STRING): + tag = ASN1_Class_UNIVERSAL.VIDEOTEX_STRING + class BERcodec_IPADDRESS(BERcodec_STRING): tag = ASN1_Class_UNIVERSAL.IPADDRESS