/**
* @author Matt Kelly @breakersall
* @copyright 2023
* @license Apache-2.0
*/
import Operation from "../Operation.mjs";
/**
* RefangURL operation
*/
class RefangURL extends Operation {
/**
* RefangURL constructor
*/
constructor() {
super();
this.name = "Refang URL";
this.module = "Default";
this.description = "Takes a defanged Universal Resource Locator (URL) and 'Refangs' it, making the URL valid again.
This can be used to revert a URL that has been defanged once again allowing you to potentially click on a malicious link.
Use carefully and only with trusted links.
This is probably irresposible.";
this.infoURL = "https://isc.sans.edu/forums/diary/Defang+all+the+things/22744/";
this.inputType = "string";
this.outputType = "string";
this.args = [
{
name: "Unescape dots",
type: "boolean",
value: true
},
{
name: "Unescape http",
type: "boolean",
value: true
},
{
name: "Unescape ://",
type: "boolean",
value: true
}
];
}
/**
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
run(input, args) {
const [dots, http, slashes] = args;
if (dots) input = input.replace(/\[\.\]/g, ".");
if (http) input = input.replace(/hxxp/gi, "http");
if (slashes) input = input.replace(/\[:\/\/\]/g, "://");
return input;
}
}
export default RefangURL;