pentesting 0.7.12 → 0.7.13
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.
- package/dist/index.js +28 -28
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6512,6 +6512,7 @@ var App = ({ autoApprove = false, target }) => {
|
|
|
6512
6512
|
const [checkpointCount, setCheckpointCount] = useState(0);
|
|
6513
6513
|
const [preInputBuffer, setPreInputBuffer] = useState("");
|
|
6514
6514
|
const [wasInterrupted, setWasInterrupted] = useState(false);
|
|
6515
|
+
const [spinnerHue, setSpinnerHue] = useState(0);
|
|
6515
6516
|
const [, forceUpdate] = useState(0);
|
|
6516
6517
|
const [agent] = useState(() => new AutonomousHackingAgent(void 0, { autoApprove }));
|
|
6517
6518
|
const sessionManager2 = getSessionManager();
|
|
@@ -6564,6 +6565,7 @@ var App = ({ autoApprove = false, target }) => {
|
|
|
6564
6565
|
startTimeRef.current = Date.now();
|
|
6565
6566
|
timerRef.current = setInterval(() => {
|
|
6566
6567
|
setElapsedTime(Math.floor((Date.now() - startTimeRef.current) / 100) / 10);
|
|
6568
|
+
setSpinnerHue((h) => (h + 5) % 360);
|
|
6567
6569
|
}, 100);
|
|
6568
6570
|
}, []);
|
|
6569
6571
|
const stopTimer = useCallback(() => {
|
|
@@ -6630,19 +6632,17 @@ var App = ({ autoApprove = false, target }) => {
|
|
|
6630
6632
|
};
|
|
6631
6633
|
}, []);
|
|
6632
6634
|
useEffect(() => {
|
|
6633
|
-
addMessage(MESSAGE_TYPE.SYSTEM, `
|
|
6634
|
-
\u{1F680} /target <ip> \u2192 /start [goal] | /help for commands
|
|
6635
|
-
\u26A0\uFE0F For authorized penetration testing only. Unauthorized use is illegal.`);
|
|
6635
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `/target <ip> \u2192 /start [goal] | /help for commands`);
|
|
6636
6636
|
if (autoApprove) {
|
|
6637
|
-
addMessage(MESSAGE_TYPE.SYSTEM, "
|
|
6637
|
+
addMessage(MESSAGE_TYPE.SYSTEM, "YOLO Mode: Auto-approving all tool executions");
|
|
6638
6638
|
}
|
|
6639
6639
|
if (target) {
|
|
6640
6640
|
agent.setTarget(target);
|
|
6641
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6641
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Target: ${target}`);
|
|
6642
6642
|
}
|
|
6643
6643
|
onTargetChange((newTarget) => {
|
|
6644
6644
|
agent.setTarget(newTarget);
|
|
6645
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6645
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Target \u2192 ${newTarget}`);
|
|
6646
6646
|
forceUpdate((n) => n + 1);
|
|
6647
6647
|
});
|
|
6648
6648
|
agent.on(AGENT_EVENT.TARGET_SET, () => {
|
|
@@ -6650,6 +6650,9 @@ var App = ({ autoApprove = false, target }) => {
|
|
|
6650
6650
|
});
|
|
6651
6651
|
agent.on(AGENT_EVENT.THOUGHT, (thought) => {
|
|
6652
6652
|
setCurrentStatus(thought.content.slice(0, 60));
|
|
6653
|
+
if (thought.type === "thinking" || thought.type === "reasoning") {
|
|
6654
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `[${thought.type}] ${thought.content.slice(0, 200)}`);
|
|
6655
|
+
}
|
|
6653
6656
|
wireLoggerRef.current?.contentPart(thought.content, thought.type === "thinking");
|
|
6654
6657
|
});
|
|
6655
6658
|
agent.on(AGENT_EVENT.TOOL_CALL, (data) => {
|
|
@@ -6670,12 +6673,12 @@ var App = ({ autoApprove = false, target }) => {
|
|
|
6670
6673
|
wireLoggerRef.current?.stepBegin(data.current);
|
|
6671
6674
|
});
|
|
6672
6675
|
agent.on(AGENT_EVENT.FINDING, (finding) => {
|
|
6673
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6676
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `[${finding.severity.toUpperCase()}] ${finding.title}`);
|
|
6674
6677
|
wireLoggerRef.current?.statusUpdate({ event: "finding", ...finding });
|
|
6675
6678
|
forceUpdate((n) => n + 1);
|
|
6676
6679
|
});
|
|
6677
6680
|
agent.on(AGENT_EVENT.PHASE_CHANGE, (data) => {
|
|
6678
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6681
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Phase: ${data.phaseId}`);
|
|
6679
6682
|
wireLoggerRef.current?.statusUpdate({ event: "phase_change", phase: data.phaseId });
|
|
6680
6683
|
forceUpdate((n) => n + 1);
|
|
6681
6684
|
});
|
|
@@ -6697,7 +6700,7 @@ var App = ({ autoApprove = false, target }) => {
|
|
|
6697
6700
|
toolInput: data.toolInput,
|
|
6698
6701
|
riskLevel: data.riskLevel
|
|
6699
6702
|
});
|
|
6700
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6703
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `APPROVAL NEEDED: ${data.toolName} (${data.riskLevel} risk)`);
|
|
6701
6704
|
const inputPreview = Object.entries(data.toolInput).slice(0, 2).map(([k, v]) => `${k}=${typeof v === "string" ? v.slice(0, 40) : JSON.stringify(v).slice(0, 40)}`).join(", ");
|
|
6702
6705
|
if (inputPreview) {
|
|
6703
6706
|
addMessage(MESSAGE_TYPE.SYSTEM, ` Args: ${inputPreview}`);
|
|
@@ -6722,7 +6725,7 @@ var App = ({ autoApprove = false, target }) => {
|
|
|
6722
6725
|
toolInput: req.toolInput,
|
|
6723
6726
|
riskLevel: req.riskLevel
|
|
6724
6727
|
});
|
|
6725
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6728
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `APPROVAL NEEDED: ${req.toolName} (${req.riskLevel} risk)`);
|
|
6726
6729
|
addMessage(MESSAGE_TYPE.SYSTEM, ` ${req.reason}`);
|
|
6727
6730
|
addMessage(MESSAGE_TYPE.SYSTEM, " /y = approve, /n = deny, /ya = always approve");
|
|
6728
6731
|
});
|
|
@@ -6814,7 +6817,7 @@ pentesting v${APP_VERSION}`
|
|
|
6814
6817
|
const allTargets = agent.getAllTargets();
|
|
6815
6818
|
if (allTargets.length === 0) {
|
|
6816
6819
|
addMessage(MESSAGE_TYPE.SYSTEM, `
|
|
6817
|
-
|
|
6820
|
+
No targets set
|
|
6818
6821
|
|
|
6819
6822
|
Usage:
|
|
6820
6823
|
/target <domain|ip> Set primary target
|
|
@@ -6827,7 +6830,7 @@ Usage:
|
|
|
6827
6830
|
const targetList = allTargets.map(
|
|
6828
6831
|
(t) => t === primary ? ` \u2605 ${t} (primary)` : ` ${t}`
|
|
6829
6832
|
).join("\n");
|
|
6830
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6833
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Targets:
|
|
6831
6834
|
${targetList}`);
|
|
6832
6835
|
}
|
|
6833
6836
|
return;
|
|
@@ -6852,7 +6855,7 @@ ${targetList}`);
|
|
|
6852
6855
|
const list = targets.map(
|
|
6853
6856
|
(t, i) => t === primary ? ` ${i + 1}. \u2605 ${t}` : ` ${i + 1}. ${t}`
|
|
6854
6857
|
).join("\n");
|
|
6855
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6858
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Targets (${targets.length}):
|
|
6856
6859
|
${list}`);
|
|
6857
6860
|
}
|
|
6858
6861
|
break;
|
|
@@ -6884,7 +6887,7 @@ ${list}`);
|
|
|
6884
6887
|
break;
|
|
6885
6888
|
default:
|
|
6886
6889
|
agent.setTarget(subCmd);
|
|
6887
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6890
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Target \u2192 ${subCmd}`);
|
|
6888
6891
|
}
|
|
6889
6892
|
return;
|
|
6890
6893
|
case CLI_COMMAND.START:
|
|
@@ -6898,7 +6901,7 @@ ${list}`);
|
|
|
6898
6901
|
setIsProcessing(true);
|
|
6899
6902
|
startTimer();
|
|
6900
6903
|
const allObjective = args.slice(1).join(" ") || "Perform comprehensive penetration testing";
|
|
6901
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6904
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Starting multi-target attack on ${allTargets.length} targets`);
|
|
6902
6905
|
for (let i = 0; i < allTargets.length; i++) {
|
|
6903
6906
|
const currentTarget = allTargets[i];
|
|
6904
6907
|
if (agent.shouldStop()) {
|
|
@@ -6911,7 +6914,7 @@ ${list}`);
|
|
|
6911
6914
|
forceUpdate((n) => n + 1);
|
|
6912
6915
|
try {
|
|
6913
6916
|
const session = await sessionManager2.createSession(allObjective, currentTarget);
|
|
6914
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6917
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Session: ${session.id}`);
|
|
6915
6918
|
agent.resume();
|
|
6916
6919
|
await agent.runAutonomous(allObjective);
|
|
6917
6920
|
} catch (e) {
|
|
@@ -6939,10 +6942,10 @@ ${list}`);
|
|
|
6939
6942
|
startTimer();
|
|
6940
6943
|
const objective = startObjective || "Perform comprehensive penetration testing";
|
|
6941
6944
|
setCurrentStatus("Initializing...");
|
|
6942
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6945
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Starting: ${objective}`);
|
|
6943
6946
|
try {
|
|
6944
6947
|
const session = await sessionManager2.createSession(objective, agent.getState().target.primary);
|
|
6945
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
6948
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Session: ${session.id}`);
|
|
6946
6949
|
await agent.runAutonomous(objective);
|
|
6947
6950
|
} catch (e) {
|
|
6948
6951
|
addMessage(MESSAGE_TYPE.ERROR, e instanceof Error ? e.message : String(e));
|
|
@@ -7000,7 +7003,7 @@ ${list}`);
|
|
|
7000
7003
|
case "yolo":
|
|
7001
7004
|
const newYoloState = !approvalManager2.getAutoApprovedTools().length;
|
|
7002
7005
|
approvalManager2.setYoloMode(newYoloState);
|
|
7003
|
-
addMessage(MESSAGE_TYPE.SYSTEM, newYoloState ? "
|
|
7006
|
+
addMessage(MESSAGE_TYPE.SYSTEM, newYoloState ? "YOLO mode ON - Auto-approving all tools" : "\u{1F512} YOLO mode OFF - Manual approval required");
|
|
7004
7007
|
return;
|
|
7005
7008
|
case CLI_COMMAND.CLEAR:
|
|
7006
7009
|
case "c":
|
|
@@ -7054,7 +7057,7 @@ ${list}`);
|
|
|
7054
7057
|
const cp = await contextManagerRef.current.checkpoint(description);
|
|
7055
7058
|
setCheckpointCount((prev) => prev + 1);
|
|
7056
7059
|
wireLoggerRef.current?.statusUpdate({ action: "checkpoint", id: cp.id });
|
|
7057
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
7060
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `Checkpoint #${cp.id} created${description ? `: ${description}` : ""}`);
|
|
7058
7061
|
} else {
|
|
7059
7062
|
addMessage(MESSAGE_TYPE.ERROR, "Context manager not initialized");
|
|
7060
7063
|
}
|
|
@@ -7130,7 +7133,7 @@ ${list}`);
|
|
|
7130
7133
|
if (cps.length === 0) {
|
|
7131
7134
|
addMessage(MESSAGE_TYPE.SYSTEM, "No checkpoints");
|
|
7132
7135
|
} else {
|
|
7133
|
-
addMessage(MESSAGE_TYPE.SYSTEM,
|
|
7136
|
+
addMessage(MESSAGE_TYPE.SYSTEM, `${cps.length} Checkpoints:`);
|
|
7134
7137
|
cps.forEach((cp) => {
|
|
7135
7138
|
const time = new Date(cp.timestamp).toLocaleTimeString();
|
|
7136
7139
|
addMessage(MESSAGE_TYPE.SYSTEM, ` #${cp.id} @ ${time} (${cp.messageCount} msgs)${cp.description ? ` - ${cp.description}` : ""}`);
|
|
@@ -7338,7 +7341,7 @@ ${list}`);
|
|
|
7338
7341
|
} }) }),
|
|
7339
7342
|
pendingApproval && /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 1, marginBottom: 1, children: [
|
|
7340
7343
|
/* @__PURE__ */ jsxs2(Text2, { color: "yellow", bold: true, children: [
|
|
7341
|
-
"
|
|
7344
|
+
"APPROVAL NEEDED: ",
|
|
7342
7345
|
pendingApproval.toolName,
|
|
7343
7346
|
" (",
|
|
7344
7347
|
pendingApproval.riskLevel,
|
|
@@ -7353,7 +7356,7 @@ ${list}`);
|
|
|
7353
7356
|
] }),
|
|
7354
7357
|
isProcessing ? /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
|
|
7355
7358
|
/* @__PURE__ */ jsxs2(Box2, { children: [
|
|
7356
|
-
/* @__PURE__ */ jsx2(Text2, { color:
|
|
7359
|
+
/* @__PURE__ */ jsx2(Text2, { color: `hsl(${spinnerHue}, 70%, 60%)`, children: /* @__PURE__ */ jsx2(Spinner, { type: "dots" }) }),
|
|
7357
7360
|
/* @__PURE__ */ jsxs2(Text2, { color: THEME.text.muted, children: [
|
|
7358
7361
|
" ",
|
|
7359
7362
|
currentStatus,
|
|
@@ -7365,10 +7368,7 @@ ${list}`);
|
|
|
7365
7368
|
] })
|
|
7366
7369
|
] }),
|
|
7367
7370
|
preInputBuffer && /* @__PURE__ */ jsxs2(Box2, { marginTop: 1, children: [
|
|
7368
|
-
/* @__PURE__ */
|
|
7369
|
-
"\u2728 ",
|
|
7370
|
-
preInputBuffer
|
|
7371
|
-
] }),
|
|
7371
|
+
/* @__PURE__ */ jsx2(Text2, { color: THEME.text.accent, children: preInputBuffer }),
|
|
7372
7372
|
/* @__PURE__ */ jsx2(Text2, { color: THEME.text.muted, children: "\u258C" })
|
|
7373
7373
|
] }),
|
|
7374
7374
|
/* @__PURE__ */ jsx2(Box2, { marginTop: 1, children: /* @__PURE__ */ jsx2(Text2, { dimColor: true, children: "ESC to interrupt \u2502 Type ahead to queue input" }) })
|
|
@@ -7385,7 +7385,7 @@ ${list}`);
|
|
|
7385
7385
|
pendingApproval ? "/y /n /ya" : ""
|
|
7386
7386
|
].filter((cmd) => cmd && cmd.toLowerCase().includes(input.toLowerCase().slice(1))).slice(0, 5).join(" \u2502 ") }) }),
|
|
7387
7387
|
/* @__PURE__ */ jsxs2(Box2, { children: [
|
|
7388
|
-
/* @__PURE__ */ jsx2(Text2, { color: mode === "agent" ? THEME.status.success : "yellow", children: mode === "agent" ? "
|
|
7388
|
+
/* @__PURE__ */ jsx2(Text2, { color: mode === "agent" ? THEME.status.success : "yellow", children: mode === "agent" ? "" : "$ " }),
|
|
7389
7389
|
/* @__PURE__ */ jsx2(
|
|
7390
7390
|
TextInput,
|
|
7391
7391
|
{
|