diff --git a/scapy/asn1/asn1.py b/scapy/asn1/asn1.py
index 1611d355102ef5131c23aef2a9033e2d507141e9..624a5e32434de8a6cba2cbea8778267370b0392e 100644
--- a/scapy/asn1/asn1.py
+++ b/scapy/asn1/asn1.py
@@ -11,9 +11,9 @@ ASN.1 (Abstract Syntax Notation One)
import random
from datetime import datetime
from scapy.config import conf
-from scapy.error import Scapy_Exception,warning
+from scapy.error import Scapy_Exception, warning
from scapy.volatile import RandField
-from scapy.utils import Enum_metaclass, EnumElement
+from scapy.utils import Enum_metaclass, EnumElement, binrepr
class RandASN1Object(RandField):
def __init__(self, objlist=None):
@@ -263,7 +263,7 @@ class ASN1_BIT_STRING(ASN1_Object):
def __init__(self, val, readable=False):
if readable:
self.val_readable = val
- val = "".join(bin(ord(x))[2:].zfill(8) for x in val)
+ val = "".join(binrepr(ord(x)).zfill(8) for x in val)
self.unused_bits = 0
else:
if len(val) % 8 == 0:
diff --git a/scapy/asn1/ber.py b/scapy/asn1/ber.py
index ba431b4c530b49623f1a67e7a207fa932bb6c3e0..499cda61fe43bc2b59600413de70741bfe0cf51f 100644
--- a/scapy/asn1/ber.py
+++ b/scapy/asn1/ber.py
@@ -10,7 +10,7 @@ Basic Encoding Rules (BER) for ASN.1
"""
from scapy.error import warning
-from scapy.utils import inet_aton,inet_ntoa
+from scapy.utils import binrepr,inet_aton,inet_ntoa
from asn1 import ASN1_Decoding_Error,ASN1_Encoding_Error,ASN1_BadTag_Decoding_Error,ASN1_Codecs,ASN1_Class_UNIVERSAL,ASN1_Error,ASN1_DECODING_ERROR,ASN1_BADTAG
##################
@@ -277,7 +277,7 @@ class BERcodec_BIT_STRING(BERcodec_Object):
unused_bits = ord(s[0])
if safe and unused_bits > 7:
raise BER_Decoding_Error("BERcodec_BIT_STRING: too many unused_bits advertised", remaining=s)
- s = "".join(bin(ord(x))[2:].zfill(8) for x in s[1:])
+ s = "".join(binrepr(ord(x)).zfill(8) for x in s[1:])
if unused_bits > 0:
s = s[:-unused_bits]
return cls.tag.asn1_object(s),t
diff --git a/scapy/asn1fields.py b/scapy/asn1fields.py
index 5cbaabd35953535c2f591a92314bf9a787897918..aed6087e8e942bef5edd742559ee003f239365c6 100644
--- a/scapy/asn1fields.py
+++ b/scapy/asn1fields.py
@@ -13,6 +13,7 @@ from asn1.ber import *
from asn1.mib import *
from volatile import *
from base_classes import BasePacket
+from utils import binrepr
FLEXIBLE_TAGS = False
@@ -199,7 +200,7 @@ class ASN1F_BIT_STRING(ASN1F_field):
def __init__(self, name, default, default_readable=True, context=None,
implicit_tag=None, explicit_tag=None):
if default is not None and default_readable:
- default = "".join(bin(ord(x))[2:].zfill(8) for x in default)
+ default = "".join(binrepr(ord(x)).zfill(8) for x in default)
ASN1F_field.__init__(self, name, default, context=context,
implicit_tag=implicit_tag,
explicit_tag=explicit_tag)
@@ -522,7 +523,7 @@ class ASN1F_BIT_STRING_ENCAPS(ASN1F_BIT_STRING):
s = ""
else:
s = str(x)
- s = "".join(bin(ord(x))[2:].zfill(8) for x in s)
+ s = "".join(binrepr(ord(x)).zfill(8) for x in s)
return ASN1F_BIT_STRING.i2m(self, pkt, s)
class ASN1F_FLAGS(ASN1F_BIT_STRING):