title: Scapy & Docker: Get container's IP address w/o using Container ID?
body: <p>What is the easiest way to compare IP addresses using Scapy (in Python3.6) and Docker? I have a piece of code that sniffs my Docker bridge network using Scapy sniff(). I want to look at each packet's source IP address, and if it matches the IP address for my container named &quot;plc1&quot;, do additional steps. If they don't match, I just return an empty list and move on.</p>
  <p>However I cannot figure out how to compare a packet's source IP address to a container name. It really needs to be the container's name and not the ID, since I am running a ton of containers in parallel and looking up ID's to plug into my Python3.6 script is tedious. Any thoughts? I've tried using the Docker SDK but it needs the Container ID, which is what I am trying to avoid...</p>
  <p>Sample Python3.6 code, which does not work, included below:</p>
  <pre><code>#!/usr/bin/env python3
  from scapy.all import *
  
  def find_ports(pkt):
      # if src IPaddr matches IP addr of container plc1...
      if pkt[IP].src == 'plc1': # THIS DOES NOT WORK
          # if there is a match, get some additional packet info
          if TCP in pkt:
              tcp_dport = pkt[TCP].dport
              ip_total_len = pkt.getlayer(IP).len
              ip_header_len = pkt.getlayer(IP).ihl * 32 / 8
              tcp_header_len = pkt.getlayer(TCP).dataofs * 32 / 8
              tcp_seg_len = ip_total_len - ip_header_len - tcp_header_len
              sequence_num = pkt[1].ack
              return [tcp_dport, tcp_seg_len, sequence_num]
      # else if NO MATCHING ip addr's, return blank list...
      else:
          return []
  
  
  tempList = sniff(filter=&quot;ip&quot;, prn=find_ports, iface=&quot;br-19f0ba1cf88f&quot;)
  
  # if templist not empty...
  if tempList:
      # send a TCP RST packet...
      ip = IP(src=&quot;plc1&quot;, dst=&quot;hmi_pass_thru&quot;)
      tcp = TCP(sport=502, dport=tempList[0], flags=&quot;R&quot;, seq=int(tempList[1]), ack=int(tempList[2]) + 1)
      pkt = ip / tcp
      ls(pkt)
      send(pkt, verbose=0)
  </code></pre>