CasperSecurity

Current Path : /usr/share/apport/general-hooks/
Upload File :
Current File : //usr/share/apport/general-hooks/generic.py

'''Attach generally useful information, not specific to any package.'''

# Copyright (C) 2009 Canonical Ltd.
# Authors: Matt Zimmerman <mdz@canonical.com>
#          Martin Pitt <martin.pitt@ubuntu.com>
#          Brian Murray <brian@ubuntu.com>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.  See http://www.gnu.org/copyleft/gpl.html for
# the full text of the license.

import os, re
import apport.hookutils, apport.fileutils


def add_info(report, ui):
    nm = apport.hookutils.nonfree_kernel_modules()
    if nm:
        report['NonfreeKernelModules'] = ' '.join(nm)

    # check for low space
    mounts = {'/': 'system',
              '/var': '/var',
              '/tmp': '/tmp'}

    home = os.getenv('HOME')
    if home:
        mounts[home] = 'home'
    treshold = 50

    for mount in mounts:
        st = os.statvfs(mount)
        free_mb = st.f_bavail * st.f_frsize / 1000000

        if free_mb < treshold:
            report['UnreportableReason'] = 'Your %s partition has less than \
%s MB of free space available, which leads to problems using applications \
and installing updates. Please free some space.' % (mounts[mount], free_mb)

    # important glib errors/assertions (which should not have private data)
    if 'ExecutablePath' in report:
        path = report['ExecutablePath']
        gtk_like = (apport.fileutils.links_with_shared_library(path, 'libgtk') or
                    apport.fileutils.links_with_shared_library(path, 'libgtk-3') or
                    apport.fileutils.links_with_shared_library(path, 'libX11'))
        if gtk_like and apport.hookutils.in_session_of_problem(report):
            xsession_errors = apport.hookutils.xsession_errors()
            if xsession_errors:
                report['XsessionErrors'] = xsession_errors

    # using local libraries?
    if 'ProcMaps' in report:
        local_libs = set()
        for lib in re.finditer(r'\s(/[^ ]+\.so[.0-9]*)$', report['ProcMaps'], re.M):
            if not apport.fileutils.likely_packaged(lib.group(1)):
                local_libs.add(lib.group(1))
        if ui and local_libs:
            if not ui.yesno('''The crashed program seems to use third-party or local libraries:

%s

It is highly recommended to check if the problem persists without those first.

Do you want to continue the report process anyway?
''' % '\n'.join(local_libs)):
                raise StopIteration
            report['LocalLibraries'] = ' '.join(local_libs)
            report['Tags'] = (report.get('Tags', '') + ' local-libs').strip()

    # using third-party packages?
    if '[origin:' in report.get('Package', '') or '[origin:' in report.get('Dependencies', ''):
        report['Tags'] = (report.get('Tags', '') + ' third-party-packages').strip()

    # using ecryptfs?
    if os.path.exists(os.path.expanduser('~/.ecryptfs/wrapped-passphrase')):
        report['EcryptfsInUse'] = 'Yes'

    # filter out crashes on missing GLX (LP#327673)
    in_gl = '/usr/lib/libGL.so' in (report.get('StacktraceTop') or '\n').splitlines()[0]
    if in_gl and 'Loading extension GLX' not in apport.hookutils.read_file('/var/log/Xorg.0.log'):
        report['UnreportableReason'] = 'The X.org server does not support the GLX extension, which the crashed program expected to use.'
    # filter out package install failures due to a segfault
    if 'Segmentation fault' in report.get('ErrorMessage', '') \
            and report['ProblemType'] == 'Package':
        report['UnreportableReason'] = 'The package installation resulted in a segmentation fault which is better reported as a crash report rather than a package install failure.'

    # log errors
    if report['ProblemType'] == 'Crash':
        apport.hookutils.attach_journal_errors(report)


if __name__ == '__main__':
    r = {}
    add_info(r, None)
    for k in r:
        print('%s: %s' % (k, r[k]))
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY