erosolar-cli 2.1.195 → 2.1.196

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.
Files changed (44) hide show
  1. package/README.md +14 -0
  2. package/dist/contracts/agent-schemas.json +0 -21
  3. package/dist/contracts/tools.schema.json +0 -16
  4. package/dist/core/agentOrchestrator.d.ts +14 -18
  5. package/dist/core/agentOrchestrator.d.ts.map +1 -1
  6. package/dist/core/agentOrchestrator.js +120 -175
  7. package/dist/core/agentOrchestrator.js.map +1 -1
  8. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  9. package/dist/plugins/tools/nodeDefaults.js +0 -4
  10. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  11. package/dist/shell/interactiveShell.d.ts +0 -8
  12. package/dist/shell/interactiveShell.d.ts.map +1 -1
  13. package/dist/shell/interactiveShell.js +53 -285
  14. package/dist/shell/interactiveShell.js.map +1 -1
  15. package/package.json +1 -1
  16. package/agents/erosolar-security.rules.json +0 -147
  17. package/dist/capabilities/offsecOpsCapability.d.ts +0 -6
  18. package/dist/capabilities/offsecOpsCapability.d.ts.map +0 -1
  19. package/dist/capabilities/offsecOpsCapability.js +0 -19
  20. package/dist/capabilities/offsecOpsCapability.js.map +0 -1
  21. package/dist/capabilities/offsecSearchCapability.d.ts +0 -12
  22. package/dist/capabilities/offsecSearchCapability.d.ts.map +0 -1
  23. package/dist/capabilities/offsecSearchCapability.js +0 -27
  24. package/dist/capabilities/offsecSearchCapability.js.map +0 -1
  25. package/dist/core/offsecAlphaZero.d.ts +0 -59
  26. package/dist/core/offsecAlphaZero.d.ts.map +0 -1
  27. package/dist/core/offsecAlphaZero.js +0 -556
  28. package/dist/core/offsecAlphaZero.js.map +0 -1
  29. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts +0 -3
  30. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts.map +0 -1
  31. package/dist/plugins/tools/offsec/offsecOpsPlugin.js +0 -10
  32. package/dist/plugins/tools/offsec/offsecOpsPlugin.js.map +0 -1
  33. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts +0 -3
  34. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts.map +0 -1
  35. package/dist/plugins/tools/offsec/offsecSearchPlugin.js +0 -12
  36. package/dist/plugins/tools/offsec/offsecSearchPlugin.js.map +0 -1
  37. package/dist/tools/offsec/offsecOperationsTools.d.ts +0 -3
  38. package/dist/tools/offsec/offsecOperationsTools.d.ts.map +0 -1
  39. package/dist/tools/offsec/offsecOperationsTools.js +0 -333
  40. package/dist/tools/offsec/offsecOperationsTools.js.map +0 -1
  41. package/dist/tools/offsecSearchTools.d.ts +0 -3
  42. package/dist/tools/offsecSearchTools.d.ts.map +0 -1
  43. package/dist/tools/offsecSearchTools.js +0 -330
  44. package/dist/tools/offsecSearchTools.js.map +0 -1
@@ -1,333 +0,0 @@
1
- import { execFile } from 'node:child_process';
2
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
3
- import { homedir } from 'node:os';
4
- import { join } from 'node:path';
5
- import { promisify } from 'node:util';
6
- const execFileAsync = promisify(execFile);
7
- const OFFSEC_BASE_DIR = join(homedir(), '.erosolar', 'offsec');
8
- const OFFSEC_RESULTS_DIR = join(OFFSEC_BASE_DIR, 'results');
9
- const DEFAULT_TIMEOUT_MS = 120_000;
10
- export function createOffsecOperationsTools() {
11
- return [
12
- {
13
- name: 'offsec_nmap_scan',
14
- description: 'Run a constrained nmap scan (quick/full/top ports). Saves output to ~/.erosolar/offsec/results.',
15
- parameters: {
16
- type: 'object',
17
- properties: {
18
- target: { type: 'string', description: 'Target host or CIDR (e.g., 10.0.0.0/24)', minLength: 1 },
19
- scan_type: {
20
- type: 'string',
21
- enum: ['quick', 'full', 'top100', 'top1000'],
22
- description: 'Scan profile (default: quick).',
23
- },
24
- timing: { type: 'string', enum: ['T2', 'T3', 'T4'], description: 'Timing template (default: T3).' },
25
- },
26
- required: ['target'],
27
- additionalProperties: false,
28
- },
29
- handler: async (args) => {
30
- const target = typeof args['target'] === 'string' ? args['target'].trim() : '';
31
- if (!target)
32
- return 'Error: target is required.';
33
- const scanType = args['scan_type'] ?? 'quick';
34
- const timing = args['timing'] ?? 'T3';
35
- if (!(await binaryAvailable('nmap'))) {
36
- return 'Error: nmap is not installed or not on PATH.';
37
- }
38
- const cmd = buildNmapArgs(target, scanType, timing);
39
- return runAndRecord('nmap', cmd, DEFAULT_TIMEOUT_MS);
40
- },
41
- },
42
- {
43
- name: 'offsec_dirbust',
44
- description: 'Run directory busting with dirsearch (preferred) or ffuf fallback. Saves output to ~/.erosolar/offsec/results.',
45
- parameters: {
46
- type: 'object',
47
- properties: {
48
- url: { type: 'string', description: 'Base URL to enumerate', minLength: 1 },
49
- wordlist: { type: 'string', description: 'Path to wordlist (default: dirsearch default wordlist)' },
50
- extensions: { type: 'string', description: 'Comma-separated extensions (e.g., php,asp,txt)' },
51
- threads: { type: 'number', description: 'Number of threads (default: 10)' },
52
- },
53
- required: ['url'],
54
- additionalProperties: false,
55
- },
56
- handler: async (args) => {
57
- const url = typeof args['url'] === 'string' ? args['url'].trim() : '';
58
- if (!url)
59
- return 'Error: url is required.';
60
- const wordlist = typeof args['wordlist'] === 'string' ? args['wordlist'].trim() : '';
61
- const extensions = typeof args['extensions'] === 'string' ? args['extensions'].trim() : '';
62
- const threads = Number.isFinite(args['threads']) ? Number(args['threads']) : 10;
63
- if (await binaryAvailable('dirsearch')) {
64
- const cmd = buildDirsearchArgs(url, wordlist, extensions, threads);
65
- return runAndRecord('dirsearch', cmd, DEFAULT_TIMEOUT_MS);
66
- }
67
- if (await binaryAvailable('ffuf')) {
68
- const cmd = buildFfufArgs(url, wordlist);
69
- return runAndRecord('ffuf', cmd, DEFAULT_TIMEOUT_MS);
70
- }
71
- return 'Error: neither dirsearch nor ffuf is available on PATH.';
72
- },
73
- },
74
- {
75
- name: 'offsec_sqlinjection_test',
76
- description: 'Run sqlmap with safe defaults (--batch, low risk/level). Saves output to ~/.erosolar/offsec/results.',
77
- parameters: {
78
- type: 'object',
79
- properties: {
80
- url: { type: 'string', description: 'Target URL with parameter (e.g., https://x/?id=1)', minLength: 1 },
81
- level: { type: 'number', description: 'Sqlmap level (1-5, default 2)' },
82
- risk: { type: 'number', description: 'Sqlmap risk (1-3, default 1)' },
83
- crawl: { type: 'number', description: 'Crawl depth (default 1)' },
84
- },
85
- required: ['url'],
86
- additionalProperties: false,
87
- },
88
- handler: async (args) => {
89
- const url = typeof args['url'] === 'string' ? args['url'].trim() : '';
90
- if (!url)
91
- return 'Error: url is required.';
92
- if (!(await binaryAvailable('sqlmap'))) {
93
- return 'Error: sqlmap is not installed or not on PATH.';
94
- }
95
- const level = clampNumber(args['level'], 2, 1, 5);
96
- const risk = clampNumber(args['risk'], 1, 1, 3);
97
- const crawl = clampNumber(args['crawl'], 1, 0, 3);
98
- const cmd = ['-u', url, '--batch', `--level=${level}`, `--risk=${risk}`, '--smart'];
99
- if (crawl > 0)
100
- cmd.push(`--crawl=${crawl}`);
101
- return runAndRecord('sqlmap', cmd, DEFAULT_TIMEOUT_MS);
102
- },
103
- },
104
- {
105
- name: 'offsec_password_crack',
106
- description: 'Attempt password cracking with john (preferred) or hashcat fallback using a provided hash and wordlist. Saves output to ~/.erosolar/offsec/results.',
107
- parameters: {
108
- type: 'object',
109
- properties: {
110
- hash: { type: 'string', description: 'Hash string to crack', minLength: 6 },
111
- wordlist: { type: 'string', description: 'Path to wordlist (default: /usr/share/wordlists/rockyou.txt if present)' },
112
- format: { type: 'string', description: 'Optional john --format value (auto-detected if omitted)' },
113
- },
114
- required: ['hash'],
115
- additionalProperties: false,
116
- },
117
- handler: async (args) => {
118
- const hash = typeof args['hash'] === 'string' ? args['hash'].trim() : '';
119
- if (!hash)
120
- return 'Error: hash is required.';
121
- const wordlist = resolveWordlist(args['wordlist']);
122
- if (!wordlist)
123
- return 'Error: wordlist not found. Provide wordlist path.';
124
- if (await binaryAvailable('john')) {
125
- return runJohn(hash, wordlist, typeof args['format'] === 'string' ? args['format'] : undefined);
126
- }
127
- if (await binaryAvailable('hashcat')) {
128
- return runHashcat(hash, wordlist);
129
- }
130
- return 'Error: neither john nor hashcat is installed.';
131
- },
132
- },
133
- {
134
- name: 'offsec_payload_gen',
135
- description: 'Generate a harmless payload (base64 marker) or msfvenom template if installed (harmless command payload).',
136
- parameters: {
137
- type: 'object',
138
- properties: {
139
- mode: { type: 'string', enum: ['harmless_base64', 'msfvenom'], description: 'Payload mode (default: harmless_base64).' },
140
- template: {
141
- type: 'string',
142
- description: 'msfvenom payload (default: cmd/unix/reverse_perl). Ignored unless mode=msfvenom.',
143
- },
144
- lhost: { type: 'string', description: 'LHOST for msfvenom (default: 127.0.0.1).' },
145
- lport: { type: 'number', description: 'LPORT for msfvenom (default: 4444).' },
146
- },
147
- additionalProperties: false,
148
- },
149
- handler: async (args) => {
150
- const mode = args['mode'] ?? 'harmless_base64';
151
- if (mode !== 'msfvenom') {
152
- const payload = Buffer.from(`erosolar-offsec-${Date.now()}`).toString('base64');
153
- return `Harmless base64 payload:\n${payload}`;
154
- }
155
- if (!(await binaryAvailable('msfvenom'))) {
156
- return 'Error: msfvenom not installed. Use mode=harmless_base64 instead.';
157
- }
158
- const template = typeof args['template'] === 'string' && args['template'].trim()
159
- ? args['template'].trim()
160
- : 'cmd/unix/reverse_perl';
161
- const lhost = typeof args['lhost'] === 'string' && args['lhost'].trim() ? args['lhost'].trim() : '127.0.0.1';
162
- const lport = clampNumber(args['lport'], 4444, 1, 65535);
163
- const cmd = ['-p', template, `LHOST=${lhost}`, `LPORT=${lport}`, '-f', 'raw'];
164
- return runAndRecord('msfvenom', cmd, DEFAULT_TIMEOUT_MS);
165
- },
166
- },
167
- {
168
- name: 'offsec_exploit_search',
169
- description: 'Search exploits with searchsploit if available (offline exploit-db).',
170
- parameters: {
171
- type: 'object',
172
- properties: {
173
- query: { type: 'string', description: 'Search term (e.g., CVE-2023-1234 or product name)', minLength: 2 },
174
- json: { type: 'boolean', description: 'Return JSON output if supported (default: true).' },
175
- },
176
- required: ['query'],
177
- additionalProperties: false,
178
- },
179
- handler: async (args) => {
180
- const query = typeof args['query'] === 'string' ? args['query'].trim() : '';
181
- if (!query)
182
- return 'Error: query is required.';
183
- if (!(await binaryAvailable('searchsploit'))) {
184
- return 'Error: searchsploit not installed. Install exploitdb/searchsploit to enable this tool.';
185
- }
186
- const useJson = args['json'] !== false;
187
- const cmd = useJson ? ['-j', query] : [query];
188
- return runAndRecord('searchsploit', cmd, 30_000);
189
- },
190
- },
191
- {
192
- name: 'offsec_log_finding',
193
- description: 'Log a critical or high-priority finding to ~/.erosolar/offsec/results for later review (no interactive UI required).',
194
- parameters: {
195
- type: 'object',
196
- properties: {
197
- severity: {
198
- type: 'string',
199
- enum: ['critical', 'high', 'medium', 'low', 'info'],
200
- description: 'Finding severity (default: high)',
201
- },
202
- title: { type: 'string', description: 'Short title of the finding', minLength: 3 },
203
- details: { type: 'string', description: 'Details/evidence for the finding', minLength: 1 },
204
- target: { type: 'string', description: 'Target or scope reference', minLength: 1 },
205
- },
206
- required: ['title', 'details'],
207
- additionalProperties: false,
208
- },
209
- handler: async (args) => {
210
- const severity = args['severity'] ?? 'high';
211
- const title = typeof args['title'] === 'string' ? args['title'].trim() : '';
212
- const details = typeof args['details'] === 'string' ? args['details'].trim() : '';
213
- const target = typeof args['target'] === 'string' ? args['target'].trim() : '';
214
- if (!title || !details) {
215
- return 'Error: title and details are required.';
216
- }
217
- const entry = {
218
- ts: new Date().toISOString(),
219
- severity,
220
- title,
221
- details,
222
- target,
223
- };
224
- const path = writeFinding(entry);
225
- return `Finding logged (${severity}): ${title}\nSaved: ${path}`;
226
- },
227
- },
228
- ];
229
- }
230
- function clampNumber(value, fallback, min, max) {
231
- if (typeof value !== 'number' || Number.isNaN(value))
232
- return fallback;
233
- return Math.min(Math.max(value, min), max);
234
- }
235
- async function binaryAvailable(command) {
236
- try {
237
- await execFileAsync('which', [command]);
238
- return true;
239
- }
240
- catch {
241
- return false;
242
- }
243
- }
244
- function ensureResultsDir() {
245
- if (!existsSync(OFFSEC_RESULTS_DIR)) {
246
- mkdirSync(OFFSEC_RESULTS_DIR, { recursive: true });
247
- }
248
- }
249
- async function runAndRecord(command, args, timeoutMs) {
250
- ensureResultsDir();
251
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
252
- const outfile = join(OFFSEC_RESULTS_DIR, `${timestamp}-${command}.log`);
253
- try {
254
- const { stdout, stderr } = await execFileAsync(command, args, {
255
- timeout: timeoutMs,
256
- maxBuffer: 10 * 1024 * 1024,
257
- });
258
- const combined = [stdout, stderr].filter(Boolean).join('\n').trim() || '(no output)';
259
- writeFileSync(outfile, combined);
260
- return `Command: ${command} ${args.join(' ')}\nSaved: ${outfile}\n\n${combined}`;
261
- }
262
- catch (error) {
263
- const combined = [error?.stdout, error?.stderr, error?.message].filter(Boolean).join('\n').trim();
264
- writeFileSync(outfile, combined || 'No output');
265
- if (error?.killed) {
266
- return `Command timed out after ${timeoutMs}ms. Saved output: ${outfile}`;
267
- }
268
- return `Command failed (saved to ${outfile}):\n${combined || '(no output)'}`;
269
- }
270
- }
271
- function buildNmapArgs(target, scanType, timing) {
272
- const timingFlag = ['T2', 'T3', 'T4'].includes(timing) ? `-${timing}` : '-T3';
273
- switch (scanType) {
274
- case 'full':
275
- return ['-sS', '-Pn', timingFlag, '-p-', target];
276
- case 'top100':
277
- return ['-sV', '-Pn', timingFlag, '--top-ports', '100', target];
278
- case 'top1000':
279
- return ['-sV', '-Pn', timingFlag, '--top-ports', '1000', target];
280
- case 'quick':
281
- default:
282
- return ['-sV', '-Pn', timingFlag, '--top-ports', '200', target];
283
- }
284
- }
285
- function buildDirsearchArgs(url, wordlist, extensions, threads) {
286
- const args = ['-u', url, '-t', String(threads || 10), '--random-agent'];
287
- if (wordlist)
288
- args.push('-w', wordlist);
289
- if (extensions)
290
- args.push('-e', extensions);
291
- args.push('--plain-text-report', join(OFFSEC_RESULTS_DIR, `dirsearch-${Date.now()}.txt`));
292
- return args;
293
- }
294
- function buildFfufArgs(url, wordlist) {
295
- const wl = wordlist || '/usr/share/wordlists/dirb/common.txt';
296
- return ['-u', `${url.replace(/FUZZ/gi, 'FUZZ')}/FUZZ`, '-w', wl, '-mc', '200,204,301,302,307,401,403,500'];
297
- }
298
- function resolveWordlist(raw) {
299
- if (typeof raw === 'string' && raw.trim()) {
300
- return raw.trim();
301
- }
302
- const common = ['/usr/share/wordlists/rockyou.txt', '/usr/share/wordlists/rockyou.txt.gz'];
303
- for (const candidate of common) {
304
- if (existsSync(candidate))
305
- return candidate;
306
- }
307
- return null;
308
- }
309
- async function runJohn(hash, wordlist, format) {
310
- ensureResultsDir();
311
- const hashFile = join(OFFSEC_RESULTS_DIR, `john-hash-${Date.now()}.txt`);
312
- writeFileSync(hashFile, `${hash}\n`);
313
- const args = ['--wordlist=' + wordlist, hashFile];
314
- if (format)
315
- args.push(`--format=${format}`);
316
- return runAndRecord('john', args, DEFAULT_TIMEOUT_MS);
317
- }
318
- async function runHashcat(hash, wordlist) {
319
- ensureResultsDir();
320
- const hashFile = join(OFFSEC_RESULTS_DIR, `hashcat-hash-${Date.now()}.txt`);
321
- writeFileSync(hashFile, `${hash}\n`);
322
- // Mode not provided; use straight dictionary (-a 0) with automatic hash-type detection (-m 0 is md5; here we rely on --hash-type=0 as a safe default).
323
- const args = ['-a', '0', '-m', '0', hashFile, wordlist, '--force'];
324
- return runAndRecord('hashcat', args, DEFAULT_TIMEOUT_MS);
325
- }
326
- function writeFinding(entry) {
327
- ensureResultsDir();
328
- const file = join(OFFSEC_RESULTS_DIR, 'findings.log');
329
- const line = JSON.stringify(entry);
330
- writeFileSync(file, `${line}\n`, { flag: 'a' });
331
- return file;
332
- }
333
- //# sourceMappingURL=offsecOperationsTools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecOperationsTools.js","sourceRoot":"","sources":["../../../src/tools/offsec/offsecOperationsTools.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from '../core/toolRuntime.js';
2
- export declare function createOffsecSearchTools(): ToolDefinition[];
3
- //# sourceMappingURL=offsecSearchTools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecSearchTools.d.ts","sourceRoot":"","sources":["../../src/tools/offsecSearchTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA+C7D,wBAAgB,uBAAuB,IAAI,cAAc,EAAE,CAyE1D"}