diff options
Diffstat (limited to 'module/plugins/crypter')
| -rw-r--r-- | module/plugins/crypter/ILoadTo.py | 62 | ||||
| -rw-r--r-- | module/plugins/crypter/WiiReloadedOrg.py | 52 | 
2 files changed, 114 insertions, 0 deletions
| diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py new file mode 100644 index 000000000..9815ae266 --- /dev/null +++ b/module/plugins/crypter/ILoadTo.py @@ -0,0 +1,62 @@ +
 +import re
 +import urllib
 +
 +from module.plugins.Crypter import Crypter
 +from module.lib.BeautifulSoup import BeautifulSoup
 +
 +class ILoadTo(Crypter):
 +    __name__ = "ILoadTo"
 +    __type__ = "crypter"
 +    __pattern__ = r"http://iload\.to/go/\d+-[\w\.-]+/"
 +    __config__ = []
 +    __version__ = "0.1"
 +    __description__ = """iload.to Crypter Plugin"""
 +    __author_name__ = ("hzpz")
 +    __author_mail__ = ("none")
 +    
 +    
 +    def decrypt(self, pyfile):
 +        url = pyfile.url
 +        src = self.req.load(str(url))
 +        soup = BeautifulSoup(src)
 +
 +        # find captcha URL and decrypt            
 +        captchaTag = soup.find("img", attrs={"id": "Captcha"})
 +        if not captchaTag:
 +            self.fail("Cannot find Captcha")
 +
 +        captchaUrl = "http://iload.to" + captchaTag["src"]
 +        self.logDebug("Captcha URL: %s" % captchaUrl)
 +        result = self.decryptCaptcha(str(captchaUrl))
 +
 +        # find captcha form URL 
 +        formTag = soup.find("form", attrs={"id": "CaptchaForm"})
 +        formUrl = "http://iload.to" + formTag["action"]
 +        self.logDebug("Form URL: %s" % formUrl)
 +        
 +        # submit decrypted captcha
 +        self.req.lastURL = url
 +        src = self.req.load(str(formUrl), post={'captcha': result})
 +        
 +        # find decrypted links
 +        links = re.findall(r"<a href=\"(.+)\" style=\"text-align:center;font-weight:bold;\" class=\"button\" target=\"_blank\" onclick=\"this.className\+=' success';\">", src)
 +        
 +        if not len(links) > 0:
 +            self.retry()
 +        
 +        self.correctCaptcha()
 +        
 +        cleanedLinks = []
 +        for link in links:
 +            if link.startswith("http://dontknow.me/at/?"):
 +                cleanedLink = urllib.unquote(link[23:])
 +            else:
 +                cleanedLink = link
 +            self.logDebug("Link: %s" % cleanedLink)
 +            cleanedLinks.append(cleanedLink)
 +        
 +        self.logDebug("Decrypted %d links" % len(links))
 +        
 +        self.pyfile.package().password = "iload.to"
 +        self.packages.append((self.pyfile.package().name, cleanedLinks, self.pyfile.package().folder))
\ No newline at end of file diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py new file mode 100644 index 000000000..574a147c4 --- /dev/null +++ b/module/plugins/crypter/WiiReloadedOrg.py @@ -0,0 +1,52 @@ +
 +import re
 +
 +from module.plugins.Crypter import Crypter
 +
 +class WiiReloadedOrg(Crypter):
 +    __name__ = "WiiReloadedOrg"
 +    __type__ = "crypter"
 +    __pattern__ = r"http://www\.wii-reloaded\.org/protect/get\.php\?i=.+"
 +    __config__ = [("changeName", "bool", "Use Wii-Reloaded.org folder name", "True")]
 +    __version__ = "0.1"
 +    __description__ = """Wii-Reloaded.org Crypter Plugin"""
 +    __author_name__ = ("hzpz")
 +    __author_mail__ = ("none")
 +    
 +    
 +    def decrypt(self, pyfile):
 +        url = pyfile.url
 +        src = self.req.load(str(url))
 +        
 +        ids = re.findall(r"onClick=\"popup_dl\((.+)\)\"", src)
 +        if len(ids) == 0:
 +            self.fail("Unable to decrypt links, this plugin probably needs to be updated")
 +        
 +        packageName = self.pyfile.package().name
 +        if self.getConfig("changeName"):
 +            packageNameMatch = re.search(r"<div id=\"foldername\">(.+)</div>", src)
 +            if not packageNameMatch:
 +                self.logWarning("Unable to get folder name, this plugin probably needs to be updated")
 +            else:
 +                packageName = packageNameMatch.group(1)
 +                
 +        self.pyfile.package().password = "wii-reloaded.info"
 +        
 +        self.logDebug("Processing %d links" % len(ids))
 +        links = []
 +        for id in ids:
 +            self.req.lastURL = str(url)
 +            header = self.req.load("http://www.wii-reloaded.org/protect/hastesosiehtsaus.php?i=" + id, just_header=True)
 +            self.logDebug("Header:\n" + header)
 +            redirectLocationMatch = re.search(r"^Location: (.+)$", header, flags=re.MULTILINE)
 +            if not redirectLocationMatch:
 +                self.offline()
 +            redirectLocation = redirectLocationMatch.group(1)
 +            self.logDebug(len(redirectLocation))
 +            if not redirectLocation.startswith("http"):
 +                self.offline()
 +            self.logDebug("Decrypted link: %s" % redirectLocation)
 +            links.append(redirectLocation)
 +            
 +        self.logDebug("Decrypted %d links" % len(links))
 +        self.packages.append((packageName, links, packageName))
\ No newline at end of file | 
