6.1 安全漏洞與網絡攻擊

數據參考:CISP官方?

目錄

  • 安全漏洞及產生原因
  • 信息收集與分析
  • 網絡攻擊實施
  • 后門設置與痕跡清除

一、安全漏洞及產生原因

什么是安全漏洞

  • 安全漏洞也稱脆弱性,是計算機系統存在的缺陷

漏洞的形式

  • 安全漏洞以不同形式存在
  • 漏洞數量逐年遞增?

漏洞產生的技術原因

內因:軟件復雜性使得漏洞不可避免

  • 軟件規模増大,功能越來越多,越來越復雜,難以避免缺陷
  • 軟件模塊復用,導致安全漏洞延續
  • 缺乏從設計開始安全考慮

外因:互聯網發展對軟件安全的挑戰

漏洞產生的經濟原因

軟件開發管理過程中缺乏對安全的重視

  • 市場和業務要求將交付期和軟件功能做主要因素
  • 用戶方沒有提供安全方面的壓力

“劣幣驅除良幣”效應,重視安全的公司被淘汰

劣幣驅除良幣效應后果

  • 企業管理層對安全開發缺乏了解
  • 開發管理人員不了解軟件安全開發的管理流程、方法和技巧
  • 軟件開發人員缺乏將軟件安全需求、安全特性和編程方法進行結合的能力
  • 測試人員無法以“壞人"的角度來思考軟件安全問題?

漏洞產生的應用環境原因

  • 互聯網的發展使軟件運行環境從傳統的封閉、靜態和可控變為開放、動態和難控
  • 攻防信息不對稱性進一步增強,攻易守難的矛盾進一步凸顯
  • 強大經濟利益推動漏洞挖掘產業化方向發展

二、信息收集與分析

攻擊的過程

  • 踩點:攻擊者在此階段收集目標系統或網絡的信息,探測其弱點和漏洞。這包括公開可得的信息、社交媒體數據、網絡架構、端口掃描等。(信息收集及分析
  • 入侵:基于收集到的信息,攻擊者執行特定的攻擊行動,以獲取未授權訪問目標系統或網絡的權限。這可能涉及利用漏洞、惡意軟件傳播、社會工程等手段。(實施攻擊
  • 后門:成功入侵后,攻擊者可能會在目標系統中留下后門,以便日后輕松進入系統,獲得持久訪問權限。后門可通過惡意代碼、遠程訪問工具、植入的惡意設置等方式實現。(方便下次進入
  • 痕跡:為了隱藏攻擊行為,攻擊者可能會試圖清除或篡改入侵的痕跡,以防止被發現。這包括刪除日志、修改訪問記錄、擦除惡意軟件等。(清除入侵記錄

?

信息收集:攻擊的前奏

為什么要信息收集?

  • 知己知彼,百戰不殆
  • 信息是攻擊的基礎
  • 信息收集可以成為攻擊的方式

為什么需要分析目標

  • 確定收集信息的準確性
  • 攻擊方式及攻擊路徑的選擇

收集什么信息?

目標IT相關信息

  • 目標的域名信息
  • 目標的網絡拓撲結構、安全設備型號、配置
  • 目標系統版本、數量
  • 目標應用軟件版本、型號、開發語言、開發商等
  • 目標的相關Web網頁內容

目標相關公開信息

  • 組織機構、地理位置、電話號碼、郵件等聯系方式
  • 近期重大事件
  • 員工簡歷

其他可能令攻擊者感興趣的信息

案例:明星的家庭住址

背景:明星家庭住址是明星隱私,她們都不愿意透露,微博時代,明星也愛玩微博

微博信息

  • 13:50 四環堵死,我聯排要遲到了?
  • 在北京工作這么久,都沒在北京中心地帶買一套房子
  • 光顧著看圍脖,忘記給老爸指路,都開到中關村了

結論:北四環外某個成熟小區,小區中間有三個相連的方形花壇?

Google earth能幫助我們快速找到這個小區

Google Earth?

Google Earth是一款提供衛星影像、地理信息和3D建模的虛擬地球瀏覽器,可以用于瀏覽和探索全球范圍內的地理位置。以下是使用Google Earth來縮小范圍并找到特定小區的一般步驟:

  1. 下載和安裝Google Earth:首先,您需要從Google Earth官方網站下載并安裝適用于您的操作系統的Google Earth應用程序。

  2. 搜索目標地點:打開Google Earth后,您可以使用搜索欄輸入相關的位置信息,例如“北京北四環外某小區”。您還可以縮放和平移地球圖像以便更詳細地瀏覽目標地區。

  3. 利用衛星影像和3D建模:使用Google Earth的衛星影像功能和3D建模功能,您可以查看目標地區的實際外觀,包括建筑、道路和地理特征等等。這可能有助于您識別目標地點是否符合微博中提到的描述。

信息收集與分析工具

系統命令工具:

  • Nslookup:用于查詢域名解析的工具。
  • Whois:用于獲取域名的注冊信息,如注冊人、注冊商等。
  • Tracert:用于跟蹤網絡路徑,檢測數據包從源到目的地的路徑。
  • Ping:用于測試與目標主機之間的連通性和延遲。

搜索引擎:

  • Google:全球最大的搜索引擎之一,可用于搜索各種信息。
  • 百度:中國最大的中文搜索引擎,提供本土化的搜索結果。

掃描器工具:

  • 端口掃描器(如nmap):用于掃描目標主機上開放的端口,了解目標主機的服務和配置情況。
  • 漏洞掃描軟件:
    • 系統漏洞掃描(如Nessus):用于發現操作系統存在的安全漏洞。
    • Web漏洞掃描(如AppScan):用于發現Web應用程序中的安全漏洞。
    • 數據庫漏洞掃描:用于檢測數據庫系統中可能存在的安全漏洞。

公開信息收集搜索引擎:

  • 使用搜索引擎(如Google)進行信息搜索,可以找到公開網站和相關信息。

快速定位

某開源軟件 xxx.jsp 腳本存在漏洞:在Google搜索中輸入“xxx.jsp”可以找到使用該腳本的Web網站,從而了解是否存在相關漏洞。

信息挖掘:

定點采集?

  • 使用Google搜索,結合關鍵詞“.doc+ website”,可以進行信息挖掘,找到與特定關鍵詞相關的文檔和網站。

隱藏信息:

  • 使用Google搜索,結合一些常見的文件后綴(例如:.mdb、.ini、txt、.old、.bak、.001等),可以搜索到可能包含隱藏信息的文件。

后臺入口:

  • 后臺入口指的是網站或應用程序的管理界面。
  • 對于具體的網站和應用程序,通常會有一些已知的后臺入口路徑(例如,/admin、/login等)。
  • 請注意,非法利用這些后臺入口進行未經授權的訪問是違法行為,請確保您在合法和合規的情況下使用這些信息。

案例:Google Hack

案例背景:

  • 時間:2008年01月10日
  • 目標:北京XX區政府門戶網站
  • 測試方式:定點采集
  • Google搜索:“.doc+website”挖掘信息

公務員郵箱使用說明:

  • 選擇公務員郵箱,輸入郵箱名,郵箱密碼默認為六個1,鼠標單擊登陸。
  • 例如,選擇公務員郵箱,在用戶名處輸入tjjbgs,密碼輸入11111,單擊登陸即可進入統計局辦公室的郵箱。

信息收集與分析

網絡信息收集

  • 正常服務 (如:whois)
  • 系統功能(如:ping、tracert)

系統及應用信息收集

服務旗標:
  • 服務旗標是指通過分析網絡數據包中的特定字段來確定正在運行的服務類型。
  • 通過檢測服務旗標可以了解目標主機上開放的服務,例如HTTP(80端口)、FTP(21端口)等。
歡迎信息:
  • 歡迎信息是在與目標主機建立連接后系統自動發送的文本信息。
  • 歡迎信息可以提供關于目標主機操作系統、應用程序或服務的一些提示信息。

?

端口掃描:
  • 端口掃描是一種通過掃描目標主機的開放端口來獲取信息的方法。
  • 使用工具如Nmap可以發現目標主機上哪些端口是開放的,從而判斷其運行的服務和可能存在的漏洞。

TCP/IP協議指紋識別?

  • TCP/IP協議指紋識別是通過分析目標主機的TCP/IP網絡通信包頭部信息來識別其操作系統或應用程序類型。
  • 每個操作系統或應用程序在實現TCP/IP協議時可能有一些不同的特征標識,通過識別這些標識可以推斷目標主機的類型。

信息收集與分析的防范

公開信息收集防御

  • 信息展示最小化原則,不必要的信息不要發布

網絡信息收集防御

  • 部署網絡安全設備 (IDS、防火墻等)
  • 設置安全設備應對信息收集 (阻止CMP)

系統及應用信息收集防御

  • 修改默認配置 (旗標、端口等)
  • 減少攻擊面

?

三、網絡攻擊實施

網絡攻擊實施

  • 配置缺陷:指系統或應用程序中存在安全配置錯誤或不完善的問題,可能導致系統脆弱性暴露,使攻擊者能夠利用這些漏洞進行進一步攻擊。

  • 口令破解:攻擊者使用各種方法嘗試猜測、破解密碼,進而獲取未授權的訪問權限。這包括使用常見密碼、暴力破解、字典攻擊等技術手段。

  • 社會工程學攻擊:社會工程學是指攻擊者通過欺騙、偽裝或誘導等手段,獲取目標用戶的敏感信息或迫使其執行某些操作。這可能涉及通過電話、電子郵件、短信等方式進行欺騙。

  • 欺騙攻擊:攻擊者通過虛假信息或偽造身份來欺騙受害者,讓其泄露敏感信息、進行非法交易或執行惡意操作。

  • 拒絕服務攻擊:攻擊者通過向目標系統發送大量請求或占用系統資源,導致系統無法正常響應合法用戶的請求,從而使系統服務不可用。

  • 緩沖區溢出攻擊:利用軟件漏洞,攻擊者向系統輸入過多數據,超出程序預留的緩沖區存儲范圍,導致系統崩潰、執行非預期操作或執行惡意代碼。

  • 代碼注入攻擊:攻擊者將惡意代碼注入到應用程序中,使其在運行時執行惡意操作,例如獲取敏感數據、控制系統或破壞系統功能。

  • 跨站攻擊(XSS):攻擊者通過在網頁輸出中注入惡意腳本,使用戶在瀏覽網頁時執行這些腳本,從而獲取其敏感信息或竊取身份。

網絡攻擊方式?

配置缺陷

  • 默認賬戶/口令
  • 不合理配置

案例:啟用匿名 (默認)

  • 默認匿名身份:iuser_計算機名稱
  • 配置給予更高權限

比如下圖是windows系統的IIS服務器,出現的問題就是管理員啟用了匿名訪問,而且默認的賬號是Administar(管理員)這個就存在一定的風險

?

口令破解

社會工程學攻擊

(這個兩個后面會有專門的文章講)

網絡攻擊方式 - 電子欺騙

欺騙攻擊( Spoofing) 是指通過偽造源于可信任地址的數據包以使一臺機器認證另一臺機器的復雜技術

電子欺騙的方式

  • ARP 欺騙 ( ARP Spoof)
  • DNS 欺騙( DNS Spoof)
  • IP 欺騙( IP Spoof)
  • TCP會話劫持( TCP hijack)
  • 路由欺騙
  • ......

?

典型網絡攻擊拒絕服務攻擊

什么是拒絕服務

  • 拒絕服務式攻擊(Denial of service),顧名思義就是讓被攻擊的系統無法正常進行服務的攻擊方式。

拒絕服務攻擊方式

  • 利用系統、協議或服務的漏洞
  • 消耗目標系統服務資源能力 (帶寬、性能)

典型攻擊方式

  • SYN FIood
  • UDP FIood
  • Teardrop
  • Ping of death
  • Smurf
  • Land
  • ......?

?

網絡攻擊方式

溢出攻擊

  • 緩沖區溢出 (曾經的攻與防的焦點) :心臟滴血、想哭勒索軟件等都是利用溢出漏洞進行攻擊
  • 格式化字符串溢出:攻擊者通過操縱格式化字符串的參數,可以讀取或寫入敏感數據,執行任意代碼,甚至導致系統崩潰。

?代碼注入

  • SQL注入:通過在Web應用程序的輸入字段中插入惡意SQL語句,攻擊者可以繞過身份驗證、訪問和修改數據庫,獲取敏感信息。

  • 命令注入:通過在輸入字段中插入惡意命令,攻擊者可以執行系統命令、獲取系統權限,并進行其他惡意操作。

  • XPath注入:向XPath查詢中插入惡意代碼,攻擊者可以繞過身份驗證、訪問和修改XML數據,獲取敏感信息。

  • ......

?

四、后門設置與痕跡清除

后門你的就是我的

后門可以作什么

  • 方便下次直接進入
  • 監視用戶所有行為、隱私
  • 完全控制用戶主機

后門方式

  • 系統后門
  • 腳本后門
  • 隱藏賬號

系統后門操作系統級后門·特洛伊木馬程序· Rootkit·設備驅動應用級后門·應用軟件模塊( Apache model)·被篡改的應用軟件

系統后門

操作系統級后門

  • 特洛伊木馬程序:偽裝成合法程序或文件的惡意軟件,一旦被用戶執行,會在系統中建立隱藏的遠程訪問通道,使攻擊者可以遠程控制被感染的系統。

  • Rootkit:一種惡意軟件,用于隱藏惡意活動并維持長期訪問系統的權限,常常通過修改操作系統或內核組件來隱藏其存在。

  • 設備驅動后門:在硬件設備的驅動程序中插入的惡意代碼,用于實現對系統進行遠程控制或獲取敏感信息。

應用級后門

  • Apache模塊后門:Apache Web服務器中的惡意模塊,用于繞過安全措施、獲取敏感信息或進行其他惡意活動。

  • 被篡改的應用軟件:攻擊者對正常的應用軟件進行修改,使其在用戶不知情的情況下執行惡意操作,如竊取用戶信息、傳播病毒等。

腳本后門

腳本后門威脅

  • 隱蔽性強:因為它們可以隱藏在正常代碼中,與合法代碼混合在一起,使其不易被察覺。
  • 難以查找:因為攻擊者通常會繞過安全檢測和防護機制,規避常見的安全漏洞檢測規則。

腳本后門案例

  • Webshell:Webshell是一種常見的腳本后門類型,它通常以PHP、ASP、JSP等腳本語言寫成,并嵌入在受攻擊的網頁服務器上。攻擊者可以通過Webshell執行遠程命令、上傳/下載文件、操控數據庫等操作,而且不易被發現。

  • 后臺管理頁面注入:攻擊者在合法網站的后臺管理頁面中注入惡意代碼,例如JavaScript腳本。這樣,當管理員訪問該頁面時,惡意代碼會被執行,從而為攻擊者提供進一步的權限和控制。

  • 代碼庫中的惡意代碼:攻擊者可以通過篡改開源代碼庫或者第三方庫來插入腳本后門。這種方式利用了開發者在項目中使用的外部代碼,使得攻擊者能夠直接影響到多個項目和系統。

  • 操作系統系統腳本后門:攻擊者可以通過修改操作系統的系統腳本,如啟動腳本、定時任務腳本等,來實現持久的后門功能。這種方式利用了操作系統的特權級別,使得攻擊者能夠在系統啟動時或者定期執行時進行惡意操作。

賬號后門

  • 隱藏賬號:攻擊者通過在系統或應用中創建一個普通用戶,但將其屬性設置為隱藏狀態,使其在用戶列表或管理界面中不可見。這樣,攻擊者可以使用該賬號來繞過正常的身份驗證和權限控制,進行未經授權的操作。
  • 已知密碼的正常賬號:攻擊者可能獲取到某個正常賬號的密碼,然后利用該賬號進行潛在的惡意活動。這種情況下,攻擊者不需要使用后門,而是直接使用合法的賬號和已知的密碼來登錄并進行攻擊。
  • 超權限賬號:某些系統中會存在超級管理員賬號或特殊權限賬號,這些賬號通常具有更高的權限和特殊功能。攻擊者可以嘗試獲取或破解這些超權限賬號的憑據,從而獲得對系統或應用的完全控制。

?

痕跡 - 攻擊者的把柄

清除/改寫日志

  • 日志的清除方法
  • 日志的改寫工具

刪除中間文件

刪除創建的用戶

日志保護

日志設置

  • 盡可能多的信息:在日志中記錄盡可能多的相關信息,包括操作時間、用戶ID、IP地址、請求參數、錯誤代碼等。這些信息有助于故障排查和安全審計。
  • 日志時間:確保日志記錄包含準確的時間戳,以便在需要追蹤事件發生順序或分析時間線時使用。
  • 日志空間:管理好日志的存儲空間,確保足夠的存儲容量以容納正常的日志流量,并制定合理的日志滾動策略,避免填滿磁盤空間。

日志權限

  • 限制對日志文件的訪問權限,確保只有授權的人員才能查看和修改日志文件。僅授予必要的權限,以保護敏感信息的機密性和完整性。

日志存儲

  • 本地路徑及備份方式:對于本地存儲,選擇合適的路徑來保存日志文件,確保只有授權用戶可以訪問。此外,定期進行日志備份,并將備份存儲在安全的位置,以防止數據丟失。
  • 網絡存儲 (日志服務器):考慮使用專門的日志服務器或網絡存儲來集中管理日志。這樣可以提高安全性和可擴展性,并使日志更容易集中審計和分析。

日志分析重點

  • 日期時間 (確定攻擊的時間)
  • 源IP (確定攻擊者IP)
  • 請求方法? (部分情況下要關注post操作)
  • 請求鏈接? (查找鏈接中的特殊字符串)
  • 狀態代碼? (了解操作的結果?

日志分析

關注超長的記錄

  • http協議對URL長度沒有限制
  • 一般網站正常情況下不需要太長的URL

關注記錄中的非正常編碼

  • 例如:紅色代碼蠕蟲攻擊會形成如下記錄

?

關注日志請求鏈接中的關鍵字

  • "cmd":該關鍵字通常用于執行操作系統的命令行。在日志請求鏈接中出現 "cmd" 可能暗示著對操作系統進行命令執行的嘗試。對于此類請求,建議對其進行審計和驗證,以確保只有合法的用戶可以執行相關操作,并防止潛在的安全威脅。

  • "xp_cmdshell":該關鍵字通常用于執行操作系統命令的擴展存儲過程。在日志請求鏈接中出現 "xp_cmdshell" 可能意味著試圖執行擴展存儲過程來執行操作系統命令。由于這可能導致系統的安全問題,應該限制對該擴展存儲過程的訪問,并確保只有經過授權的用戶能夠執行相關操作。

  • "Post":該關鍵字通常表示 HTTP 請求中的 POST 方法。在日志請求鏈接中出現 "Post" 可能表示一個使用 POST 方法的請求。對于此類請求,需要確保請求的合法性并驗證參數的正確性,以防止潛在的安全漏洞和攻擊。

  • "select":該關鍵字通常用于數據庫查詢語句。在日志請求鏈接中出現 "select" 可能暗示著對數據庫的查詢請求。對于此類請求,需要確保查詢操作的合法性,并采取適當的訪問控制措施,以防止未經授權的數據泄露或濫用。

  • "exec":該關鍵字通常用于執行特定操作或調用存儲過程。在日志請求鏈接中出現 "exec" 可能意味著試圖執行某些操作或調用特定的存儲過程。為了確保系統的安全性,需要對這類請求進行驗證和控制,以防止潛在的安全威脅。

  • "delete":該關鍵字通常用于數據庫操作中的刪除記錄操作。在日志請求鏈接中出現 "delete" 可能意味著試圖對數據庫中的數據進行刪除操作。為了防止數據丟失或濫用,應該限制對刪除操作的訪問,并確保只有經過授權的用戶可以執行相關操作。

  • "update":該關鍵字通常用于數據庫操作中的更新記錄操作。在日志請求鏈接中出現 "update" 可能意味著試圖對數據庫中的數據進行更新操作。對于此類請求,需要確保更新操作的合法性,并采取適當的訪問控制措施,以防止非授權用戶對數據進行修改。

  • "insert":該關鍵字通常用于數據庫操作中的插入記錄操作。在日志請求鏈接中出現 "insert" 可能意味著試圖向數據庫中插入新的記錄。為了確保數據完整性和安全性,應該對插入操作進行合法性驗證,并限制對插入操作的訪問權限。

  • ......

?

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

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

相關文章

前端開發:數組對象判斷重復的方法詳解

前言 在前端開發過程中,關于數據處理是非常常用的操作,尤其是通過算法處理從后端獲取的數據甚為重要。而且在前端開發中,兩大類型的數據處理是必備的:數組和對象。與其說是數據處理,不如說是數組和對象的處理。實際開發中,關于數組數據的處理所占比例更高,尤其是涉及到表…

使用Flask.Request的方法和屬性,獲取get和post請求參數(二)

1、Flask中的request 在Python發送Post、Get等請求時,我們使用到requests庫。Flask中有一個request庫,有其特有的一些方法和屬性,注意跟requests不是同一個。 2、Post請求:request.get_data() 用于服務端獲取客戶端請求數據。注…

理解ConcurrentSkipListMap(有點類似于并發的TreeMap)

是一個分層的結構。 從最上面開始查找,最后層層往下查。 插入和刪除有可能會引起節點Level的變更。 key是有序的,因此可以看做是并發的TreeMap

ubuntu18.04下配置muduoC++11環境

1.安裝muduo依賴的編譯工具及庫 Cmake sudo apt-get install cmakeBoost sudo apt-get install libboost-dev libboost-test-devcurl、c-ares DNS、google protobuf sudo apt-get install libcurl4-openssl-dev libc-ares-dev sudo apt-get install protobuf-compiler libp…

帶你了解SpringBoot支持的復雜參數--自定義對象參數-自動封裝

😀前言 本篇博文是關于SpringBoot 在響應客戶端請求時支持的復雜參數和自定義對象參數,希望您能夠喜歡😊 🏠個人主頁:晨犀主頁 🧑個人簡介:大家好,我是晨犀,希望我的文章…

go struct 的常見問題

go struct 的常見問題 1. 什么是struct?2. 如何聲明、定義和創建一個struct?3. struct和其他數據類型(如數組、切片、map等)有什么區別?4. 如何訪問struct字段?5. struct是否支持繼承,是否支持重…

JavaWeb_xml

文章目錄 1.xml是什么?2.xml的用途 1.xml是什么? xml 是可擴展的標記性語言 2.xml的用途 1、用來保存數據,而且這些數據具有自我描述性 2、它還可以做為項目或者模塊的配置文件 3、還可以做為網絡傳輸數據的格式(現在 JSON 為主…

【Github】SourceTree技巧匯總

sourceTree登錄github賬戶 會跳轉到瀏覽器端 按照Git Flow 初始化倉庫分支 克隆遠程倉庫到本地 推送變更到遠程倉庫 合并分支 可以看到目前的本地分支(main、iOS_JS)和遠程分支(origin/main、origin/HEAD、origin/iOS_JS)目前所處…

5134. 簡單判斷

文章目錄 Question輸入樣例1: 3 7 0 輸出樣例1: IdeasCode Question 給定三個非負整數 x,y,z ,請你按如下要求進行判斷并輸出相應結果: 如果 x>yz ,則輸出 。 如果 y>xz ,則輸出 -。 如果 xy 且 z0…

pip install總是報錯:ValueError: Trusted host URL must include a host part: ‘#‘

一、問題現象 報錯信息如下&#xff1a; Traceback (most recent call last):File "/user_name/anaconda3/bin/pip", line 11, in <module>sys.exit(main())^^^^^^File "/user_name/anaconda3/lib/python3.11/site-packages/pip/_internal/cli/main.py&…

14_基于Flink將pulsar數據寫入到HBase

3.7.基于Flink將數據寫入到HBase 3.7.1.編寫Flink完成數據寫入到Hbase操作, 完成數據備份, 便于后續進行即席查詢和離線分析 3.7.1.1.HBase基本介紹 hbase是基于Google發布bigTable論文產生一款軟件, 是一款noSQL型數據, 不支持SQL. 不支持join的操作, 沒有表關系, 不支持事…

Codeforces 757F. Team Rocket Rises Again 最短路 + 支配樹

題意&#xff1a; 給你 n 個點&#xff0c; m 條雙向邊&#xff0c;求爆了某個點后&#xff0c;從s出發的最短路距離&#xff0c;會改變最多的數量。 分析&#xff1a; 建出最短路樹&#xff08;DAG&#xff09;之后&#xff0c;在最短路樹上跑一下支配樹&#xff0c;找出支…

鏈表OJ詳解

&#x1f495;人生不滿百&#xff0c;常懷千歲憂&#x1f495; 作者&#xff1a;Mylvzi 文章主要內容&#xff1a;鏈表oj詳解 題目一&#xff1a;移除元素 題目要求&#xff1a; 畫圖分析&#xff1a; 代碼實現&#xff1a; struct ListNode* removeElements(struct List…

flutter項目 環境搭建

開發flutter項目 搭建工具環境 flutter項目本身 所需開發工具環境 flutter 谷歌公司開發 系統支持庫 鏡像庫 搭建流程&#xff1a; flutter 官網&#xff1a; https://flutter.dev/community/china //步驟1 .bash_profile touch .bash_profile pwd /Users/haijunyan open ~ e…

商品首頁(sass+git本地初始化)

目錄 安裝sass/sass-loader 首頁(vue-setup) 使用git本地提交 同步遠程git庫 安裝sass/sass-loader #安裝sass npm i sass -D#安裝sass-loader npm i sass-loader10.1.1 -D 首頁(vue-setup) <template><view class"u-wrap"><!-- 輪播圖 --><…

C++lambda表達式

先來說背景&#xff1a;當我們需要對一些的元素進行排序的時候&#xff0c;可以使用std::sort來進行排序&#xff0c;而當需要對一些自定義類型的元素來排序的時候&#xff0c;要去寫一個類&#xff0c;或者說是需要寫一個仿函數&#xff0c;而如果功能要求上需要根據不同的比較…

基于chatgpt動手實現一個ai_translator

動手實現一個ai翻譯 前言 最近在極客時間學習《AI 大模型應用開發實戰營》&#xff0c;自己一邊跟著學一邊開發了一個進階版本的 OpenAI-Translator&#xff0c;在這里簡單記錄下開發過程和心得體會&#xff0c;供有興趣的同學參考&#xff1b; ai翻譯程序 版本迭代 在學習…

VLC播放主要流程

前言 VLC 播放流程大概是先加載解封裝器,然后通過es_out控制所有的stream。然后會加載decoder。最終通過resource文件的方法交給輸出 模塊。下面簡要介紹。 正文 播放器主要分為三層。主要通過兩個接口實現了功能隔離。分別是es_out.c和decoder.c的實現了&#xff1a; //控…

算法練習-搜索 相關

文章目錄 迷宮問題 迷宮問題 定義一個二維數組 m行 * n列 &#xff0c;如 4 5 數組下所示&#xff1a; int arr[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, }; 它表示一個迷宮&#xff0c;1表示墻壁&#xff0c;0表示可以走的路&#xff0c;只…