Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _legacy_sign_md5_sha1(self, M):
M = bytes_encode(M)
k = self._modulusLen // 8
EM = _legacy_pkcs1_v1_5_encode_md5_sha1(M, k)
if EM is None:
warning("Key._rsassa_pkcs1_v1_5_sign(): unable to encode")
return None
m = pkcs_os2ip(EM)
n = self._modulus
if isinstance(m, int) and six.PY2:
m = long(m) # noqa: F821
if (six.PY2 and not isinstance(m, long)) or m > n - 1: # noqa: F821
warning("Key._rsaep() expects a long between 0 and n-1")
return None
privExp = self.key.private_numbers().d
s = pow(m, privExp, n)
return pkcs_i2osp(s, k)
def get_if_list():
try:
f=open("/proc/net/dev","r")
except IOError:
warning("Can't open /proc/net/dev !")
return []
lst = []
f.readline()
f.readline()
for l in f:
lst.append(l.split(":")[0].strip())
return lst
def get_working_if():
if self.afi is None:
if self.ip4 is not None:
self.afi = 1
elif self.ip6 is not None:
self.afi = 2
if self.has_ifindex and self.ifindex is None:
warning('has_ifindex set but ifindex is not set.')
if self.has_ipaddr and self.afi is None:
warning('has_ipaddr set but afi is not set.')
if self.has_ipaddr and self.ip4 is None and self.ip6 is None:
warning('has_ipaddr set but ip4 or ip6 is not set.')
if self.has_ifname and self.ifname is None:
warning('has_ifname set but ifname is not set.')
if self.has_mtu and self.mtu is None:
warning('has_mtu set but mtu is not set.')
return ICMPExtensionObject.self_build(self, field_pos_list=field_pos_list) # noqa: E501
def compute_sslv2_key_material(self):
if self.master_secret is None:
warning("Missing master_secret while computing key_material!")
if self.sslv2_challenge is None:
warning("Missing challenge while computing key_material!")
if self.sslv2_connection_id is None:
warning("Missing connection_id while computing key_material!")
km = self.pwcs.prf.derive_key_block(self.master_secret,
self.sslv2_challenge,
self.sslv2_connection_id,
2 * self.pwcs.cipher.key_len)
self.sslv2_key_material = km
if conf.debug_tls:
log_runtime.debug("TLS: master secret: %s", repr_hex(self.master_secret)) # noqa: E501
log_runtime.debug("TLS: key material: %s", repr_hex(km))
def compute_sslv2_key_material(self):
if self.master_secret is None:
warning("Missing master_secret while computing key_material!")
if self.sslv2_challenge is None:
warning("Missing challenge while computing key_material!")
if self.sslv2_connection_id is None:
warning("Missing connection_id while computing key_material!")
km = self.pwcs.prf.derive_key_block(self.master_secret,
self.sslv2_challenge,
self.sslv2_connection_id,
2 * self.pwcs.cipher.key_len)
self.sslv2_key_material = km
if conf.debug_tls:
log_runtime.debug("TLS: master secret: %s", repr_hex(self.master_secret)) # noqa: E501
log_runtime.debug("TLS: key material: %s", repr_hex(km))
def guess_cls(self):
"""Guess the packet class that must be used on the interface"""
# Get the data link type
try:
ret = fcntl.ioctl(self.ins, BIOCGDLT, struct.pack('I', 0))
ret = struct.unpack('I', ret)[0]
except IOError:
cls = conf.default_l2
warning("BIOCGDLT failed: unable to guess type. Using %s !",
cls.name)
return cls
# Retrieve the corresponding class
try:
return conf.l2types[ret]
except KeyError:
cls = conf.default_l2
warning("Unable to guess type (type %i). Using %s", ret, cls.name)
def self_build(self, field_pos_list=None):
if self.afi is None:
if self.ip4 is not None:
self.afi = 1
elif self.ip6 is not None:
self.afi = 2
if self.has_ifindex and self.ifindex is None:
warning('has_ifindex set but ifindex is not set.')
if self.has_ipaddr and self.afi is None:
warning('has_ipaddr set but afi is not set.')
if self.has_ipaddr and self.ip4 is None and self.ip6 is None:
warning('has_ipaddr set but ip4 or ip6 is not set.')
if self.has_ifname and self.ifname is None:
warning('has_ifname set but ifname is not set.')
if self.has_mtu and self.mtu is None:
warning('has_mtu set but mtu is not set.')
return ICMPExtensionObject.self_build(self, field_pos_list=field_pos_list) # noqa: E501
def _recv_cf(self, data):
"""Process a received 'Consecutive Frame' frame"""
if self.rx_state != ISOTP_WAIT_DATA:
return 0
self.rx_timer.cancel()
# CFs are never longer than the FF
if len(data) > self.rx_ll_dl:
return 1
# CFs have usually the LL_DL length
if len(data) < self.rx_ll_dl:
# this is only allowed for the last CF
if self.rx_len - self.rx_idx > self.rx_ll_dl:
warning("Received a CF with insuffifient length")
return 1
if six.indexbytes(data, 0) & 0x0f != self.rx_sn:
# Wrong sequence number
warning("RX state was reset because wrong sequence number was "
"received")
self.rx_state = ISOTP_IDLE
return 1
self.rx_sn = (self.rx_sn + 1) % 16
self.rx_buf += data[1:]
self.rx_idx = len(self.rx_buf)
if self.rx_idx >= self.rx_len:
# we are done
self.rx_buf = self.rx_buf[0:self.rx_len]
# Dissect scopes
if scope_len:
res.append(scope_cls(data[:scope_len]))
if option_len:
res.append(
option_cls(data[scope_len:scope_len + option_len])
)
if len(data) > scope_len + option_len:
res.append(
conf.padding_layer(data[scope_len + option_len:])
)
# Inject dissected data
datafl.records = res
datafl.name = "Netflow DataFlowSet V9 - OPTIONS"
if conf.verb >= 1 and ignored:
warning("Ignored templateIDs (missing): %s" % list(ignored))
return plist
burned = 0 # The "burned" data, used to determine the remaining bytes
q = None # Will contain the index after the pointer, to be returned
processed_pointers = [p] # Used to check for decompression loops
while True:
if abs(p) >= max_length:
warning("DNS RR prematured end (ofs=%i, len=%i)" % (p, len(s)))
break
cur = orb(s[p]) # current value of the string at p
p += 1 # p is now pointing to the value of the pointer
burned += 1
if cur & 0xc0: # Label pointer
if q is None:
# p will follow the pointer, whereas q will not
q = p + 1
if p >= max_length:
warning("DNS incomplete jump token at (ofs=%i)" % p)
break
p = ((cur & ~0xc0) << 8) + orb(s[p]) - 12 # Follow the pointer
burned += 1
if p in processed_pointers:
warning("DNS decompression loop detected")
break
if pkt and hasattr(pkt, "_orig_s") and pkt._orig_s:
name += dns_get_str(pkt._orig_s, p, None, _internal=True)[0]
if burned == max_length:
break
elif not _internal:
raise Scapy_Exception("DNS message can't be compressed" +
"at this point!")
processed_pointers.append(p)
continue
elif cur > 0: # Label