UNPKG

ioc-extractor

Version:

IoC (Indicator of Compromise) extractor

132 lines (129 loc) 3.29 kB
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 };