Python | 检测Windows自启动情况(系统启动目录、注册表启动项、系统服务)

# -*-coding:utf-8-*-
import hashlib,os,winreg,wmi

# 获取文件md5
def CalcMD5(path):
    with open(path, 'rb') as f:
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        hash = md5obj.hexdigest()
        return hash

if __name__ == '__main__':

    # 程序启动目录
    startup_path = r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"
    # 程序启动目录 列表
    startup_path_list = os.listdir(startup_path)
    # 删除 desktop.ini
    startup_path_list.remove("desktop.ini")
    if len(startup_path_list) > 0:
        print "-" * 70 + "\n" + "检测:C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp"
        for file in startup_path_list:
            file_md5 = CalcMD5(os.path.join(startup_path,file))
            print {"md5":file_md5,"name":file}
        print  "-" * 70
    else:
        print "-" * 70 + "\n" + "检测:C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp - 未发现可疑文件。"
        print  "-" * 70

    # 注册表启动项 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    location = r"Software\Microsoft\Windows\CurrentVersion\Run"
    # 获取注册表该位置的所有键值
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, location)
    print "\n" + "-"*70 + "\n" + "检测:" + location
    i = 0
    while True:
        try:
            # 获取注册表对应位置的键和值
            print(winreg.EnumValue(key, i))
            i += 1
        except OSError as error:
            # 一定要关闭这个键
            winreg.CloseKey(key)
            break
    print  "-"*70

    # 获取正在运行的系统启动服务
    print "\n" + "-" * 70 + "\n" + "检测:" + "系统启动服务"
    c = wmi.WMI()
    for service in c.Win32_Service():
        # 状态为 Running 的服务
        if str(service.State) == "Running":
            print {"name":service.Name,"path":service.PathName}
    print  "-" * 70

输入内容:

----------------------------------------------------------------------
检测:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
{'name': 'calc.exe', 'md5': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
----------------------------------------------------------------------

----------------------------------------------------------------------
检测:Software\Microsoft\Windows\CurrentVersion\Run
('ctfmon', u'C:\\WINDOWS\\system32\\ctfmon.exe', 1)
----------------------------------------------------------------------

----------------------------------------------------------------------
检测:系统启动服务
{'path': u'C:\\WINDOWS\\system32\\svchost.exe -k apphost', 'name': u'AppHostSvc'}
{'path': u'C:\\WINDOWS\\system32\\svchost.exe -k netsvcs -p', 'name': u'Appinfo'}
----------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值