网站首页 包含标签 Windows 的所有文章

  • windows密码获取 -- mimikatz

    一、软件介绍 一款获取windows账号密码的软件 二、下载地址(软件作者) https://github.com/gentilkiwi/mimikatz 或加入Kirin博客交流群下载 三、使用方法 1、解压后双击打开,分32位和64位 2、输入下面两行命令,直接获取密码 privilege::debug sekurlsa::logonpasswords ...

    2021-03-04 548
  • Windows局域网渗透(IPC$管道)

    黑客技术——ipc$命令所使用的端口 首先我们来了解一些基础知识:1.SMB:(Server Message Block) Windows协议族,用于文件打印共享的服务;2.NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口实现基于TCP/IP协议的NETBIOS网络互联。3.在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现。 有了这些基础知识,我们就可以进一步来讨论访问网络共享对端口的选择了:对于win2000客户端(发起端)来说:1.如果在允许NBT的情况下连接服务器时,客户端会同时尝试访问139和445端口,如果445端口有响应,那么就发送RST包给139端口断开连接,用455端口进行会话,当445端口无响应时,才使用139端口,如果两个端口都没有响应,则会话失败;2.如果在禁止NBT的情况下连接服务器时,那么客户端只会尝试访问445端口,如果445端口无响应,那么会话失败。 对于win2000服务器端来说:1.如果允许NBT, 那么UDP端口137, 138, TCP 端口 139, 445将开放(LISTENING);2.如果禁止NBT,那么只有445端口开放。 我们建立的ipc$会话对端口的选择同样遵守以上原则。显而易见,如果远程服务器没有监听139或445端口,ipc$会话是无法建立的。 黑客技术——ipc管道在黑客攻击中的意义 ipc管道本来是微软为了方便管理员进行远程管理而设计的,但在入侵者看来,开放ipc管道的主机似乎更容易得手。通过ipc管道,我们可以远程调用一些系统函数(大多通过工具实现,但需要相应的权限),这往往是入侵成败的关键。如果不考虑这些,仅从传送文件这一方面,ipc管道已经给了入侵者莫大的支持,甚至已经成为了最重要的传输手段,因此你总能在各大论坛上看到一些朋友因为打不开目标机器的ipc管道而一筹莫展大呼救命。当然,我们也不能忽视权限在ipc管道中扮演的重要角色,想必你一定品尝过空会话的尴尬,没有权限,开启管道我们也无可奈何。但入侵者一旦获得了管理员的权限,那么ipc管道这把双刃剑将显示出它狰狞的一面。 黑客技术——ipc$连接失败的常见原因 以下是一些常见的导致ipc$连接失败的原因: 1 IPC连接是Windows NT及以上系统中特有的功能,由于其需要用到Windows NT中很多DLL函数,所以不能在Windows 9.x/Me系统中运行,也就是说只有nt/2000/xp才可以相互建立ipc$连接,98/me是不能建立ipc$连接的; 2 如果想成功的建立一个ipc$连接,就需要响应方开启ipc$共享,即使是空连接也是这样,如果响应方关闭了ipc$共享,将不能建立连接; 3 连接发起方未启动Lanmanworkstation服务(显示名为:Workstation):它提供网络链结和通讯,没有它发起方无法发起连接请求; 4 响应方未启动Lanmanserver服务(显示名为:Server):它提供了 RPC 支持、文件、打印以及命名管道共享,ipc$依赖于此服务,没有它主机将无法响应发起方的连接请求,不过没有它仍可发起ipc$连接; 5 响应方未启动NetLogon,它支持网络上计算机 pass-through 帐户登录身份(不过这种情况好像不多); 6 响应方的139,445端口未处于监听状态或被防火墙屏蔽; 7 连接发起方未打开139,445端口; 8 用户名或者密码错误:如果发生这样的错误,系统将给你类似于'无法更新密码'这样的错误提示(显然空会话排除这种错误); 9 命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号可以省略,如果密码为空,可以直接输入两个引号""即可; 10 如果在已经建立好连接的情况下对方重启计算机,那么ipc$连接将会自动断开,需要重新建立连接。  另外,你也可以根据返回的错误号分析原因:  错误号5,拒绝访问:很可能你使用的用户不是管理员权限的;  错误号51,Windows无法找到网络路径:网络有问题;  错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);  错误号67,找不到网络名:你的lanmanworkstation服务未启动或者目标删除了ipc$;  错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连;  错误号1326,未知的用户名或错误密码:原因很明显了;  错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动; 错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。  黑客技术——复制文件失败的原因 有些朋友虽然成功的建立了ipc$连接,但在copy时却遇到了这样那样的麻烦,无法复制成功,那么导致复制失败的常见原因又有哪些呢? 1.对方未开启共享文件夹 这类错误出现的最多,占到50%以上。许多朋友在ipc$连接建立成功后,甚至都不知道对方是否有共享文件夹,就进行盲目复制,结果导致复制失败而且郁闷的很。因此我建议大家在进行复制之前务必用net view \\IP这个命令看一下你想要复制的共享文件夹是否存在(用软件查看当然更好),不要认为能建立ipc$连接就一定有共享文件夹存在。 2.向默认共享复制失败 这类错误也是大家经常犯的,主要有两个小方面: 1)错误的认为能建立ipc$连接的主机就一定开启了默认共享,因而在建立完连接之后马上向c$,d$,admin$之类的默认共享复制文件,一旦对方未开启默认共享,将导致复制失败。ipc$连接成功只能说明对方打开了ipc$共享,并不能说明默认共享一定存在。ipc$共享与默认共享是两码事,ipc$共享是一个命名管道,并不是哪个实际的文件夹,而默认共享却是实实在在的共享文件夹; 2)由于net view \\IP 这个命令无法显示默认共享文件夹(因为默认共享带$),因此通过这个命令,我们并不能判断对方是否开启了默认共享,因此如果对方未开启默认共享,那么所有向默认共享进行的操作都不能成功;(不过大部分扫描软件在扫弱口令的同时,都能扫到默认共享目录,可以避免此类错误的发生) 要点:请大家一定区分ipc共享,默认共享,普通共享这三者的区别:ipc共享是一个管道,并不是实际的共享文件夹;默认共享是安装时默认打开的文件夹;普通共享是我们自己开启的可以设置权限的共享文件夹。 3.用户权限不够,包括四种情形: 1)空连接向所有共享(默认共享和普通共享)复制时,权限是不够的; 2)向默认共享复制时,在Win2000 Pro版中,只有Administrators和Backup Operators组成员才可以,在Win2000 Server版本 Server Operatros组也可以访问到这些共享目录;  3)向普通共享复制时,要具有相应权限(即对方管理员事先设定的访问权限); 4)对方可以通过防火墙或安全软件的设置,禁止外部访问共享; 注意: 1.不要认为administrator就一定具有管理员权限,管理员名称是可以改的。 2.管理员可以访问默认共享的文件夹,但不一定能够访问普通的共享文件夹,因为管理员可以对普通的共享文件夹进行访问权限设置,如图6,管理员为D盘设置的访问权限为仅允许名为xinxin的用户对该文件夹进行完全访问,那么此时即使你拥有管理员权限,你仍然不能访问D盘。不过有意思的是,如果此时对方又开启了D$的默认共享,那么你却可以访问D$,从而绕过了权限限制,有兴趣的朋友可以自己做测试。 4.被防火墙杀死或在局域网 还有一种情况,那就是也许你的复制操作已经成功,但当远程运行时,被防火墙杀掉了,导致找不到文件;或者你把木马复制到了局域网内的主机,导致连接失败(反向连接的木马不会发生这种情况)。如果你没有想到这种情况,你会以为是复制上出了问题,但实际你的复制操作已经成功了,只是运行时出了问题。 黑客技术——关于at命令和xp对ipc$的限制 本来还想说一下用at远程运行程序失败的原因,但考虑到at的成功率不是很高,问题也很多,在这里就不提它了(提的越多,用的人就越多),而是推荐大家用psexec.exe远程运行程序,假设想要远程机器执行本地c:\xinxin.exe文件,且管理员为administrator,密码为1234,那么输入下面的命令: psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe 如果已经建立ipc连接,则-u -p这两个参数不需要,psexec.exe将自动拷贝文件到远程机器并运行。 本来xp中的ipc$也不想在这里讨论,想单独拿出来讨论,但看到越来越多的朋友很急切的提问为什么遇到xp的时候,大部分操作都很难成功。我在这里就简单提一下吧,在xp的默认安全选项中,任何远程访问仅被赋予来宾权限,也就是说即使你是用管理员帐户和密码,你所得到的权限也只是Guest,因此大部分操作都会因为权限不够而失败,而且到目前为止并没有一个好的办法来突破这一限制。所以如果你真的得到了xp的管理员密码,我建议你尽量避开ipc管道。 黑客技术——如何打开目标的IPC$共享以及其他共享 目标的ipc$不是轻易就能打开的,否则就要天下打乱了。你需要一个admin权限的shell,比如telnet,木马,cmd重定向等,然后在shell下执行: net share ipc$ 开放目标的ipc$共享; net share ipc$ /del 关闭目标的ipc$共享;如果你要给它开共享文件夹,你可以用: net share xinxin=c:\ 这样就把它的c盘开为共享名为xinxin共享文件夹了。(可是我发现很多人错误的认为开共享文件夹的命令是net share c$,还大模大样的给菜鸟指指点点,真是误人子弟了)。再次声明,这些操作都是在shell下才能实现的。 黑客技术——一些需要shell才能完成的命令 看到很多教程这方面写的十分不准确,一些需要shell才能完成命令就简简单单的在ipc$连接下执行了,起了误导作用。那么下面我总结一下需要在shell才能完成的命令: 1 向远程主机建立用户,激活用户,修改用户密码,加入管理组的操作需要在shell下完成; 2 打开远程主机的ipc$共享,默认共享,普通共享的操作需要在shell下完成; 3 运行/关闭远程主机的服务,需要在shell下完成; 4 启动/杀掉远程主机的进程,也需要在shell下完成(用软件的情况下除外,如pskill)。 ipc$连接在实际操作过程中会出现各种各样的问题,本文就为大家总结这么多内容,如有遗漏欢迎指正。 ...

    2021-01-02 559
  • Windows主机漏洞扫描工具

    0×00 说明: 这是一款基于主机的漏洞扫描工具,采用多线程确保可以快速的请求数据,采用线程锁可以在向sqlite数据库中写入数据避免database is locked的错误,采用md5哈希算法确保数据不重复插入。 本工具查找是否有公开exp的网站为shodan,该网站限制网络发包的速度,因而采用了单线程的方式,且耗时较长。 功能: 查找主机上具有的CVE 查找具有公开EXP的CVE 0×01 起因: 因为需要做一些主机漏洞扫描方面的工作,因而编写了这个简单的工具。之前也查找了几款类似的工具,如下: vulmap: vulmon开发的一款开源工具,原理是根据软件的名称和版本号来确定,是否有CVE及公开的EXP。这款Linux的工具挺好用,但是对于Windows系统层面不太适用。 windows-exp-suggester: 这款和本工具的原理一样,尝试使用了之后,发现它的CVEKB数据库只更新到2017年的,并且没有给出CVE是否有公开的EXP信息。 基于以上所以写了这个简单的工具,该项目在https://github.com/chroblert/WindowsVulnScan 0×02 原理: 1. 搜集CVE与KB的对应关系。首先在微软官网上收集CVE与KB对应的关系,然后存储进数据库中 2. 查找特定CVE网上是否有公开的EXP 3. 利用powershell脚本收集主机的一些系统版本与KB信息 4. 利用系统版本与KB信息搜寻主机上具有存在公开EXP的CVE 0×03 参数:  # author: JC0o0l  # GitHub: https://github.com/chroblert/  可选参数:    -h, --help           show this help message and exit    -u, --update-cve     更新CVEKB数据    -U, --update-exp     更新CVEEXP数据    -C, --check-EXP       检索具有EXP的CVE    -f FILE, --file FILE ps1脚本运行后产生的.json文件 0×04 示例: 1. 首先运行powershell脚本KBCollect.ps收集一些信息  .\KBCollect.ps1 2. 将运行后产生的KB.json文件移动到cve-check.py所在的目录 3. 安装一些python3模块  python3 -m pip install requirements.txt 4. 运行cve-check.py -u创建CVEKB数据库 5. 运行cve-check.py -U更新CVEKB数据库中的hasPOC字段 6. 运行cve-check.py -C -f KB.json查看具有公开EXP的CVE,如下: 0×05 源码: KBCollect.ps1:  function Get-CollectKB(){      # 1. 搜集所有的KB补丁      $KBArray = @()      $KBArray = Get-HotFix|ForEach-Object {$_.HotFixId}      $test = $KBArray|ConvertTo-Json      return $test  }  function Get-BasicInfo(){      # 1. 操作系统      # $windowsProductName = (Get-ComputerInfo).WindowsProductName      $windowsProductName = (Get-CimInstance Win32_OperatingSystem).Caption      # 2. 操作系统版本      $windowsVersion = (Get-ComputerInfo).WindowsVersion      $basicInfo = "{""windowsProductName"":""$windowsProductName"",""windowsVersion"":""$windowsVersion""}"      return $basicInfo        }  $basicInfo = Get-BasicInfo  $KBList = Get-CollectKB  $KBResult = "{""basicInfo"":$basicInfo,""KBList"":$KBList}"  $KBResult|Out-File KB.json -encoding utf8 cve-check.py:  import requests  import sqlite3  import json  import hashlib  import math  import re  import threading  import time  import argparse  from pathlib import Path  # 删除一些ssl 认证的warnging信息  requests.packages.urllib3.disable_warnings()    ThreadCount=20  DBFileName="CVEKB.db"  TableName="CVEKB"  insertSQL = []  updateSQL = []  lock = threading.Lock()  KBResult = {}  parser = argparse.ArgumentParser()  parser.add_argument("-u","--update-cve",help="更新CVEKB数据",action="store_true")  parser.add_argument("-U","--update-exp",help="更新CVEEXP数据",action="store_true")  parser.add_argument("-C","--check-EXP",help="检索具有EXP的CVE",action="store_true")  parser.add_argument("-f","--file",help="ps1脚本运行后产生的.json文件")  args = parser.parse_args()    class CVEScanThread(threading.Thread):      def __init__(self,func,args,name="",):          threading.Thread.__init__(self)          self.func = func          self.args = args          self.name = name          self.result = None        def run(self):          print("thread:{} :start scan page {}".format(self.args[1],self.args[0]))          self.result = self.func(self.args[0],)          print("thread:{} :stop scan page {}".format(self.args[1],self.args[0]))  class EXPScanThread(threading.Thread):      def __init__(self,func,args,name="",):          threading.Thread.__init__(self)          self.func = func          self.args = args          self.name = name          self.result = None        def run(self):          print("thread:{} :start scan CVE: {},xuehao:{}".format(self.args[1],self.args[0],self.args[2]))          self.result = self.func(self.args[0],)          print("thread:{} :stop scan CVE: {}".format(self.args[1],self.args[0]))      def get_result(self):          threading.Thread.join(self)          try:              return self.result          except Exception:              return "Error"  def get_page_num(num=1,pageSize=100):      url = "https://portal.msrc.microsoft.com/api/security-guidance/en-us"      payload = "{\"familyIds\":[],\"productIds\":[],\"severityIds\":[],\"impactIds\":[],\"pageNumber\":" + str(num) + ",\"pageSize\":" + str(pageSize) + ",\"includeCveNumber\":true,\"includeSeverity\":false,\"includeImpact\":false,\"orderBy\":\"publishedDate\",\"orderByMonthly\":\"releaseDate\",\"isDescending\":true,\"isDescendingMonthly\":true,\"queryText\":\"\",\"isSearch\":false,\"filterText\":\"\",\"fromPublishedDate\":\"01/01/1998\",\"toPublishedDate\":\"03/02/2020\"}"      headers = {          'origin': "https//portal.msrc.microsoft.com",          'referer': "https//portal.msrc.microsoft.com/en-us/security-guidance",          'accept-language': "zh-CN",          'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299",          'accept': "application/json, text/plain, */*",          'accept-encoding': "gzip, deflate",          'host': "portal.msrc.microsoft.com",          'connection': "close",          'cache-control': "no-cache",          'content-type': "application/json",         }        response = requests.request("POST", url, data=payload, headers=headers, verify = False)      resultCount = json.loads(response.text)['count']      return math.ceil(int(resultCount)/100)    def update_cvekb_database(num=1,pageSize=100):      pageCount = get_page_num()      #for i in range(1,pageCount+1):      i = 1      pageCount=524      tmpCount = ThreadCount      while i <= pageCount:          tmpCount = ThreadCount if (pageCount - i) >= ThreadCount else pageCount - i          print("i:{},pageCount-i:{},ThreadCount:{},PageCount:{}".format(i,pageCount-i,ThreadCount,pageCount))          time.sleep(0.5)              threads = []          print("===============================")          for j in range(1,tmpCount + 1):              print("更新第{}页".format(i+j-1))              t = CVEScanThread(update_onepage_cvedb_database,(i+j-1,j,),str(j))              threads.append(t)          for t in threads:              t.start()          for t in threads:              t.join()              # update_onepage_cvedb_database(num=i)          i = i + tmpCount          conn = sqlite3.connect(DBFileName)          for sql in insertSQL:              conn.execute(sql)          conn.commit()          conn.close()          if tmpCount != ThreadCount:              break                      def check_POC_every_CVE(CVEName=""):      #apiKey = ""      #url = "https://exploits.shodan.io/api/search?query=" + CVEName + "&key=" + apiKey      url = "https://exploits.shodan.io/?q=" + CVEName      try:          response = requests.request("GET",url=url,verify=False,timeout=10)          #total = json.loads(response.text)      except Exception as e:          print("Error,{}".format(CVEName))          print(e)          return "Error"      if "Total Results" not in response.text:          return "False"      else:          return "True"  def update_onepage_cvedb_database(num=1,pageSize=100):      url = "https://portal.msrc.microsoft.com/api/security-guidance/en-us"        payload = "{\"familyIds\":[],\"productIds\":[],\"severityIds\":[],\"impactIds\":[],\"pageNumber\":" + str(num) + ",\"pageSize\":" + str(pageSize) + ",\"includeCveNumber\":true,\"includeSeverity\":false,\"includeImpact\":false,\"orderBy\":\"publishedDate\",\"orderByMonthly\":\"releaseDate\",\"isDescending\":true,\"isDescendingMonthly\":true,\"queryText\":\"\",\"isSearch\":false,\"filterText\":\"\",\"fromPublishedDate\":\"01/01/1998\",\"toPublishedDate\":\"03/02/2020\"}"      headers = {          'origin': "https//portal.msrc.microsoft.com",          'referer': "https//portal.msrc.microsoft.com/en-us/security-guidance",          'accept-language': "zh-CN",          'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299",          'accept': "application/json, text/plain, */*",          'accept-encoding': "gzip, deflate",          'host': "portal.msrc.microsoft.com",          'connection': "close",          'cache-control': "no-cache",          'content-type': "application/json",         }      try:          response = requests.request("POST", url, data=payload, headers=headers, verify = False)          resultList = json.loads(response.text)['details']      except :          print(response.text)      conn = sqlite3.connect(DBFileName)      create_sql = """Create Table IF NOT EXISTS {} (         hash TEXT UNIQUE,         name TEXT,         KBName TEXT,         CVEName TEXT,         impact TEXT,         hasPOC TEXT)""".format(TableName)      conn.execute(create_sql)      conn.commit()      conn.close()      for result in resultList:          KBName = result['articleTitle1'] + ";" if (result['articleTitle1'] !=  None) and result['articleTitle1'].isdigit() else ""          KBName += result['articleTitle2'] + ";" if (result['articleTitle2'] != None) and result['articleTitle2'].isdigit() else ""          KBName += result['articleTitle3'] + ";" if (result['articleTitle3'] != None) and result['articleTitle3'].isdigit() else ""          KBName += result['articleTitle4'] + ";" if (result['articleTitle4'] != None) and result['articleTitle4'].isdigit() else ""          if KBName == "":              continue          h1 = hashlib.md5()          metaStr = result['name'] + KBName + result['cveNumber'] + result['impact']          h1.update(metaStr.encode('utf-8'))          #hasPOC = check_POC_every_CVE(result['cveNumber'])          # 收集到所有的KB后再搜索有没有公开的EXP          hasPOC = ""          sql = "INSERT OR IGNORE INTO "+TableName+" VALUES ('" + h1.hexdigest() + "','" + result['name'] + "','" + KBName + "','" + result['cveNumber'] + "','" + result['impact'] + "','" + hasPOC+"')"          with lock:              global insertSQL              insertSQL.append(sql)          # conn.execute(sql)      # conn.commit()      # conn.close()      # pass    def select_CVE(tmpList=[],windowsProductName="",windowsVersion=""):      conn = sqlite3.connect(DBFileName)      con = conn.cursor()      intersectionList = []      count = 0      for i in tmpList:          sql = 'select distinct(CVEName) from '+ TableName+' where (name like "'+ windowsProductName+'%'+ windowsVersion + '%") and ("'+ i +'" not in (select KBName from '+ TableName +' where name like "'+ windowsProductName+'%'+windowsVersion+'%")); '          cveList = []          for cve in con.execute(sql):              cveList.append(cve[0])          if count == 0:              intersectionList = cveList.copy()          count +=1          intersectionList = list(set(intersectionList).intersection(set(cveList)))      intersectionList.sort()      for cve in intersectionList:          sql = "select CVEName from {} where CVEName == '{}' and hasPOC == 'True'".format(TableName,cve)          # print(sql)          con.execute(sql)          if len(con.fetchall()) != 0:              print("{} has EXP".format(cve))      # print(intersectionList)  def update_hasPOC(key = "Empty"):      conn = sqlite3.connect(DBFileName)      con = conn.cursor()      if key == "All":          sql = "select distinct(CVEName) from {}".format(TableName)      else:          sql = "select distinct(CVEName) from {} where (hasPOC IS NULL) OR (hasPOC == '')".format(TableName)        con.execute(sql)      cveNameList = con.fetchall()      i = 0      count = 1      while i < len(cveNameList):          print("|=========={}============|".format(i))          # tmpCount = ThreadCount if (len(cveNameList) - i) >= ThreadCount else len(cveNameList) - i          # threads = []          # for j in range(1,tmpCount+1):          #     t = EXPScanThread(check_POC_every_CVE,(cveNameList[i+j][0],j,i+j,),str(j))          #     threads.append(t)          # for t in threads:          #     t.start()          # for t in threads:          #     t.join()          # j = 1          # for t in threads:          #     hasPOC = t.get_result()          #     print(hasPOC)          #     update_sql = "UPDATE "+TableName+" set hasPOC = '" + hasPOC + "' WHERE cveName == '" + cveNameList[i+j][0] +"';"          #     conn.execute(update_sql)          #     print("[+] update:{}".format(update_sql))          #     j += 1          # i=i+ThreadCount          # conn.commit()          hasPOC = check_POC_every_CVE(cveNameList[i][0])          time.sleep(0.3)          update_sql = "UPDATE "+TableName+" set hasPOC = '" + hasPOC + "' WHERE cveName == '" + cveNameList[i][0] +"';"          conn.execute(update_sql)          print(update_sql)          count += 1          i += 1          if count == 10:              conn.commit()              print("[+]update")              count = 1      conn.commit()      conn.close()      print("Over")      if __name__ == "__main__":      banner = """     ========CVE-EXP-Check===============     |       author:JC0o0l               |     |       wechat:JC_SecNotes         |     |       version:1.0                 |     =====================================     """      print(banner)      if (not args.check_EXP ) and (not args.update_cve) and (not args.update_exp) and args.file is None:          parser.print_help()      if args.update_cve:          update_cvekb_database()      if args.update_exp:          dbfile=Path(DBFileName)          if dbfile.exists():              update_hasPOC(key="Empty")          else:              print("请先使用-u 创建数据库")              parser.print_help()      if args.check_EXP:          dbfile=Path(DBFileName)          if not dbfile.exists():              print("请先使用-u 创建数据库,之后使用 -U 更新是否有EXP")              parser.print_help()              exit()          if args.file:              with open(args.file,"r",encoding="utf-8") as f:                  KBResult = json.load(f)              windowsProductName = KBResult['basicInfo']['windowsProductName']              windowsProductName = ((re.search("\w[\w|\s]+\d+[\s|$]",windowsProductName).group()).strip()).replace("Microsoft","").strip()              windowsVersion = KBResult['basicInfo']['windowsVersion']              print("系统信息如下:")              print("{} {}".format(windowsProductName,windowsVersion))              tmpKBList = KBResult['KBList']              KBList = []              for KB in tmpKBList:                  KBList.append(KB.replace("KB",""))              print("KB信息如下:")              print(KBList)              print("EXP信息如下:")              select_CVE(tmpList=KBList,windowsProductName=windowsProductName,windowsVersion=windowsVersion)          else:              print("请输入.json文件")  ...

    2020-04-12 637
  • 电脑U盘重装Windows7教程

    u盘重装系统win7应该怎么操作,使用u盘重装系统前应该做什么准备?阅读微软电脑u盘重装系统win7教程后,相信大家就能学会如何通过u盘进行win7系统重装,学会了这个小技巧,大家在今后面对系统问题时就能多一种解决方案。 u盘重装win7是重装win7系统的一个较好的办法,使用u盘重装可以在电脑无法进入桌面的情况下对系统进行重装,还能通过pe系统及时抢救电脑内的文件,是一种功能全面的重装方式。大家可以通过雷蛇电脑u盘重装系统win7教程学习如何使用u盘重装。 事前准备: 1.容量8g以上的u盘一个,使用u盘前需要先将u盘内的文件清空或者全部转移。 2.搜索小白系统官网,将小白一键重装系统下载到可以运行的电脑内。 步骤一、制作u盘启动盘 1.将准备好的u盘插入电脑,打开小白一键重装系统,点击制作u盘。 2.选择win7系统进行制作。 3.小白一键重装系统会弹出警告,提示对u盘进行备份,直接点击确定即可。 4.等待u盘启动盘制作完成。 步骤二、设置电脑u盘启动 1.查找火影笔记本电脑的u盘启动热键,可以上网查找,也可以通过小白一键重装系统提供的启动快捷键菜查询。 2.重启电脑,连续按下刚才记录的启动热键,屏幕出现启动选择项后,选择USB选项,按下回车键进行u盘启动。 步骤三、安装系统 1.进入u盘启动后,选择【1】选项按并下回车键,打开小白PE系统。 2.进入小白PE系统,PE系统会自动启动装机工具,使用装机工具安装win7系统。 3.选择C盘为系统盘,点击开始安装。 4.系统安装完成,拔出u盘,点击立即重启。 5.等待电脑重启,按照系统提示完成win7系统初始设置,系统重装完成。 ...

    2020-03-16 496
  • Windows10怎么设置默认浏览器

    Windows10是美国微软公司研发的新一代跨平台及设备应用的操作系统。许多朋友因为工作的需要会给电脑安装多个浏览器,比如安装有谷歌浏览器,360浏览器,火狐浏览器等多个浏览器,那么怎么更改默认浏览器呢,下面就来看看小编的操作方法吧。 win10系统怎么设置默认浏览器 1、点击开始按钮,在开始菜单的左侧打开“设置”。 2、在打开的windows设置界面中点击系统选项打开。 3、在新出现的界面中点击界面左侧的“默认应用”。 4、然后在右侧的“选择默认的应用”的选项中找到“web浏览器”选项点击。 5、在弹出的浏览器选项框中选择需要设置为默认浏览器的浏览器点击即可。 QQ交流群:641912805 ...

    2020-03-16 716
  • 小马一键装机重装系统电脑版

    一款非常傻瓜式的计算机装机工具,有了它 再也不需要找电脑师傅了,自己在家可以换系统了 小马一键重装系统是一款极为简单的重装电脑软件,它凭借着无需任何电脑技术,傻瓜式操作,赢得了用户的认可。真正做到:鼠标直操作、智能检测分析、多元化系统版本选择、全新下载技术、永久免费! 智能检测         对电脑提前打“预防针”,不用我们对电脑评估。小马会全自动智能化监测当前电脑信息,自动分析电脑是否适合使用得重装,不强制安装,保证安装后系统可运性。 ...

    2019-11-13 587
  • 系统安装方法之:PE安装

    (这个安装教程适用于所有的定制系统,uefi+gpt用户记得看文章末尾哦) 你需要准备的东西有: U盘(如果你有的话)、微PE的安装包、还有一个系统镜像 顺带附上微PE的官:www.wepe.com.cn(下载v2.0的) 这里有人会问: Q : 我用大菠萝PE装行嘛 或者 Q:为什么不用xiexinhua PE啊 A:也可以用别的PE装,但是很有可能会给你装一些垃圾软件或者怼点驱动上去,我用微pe的话……是因为这个比较纯净 好了接下来开始正片 下载好微PE的安装包之后,插上U盘(记得备份好文件哦),然后打开安装保 然后按照下图设置(橙色框住的是可以自行修改的选项)修改好以后,点击“安装进U盘”,待安装完成之后,重启,然后通过下列快捷键进入主板的快捷启动菜单uefi+gpt用户需要选择带uefi的启动项,例UEFI:Xieston(U盘名字),bios+mbr用户则反之,选中之后按Enter,然后请耐心等待,稍后会进到PE,进入下一阶段的安装 ps:如果您下载的镜像是iso结尾的,请看第一部分,gho结尾的,请看第二部分 第一部分———iso镜像篇 首先打开Dism++,就是图中的这个软件点击“接受” 即可进入主界面 然后再资源管理器中找到你下载的镜像(这里以原版镜像为例),双击挂载挂载好以后是下图这个样子然后回到Dism++,点击顶部的“恢复功能——-系统还原” 再点击“浏览” 然后按照这个目录找到install.wim之后,选择你要安装到的磁盘(这里默认是C盘,所以不用改动,上面的目标映像也不用改动)记得把添加引导和格式化勾选上哦,之后点击确。 直接点确定 请耐心等待,无聊的话,可以肝一会崩3,或者在群里迫害一下老♂黑 之后等待进度条走完,就可以关机拔掉U盘,然后再开机,就可以进入系统了 第二部分———–gho镜像篇 打开“ CGI备份还原 ”(就下图这个)先选择你要安装系统到哪个分区,然后选择gho镜像,再点击执行 点击确定耐心等待~~这可能需要一点时间,在此之前可以迫害一下老♂黑 PS:安装完成之后bios+mbr用户可以直接重启电脑进行下一阶段,而uefi+gpt用户需要通过Dism++修复引导后才能重启进行下一阶段的安装 (以下为针对uefi+gpt用户的引导修复教程) 打开Dism++,点击顶部的恢复功能,选择引导修复,点击确定,待修复完成之后,就可以重启电脑进行下一阶段的安装了。 ————————————————–End———————————————————— ...

    2019-10-06 617
  • Win10任务管理器监控系统在桌面上显示

    让Win10实时监控任务管理器在桌面上面显示或置顶在最前面让你时时刻刻了解你的电脑资源占用率,还可以在玩游戏时测测是否资源率占用大,还有各种姿势使用,自己折腾吧。 打开任务管理器,键盘快捷键:CTRL+SHIFT+ESC,默认显示是下图一样的打开性能然后双击CPU那里。 双击就变成这种简洁窗口了,再次双击就还原,其它功能自己尝试吧! ...

    2019-09-13 945
  • Kirin博客再次举行赠送vps活动

    之前下血本送了一次,这次的配置比上次的更好些。 服务器配置: 1核 1G 100M 10G SSD数据盘 1IP 500G/月 VPS 无防御,攻击停止秒解除 赠送10台,留言评论时请评论您的 QQ 我们将随机选择 QQ 赠送 兑换时,用评论的 QQ 领取 VPS,每人限领一台 活动结束:7月31号晚上12点 开奖时间:8月1日 ...

    2019-07-20 2627
  • windows安装中国蚁剑

    中国蚁剑 antSword-github antSword-百度网盘 安装步骤 等初始化完成后,然后如图再打开一次AntSword.ext就ok了...

    2019-07-01 1889
  • 简单一招查出有没有人在你电脑里面“偷”资料

    简单一招查出有没有人在你电脑里面“偷”资料 1.左下角 找到“运行” 2. 在运行里面输入 regedit 3.然后按下面的目录 依次打开 HKEY_LOCAL_MACHINE/SYSTEM/CurrentContorSet/Enum/USBSTOR/ Disk&Ven_SanDisk&Prod_Ultra_USB_3.0&Rev_1.00 这个就是使用过的U盘目录 我的电脑是这个 4.我电脑上用过的U盘太多 我就随便选择一个 右边这里就是 使用过的痕迹  5. 这里 右键点击权限 6.打开后 就是这个界面 然后我们把 拒绝下面的选项 全部 √ 上 这样就可以 禁止 这个U 盘 在我们的电脑上“读写”了 (每个U盘的ID都是唯一的) ...

    2019-06-26 874
  • 解决Win7系统开机显示one or more table pointers are invalid

    WIN7电脑系统 一开机就显示:fatal error: one or more table pointers are invalid modification could be unsafe 按回车可进入系统 (这种情况很多时候是发生在装有固态硬盘的电脑上) 解决方法  先进入系统 点击左下角开始  开始  --运行--   cmd  (以管理员身份运行) 输入slmgr -upk  (卸载秘钥) 回车 稍等一会  就会出现卸载成功的界面 然后重启一遍    再用别的激活工具激活一下系统  再重启 ,就不会显示one or more table pointers are invalid。 ...

    2019-06-26 3357
  • 关于计算机运行的那些事

          今天为大家带来的是一篇如何合理的使用计算机的技术性文章,我相信很多使用计算机的小白在看完这篇文章后,一定会知道更多的关于计算机的使用方法。在日常的生活工作中,我们总是离不开计算机,对计算机的合理使用有助于我们提升工作效率,同时也有助于我们对计算机的管理。下面我从几个方面来讲述一下怎么来合理的使用。 一、关于系统安装或重装       计算机系统在安装或是完全彻底重装前,都会对硬盘进行分区,硬盘分区时应当注意每个分区的存储量,特别是系统盘(C盘)的容量,避免后期因系统盘存储不够而耗费大量的时间来重装系统。列如:128G+1T的存储(128G固态硬盘+1T机械硬盘)如何来分区呢?建议进行如下分区:128G直接分成一个区,只用于存储系统文件和一些必要性的驱动程序文件即可!1T的存储建议分成四个分区,一个用来存储后续的软件,一个当做备份分区,一个用于存储电影、照片类的生活文件,最后一个用于存储专业知识或是工作涉及的文件。当然,你也可以直接将1T的存储划分为三个分区。 注:非系统盘一般格式化时选择NTFS类型。 二、驱动程序安装       重装系统时,当发现计算机的组合建失效时,多数由于缺少了所需驱动程序,只需去官网下载安装即可使用。那么,如何选用当前系统型号的驱动程序呢?win+R运行cmd,输入dxdiag,稍等两秒左右你就会看到你的计算机当前的系统型号,之后访问官网选择驱动程序下载,输入自己的系统型号,官网就会列出当前的系统都有哪些驱动程序文件,建议全部下载安装。安装完成后,系统会要求重启系统以便完成系统的更改,这时,只需重启即可使用。 注:推举安装驱动精灵,扫描当前系统,这时候驱动精灵会列出你的驱动程序有哪些需要升级有哪些没有安装的。一键升级即可,简单、方便、实用。 三、软件安装       非系统必要性的软件下载的时候,多数都会有自定义的安装方式,这时候请前往你留出的分区里新建一个文件夹,合理命名,之后返回软件安装界面,选择你要安装的位置,选你刚建好的文件安装即可。这么做的好处有哪些呢?软件安装位置清楚,避免根目录出现更多的文件,点开时,一脸懵逼,自己都不知道是做什么用的。其次,美观啊! 四、生活类文件与工作类文件       这两种文件单独存放在两个硬盘分区中,到时候找的时候也好找呢。除此之外,在保存文件时,要看清自己的文件存放的位置,避免保存后花费更多的时间来寻找保存的文件。 五、系统维护       计算机在使用时,会产生很多的垃圾,要每隔一段时间进行清理(三天或七天),同时,系统也会出现很多的漏洞,安装合适的防护软件是及其重要的。推举:360软件、电脑管家.......在众多的防护软件中选一款自己喜欢的就好。       总结:系统的首次安装要注意合理分区。后续的重装请装上当前系统型号的所有驱动程序。文件的保存及其命名时不要粗心大意,对各分区应当合理划分使用,以保证系统的长时间运行。 ...

    2019-04-21 686
  • [Windows] zip压缩包密码破解神器(汉化版)

    我们都知道,下载资源的时候经常遇到过下载的...

    2019-01-06 1952

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:9:00-23:00,节假日休息

扫码关注