[GH-ISSUE #734] Support AES 128 Encrypt/Decrypt in Scripting Addon #730

Open
opened 2026-03-03 19:21:22 +03:00 by kerem · 1 comment
Owner

Originally created by @NghiaTranUIT on GitHub (Dec 22, 2020).
Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/734

Originally assigned to: @NghiaTranUIT on GitHub.

Description

Some users would like to decrypt their response with AES-128 by using the Scripting Tool. We should support it 👍

Acceptance Criteria

  • Support AES-128 Encrypt/Decypt addon
Originally created by @NghiaTranUIT on GitHub (Dec 22, 2020). Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/734 Originally assigned to: @NghiaTranUIT on GitHub. ### Description Some users would like to decrypt their response with AES-128 by using the Scripting Tool. We should support it 👍 ### Acceptance Criteria - Support AES-128 Encrypt/Decypt addon
Author
Owner

@NghiaTranUIT commented on GitHub (Dec 22, 2020):

It's done with this BETA build: https://proxyman.s3.us-east-2.amazonaws.com/beta/Proxyman_2.15.0_Support_Crypto_Addon.dmg

Screen_Shot_2020-12-22_at_20_11_39
  • Sample code:
// Addons List: https://docs.proxyman.io/scripting/addons
const { sayHello } = require("@addons/HelloWorld.js");
const { decryptAES } = require("@addons/CryptoJS.js")

function onRequest(context, url, request) {
  
  // Decrypt AES
  var ciphertext = 'U2FsdGVkX1+sCIKOY6nMXWAJtkZn9jSUA+/3g+HXuAdcyqKFHLlXkgPAR+lK5Xw4';
  var password = 'secret key 123';
  var originalText = decryptAES(ciphertext, password);
  console.log(originalText);

  // Done
  return request;
}

function onResponse(context, url, request, response) {

  // Done
  return response;
}
  • How the CryptJS.js (~/Library/Application Support/com.proxyman.NSProxy/addons/CryptoJS.js) looks like
/**
    {
        "name":"Crypto-js Wrapper. JavaScript library of crypto standards.",
        "description":"https://www.npmjs.com/package/crypto-js",
        "version": "3.3.0",
        "tags":"security, crypto, Hash, MD5, SHA1, SHA-1, SHA256, SHA-256, RC4, Rabbit, AES, DES, PBKDF2, HMAC, OFB, CFB, CTR, CBC, Base64"
    }
**/

// It's 3.3.0, not 4.0.0 since it doesn't work
// https://github.com/brix/crypto-js/issues/256
const CryptoJS = require('@libs/crypto-js.min.js');

const encryptAES = (input, password) => {
    return CryptoJS.AES.encrypt(input, password).toString();
}

const decryptAES = (ciphertext, password) => {
    var bytes  = CryptoJS.AES.decrypt(ciphertext, password);
    var originalText = bytes.toString(CryptoJS.enc.Utf8);
    return originalText;
}

const encryptDES = (input, password) => {
    return CryptoJS.DES.encrypt(input, password).toString();
}

const decryptDES = (ciphertext, password) => {
    var bytes  = CryptoJS.DES.decrypt(ciphertext, password);
    var originalText = bytes.toString(CryptoJS.enc.Utf8);
    return originalText;
}

const encryptRabbit = (input, password) => {
    return CryptoJS.Rabbit.encrypt(input, password).toString();
}

const decryptRabbit = (ciphertext, password) => {
    var bytes  = CryptoJS.Rabbit.decrypt(ciphertext, password);
    var originalText = bytes.toString(CryptoJS.enc.Utf8);
    return originalText;
}

exports.encryptAES = encryptAES;
exports.decryptAES = decryptAES;
exports.encryptDES = encryptDES;
exports.decryptDES = decryptDES;
exports.encryptRabbit = encryptRabbit;
exports.decryptRabbit = decryptRabbit;

<!-- gh-comment-id:749535013 --> @NghiaTranUIT commented on GitHub (Dec 22, 2020): It's done with this BETA build: https://proxyman.s3.us-east-2.amazonaws.com/beta/Proxyman_2.15.0_Support_Crypto_Addon.dmg - Support Encryption/Decryption for AES, DES and Rabbit - It's a wrapper of Crypto-JS https://cryptojs.gitbook.io/docs/ <img width="1456" alt="Screen_Shot_2020-12-22_at_20_11_39" src="https://user-images.githubusercontent.com/5878421/102892128-02ee0780-4492-11eb-9fdb-1cc8550b155b.png"> - Sample code: ```js // Addons List: https://docs.proxyman.io/scripting/addons const { sayHello } = require("@addons/HelloWorld.js"); const { decryptAES } = require("@addons/CryptoJS.js") function onRequest(context, url, request) { // Decrypt AES var ciphertext = 'U2FsdGVkX1+sCIKOY6nMXWAJtkZn9jSUA+/3g+HXuAdcyqKFHLlXkgPAR+lK5Xw4'; var password = 'secret key 123'; var originalText = decryptAES(ciphertext, password); console.log(originalText); // Done return request; } function onResponse(context, url, request, response) { // Done return response; } ``` - How the CryptJS.js (~/Library/Application Support/com.proxyman.NSProxy/addons/CryptoJS.js) looks like ```js /** { "name":"Crypto-js Wrapper. JavaScript library of crypto standards.", "description":"https://www.npmjs.com/package/crypto-js", "version": "3.3.0", "tags":"security, crypto, Hash, MD5, SHA1, SHA-1, SHA256, SHA-256, RC4, Rabbit, AES, DES, PBKDF2, HMAC, OFB, CFB, CTR, CBC, Base64" } **/ // It's 3.3.0, not 4.0.0 since it doesn't work // https://github.com/brix/crypto-js/issues/256 const CryptoJS = require('@libs/crypto-js.min.js'); const encryptAES = (input, password) => { return CryptoJS.AES.encrypt(input, password).toString(); } const decryptAES = (ciphertext, password) => { var bytes = CryptoJS.AES.decrypt(ciphertext, password); var originalText = bytes.toString(CryptoJS.enc.Utf8); return originalText; } const encryptDES = (input, password) => { return CryptoJS.DES.encrypt(input, password).toString(); } const decryptDES = (ciphertext, password) => { var bytes = CryptoJS.DES.decrypt(ciphertext, password); var originalText = bytes.toString(CryptoJS.enc.Utf8); return originalText; } const encryptRabbit = (input, password) => { return CryptoJS.Rabbit.encrypt(input, password).toString(); } const decryptRabbit = (ciphertext, password) => { var bytes = CryptoJS.Rabbit.decrypt(ciphertext, password); var originalText = bytes.toString(CryptoJS.enc.Utf8); return originalText; } exports.encryptAES = encryptAES; exports.decryptAES = decryptAES; exports.encryptDES = encryptDES; exports.decryptDES = decryptDES; exports.encryptRabbit = encryptRabbit; exports.decryptRabbit = decryptRabbit; ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Proxyman#730
No description provided.