From 244ab75cadb37d0312ec8f4a02eda36b58ab5804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 21 Apr 2017 20:36:47 +0200 Subject: [PATCH] [kissmanga] update AES key retrieval --- gallery_dl/extractor/imagehosts.py | 0 gallery_dl/extractor/kissmanga.py | 39 ++++++++++++++++-------------- test/test_extractors.py | 2 +- 3 files changed, 22 insertions(+), 19 deletions(-) mode change 100755 => 100644 gallery_dl/extractor/imagehosts.py diff --git a/gallery_dl/extractor/imagehosts.py b/gallery_dl/extractor/imagehosts.py old mode 100755 new mode 100644 diff --git a/gallery_dl/extractor/kissmanga.py b/gallery_dl/extractor/kissmanga.py index fedef0fe..96dc9061 100644 --- a/gallery_dl/extractor/kissmanga.py +++ b/gallery_dl/extractor/kissmanga.py @@ -10,12 +10,14 @@ from .common import Extractor, Message from .. import text, cloudflare, aes +from ..cache import cache import re import hashlib +import ast IV = [ - 165, 232, 226, 233, 194, 114, 27, 224, - 168, 74, 214, 96, 196, 114, 193, 243, + 0xa5, 0xe8, 0xe2, 0xe9, 0xc2, 0x72, 0x1b, 0xe0, + 0xa8, 0x4a, 0xd6, 0x60, 0xc4, 0x72, 0xc1, 0xf3 ] @@ -102,29 +104,30 @@ class KissmangaChapterExtractor(KissmangaExtractor): def get_image_urls(self, page): """Extract list of all image-urls for a manga chapter""" try: - key = self.build_aes_key(page) + key = self.build_aes_key() return [ aes.aes_cbc_decrypt_text(data, key, IV) for data in text.extract_iter( page, 'lstImages.push(wrapKA("', '"' ) ] + except (ValueError, IndexError): + self.log.error("Failed to get AES key") except UnicodeDecodeError: self.log.error("Failed to decrypt image URls") - return [] + return [] - def build_aes_key(self, page): + @cache(maxage=3600) + def build_aes_key(self): """Get and parse the AES key""" - try: - pos = page.rindex('; key = ') - pos = page.rindex('