# Path: ermesms/plugins/CaptchaDecoder.py
# class CaptchaDecoder(PriorityPlugin):
#     """Classe base dei plugin per la decodifica dei captcha."""
# 
#     def decodeCaptcha(self, stream, senderName):
#         """Questo metodo ritorna la stringa corrispondente all'immagine
#         leggibile dallo stream specificato."""
#         raise NotImplementedError()
# 
# Path: ermesms/errors/CaptchaError.py
# class CaptchaError(SenderError):
#     """Errore per indicare un problema con la connessione ad un sito (scaricamento captcha)."""
# 
#     def __init__(self):
#         """Costruttore standard."""
#         SenderError.__init__(self, repr('Captcha'))
# 
#     def __str__(self):
#         return u"Impossibile decodificare l'immagine captcha."


import sys
import os
import re
import platform
import subprocess
from cStringIO import StringIO
from ermesms.plugins.CaptchaDecoder import CaptchaDecoder
from ermesms.plugins.captchadecoders.Data import charData, lengthData, methodsData, bayesData
from ermesms.errors.CaptchaError import CaptchaError
            rkc[i]=0

        for i, f in enumerate(files):
            guess = getattr(self, method["command"])(open(f), method["gmParams"], method["ocrParams"])
            for j, c in enumerate(guess):
                rkc[c]+=1
                if c==oracles[i][j]:
                    gkc[c]+=1
        result={}
        for i in self.chars:
            if rkc[i]!=0:
                result[i]=float(gkc[i])/float(rkc[i])
            else:
                result[i]=0
        return result

    def learn(self, senderName):
        """Ritorna il dizionario delle probabilità per un certo sito date le immagini nella cartella
        corrente."""
        methods = methodsData[senderName]
        self.chars = charData[senderName]
        self.length = lengthData[senderName]

        currentDir=os.getcwd()
        files = []
        oracles = []
        for fil in os.listdir(currentDir):
            files.append(currentDir+'/'+fil)
            oracles.append(fil)


# Path: ermesms/plugins/CaptchaDecoder.py
# class CaptchaDecoder(PriorityPlugin):
#     """Classe base dei plugin per la decodifica dei captcha."""
# 
#     def decodeCaptcha(self, stream, senderName):
#         """Questo metodo ritorna la stringa corrispondente all'immagine
#         leggibile dallo stream specificato."""
#         raise NotImplementedError()
# 
# Path: ermesms/errors/CaptchaError.py
# class CaptchaError(SenderError):
#     """Errore per indicare un problema con la connessione ad un sito (scaricamento captcha)."""
# 
#     def __init__(self):
#         """Costruttore standard."""
#         SenderError.__init__(self, repr('Captcha'))
# 
#     def __str__(self):
#         return u"Impossibile decodificare l'immagine captcha."


# Path: ermesms/plugins/captchadecoders/OCRCaptchaDecoder.py
import sys
import os
import re
import platform
import subprocess
from cStringIO import StringIO
from ermesms.plugins.CaptchaDecoder import CaptchaDecoder
from ermesms.plugins.captchadecoders.Data import charData, lengthData, methodsData, bayesData
from ermesms.errors.CaptchaError import CaptchaError

            rkc[i]=0

        for i, f in enumerate(files):
            guess = getattr(self, method["command"])(open(f), method["gmParams"], method["ocrParams"])
            for j, c in enumerate(guess):
                rkc[c]+=1
                if c==oracles[i][j]:
                    gkc[c]+=1
        result={}
        for i in self.chars:
            if rkc[i]!=0:
                result[i]=float(gkc[i])/float(rkc[i])
            else:
                result[i]=0
        return result

    def learn(self, senderName):
        """Ritorna il dizionario delle probabilità per un certo sito date le immagini nella cartella
        corrente."""
        methods = methodsData[senderName]
        self.chars = charData[senderName]
        self.length = lengthData[senderName]

        currentDir=os.getcwd()
        files = []
        oracles = []
        for fil in os.listdir(currentDir):
            files.append(currentDir+'/'+fil)
            oracles.append(fil)


        pbayes=[]