Ich habe eine kleine Besorgung, zum Beispiel, wie sieht der Scapy-Code aus? Was ist Scapy? Scapy is a powerful Python-based interactive packet manipulation program and library. (Zitat: https://pypi.org/project/scapy/)
Python-Laie? (Ich bin damit nicht vertraut), aber es war ein ziemlich schwieriger Code für mich.
Erstens ** um die Überladung spezieller Methoden, den Code Ich verstehe ** nicht, deshalb werde ich diesen Artikel notieren.
Alle Angebotscodes sind https://github.com/secdev/scapy Von.
Wie benutzt man:
a = IP(dst=dest) / TCP(flags="S", seq=i, sport=65000, dport=55556)
b = IP(dst=dest)/ICMP()
Aktion: ** Objekte mit "/" anhängen. ** ** **
Es ist mit Code überladen, der so aussieht:
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)
Wie benutzt man:
seq = pkt[TCP].seq
Aktion: ** [] um einen Teil herauszunehmen. ** ** **
Es ist mit Code überladen, der so aussieht:
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
Die obige Überlastung sieht praktisch aus, sodass sie auch in anderen Modulen verwendet werden kann. Informationen, die nützlich sein können, finden Sie unten.
Wenn Sie Kommentare haben, lassen Sie es uns bitte wissen. : Süßigkeiten: Möglicherweise wird diese Art der Verarbeitung auch in anderen Sprachen durchgeführt. .. Ich bin ein wenig verwirrt, wenn die Grundsymbole (Operatoren) für mich überladen sind, der nur über C Bescheid weiß.
Recommended Posts