diff options
Diffstat (limited to 'module/plugins/crypter/FilecryptCc.py')
-rw-r--r-- | module/plugins/crypter/FilecryptCc.py | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py index fb53e616b..087f377ff 100644 --- a/module/plugins/crypter/FilecryptCc.py +++ b/module/plugins/crypter/FilecryptCc.py @@ -5,6 +5,7 @@ import binascii import re from Crypto.Cipher import AES +from urlparse import urljoin from module.plugins.Crypter import Crypter @@ -12,7 +13,7 @@ from module.plugins.Crypter import Crypter class FilecryptCc(Crypter): __name__ = "FilecryptCc" __type__ = "crypter" - __version__ = "0.05" + __version__ = "0.07" __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/\w+' @@ -24,9 +25,10 @@ class FilecryptCc(Crypter): # URL_REPLACEMENTS = [(r'.html$', ""), (r'$', ".html")] #@TODO: Extend SimpleCrypter DLC_LINK_PATTERN = r'<button class="dlcdownload" type="button" title="Download \*.dlc" onclick="DownloadDLC\(\'(.+)\'\);"><i></i><span>dlc<' - WEBLINK_PATTERN = r"openLink.?'([\w_-]*)'," + WEBLINK_PATTERN = r"openLink.?'([\w_-]*)'," - CAPTCHA_PATTERN = r'<img id="nc" src="(.+?)"' + CAPTCHA_PATTERN = r'<img id="nc" src="(.+?)"' + CIRCLE_CAPTCHA_PATTERN = r'<input type="image" src="(.+?)"' MIRROR_PAGE_PATTERN = r'"[\w]*" href="(http://filecrypt.cc/Container/\w+\.html\?mirror=\d+)">' @@ -38,7 +40,7 @@ class FilecryptCc(Crypter): def decrypt(self, pyfile): self.html = self.load(pyfile.url, cookies=True) - if "content not found" in self.html: + if "content notfound" in self.html: #@NOTE: "content notfound" is NOT a typo self.offline() self.handlePasswordProtection() @@ -78,16 +80,36 @@ class FilecryptCc(Crypter): def handleCaptcha(self): m = re.search(self.CAPTCHA_PATTERN, self.html) + m2 = re.search(self.CIRCLE_CAPTCHA_PATTERN, self.html) - if m: + if m: #: normal captcha self.logDebug("Captcha-URL: %s" % m.group(1)) - captcha_code = self.decryptCaptcha("http://filecrypt.cc" + m.group(1), forceUser=True, imgtype="gif") - self.siteWithLinks = self.load(self.pyfile.url, post={"recaptcha_response_field":captcha_code}, decode=True, cookies=True) + + captcha_code = self.decryptCaptcha(urljoin("http://filecrypt.cc", m.group(1)), + forceUser=True, + imgtype="gif") + + self.siteWithLinks = self.load(self.pyfile.url, + post={'recaptcha_response_field': captcha_code}, + cookies=True, + decode=True) + elif m2: #: circle captcha + self.logDebug("Captcha-URL: %s" % m2.group(1)) + + captcha_code = self.decryptCaptcha(urljoin("http://filecrypt.cc", m2.group(1)), + forceUser=True, + imgtype="gif", + result_type='positional') + + self.siteWithLinks = self.load(self.pyfile.url, + post={'button.x': captcha_code[0], 'button.y': captcha_code[1]}, + cookies=True, + decode=True) else: self.logDebug("No captcha found") self.siteWithLinks = self.html - if "recaptcha_response_field" in self.siteWithLinks: + if "recaptcha_image" in self.siteWithLinks: self.invalidCaptcha() self.retry() @@ -107,10 +129,10 @@ class FilecryptCc(Crypter): weblinks = re.findall(self.WEBLINK_PATTERN, self.siteWithLinks) for link in weblinks: - response = self.load("http://filecrypt.cc/Link/%s.html" % link, cookies=True) - link2 = re.search('<iframe noresize src="(.*)"></iframe>', response) - response2 = self.load(link2.group(1), just_header=True, cookies=True) - self.links.append(response2['location']) + res = self.load("http://filecrypt.cc/Link/%s.html" % link, cookies=True) + link2 = re.search('<iframe noresize src="(.*)"></iframe>', res) + res2 = self.load(link2.group(1), just_header=True, cookies=True) + self.links.append(res2['location']) except Exception, e: self.logDebug("Error decrypting weblinks: %s" % e) |