about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/tools/security/pentestgpt/default.nix57
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 59 insertions, 0 deletions
diff --git a/pkgs/tools/security/pentestgpt/default.nix b/pkgs/tools/security/pentestgpt/default.nix
new file mode 100644
index 0000000000000..328ba0ca9a8f9
--- /dev/null
+++ b/pkgs/tools/security/pentestgpt/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, fetchFromGitHub
+, python3
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "pentestgpt";
+  version = "unstable-2023-06-27";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "GreyDGL";
+    repo = "PentestGPT";
+    rev = "e63a91f466a035e036827e8f492bc47c5c1135af";
+    hash = "sha256-m0R/kMmbr5Ixuqvw6ZRoaAGCnI3j86Iwk4+TYqv0WbU=";
+  };
+
+  postPatch = ''
+    substituteInPlace requirements.txt \
+      --replace "playwright==1.28.0" "playwright" \
+      --replace "beautifulsoup4~=4.11.2" "" \
+      --replace "black" "" \
+      --replace "pytest" ""
+  '';
+
+  propagatedBuildInputs = with python3.pkgs; [
+    beautifulsoup4
+    colorama
+    google
+    langchain
+    loguru
+    openai
+    playwright
+    prompt-toolkit
+    pycookiecheat
+    pyyaml
+    requests
+    rich
+    sqlmap
+    tiktoken
+  ];
+
+  # Tests require network access
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "pentestgpt"
+  ];
+
+  meta = with lib; {
+    description = "GPT-empowered penetration testing tool";
+    homepage = "https://github.com/GreyDGL/PentestGPT";
+    changelog = "https://github.com/GreyDGL/PentestGPT/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 20b2417f9a414..4144d74c00912 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -33855,6 +33855,8 @@ with pkgs;
   pencil = callPackage ../applications/graphics/pencil {
   };
 
+  pentestgpt = callPackage ../tools/security/pentestgpt { };
+
   perseus = callPackage ../applications/science/math/perseus { };
 
   petrifoo = callPackage ../applications/audio/petrifoo {