diff --git a/src/core/operations/AnalyseHash.mjs b/src/core/operations/AnalyseHash.mjs index 72c80840..ad9202f5 100644 --- a/src/core/operations/AnalyseHash.mjs +++ b/src/core/operations/AnalyseHash.mjs @@ -35,6 +35,17 @@ class AnalyseHash extends Operation { run(input, args) { input = input.replace(/\s/g, ""); + // analyze hash if it is bcrypt + if (/^\$2[abxy]?\$[0-9]+\$[a-zA-Z0-9/.]{53}$/.test(input)) { + input = input.split("$"); + return "Hash algorithm Identifier: $" + input[1] + "$\n" + + "Rounds: " + input[2] + "\n" + + "Base64 encoded Input salt(22 bytes): " + input[3].slice(0, 22) + "\n" + + "Base64 encoded hash(31 bytes): " + input[3].slice(22) + "\n\n" + + "Based on the length, this hash could have been generated by one of the following hashing functions:\n" + + "bcrypt"; + } + let output = "", possibleHashFunctions = []; const byteLength = input.length / 2, diff --git a/src/web/waiters/RecipeWaiter.mjs b/src/web/waiters/RecipeWaiter.mjs index 42e763b0..8b41b9b0 100755 --- a/src/web/waiters/RecipeWaiter.mjs +++ b/src/web/waiters/RecipeWaiter.mjs @@ -396,7 +396,11 @@ class RecipeWaiter { const item = document.createElement("li"); item.classList.add("operation"); - item.innerHTML = name; + + if (this.app.operations[name] != null) { + item.innerHTML = name; + } + this.buildRecipeOperation(item); document.getElementById("rec-list").appendChild(item);