s3db.js 19.2.2-next.ab202d14 → 19.2.3

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/s3db.es.js CHANGED
@@ -19844,8 +19844,8 @@ class Database extends SafeEventEmitter {
19844
19844
  })();
19845
19845
  this.version = '1';
19846
19846
  this.s3dbVersion = (() => {
19847
- const [ok, , version] = tryFnSync(() => (typeof globalThis['19.2.2-next.ab202d14'] !== 'undefined' && globalThis['19.2.2-next.ab202d14'] !== '19.2.2-next.ab202d14'
19848
- ? globalThis['19.2.2-next.ab202d14']
19847
+ const [ok, , version] = tryFnSync(() => (typeof globalThis['19.2.3'] !== 'undefined' && globalThis['19.2.3'] !== '19.2.3'
19848
+ ? globalThis['19.2.3']
19849
19849
  : 'latest'));
19850
19850
  return ok ? version : 'latest';
19851
19851
  })();
@@ -84231,141 +84231,6 @@ class DNSDumpsterStage {
84231
84231
  }
84232
84232
  }
84233
84233
 
84234
- /**
84235
- * MassDNSStage
84236
- *
84237
- * High-performance DNS resolution using RedBlue:
84238
- * - Mass subdomain resolution
84239
- * - Wordlist-based brute force
84240
- * - Fast parallel queries
84241
- */
84242
- class MassDNSStage {
84243
- plugin;
84244
- commandRunner;
84245
- config;
84246
- constructor(plugin) {
84247
- this.plugin = plugin;
84248
- this.commandRunner = plugin.commandRunner;
84249
- this.config = plugin.config;
84250
- }
84251
- async execute(target, featureConfig = {}) {
84252
- const wordlist = featureConfig.wordlist || this.config.massdns?.wordlist;
84253
- if (!wordlist) {
84254
- return {
84255
- status: 'error',
84256
- message: 'No wordlist provided for mass DNS resolution',
84257
- host: target.host,
84258
- subdomains: [],
84259
- resolvedCount: 0
84260
- };
84261
- }
84262
- const flags = ['--wordlist', wordlist];
84263
- if (featureConfig.rate) {
84264
- flags.push('--rate', String(featureConfig.rate));
84265
- }
84266
- if (featureConfig.resolvers) {
84267
- flags.push('--resolvers', featureConfig.resolvers);
84268
- }
84269
- const result = await this.commandRunner.runRedBlue('dns', 'record', 'bruteforce', target.host, {
84270
- timeout: featureConfig.timeout || 120000,
84271
- flags
84272
- });
84273
- if (result.status === 'unavailable') {
84274
- return {
84275
- status: 'unavailable',
84276
- message: 'RedBlue (rb) is not available',
84277
- host: target.host,
84278
- subdomains: [],
84279
- resolvedCount: 0,
84280
- metadata: result.metadata
84281
- };
84282
- }
84283
- if (result.status === 'error') {
84284
- return {
84285
- status: 'error',
84286
- message: result.error,
84287
- host: target.host,
84288
- subdomains: [],
84289
- resolvedCount: 0,
84290
- metadata: result.metadata
84291
- };
84292
- }
84293
- const resolved = this._normalizeResolved(result.data, target.host);
84294
- return {
84295
- status: resolved.subdomains.length > 0 ? 'ok' : 'empty',
84296
- host: target.host,
84297
- ...resolved,
84298
- metadata: result.metadata
84299
- };
84300
- }
84301
- _normalizeResolved(data, baseDomain) {
84302
- if (!data || typeof data !== 'object') {
84303
- return { subdomains: [], resolvedCount: 0, totalAttempts: null };
84304
- }
84305
- if (data.raw) {
84306
- return this._parseRawResolved(data.raw, baseDomain);
84307
- }
84308
- const subdomains = [];
84309
- if (Array.isArray(data.subdomains)) {
84310
- subdomains.push(...data.subdomains.map((s) => this._normalizeSubdomain(s)).filter(Boolean));
84311
- }
84312
- else if (Array.isArray(data.results)) {
84313
- subdomains.push(...data.results.map((s) => this._normalizeSubdomain(s)).filter(Boolean));
84314
- }
84315
- else if (Array.isArray(data.resolved)) {
84316
- subdomains.push(...data.resolved.map((s) => this._normalizeSubdomain(s)).filter(Boolean));
84317
- }
84318
- else if (Array.isArray(data)) {
84319
- subdomains.push(...data.map((s) => this._normalizeSubdomain(s)).filter((s) => s !== null));
84320
- }
84321
- return {
84322
- subdomains: subdomains.filter((s) => s !== null),
84323
- resolvedCount: subdomains.length,
84324
- totalAttempts: data.totalAttempts || data.attempts || null
84325
- };
84326
- }
84327
- _normalizeSubdomain(subdomain) {
84328
- if (!subdomain)
84329
- return null;
84330
- if (typeof subdomain === 'string') {
84331
- return { subdomain, ip: null };
84332
- }
84333
- return {
84334
- subdomain: subdomain.subdomain || subdomain.name || subdomain.host || subdomain.domain,
84335
- ip: subdomain.ip || subdomain.address || subdomain.a || null,
84336
- ips: subdomain.ips || subdomain.addresses || null,
84337
- cname: subdomain.cname || null
84338
- };
84339
- }
84340
- _parseRawResolved(raw, baseDomain) {
84341
- const subdomains = [];
84342
- const lines = raw.split('\n').filter(Boolean);
84343
- for (const line of lines) {
84344
- const match = line.match(/^([\w\-\.]+)\.\s+A\s+([\d\.]+)$/);
84345
- if (match) {
84346
- const subdomain = match[1].replace(/\.$/, '');
84347
- const ip = match[2];
84348
- if (subdomain && ip && subdomain.endsWith(baseDomain)) {
84349
- subdomains.push({ subdomain, ip });
84350
- }
84351
- continue;
84352
- }
84353
- const simpleMatch = line.match(/^([\w\-\.]+)\s+([\d\.]+)$/);
84354
- if (simpleMatch) {
84355
- subdomains.push({
84356
- subdomain: simpleMatch[1],
84357
- ip: simpleMatch[2] ?? null
84358
- });
84359
- }
84360
- }
84361
- return {
84362
- subdomains,
84363
- resolvedCount: subdomains.length,
84364
- totalAttempts: null
84365
- };
84366
- }
84367
- }
84368
-
84369
84234
  /**
84370
84235
  * GoogleDorksStage
84371
84236
  *
@@ -87100,12 +86965,6 @@ const DEFAULT_FEATURES = {
87100
86965
  },
87101
86966
  dnsdumpster: {
87102
86967
  enabled: true
87103
- },
87104
- massdns: {
87105
- enabled: false,
87106
- wordlist: null,
87107
- rate: 1000,
87108
- maxSubdomains: 1000
87109
86968
  }
87110
86969
  };
87111
86970
  const BEHAVIOR_PRESETS = {
@@ -87128,7 +86987,6 @@ const BEHAVIOR_PRESETS = {
87128
86987
  secrets: { enabled: false },
87129
86988
  asn: { enabled: true },
87130
86989
  dnsdumpster: { enabled: true },
87131
- massdns: { enabled: false, wordlist: null, rate: 1000, maxSubdomains: 1000 }
87132
86990
  },
87133
86991
  concurrency: 2,
87134
86992
  timeout: { default: 30000 },
@@ -87153,7 +87011,6 @@ const BEHAVIOR_PRESETS = {
87153
87011
  secrets: { enabled: false },
87154
87012
  asn: { enabled: true },
87155
87013
  dnsdumpster: { enabled: true },
87156
- massdns: { enabled: false, wordlist: null, rate: 1000, maxSubdomains: 1000 }
87157
87014
  },
87158
87015
  concurrency: 1,
87159
87016
  timeout: { default: 60000 },
@@ -87178,7 +87035,6 @@ const BEHAVIOR_PRESETS = {
87178
87035
  secrets: { enabled: false },
87179
87036
  asn: { enabled: true },
87180
87037
  dnsdumpster: { enabled: true },
87181
- massdns: { enabled: true, wordlist: null, rate: 5000, maxSubdomains: 5000 }
87182
87038
  },
87183
87039
  concurrency: 8,
87184
87040
  timeout: { default: 120000 },
@@ -87328,7 +87184,6 @@ class ReconPlugin extends Plugin {
87328
87184
  secrets: new SecretsStage(this),
87329
87185
  asn: new ASNStage(this),
87330
87186
  dnsdumpster: new DNSDumpsterStage(this),
87331
- massdns: new MassDNSStage(this),
87332
87187
  googleDorks: new GoogleDorksStage(this)
87333
87188
  };
87334
87189
  }
@@ -87431,9 +87286,6 @@ class ReconPlugin extends Plugin {
87431
87286
  if (scanConfig.dnsdumpster !== false) {
87432
87287
  results.dnsdumpster = await this.stages.dnsdumpster.execute(normalizedTarget, scanConfig.dnsdumpster);
87433
87288
  }
87434
- if (scanConfig.massdns !== false) {
87435
- results.massdns = await this.stages.massdns.execute(normalizedTarget, scanConfig.massdns);
87436
- }
87437
87289
  if (scanConfig.googleDorks !== false) {
87438
87290
  results.googleDorks = await this.stages.googleDorks.execute(normalizedTarget, scanConfig.googleDorks);
87439
87291
  }