{ lib, pkgs, config, ... }:
with lib;
let cfg = config.link.pentesting;
in {
  options.link.pentesting.enable = mkEnableOption "activate pentesting";
  config = mkIf cfg.enable {
    home.packages = with pkgs; [
      legba # general purpose brute forcer/ enumerator
      responder
      caido # web framework
      clairvoyance # graphql schema obtainer
      unicode-paracode
      subfinder
      rustscan
      angryipscanner
      cvemap
      go-dork
      zgrab2
      vulnix
      macchanger
      seclists
      # wordlists
      # xxd
      socat
      tcpdump
      p0f # Passive network reconnaissance and fingerprinting tool
      nmap
      rustscan # rust nmap alternative
      zmap # VERY fast network scanner
      zgrab2 # zmap with more details per host
      netexec # Swiss army knife for pentesting networks, previously crackmapexec
      netdiscover
      arp-scan
      amass # DNS Enumeration and Network Mapping
      dirb
      gobuster
      ## DNS
      dnsrecon
      dnsenum
      dnstracer
      certgraph # crawl the graph of certificate alternate names
      ## SMB
      smbmap # SMB enumeration tool
      # Network
      metasploit
      testssl
      # routersploit
      dsniff
      thc-hydra # simple login cracker
      ncrack # Network authentication tool
      gotestwaf # API and OWASP attack simulation
      sshchecker # ssh brute force
      ssh-audit
      snmpcheck # snmp enumerator
      sqlmap # sql injection
      # xsser # XSS # broken 240721
      dalfox # alternative to xsser
      exploitdb # Public exploit archive
      log4jcheck
      lmp # log4j, test both
      osv-scanner # scanner for osv.dev vuln db
      commix # Command Injection
      ## MITM
      bettercap
      ettercap
      mitmproxy
      # mitmproxy2swagger # for REST APIs
      websploit
      # ssh-mitm
      dnschef
      ## Active Directory
      # adreaper
      # silenthound
      # adalanche
      # lil-pwny # Offline auditing of Active Directory passwords
      # knowsmore
      # bloodhound
      # autobloody
      # ad-miner
      # kube-hunter # Kubernetes
      ## Interaction
      iputils # Telnet, tracroute
      dig
      ## Sniffing
      wireshark
      #netsniff-ng
      # Web
      wget
      curl
      chromium
      (burpsuite.override { proEdition = true; })#.overrideAttrs
      #{ targetPkgs =  [ pkgs.mesa ]; })
      zap
      nikto # noisy web app scanner
      nuclei
      whatweb # Web scanner
      wapiti # web app vuln scanner
      wpscan # wordpress
      wprecon # wordpress
      wafw00f # identify and fingerprint Web Application Firewalls (WAF)
      waf-tester
      crlfuzz # CRLF
      ffuf # web fuzzer
      # postman # API
      # Cracking
      crunch # generate wordlist
      cewl # generate custom wordlist
      john
      johnny # john the ripper GUI
      hashcat
      # Social Engineering
      social-engineer-toolkit
      #deepsea # Phishing # broken
      # WLAN
      aircrack-ng
      airgeddon # TUI for automating aircrack
      hcxtools # cap->hash
      hcxdumptool
      wifite2
      hostapd
      #dhcp
      lighttpd
      httprobe
      httpie
      xh
      # dnsmasq
      #? beef
      ## SDR
      sdrpp
      hackrf
      urh
      # qradiolink
      sdrangel
      gnuradio
      kalibrate-hackrf
      gqrx-gr-audio
      # Android
      # android-tools
      android-studio
      #ghost # Android post-exploitation framework
      # Cryptography
      cyberchef
      stegseek # crack steganography
      steghide # steganography
      # OSINT
      theharvester # Gather E-mails, subdomains and names from different public sources
      octosuite # Github
      # git-hound # broken
      # sn0int
      metabigor
      asn # network data
      thc-ipv6
      # Dorks
      go-dork
      # Reversing
      pwndbg
      pwntools
      ghidra
      ghidra-extensions.machinelearning
      ghidra-extensions.gnudisassembler
      ghidra-extensions.ghidraninja-ghidra-scripts
      cutter
      cutterPlugins.rz-ghidra
      cutterPlugins.sigdb
      ## Bug finder
      #findbugs # java
      #brakeman # ruby on rails
      #bandit # python
      #cppcheck # C,C++
      #cve-bin-tool binary
      # regexploit # regex DOS scanner
      ## Android
      # apktool
    ];
  };
}
