Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/gchq/CyberChef
Browse files Browse the repository at this point in the history
  • Loading branch information
a3957273 committed Mar 30, 2024
2 parents 7ccf8cb + a1f6960 commit b88fbcc
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/core/config/Categories.json
Expand Up @@ -242,6 +242,7 @@
"Encode NetBIOS Name",
"Decode NetBIOS Name",
"Defang URL",
"Fang URL",
"Defang IP Addresses"
]
},
Expand Down
77 changes: 77 additions & 0 deletions src/core/operations/FangURL.mjs
@@ -0,0 +1,77 @@
/**
* @author arnydo [github@arnydo.com]
* @copyright Crown Copyright 2019
* @license Apache-2.0
*/

import Operation from "../Operation.mjs";

/**
* FangURL operation
*/
class FangURL extends Operation {

/**
* FangURL constructor
*/
constructor() {
super();

this.name = "Fang URL";
this.module = "Default";
this.description = "Takes a 'Defanged' Universal Resource Locator (URL) and 'Fangs' it. Meaning, it removes the alterations (defanged) that render it useless so that it can be used again.";
this.inputType = "string";
this.outputType = "string";
this.args = [
{
name: "Restore [.]",
type: "boolean",
value: true
},
{
name: "Restore hxxp",
type: "boolean",
value: true
},
{
name: "Restore ://",
type: "boolean",
value: true
}
];
}

/**
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
run(input, args) {
const [dots, http, slashes] = args;

input = fangURL(input, dots, http, slashes);

return input;
}

}


/**
* Defangs a given URL
*
* @param {string} url
* @param {boolean} dots
* @param {boolean} http
* @param {boolean} slashes
* @returns {string}
*/
function fangURL(url, dots, http, slashes) {
if (dots) url = url.replace(/\[\.\]/g, ".");
if (http) url = url.replace(/hxxp/g, "http");
if (slashes) url = url.replace(/\[:\/\/\]/g, "://");

return url;
}

export default FangURL;

0 comments on commit b88fbcc

Please sign in to comment.