J'ai une petite course, par exemple, à quoi ressemble le code Scapy? Qu'est-ce que Scapy? Scapy is a powerful Python-based interactive packet manipulation program and library. (Citation: https://pypi.org/project/scapy/)
Profane de Python? (Je ne le connais pas), c'était un code assez difficile pour moi.
Tout d'abord, ** autour de la surcharge des méthodes spéciales, le code Je ne comprends pas **, je vais donc prendre note de cet article.
Tous les codes de devis sont https://github.com/secdev/scapy De.
Comment utiliser:
a = IP(dst=dest) / TCP(flags="S", seq=i, sport=65000, dport=55556)
b = IP(dst=dest)/ICMP()
Action: ** Attachez des objets avec "/". ** **
Il est surchargé de code qui ressemble à ceci:
def __div__(self, other):
if isinstance(other, Packet):
cloneA = self.copy()
cloneB = other.copy()
cloneA.add_payload(cloneB)
return cloneA
elif isinstance(other, (bytes, str)):
return self / conf.raw_layer(load=other)
else:
return other.__rdiv__(self)
Comment utiliser:
seq = pkt[TCP].seq
Action: ** [] pour retirer une partie. ** **
Il est surchargé de code qui ressemble à ceci:
def __getitem__(self, cls):
if isinstance(cls, slice):
lname = cls.start
if cls.stop:
ret = self.getlayer(cls.start, nb=cls.stop, **(cls.step or {}))
else:
ret = self.getlayer(cls.start, **(cls.step or {}))
else:
lname = cls
ret = self.getlayer(cls)
if ret is None:
if isinstance(lname, Packet_metaclass):
lname = lname.__name__
elif not isinstance(lname, bytes):
lname = repr(lname)
raise IndexError("Layer [%s] not found" % lname)
return ret
La surcharge ci-dessus semble pratique, elle peut donc également être utilisée dans d'autres modules. Les informations qui peuvent être utiles sont ci-dessous.
Si vous avez des commentaires, veuillez nous le faire savoir. : bonbons: Il peut y avoir beaucoup de ce type de traitement dans d'autres langues également. .. Je suis un peu confus lorsque les symboles de base (opérateurs) sont surchargés pour moi, qui ne connaît que C.
Recommended Posts