Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Python 进行数字取证调查_创想鸟

Python 进行数字取证调查

在注册表中分析无线访问热点

以管理员权限开启cmd,输入如下命令来列出每个网络显示出profile guid对网络的描述、网络名和网关的mac地址

代码语言:javascript代码运行次数:0运行复制

reg query "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListSignaturesUnmanaged" /s
Python 进行数字取证调查

使用WinReg读取Windows注册表中的内容

连上注册表,使用OpenKey()函数打开相关的键,在循环中依次分析该键下存储的所有网络network profile,其中FirstNetwork网络名和DefaultGateway默认网关的Mac地址的键值打印出来。

代码语言:javascript代码运行次数:0运行复制

#coding=utf-8from winreg import *# 将REG_BINARY值转换成一个实际的Mac地址def val2addr(val):    addr = ""    for ch in val:        addr += ("%02x " % ord(ch))    addr = addr.strip(" ").replace(" ", ":")[0:17]    return addr# 打印网络相关信息def printNets():    net = "/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/NetworkList/Signatures/Unmanaged"    key = OpenKey(HKEY_LOCAL_MACHINE, net)    for i in range(100):        try:            guid = EnumKey(key, i)            netKey = OpenKey(key, str(guid))            (n, addr, t) = EnumValue(netKey, 5)            (n, name, t) = EnumValue(netKey, 4)            macAddr = val2addr(addr)            netName = name            print('[+] ' + netName + '  ' + macAddr)            CloseKey(netKey)        except:            breakif __name__ == "__main__":    printNets()

使用Mechanize把Mac地址传给Wigle

此处增加了对Wigle网站的访问并将Mac地址传递给Wigle来获取经纬度等物理地址信息。

代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8from _winreg import *import mechanizeimport urllibimport reimport urlparseimport osimport optparse# 将REG_BINARY值转换成一个实际的Mac地址def val2addr(val):    addr = ""    for ch in val:        addr += ("%02x " % ord(ch))    addr = addr.strip(" ").replace(" ", ":")[0:17]    return addr# 打印网络相关信息def printNets(username, password):    net = "SOFTWAREMicrosoftWindows NTCurrentVersionNetworkListSignaturesUnmanaged"    key = OpenKey(HKEY_LOCAL_MACHINE, net)    print "[*]Networks You have Joined."    for i in range(100):        try:            guid = EnumKey(key, i)            netKey = OpenKey(key, str(guid))            (n, addr, t) = EnumValue(netKey, 5)            (n, name, t) = EnumValue(netKey, 4)            macAddr = val2addr(addr)            netName = name            print '[+] ' + netName + '  ' + macAddr            wiglePrint(username, password, macAddr)            CloseKey(netKey)        except:            break# 通过wigle查找Mac地址对应的经纬度def wiglePrint(username, password, netid):    browser = mechanize.Browser()    browser.open('http://wigle.net')    reqData = urllib.urlencode({'credential_0': username, 'credential_1': password})    browser.open('https://wigle.net/gps/gps/main/login', reqData)    params = {}    params['netid'] = netid    reqParams = urllib.urlencode(params)    respURL = 'http://wigle.net/gps/gps/main/confirmquery/'    resp = browser.open(respURL, reqParams).read()    mapLat = 'N/A'    mapLon = 'N/A'    rLat = re.findall(r'maplat=.*&', resp)    if rLat:        mapLat = rLat[0].split('&')[0].split('=')[1]    rLon = re.findall(r'maplon=.*&', resp)    if rLon:        mapLon = rLon[0].split    print '[-] Lat: ' + mapLat + ', Lon: ' + mapLondef main():    parser = optparse.OptionParser('usage %prog ' + '-u  -p ')    parser.add_option('-u', dest='username', type='string', help='specify wigle password')    parser.add_option('-p', dest='password', type='string', help='specify wigle username')    (options, args) = parser.parse_args()    username = options.username    password = options.password    if username == None or password == None:        print parser.usage        exit(0)    else:        printNets(username, password)if __name__ == '__main__':    main()

使用OS模块寻找被删除的文件/文件夹:

Windows系统中的回收站是一个专门用来存放被删除文件的特殊文件夹。子目录中的字符串表示的是用户的SID,对应机器里一个唯一的用户账户。

Python 进行数字取证调查

寻找被删除的文件/文件夹的函数:

立即学习“Python免费学习笔记(深入)”;

怪兽AI数字人 怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44 查看详情 怪兽AI数字人 代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8import os# 逐一测试回收站的目录是否存在,并返回第一个找到的回收站目录def returnDir():    dirs=['C:Recycler', 'C:Recycled', 'C:$Recycle.Bin']    for recycleDir in dirs:        if os.path.isdir(recycleDir):            return recycleDir    return None

用Python把SID和用户名关联起来:

可以使用Windows注册表把SID转换成一个准确的用户名。以管理员权限运行cmd并输入命令:

代码语言:javascript代码运行次数:0运行复制

reg query "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileListS-1-5-21-2595130515-3345905091-1839164762-1000" /s

代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8import osimport optparsefrom _winreg import *# 逐一测试回收站的目录是否存在,并返回第一个找到的回收站目录def returnDir():    dirs=['C:Recycler', 'C:Recycled', 'C:$Recycle.Bin']    for recycleDir in dirs:        if os.path.isdir(recycleDir):            return recycleDir    return None# 操作注册表来获取相应目录属主的用户名def sid2user(sid):    try:        key = OpenKey(HKEY_LOCAL_MACHINE, "SOFTWAREMicrosoftWindows NTCurrentVersionProfileList" + '' + sid)        (value, type) = QueryValueEx(key, 'ProfileImagePath')        user = value.split('')[-1]        return user    except:        return siddef findRecycled(recycleDir):    dirList = os.listdir(recycleDir)    for sid in dirList:        files = os.listdir(recycleDir + sid)        user = sid2user(sid)        print '[*] Listing Files For User: ' + str(user)        for file in files:            print '[+] Found File: ' + str(file)def main():    recycledDir = returnDir()    findRecycled(recycledDir)if __name__ == '__main__':    main()

使用PyPDF解析PDF文件中的元数据

pyPdf是管理PDF文档的第三方Python库,在Kali中是已经默认安装了的就不需要再去下载安装。

代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8import pyPdfimport optparsefrom pyPdf import PdfFileReader# 使用getDocumentInfo()函数提取PDF文档所有的元数据def printMeta(fileName):    pdfFile = PdfFileReader(file(fileName, 'rb'))    docInfo = pdfFile.getDocumentInfo()    print "[*] PDF MeataData For: " + str(fileName)    for meraItem in docInfo:        print "[+] " + meraItem + ": " + docInfo[meraItem]def main():    parser = optparse.OptionParser("[*]Usage: python pdfread.py -F ")    parser.add_option('-F', dest='fileName', type='string', help='specify PDF file name')    (options, args) = parser.parse_args()    fileName = options.fileName    if fileName == None:        print parser.usage        exit(0)    else:        printMeta(fileName)if __name__ == '__main__':    main()

用BeautifulSoup下载图片代码语言:javascript代码运行次数:0运行复制

import urllib2from bs4 import BeautifulSoup as BSfrom os.path import basenamefrom urlparse import urlsplit# 通过BeautifulSoup查找URL中所有的img标签def findImages(url):    print '[+] Finding images on ' + url    urlContent = urllib2.urlopen(url).read()    soup = BS(urlContent, 'lxml')    imgTags = soup.findAll('img')    return imgTags# 通过img标签的src属性的值来获取图片URL下载图片def downloadImage(imgTag):    try:        print '[+] Dowloading image...'        imgSrc = imgTag['src']        imgContent = urllib2.urlopen(imgSrc).read()        imgFileName = basename(urlsplit(imgSrc)[2])        imgFile = open(imgFileName, 'wb')        imgFile.write(imgContent)        imgFile.close()        return imgFileName    except:        return ' '

 用Python的图像处理库读取图片中的Exif元数据

这里查看下载图片的元数据中是否含有Exif标签“GPSInfo”,若存在则输出存在信息。

代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8import optparsefrom PIL import Imagefrom PIL.ExifTags import TAGSimport urllib2from bs4 import BeautifulSoup as BSfrom os.path import basenamefrom urlparse import urlsplit# 通过BeautifulSoup查找URL中所有的img标签def findImages(url):    print '[+] Finding images on ' + url    urlContent = urllib2.urlopen(url).read()    soup = BS(urlContent, 'lxml')    imgTags = soup.findAll('img')    return imgTags# 通过img标签的src属性的值来获取图片URL下载图片def downloadImage(imgTag):    try:        print '[+] Dowloading image...'        imgSrc = imgTag['src']        imgContent = urllib2.urlopen(imgSrc).read()        imgFileName = basename(urlsplit(imgSrc)[2])        imgFile = open(imgFileName, 'wb')        imgFile.write(imgContent)        imgFile.close()        return imgFileName    except:        return ' '# 获取图像文件的元数据,并寻找是否存在Exif标签“GPSInfo”def testForExif(imgFileName):    try:        exifData = {}        imgFile = Image.open(imgFileName)        info = imgFile._getexif()        if info:            for (tag, value) in info.items():                decoded = TAGS.get(tag, tag)                exifData[decoded] = value            exifGPS = exifData['GPSInfo']            if exifGPS:                print '[*] ' + imgFileName + ' contains GPS MetaData'    except:        passdef main():    parser = optparse.OptionParser('[*]Usage: python Exif.py -u ')    parser.add_option('-u', dest='url', type='string', help='specify url address')    (options, args) = parser.parse_args()    url = options.url    if url == None:        print parser.usage        exit(0)    else:        imgTags = findImages(url)        for imgTag in imgTags:            imgFileName = downloadImage(imgTag)            testForExif(imgFileName)if __name__ == '__main__':    main()

使用Python和SQLite3自动查询Skype的数据库代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8import sqlite3import optparseimport os# 连接main.db数据库,申请游标,执行SQL语句并返回结果def printProfile(skypeDB):    conn = sqlite3.connect(skypeDB)    c = conn.cursor()    c.execute("SELECT fullname, skypename, city, country, datetime(profile_timestamp,'unixepoch') FROM Accounts;")    for row in c:        print '[*] -- Found Account --'        print '[+] User           : '+str(row[0])        print '[+] Skype Username : '+str(row[1])        print '[+] Location       : '+str(row[2])+','+str(row[3])        print '[+] Profile Date   : '+str(row[4])# 获取联系人的相关信息def printContacts(skypeDB):    conn = sqlite3.connect(skypeDB)    c = conn.cursor()    c.execute("SELECT displayname, skypename, city, country, phone_mobile, birthday FROM Contacts;")    for row in c:        print '[*] -- Found Contact --'        print '[+] User           : ' + str(row[0])        print '[+] Skype Username : ' + str(row[1])        if str(row[2]) != '' and str(row[2]) != 'None':            print '[+] Location       : ' + str(row[2]) + ',' + str(row[3])        if str(row[4]) != 'None':            print '[+] Mobile Number  : ' + str(row[4])        if str(row[5]) != 'None':            print '[+] Birthday       : ' + str(row[5])def printCallLog(skypeDB):    conn = sqlite3.connect(skypeDB)    c = conn.cursor()    c.execute("SELECT datetime(begin_timestamp,'unixepoch'), identity FROM calls, conversations WHERE calls.conv_dbid = conversations.id;")    print '[*] -- Found Calls --'    for row in c:        print '[+] Time: ' + str(row[0]) + ' | Partner: ' + str(row[1])def printMessages(skypeDB):    conn = sqlite3.connect(skypeDB)    c = conn.cursor()    c.execute("SELECT datetime(timestamp,'unixepoch'), dialog_partner, author, body_xml FROM Messages;")    print '[*] -- Found Messages --'    for row in c:        try:            if 'partlist' not in str(row[3]):                if str(row[1]) != str(row[2]):                    msgDirection = 'To ' + str(row[1]) + ': '                else:                    msgDirection = 'From ' + str(row[2]) + ' : '                print 'Time: ' + str(row[0]) + ' ' + msgDirection + str(row[3])        except:            passdef main():    parser = optparse.OptionParser("[*]Usage: python skype.py -p  ")    parser.add_option('-p', dest='pathName', type='string', help='specify skype profile path')    (options, args) = parser.parse_args()    pathName = options.pathName    if pathName == None:        print parser.usage        exit(0)    elif os.path.isdir(pathName) == False:        print '[!] Path Does Not Exist: ' + pathName        exit(0)    else:        skypeDB = os.path.join(pathName, 'main.db')        if os.path.isfile(skypeDB):            printProfile(skypeDB)            printContacts(skypeDB)            printCallLog(skypeDB)            printMessages(skypeDB)        else:            print '[!] Skype Database ' + 'does not exist: ' + skpeDBif __name__ == '__main__':    main()

 用Python解析火狐浏览器的SQLite3数据库

主要关注文件:cookie.sqlite、places.sqlite、downloads.sqlite

代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8import reimport optparseimport osimport sqlite3# 解析打印downloads.sqlite文件的内容,输出浏览器下载的相关信息def printDownloads(downloadDB):    conn = sqlite3.connect(downloadDB)    c = conn.cursor()    c.execute('SELECT name, source, datetime(endTime/1000000, 'unixepoch') FROM moz_downloads;')    print '[*] --- Files Downloaded --- '    for row in c:        print '[+] File: ' + str(row[0]) + ' from source: ' + str(row[1]) + ' at: ' + str(row[2])# 解析打印cookies.sqlite文件的内容,输出cookie相关信息def printCookies(cookiesDB):    try:        conn = sqlite3.connect(cookiesDB)        c = conn.cursor()        c.execute('SELECT host, name, value FROM moz_cookies')        print '[*] -- Found Cookies --'        for row in c:            host = str(row[0])            name = str(row[1])            value = str(row[2])            print '[+] Host: ' + host + ', Cookie: ' + name + ', Value: ' + value    except Exception, e:        if 'encrypted' in str(e):            print '[*] Error reading your cookies database.'            print '[*] Upgrade your Python-Sqlite3 Library'# 解析打印places.sqlite文件的内容,输出历史记录def printHistory(placesDB):    try:        conn = sqlite3.connect(placesDB)        c = conn.cursor()        c.execute("select url, datetime(visit_date/1000000, 'unixepoch') from moz_places, moz_historyvisits where visit_count > 0 and moz_places.id==moz_historyvisits.place_id;")        print '[*] -- Found History --'        for row in c:            url = str(row[0])            date = str(row[1])            print '[+] ' + date + ' - Visited: ' + url    except Exception, e:        if 'encrypted' in str(e):            print '[*] Error reading your places database.'            print '[*] Upgrade your Python-Sqlite3 Library'            exit(0)# 解析打印places.sqlite文件的内容,输出百度的搜索记录def printBaidu(placesDB):    conn = sqlite3.connect(placesDB)    c = conn.cursor()    c.execute("select url, datetime(visit_date/1000000, 'unixepoch') from moz_places, moz_historyvisits where visit_count > 0 and moz_places.id==moz_historyvisits.place_id;")    print '[*] -- Found Baidu --'    for row in c:        url = str(row[0])        date = str(row[1])        if 'baidu' in url.lower():            r = re.findall(r'wd=.*?&', url)            if r:                search=r[0].split('&')[0]                search=search.replace('wd=', '').replace('+', ' ')                print '[+] '+date+' - Searched For: ' + searchdef main():    parser = optparse.OptionParser("[*]Usage: firefoxParse.py -p  ")    parser.add_option('-p', dest='pathName', type='string', help='specify skype profile path')    (options, args) = parser.parse_args()    pathName = options.pathName    if pathName == None:        print parser.usage        exit(0)    elif os.path.isdir(pathName) == False:        print '[!] Path Does Not Exist: ' + pathName        exit(0)    else:        downloadDB = os.path.join(pathName, 'downloads.sqlite')        if os.path.isfile(downloadDB):            printDownloads(downloadDB)        else:            print '[!] Downloads Db does not exist: '+downloadDB        cookiesDB = os.path.join(pathName, 'cookies.sqlite')        if os.path.isfile(cookiesDB):            pass            printCookies(cookiesDB)        else:            print '[!] Cookies Db does not exist:' + cookiesDB        placesDB = os.path.join(pathName, 'places.sqlite')        if os.path.isfile(placesDB):            printHistory(placesDB)            printBaidu(placesDB)        else:            print '[!] PlacesDb does not exist: ' + placesDBif __name__ == '__main__':    main()

 用python调查iTunes手机备份代码语言:javascript代码运行次数:0运行复制

#!/usr/bin/python#coding=utf-8import osimport sqlite3import optparsedef isMessageTable(iphoneDB):    try:        conn = sqlite3.connect(iphoneDB)        c = conn.cursor()        c.execute('SELECT tbl_name FROM sqlite_master WHERE type=="table";')        for row in c:            if 'message' in str(row):            return True    except:            return Falsedef printMessage(msgDB):    try:        conn = sqlite3.connect(msgDB)        c = conn.cursor()        c.execute('select datetime(date,'unixepoch'), address, text from message WHERE address>0;')        for row in c:            date = str(row[0])            addr = str(row[1])            text = row[2]            print '[+] Date: '+date+', Addr: '+addr + ' Message: ' + text    except:        passdef main():    parser = optparse.OptionParser("[*]Usage: python iphoneParse.py -p  ")    parser.add_option('-p', dest='pathName', type='string',help='specify skype profile path')    (options, args) = parser.parse_args()    pathName = options.pathName    if pathName == None:        print parser.usage        exit(0)    else:        dirList = os.listdir(pathName)        for fileName in dirList:            iphoneDB = os.path.join(pathName, fileName)            if isMessageTable(iphoneDB):                try:                    print '[*] --- Found Messages ---'                    printMessage(iphoneDB)                except:                    passif __name__ == '__main__':    main()

以上就是Python 进行数字取证调查的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/408043.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
男子高铁上亲陌生女孩称:“她还这么小有什么关系”
上一篇 2025年11月6日 22:08:18
三星因侵犯Netlist专利被要求赔付1.18亿美元
下一篇 2025年11月6日 22:08:22

相关推荐

  • sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法

    sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法sublime怎么设置鼠标滚轮速度_sublime滚动灵敏度调整方法

    Sublime Text 无法直接调节滚轮速度,需通过系统设置、插件或鼠标驱动优化。1. 调整操作系统鼠标滚轮设置:Windows 修改“一次滚动的行数”,macOS 调节“滚动速度”滑块,Linux 使用桌面设置或 xinput 命令;2. 安装 SmoothScroll 插件提升滚动流畅度,支持…

    2026年9月25日 • 用户投稿
    000
  • Debian系统中如何监控GitLab的运行状态

    Debian系统中如何监控GitLab的运行状态Debian系统中如何监控GitLab的运行状态Debian系统中如何监控GitLab的运行状态Debian系统中如何监控GitLab的运行状态

    本文介绍在Debian系统上监控GitLab运行状态的几种方法,助您确保GitLab稳定运行。 方法一:使用systemd服务管理器 GitLab通常以systemd服务形式运行。 在终端输入以下命令查看GitLab服务状态: sudo systemctl status gitlab 该命令会显示服…

    2026年9月25日 • 用户投稿
    100
  • 小红书怎么查注册日期?小红书怎么查注册日期和时间

    小红书怎么查注册日期?小红书怎么查注册日期和时间小红书怎么查注册日期?小红书怎么查注册日期和时间小红书怎么查注册日期?小红书怎么查注册日期和时间小红书怎么查注册日期?小红书怎么查注册日期和时间

    随着社交媒体的不断发展,小红书已经成为了一个热门的分享平台。在这个平台上,我们可以发现各种有趣的内容,结交志同道合的朋友,甚至还能找到生活中的灵感。你是否好奇过自己是在什么时间注册的小红书呢?今天,就让我来带你了解一下,如何在小红书上查找注册日期。 一、登录小红书账号 当然是要确保你已经成功注册了小…

    2026年9月25日 • 用户投稿
    000
  • VSCode如何搭建ClojureScript开发 VSCode配置Clojure前端项目环境

    要在vscode里搭建clojurescript前端开发环境,核心是使用calva扩展结合shadow-cljs构建工具。1. 安装vscode、jdk 11+、node.js;2. 通过npm全局安装shadow-cljs:npm install -g shadow-cljs;3. 安装vscod…

    2026年9月25日
    000
  • UC浏览器如何查看网页加载速度_UC浏览器网页性能与速度检测方法

    UC浏览器如何查看网页加载速度_UC浏览器网页性能与速度检测方法UC浏览器如何查看网页加载速度_UC浏览器网页性能与速度检测方法UC浏览器如何查看网页加载速度_UC浏览器网页性能与速度检测方法UC浏览器如何查看网页加载速度_UC浏览器网页性能与速度检测方法

    首先开启UC浏览器的网页资源检测提示功能,进入设置→网页浏览设置→开启网页资源检测提示;然后使用开发者工具分析,输入ucdebug调出调试菜单,通过Network标签查看资源加载耗时与大小;最后借助WebPageTest或Pingdom等第三方测速平台,输入目标URL并选择测试条件,获取包含TTFB…

    2026年9月25日 • 用户投稿
    000
  • Java布尔方法逻辑错误排查与比较运算符的精确使用

    Java布尔方法逻辑错误排查与比较运算符的精确使用Java布尔方法逻辑错误排查与比较运算符的精确使用Java布尔方法逻辑错误排查与比较运算符的精确使用Java布尔方法逻辑错误排查与比较运算符的精确使用

    本文深入探讨了Java中布尔方法因比较运算符使用不当而导致逻辑错误的问题。通过一个具体的Tweet点赞和转发场景案例,详细分析了likes retweets在特定业务逻辑下的差异,并提供了修改方案,强调了在编写条件判断时精确选择比较运算符的关键性,以确保程序行为符合预期。 理解布尔方法与条件判断 在…

    2026年9月25日 • 用户投稿
    000
  • Debian Tomcat日志中的并发问题如何解决

    Debian Tomcat日志中的并发问题如何解决Debian Tomcat日志中的并发问题如何解决Debian Tomcat日志中的并发问题如何解决Debian Tomcat日志中的并发问题如何解决

    本文探讨如何解决Debian系统下Tomcat服务器的并发问题。 高并发访问可能导致Tomcat性能下降甚至崩溃,本文提供多种优化策略: 一、调整Tomcat配置: 线程池优化: 修改conf/server.xml文件中的Connector元素,调整maxThreads(最大线程数)、minSpar…

    2026年9月25日 • 用户投稿
    100
  • AI图片无损放大有哪些 可以AI图片无损放大工具汇总

    AI图片无损放大有哪些 可以AI图片无损放大工具汇总AI图片无损放大有哪些 可以AI图片无损放大工具汇总AI图片无损放大有哪些 可以AI图片无损放大工具汇总AI图片无损放大有哪些 可以AI图片无损放大工具汇总

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 吐司AI高清:吐司AI推出的图片变高清/修复工具 稿定AI变清晰:稿定设计推出的AI变清晰图像处理工具 美图无损放大:美图设计室推出的AI图片变清晰工具 美间AI无损放大:免费的AI图片放大、变…

    2026年9月25日 • 用户投稿
    100
  • 240水冷能压住i7级别的CPU吗?

    240水冷能压住i7级别的CPU吗?240水冷能压住i7级别的CPU吗?240水冷能压住i7级别的CPU吗?240水冷能压住i7级别的CPU吗?

    240水冷能压住i7级别CPU,具体取决于型号和使用场景。对于第13、14代i7如i7-13700/14700,日常使用和游戏负载下,主流240水冷设计散热功耗普遍超200W,配合合理机箱风道可稳定控温;但若进行超频或运行AIDA64、Prime95等高负载任务,尤其是i7-14700K这类带“K”…

    2026年9月25日 • 用户投稿
    000
  • 如何检测显示器是否存在色彩准确度问题?

    如何检测显示器是否存在色彩准确度问题?如何检测显示器是否存在色彩准确度问题?如何检测显示器是否存在色彩准确度问题?如何检测显示器是否存在色彩准确度问题?

    答案:检测显示器色彩准确度需从肉眼观察、专业图卡比对到校色仪硬件校准三个层次进行,常见问题包括面板老化、出厂校准不佳、驱动设置错误等;选购时应关注专业品牌、Delta E值及出厂报告,校准后若色彩不习惯多因人眼适应性、环境光干扰或ICC文件未正确加载所致。 检测显示器色彩准确度问题,通常从肉眼观察、…

    2026年9月25日 • 用户投稿
    000
  • sublime怎么配置Angular开发环境_sublime搭建Angular开发环境步骤

    sublime怎么配置Angular开发环境_sublime搭建Angular开发环境步骤sublime怎么配置Angular开发环境_sublime搭建Angular开发环境步骤sublime怎么配置Angular开发环境_sublime搭建Angular开发环境步骤sublime怎么配置Angular开发环境_sublime搭建Angular开发环境步骤

    首先安装Sublime Text并更新至最新版,然后通过Package Control安装Emmet、TypeScript、AngularJS等插件以支持Angular开发,配置TypeScript语法识别,启用代码片段和智能提示,结合外部终端使用Angular CLI生成文件,最后通过保存项目和设…

    2026年9月25日 • 用户投稿
    100
  • win10系统命令提示符被禁用怎么办

    win10系统命令提示符被禁用怎么办win10系统命令提示符被禁用怎么办win10系统命令提示符被禁用怎么办win10系统命令提示符被禁用怎么办

    我们都知道windows系统自带命令提示符功能,日常使用中也常通过它来执行命令或快速打开某些设置界面。但若发现命令提示符被禁用了,该如何解决呢?下面为大家介绍在win10系统下恢复命令提示符的详细方法。 操作步骤如下: 1. 同时按下键盘上的“Win”键和“R”键,打开运行对话框。输入“gpedit…

    2026年9月25日 • 用户投稿
    100
  • Win10新版Edge Canary版实现通用的显示密码按钮

    Win10新版Edge Canary版实现通用的显示密码按钮Win10新版Edge Canary版实现通用的显示密码按钮Win10新版Edge Canary版实现通用的显示密码按钮Win10新版Edge Canary版实现通用的显示密码按钮

    在最新版的基于chromium的edge canary通道中,微软对用户界面作出了进一步的改进,其中就包括对inprivate窗口的简化设计。而在最近的一次版本更新里,微软再次聚焦于隐私功能,推出了全新的“显示密码”按钮。 微软指出,这是众多“受控功能部署”项目的一部分,其目标在于增强用户体验。具体…

    2026年9月25日 • 用户投稿
    100
  • sublime怎么关闭拼写检查_sublime拼写检查功能关闭方法

    sublime怎么关闭拼写检查_sublime拼写检查功能关闭方法sublime怎么关闭拼写检查_sublime拼写检查功能关闭方法sublime怎么关闭拼写检查_sublime拼写检查功能关闭方法sublime怎么关闭拼写检查_sublime拼写检查功能关闭方法

    关闭Sublime Text拼写检查可点击状态栏Spell Check选择Disable Spell Check,或在用户设置中添加”spell_check”: false全局关闭,也可在语法专属设置中按文件类型禁用。 Sublime Text 的拼写检查功能有时会干扰代码编…

    2026年9月25日 • 用户投稿
    000
  • 豆包AI会保存聊天记录吗 隐私政策与数据管理说明

    豆包AI会保存聊天记录吗 隐私政策与数据管理说明豆包AI会保存聊天记录吗 隐私政策与数据管理说明豆包AI会保存聊天记录吗 隐私政策与数据管理说明豆包AI会保存聊天记录吗 隐私政策与数据管理说明

    豆包ai可能会保存聊天记录,但具体取决于其隐私政策和技术机制。1. 聊天记录通常会被短期或长期保存以提供连贯服务,但用途仅限于优化体验;2. 用户可通过检查隐私设置、主动删除记录或联系客服来管理数据;3. 隐私政策关键点包括数据收集范围、用途、存储保护及用户权利,建议使用前仔细阅读相关政策以确保数据…

    2026年9月25日 • 用户投稿
    000
  • Java布尔方法逻辑陷阱:条件判断与预期行为不符的调试实践

    Java布尔方法逻辑陷阱:条件判断与预期行为不符的调试实践Java布尔方法逻辑陷阱:条件判断与预期行为不符的调试实践Java布尔方法逻辑陷阱:条件判断与预期行为不符的调试实践Java布尔方法逻辑陷阱:条件判断与预期行为不符的调试实践

    本文深入探讨Java中布尔方法因条件逻辑错误导致输出不符预期的常见问题。通过分析一个具体的kindaLiked方法示例,我们揭示了比较运算符使用不当如何影响程序行为。教程提供了详细的调试步骤、代码修正方案,并强调了编写精确条件判断、进行充分测试的重要性,以确保布尔方法返回正确的结果。 在软件开发中,…

    2026年9月25日 • 用户投稿
    000
  • Linux sudo日志查看与分析方法

    sudo日志默认存储在/var/log/auth.log(Debian系)或/var/log/secure(RHEL系),可通过grep、tail等命令筛选用户操作、成功命令及失败尝试,日志包含时间、用户、命令等信息;可通过visudo配置独立日志文件及输入输出记录,结合journalctl、awk…

    2026年9月25日
    000
  • Mac如何清理系统缓存_Mac系统缓存与垃圾文件清理方法

    Mac如何清理系统缓存_Mac系统缓存与垃圾文件清理方法Mac如何清理系统缓存_Mac系统缓存与垃圾文件清理方法Mac如何清理系统缓存_Mac系统缓存与垃圾文件清理方法Mac如何清理系统缓存_Mac系统缓存与垃圾文件清理方法

    Mac运行慢或存储紧张时,系统缓存和临时文件是主因。可通过手动清理系统级缓存(/Library/Caches)、用户专属缓存(~/Library/Caches)、系统日志(~/Library/Logs 和 /var/log),使用macOS内置存储管理工具优化存储,并定期重启Mac以清除临时文件,有…

    2026年9月25日 • 用户投稿
    000
  • 谷歌浏览器打开网页提示内存不足怎么办

    谷歌浏览器打开网页提示内存不足怎么办谷歌浏览器打开网页提示内存不足怎么办谷歌浏览器打开网页提示内存不足怎么办谷歌浏览器打开网页提示内存不足怎么办

    当您在使用谷歌浏览器打开资源密集型网页或开启过多标签页时,如果遇到“内存不足”的错误提示,这通常意味着浏览器可用的内存资源(RAM)已被耗尽。本文将为您提供一套系统的解决方案,通过管理标签页与扩展、开启内置的性能优化功能以及调整相关设置,来有效解决此问题,让您能够顺畅地浏览网页。 管理标签页与扩展程…

    2026年9月25日 • 用户投稿
    100
  • Win10电脑加快缩略图加载速度的操作方法?

    Win10电脑加快缩略图加载速度的操作方法?Win10电脑加快缩略图加载速度的操作方法?Win10电脑加快缩略图加载速度的操作方法?Win10电脑加快缩略图加载速度的操作方法?

    若您的电脑配置较低,并且已经使用了较长时间,可能会发现打开资源管理器时速度较慢,绿色进度条前进得十分迟缓。此时,您可以尝试这一方法,在组策略中对其进行设置,关闭缩略图缓存功能。 Win10系统优化缩略图加载: 使用组策略 第一步:通过在“开始”菜单输入编辑组策略或者gpedit.msc来打开组策略。…

    2026年9月25日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信