code: def cmd_tcpscan(ip, port, iface, flags, sleeptime, timeout, show_all, verbose):
      
  
      if verbose:
          logging.basicConfig(level=logging.INFO, format='%(message)s')
  
      conf.verb = False
  
      if iface:
          conf.iface = iface
  
      port_regex = r'^[0-9,-]+$'
  
      if not re.match(port_regex, port):
          logging.critical("Invalid port specification")
          return False
  
      ports = []
  
      for p in str(port).split(','):
          if '-' in p:
              first, last = p.split('-')
              for n in range(int(first), int(last)+1):
                  ports.append(n)
          else:
              ports.append(int(p))
  
      out = "{port} {sflags} -> {rflags}"
  
      pkts = IP(dst=ip)/TCP(flags=flags, dport=ports)
  
      if sleeptime:
          res = []
          for pkt in pkts:
              logging.info(pkt.summary())
              _ = sr1(pkt)
              if _:
                  logging.info(_.summary())
                  res.append((pkt, _))
      else:
          res, unans = sr(pkts, verbose=verbose)
  
      for s,r in res:
          if show_all or 'S' in r.sprintf(r"%TCP.flags%"):
              print(out.format(
                  port=s[TCP].dport,
                  sflags=s.sprintf(r"%TCP.flags%"),
                  rflags=r.sprintf(r"%TCP.flags%")
              ))
docs: TCP Port Scanner.
  
      Print the ports that generated a response with the SYN flag or (if show use -a) all the
      ports that generated a response.
  
      It's really basic compared with nmap, but who is comparing?
  
      Example:
  
      \b
      # habu.tcpscan -p 22,23,80,443 -s 1 45.77.113.133
      22 S -> SA
      80 S -> SA
      443 S -> SA