pentesting 0.5.5 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,8 +8,8 @@ import {
8
8
  readVersionCache,
9
9
  semverTuple,
10
10
  writeVersionCache
11
- } from "./chunk-ZC53SMRU.js";
12
- import "./chunk-FHPP7RP2.js";
11
+ } from "./chunk-TK3QEEDA.js";
12
+ import "./chunk-CKXQT3ON.js";
13
13
  import "./chunk-3RG5ZIWI.js";
14
14
  export {
15
15
  checkForUpdate,
@@ -94,6 +94,7 @@ var TOOL_NAME = {
94
94
  WRITE_FILE: "write_file",
95
95
  LIST_DIRECTORY: "list_directory",
96
96
  // Network
97
+ RUSTSCAN: "rustscan",
97
98
  NMAP_SCAN: "nmap_scan",
98
99
  TCPDUMP_CAPTURE: "tcpdump_capture",
99
100
  // Web
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  APP_NAME,
3
3
  APP_VERSION
4
- } from "./chunk-FHPP7RP2.js";
4
+ } from "./chunk-CKXQT3ON.js";
5
5
 
6
6
  // src/core/update/auto-update.ts
7
7
  import { execSync } from "child_process";
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  PHASE_STATUS,
16
16
  THOUGHT_TYPE,
17
17
  TOOL_NAME
18
- } from "./chunk-FHPP7RP2.js";
18
+ } from "./chunk-CKXQT3ON.js";
19
19
  import {
20
20
  __require
21
21
  } from "./chunk-3RG5ZIWI.js";
@@ -284,16 +284,46 @@ IMPORTANT:
284
284
  }
285
285
  ];
286
286
  var NETWORK_TOOLS = [
287
+ {
288
+ name: TOOL_NAME.RUSTSCAN,
289
+ description: `Ultra-fast port scanner written in Rust. Use as FIRST scan for quick discovery.
290
+
291
+ Rustscan is 10x faster than nmap for port discovery. Strategy:
292
+ 1. Run rustscan first to find open ports quickly
293
+ 2. Then use nmap with -sV on discovered ports for service detection
294
+
295
+ BATCH SIZES:
296
+ - 5000: Safe for most networks
297
+ - 10000: Fast, may miss some ports
298
+ - 65535: Full scan, slower but comprehensive`,
299
+ input_schema: {
300
+ type: "object",
301
+ properties: {
302
+ target: { type: "string", description: "Target IP/hostname/CIDR" },
303
+ ports: { type: "string", description: 'Port range (e.g., "1-65535" or "22,80,443")' },
304
+ batch_size: { type: "number", description: "Batch size (default: 5000)" },
305
+ timeout: { type: "number", description: "Timeout in ms (default: 1500)" },
306
+ ulimit: { type: "number", description: "File descriptor limit (default: 5000)" },
307
+ greppable: { type: "boolean", description: "Output in greppable format" },
308
+ nmap_args: { type: "string", description: 'Additional args to pass to nmap (e.g., "-sV -sC")' }
309
+ },
310
+ required: ["target"]
311
+ }
312
+ },
287
313
  {
288
314
  name: TOOL_NAME.NMAP_SCAN,
289
- description: `Network scanning with nmap.
315
+ description: `Network scanning with nmap. Use AFTER rustscan for detailed service detection.
290
316
 
317
+ RECOMMENDED WORKFLOW:
318
+ 1. rustscan first \u2192 fast port discovery
319
+ 2. nmap -sV -sC on discovered ports \u2192 service/version detection
320
+
291
321
  SCAN TYPES:
292
322
  - discovery: Host discovery only (-sn)
293
- - quick: Fast port scan (-F -T4)
294
- - full: All 65535 ports (-p-)
323
+ - quick: Fast port scan (-F -T4)
324
+ - full: All 65535 ports (-p-) - USE RUSTSCAN INSTEAD
295
325
  - stealth: SYN scan with slow timing (-sS -T2)
296
- - service: Version detection (-sV -sC)
326
+ - service: Version detection (-sV -sC) - USE ON OPEN PORTS
297
327
  - vuln: Vulnerability scripts (--script vuln)
298
328
  - udp: UDP scan (-sU --top-ports 100)
299
329
  - aggressive: Full aggressive scan (-A)`,
@@ -688,6 +718,7 @@ var execAsync = promisify(exec);
688
718
  var DOCKER_CONTAINER = process.env.PENTESTING_CONTAINER || "pentesting-tools";
689
719
  var FORCE_DOCKER = process.env.PENTESTING_DOCKER === "1";
690
720
  var DOCKER_TOOLS = [
721
+ "rustscan",
691
722
  "nmap",
692
723
  "masscan",
693
724
  "gobuster",
@@ -788,6 +819,9 @@ async function executeToolCall(toolName, input) {
788
819
  );
789
820
  break;
790
821
  // network scanning
822
+ case "rustscan":
823
+ result = await executeRustscan(input);
824
+ break;
791
825
  case "nmap_scan":
792
826
  result = await executeNmapScan(input);
793
827
  break;
@@ -958,6 +992,35 @@ async function listDirectory(dirPath, recursive = false, hidden = false) {
958
992
  return { success: false, output: "", error: error.message, duration: 0 };
959
993
  }
960
994
  }
995
+ async function executeRustscan(input) {
996
+ const { target, ports, batch_size, timeout, ulimit, greppable, nmap_args } = input;
997
+ let cmd = `rustscan -a ${target}`;
998
+ if (ports) {
999
+ cmd += ` -p ${ports}`;
1000
+ } else {
1001
+ cmd += ` -r 1-65535`;
1002
+ }
1003
+ if (batch_size) {
1004
+ cmd += ` -b ${batch_size}`;
1005
+ } else {
1006
+ cmd += ` -b 5000`;
1007
+ }
1008
+ if (timeout) {
1009
+ cmd += ` -t ${timeout}`;
1010
+ } else {
1011
+ cmd += ` -t 1500`;
1012
+ }
1013
+ if (ulimit) {
1014
+ cmd += ` -u ${ulimit}`;
1015
+ }
1016
+ if (greppable) {
1017
+ cmd += ` -g`;
1018
+ }
1019
+ if (nmap_args) {
1020
+ cmd += ` -- ${nmap_args}`;
1021
+ }
1022
+ return executeBash(cmd, { timeout: 3e5 });
1023
+ }
961
1024
  async function executeNmapScan(input) {
962
1025
  const { target, scan_type, ports, scripts, output_file } = input;
963
1026
  const scanFlags = {
@@ -4840,31 +4903,31 @@ function hasClipboardImage() {
4840
4903
 
4841
4904
  // src/config/theme.ts
4842
4905
  var THEME = {
4843
- // Primary backgrounds (dark purple tones)
4906
+ // Primary backgrounds (dark tones with pink undertone)
4844
4907
  bg: {
4845
- primary: "#0d0d1a",
4846
- // Deep dark purple
4847
- secondary: "#13131f",
4908
+ primary: "#0d0a0d",
4909
+ // Deep dark with pink undertone
4910
+ secondary: "#13101a",
4848
4911
  // Slightly lighter
4849
- tertiary: "#1a1a2e",
4850
- // Accent purple
4851
- elevated: "#1f1f33",
4912
+ tertiary: "#1a1420",
4913
+ // Accent dark pink
4914
+ elevated: "#1f1828",
4852
4915
  // Cards/modals
4853
- input: "#0a0a12"
4916
+ input: "#0a080c"
4854
4917
  // Input background
4855
4918
  },
4856
- // Text colors (lavender-tinted)
4919
+ // Text colors (pink-tinted)
4857
4920
  text: {
4858
- primary: "#e8e8f0",
4859
- // Soft lavender white
4860
- secondary: "#a8a8b8",
4861
- // Purple-gray
4862
- muted: "#6b6b7d",
4863
- // Muted purple-gray
4864
- accent: "#b794f6",
4865
- // Soft purple (pentesting identity)
4866
- highlight: "#f0abfc"
4867
- // Pink highlight
4921
+ primary: "#f0e8ec",
4922
+ // Soft pink white
4923
+ secondary: "#b8a8b0",
4924
+ // Pink-gray
4925
+ muted: "#7d6b75",
4926
+ // Muted pink-gray
4927
+ accent: "#f9a8d4",
4928
+ // Soft pink (pentesting identity) 연분홍
4929
+ highlight: "#fbcfe8"
4930
+ // Light pink highlight
4868
4931
  },
4869
4932
  // Status colors (cyber-security themed) - Enhanced!
4870
4933
  status: {
@@ -4876,8 +4939,8 @@ var THEME = {
4876
4939
  // Coral red (failed)
4877
4940
  info: "#60a5fa",
4878
4941
  // Sky blue (scanning)
4879
- running: "#a78bfa",
4880
- // Violet (active operations)
4942
+ running: "#f472b6",
4943
+ // Pink (active operations)
4881
4944
  pending: "#facc15"
4882
4945
  // Yellow (waiting)
4883
4946
  },
@@ -4891,15 +4954,15 @@ var THEME = {
4891
4954
  // Vivid yellow
4892
4955
  low: "#22c55e",
4893
4956
  // Bright green
4894
- info: "#8b5cf6"
4895
- // Violet
4957
+ info: "#f472b6"
4958
+ // Pink
4896
4959
  },
4897
- // Border colors (purple-tinted)
4960
+ // Border colors (pink-tinted)
4898
4961
  border: {
4899
- default: "#2e2e42",
4900
- // Subtle purple-gray
4901
- focus: "#a78bfa",
4902
- // Violet focus
4962
+ default: "#3d2e38",
4963
+ // Subtle pink-gray
4964
+ focus: "#f472b6",
4965
+ // Pink focus
4903
4966
  error: "#f87171",
4904
4967
  // Red error
4905
4968
  success: "#4ade80"
@@ -4907,8 +4970,8 @@ var THEME = {
4907
4970
  },
4908
4971
  // Phase colors (attack lifecycle) - Vibrant gradient-inspired
4909
4972
  phase: {
4910
- recon: "#818cf8",
4911
- // Indigo (reconnaissance)
4973
+ recon: "#f9a8d4",
4974
+ // Soft pink (reconnaissance)
4912
4975
  enum: "#34d399",
4913
4976
  // Emerald (enumeration)
4914
4977
  vuln: "#fbbf24",
@@ -4917,13 +4980,17 @@ var THEME = {
4917
4980
  // Orange (exploitation)
4918
4981
  privesc: "#f87171",
4919
4982
  // Red (privilege escalation)
4920
- persist: "#c084fc",
4921
- // Purple (persistence)
4983
+ persist: "#f472b6",
4984
+ // Pink (persistence)
4922
4985
  report: "#22d3ee"
4923
4986
  // Cyan (reporting)
4924
4987
  },
4925
4988
  // Rich accent colors for UI elements
4926
4989
  accent: {
4990
+ pink: "#f472b6",
4991
+ // Primary identity
4992
+ rose: "#fb7185",
4993
+ fuchsia: "#e879f9",
4927
4994
  purple: "#a855f7",
4928
4995
  violet: "#8b5cf6",
4929
4996
  indigo: "#6366f1",
@@ -4936,14 +5003,12 @@ var THEME = {
4936
5003
  yellow: "#eab308",
4937
5004
  amber: "#f59e0b",
4938
5005
  orange: "#f97316",
4939
- red: "#ef4444",
4940
- pink: "#ec4899",
4941
- rose: "#f43f5e"
5006
+ red: "#ef4444"
4942
5007
  },
4943
5008
  // Gradients (for special UI elements)
4944
5009
  gradient: {
4945
- purple: ["#7c3aed", "#a855f7"],
4946
- cyber: ["#06b6d4", "#8b5cf6"],
5010
+ pink: ["#ec4899", "#f9a8d4"],
5011
+ cyber: ["#06b6d4", "#f472b6"],
4947
5012
  danger: ["#ef4444", "#f97316"],
4948
5013
  success: ["#10b981", "#22c55e"],
4949
5014
  gold: ["#f59e0b", "#fbbf24"]
@@ -5284,7 +5349,7 @@ var App = ({ autoApprove = false, target }) => {
5284
5349
  setCheckpointCount(contextManagerRef.current?.getCheckpoints().length || 0);
5285
5350
  }
5286
5351
  });
5287
- import("./auto-update-IDSABTT4.js").then(({ checkForUpdateAsync, formatUpdateNotification }) => {
5352
+ import("./auto-update-CVZG3YKL.js").then(({ checkForUpdateAsync, formatUpdateNotification }) => {
5288
5353
  checkForUpdateAsync().then((result) => {
5289
5354
  if (result.hasUpdate) {
5290
5355
  const notification = formatUpdateNotification(result);
@@ -5878,7 +5943,7 @@ ${list}`);
5878
5943
  return;
5879
5944
  case "update":
5880
5945
  try {
5881
- const { checkForUpdate, formatUpdateNotification, doUpdate } = await import("./update-OWR4FHRQ.js");
5946
+ const { checkForUpdate, formatUpdateNotification, doUpdate } = await import("./update-B6HRINH6.js");
5882
5947
  const result = checkForUpdate(true);
5883
5948
  if (result.hasUpdate) {
5884
5949
  const notification = formatUpdateNotification(result);
@@ -8,8 +8,8 @@ import {
8
8
  readVersionCache,
9
9
  semverTuple,
10
10
  writeVersionCache
11
- } from "./chunk-ZC53SMRU.js";
12
- import "./chunk-FHPP7RP2.js";
11
+ } from "./chunk-TK3QEEDA.js";
12
+ import "./chunk-CKXQT3ON.js";
13
13
  import "./chunk-3RG5ZIWI.js";
14
14
  export {
15
15
  checkForUpdate,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pentesting",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "Autonomous Penetration Testing AI Agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",