Package: pukpuk
pukpukHTTP discovery and change monitoring toolAboutPukpuk ("pook-pook") is a simple utility that stores screenshots and HTTP responses for a given network range or URLs. It does so by looking for open ports, parsing certificates and performing reverse DNS lookups.RequirementsPython 3.8, 3.9, 3.10chromium(for screen grabbing functionality)Basic UsageScan CIDR network using default ports$ pukpuk -N 10.0.0.0/24Scan IP range and examine ports 80/http, 443/https and 8443 (auto-detect)$ pukpuk -N 10.0.1.1-10.0.2.15 -p 80/http,443/https,8443Skip discovery and load URLs from a file$ pukpuk -T urls.txtInstallationUsing PyPI$ pip3 install pukpukTroubleshootinglibgcc_s.so.1 must be installed for pthread_cancel to work$ LD_PRELOAD=libgcc_s.so.1 pukpukDoesn't discover ports that exist for sureIn case of larger scans and possibility of dealing with a firewall experiment with increasing--socket-timeout, using less--workers, splitting the scan into smaller parts using text file input or give randomization a chance.CLIusage: pukpuk [-h] [-N NETWORK] [-H HOSTS] [-U URLS] [-p PORTS] [-b BROWSER] [-r] [-o OUTPUT_DIR] [-u USER_AGENT] [-w WORKERS] [--process-timeout PROCESS_TIMEOUT] [--socket-timeout SOCKET_TIMEOUT] [--skip-screens] [--grabbing-attempts GRABBING_ATTEMPTS] [-v] [-d | -q]

HTTP discovery and change monitoring tool

options:
  -h, --help            show this help message and exit
  -N NETWORK, --network NETWORK
                        Accepts network in CIDR notation or an IP range and performs discovery using ports in `-p`, e.g. "10.0.0.0/24", "10.0.1.1-10.2.1.1"
  -H HOSTS, --hosts HOSTS
                        Loads hosts from a file and performs discovery using ports in `-p`
  -U URLS, --urls URLS  Loads specific URLs from a file, skips discovery and ignores the `-p` argument for these
  -p PORTS, --ports PORTS
                        Comma separated port list for HTTP service discovery [Default: 80/http, 443/https]
  -b BROWSER, --browser BROWSER
                        Chromium browser path for headless screen grabbing [Default: chromium]
  -r, --randomize       Randomize scanning order
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Path where results (text files, images) will be stored [Default: YYYYMMDD_HHMM.pukpuk]
  -u USER_AGENT, --user-agent USER_AGENT
                        Browser User-Agent header [Default: python-requests/2.28.1]
  -w WORKERS, --workers WORKERS
                        Number of concurrent workers [Default: 15]
  --process-timeout PROCESS_TIMEOUT
                        Process timeout in seconds [Default: 20]
  --socket-timeout SOCKET_TIMEOUT
                        Socket timeout in seconds [Default: 3]
  --skip-screens        Skip screen grabbing
  --grabbing-attempts GRABBING_ATTEMPTS
                        Number of screen grabbing attempts [Default: 3]
  -v, --version         Print version
  -d, --debug
  -q, --quietChangelog3.2.0 (2022-08-05)Improved screen capturing.[NEW] CLI arguments changed, it is now possible to use multiple sources for targets, i.e. mix network range, list of URLs, hosts in a file.[NEW] Several screen grabbing attempts (added argument) and a longer process timeout by default. Works better.[NEW] If paths are provided in the URLs file, they will be hashed with md5 when saving output.[NEW] HTTP request headers included with each individual file.3.1.1 (2022-07-23)Fixed regressionTested with Python 3.83.1.0 (2022-07-23)Removed unreliable proxy supportRemoved misleadingnameserveroptionBetter error handlingLogging to file[NEW] Added option for skipping screenshots[NEW] Saving targeted URLs[NEW] Support for IP ranges3.0.0 (2022-07-22)Major refactoring and backward incompatible changesImproved test suite2.0.6 (2022-06-22)Updated requirements2.0.5 (2022-03-23)Updated requirements2.0.4 (2022-01-13)Updated dependency (Pillow)Changed licensing2.0.3 (2021-11-24)Updated dependency (Pillow)Minor refactoring2.0.2 (2021-07-30)Updated dependency (Pillow)2.0.1 (2021-03-31)Updated dependency (Pillow)2.0.0 (2021-01-26)Major refactoringUpdated requirements[NEW] Simplified CLI[NEW] Configuration file support[NEW] HTTP(S) can be omitted, falls back to protocol discovery[NEW] Randomization[NEW] Timeouts now in floats[NEW] Unit tests[FIXED] Grabbing screenshots with self-signed certificates[FIXED] Memory usage1.1.1 (2020-11-26)Hotfix1.1 (2020-11-26)Added support for SOCKS5 proxying1.0 (2020-11-25)Updated Python requirementsRemoved timestamps from file names, no longer needed and makes it easier to diff and track with source versioningStrip whitespaces when loading CSV filesResults now end up in separate subdirectories named after modulesFIXED: Issue with loading from CSV files0.5 (2020-09-20)CSV input and discovery phase skippingMinor improvements in logging and storing results0.4 (2020-09-14)Simplified usage: removed option to launch selected modules since there are only two for nowCreates directory for storing results by defaultSaves logging output by defaultLess detailed logging at info levelAdjusted default timeoutsAdded usage examples0.3 (2020-07-22)Graceful exit, cancelling stepsRemove blank screenshotsAdded timestamp to default logging level0.2 (2020-07-13)Initial commit