# -*- coding: utf-8 -*- import re from module.lib.BeautifulSoup import BeautifulSoup from module.plugins.Crypter import Crypter class DuckCryptInfo(Crypter): __name__ = "DuckCryptInfo" __type__ = "container" __pattern__ = r"http://(?:www\.)?duckcrypt.info/(folder|wait|link)/(\w+)/?(\w*)" __version__ = "0.02" __description__ = """DuckCrypt.info decrypter plugin""" __author_name__ = "godofdream" __author_mail__ = "soilfiction@gmail.com" TIMER_PATTERN = r'(.*)' def decrypt(self, pyfile): url = pyfile.url # seems we don't need to wait #src = self.req.load(str(url)) #found = re.search(self.TIMER_PATTERN, src) #if found: # self.logDebug("Sleeping for" % found.group(1)) # self.setWait(int(found.group(1)) ,False) found = re.search(self.__pattern__, url) if not found: self.fail('Weird error in link') if str(found.group(1)) == "link": self.handleLink(url) else: self.handleFolder(found) def handleFolder(self, found): src = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(found.group(2))) found = re.search(self.__pattern__, src) self.logDebug("Redirectet to " + str(found.group(0))) src = self.load(str(found.group(0))) soup = BeautifulSoup(src) cryptlinks = soup.findAll("div", attrs={"class": "folderbox"}) self.logDebug("Redirectet to " + str(cryptlinks)) if not cryptlinks: self.fail('no links found - (Plugin out of date?)') for clink in cryptlinks: if clink.find("a"): self.handleLink(clink.find("a")['href']) def handleLink(self, url): src = self.load(url) soup = BeautifulSoup(src) link = soup.find("iframe")["src"] if not link: self.logDebug('no links found - (Plugin out of date?)') else: self.core.files.addLinks([link], self.pyfile.package().id)