{"version":3,"sources":["../src/lib/utils/index.ts","../src/lib/index.ts"],"names":["chalk","figlet","Spinnies","path","os","yaml","fs","zbase32","NodeRSA","xid","uuidv4","XMLHttpRequest","crypto","format"],"mappings":"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","file":"lib.cjs","sourcesContent":["import { Options } from 'boxen'\nimport chalk from 'chalk'\nimport figlet from 'figlet'\nimport Spinnies from 'spinnies'\nimport { deregister } from '..'\nimport { StoredData } from '../types/storedData'\n\nexport const bannerBoxenOptions: Options = {\n    padding: {\n        left: 2,\n        right: 2,\n        top: 0,\n        bottom: 0,\n    },\n    margin: 0,\n    dimBorder: true,\n    borderColor: '#D08770',\n    // borderStyle: 'round',\n}\n\nexport const bannerString = `${chalk.hex('#D08770')(\n    figlet.textSync('HSTCARETNI', {\n        horizontalLayout: 'fitted',\n        font: 'Jerusalem',\n    })\n)}\n${chalk.bold.hex('#D08770')(`                         projectdiscovery.io`)}\n`\n\nexport const loadingSpinner = new Spinnies({\n    color: '#D08770' as any,\n    spinner: {\n        interval: 50,\n        frames: [\n            chalk.hex('#D08770')('⠋'),\n            chalk.hex('#D08770')('⠙'),\n            chalk.hex('#D08770')('⠹'),\n            chalk.hex('#D08770')('⠸'),\n            chalk.hex('#D08770')('⠼'),\n            chalk.hex('#D08770')('⠴'),\n            chalk.hex('#D08770')('⠦'),\n            chalk.hex('#D08770')('⠧'),\n            chalk.hex('#D08770')('⠇'),\n            chalk.hex('#D08770')('⠏'),\n        ],\n    },\n})\n\nexport const loadingSpinnerDotDot = new Spinnies({\n    color: '#D08770' as any,\n    spinner: {\n        interval: 1000,\n        frames: [\n            chalk.hex('#D08770')('.'),\n            chalk.hex('#D08770')('..'),\n            chalk.hex('#D08770')('...'),\n        ],\n    },\n})\nexport const cleanup = (config: StoredData, spinners: any) =>\n    [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].map((signal: any) => {\n        process.on(signal, () => {\n            // spinners.fail('polling-spinner', {\n            //     text: chalk.hex('#D08770')('Polling stopped'),\n            // })\n            deregister(config.secretKey, config.correlationId, config.host, config.token)\n                .then((d) => {\n                    spinners.fail('polling-spinner', {\n                        text: chalk.hex('#D08770')('Polling stopped'),\n                    })\n                    process.exit()\n                })\n                .catch(() => {\n                    spinners.fail('polling-spinner', {\n                        text: chalk.hex('#D08770')('Polling stopped'),\n                    })\n                    process.exit()\n                })\n        })\n    })\n\nconst hostString = 'oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me'\nexport const getRandomHost = () =>\n    hostString.split(',')[Math.floor(Math.random() * hostString.split(',').length)]\n\nexport const helpInfoString = `\nUsage:\n  ./interactsh-cli [flags]\n\nFlags:\nINPUT:\n   -s, --server string  interactsh server(s) to use (default \"oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me\")\n\nCONFIG:\n   --config string                           flag configuration file (default \"$HOME/.config/interactsh-cli/config.yaml\")\n   -n, --number int                          number of interactsh payload to generate (default 1)\n   -t, --token string                        authentication token to connect protected interactsh server\n   --poll-interval int                      poll interval in seconds to pull interaction data (default 5)\n\nFILTER:\n   --dns-only   display only dns interaction in CLI output\n   --http-only  display only http interaction in CLI output\n   --smtp-only  display only smtp interactions in CLI output\n\nOUTPUT:\n   -o string  output file to write interaction data\n   -json      write output in JSONL(ines) format\n   -v         display verbose interaction\n`\n\nexport const defaultConfigString = `# interactsh-cli config file\n# generated by https://github.com/projectdiscovery/goflags\n\n# interactsh server(s) to use\nserver: oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me\n\n# interactsh payload count to generate\nnumber: 1\n\n# interaction poll interval in seconds\npoll-interval: 4000\n\n# authentication token to connect interactsh server\n#token: \n\n# output file to write interaction\n#o: \n\n# write output in jsonl(ines) format\n#json: false\n\n# display verbose interaction\n#v: false\n\n# display only dns interaction in cli output\n#dns-only: false\n\n# display only http interaction in cli output\n# http-only: false\n\n# display only smtp interactions in cli output\n#smtp-only: false`\n\nexport const defaultConfigData: StoredData = {\n    \"privateKey\": \"\",\n    \"publicKey\": \"\",\n    \"correlationId\": \"\",\n    \"secretKey\": \"\",\n    \"aesKey\": \"\",\n    \"data\": [],\n    \"verbose\": false,\n    \"pollInterval\": 4000,\n    \"outputFile\": \"\",\n    \"json\": false,\n    \"number\": 1,\n    \"dnsOnly\": false,\n    \"httpOnly\": false,\n    \"smtpOnly\": false,\n    \"host\": \"\",\n    \"token\": \"\"\n}","import crypto from 'crypto'\nimport NodeRSA from 'node-rsa'\nimport { v4 as uuidv4 } from 'uuid'\nimport xid from 'xid-js'\nimport zbase32 from 'zbase32'\nimport XMLHttpRequest from 'xhr2'\nimport Spinnies from 'spinnies'\nimport { Data } from './types/data'\nimport { StoredData } from './types/storedData'\nimport fs from 'fs'\nimport os from 'os'\nimport chalk from 'chalk'\nimport { Interaction } from './types/interaction'\nimport { format } from 'date-fns'\nimport yaml from 'js-yaml'\nimport path from 'path'\nimport { defaultConfigString } from './utils'\n\nconst spinners = new Spinnies()\n\n// Get param config from `$HOME/.config/interactsh-cli/config.yaml`\nexport const getParamConfig: (path?: string) => any = (\n    path = `${os.homedir()}/.config/interactsh-cli/config.yaml`\n) => {\n    try {\n        const doc = yaml.load(fs.readFileSync(path, 'utf8'))\n        return doc\n    } catch (e) {\n        if (!fs.existsSync(`${os.homedir()}/.config/interactsh-cli`)) {\n            fs.mkdir(`${os.homedir()}/.config/interactsh-cli`, { recursive: true }, () => {\n                fs.writeFile(\n                    `${os.homedir()}/.config/interactsh-cli/config.yaml`,\n                    defaultConfigString,\n                    { flag: 'wx' },\n                    () => {\n                        return yaml.load(defaultConfigString)\n                    }\n                )\n            })\n        } else {\n            return fs.writeFile(\n                `${os.homedir()}/.config/interactsh-cli/config.yaml`,\n                defaultConfigString,\n                { flag: 'wx' },\n                () => {\n                    return yaml.load(defaultConfigString)\n                }\n            )\n        }\n    }\n}\n\n// Generate interaction URL\nexport const generateUrl = (correlationId: string, payloadCount: number, host: string) => {\n    const payloads = []\n    for (let i = 1; i <= payloadCount; i++) {\n        const timestamp = Math.floor(Date.now() / 1000)\n        const arr = new ArrayBuffer(8)\n        const view = new DataView(arr)\n        view.setUint32(0, timestamp, false)\n        view.setUint32(4, i, false)\n        const encodedTimestamp = zbase32.encode(arr)\n        const url = `${correlationId}${encodedTimestamp}.${host}`\n        const uniqueId = `${correlationId}${encodedTimestamp}`\n        payloads.push({ url, uniqueId })\n    }\n    return payloads\n}\n\n// Decrypt AESKey returned in polled response\nexport const decryptAESKey = (privateKey: string, aesKey: string) => {\n    const key = new NodeRSA({ b: 2048 })\n    key.setOptions({\n        environment: 'browser',\n        encryptionScheme: {\n            hash: 'sha256',\n            scheme: 'pkcs1_oaep',\n        },\n    })\n    key.importKey(privateKey, 'pkcs8-private')\n    return key.decrypt(aesKey, 'base64')\n}\n\n// Generate registration params\nconst generateRegistrationParams = () => {\n    const key = new NodeRSA({ b: 2048 })\n    const pub = key.exportKey('pkcs8-public-pem')\n    const priv = key.exportKey('pkcs8-private-pem')\n    const correlation = xid.next()\n    const secret = uuidv4().toString()\n\n    return { pub, priv, correlation, secret }\n}\n\n// Register interactsh instance\nexport const register = (host: string, payloadCount: number, token: string) => {\n    return new Promise((resolve, reject) => {\n        spinners.add('register-spinner', { text: 'Registering' })\n        var xhttpRegister = new XMLHttpRequest()\n        const { pub, priv, correlation, secret } = generateRegistrationParams()\n        const payloads = generateUrl(correlation, payloadCount, host)\n        const params = {\n            'public-key': Buffer.from(pub).toString('base64'),\n            'secret-key': secret,\n            'correlation-id': correlation,\n        }\n\n        xhttpRegister.open('POST', `https://${host}/register`, true)\n        if (token && token !== '') {\n            xhttpRegister.setRequestHeader('Content-Type', 'application/json')\n            xhttpRegister.setRequestHeader('Authorization', token)\n        } else {\n            xhttpRegister.setRequestHeader('Content-Type', 'application/json')\n        }\n        xhttpRegister.onreadystatechange = () => {\n            if (xhttpRegister.readyState === 4) {\n                if (xhttpRegister.status >= 200 && xhttpRegister.status < 300) {\n                    spinners.succeed('register-spinner', {\n                        text: `${chalk.green(\n                            'Registered successfully.\\n',\n                            chalk.green(\n                                `\\r[INF] Listing ${payloads.length} payload${\n                                    payloads.length === 1 ? '' : 's'\n                                } for OOB Testing\\n`\n                            ),\n                            payloads\n                                .map(\n                                    (p, i) =>\n                                        `\\r${chalk.hex('#D08770')(`[INF] ${i + 1}.(${p.url})`)}`\n                                )\n                                .join('\\n')\n                        )}`,\n                    })\n                    console.log('')\n                    resolve([\n                        {\n                            correlationId: correlation,\n                            payloads,\n                            secret,\n                            host,\n                            priv,\n                        },\n                    ])\n                } else if (xhttpRegister.status >= 400 && xhttpRegister.status < 500) {\n                    spinners.fail('register-spinner', {\n                        text: `${chalk.bold.red('[ERR] ')}${chalk.red(\n                            `Authentication failed (token: ${token})`\n                        )}`,\n                    })\n                    console.log('')\n                    reject(xhttpRegister.statusText)\n                } else {\n                    spinners.fail('register-spinner', {\n                        text: `${chalk.bold.red('[ERR] ')}${chalk.red(\n                            `Registration failed (host: ${host})`\n                        )}`,\n                    })\n                    console.log('')\n                    reject(xhttpRegister.statusText)\n                }\n            }\n        }\n        xhttpRegister.send(JSON.stringify(params))\n    })\n}\n\nexport const deregister = (\n    secretKey: string,\n    correlationId: string,\n    host: string,\n    token?: string\n) => {\n    return new Promise((resolve, reject) => {\n        const xhttpDeregister = new XMLHttpRequest()\n        const params = {\n            'secret-key': secretKey,\n            'correlation-id': correlationId,\n        }\n        xhttpDeregister.open('POST', `https://${host}/deregister`, true)\n        if (token && token !== '') {\n            xhttpDeregister.setRequestHeader('Content-Type', 'application/json')\n            xhttpDeregister.setRequestHeader('Authorization', token)\n        } else {\n            xhttpDeregister.setRequestHeader('Content-Type', 'application/json')\n        }\n        xhttpDeregister.onreadystatechange = () => {\n            if (xhttpDeregister.readyState === 4) {\n                if (xhttpDeregister.status >= 200 && xhttpDeregister.status < 300) {\n                    console.log(chalk.green(`Deregistered successfully.`))\n                    resolve(xhttpDeregister.statusText)\n                } else if (xhttpDeregister.status >= 400 && xhttpDeregister.status < 500) {\n                    console.log(\n                        `${chalk.bold.red('[ERR] ')}${chalk.red(\n                            `Authentication failed (token: ${token})`\n                        )}`\n                    )\n                    reject(xhttpDeregister.statusText)\n                } else {\n                    console.log(\n                        `${chalk.bold.red('[ERR] ')}${chalk.red(\n                            `DeRegistration failed (host: ${host})`\n                        )}`\n                    )\n                    reject(xhttpDeregister.statusText)\n                }\n            }\n        }\n        xhttpDeregister.send(JSON.stringify(params))\n    })\n}\n\nexport const poll = (\n    correlationId: string,\n    secretKey: string,\n    host: string,\n    token: string\n): any => {\n    return new Promise((resolve, reject) => {\n        let xhttpPoll = new XMLHttpRequest()\n        xhttpPoll.open('GET', `https://${host}/poll?id=${correlationId}&secret=${secretKey}`, true)\n        if (token !== '') {\n            xhttpPoll.setRequestHeader('Authorization', token)\n        }\n        xhttpPoll.onload = () => {\n            if (xhttpPoll.status >= 200 && xhttpPoll.status < 300) {\n                resolve(JSON.parse(xhttpPoll.response))\n            } else {\n                reject(xhttpPoll.statusText)\n            }\n        }\n        xhttpPoll.send()\n    })\n}\n\nexport const processData = (aesKey: string, polledData: Interaction) => {\n    const { data } = polledData\n    let parsedData: Data[] = []\n    if (data.length > 0) {\n        const decryptedData = data.map((item) => {\n            const iv = Buffer.from(item, 'base64').slice(0, 16)\n            const key = Buffer.from(aesKey, 'base64')\n            const decipher = crypto.createDecipheriv('aes-256-cfb', key, iv)\n            let decryptedString: any = decipher.update(Buffer.from(item, 'base64').slice(16))\n            decryptedString += decipher.final('utf8')\n            const test: string = decryptedString\n            return test\n        })\n        parsedData = decryptedData.map((item) => ({\n            ...JSON.parse(item),\n            id: uuidv4(),\n        }))\n    }\n\n    return parsedData\n}\n\nconst formatOutputString: (d: any, verbose?: boolean) => { plain: string; verbose: string } = (\n    d,\n    verbose = false\n) => {\n    if (d.protocol === 'dns') {\n        return {\n            plain: `[${d['full-id']}] Received ${d.protocol.toUpperCase()} interaction (${d[\n                'q-type'\n            ]?.toUpperCase()}) from ${d['remote-address']} at ${format(\n                new Date(d.timestamp),\n                'yyyy-MM-dd_HH:mm'\n            ).toString()}`,\n            verbose: verbose\n                ? `------------- \\nDNS Request \\n------------- \\n\\n${d['raw-request']}\\n\n------------- \\nDNS Response \\n------------- \\n\\n${d['raw-response']}`\n                : '',\n        }\n    } else if (d.protocol === 'http') {\n        return {\n            plain: `[${d['full-id']}] Received ${d.protocol.toUpperCase()} interaction from ${\n                d['remote-address']\n            } at ${format(new Date(d.timestamp), 'yyyy-MM-dd_HH:mm')}`,\n            verbose: verbose\n                ? `------------- \\nDNS Request \\n------------- \\n\\n${d['raw-request']}\\n\n------------- \\nDNS Response \\n------------- \\n\\n${d['raw-response']}`\n                : '',\n        }\n    } else {\n        return {\n            plain: `[${d['full-id']}] Received ${d.protocol.toUpperCase()} interaction from ${\n                d['remote-address']\n            } at ${format(new Date(d.timestamp), 'yyyy-MM-dd_HH:mm')}`,\n            verbose: verbose\n                ? `------------- \\nDNS Request \\n------------- \\n\\n${d['raw-request']}\\n\n------------- \\nDNS Response \\n------------- \\n\\n${d['raw-response']}`\n                : '',\n        }\n    }\n}\n\nexport const pollAndProcess = (config: StoredData) => {\n    const { privateKey, aesKey, host, token, data, correlationId, secretKey, verbose } = config\n    let decryptedAESKey = aesKey\n    poll(correlationId, secretKey, host.split(',')[0], token)\n        .then((polledData: Interaction) => {\n            if (polledData && polledData.data.length !== 0) {\n                if (aesKey === '' && polledData.aes_key) {\n                    decryptedAESKey = decryptAESKey(privateKey, polledData.aes_key)\n                }\n                const processedData = processData(decryptedAESKey, polledData)\n                const combinedData: Data[] = data.concat(processedData)\n                config.data = combinedData\n                config.aesKey = decryptedAESKey\n                if (config.outputFile !== '') {\n                    config.json\n                        ? fs.writeFileSync(\n                              path.resolve(`${config.outputFile}`),\n                              combinedData.map((x) => JSON.stringify(x)).join('\\n')\n                          )\n                        : fs.writeFileSync(\n                              path.resolve(`${config.outputFile}`),\n                              combinedData\n                                  .map((d) => {\n                                      const formattedData = formatOutputString(d, verbose)\n                                      return `${formattedData.plain}${verbose ? '\\n' : ''}${formattedData.verbose}`\n                                  })\n                                  .join('\\n')\n                          )\n                }\n                const filters: string[] = []\n                config.dnsOnly && filters.push('dns')\n                config.httpOnly && filters.push('http')\n                config.smtpOnly && filters.push('smtp')\n                const isFilterApplied = filters.length >= 1\n                processedData\n                    .filter((d) => (isFilterApplied ? filters.indexOf(d.protocol) > -1 : true))\n                    .map((item: Data) => {\n                        const formattedData = formatOutputString(item, verbose)\n                        console.log(chalk.blue(formattedData.plain))\n                        verbose && console.log(formattedData.verbose)\n                    })\n            }\n        })\n        .catch(() => {})\n}\n"]}