Example #1
0
def rar_do_rar(arar, afile):
    """ arar:RarFile, afile:source archive(s) name """
    # test if encrypted
    if arar.needs_password():
        log_encrypted(BF_RAR, afile)
        return 

    infilename = re.compile('|'.join(INFILENAME))
    
    # iterate over infolist to detect directories
    # (unlike zipfile, doesnt append '/' to dir names
    for member in arar.infolist():
        # sort directories out
        if member.isdir():
            continue
        # check file name
        filename =  os.path.basename(member.filename).lower()
        res = infilename.search(filename)
        if res:
            log_secret(res.group(), afile+':'+member.filename)

        # check file content, calling other modules
        data = arar.read(member)
        (ftype, keep) = types_data(data, member)
        if keep:
            if ftype in ENCRYPTED:
                log_encrypted(ftype, member)
            else:
                do_data(ftype, data, afile+':'+member.filename)
Example #2
0
def select(directory):
    selected = []

    infilename = re.compile('|'.join(INFILENAME))

    for root, dirs, files in os.walk(directory):
        for skip in SKIP:
            if skip in dirs:
                dirs.remove(skip)

        for afile in files:
            fabs = os.path.abspath(os.path.join(root, afile))

            res = infilename.search(afile.lower())
            if res:
                log_secret(res.group(), fabs)

            (ftype, keep) = types_file(fabs)

            if keep: 
                # if encrypted, log and do not process
                if ftype in ENCRYPTED:
                    log_encrypted(ftype, afile)
                # otherwise, select file for processing
                else:
                    selected.append((fabs, ftype))
                    log_selected(ftype, fabs)

    return selected
Example #3
0
def select(directory):
    selected = []

    infilename = re.compile('|'.join(INFILENAME))

    for root, dirs, files in os.walk(directory):
        for skip in SKIP:
            if skip in dirs:
                dirs.remove(skip)

        for afile in files:
            fabs = os.path.abspath(os.path.join(root, afile))

            res = infilename.search(afile.lower())
            if res:
                log_secret(res.group(), fabs)

            (ftype, keep) = types_file(fabs)

            if keep: 
                selected.append((fabs, ftype))
                log_selected(ftype, fabs)

            # TODO: encrypted (add third return to types_file

    return selected
Example #4
0
def zip_do_zip(azip, afile):
    """ azip:ZipFile, afile:source archive(s) name """
    # test if encrypted
    try:
        azip.testzip()
    except RuntimeError as exception:
        if 'encrypted' in str(exception):
            log_encrypted(BF_ZIP, afile)
            return

    infilename = re.compile('|'.join(INFILENAME))

    # iterate directly over file names 
    for member in azip.namelist():
        # sort directories out
        if member.endswith('/'):
            continue
        # check file name
        filename =  os.path.basename(member).lower()
        res = infilename.search(filename)
        if res:
            log_secret(res.group(), afile+':'+member)

        # check file content, calling other modules
        data = azip.read(member)
        (ftype, keep) = types_data(data, member)
        if keep:
            if ftype in ENCRYPTED:
                log_encrypted(ftype, member)
            else:
                do_data(ftype, data, afile+':'+member)
Example #5
0
def zip_do_zip(azip, afile):
    """ azip:ZipFile, afile:source archive(s) name """
    infilename = re.compile('|'.join(INFILENAME))

    # iterate directly over file names 
    for member in azip.namelist():
        # sort directories out
        if member.endswith('/'):
            continue
        # check file name
        filename =  os.path.basename(member).lower()
        res = infilename.search(filename)
        if res:
            log_secret(res.group(), afile+':'+member)

        # check file content, calling other modules
        data = azip.read(member)
        (ftype, keep) = types_data(data)
        if keep:
            do_data(ftype, data, afile+':'+member)
Example #6
0
def tar_do_tar(atar, afile):
    """ atar:TarFile, afile:source archive(s) name """
    infilename = re.compile('|'.join(INFILENAME))

    # iterate over TarInfo's
    for member in atar.getmembers():
        # only process files
        if not member.isfile():
            continue
        # check file name
        filename = os.path.basename(member.name).lower()
        res = infilename.search(filename)
        if res:
            log_secret(res.group(), afile+':'+member.name)

        # check file content, calling other modules
        data = atar.extractfile(member).read()
        (ftype, keep) = types_data(data)
        if keep:
            do_data(ftype, data, afile+':'+member.name)
Example #7
0
def zip_do_zip(azip, afile):
    """ azip:ZipFile, afile:source archive(s) name """
    infilename = re.compile('|'.join(INFILENAME))

    # iterate directly over file names
    for member in azip.namelist():
        # sort directories out
        if member.endswith('/'):
            continue
        # check file name
        filename = os.path.basename(member).lower()
        res = infilename.search(filename)
        if res:
            log_secret(res.group(), afile + ':' + member)

        # check file content, calling other modules
        data = azip.read(member)
        (ftype, keep) = types_data(data)
        if keep:
            do_data(ftype, data, afile + ':' + member)
Example #8
0
def rar_do_rar(arar, afile):
    """ arar:RarFile, afile:source archive(s) name """
    infilename = re.compile('|'.join(INFILENAME))

    # iterate over infolist to detect directories
    # (unlike zipfile, doesnt append '/' to dir names
    for member in arar.infolist():
        # sort directories out
        if member.isdir():
            continue
        # check file name
        filename = os.path.basename(member.filename).lower()
        res = infilename.search(filename)
        if res:
            log_secret(res.group(), afile + ':' + member.filename)

        # check file content, calling other modules
        data = arar.read(member)
        (ftype, keep) = types_data(data)
        if keep:
            do_data(ftype, data, afile + ':' + member.filename)
Example #9
0
def text_do_data(data, afile):
    text = data.lower()
    regex = '|'.join(INFILE)
    #infile = re.compile('|'.join(INFILE)) 
    for match in re.finditer(regex, text):
        log_secret(match.group(), afile)