ioc-extractor
Version:
IoC (Indicator of Compromise) extractor
132 lines (129 loc) • 3.29 kB
JavaScript
import {
extractASNs,
extractBTCs,
extractCVEs,
extractDomains,
extractETHs,
extractEmails,
extractGAPubIDs,
extractGATrackIDs,
extractIPv4s,
extractIPv6s,
extractMD5s,
extractMacAddresses,
extractSHA1s,
extractSHA256s,
extractSHA512s,
extractSSDEEPs,
extractURLs,
extractXMRs
} from "./chunk-7HCTUD4R.js";
import {
refang,
unicodeToASCII
} from "./chunk-AUD6FQ2X.js";
// src/index.ts
var IOCExtractor = class {
s;
constructor(s) {
this.s = s;
}
/**
* Extract IoCs from a string
*
* @returns {IOC}
* @param {Options} options
* @memberof IOCExtractor
*/
extractIOC(options = {
strict: true,
refang: true,
punycode: false,
sort: true
}) {
let normalized = options.refang ? refang(this.s) : this.s;
normalized = options.punycode ? unicodeToASCII(normalized) : normalized;
const ioc = {
asns: extractASNs(normalized, options),
btcs: extractBTCs(normalized, options),
cves: extractCVEs(normalized, options),
domains: extractDomains(normalized, options),
emails: extractEmails(normalized, options),
eths: extractETHs(normalized, options),
gaPubIDs: extractGAPubIDs(normalized, options),
gaTrackIDs: extractGATrackIDs(normalized, options),
ipv4s: extractIPv4s(normalized, options),
ipv6s: extractIPv6s(normalized, options),
macAddresses: extractMacAddresses(normalized, options),
md5s: extractMD5s(normalized, options),
sha1s: extractSHA1s(normalized, options),
sha256s: extractSHA256s(normalized, options),
sha512s: extractSHA512s(normalized, options),
ssdeeps: extractSSDEEPs(normalized, options),
urls: extractURLs(normalized, options),
xmrs: extractXMRs(normalized, options)
};
return ioc;
}
/**
* Partially extract IoCs a string
*
* @returns {IOC}
* @param {IOCKey[]} only
* @param {Options} options
* @memberof IOCExtractor
*/
partialExtractIOC(only, options = {
strict: true,
refang: true,
punycode: false,
sort: true
}) {
let normalized = options.refang ? refang(this.s) : this.s;
normalized = options.punycode ? unicodeToASCII(normalized) : normalized;
const funcByType = {
asns: extractASNs,
btcs: extractBTCs,
cves: extractCVEs,
domains: extractDomains,
emails: extractEmails,
eths: extractETHs,
gaPubIDs: extractGAPubIDs,
gaTrackIDs: extractGATrackIDs,
ipv4s: extractIPv4s,
ipv6s: extractIPv6s,
macAddresses: extractMacAddresses,
md5s: extractMD5s,
sha1s: extractSHA1s,
sha256s: extractSHA256s,
sha512s: extractSHA512s,
ssdeeps: extractSSDEEPs,
urls: extractURLs,
xmrs: extractXMRs
};
return Object.fromEntries(
only.map((key) => [key, funcByType[key](normalized, options)])
);
}
};
function extractIOC(s, options = {
strict: true,
refang: true,
punycode: false,
sort: true
}) {
return new IOCExtractor(s).extractIOC(options);
}
function partialExtractIOC(s, only, options = {
strict: true,
refang: true,
punycode: false,
sort: true
}) {
return new IOCExtractor(s).partialExtractIOC(only, options);
}
export {
IOCExtractor,
extractIOC,
partialExtractIOC
};