diff --git a/src/core/operations/RefangURL.jsm b/src/core/operations/RefangURL.jsm
new file mode 100644
index 0000000000..1fd77e6150
--- /dev/null
+++ b/src/core/operations/RefangURL.jsm
@@ -0,0 +1,62 @@
+/**
+ * @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;