Skip to content

Commit c49a6d7

Browse files
author
Adam Karpierz
committed
Little but obvious code improvements
1 parent 617920f commit c49a6d7

9 files changed

Lines changed: 19 additions & 62 deletions

File tree

scapy/base_classes.py

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,7 @@ def __init__(self, net):
9090
self.parsed,self.netmask = self._parse_net(net)
9191

9292
def __str__(self):
93-
try:
94-
return next(self.__iter__())
95-
except StopIteration:
96-
return None
93+
return next(self.__iter__(), None)
9794

9895
def __iter__(self):
9996
for d in range(*self.parsed[3]):
@@ -102,10 +99,7 @@ def __iter__(self):
10299
for a in range(*self.parsed[0]):
103100
yield "%i.%i.%i.%i" % (a,b,c,d)
104101
def choice(self):
105-
ip = []
106-
for v in self.parsed:
107-
ip.append(str(random.randint(v[0],v[1]-1)))
108-
return ".".join(ip)
102+
return ".".join(str(random.randint(v[0], v[1] - 1)) for v in self.parsed)
109103

110104
def __repr__(self):
111105
return "Net(%r)" % self.repr
@@ -120,10 +114,7 @@ def __contains__(self, other):
120114
p2 = other.parsed
121115
else:
122116
p2,nm2 = self._parse_net(other)
123-
for (a1,b1),(a2,b2) in zip(self.parsed,p2):
124-
if a1 > a2 or b1 < b2:
125-
return False
126-
return True
117+
return all(a1 <= a2 and b1 >= b2 for (a1, b1), (a2, b2) in zip(self.parsed, p2))
127118
def __rcontains__(self, other):
128119
return self in self.__class__(other)
129120

@@ -193,8 +184,7 @@ def __new__(cls, name, bases, dct):
193184

194185
dct["fields_desc"] = final_fld
195186

196-
if "__slots__" not in dct:
197-
dct["__slots__"] = []
187+
dct.setdefault("__slots__", [])
198188
for attr in ["name", "overload_fields"]:
199189
try:
200190
dct["_%s" % attr] = dct.pop(attr)
@@ -242,8 +232,7 @@ def __call__(cls, *args, **kargs):
242232

243233
class Field_metaclass(type):
244234
def __new__(cls, name, bases, dct):
245-
if "__slots__" not in dct:
246-
dct["__slots__"] = []
235+
dct.setdefault("__slots__", [])
247236
newcls = super(Field_metaclass, cls).__new__(cls, name, bases, dct)
248237
return newcls
249238

scapy/contrib/icmp_extensions.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,8 @@ def guess_payload_class(self, payload):
6666
return Packet.guess_payload_class(self, payload)
6767

6868
for fval, cls in self.payload_guess:
69-
ok = 1
70-
for k, v in six.iteritems(fval):
71-
if not hasattr(ieo, k) or v != ieo.getfieldval(k):
72-
ok = 0
73-
break
74-
if ok:
69+
if all(hasattr(ieo, k) and v == ieo.getfieldval(k)
70+
for k, v in six.iteritems(fval)):
7571
return cls
7672
return ICMPExtensionObject
7773

scapy/dadict.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@ def _branch(self, br, uniq=0):
5656
def _my_find(self, *args, **kargs):
5757
if args and self._name not in args:
5858
return False
59-
for k in kargs:
60-
if k not in self or self[k] != kargs[k]:
61-
return False
62-
return True
59+
return all(k in self and self[k] == v for k, v in six.iteritems(kargs))
6360

6461
def update(self, *args, **kwargs):
6562
for k, v in six.iteritems(dict(*args, **kwargs)):

scapy/fields.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -834,11 +834,7 @@ def any2i(self, pkt, x):
834834
else:
835835
return [self.field.any2i(pkt, e) for e in x]
836836
def i2repr(self, pkt, x):
837-
res = []
838-
for v in x:
839-
r = self.field.i2repr(pkt, v)
840-
res.append(r)
841-
return "[%s]" % ", ".join(res)
837+
return "[%s]" % ", ".join(self.field.i2repr(pkt, v) for v in x)
842838
def addfield(self, pkt, s, val):
843839
val = self.i2m(pkt, val)
844840
for v in val:

scapy/layers/bluetooth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,7 @@ def flush(self):
927927
@conf.commands.register
928928
def srbt(bt_address, pkts, inter=0.1, *args, **kargs):
929929
"""send and receive using a bluetooth socket"""
930-
if "port" in kargs.keys():
930+
if "port" in kargs:
931931
s = conf.BTsocket(bt_address=bt_address, port=kargs.pop("port"))
932932
else:
933933
s = conf.BTsocket(bt_address=bt_address)

scapy/layers/inet.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1522,9 +1522,8 @@ def traceroute_map(*args, **kargs):
15221522
show the different paths on a map.
15231523
params:
15241524
- *args: IPs on which traceroute will be called"""
1525+
kargs.setdefault("verbose", 0)
15251526
res = []
1526-
if not "verbose" in kargs:
1527-
kargs["verbose"] = 0
15281527
for target in args:
15291528
res += traceroute(target, **kargs)[0].res
15301529
return TracerouteResult(res).world_trace()

scapy/layers/tls/handshake_sslv2.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -257,11 +257,7 @@ def __init__(self, *args, **kargs):
257257
post_build to an object different from the original one... unless
258258
we hackishly always set self.explicit to 1.
259259
"""
260-
if "decryptedkey" in kargs:
261-
self.decryptedkey = kargs["decryptedkey"]
262-
del kargs["decryptedkey"]
263-
else:
264-
self.decryptedkey = b""
260+
self.decryptedkey = kargs.pop("decryptedkey", b"")
265261
super(SSLv2ClientMasterKey, self).__init__(*args, **kargs)
266262
self.explicit = 1
267263

scapy/layers/tls/keyexchange.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -824,8 +824,7 @@ class _UnEncryptedPreMasterSecret(Raw):
824824
"""
825825
name = "RSA Encrypted PreMaster Secret (protected)"
826826
def __init__(self, *args, **kargs):
827-
if 'tls_session' in kargs:
828-
del(kargs['tls_session'])
827+
kargs.pop('tls_session', None)
829828
return super(_UnEncryptedPreMasterSecret, self).__init__(*args, **kargs)
830829

831830
class EncryptedPreMasterSecret(_GenericTLSSessionInheritance):

scapy/packet.py

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -554,14 +554,9 @@ def canvas_dump(self, layer_shift=0, rebuild=1):
554554
forecolor=colgen(0.2, 0.5, 0.8, trans=pyx.color.rgb)
555555
# backcolor=makecol(0.376, 0.729, 0.525, 1.0)
556556

557-
558557
def hexstr(x):
559-
s = []
560-
for c in x:
561-
s.append("%02x" % orb(c))
562-
return " ".join(s)
558+
return " ".join("%02x" % orb(c) for c in x)
563559

564-
565560
def make_dump_txt(x,y,txt):
566561
return pyx.text.text(XDSTART+x*XMUL, (YDUMP-y)*YMUL, r"\tt{%s}"%hexstr(txt), [pyx.text.size.Large])
567562

@@ -758,12 +753,8 @@ def guess_payload_class(self, payload):
758753
"""
759754
for t in self.aliastypes:
760755
for fval, cls in t.payload_guess:
761-
ok = 1
762-
for k, v in six.iteritems(fval):
763-
if not hasattr(self, k) or v != self.getfieldval(k):
764-
ok = 0
765-
break
766-
if ok:
756+
if all(hasattr(self, k) and v == self.getfieldval(k)
757+
for k, v in six.iteritems(fval)):
767758
return cls
768759
return self.default_payload_class(payload)
769760

@@ -1394,22 +1385,16 @@ def split_bottom_up(lower, upper, __fval=None, **fval):
13941385
fval.update(__fval)
13951386
def do_filter(xxx_todo_changeme,upper=upper,fval=fval):
13961387
(f,u) = xxx_todo_changeme
1397-
if u != upper:
1398-
return True
1399-
for k in fval:
1400-
if k not in f or f[k] != fval[k]:
1401-
return True
1402-
return False
1388+
return u != upper or any(k not in f or f[k] != v for k, v in six.iteritems(fval))
14031389
lower.payload_guess = [x for x in lower.payload_guess if do_filter(x)]
14041390

14051391
def split_top_down(lower, upper, __fval=None, **fval):
14061392
if __fval is not None:
14071393
fval.update(__fval)
14081394
if lower in upper._overload_fields:
14091395
ofval = upper._overload_fields[lower]
1410-
for k in fval:
1411-
if k not in ofval or ofval[k] != fval[k]:
1412-
return
1396+
if any(k not in ofval or ofval[k] != v for k, v in six.iteritems(fval)):
1397+
return
14131398
upper._overload_fields = upper._overload_fields.copy()
14141399
del(upper._overload_fields[lower])
14151400

0 commit comments

Comments
 (0)