Closed kevin01523 closed 7 years ago
Have same problem. MangaFox works, so only KissManga affected.
I also only have a problem downloading from Kissmanga.
same here
Another issue case here. If this keeps faltering may have to see about arduously transferring bookmarks to another site.
+1, kissmanga doesn't download properly
@kavin-90 can you please check this. They using a new encryption to hide the image url string.
Same here.. does not download.
Okay @riderkick i checked there is changes were made on reader now images is using hashing
Image Src
var lstImages = new Array();
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegbiMyMGv6cmja7swFUHYrWtPnKr0ERe6ygjSETKMDhLTx0EVUve55aJgiHmX7NLgI1qQGPmkf0ZM8zD/V78G78hPDqhjUisMqiTTWQyYKm3XbBi3IiCdTSVdhVFeJA+AepRdDjhkxtQmYJKpUUnh7Pt6QxEfmyo83rRuwZVfwCzdin3WUo0wr9cKcTCHfJ4QkNgpvorKsw/FVwjCKzVZ3HE8B2kNA9TFsFX8TEPP1hPZ"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegSpH8Ae2IO7TBBCSeCCLuaq96wjrAi42prU/OvHMq5KS5jddbDUf679XJIjAQk3eQiEQRfzrUtdWQ2zymgER/qZQbDkG4sePDcuTLlnzMzEhh4dHLZpmaBlQr20C770Ez8sxhoGxA3QFqfJci4BjEyDBJCx3UIXqjbFkRFX5FZTd6szxT1zUGTlBK3CrYLyxB+6rCCJqY+9K1JQCE4gsapGq3swnKsilvWIHzncKwX2Z"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegerxHT4eR8b9Qlo6cwIZojmGOgaZT0yVMVIzSp1ZaJuq52fH7w6iStDstQgXcGlYgIH8rzyAaQYyRVl2/XrcnZy52qKlsJRx94CNP5n1xfBzGnFgJVDWe8ul/54+Sej3rVclctqa2CfqFeItCawWmcgeKRbPjRb5/FrfFkt1jJRGWsxCPuCAh8edtZNJCMTWp94pbmknui4UNTTTxwUMhtpr0jz0wUIS+UoV+m/h4LcB"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegUPuMmW9DjFPaHYlgDhzDWRJy4Rf5ABbkmnUfcO3pI+4P+akMokjGFNuncfY/XBFpFPCiq/xqO6LfeXnF7QW3Tlv9kJAQVZo/jGZ3YW/KXgDOBN+nWwtVPZ9B2JTrGf8/m1bcYz5Ue6S9gCI5G07BD/ETkYfNfDovLYnqUiTdw9LO9XoxQGuhaeUcwH9KozBVu5e3fqBvC4z2jkqoiAgWlbKshPhdkLpPilk9KO/bplt"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegV6iPQd6KokJstOg0WWSk+0235SUdMz97/vyFRrI4c9AvD7xV7caxgDHPbMUubA+pL6Zj64ueQ8yy1blLCiD7uJZbRexk4iMheQ40aBd38+zuZmuaxQ9o9PqDTw6aYv8OiPsBUBLnCd/WLhke81IRVEYL2ZlrJKz304wj3HOOgFd3nQu6KPPAmTz9jhDKCS56aMj/PsCKdzBdF6yttFj2hw9vAPBOQ+Z+qBaRyofPNZr"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegdHJgeLCQJUaTfOvU2oeGnU79N5Wc5E9YbVzAG40yCnS51BNosFZ+q/GD1xHYU9e2L5C6+qBU5VwtZDVsef1/icV3/mUsj8LVuWKwPML48XIdLwkECk7kcV+fnuPOeU/EjXadaiNFTqXuKB4eerLy2CTFr48pKOI68/QFcdvQRRw2Dd2hjgf4DdS5yKlc7pGtn67VLOuwBYz1IPvoTCLSHHGjJXCbDGKtOs3fCf1Y1Sm"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegW1xWgmC7Im6UZQrFTmmy7iycXPnGvIbIo6HTYjAIsNqPvbCSID9olrZ/pr0+6c/u0Xo+XGaquil1rFpqnccpNb51MHJ33AJt+NklFPFlva8I80OG0SgzajwSMjSHCF5twK3W8tjc4mmbz6uST2oS+Ww/hRwXeQA8zc9Z7v20r7yqvvEI04SGZHxiv27vNDOnR6VCc/xLU1veKClzlXbseBByKSjr36FNNMZRM2W4gvs"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegVEUyFM+TGmWf7PwC0Osno5E4tg0Y6GumIqZU1AIutnp+g4LYwerkRYCfGrGvofirux8zSis05Gbg4/o/RKpHv3xGyQy6l/nF7SbDMHpRY5eSmnnEaz4mJdewITPRx20f10ENciWZ66FmlqOwiC2bkwHBHEYffR00HSX4Mav1Jypq9XK9qlIH/oRKNWf5ZbcggbkkSRDsgmTjYW2nFufep411fzJ0uRAh0tbtm/HC+x8"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegeVWw5dmAR3LMrdpNHq+s7ngGYtjbv1IZWiBZuicYYojfY4qp+b6cEQY1ZqsZ0ralLKUjB4nAEbFOYuSnrtAbk+8mwgxublRgI1YhffoIDFGFN6FT7ZscNsyDNyuXkX0+XldNEFMCJIMRPdi2IS43+WzBQzJ4eS3nF9DA9myBHB3mT48l725sBasSYgxwnfbchycBz/SPoF9Q3Clcyh4XTJtrvqyG/TRXBgbagUompVq"));
lstImages.push(wrapKA("7CbqoWRMeBuTo+1jt5GegfNkaqc9x8+yP00Mjhyrd3qPFlNFSrbkgw5rWFED0M2Z1UHa7R3M5w8fm4IUEbyELeCMGWsNgJrbsAbQaXY+4vsXw22t8fQaTIy3O0iO592r3Jydnycih1g5jNjzL3Cmad3mfafA0LpOBw4DryCyToOvDqycTkh0N8bmKOejug3p7z5zxljsy/opoEQrqToaJP9s+A7jOiGCKYj00gTAzUsNN9COutv71WjK9EObY5yc"));
as you see they're using some decoding function t decryption of file url
Wrapka function exists in cryptojs
var _0x331e=["\x6C\x69\x62","\x57\x6F\x72\x64\x41\x72\x72\x61\x79","\x48\x61\x73\x68\x65\x72","\x61\x6C\x67\x6F","\x73\x71\x72\x74","\x70\x6F\x77","\x53\x48\x41\x32\x35\x36","\x5F\x68\x61\x73\x68","\x73\x6C\x69\x63\x65","\x69\x6E\x69\x74","\x77\x6F\x72\x64\x73","\x5F\x64\x61\x74\x61","\x5F\x6E\x44\x61\x74\x61\x42\x79\x74\x65\x73","\x73\x69\x67\x42\x79\x74\x65\x73","\x66\x6C\x6F\x6F\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x61\x6C\x6C","\x63\x6C\x6F\x6E\x65","\x65\x78\x74\x65\x6E\x64","\x48\x6D\x61\x63\x53\x48\x41\x32\x35\x36","\x61\x35\x65\x38\x65\x32\x65\x39\x63\x32\x37\x32\x31\x62\x65\x30\x61\x38\x34\x61\x64\x36\x36\x30\x63\x34\x37\x32\x63\x31\x66\x33","\x6D\x73\x68\x73\x64\x66\x38\x33\x32\x6E\x73\x64\x62\x61\x73\x68\x32\x30\x61\x73\x64\x6D","\x70\x61\x72\x73\x65","\x48\x65\x78","\x65\x6E\x63","\x42\x61\x73\x65\x36\x34","\x63\x72\x65\x61\x74\x65","\x43\x69\x70\x68\x65\x72\x50\x61\x72\x61\x6D\x73","\x43\x42\x43","\x6D\x6F\x64\x65","\x50\x6B\x63\x73\x37","\x70\x61\x64","\x64\x65\x63\x72\x79\x70\x74","\x41\x45\x53"];(function(_0xfac5x1){for(var _0xfac5x2=CryptoJS,_0xfac5x3=_0xfac5x2[_0x331e[0]],_0xfac5x4=_0xfac5x3[_0x331e[1]],_0xfac5x5=_0xfac5x3[_0x331e[2]],_0xfac5x3=_0xfac5x2[_0x331e[3]],_0xfac5x6=[],_0xfac5x7=[],_0xfac5x8=function(_0xfac5xb){return 4294967296*(_0xfac5xb-(_0xfac5xb|0))|0},_0xfac5x9=2,_0xfac5xa=0;64>_0xfac5xa;){var _0xfac5xc;a:{_0xfac5xc=_0xfac5x9;for(var _0xfac5xd=_0xfac5x1[_0x331e[4]](_0xfac5xc),_0xfac5xe=2;_0xfac5xe<=_0xfac5xd;_0xfac5xe++){if(!(_0xfac5xc%_0xfac5xe)){_0xfac5xc=!1;break a}};_0xfac5xc=!0}_0xfac5xc&&(8>_0xfac5xa&&(_0xfac5x6[_0xfac5xa]=_0xfac5x8(_0xfac5x1[_0x331e[5]](_0xfac5x9,0.5))),_0xfac5x7[_0xfac5xa]=_0xfac5x8(_0xfac5x1[_0x331e[5]](_0xfac5x9,1/3)),_0xfac5xa++);_0xfac5x9++};var _0xfac5xf=[],_0xfac5x3=_0xfac5x3[_0x331e[6]]=_0xfac5x5[_0x331e[18]]({_doReset:function(){this[_0x331e[7]]=new _0xfac5x4[_0x331e[9]](_0xfac5x6[_0x331e[8]](0))},_doProcessBlock:function(_0xfac5xb,_0xfac5x3){for(var _0xfac5x10=this[_0x331e[7]][_0x331e[10]],_0xfac5x11=_0xfac5x10[0],_0xfac5xc=_0xfac5x10[1],_0xfac5xa=_0xfac5x10[2],_0xfac5x1=_0xfac5x10[3],_0xfac5x12=_0xfac5x10[4],_0xfac5x2=_0xfac5x10[5],_0xfac5x5=_0xfac5x10[6],_0xfac5x9=_0xfac5x10[7],_0xfac5x13=0;64>_0xfac5x13;_0xfac5x13++){if(16>_0xfac5x13){_0xfac5xf[_0xfac5x13]=_0xfac5xb[_0xfac5x3+ _0xfac5x13]|0}else{var _0xfac5x14=_0xfac5xf[_0xfac5x13- 15],_0xfac5x15=_0xfac5xf[_0xfac5x13- 2];_0xfac5xf[_0xfac5x13]=((_0xfac5x14<<25|_0xfac5x14>>>7)^(_0xfac5x14<<14|_0xfac5x14>>>18)^_0xfac5x14>>>3)+ _0xfac5xf[_0xfac5x13- 7]+((_0xfac5x15<<15|_0xfac5x15>>>17)^(_0xfac5x15<<13|_0xfac5x15>>>19)^_0xfac5x15>>>10)+ _0xfac5xf[_0xfac5x13- 16]};_0xfac5x14=_0xfac5x9+((_0xfac5x12<<26|_0xfac5x12>>>6)^(_0xfac5x12<<21|_0xfac5x12>>>11)^(_0xfac5x12<<7|_0xfac5x12>>>25))+(_0xfac5x12&_0xfac5x2^~_0xfac5x12&_0xfac5x5)+ _0xfac5x7[_0xfac5x13]+ _0xfac5xf[_0xfac5x13];_0xfac5x15=((_0xfac5x11<<30|_0xfac5x11>>>2)^(_0xfac5x11<<19|_0xfac5x11>>>13)^(_0xfac5x11<<10|_0xfac5x11>>>22))+(_0xfac5x11&_0xfac5xc^_0xfac5x11&_0xfac5xa^_0xfac5xc&_0xfac5xa);_0xfac5x9=_0xfac5x5;_0xfac5x5=_0xfac5x2;_0xfac5x2=_0xfac5x12;_0xfac5x12=_0xfac5x1+ _0xfac5x14|0;_0xfac5x1=_0xfac5xa;_0xfac5xa=_0xfac5xc;_0xfac5xc=_0xfac5x11;_0xfac5x11=_0xfac5x14+ _0xfac5x15|0};_0xfac5x10[0]=_0xfac5x10[0]+ _0xfac5x11|0;_0xfac5x10[1]=_0xfac5x10[1]+ _0xfac5xc|0;_0xfac5x10[2]=_0xfac5x10[2]+ _0xfac5xa|0;_0xfac5x10[3]=_0xfac5x10[3]+ _0xfac5x1|0;_0xfac5x10[4]=_0xfac5x10[4]+ _0xfac5x12|0;_0xfac5x10[5]=_0xfac5x10[5]+ _0xfac5x2|0;_0xfac5x10[6]=_0xfac5x10[6]+ _0xfac5x5|0;_0xfac5x10[7]=_0xfac5x10[7]+ _0xfac5x9|0},_doFinalize:function(){var _0xfac5xc=this[_0x331e[11]],_0xfac5xa=_0xfac5xc[_0x331e[10]],_0xfac5x10=8*this[_0x331e[12]],_0xfac5x11=8*_0xfac5xc[_0x331e[13]];_0xfac5xa[_0xfac5x11>>>5]|=128<<24- _0xfac5x11%32;_0xfac5xa[(_0xfac5x11+ 64>>>9<<4)+ 14]=_0xfac5x1[_0x331e[14]](_0xfac5x10/4294967296);_0xfac5xa[(_0xfac5x11+ 64>>>9<<4)+ 15]=_0xfac5x10;_0xfac5xc[_0x331e[13]]=4*_0xfac5xa[_0x331e[15]];this._process();return this[_0x331e[7]]},clone:function(){var _0xfac5xa=_0xfac5x5[_0x331e[17]][_0x331e[16]](this);_0xfac5xa[_0x331e[7]]=this[_0x331e[7]][_0x331e[17]]();return _0xfac5xa}});_0xfac5x2[_0x331e[6]]=_0xfac5x5._createHelper(_0xfac5x3);_0xfac5x2[_0x331e[19]]=_0xfac5x5._createHmacHelper(_0xfac5x3)})(Math);var boxzq=_0x331e[20];var chko=_0x331e[21];var iv,key;iv=CryptoJS[_0x331e[24]][_0x331e[23]][_0x331e[22]](boxzq);key=CryptoJS.SHA256(chko);function wrapKA(_0xfac5x1b){var _0xfac5x1c=null;try{var _0xfac5x1d=CryptoJS[_0x331e[0]][_0x331e[27]][_0x331e[26]]({ciphertext:CryptoJS[_0x331e[24]][_0x331e[25]][_0x331e[22]](_0xfac5x1b)});var _0xfac5x1e=CryptoJS[_0x331e[33]][_0x331e[32]](_0xfac5x1d,key,{mode:CryptoJS[_0x331e[29]][_0x331e[28]],iv:iv,padding:CryptoJS[_0x331e[31]][_0x331e[30]]});_0xfac5x1c=_0xfac5x1e.toString(CryptoJS[_0x331e[24]].Utf8);return _0xfac5x1c}catch(err){alert(err)}}
.
<script type="text/javascript">
var _0xa5a2 = ["\x37\x32\x6E\x6E\x61\x73\x64\x61\x73\x64\x39\x61\x73\x64\x6E\x31\x32\x33"]; chko = _0xa5a2[0]; key = CryptoJS.SHA256(chko)
</script>
@kavin-90 I'm not good at javascript. Can't follow it. Can you translate it to C/C++ or Java.
var _0x331e = ["lib", "WordArray", "Hasher", "algo", "sqrt", "pow", "SHA256", "_hash", "slice", "init", "words", "_data", "_nDataBytes", "sigBytes", "floor", "length", "call", "clone", "extend", "HmacSHA256", "a5e8e2e9c2721be0a84ad660c472c1f3", "mshsdf832nsdbash20asdm", "parse", "Hex", "enc", "Base64", "create", "CipherParams", "CBC", "mode", "Pkcs7", "pad", "decrypt", "AES"];
(function (_0xfac5x1) {
for (var _0xfac5x2 = CryptoJS, _0xfac5x3 = _0xfac5x2[_0x331e[0]], _0xfac5x4 = _0xfac5x3[_0x331e[1]], _0xfac5x5 = _0xfac5x3[_0x331e[2]], _0xfac5x3 = _0xfac5x2[_0x331e[3]], _0xfac5x6 = [], _0xfac5x7 = [], _0xfac5x8 = function (_0xfac5xb) {
return 4294967296 * (_0xfac5xb - (_0xfac5xb | 0)) | 0
}, _0xfac5x9 = 2, _0xfac5xa = 0; 64 > _0xfac5xa; ) {
var _0xfac5xc;
a: {
_0xfac5xc = _0xfac5x9;
for (var _0xfac5xd = _0xfac5x1[_0x331e[4]](_0xfac5xc), _0xfac5xe = 2; _0xfac5xe <= _0xfac5xd; _0xfac5xe++) {
if (!(_0xfac5xc % _0xfac5xe)) {
_0xfac5xc = !1;
break a
}
};
_0xfac5xc = !0
}
_0xfac5xc && (8 > _0xfac5xa && (_0xfac5x6[_0xfac5xa] = _0xfac5x8(_0xfac5x1[_0x331e[5]](_0xfac5x9, 0.5))), _0xfac5x7[_0xfac5xa] = _0xfac5x8(_0xfac5x1[_0x331e[5]](_0xfac5x9, 1 / 3)), _0xfac5xa++);
_0xfac5x9++
};
var _0xfac5xf = [],
_0xfac5x3 = _0xfac5x3[_0x331e[6]] = _0xfac5x5[_0x331e[18]]({
_doReset: function () {
this[_0x331e[7]] = new _0xfac5x4[_0x331e[9]](_0xfac5x6[_0x331e[8]](0))
},
_doProcessBlock: function (_0xfac5xb, _0xfac5x3) {
for (var _0xfac5x10 = this[_0x331e[7]][_0x331e[10]], _0xfac5x11 = _0xfac5x10[0], _0xfac5xc = _0xfac5x10[1], _0xfac5xa = _0xfac5x10[2], _0xfac5x1 = _0xfac5x10[3], _0xfac5x12 = _0xfac5x10[4], _0xfac5x2 = _0xfac5x10[5], _0xfac5x5 = _0xfac5x10[6], _0xfac5x9 = _0xfac5x10[7], _0xfac5x13 = 0; 64 > _0xfac5x13; _0xfac5x13++) {
if (16 > _0xfac5x13) {
_0xfac5xf[_0xfac5x13] = _0xfac5xb[_0xfac5x3 + _0xfac5x13] | 0
} else {
var _0xfac5x14 = _0xfac5xf[_0xfac5x13 - 15],
_0xfac5x15 = _0xfac5xf[_0xfac5x13 - 2];
_0xfac5xf[_0xfac5x13] = ((_0xfac5x14 << 25 | _0xfac5x14 >>> 7) ^ (_0xfac5x14 << 14 | _0xfac5x14 >>> 18) ^ _0xfac5x14 >>> 3) + _0xfac5xf[_0xfac5x13 - 7] + ((_0xfac5x15 << 15 | _0xfac5x15 >>> 17) ^ (_0xfac5x15 << 13 | _0xfac5x15 >>> 19) ^ _0xfac5x15 >>> 10) + _0xfac5xf[_0xfac5x13 - 16]
};
_0xfac5x14 = _0xfac5x9 + ((_0xfac5x12 << 26 | _0xfac5x12 >>> 6) ^ (_0xfac5x12 << 21 | _0xfac5x12 >>> 11) ^ (_0xfac5x12 << 7 | _0xfac5x12 >>> 25)) + (_0xfac5x12 & _0xfac5x2 ^ ~_0xfac5x12 & _0xfac5x5) + _0xfac5x7[_0xfac5x13] + _0xfac5xf[_0xfac5x13];
_0xfac5x15 = ((_0xfac5x11 << 30 | _0xfac5x11 >>> 2) ^ (_0xfac5x11 << 19 | _0xfac5x11 >>> 13) ^ (_0xfac5x11 << 10 | _0xfac5x11 >>> 22)) + (_0xfac5x11 & _0xfac5xc ^ _0xfac5x11 & _0xfac5xa ^ _0xfac5xc & _0xfac5xa);
_0xfac5x9 = _0xfac5x5;
_0xfac5x5 = _0xfac5x2;
_0xfac5x2 = _0xfac5x12;
_0xfac5x12 = _0xfac5x1 + _0xfac5x14 | 0;
_0xfac5x1 = _0xfac5xa;
_0xfac5xa = _0xfac5xc;
_0xfac5xc = _0xfac5x11;
_0xfac5x11 = _0xfac5x14 + _0xfac5x15 | 0
};
_0xfac5x10[0] = _0xfac5x10[0] + _0xfac5x11 | 0;
_0xfac5x10[1] = _0xfac5x10[1] + _0xfac5xc | 0;
_0xfac5x10[2] = _0xfac5x10[2] + _0xfac5xa | 0;
_0xfac5x10[3] = _0xfac5x10[3] + _0xfac5x1 | 0;
_0xfac5x10[4] = _0xfac5x10[4] + _0xfac5x12 | 0;
_0xfac5x10[5] = _0xfac5x10[5] + _0xfac5x2 | 0;
_0xfac5x10[6] = _0xfac5x10[6] + _0xfac5x5 | 0;
_0xfac5x10[7] = _0xfac5x10[7] + _0xfac5x9 | 0
},
_doFinalize: function () {
var _0xfac5xc = this[_0x331e[11]],
_0xfac5xa = _0xfac5xc[_0x331e[10]],
_0xfac5x10 = 8 * this[_0x331e[12]],
_0xfac5x11 = 8 * _0xfac5xc[_0x331e[13]];
_0xfac5xa[_0xfac5x11 >>> 5] |= 128 << 24 - _0xfac5x11 % 32;
_0xfac5xa[(_0xfac5x11 + 64 >>> 9 << 4) + 14] = _0xfac5x1[_0x331e[14]](_0xfac5x10 / 4294967296);
_0xfac5xa[(_0xfac5x11 + 64 >>> 9 << 4) + 15] = _0xfac5x10;
_0xfac5xc[_0x331e[13]] = 4 * _0xfac5xa[_0x331e[15]];
this._process();
return this[_0x331e[7]]
},
clone: function () {
var _0xfac5xa = _0xfac5x5[_0x331e[17]][_0x331e[16]](this);
_0xfac5xa[_0x331e[7]] = this[_0x331e[7]][_0x331e[17]]();
return _0xfac5xa
}
});
_0xfac5x2[_0x331e[6]] = _0xfac5x5._createHelper(_0xfac5x3);
_0xfac5x2[_0x331e[19]] = _0xfac5x5._createHmacHelper(_0xfac5x3)
})(Math);
var boxzq = _0x331e[20];
var chko = _0x331e[21];
var iv, key;
iv = CryptoJS[_0x331e[24]][_0x331e[23]][_0x331e[22]](boxzq);
key = CryptoJS.SHA256(chko);
function wrapKA(_0xfac5x1b) {
var _0xfac5x1c = null;
try {
var _0xfac5x1d = CryptoJS[_0x331e[0]][_0x331e[27]][_0x331e[26]]({
ciphertext: CryptoJS[_0x331e[24]][_0x331e[25]][_0x331e[22]](_0xfac5x1b)
});
var _0xfac5x1e = CryptoJS[_0x331e[33]][_0x331e[32]](_0xfac5x1d, key, {
mode: CryptoJS[_0x331e[29]][_0x331e[28]],
iv: iv,
padding: CryptoJS[_0x331e[31]][_0x331e[30]]
});
_0xfac5x1c = _0xfac5x1e.toString(CryptoJS[_0x331e[24]].Utf8);
return _0xfac5x1c
} catch (err) {
alert(err)
}
}
.
<script type = "text/javascript">
var _0xa5a2 = ["72nnasdasd9asdn123"];
chko = _0xa5a2[0];
key = CryptoJS.SHA256(chko)
</script>
@riderkick i think https://synopse.info/forum/viewtopic.php?id=3549 maybe help?
@riderkick i don't know javascript/pascal/c/c++/java well.
are u guys working on the issue now? i usually download from kissmanga coz of their high resolution img.
It's under process we decoded required keys for decryption. Its currently being test on PHP after that we convert it to PASCAL.
Most of those high resolution image is leached from batoto. An example of image url that I often found from kissmanga.
https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image/*&url=http://img.bato.to/comics/2016/04/24/i/read571ce588a2444/img000001.jpg&imgmax=30000
There is more website that's worth the hassle than kissmanga. I personally never use kissmanga, I often use batoto or mangatraders.
I need to know what kind of encryption it is. I can't even find the key. 😞
I also use Batoto for reading or scanlation group site because they've HQ Images.
http://ddecode.com/hexdecoder/?results=4765b9ccbc600ffde533059d6fd81c16
there is converted main part of script
It use SHA1, HmacSHA256 , CipherParams i think CBC , mode Pkcs7 , decrypt AES
Thanks again for all the hard work you guys do. It definitely seems like KM is going further and further to try and stop botters. If I didn't have close to 300 series already being monitored for my library, I wouldn't think twice about moving over to Batoto.
I remember DomDomSoft had a feature like that, which would transfer bookmarks over from one site to another. I think that would be useful here, even if it didn't necessarily map the current chapter (just removes current bookmark on X site and adds a new one on Y site, without having to worry about what the current is).
var boxzq = "a5e8e2e9c2721be0a84ad660c472c1f3";
var chko = "mshsdf832nsdbash20asdm";
var iv, key;
iv = CryptoJS.enc.Hex.parse(boxzq);
key = CryptoJS.SHA256(chko);
function wrapKA(INPUT) {
var c = null;
try {
var a = CryptoJS.lib.CipherParams.create({
ciphertext: CryptoJS.enc.Base64.parse(INPUT)
});
var b = CryptoJS.AES.decrypt.(a, key, {
mode: CryptoJS.mode.CBC,
iv: iv,
padding: CryptoJS.pad.Pkcs7
});
c = b.toString(CryptoJS.enc.Utf8);
return c
} catch (err) {
alert(err)
}
}
conclusion:
key := SHA256('mshsdf832nsdbash20asdm');
iv:= array [0..15] of byte = ($a5, $e8, $e2, $e9, $c2, $72, $1b, $e0, $a8, $4a, $d6, $60, $c4, $72, $c1, $f3);
mode := CBC;
pad := Pkcs7;
result := utf8tostring(AES.Decrypt(input, key, iv, mode, pad));
@kavin-90 do the key even fixed/not dynamically changed ?
they've set 2 keys and 2nd override 1st key.
Both of them are fixed.
$key = "ec5d16821839056176d17db837378fc57875aae170e3365212c2ca9aa7e1c55e"; $iv = "a5e8e2e9c2721be0a84ad660c472c1f3";
@riderkick i made php function can u turn it into pascal?
<?php
//Now we receive the encrypted from the post, we should decode it from base64,
$encrypted = "mqE5Ec6bMuj1NMBmDOpSxyjSkBzltsgB0x0lfaDyf9yHDBxb58oZjD/kRjqIMci9jThH57/VH4U4agj1wVHgYU6ZtcxYP8sIPriDJo7m/57jGdcoODhQpj2mUVQwX6iiT+ifS1IMU0ZsEdeQC+eymg==";
$key = pack("H*", "ec5d16821839056176d17db837378fc57875aae170e3365212c2ca9aa7e1c55e");
$iv = pack("H*", "a5e8e2e9c2721be0a84ad660c472c1f3");
$encrypted = base64_decode($encrypted);
$decrypt_string = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
echo $decrypt_string;
?>
output
http://2.bp.blogspot.com/-_G_jYPRi65o/V4-Hw-1tgII/AAAAAAAAEFg/fM1Rk4BAuu05yCcV31hzBhzz8RnIqEWMACCo/s0/000.jpg
Should not close this issue.
From where you get the key? It's not hashed w/ SHA256 but plain hexa array?
Only work with your example, but not work with an actual encrypted text.
7CbqoWRMeBuTo+1jt5GegfNkaqc9x8+yP00Mjhyrd3qPFlNFSrbkgw5rWFED0M2Z1UHa7R3M5w8fm4IUEbyELeCMGWsNgJrbsAbQaXY+4vsXw22t8fQaTIy3O0iO592r3Jydnycih1g5jNjzL3Cmad3mfafA0LpOBw4DryCyToOvDqycTkh0N8bmKOejug3p7z5zxljsy/opoEQrqToaJP9s+A7jOiGCKYj00gTAzUsNN9COutv71WjK9EObY5yc
Maybe using different key or init vector?
using syncrypto:
const
iv: TAESBlock =
($a5, $e8, $e2, $e9, $c2, $72, $1b, $e0, $a8, $4a, $d6, $60, $c4, $72, $c1, $f3);
key: THash256 =
($ec, $5d, $16, $82, $18, $39, $05, $61, $76, $d1, $7d, $b8, $37, $37, $8f, $c5, $78, $75, $aa, $e1, $70, $e3, $36, $52, $12, $c2, $ca, $9a, $a7, $e1, $c5, $5e);
var
a: TAESCBC;
begin
a:=TAESCBC.Create(key);
try
a.IV:=iv;
edit3.Text:=a.DecryptPKCS7(Base64ToBin(Edit1.Text),false);
finally
a.free;
end;
end;
Yeah an option to turn for example all kissmanga booksmarks into bato.to would be nice.
There is more website that's worth the hassle than kissmanga. I personally never use kissmanga, I often use batoto or mangatraders.
Because Batoto often delete manga chapters for a lot of reason, and it's annoying that I will never know until I do a manual check for my bookmarks maybe once a year.
@riderkick i got key from Cryptojs reading how key is generated then i researched how to use them to decode the text i.e wrapka function.
key is defined in reader and overridden cyptojs key and always remain same.
@riderkick i decoded the key and iv key which is required for decryption i gonna install lazarus so @riderkick
where did u got the syncrypto library ?
@kavin-90 the actual key is mshsdf832nsdbash20asdmnasdbasd612basd
.
SynCrypto is part of mORMot library https://github.com/synopse/mORMot
.
You just need SynCrypto.pas
, SynCommon.pas
, SyncFPCTypInfo.pas
, SynLZ.pas
, Synopse.inc
, SynopseCommit.inc
I will use DCPCrypt instead, because SynCrypto is too big, mostly the required unit SynCommon.pas
.
DCPCrypt is available in Lazarus-CCR.
i got DCPCrypt but docs only available for encryption on Lazarus wiki
I checked on some series it didn't override key but extend key or maybe they changed key again
Verified they removed overriding key and now only using extending key.
Now new key is 0a8cafd4f6a0345bdcbe328e90f4f8e4afd8a6c35a79d6143f450e700b31a5bf
old one is removed because it was overriding above key.
@riderkick your example encrypted text didn't work with Cryptojs so obv. it will not work with php too.
how to added that cryptojs zip file to github?
@kavin-90 please test.
Okay. but still i think u use wrong key.
@riderkick in my that zip there is key how they setup and my decryption code
Obviously git pull
@riderkick working correctly.
Just test with your browser, open console/inspect in the working kissmanga reader page.
CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(chko))
result "0a8cafd4f6a0345bdcbe328e90f4f8e4afd8a6c35a79d6143f450e700b31a5bf"
CryptoJS.enc.Hex.stringify(key)
result "0a8cafd4f6a0345bdcbe328e90f4f8e4afd8a6c35a79d6143f450e700b31a5bf"
chko
result "mshsdf832nsdbash20asdmnasdbasd612basd"
first chko
is _0x331e[21]
which is mshsdf832nsdbash20asdm
And this piece of code:
var _0x2c7e = "nasdbasd612basd";
chko = chko + _0x2c7e[0];
key = CryptoJS.SHA256(chko);
so the key before hashed with sha256 is mshsdf832nsdbash20asdm
+ nasdbasd612basd
= mshsdf832nsdbash20asdmnasdbasd612basd
Just test by yourself. button3 and button4. project1.exe.txt
@riderkick it working correctly download chapter of Deadman wonderland no problem at all.
@kavin-90 Is there any special setting for this to work now? cause it's still not downloading for me, it's stuck at downloading state and 0bps speed I tried downloading a chapter of deadman wonderland too but it's the same
@yuushin51 i'm checking it again maybe network issue that why it give 0bps speed.
edit: Checked working correctly no problem so maybe you're facing network issue on kissmanga
@kavin-90 Batoto is downloading fine, and I can read kissmanga on browser normally
hmm, what i can tell is that there is no problem with fmd to download from kissmanga let me check my settings.
@kavin-90 it's not working, the task failed after 5 retries I'm thinking maybe try changing your IP and see if it still works?
You can try handycache, set proxy on fmd to handycache listen address:port. There you can see the live status of your connections.
Same settings as @kavin-90, still no downloads. Could be our IP is still blocked?
riderkick can you do a guide on how to work with handycache? I still can't download from kissmanga.
Tried to figure out handycache, not sure if I did it right but here's the log I got: http://pastebin.com/DRZKjgTS And FMD log: http://pastebin.com/Q9wUrCqQ
@riderkick some manga would run of out of retry limit and fail, some manga would just fail immediately http://pastebin.com/38tU9piX <- retry http://pastebin.com/hZVz0n1R <- no retry
~Seems like they change the encryption~, they may watching this thread.
@IgnatiusC, @yuushin51 from your log it's clearly the url not decrypted yet. Are you running the old download task? Try to re-add the download task. because its record the previous image url which is invalid.
Looks like KissManga just went down but I'll give it a try when they are back up.
@riderkick yes I added new download, many times, still the same btw kissmanga is now closed to upgrade server, probably gonna take 2 hours, it says. will make a gif when it's up
before downloading chapter FMD manga info showed me 2-3 time please wait after that works no problem ahahhahahaa.
kissmanga doesnt work right now it can get new chapters but fails to download the said chapters
here's the last part of the LOG