- KISMET AND DOCKER -

    Kismet can run in docker.  This is maybe of use to some people.
    I am very much not a docker expert; fixes and improvements very
    much welcome!

- BUILDING A DOCKER IMAGE -

    To compile a docker image of Kismet:
        $ docker build -t kismet-git .
    
    This will pull an Ubuntu 16.04, the required dependencies, the 
    latest Kismet git, and build an image named 'kismet-git'.

    By default, the script 'build-kismet.sh' is copied into the docker
    and run for compiling Kismet; this script checks out the git repo,
    runs configure, and make.

    The script uses the 'nproc' program to set a parallel compile flag;
    if your system does not have enough RAM to compile Kismet on
    all your cores, comment out or hardcode a smaller value in 'build-kismet.sh'
    on the line:

    NPROCS="-j $(nproc)"

- CONFIGURING KISMET -

    Configuring Kismet is best done with the kismet_site.conf override
    config; see the Kismet README for more information about how the
    override config works.
    
    Using this file you can enable remote capture, set the server 
    name and attributes, and set the password manually.
    
    Generally, you should either edit this file before building the
    image, or copy it into the container after creation.

- RUNNING KISMET ON DIRECT INTERFACES -

    The Kismet docker will need to run in privileged mode, and the
    network interface will need to be moved into the docker image.
    To accomplish this:
    
        $ docker create -p 2501:2501 -p 3501:3501 --name kismet --privileged kismet-git
        $ docker cp custom_kismet_site.conf kismet:/usr/local/etc/kismet_site.conf
        $ docker run kismet-git
    
    You can then assign interfaces to it using the included script,
    assign_wifi_to_docker.sh:
    
        $ sudo ./assign_wifi_to_docker.sh kismet wlx4494fcf30eb3

    And then enable the interface in Kismet.

- RUNNING KISMET ON REMOTE INTERFACES -

    To run Kismet on truly remote interfaces, or to run Kismet on an interface
    connected to the docker host, without running it in privileged mode or
    having to move interface phys into the Docker container, you can use 
    Kismet's built-in remote interface support.

    First, create a kismet_site.conf file which includes:
        remote_capture_listen=0.0.0.0

    This enables remote capture on the network interface instead of
    localhost only.

    For more options in remote capture, see the Kismet README

    Then create and launch the container as before:
        $ docker create -p 2501:2501 -p 3501:3501 --name kismet-remote kismet-git
        $ docker cp custom_kismet_site.conf kismet-remote:/usr/local/etc/kismet_site.conf
        $ docker run kismet-remote

    Now you can run capture interfaces on the Docker host or on truly 
    remote sources as normal:
        $ kismet_cap_linux_wifi --connect localhost:3501 --source wlx4494fcf30eb3

