diff --git a/scapy/arch/windows/__init__.py b/scapy/arch/windows/__init__.py
index 31808eb8df09701866854377e3f184aa8d2ce774..4fbed76cb80fa13377f1148fe960d2b6e3179fbd 100755
--- a/scapy/arch/windows/__init__.py
+++ b/scapy/arch/windows/__init__.py
@@ -113,7 +113,7 @@ class NetworkInterface(object):
         # because only the IP is available in both pypcap and dnet.
         # This may not work with unorthodox network configurations and is
         # slow because we have to walk through the Windows registry.
-        for n in range(30):
+        for n in xrange(30):
             guess = "eth%s" % n
             win_name = pcapdnet.pcap.ex_name(guess)
             if win_name.endswith("}"):
@@ -410,19 +410,19 @@ def sndrcv(pks, pkt, timeout = 2, inter = 0, verbose=None, chainCC=0, retry=0, m
                             h = r.hashret()
                             if h in hsent:
                                 hlst = hsent[h]
-                                for i in range(len(hlst)):
-                                    if r.answers(hlst[i]):
-                                        ans.append((hlst[i],r))
+                                for i, sentpkt in enumerate(hlst):
+                                    if r.answers(sentpkt):
+                                        ans.append((sentpkt, r))
                                         if verbose > 1:
                                             os.write(1, "*")
-                                        ok = 1                                
+                                        ok = 1
                                         if not multi:
-                                            del(hlst[i])
-                                            notans -= 1;
+                                            del hlst[i]
+                                            notans -= 1
                                         else:
-                                            if not hasattr(hlst[i], '_answered'):
-                                                notans -= 1;
-                                            hlst[i]._answered = 1;
+                                            if not hasattr(sentpkt, '_answered'):
+                                                notans -= 1
+                                            sentpkt._answered = 1
                                         break
                             if notans == 0 and not multi:
                                 break
diff --git a/scapy/asn1/asn1.py b/scapy/asn1/asn1.py
index 20970679d685c039f319544d469d0f9ae1e19936..841ed901e7f51c084e922481500f2e426ac584bd 100644
--- a/scapy/asn1/asn1.py
+++ b/scapy/asn1/asn1.py
@@ -15,10 +15,11 @@ from scapy.utils import Enum_metaclass, EnumElement
 
 class RandASN1Object(RandField):
     def __init__(self, objlist=None):
-        if objlist is None:
-            objlist = map(lambda x:x._asn1_obj,
-                          filter(lambda x:hasattr(x,"_asn1_obj"), ASN1_Class_UNIVERSAL.__rdict__.values()))
-        self.objlist = objlist
+        self.objlist = [
+            x._asn1_obj
+            for x in ASN1_Class_UNIVERSAL.__rdict__.itervalues()
+            if hasattr(x, "_asn1_obj")
+        ] if objlist is None else objlist
         self.chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
     def _fix(self, n=0):
         o = random.choice(self.objlist)
@@ -29,10 +30,11 @@ class RandASN1Object(RandField):
             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)]))
+            return o("".join(random.choice(self.chars) for _ in xrange(z)))
         elif issubclass(o, ASN1_SEQUENCE) and (n < 10):
             z = int(random.expovariate(0.08)+1)
-            return o(map(lambda x:x._fix(n+1), [self.__class__(objlist=self.objlist)]*z))
+            return o([self.__class__(objlist=self.objlist)._fix(n + 1)
+                      for _ in xrange(z)])
         return ASN1_INTEGER(int(random.gauss(0,1000)))
 
 
diff --git a/scapy/asn1/ber.py b/scapy/asn1/ber.py
index 622cb4966c44448929cebed35d88b338b32f95f9..fe180e1cc2f517350f381c667807b35c3f080fb1 100644
--- a/scapy/asn1/ber.py
+++ b/scapy/asn1/ber.py
@@ -89,8 +89,8 @@ def BER_num_enc(l, size=1):
         return "".join([chr(k) for k in x])
 def BER_num_dec(s):
         x = 0
-        for i in range(len(s)):
-            c = ord(s[i])
+        for i, c in enumerate(s):
+            c = ord(c)
             x <<= 7
             x |= c&0x7f
             if not c&0x80:
diff --git a/scapy/asn1/mib.py b/scapy/asn1/mib.py
index 8531fcf21479667f80d9f7bd0bbc3e36edfeca96..cd0fa65ea1a287f5c23ebab81c90ea0b820de28d 100644
--- a/scapy/asn1/mib.py
+++ b/scapy/asn1/mib.py
@@ -128,8 +128,8 @@ def load_mib(filenames):
                 ident,oid = gr[0],gr[-1]
                 ident=fixname(ident)
                 oid = oid.split()
-                for i in range(len(oid)):
-                    m = _mib_re_both.match(oid[i])
+                for i, elt in enumerate(oid):
+                    m = _mib_re_both.match(elt)
                     if m:
                         oid[i] = m.groups()[1]
                 mib_register(ident, oid, the_mib, unresolved)
diff --git a/scapy/contrib/HomePlugAV.py b/scapy/contrib/HomePlugAV.py
index 8076e8d0579a099c020832844f0c2762021d9b85..20022c67593ea66e5db368b11ec3924d491a5f5b 100644
--- a/scapy/contrib/HomePlugAV.py
+++ b/scapy/contrib/HomePlugAV.py
@@ -427,7 +427,7 @@ ModuleIDList = {    0x00 : "MAC Soft-Loader Image",
 
 def chksum32(data):
     cksum = 0
-    for i in range(0, len(data), 4):
+    for i in xrange(0, len(data), 4):
         cksum = (cksum ^ struct.unpack('<I', data[i:i+4])[0]) & 0xffffffff   
     return (~cksum) & 0xffffffff
 
diff --git a/scapy/contrib/bgp.py b/scapy/contrib/bgp.py
index 525dac5f64f905b4d13196a69fc1a733ad181508..61655e3712e9214dfc869a9a7dbe1117b0892a50 100644
--- a/scapy/contrib/bgp.py
+++ b/scapy/contrib/bgp.py
@@ -41,7 +41,8 @@ class BGPIPField(Field):
 		return s[l:], self.m2i(pkt,s[:l])
 	def m2i(self,pkt,m):
 		mask = struct.unpack(">B",m[0])[0]
-		ip = "".join( [ m[i + 1] if i < self.mask2iplen(mask) else '\x00' for i in range(4)] )
+		ip = "".join(m[i + 1] if i < self.mask2iplen(mask) else '\x00'
+                     for i in xrange(4))
 		return (mask,inet_ntoa(ip))
 
 class BGPHeader(Packet):
diff --git a/scapy/contrib/cdp.py b/scapy/contrib/cdp.py
index fc4dad4ea6e3ce4ae49d3accb1555494490fbba7..cd1cc4d83cb6c8037ae7ecd0afb688656e2c6bf3 100644
--- a/scapy/contrib/cdp.py
+++ b/scapy/contrib/cdp.py
@@ -178,13 +178,13 @@ class CDPMsgPortID(CDPMsgGeneric):
                     StrLenField("iface", "Port 1", length_from=lambda x:x.len - 4) ]
 
 
-_cdp_capabilities = [ "Router",
-                      "TransparentBridge",
-                      "SourceRouteBridge",
-                      "Switch",
-                      "Host",
-                      "IGMPCapable",
-                      "Repeater"] + map(lambda x: "Bit%d" % x, range(25,0,-1))
+_cdp_capabilities = ["Router",
+                     "TransparentBridge",
+                     "SourceRouteBridge",
+                     "Switch",
+                     "Host",
+                     "IGMPCapable",
+                     "Repeater"] + ["Bit%d" % x for x in xrange(25, 0, -1)]
 
 
 class CDPMsgCapabilities(CDPMsgGeneric):
diff --git a/scapy/contrib/gsm_um.py b/scapy/contrib/gsm_um.py
index cd6b9b0520bf08bbec0a7512e8e77958be9bd005..923d80b79d321068d54941f993f0e44088311b67 100644
--- a/scapy/contrib/gsm_um.py
+++ b/scapy/contrib/gsm_um.py
@@ -2923,18 +2923,13 @@ class MobileIdHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i, None))  # this list holds the values of
-# the variables, the INTERESSTING value!
+        # this list holds the values of the variables, the
+        # INTERESTING value!
+        a = [getattr(self, fld.name, None) for fld in self.fields_desc]
         res = adapt(3, 11, a, self.fields_desc)
         if self.lengthMI is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         print repr(p)
         return p + pay
@@ -3510,20 +3505,11 @@ class BaRangeHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            print "i is %s" % (i,)
-            aList.append(self.fields_desc[i].name)
-            print "aList %s" % (len(aList))
-            print "self.fields_desc %s" % (len(self.fields_desc))
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(6, 251, a, self.fields_desc)
         if self.lengthBR is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -3950,17 +3936,11 @@ class GroupChannelDescriptionHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(4, 13, a, self.fields_desc)
         if self.lengthGCD is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -4006,19 +3986,13 @@ class IaRestOctets(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 12, a, self.fields_desc)
         if self.lengthIRO is None:
             if res[1] < 0: # FIXME better fix
                 res[1] = 0
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -4179,17 +4153,11 @@ class MobileAllocationHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 10, a, self.fields_desc)
         if self.lengthMA is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -4243,17 +4211,11 @@ class MultiRateConfigurationHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(4, 8, a, self.fields_desc)
         if self.lengthMRC is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -4283,15 +4245,9 @@ class MultislotAllocationHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 12, a, self.fields_desc)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthMSA is None:
             p = p[:1] + struct.pack(">B", len(p)-2) + p[2:]
@@ -4697,17 +4653,11 @@ class Si4RestOctets(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 11, a, self.fields_desc, 1)
         if self.lengthSI4 is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if len(p) is 1:  # length of this packet can be 0, but packet is
             p = ''       # but the IE is manadatory 0_o
@@ -5385,17 +5335,11 @@ class ApduDataHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 251, a, self.fields_desc)
         if self.lengthAD is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -5748,17 +5692,11 @@ class NetworkNameHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 251, a, self.fields_desc)
         if self.lengthNN is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -6002,17 +5940,11 @@ class BearerCapabilityHdr(Packet):
                                        lambda pkt: pkt.ext12 == 0)
              ]
 
-# We have a bug here. packet is not working if used in message
+    # We have a bug here. packet is not working if used in message
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 15, a, self.fields_desc)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         # avoids a bug. find better way
         if len(p) is 5:
@@ -6161,17 +6093,11 @@ class CalledPartyBcdNumberHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 43, a, self.fields_desc, 2)
         if self.lengthCPBN is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -6213,17 +6139,11 @@ class CalledPartySubaddressHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 23,  a, self.fields_desc)
         if self.lengthCPS is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -6281,15 +6201,9 @@ class CallingPartyBcdNumberHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(4, 14, a, self.fields_desc)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthCPBN is None:
             p = p[:1] + struct.pack(">B", len(p)-2) + p[2:]
@@ -6333,17 +6247,11 @@ class CallingPartySubaddressHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 23, a, self.fields_desc)
         if self.lengthCPS is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -6401,15 +6309,9 @@ class CauseHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(4, 32, a, self.fields_desc)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthC is None:
             p = p[:1] + struct.pack(">B", len(p)-2) + p[2:]
@@ -6507,16 +6409,9 @@ class ConnectedNumberHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        sum1 = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 14, a, self.fields_desc)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthCN is None:
             p = p[:1] + struct.pack(">B", len(p)-2) + p[2:]
@@ -6561,17 +6456,11 @@ class ConnectedSubaddressHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 23, a, self.fields_desc)
         if self.lengthCS is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -6837,17 +6726,11 @@ class FacilityHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 251, a, self.fields_desc)
         if self.lengthF is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -6877,15 +6760,9 @@ class HighLayerCompatibilityHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 5, a, self.fields_desc)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthHLC is None:
             p = p[:1] + struct.pack(">B", len(p)-2) + p[2:]
@@ -6933,17 +6810,11 @@ class LowLayerCompatibilityHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 15, a, self.fields_desc)
         if self.lengthLLC is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -7065,15 +6936,9 @@ class RedirectingPartyBcdNumberHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 19, a, self.fields_desc)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthRPBN is None:
             p = p[:1] + struct.pack(">B", len(p)-2) + p[2:]
@@ -7118,17 +6983,11 @@ class RedirectingPartySubaddressHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 23, a, self.fields_desc)
         if self.lengthRPS is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -7411,17 +7270,11 @@ class SetupContainerHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 251, a, self.fields_desc)
         if self.lengthSC is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -7697,17 +7550,11 @@ class SsVersionIndicatorHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 251, a, self.fields_desc)
         if self.lengthSVI is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -7862,17 +7709,11 @@ class UserUserHdr(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 131, a, self.fields_desc)
         if self.lengthUU is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -8130,17 +7971,11 @@ class ReceiveNpduNumbersList(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(4, 19, a, self.fields_desc)
         if self.lengthRNNL is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -8396,17 +8231,11 @@ class AccessPointName(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 102, a, self.fields_desc)
         if self.lengthAPN is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -8769,17 +8598,11 @@ class ProtocolConfigurationOptions(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 253, a, self.fields_desc)
         if self.lengthPCO is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -8817,17 +8640,11 @@ class PacketDataProtocolAddress(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(4, 20, a, self.fields_desc)
         if self.lengthPDPA is None:
             p = p[:1] + struct.pack(">B", res[1]) + p[2:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -8996,17 +8813,11 @@ class MobileId(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 10, a, self.fields_desc, 1)
         if self.lengthMI is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -9529,17 +9340,11 @@ class BaRange(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(5, 253, a, self.fields_desc, 1)
         if self.lengthBR is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -9876,17 +9681,11 @@ class GroupChannelDescription(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(4, 13, a, self.fields_desc, 1)
         if self.lengthGCD is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -10059,17 +9858,11 @@ class MobileAllocation(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 9, a, self.fields_desc, 1)
         if self.lengthMA is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -10123,17 +9916,11 @@ class MultiRateConfiguration(Packet):
 
     def post_build(self, p, pay):
         # we set the length
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 7, a, self.fields_desc, 1)
         if self.lengthMRC is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -10161,15 +9948,9 @@ class MultislotAllocation(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 11, a, self.fields_desc, 1)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthMSA is None:
             p = struct.pack(">B", len(p)-1) + p[1:]
@@ -10776,17 +10557,11 @@ class ApduData(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 250, a, self.fields_desc, 1)
         if self.lengthAD is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 #
@@ -11058,17 +10833,11 @@ class NetworkName(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 250, a, self.fields_desc, 1)
         if self.lengthNN is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -11282,15 +11051,9 @@ class BearerCapability(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 15, a, self.fields_desc, 1)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthBC is None:
             p = struct.pack(">B", len(p)-1) + p[1:]
@@ -11429,17 +11192,11 @@ class CalledPartyBcdNumber(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 42, a, self.fields_desc, 1)
         if self.lengthCPBN is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -11479,17 +11236,11 @@ class CalledPartySubaddress(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 23, a, self.fields_desc, 1)
         if self.lengthCPS is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -11545,15 +11296,9 @@ class CallingPartyBcdNumber(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 13, a, self.fields_desc, 1)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthCPBN is None:
             p = struct.pack(">B", len(p)-1) + p[1:]
@@ -11595,17 +11340,11 @@ class CallingPartySubaddress(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 22, a, self.fields_desc, 1)
         if self.lengthCPS is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -11661,15 +11400,9 @@ class Cause(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(3, 31, a, self.fields_desc, 1)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthC is None:
             p = struct.pack(">B", len(p)-1) + p[1:]
@@ -11751,15 +11484,9 @@ class ConnectedNumber(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 13, a, self.fields_desc, 1)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthCN is None:
             p = struct.pack(">B", len(p)-1) + p[1:]
@@ -11802,17 +11529,11 @@ class ConnectedSubaddress(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        a = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 22, a, self.fields_desc, 1)
         if self.lengthCS is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -12076,17 +11797,11 @@ class Facility(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(7, 250, a, self.fields_desc, 1)
         if self.lengthF is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -12114,15 +11829,9 @@ class HighLayerCompatibility(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 4, a, self.fields_desc, 1)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthHLC is None:
             p = struct.pack(">B", len(p)-1) + p[1:]
@@ -12166,17 +11875,11 @@ class LowLayerCompatibility(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 14, a, self.fields_desc, 1)
         if self.lengthLLC is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -12288,15 +11991,9 @@ class RedirectingPartyBcdNumber(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 18, a, self.fields_desc, 1)
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         if self.lengthRPBN is None:
             p = struct.pack(">B", len(p)-1) + p[1:]
@@ -12339,17 +12036,11 @@ class RedirectingPartySubaddress(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 22, a, self.fields_desc, 1)
         if self.lengthRPS is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -12621,17 +12312,11 @@ class SetupContainer(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 250, a, self.fields_desc, 1)
         if self.lengthSC is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -12903,17 +12588,11 @@ class SsVersionIndicator(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(1, 250, a, self.fields_desc, 1)
         if self.lengthSVI is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
@@ -13066,17 +12745,11 @@ class UserUser(Packet):
              ]
 
     def post_build(self, p, pay):
-        aList = []
-        i = 0
-        for i in range(0, len(self.fields_desc)):
-            aList.append(self.fields_desc[i].name)
-        a = []
-        for i in aList:
-            a.append(getattr(self, i))
+        a = [getattr(self, fld.name) for fld in self.fields_desc]
         res = adapt(2, 133, a, self.fields_desc, 1)
         if self.lengthUU is None:
             p = struct.pack(">B", res[1]) + p[1:]
-        if res[0] is not 0:
+        if res[0] != 0:
             p = p[:-res[0]]
         return p + pay
 
diff --git a/scapy/contrib/gtp.py b/scapy/contrib/gtp.py
index 3677ee7a2d68e9350198459b8bea244969de3924..e7febc233dc517ced65ed9882eb712d682856aee 100644
--- a/scapy/contrib/gtp.py
+++ b/scapy/contrib/gtp.py
@@ -113,8 +113,8 @@ class TBCDByteField(StrFixedLenField):
 
     def i2h(self, pkt, val):
         ret = []
-        for i in range(len(val)):
-           byte = ord(val[i])
+        for v in val:
+           byte = ord(v)
            left = byte >> 4
            right = byte & 0xF
            if left == 0xF:
@@ -128,7 +128,7 @@ class TBCDByteField(StrFixedLenField):
 
     def i2m(self, pkt, val):
         ret_string = ""
-        for i in range(0, len(val), 2):
+        for i in xrange(0, len(val), 2):
             tmp = val[i:i+2]
             if len(tmp) == 2:
               ret_string += chr(int(tmp[1] + tmp[0], 16))
diff --git a/scapy/contrib/ikev2.py b/scapy/contrib/ikev2.py
index fd38b80c98ebb45acc99ddc0493bcf40d8715ec7..bdcb4ace824dee99c0757effbdbf47443963ab0e 100644
--- a/scapy/contrib/ikev2.py
+++ b/scapy/contrib/ikev2.py
@@ -337,13 +337,12 @@ class IKEv2_payload_Encrypted(IKEv2_class):
 
 
 IKEv2_payload_type_overload = {}
-for i in range(len(IKEv2_payload_type)):
-    name = "IKEv2_payload_%s" % IKEv2_payload_type[i]
+for i, payloadname in enumerate(IKEv2_payload_type):
+    name = "IKEv2_payload_%s" % payloadname
     if name in globals():
-        IKEv2_payload_type_overload[globals()[name]] = {"next_payload":i}
+        IKEv2_payload_type_overload[globals()[name]] = {"next_payload": i}
 
-del(i)
-del(name)
+del i, payloadname, name
 IKEv2_class.overload_fields = IKEv2_payload_type_overload.copy()
 
 split_layers(UDP, ISAKMP, sport=500)
diff --git a/scapy/contrib/isis.py b/scapy/contrib/isis.py
index f1631c2580ec79f4188787116cf228c0588c1574..c5b716beb6978ea0a90e19e5d6aad1c2959cbeef 100644
--- a/scapy/contrib/isis.py
+++ b/scapy/contrib/isis.py
@@ -140,7 +140,7 @@ class _ISIS_RandId(RandString):
 
         val = ()
 
-        for _ in range(self.bytecount):
+        for _ in xrange(self.bytecount):
             val += (RandByte(),)
 
         return self.format % val
diff --git a/scapy/contrib/ldp.py b/scapy/contrib/ldp.py
index bc2464ab8b1841a120cc86fd939de94a9044c8cb..8fc939c9fb3962af500ee509e79a84d99338b755 100644
--- a/scapy/contrib/ldp.py
+++ b/scapy/contrib/ldp.py
@@ -132,7 +132,7 @@ class AddressTLVField(StrField):
         nbr /= 4
         x=x[6:]
         list=[]
-        for i in range(0,nbr):
+        for i in xrange(0, nbr):
             add = x[4*i:4*i+4]
             list.append(inet_ntoa(add))
         return list
diff --git a/scapy/contrib/ppi_geotag.py b/scapy/contrib/ppi_geotag.py
index 2c6620f947b0c719f7271bbd6101adf09d72d3b1..106f9224d6e9732de6549db110f0390fded494fb 100644
--- a/scapy/contrib/ppi_geotag.py
+++ b/scapy/contrib/ppi_geotag.py
@@ -239,8 +239,8 @@ class HCSIFlagsField(FlagsField):
         if val is None:
             val = 0
             if (pkt):
-                for i in range(len(self.names)):
-                    name = self.names[i][0]
+                for i, name in enumerate(self.names):
+                    name = name[0]
                     value = pkt.getfieldval(name)
                     if value is not None:
                         val |= 1 << i
@@ -260,7 +260,7 @@ class HCSIAppField(StrFixedLenField):
 
 def _FlagsList(myfields):
     flags = []
-    for i in range(32):
+    for i in xrange(32):
         flags.append("Reserved%02d" % i)
     for i in myfields.keys():
         flags[i] = myfields[i]
@@ -303,10 +303,10 @@ def _HCSITest(pkt, ibit, name):
 # Wrap optional fields in ConditionalField, add HCSIFlagsField
 def _HCSIBuildFields(fields):
     names = [f.name for f in fields]
-    cond_fields = [ HCSIFlagsField('present', None, -len(names), names)]
-    for i in range(len(names)):
+    cond_fields = [HCSIFlagsField('present', None, -len(names), names)]
+    for i, name in enumerate(names):
         ibit = 1 << i
-        seval = "lambda pkt:_HCSITest(pkt,%s,'%s')" % (ibit, names[i])
+        seval = "lambda pkt:_HCSITest(pkt,%s,'%s')" % (ibit, name)
         test = eval(seval)
         cond_fields.append(ConditionalField(fields[i], test))
     return cond_fields
diff --git a/scapy/contrib/skinny.py b/scapy/contrib/skinny.py
index 8b686822d157fb38fb221069a8e5118915c1b4ad..41cbaa0afb49abe58b60fd0aaf3b7370e9bb84fa 100644
--- a/scapy/contrib/skinny.py
+++ b/scapy/contrib/skinny.py
@@ -355,7 +355,7 @@ _skinny_message_callinfo_restrictions = ['CallerName'
                                          , 'OriginalCalledName'
                                          , 'OriginalCalledNumber'
                                          , 'LastRedirectName'
-                                         , 'LastRedirectNumber'] + ['Bit%d' % i for i in range(8,15)]
+                                         , 'LastRedirectNumber'] + ['Bit%d' % i for i in xrange(8,15)]
 class SkinnyMessageCallInfo(Packet):
     name='call information'
     fields_desc = [ StrFixedLenField("callername", "Jean Valjean", 40),
diff --git a/scapy/contrib/vxlan.py b/scapy/contrib/vxlan.py
index d635eefe514c7a3101c07499369b94b801172c4c..dec7a0beeca4db83b710b7d9cd5c04c554d8072c 100644
--- a/scapy/contrib/vxlan.py
+++ b/scapy/contrib/vxlan.py
@@ -10,7 +10,7 @@ from scapy.layers.l2 import Ether
 from scapy.layers.inet import UDP
 from scapy.fields import FlagsField, XByteField, ThreeBytesField
 
-_VXLAN_FLAGS = ['R' for i in range(0, 24)] + ['R', 'R', 'R', 'I', 'R', 'R', 'R', 'R', 'R'] 
+_VXLAN_FLAGS = ['R' for _ in xrange(0, 24)] + ['R', 'R', 'R', 'I', 'R', 'R', 'R', 'R', 'R'] 
 
 
 class VXLAN(Packet):
diff --git a/scapy/crypto/cert.py b/scapy/crypto/cert.py
index e6c00496effaecb26f4cb861a7b596204ccfd865..1d383650bc7d89e88a51c0d2e2d6197951901f05 100644
--- a/scapy/crypto/cert.py
+++ b/scapy/crypto/cert.py
@@ -216,7 +216,7 @@ def pkcs_emsa_pss_encode(M, emBits, h, mgf, sLen):
     rem = 8*emLen - emBits - 8*l # additionnal bits
     andMask = l*'\x00'
     if rem:
-        j = chr(reduce(lambda x,y: x+y, map(lambda x: 1<<x, range(8-rem))))
+        j = chr(sum(1<<x for x in xrange(8 - rem)))
         andMask += j
         l += 1
     maskedDB = strand(maskedDB[:l], andMask) + maskedDB[l:]
@@ -258,8 +258,7 @@ def pkcs_emsa_pss_verify(M, EM, emBits, h, mgf, sLen):
     rem = 8*emLen - emBits - 8*l # additionnal bits
     andMask = l*'\xff'
     if rem:
-        val = reduce(lambda x,y: x+y, map(lambda x: 1<<x, range(8-rem)))
-        j = chr(~val & 0xff)
+        j = chr(~sum(1 << x for x in xrange(8 - rem)) & 0xff)
         andMask += j
         l += 1
     if strand(maskedDB[:l], andMask) != '\x00'*l:
@@ -270,7 +269,7 @@ def pkcs_emsa_pss_verify(M, EM, emBits, h, mgf, sLen):
     rem = 8*emLen - emBits - 8*l # additionnal bits
     andMask = l*'\x00'
     if rem:
-        j = chr(reduce(lambda x,y: x+y, map(lambda x: 1<<x, range(8-rem))))
+        j = chr(sum(1 << x for x in xrange(8 - rem)))
         andMask += j
         l += 1
     DB = strand(DB[:l], andMask) + DB[l:]
@@ -1281,14 +1280,14 @@ class PubKey(OSSLHelper, _EncryptAndVerify):
 
             newkey = 0
             # skip fields we have already seen, this is the purpose of 'i'
-            for j in range(i, self.possible_fields_count):
+            for j in xrange(i, self.possible_fields_count):
                 f = self.possible_fields[j]
                 if l.startswith(f):
                     fields_dict[k] = cur
                     cur = l[len(f):] + '\n'
                     k = f
                     newkey = 1
-                    i = j+1
+                    i = j + 1
                     break
             if newkey == 1:
                 continue
@@ -1441,14 +1440,14 @@ class Key(OSSLHelper, _DecryptAndSignMethods, _EncryptAndVerify):
 
             newkey = 0
             # skip fields we have already seen, this is the purpose of 'i'
-            for j in range(i, self.possible_fields_count):
+            for j in xrange(i, self.possible_fields_count):
                 f = self.possible_fields[j]
                 if l.startswith(f):
                     fields_dict[k] = cur
                     cur = l[len(f):] + '\n'
                     k = f
                     newkey = 1
-                    i = j+1
+                    i = j + 1
                     break
             if newkey == 1:
                 continue
@@ -1662,14 +1661,14 @@ class Cert(OSSLHelper, _EncryptAndVerify):
 
             newkey = 0
             # skip fields we have already seen, this is the purpose of 'i'
-            for j in range(i, self.possible_fields_count):
+            for j in xrange(i, self.possible_fields_count):
                 f = self.possible_fields[j]
                 if l.startswith(f):
                     fields_dict[k] = cur
                     cur = l[len(f):] + '\n'
                     k = f
                     newkey = 1
-                    i = j+1
+                    i = j + 1
                     break
             if newkey == 1:
                 continue
@@ -2333,14 +2332,14 @@ class CRL(OSSLHelper):
 
             newkey = 0
             # skip fields we have already seen, this is the purpose of 'i'
-            for j in range(i, self.possible_fields_count):
+            for j in xrange(i, self.possible_fields_count):
                 f = self.possible_fields[j]
                 if l.startswith(f):
                     fields_dict[k] = cur
                     cur = l[len(f):] + '\n'
                     k = f
                     newkey = 1
-                    i = j+1
+                    i = j + 1
                     break
             if newkey == 1:
                 continue
diff --git a/scapy/fields.py b/scapy/fields.py
index 4d05feb9c8e1de23490cd345243000429f8d2175..f06241ce5e7d123ec7629799f099e2fb09b7b405 100644
--- a/scapy/fields.py
+++ b/scapy/fields.py
@@ -683,7 +683,7 @@ class BitField(Field):
         bytes = struct.unpack('!%dB' % nb_bytes , w)
 
         b = 0L
-        for c in range(nb_bytes):
+        for c in xrange(nb_bytes):
             b |= long(bytes[c]) << (nb_bytes-c-1)*8
 
         # get rid of high order bits
@@ -727,11 +727,11 @@ class EnumField(Field):
         i2s = self.i2s = {}
         s2i = self.s2i = {}
         if type(enum) is list:
-            keys = xrange(len(enum))
+            keys = range(len(enum))
         else:
             keys = enum.keys()
-        if filter(lambda x: type(x) is str, keys):
-            i2s,s2i = s2i,i2s
+        if any(type(x) is str for x in keys):
+            i2s, s2i = s2i, i2s
         for k in keys:
             i2s[k] = enum[k]
             s2i[enum[k]] = k
diff --git a/scapy/layers/dhcp.py b/scapy/layers/dhcp.py
index 66d27722963a5fc1ae79e837cff017647a173fb1..ebd8f67c50e3d87965c13e701dad0223a5b26b5b 100644
--- a/scapy/layers/dhcp.py
+++ b/scapy/layers/dhcp.py
@@ -168,7 +168,7 @@ class RandDHCPOptions(RandField):
         self._opts.remove("end")
     def _fix(self):
         op = []
-        for k in range(self.size):
+        for k in xrange(self.size):
             o = random.choice(self._opts)
             if type(o) is str:
                 op.append((o,self.rndstr*1))
diff --git a/scapy/layers/inet.py b/scapy/layers/inet.py
index 4b6694617881220430e61e3c630c36be16e77fc0..df3d70daeea7e2e3b4bfbe59b95779b73bd0130d 100644
--- a/scapy/layers/inet.py
+++ b/scapy/layers/inet.py
@@ -412,7 +412,7 @@ class IP(Packet, IPTools):
         for p in fl:
             s = str(p[fnb].payload)
             nb = (len(s)+fragsize-1)/fragsize
-            for i in range(nb):            
+            for i in xrange(nb):            
                 q = p.copy()
                 del(q[fnb].payload)
                 del(q[fnb].chksum)
@@ -750,7 +750,7 @@ def fragment(pkt, fragsize=1480):
     for p in pkt:
         s = str(p[IP].payload)
         nb = (len(s)+fragsize-1)/fragsize
-        for i in range(nb):            
+        for i in xrange(nb):            
             q = p.copy()
             del(q[IP].payload)
             del(q[IP].chksum)
@@ -1005,7 +1005,7 @@ class TracerouteResult(SndRcvList):
             tr = trace[i]
             tr3d[i] = []
             ttl = tr.keys()
-            for t in range(1,max(ttl)+1):
+            for t in xrange(1,max(ttl)+1):
                 if t not in rings:
                     rings[t] = []
                 if t in tr:
@@ -1018,7 +1018,7 @@ class TracerouteResult(SndRcvList):
         for t in rings:
             r = rings[t]
             l = len(r)
-            for i in range(l):
+            for i in xrange(l):
                 if r[i][1] == -1:
                     col = (0.75,0.75,0.75)
                 elif r[i][1]:
@@ -1104,7 +1104,7 @@ class TracerouteResult(SndRcvList):
         for trace_id in rt:
             trace = rt[trace_id]
             loctrace = []
-            for i in range(max(trace.keys())):
+            for i in xrange(max(trace.keys())):
                 ip = trace.get(i,None)
                 if ip is None:
                     continue
@@ -1174,7 +1174,7 @@ class TracerouteResult(SndRcvList):
         for rtk in rt:
             trace = rt[rtk]
             k = trace.keys()
-            for n in range(min(k), max(k)):
+            for n in xrange(min(k), max(k)):
                 if not trace.has_key(n):
                     trace[n] = unknown_label.next()
             if not ports_done.has_key(rtk):
@@ -1267,7 +1267,7 @@ class TracerouteResult(SndRcvList):
             s += '\t\tedge [color="#%s%s%s"];\n' % forecolorlist.next()
             trace = rt[rtk]
             k = trace.keys()
-            for n in range(min(k), max(k)):
+            for n in xrange(min(k), max(k)):
                 s += '\t%s ->\n' % trace[n]
             s += '\t%s;\n' % trace[max(k)]
     
diff --git a/scapy/layers/ipsec.py b/scapy/layers/ipsec.py
index 6004dd0f7202ed1affd6ea225e48445fceb4b397..588ac42df006c52a0ed3bc2bcdbb2c29c395f31a 100644
--- a/scapy/layers/ipsec.py
+++ b/scapy/layers/ipsec.py
@@ -283,9 +283,7 @@ class CryptAlgo(object):
         esp.padlen = -data_len % align
 
         # padding must be an array of bytes starting from 1 to padlen
-        esp.padding = ''
-        for b in range(1, esp.padlen + 1):
-            esp.padding += chr(b)
+        esp.padding = ''.join(chr(b) for b in xrange(1, esp.padlen + 1))
 
         # If the following test fails, it means that this algo does not comply
         # with the RFC
diff --git a/scapy/layers/isakmp.py b/scapy/layers/isakmp.py
index 9c54bed4e99e02200d20c49a0dfa4c9b99ad87cc..e7ab564b498c83e401176c0bd619f0950569889f 100644
--- a/scapy/layers/isakmp.py
+++ b/scapy/layers/isakmp.py
@@ -331,13 +331,12 @@ class ISAKMP_payload_Hash(ISAKMP_class):
 
 
 ISAKMP_payload_type_overload = {}
-for i in range(len(ISAKMP_payload_type)):
-    name = "ISAKMP_payload_%s" % ISAKMP_payload_type[i]
+for i, payloadname in enumerate(ISAKMP_payload_type):
+    name = "ISAKMP_payload_%s" % payloadname
     if name in globals():
-        ISAKMP_payload_type_overload[globals()[name]] = {"next_payload":i}
+        ISAKMP_payload_type_overload[globals()[name]] = {"next_payload": i}
 
-del(i)
-del(name)
+del i, payloadname, name
 ISAKMP_class.overload_fields = ISAKMP_payload_type_overload.copy()
 
 
diff --git a/scapy/layers/tftp.py b/scapy/layers/tftp.py
index 1535e99c4915745ecc0431c294576e6082d9e934..9a2aa0a5c21f4a4ae06bab9171770f147f1a27ce 100644
--- a/scapy/layers/tftp.py
+++ b/scapy/layers/tftp.py
@@ -227,8 +227,8 @@ class TFTP_write(Automaton):
     # BEGIN
     @ATMT.state(initial=1)
     def BEGIN(self):
-        self.data = [ self.origdata[i*self.blocksize:(i+1)*self.blocksize]
-                      for i in range( len(self.origdata)/self.blocksize+1) ] 
+        self.data = [self.origdata[i*self.blocksize:(i+1)*self.blocksize]
+                     for i in xrange( len(self.origdata)/self.blocksize+1)]
         self.my_tid = self.sport or RandShort()._fix()
         bind_bottom_up(UDP, TFTP, dport=self.my_tid)
         self.server_tid = None
diff --git a/scapy/main.py b/scapy/main.py
index 0fce8c3e568eac3cf64f0e68d2392110a62b1e2a..149ac6e47ef9249f218966fdf719777138d8713e 100644
--- a/scapy/main.py
+++ b/scapy/main.py
@@ -59,7 +59,7 @@ def _load(module):
         __builtin__.__dict__.update(mod.__dict__)
     except Exception,e:
         log_interactive.error(e)
-        
+
 def load_module(name):
     _load("scapy.modules."+name)
 
diff --git a/scapy/modules/nmap.py b/scapy/modules/nmap.py
index ef064643b682bad48a106296389bfc1e092f5505..50abec1db37b251a2e740bad8362bc54972df720 100644
--- a/scapy/modules/nmap.py
+++ b/scapy/modules/nmap.py
@@ -71,9 +71,9 @@ nmap_kdb = NmapKnowledgeBase(conf.nmap_base)
 def TCPflags2str(f):
     fl="FSRPAUEC"
     s=""
-    for i in range(len(fl)):
+    for fli in fl:
         if f & 1:
-            s = fl[i]+s
+            s = fli + s
         f >>= 1
     return s
 
diff --git a/scapy/modules/p0f.py b/scapy/modules/p0f.py
index d051779d7fb779256904ef2e1a5275b42091ae5e..2585adb6bc418ea8a17e6837a293f8aaa476131a 100644
--- a/scapy/modules/p0f.py
+++ b/scapy/modules/p0f.py
@@ -244,7 +244,7 @@ def p0f_correl(x,y):
     yopt = y[4].split(",")
     if len(xopt) == len(yopt):
         same = True
-        for i in range(len(xopt)):
+        for i in xrange(len(xopt)):
             if not (xopt[i] == yopt[i] or
                     (len(yopt[i]) == 2 and len(xopt[i]) > 1 and
                      yopt[i][1] == "*" and xopt[i][0] == yopt[i][0]) or
diff --git a/scapy/modules/voip.py b/scapy/modules/voip.py
index 70000a54d4be61e88a181910dc395383662f1e33..b2542b4de6c540de9cda6a30c425bb42e75b63a6 100644
--- a/scapy/modules/voip.py
+++ b/scapy/modules/voip.py
@@ -26,7 +26,7 @@ def merge(x,y,sample_size=2):
         x += "\x00"*(len(y)-len(x))
     m = ""
     ss=sample_size
-    for i in range(len(x)/ss):
+    for i in xrange(len(x)/ss):
         m += x[ss*i:ss*(i+1)]+y[ss*i:ss*(i+1)]
     return  m
 #    return  "".join(map(str.__add__, x, y))
diff --git a/scapy/plist.py b/scapy/plist.py
index 92d7c3eb04b951f299c9dac605a5c2c64cc2adc8..11e3a84844adb7a909bb8c143ad03ec500fdab5e 100644
--- a/scapy/plist.py
+++ b/scapy/plist.py
@@ -101,19 +101,19 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
                 print self._elt2sum(r)
             else:
                 print prn(r)
-    def nsummary(self,prn=None, lfilter=None):
+    def nsummary(self, prn=None, lfilter=None):
         """prints a summary of each packet with the packet's number
 prn:     function to apply to each packet instead of lambda x:x.summary()
 lfilter: truth function to apply to each packet to decide whether it will be displayed"""
-        for i in range(len(self.res)):
+        for i, res in enumerate(self.res):
             if lfilter is not None:
-                if not lfilter(self.res[i]):
+                if not lfilter(res):
                     continue
             print conf.color_theme.id(i,fmt="%04i"),
             if prn is None:
-                print self._elt2sum(self.res[i])
+                print self._elt2sum(res)
             else:
-                print prn(self.res[i])
+                print prn(res)
     def display(self): # Deprecated. Use show()
         """deprecated. is show()"""
         self.show()
@@ -188,43 +188,43 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
     def hexraw(self, lfilter=None):
         """Same as nsummary(), except that if a packet has a Raw layer, it will be hexdumped
         lfilter: a truth function that decides whether a packet must be displayed"""
-        for i in range(len(self.res)):
-            p = self._elt2pkt(self.res[i])
+        for i, res in enumerate(self.res):
+            p = self._elt2pkt(res)
             if lfilter is not None and not lfilter(p):
                 continue
             print "%s %s %s" % (conf.color_theme.id(i,fmt="%04i"),
                                 p.sprintf("%.time%"),
-                                self._elt2sum(self.res[i]))
+                                self._elt2sum(res))
             if p.haslayer(conf.raw_layer):
                 hexdump(p.getlayer(conf.raw_layer).load)
 
     def hexdump(self, lfilter=None):
         """Same as nsummary(), except that packets are also hexdumped
         lfilter: a truth function that decides whether a packet must be displayed"""
-        for i in range(len(self.res)):
-            p = self._elt2pkt(self.res[i])
+        for i, res in enumerate(self.res):
+            p = self._elt2pkt(res)
             if lfilter is not None and not lfilter(p):
                 continue
             print "%s %s %s" % (conf.color_theme.id(i,fmt="%04i"),
                                 p.sprintf("%.time%"),
-                                self._elt2sum(self.res[i]))
+                                self._elt2sum(res))
             hexdump(p)
 
     def padding(self, lfilter=None):
         """Same as hexraw(), for Padding layer"""
-        for i in range(len(self.res)):
-            p = self._elt2pkt(self.res[i])
+        for i in enumerate(self.res):
+            p = self._elt2pkt(res)
             if p.haslayer(conf.padding_layer):
                 if lfilter is None or lfilter(p):
                     print "%s %s %s" % (conf.color_theme.id(i,fmt="%04i"),
                                         p.sprintf("%.time%"),
-                                        self._elt2sum(self.res[i]))
+                                        self._elt2sum(res))
                     hexdump(p.getlayer(conf.padding_layer).load)
 
     def nzpadding(self, lfilter=None):
         """Same as padding() but only non null padding"""
-        for i in range(len(self.res)):
-            p = self._elt2pkt(self.res[i])
+        for i in enumerate(self.res):
+            p = self._elt2pkt(res)
             if p.haslayer(conf.padding_layer):
                 pad = p.getlayer(conf.padding_layer).load
                 if pad == pad[0]*len(pad):
@@ -232,7 +232,7 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
                 if lfilter is None or lfilter(p):
                     print "%s %s %s" % (conf.color_theme.id(i,fmt="%04i"),
                                         p.sprintf("%.time%"),
-                                        self._elt2sum(self.res[i]))
+                                        self._elt2sum(res))
                     hexdump(p.getlayer(conf.padding_layer).load)
         
 
@@ -345,8 +345,8 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
         import pyx
         d = pyx.document.document()
         l = len(self.res)
-        for i in range(len(self.res)):
-            elt = self.res[i]
+        for i in enumerate(self.res):
+            elt = res
             c = self._elt2pkt(elt).canvas_dump(**kargs)
             cbb = c.bbox()
             c.text(cbb.left(),cbb.top()+1,r"\font\cmssfont=cmss12\cmssfont{Frame %i/%i}" % (i,l),[pyx.text.size.LARGE])
diff --git a/scapy/route.py b/scapy/route.py
index 52a95629388f0c050ec2f58fa3abd95b59cc3377..170de483303696c8f2300a8433bfd2bea3400b6e 100644
--- a/scapy/route.py
+++ b/scapy/route.py
@@ -86,8 +86,8 @@ class Route:
         the_net = the_rawaddr & the_msk
         
         
-        for i in range(len(self.routes)):
-            net,msk,gw,iface,addr = self.routes[i]
+        for i, route in enumerate(self.routes):
+            net, msk, gw, iface, addr = route
             if iface != iff:
                 continue
             if gw == '0.0.0.0':
diff --git a/scapy/route6.py b/scapy/route6.py
index 67b5328d6b10ef3a409621960cd190c6ba7b7869..341a7c3ee6a2d3daa0d6b27f4dc003d5893657c0 100644
--- a/scapy/route6.py
+++ b/scapy/route6.py
@@ -121,8 +121,8 @@ class Route6:
         nmask = in6_cidr2mask(the_plen)
         the_net = inet_ntop(socket.AF_INET6, in6_and(nmask,naddr))
         
-        for i in range(len(self.routes)):
-            net,plen,gw,iface,addr = self.routes[i]
+        for i, route in enumerate(self.routes):
+            net,plen,gw,iface,addr = route
             if iface != iff:
                 continue
             if gw == '::':
diff --git a/scapy/sendrecv.py b/scapy/sendrecv.py
index b8d5bb5a33c07219d926aa3b4441e5d10fb90798..f24591f23471130e38e25a4f253164441ffeac8b 100644
--- a/scapy/sendrecv.py
+++ b/scapy/sendrecv.py
@@ -141,19 +141,19 @@ def sndrcv(pks, pkt, timeout = None, inter = 0, verbose=None, chainCC=0, retry=0
                             h = r.hashret()
                             if h in hsent:
                                 hlst = hsent[h]
-                                for i in range(len(hlst)):
-                                    if r.answers(hlst[i]):
-                                        ans.append((hlst[i],r))
+                                for i, sentpkt in enumerate(hlst):
+                                    if r.answers(sentpkt):
+                                        ans.append((sentpkt, r))
                                         if verbose > 1:
                                             os.write(1, "*")
-                                        ok = 1                                
+                                        ok = 1
                                         if not multi:
-                                            del(hlst[i])
-                                            notans -= 1;
+                                            del hlst[i]
+                                            notans -= 1
                                         else:
-                                            if not hasattr(hlst[i], '_answered'):
-                                                notans -= 1;
-                                            hlst[i]._answered = 1;
+                                            if not hasattr(sentpkt, '_answered'):
+                                                notans -= 1
+                                            sentpkt._answered = 1
                                         break
                             if notans == 0 and not multi:
                                 break
diff --git a/scapy/tools/UTscapy.py b/scapy/tools/UTscapy.py
index 532d327bdfa88e6ca7a97fec00f303990ac91f58..90f15b22f0ebeac41f01f934316b2a87d63aa907 100755
--- a/scapy/tools/UTscapy.py
+++ b/scapy/tools/UTscapy.py
@@ -574,7 +574,7 @@ def main(argv):
                         NUM.append(int(v))
                     except ValueError:
                         v1,v2 = map(int, v.split("-"))
-                        for vv in range(v1,v2+1):
+                        for vv in xrange(v1, v2 + 1):
                             NUM.append(vv)
             elif opt == "-m":
                 MODULES.append(optarg)
diff --git a/scapy/utils.py b/scapy/utils.py
index 401231f566371559b203a507eece000a133e9cbf..675f6647afec8bcb025ff33d3866b41485c00ecd 100644
--- a/scapy/utils.py
+++ b/scapy/utils.py
@@ -70,7 +70,7 @@ def hexdump(x):
     i = 0
     while i < l:
         print "%04x  " % i,
-        for j in range(16):
+        for j in xrange(16):
             if i+j < l:
                 print "%02X" % ord(x[i+j]),
             else:
@@ -86,7 +86,7 @@ def linehexdump(x, onlyasc=0, onlyhex=0):
     x = str(x)
     l = len(x)
     if not onlyasc:
-        for i in range(l):
+        for i in xrange(l):
             print "%02X" % ord(x[i]),
         print "",
     if not onlyhex:
@@ -114,13 +114,13 @@ def hexdiff(x,y):
     INSERT=1
     d={}
     d[-1,-1] = 0,(-1,-1)
-    for j in range(len(y)):
+    for j in xrange(len(y)):
         d[-1,j] = d[-1,j-1][0]+INSERT, (-1,j-1)
-    for i in range(len(x)):
+    for i in xrange(len(x)):
         d[i,-1] = d[i-1,-1][0]+INSERT, (i-1,-1)
 
-    for j in range(len(y)):
-        for i in range(len(x)):
+    for j in xrange(len(y)):
+        for i in xrange(len(x)):
             d[i,j] = min( ( d[i-1,j-1][0]+SUBST*(x[i] != y[j]), (i-1,j-1) ),
                           ( d[i-1,j][0]+INSERT, (i-1,j) ),
                           ( d[i,j-1][0]+INSERT, (i,j-1) ) )
@@ -184,7 +184,7 @@ def hexdiff(x,y):
         print " ",
         
         cl = ""
-        for j in range(16):
+        for j in xrange(16):
             if i+j < l:
                 if line[j]:
                     col = colorize[(linex[j]!=liney[j])*(doy-dox)]
@@ -414,9 +414,9 @@ def colgen(*lstcol,**kargs):
         lstcol *= 2
     trans = kargs.get("trans", lambda x,y,z: (x,y,z))
     while 1:
-        for i in range(len(lstcol)):
-            for j in range(len(lstcol)):
-                for k in range(len(lstcol)):
+        for i in xrange(len(lstcol)):
+            for j in xrange(len(lstcol)):
+                for k in xrange(len(lstcol)):
                     if i != j or j != k or k != i:
                         yield trans(lstcol[(i+j)%len(lstcol)],lstcol[(j+k)%len(lstcol)],lstcol[(k+i)%len(lstcol)])
 
@@ -508,7 +508,7 @@ def corrupt_bits(s, p=0.01, n=None):
         s[i/8] ^= 1 << (i%8)
     return s.tostring()
 
-    
+
 
 
 #############################
diff --git a/scapy/utils6.py b/scapy/utils6.py
index b1b7ee73c742beb6e4babcb5dbaded69fea82add..7ba8ca103dc47f97027e744366ce0ea6346f7cd1 100644
--- a/scapy/utils6.py
+++ b/scapy/utils6.py
@@ -421,8 +421,8 @@ def in6_getRandomizedIfaceId(ifaceid, previous=None):
 
     s = ""
     if previous is None:
-        d = "".join(map(chr, range(256)))
-        for i in range(8):
+        d = "".join(chr(x) for x in xrange(256))
+        for _ in xrange(8):
             s += random.choice(d)
         previous = s
     s = inet_pton(socket.AF_INET6, "::"+ifaceid)[8:] + previous
@@ -456,7 +456,7 @@ def in6_ctop(addr):
         j = _rfc1924map.index(c)
         i = 85*i + j
     res = []
-    for j in range(4):
+    for j in xrange(4):
         res.append(struct.pack("!I", i%2**32))
         i = i/(2**32)
     res.reverse()
@@ -474,7 +474,7 @@ def in6_ptoc(addr):
         return None
     res = 0
     m = [2**96, 2**64, 2**32, 1]
-    for i in range(4):
+    for i in xrange(4):
         res += d[i]*m[i]
     rem = res
     res = []
@@ -776,7 +776,7 @@ def in6_get_common_plen(a, b):
     Return common prefix length of IPv6 addresses a and b.
     """
     def matching_bits(byte1, byte2):
-        for i in range(8):
+        for i in xrange(8):
             cur_mask = 0x80 >> i
             if (byte1 & cur_mask) != (byte2 & cur_mask):
                 return i
@@ -784,7 +784,7 @@ def in6_get_common_plen(a, b):
         
     tmpA = inet_pton(socket.AF_INET6, a)
     tmpB = inet_pton(socket.AF_INET6, b)
-    for i in range(16):
+    for i in xrange(16):
         mbits = matching_bits(ord(tmpA[i]), ord(tmpB[i]))
         if mbits != 8:
             return 8*i + mbits
diff --git a/scapy/volatile.py b/scapy/volatile.py
index f8f62a37657e996040604c9ab04139327ca9c81c..8d8d4ad76c75e53fa1693a4be4f69fc9ffffebf9 100644
--- a/scapy/volatile.py
+++ b/scapy/volatile.py
@@ -47,12 +47,13 @@ class RandomEnumeration:
         while True:
             if self.turns == 0 or (self.i == 0 and self.renewkeys):
                 self.cnt_key = self.rnd.randint(0,2**self.n-1)
-                self.sbox = [self.rnd.randint(0,self.fsmask) for k in xrange(self.sbox_size)]
+                self.sbox = [self.rnd.randint(0, self.fsmask)
+                             for _ in xrange(self.sbox_size)]
             self.turns += 1
             while self.i < 2**self.n:
                 ct = self.i^self.cnt_key
                 self.i += 1
-                for k in range(self.rounds): # Unbalanced Feistel Network
+                for _ in xrange(self.rounds): # Unbalanced Feistel Network
                     lsb = ct & self.fsmask
                     ct >>= self.fs
                     lsb ^= self.sbox[ct%self.sbox_size]
@@ -215,18 +216,18 @@ class RandString(RandField):
         self.chars = chars
     def _fix(self):
         s = ""
-        for i in range(self.size):
+        for _ in xrange(self.size):
             s += random.choice(self.chars)
         return s
 
 class RandBin(RandString):
     def __init__(self, size=None):
-        RandString.__init__(self, size, "".join(map(chr,range(256))))
+        RandString.__init__(self, size, "".join(map(chr, xrange(256))))
 
 
 class RandTermString(RandString):
     def __init__(self, size, term):
-        RandString.__init__(self, size, "".join(map(chr,range(1,256))))
+        RandString.__init__(self, size, "".join(map(chr, xrange(1,256))))
         self.term = term
     def _fix(self):
         return RandString._fix(self)+self.term
@@ -244,7 +245,7 @@ class RandMAC(RandString):
         template += ":*:*:*:*:*"
         template = template.split(":")
         self.mac = ()
-        for i in range(6):
+        for i in xrange(6):
             if template[i] == "*":
                 v = RandByte()
             elif "-" in template[i]:
@@ -292,7 +293,7 @@ class RandIP6(RandString):
                     remain += 1
                 if nbm or self.variable:
                     remain = random.randint(0,remain)
-                for j in range(remain):
+                for j in xrange(remain):
                     ip.append("%04x" % random.randint(0,65535))
             elif n == 0:
               ip.append("0")
@@ -311,7 +312,7 @@ class RandOID(RandString):
         self.ori_fmt = fmt
         if fmt is not None:
             fmt = fmt.split(".")
-            for i in range(len(fmt)):
+            for i in xrange(len(fmt)):
                 if "-" in fmt[i]:
                     fmt[i] = tuple(map(int, fmt[i].split("-")))
         self.fmt = fmt
@@ -361,7 +362,7 @@ class RandRegExp(RandField):
             else:
                 c1 = s[p-1]
                 c2 = s[p+1]
-                rng = "".join(map(chr, range(ord(c1),ord(c2)+1)))
+                rng = "".join(map(chr, xrange(ord(c1), ord(c2)+1)))
                 s = s[:p-1]+rng+s[p+1:]
         res = m+s
         if invert:
@@ -505,7 +506,7 @@ class RandSingNum(RandSingularity):
             end = -end
             sign = -1
         end_n = int(math.log(end)/math.log(2))+1
-        return set([sign*2**i for i in range(end_n)])            
+        return set([sign*2**i for i in xrange(end_n)])            
         
     def __init__(self, mn, mx):
         sing = set([0, mn, mx, int((mn+mx)/2)])
diff --git a/test/regression.uts b/test/regression.uts
index ef1ef8ea75b36485c3c1e8d06107c9ef27a2b7bd..3674e0e7fdd20241c5ff77a6c00a231a5040fb1a 100644
--- a/test/regression.uts
+++ b/test/regression.uts
@@ -1312,7 +1312,7 @@ in6_addrtomac("FE80::" + in6_mactoifaceid("FF:00:00:00:00:00", ulbit=0)) == 'ff:
 ########### RFC 3041 related function ###############################
 = Test in6_getRandomizedIfaceId
 res=True
-for i in range(10):
+for _ in xrange(10):
     s1,s2 = in6_getRandomizedIfaceId('20b:93ff:feeb:2d3')
     inet_pton(socket.AF_INET6, '::'+s1)
     tmp2 = inet_pton(socket.AF_INET6, '::'+s2)