私はどちらかというと Python の初心者ですが、もう少し独学するために、小さな個人プロジェクトを始めました。基本的に、ソケットとインパケットを使用してパケット スニファーを作成しています。ただし、行き詰まっているのは特定のポイントです。ヘッダーとパケットからの出力を1つの変数に結合することです(辞書を考えていましたが、それは好きではありませんでした...)。 1 つの特定の部分ソース IP (つまり、最初の 2 オクテット) の IP ヘッダー。または、これを処理するより効率的な方法はありますか? どんな助けでも大歓迎です。:-)
編集:辞書を試していたとき、私はやっていた
ip_dict = { header: packet }
ただし、得られる出力は次のようになります。
{<impacket.ImpactPacket.IP instance at 0x02563440>: <impacket.ImpactPacket.Data instance at 0x02563530>}
上記の IP ヘッダーとデータの実際の出力とは対照的です。
HOST = socket.gethostbyname(socket.gethostname())
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
while True:
# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# receive all packages
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# receive a packet
packet = s.recvfrom(42028)[0]
# look at IP info
h_decode = ImpactDecoder.IPDecoder()
header = h_decode.decode(packet)
# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
decoder = ImpactDecoder.DataDecoder()
packet = decoder.decode(packet)
print header
print packet
time.sleep(1)