Linux與Windows應急響應

本人首先進行了linux的應急響應,windows之后再進行

Linux與Windows應急響應初體驗

  • 1 linux應急響應
    • 1.1 賬戶:
      • 1.1.1 使用`cat /etc/passwd`命令查看passwd文件
      • 2.1.2 使用`cat /etc/shadow`命令查找shadow文件,該文件為密碼文件的存儲項
    • 1.2 入侵排查
      • 1.2.1 查詢特權用戶
      • 1.2.2 查詢sudo
      • 1.2.3 通過`.bash_history`查看歷史命令:
      • 1.2.4 登陸情況
      • 1.2.5 開機啟動項
      • 1.2.6 任務計劃
    • 1.3 日志分析:
      • 1.3.1 查詢指令
      • 1.3.2 登錄成功的IP有哪些:
      • 1.3.3、增加一個用戶kali日志:
      • 1.3.4 刪除用戶kali日志:
      • 1.3.5 su切換用戶:
    • 1.4 攻擊/應急響應初體驗
      • 1.4.1 準備
      • 1.4.2 收集信息
      • 1.4.3 應急響應
        • 查詢登陸成功
        • 查詢日志中的登陸失敗
        • 查詢爆破使用的字典
      • 1.4.4 保護策略
  • 2 Windows應急響應

1 linux應急響應

不知為何,本人的登錄日志內容在/var/log/auth.log文件中,因此任何牽扯到secure的內容都更換為auth.log

1.1 賬戶:

1.1.1 使用cat /etc/passwd命令查看passwd文件

該文件存儲了系統中所有用戶的基本信息
七個字段每個字段用:隔開,七個字段分別為:

用戶名:密碼:UID(用戶ID):GID(組ID):描述性信息:主目錄:默認Shell
重點查/bin/bash(是否用bin/bash,用了就是創建新用戶,已經被入侵了。如果用bin/login,就沒有被入侵)

在這里插入圖片描述

2.1.2 使用cat /etc/shadow命令查找shadow文件,該文件為密碼文件的存儲項

在這里插入圖片描述

1.2 入侵排查

1.2.1 查詢特權用戶

awk -F: '$3==0{print $1}' /etc/passwd
在這里插入圖片描述
若有其他未知的特權賬戶則證明被入侵過

1.2.2 查詢sudo

牽扯到提權

賬戶提權:內核漏洞提權(成功率最大,如果失敗,用其他方法提權的成功幾率無限趨于0),敏感文件提權(運氣)
suid提權:(suid是某個二進制文件在執行時自動提升到root權限,執行結束之后回歸到正常權限)
tomcat-syl ALL=(root) NOPASSWD:/usr/root/find
tomcat是一個普通用戶,不需要密碼以root權限去執行find
find exec可以執行命令

創建一個普通用戶qq
在這里插入圖片描述
查看權限:
在這里插入圖片描述
給find加權:
在這里插入圖片描述
普通用戶qq使用find命令執行文件
find /usr/bin/passwd -exec whoami \;
在這里插入圖片描述
使用find命令全局查找,有哪些文件擁有suid權限,如果有能執行命令的情況下需要重點關注。
sudo提權:
sudo允許執行某個命令,但未對命令參數做限制
sudo允許執行某個帶參數的具體命令

若其他未知用戶有ALL=(ALL:ALL)ALL則被入侵過
任意用戶任意東西執行任意

1.2.3 通過.bash_history查看歷史命令:

1、root 用戶的歷史命令
histroy
2、打開 /home 各帳號目錄下的 .bash_history,查看普通帳號執行的歷史命令。
為歷史的命令增加登錄的 IP 地址、執行命令時間等信息:
1)保存1萬條命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
2)在/etc/profile的文件尾部添加如下行數配置信息:
######jiagu history xianshi#########
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
######### jiagu history xianshi ##########
3)source /etc/profile 讓配置生效
生成效果: 1  2018-07-10 19:45:39 192.168.204.1 root source /etc/profile
3、歷史操作命令的清除:history -c
但此命令并不會清除保存在文件中的記錄,因此需要手動刪除 .bash_profile 文件中的記錄。

在這里插入圖片描述
完成以上配置后使用history命令查看:
在這里插入圖片描述
顯示執行命令的日期、IP、用戶

1.2.4 登陸情況

查看登陸成功信息:
在這里插入圖片描述

查看錯誤登錄信息:

在這里插入圖片描述

1.2.5 開機啟動項

查看運行級別命令 runlevel

系統默認允許級別

	vi  /etc/inittabid=3:initdefault  #系統開機后直接進入哪個運行級別

開機啟動配置文件

	/etc/rc.local/etc/rc.d/rc[0~6].d

1.2.6 任務計劃

crontab -l   列出某個用戶cron服務的詳細內容Tips:默認編寫的crontab文件會保存在 (/var/spool/cron/用戶名 例如: /var/spool/cron/rootcrontab -r   刪除每個用戶cront任務(謹慎:刪除所有的計劃任務)crontab -e   使用編輯器編輯當前的crontab文件 如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分鐘寫入文件

重點關注以下目錄中是否存在惡意腳本

	/var/spool/cron/* /etc/crontab/etc/cron.d/*/etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/*/etc/cron.weekly//etc/anacrontab/var/spool/anacron/*

小技巧:

	more /etc/cron.daily/*  查看目錄下所有文件

1.3 日志分析:

日志文件說明
/var/log/cron記錄了系統定時任務相關的日志
/var/log/cups記錄打印信息的日志
/var/log/dmesg記錄了系統在開機時內核自檢的信息,也可以使用dmesg命令直接查看內核自檢信息
/var/log/mailog記錄郵件信息
/var/log/message記錄系統重要信息的日志。這個日志文件中會記錄Linux系統的絕大多數重要信息,如果系統出現問題時,首先要檢查的就應該是這個日志文件
/var/log/btmp記錄錯誤登錄日志,這個文件是二進制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog記錄系統中所有用戶最后一次登錄時間的日志,這個文件是二進制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp永久記錄所有用戶的登錄、注銷信息,同時記錄系統的啟動、重啟、關機事件。同樣這個文件也是一個二進制文件,不能直接vi,而需要使用last命令來查看
/var/log/utmp記錄當前已經登錄的用戶信息,這個文件會隨著用戶的登錄和注銷不斷變化,只記錄當前登錄用戶的信息。同樣這個文件不能直接vi,而要使用w,who,users等命令來查詢
/var/log/secure記錄驗證和授權方面的信息,只要涉及賬號和密碼的程序都會記錄,比如SSH登錄,su切換用戶,sudo授權,甚至添加用戶和修改用戶密碼都會記錄在這個日志文件中

1.3.1 查詢指令

定位有多少IP在爆破主機的root帳號:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

定位有哪些IP在爆破:

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

爆破用戶名字典是什么?

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

1.3.2 登錄成功的IP有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

登錄成功的日期、用戶名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 

1.3.3、增加一個用戶kali日志:

Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
#grep "useradd" /var/log/secure 

1.3.4 刪除用戶kali日志:

Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
# grep "userdel" /var/log/secure

1.3.5 su切換用戶:

Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)sudo授權執行:
sudo -l
Jul 10 00:43:09 localhost sudo:    good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

在這里插入圖片描述

改為自己的日志目錄
在這里插入圖片描述
在這里插入圖片描述

1.4 攻擊/應急響應初體驗

1.4.1 準備

攻擊機的ip地址:192.168.244.142
在這里插入圖片描述
靶機端:192.168.244.141
在這里插入圖片描述

1.4.2 收集信息

使用nmap命令查看靶機端ssh的端口為22
在這里插入圖片描述
爆破會使用到密碼字典,因此創建兩個txt文件,
password.txt
在這里插入圖片描述
users.txt
在這里插入圖片描述
我們使用hydra進行暴力破解
在這里插入圖片描述

[root@server ~]# hydra -L users.txt -P passwrd.txt ssh://192.168.244.141#-L users.txt: 從名為users.txt的文件中讀取用戶名列表
#-P password.txt: 從名為password.txt的文件中讀取密碼列表
#ssh://192.168.244.141: 指定攻擊的目標為IP地址為192.168.244.141的主機上運行的SSH服務

!!!
我們可以看到爆破出來一個用戶和密碼
在這里插入圖片描述
使用爆破的用戶名和密碼登錄到上面
在這里插入圖片描述
輸入yes并輸入密碼
在這里插入圖片描述
登陸成功!
在這里插入圖片描述

1.4.3 應急響應

快速進入靶機中,進入/var/log目錄下迅速進行日志查詢

查詢登陸成功

在這里插入圖片描述
發現敵機登陸成功!真的很可惡

查詢日志中的登陸失敗

在這里插入圖片描述
發現敵機登錄失敗340次,太可惡了

查詢爆破使用的字典

在這里插入圖片描述
這個攻擊者怎么壞成這樣,心機如此之重!

1.4.4 保護策略

deny_ssh.sh
在這里插入圖片描述

在使用deny_ssh.sh文件生成的iptables
在這里插入圖片描述
分析可得:
這個文件是由 iptables-save 命令生成的防火墻規則配置文件,包含了 Linux 防火墻 (iptables) 的完整規則集。讓我為您詳細分析其結構和含義:

文件結構概覽
文件分為兩個主要部分:

  1. filter 表:負責包過濾(接受/拒絕流量)
  2. nat 表:負責網絡地址轉換(NAT)

每部分都包含:

  • 默認鏈策略
  • 自定義鏈
  • 具體的防火墻規則
  • 結束標記 (COMMIT)

一、filter 表分析 (包過濾)

1. 默認鏈策略

:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
  • INPUT:接受所有入站流量
  • FORWARD:丟棄所有轉發流量
  • OUTPUT:接受所有出站流量

2. 自定義鏈(Docker 相關)

:DOCKER - [0:0]
:DOCKER-BRIDGE - [0:0]
:DOCKER-CT - [0:0]
:DOCKER-FORWARD - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]

這些是 Docker 創建的自定義鏈,用于管理容器網絡流量。

3. 主要規則分析

(1) SSH 訪問控制

-A INPUT -s 192.168.244.129/32 -p tcp -m tcp --dport 22 -j DROP
  • 功能:阻止來自 192.168.244.129 的 SSH 訪問
  • 細節
    • -s 192.168.244.129/32:源IP地址
    • -p tcp:TCP協議
    • --dport 22:目標端口22 (SSH)
    • -j DROP:丟棄數據包

(2) Docker 網絡隔離規則

-A DOCKER ! -i br-00c71e29d5b2 -o br-00c71e29d5b2 -j DROP
-A DOCKER ! -i docker0 -o docker0 -j DROP
  • 功能:防止非 Docker 網橋接口的流量進入容器網絡
  • 細節
    • br-00c71e29d5b2:自定義 Docker 網橋
    • docker0:默認 Docker 網橋
    • 規則確保只有來自這些網橋的流量才能進入容器

(3) 連接跟蹤

-A DOCKER-CT -o br-00c71e29d5b2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A DOCKER-CT -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  • 功能:允許已建立的連接和相關的連接通過
  • 細節
    • --ctstate RELATED,ESTABLISHED:匹配已建立或相關的連接狀態

(4) Docker 網絡隔離策略

-A DOCKER-ISOLATION-STAGE-1 -i br-00c71e29d5b2 ! -o br-00c71e29d5b2 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-00c71e29d5b2 -j DROP
  • 功能:實現 Docker 容器間的網絡隔離
  • 細節
    • 兩階段隔離策略防止不同網橋間的流量互通
    • 確保容器只能與同一網絡中的容器通信

二、nat 表分析 (網絡地址轉換)

1. 默認鏈策略

:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

2. 主要規則分析

(1) Docker 端口映射

-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
  • 功能:將目標地址是本機的流量重定向到 DOCKER 鏈
  • 細節
    • 實現 Docker 容器的端口映射功能

(2) SNAT (源地址轉換)

-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.18.0.0/16 ! -o br-00c71e29d5b2 -j MASQUERADE
  • 功能:為容器提供出站互聯網訪問
  • 細節
    • 172.17.0.0/16:默認 Docker 網絡
    • 172.18.0.0/16:自定義 Docker 網絡 (br-00c71e29d5b2)
    • MASQUERADE:將容器流量源IP替換為主機IP

(3) Docker 鏈規則

-A DOCKER -i docker0 -j RETURN
-A DOCKER -i br-00c71e29d5b2 -j RETURN
  • 功能:直接返回來自 Docker 網橋的流量
  • 細節
    • 不對容器間的流量進行 NAT 處理

關鍵發現與安全分析

  1. 容器網絡安全

    • Docker 創建了兩個網絡:docker0 (172.17.0.0/16) 和 br-00c71e29d5b2 (172.18.0.0/16)
    • 實現了嚴格的網絡隔離策略,防止容器間未經授權的通信
  2. 主機安全

    • 僅有一條明確的訪問控制規則:阻止 192.168.244.129 的 SSH 訪問
    • INPUT 鏈默認策略為 ACCEPT,存在安全風險
  3. Docker 網絡配置

    • 使用了標準的 Docker 網絡隔離模型
    • 為容器提供了出站互聯網訪問 (MASQUERADE)
  4. 潛在風險

    • 除 SSH 規則外,沒有其他主機級防護
    • 所有入站流量默認被接受
    • 沒有針對常見攻擊(如端口掃描、暴力破解)的防護

再次嘗試進行ssh暴力破解發現無法訪問
在這里插入圖片描述

2 Windows應急響應

使用windows 10系統,對其進行爆破,實現應急響應

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92424.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機網絡1-4:計算機網絡的定義和分類

目錄 計算機網絡的定義 計算機網絡的分類 計算機網絡的定義 計算機網絡的分類 按交換技術分類&#xff1a;電路交換網絡、報文交換網絡、分組交換網絡 按使用者分類&#xff1a;公用網、專用網 按傳輸介質分類&#xff1a;有線網絡、無線網絡 按覆蓋范圍分類&#xff1a;…

在QT中動態添加/刪除控件,伸縮因子該怎么處理

開發中遇到的問題[TOC](開發中遇到的問題)處理方式在我們的界面開發過程中&#xff0c;通常需要開發一些可以動態添加or刪除控件的容器&#xff0c;類似Tab頁一樣&#xff0c;為了美觀的話&#xff0c;我們通常使用伸縮因子將容器中的控件往一個方向擠&#xff0c;類似下面的控…

【設計模式精解】什么是代理模式?徹底理解靜態代理和動態代理

目錄 靜態代理 動態代理 JDK動態代理 CGLIB代理 JDK動態代理和CGLIB代理的區別 總結 代理模式簡單來說就是 我們使用代理對象來代替對真實對象(real object)的訪問&#xff0c;這樣就可以在不修改原目標對象的前提下&#xff0c;擴展目標對象的功能。 代理模式有靜態代理…

MCU AI/ML - 彌合智能和嵌入式系統之間的差距

作者&#xff1a;芯科科技產品營銷高級經理Gopinath Krishniah 人工智能&#xff08;AI&#xff09;和機器學習&#xff08;ML&#xff09;是使系統能夠從數據中學習、進行推理并隨著時間的推移提高性能的關鍵技術。這些技術通常用于大型數據中心和功能強大的GPU&#xff0c;但…

Redis中的sdshdr的len和alloc那塊的知識點詳解

文章目錄核心比喻&#xff1a;一個可以伸縮的水瓶場景一&#xff1a;創建一個新字符串場景二&#xff1a;追加字符串&#xff08;觸發“空間預分配”&#xff09;場景三&#xff1a;再次追加字符串&#xff08;利用空閑空間&#xff09;場景四&#xff1a;縮短字符串&#xff0…

在Linux下訪問MS SQL Server數據庫

Linux作為一個免費的Unix類操作系統&#xff0c;以其開放性源代碼、多任務、X window等特點為眾多的用戶所采用&#xff0c;并有很多企業采用Linux來作為其內部網的全功能服務器(WWW&#xff0c;FTP&#xff0c;Email、DNS)。企業的內部網不僅要提供文本信息的訪問&#xff0c;…

計算機視覺-OpenCV

一下載第三方庫opencv-python3.4.18.65opencv-contrib-python3.4.18.65import cv2 # 讀取的格式是BGR numpy import numpy as np# 讀取圖片 a cv2.imread(generated_image.jpg) # 讀取圖片 print(a) # NumPy數組&#xff0c;其中存儲了讀取的圖像文件的像素值。cv2.imshow…

解決GitHub無法打開

找到下圖文件&#xff0c;用記事本打開 在最下方粘貼如下代碼140.82.113.4 github.com 20.205.243.166 github.com 140.82.112.4 github.com 151.101.1.6 github.global.ssl.fastly.net 185.199.108.153 assets-cdn.github.com 185.199.109.153 assets-cdn.github.com 185.199.…

AWS VPC Transit Gateway 可觀測最佳實踐

AWS VPC Transit Gateway 介紹 Amazon VPC Transit Gateway 是一個網絡傳輸中心&#xff0c;用于互連虛擬私有云 (VPCs) 和本地網絡。隨著您的云基礎設施在全球擴展&#xff0c;區域間對等互連使用 AWS 全球基礎設施將中轉網關連接在一起。 AWS 數據中心之間的所有網絡流量都在…

WeakRef的作用和使用

文章目錄WeakRef的作用和使用使用 WeakRef 避免強引用&#xff1a;原理與實踐一、WeakRef 的核心特性二、WeakRef 與強引用的對比三、WeakRef 的使用場景與示例1. 非關鍵數據緩存&#xff08;避免緩存導致內存泄漏&#xff09;2. 跟蹤對象生命周期&#xff08;不干擾回收&#…

【華為機試】332. 重新安排行程

文章目錄332. 重新安排行程題目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a;解題思路核心思路算法流程圖歐拉路徑原理DFS回溯機制字典序優化策略復雜度分析算法實現要點完整題解代碼332. 重新安排行程 題目描述 給你一份航線列表 tickets &#xff0c;其中 tic…

通信算法之300:CRC表生成方式-CRC8、CRC16、CRC32-輸入字節

"CRC表的MATLAB生成代碼"生成的查找表可以用于快速計算 CRC 值&#xff0c;通過查表法可以顯著提高 CRC 計算效率&#xff0c;尤其適用于需要處理大量數據的場景。下面是一個生成 CRC 查找表&#xff08;CRC Table&#xff09;的 MATLAB 代碼&#xff0c;該代碼可以根…

國內使用 npm 時配置鏡像源

在國內使用 npm 時&#xff0c;由于網絡限制可能會遇到下載速度慢或連接超時的問題。通過設置國內鏡像源&#xff0c;可以顯著提升下載速度和穩定性。以下是常用的國內 npm 鏡像源及其配置方法。 查詢當前使用的鏡像源 npm get registry 設置為淘寶鏡像源 npm config set reg…

一篇文章入門TCP與UDP(保姆級別)

&#x1f433;第一部分&#xff1a;什么是TCP和UDP? 先給結論&#xff1a;TCP 和 UDP 都是傳輸層協議&#xff0c;負責把數據從一臺電腦 “搬” 到另一臺電腦&#xff0c;但它們的 “搬運風格” 完全不同 &#x1f4e6; 比喻&#xff1a;TCP 像 "打電話"&#xff…

2024年測繪程序設計比賽--空間探索性分析(數據為2025年第三次模擬數據)

想要在2026年參加這個比賽的&#xff0c;可以加入小編和其它大佬所建的群242845175一起來備賽&#xff0c;為2026年的比賽打基礎&#xff0c;也可以私信小編&#xff0c;為你答疑解惑一、讀寫文件 internal class Read {public static List<Point> pts new List<Poin…

力扣 hot100 Day68

84. 柱狀圖中最大的矩形 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大面積。 class Solution { public:int largestRectangleArea(vector<int>&…

生成式AI時代,Data+AI下一代數智平臺建設指南

DataAI下一代數智平臺建設指南一、生成式AI時代的五大數據挑戰二、驅動DataAI平臺建設的核心要素主動選擇&#xff1a;構建競爭壁壘被動應對&#xff1a;解決現有痛點三、DataAI平臺的六大關鍵能力四、騰訊云DataAI產品方案與實踐1. 數據與AI協同層2. 開發與治理層3. 存儲與計算…

FPGA學習筆記——SPI通訊協議簡介

目錄 一、SPI通訊協議簡介 二、SPI物理層 三、SPI協議層 1.通訊模式 &#xff08;一&#xff09;模式零 &#xff08;二&#xff09;模式一 &#xff08;三&#xff09;模式二 &#xff08;四&#xff09;模式三 2.通訊流程 一、SPI通訊協議簡介 SPI&#xff08;Seria…

JavaScript核心概念解析:從基礎語法到對象應用

導語&#xff1a;本文系統梳理JavaScript的核心知識框架&#xff0c;適用于編程入門學習者。內容涵蓋基礎語法、數據類型、函數應用及內置對象&#xff0c;幫助讀者構建清晰的JS知識體系。一、語言基礎與執行原理瀏覽器執行機制渲染引擎&#xff1a;解析HTML/CSS&#xff08;如…

在 Kotlin 中使用函數類型和 lambda 表達式

參考官方文檔: https://developer.android.google.cn/codelabs/basic-android-kotlin-compose-function-types-and-lambda?hl=zh-cn#0 1、 將函數存儲在變量中 作為一種一級結構,函數也屬于數據類型,因此,可以將函數存儲在變量中、將函數傳遞到函數,以及從函數返回函數…