【病毒分析】Babuk勒索家族babyk后缀系列分析--Windows篇

1.背景

1.1 Babuk勒索家族

Babuk勒索家族最早曝光于2021年1月初,在几个月内,它就跻身于最臭名昭著的勒索软件组织之列。自回归以来,它通过在地下论坛上积极宣传自己而获得了更多的知名度。在策略方面,其加密功能与其他勒索软件组织没有太大区别。随着时间的流逝,勒索软件组织通过发布新变种并致力于改进其攻击机制,成功地制造了混乱。

该加密器使用了多种加密方式:HC-128/ChaCha8 对称加密算法、椭圆曲线 Diffie-Hellman (ECDH)、SHA256 hashing等,特征也极为特殊,会将所有被加密文件后缀修改为.babyk,并且在所有加密文件的加密内容末尾附加字符串“choung dong looks like hot dog!!!”,该字符串的意义是为了标注着勒索软件与 Babuk 有关。

解析Babyk行为文章链接

https://www.acronis.com/en-eu/blog/posts/babuk-ransomware/

以下是针对 Linux/UNIX 和 ESXi 或 VMware 系统的跨平台加密后提取的勒索信内容。

勒索信

 ██████╗  ██████╗ ██████╗ ███████╗    ██████╗ ███████╗██╗      █████╗ ██╗  ██╗    ██╗██╗██╗
██╔═══██╗██╔═══██╗██╔══██╗██╔════╝    ██╔══██╗██╔════╝██║     ██╔══██╗╚██╗██╔╝    ██║██║██║
██║   ██║██║   ██║██████╔╝███████╗    ██████╔╝█████╗  ██║     ███████║ ╚███╔╝     ██║██║██║
██║   ██║██║   ██║██╔═══╝ ╚════██║    ██╔══██╗██╔══╝  ██║     ██╔══██║ ██╔██╗     ╚═╝╚═╝╚═╝
╚██████╔╝╚██████╔╝██║     ███████║    ██║  ██║███████╗███████╗██║  ██║██╔╝ ██╗    ██╗██╗██╗
 ╚═════╝  ╚═════╝ ╚═╝     ╚══════╝    ╚═╝  ╚═╝╚══════╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝    ╚═╝╚═╝╚═╝
                                                                                           


What happened?
---------------------------------------------------------------
Your computers and servers have been encrypted, which is fundamentally different from normal file damages.
And you can save yourself the trouble of going to the internet to find a way to decrypt them, because unless you pay the ransom.
Even if God comes, he will not be able to help you recover them!


What guarantees?
---------------------------------------------------------------
We value our reputation. If we do not do our work and liabilities, nobody will pay us. This is not in our interests.
All our decryption software is perfectly tested and will decrypt your data. We will also provide support in case of problems.
You can contact us to test an unimportant encrypted file and we will decrypt it to prove that we have the ability to decrypt them.


How to canotact us?
---------------------------------------------------------------
Your encryption ID:7gui):

You can contact us at the email address below:

ijtg5gr@keemail.me
ag55htr@keemail.me


How to Pay?
---------------------------------------------------------------
Please pay $20000 worth of bitcoins(BTC) to the address below:

bc1qz23mpc3qdy02jzw64xw9zhe4s275un40efsd2l

We will send you the decryption program after we confirm your payment.


---------------------------------------------------------------
*****WARNING: You have up to 7 days to consider whether or not to make a payment,
              so hurry or you may lose your files and data forever,
              And, we will make all your data available to the Internet.

1.2 来源

该加密器最初的泄露是来自于一篇Twiter文章,是由其babuk的开发者泄漏的源代码。

Twiter文章:

https://twitter.com/vxunderground/status/1433758742244478982?s=46&t=7D_QCICAVCcsuuaq3z_Tkw

图片

源码泄漏地址:

https://github.com/Hildaboo/BabukRansomwareSourceCode/tree/main

其中存在三种针对不同系统类型(Linux系统、NAS系统、Windows系统)的病毒文件,本篇是针对Windows系统的分析。

图片

2 总体行为

2.1 行为展示

图片

2.2 密钥下发(Builder.exe)

这里可以通过VS生成了Builder.exe来实现对其Builder过程进行分析,可以看到主要是对这部分文件的处理与释放

图片

2.3 文件释放

文件释放列表及作用:

图片

2.4 流程图

图片

2.恶意文件分析

2.1 逻辑分析

1. 读取参数,第一个参数是文件夹路径,第二个是指定密钥文件

图片

2. 根据参数1的文件路径,来和kp.curve25519与ks.curve25519进行拼接,用于后续存储密钥

图片

3. 利用随机数函数CryptGenRandom来产生一个私钥,再利用该私钥配合curve25519算法生成一个公钥

图片

4. 或者看是否存在第三个参数,有指定私钥的文件,利用该文件内的私钥配合curve25519算法生成一个公钥

图片

5. 将私钥和外部的note.txt勒索信写入到加密器中,将私钥写入到解密器中

图片

这里可以看到是传了2个参数进去,这里被ida识别成了一个,所以上面的那个是释放文件名称,下面的需要修改的。

图片

6. 将生成的私钥和公钥写入到kp.curve25519和ks.curve25519文件中

图片

3.密钥产生程序

3.1 逆向分析(keygen.exe)

1.整体流程就是调用随机数函数SystemFunction036,产生了32位的随机数。

图片

2.其中systemFunction036是cryptbase.dll中的函数。

图片

3.之后就是经过了Curve25519算法的密钥生成,得出了一个公钥和一个私钥。

图片

4.Windows源代码分析

4.1 流程图

图片

4.1 加密器(e_win)

程序先初始化了一下加密的句柄,使用了CryptAcquireContextW函数,一共获取了两次,第一次就是有现成的加密句柄就用现成的,第二次的话就是保障一下,如果没有就创建一个,然后第三个参数是加密的类型,这里的0x18则是对应的PROV_RSA_AES,意味着支持RSA和AES加密算法。

图片

最后将加密句柄返回。

图片

回到主函数,获取了输入的参数,并且判断是否存在debug参数,如果存在则开启调试模式

图片

如果是调试模式开启,则创建一个用于记录调试模式的文件

图片

4.2 关闭服务

主要比较有特点的就是,通过使用ControlService函数,来对服务发出停止操作,然后调用sleep函数直到服务成功停止后,再调用。

图片

所停止的服务有:

vss,sql,svc$,memtas,mepocs,sophos,veeam,,backup,GxVss,,GxBlr,GxFWD,GxCVD,GxCIMgr,DefWatch,ccEvtMgr,ccSetMgr,SavRoam,RTVscan,QBFCService,QBIDPService,Intuit.QuickBooks.FCS,,QBCFMonitorService,YooBackup,YooIT,zhudongfangyu,sophos,stc_raw_agent,VSNAPVSS,VeeamTransportSvc,VeeamDeploymentService,VeeamNFSSvc,veeam,PDVFSService,BackupExecVSSProvider,BackupExecAgentAccelerator,BackupExecAgentBrowser,BackupExecDiveciMediaService,BackupExecJobEngine,BackupExecManagementService,BackupExecRPCService,AcrSch2Svc,AcronisAgent,CASAD2DWebSvc,CAARCUpdateSvc

4.3 停止进程

利用TerminateProcess函数来实现对指定进程的关闭。

图片

sql.exe, oracle.exe, ocssd.exe, dbsnmp.exe, synctime.exe, agntsvc.exe, isqlplussvc.exe, 
xfssvccon.exe, mydesktopservice.exe, ocautoupds.exe, encsvc.exe, firefox.exe, tbirdconfig.exe, 
mydesktopqos.exe, ocomm.exe, dbeng50.exe, sqbcoreservice.exe, excel.exe, infopath.exe, msaccess.exe, 
mspub.exe, onenote.exe, outlook.exe, powerpnt.exe, steam.exe, thebat.exe, thunderbird.exe, 
visio.exe, winword.exe, wordpad.exe, notepad.exe

4.4 删除系统的影卷

调用了cmd命令实现:

cmd.exe /c vssadmin.exe delete shadows /all /quiet

图片

4.5 清空了系统的回收站

图片

获取了系统的信息,并且获得了系统的处理器的数量,并且创建了参数分别为0和1的两个加密线程。

图片

StartAddress

一共有两种参数,0的话就是会检查一下当前的文件队列,1的话就直接开始加密。

图片

获取shares和paths的参数,该程序格式应该是用逗号分开的。

图片

其中shares代表了加密IPC共享资源中的文件。

图片

path代表了指定加密磁盘路径,例如c:

图片

然后他会调用sub_40AB10来实现对其指定路径的所有文件的加密,甚至还会对驱动盘类型进行判断,如果是网络的驱动盘,该程序甚至会调用WNetGetConnectionW来检索其网络资源。

图片

如果share和path参数都没有指定,那么就会检查是否存在名为DoYouWantToHaveSexWithCuongDong的互斥体,如果也不存在,则认为程序是第一次运行,就创建一个名为DoYouWantToHaveSexWithCuongDong的互斥体,以保证后续资源的利用不会被抢占。

图片

之后呢就是一系列的加密网络上的资源了,例如映射本机的NAS之类的这种驱动器,还有遍历本机的操作了。

图片

迭代遍历文件过程中会写入勒索信

图片

并且会检查文件的后缀和文件的名称,名称是勒索信和后缀是.exe、.dll、.babyk的不加密。

图片

等所有的磁盘遍历和文件加密完毕后,就是资源的释放了,外加又一次清除了系统的影卷。

图片

4.5.1 加密流程

图片

首先这个恶意程序会先初始化一下加密的标志“choung dong looks like hot dog!!”,之后会再修改一下文件的名称。

图片

4.6 加密分析

该恶意程序使用了Curve25519算法来实现密钥的生成,之后使用了sha256来加密了密钥,并且将其分开当作后续加密的密钥,最后文件的加密是采用了AES来实现的。

https://cr.yp.to/ecdh.html这篇文章中基本介绍了使用Curve25519加密算法的使用方法。

总结一下要使用Curve25519加密算法的方法:

1 .要生成 32 字节的 Curve25519 密钥,首先从加密安全源生成 32 个密钥随机字节

2 .利用生成的32个随机字节的密钥和一个常数序列来生成公钥

3 .利用生成的私钥和对方的公钥来生成共享密钥

4 .使用sha512来生成共享密钥对应的sha512,一分两半,当作加密的Key和IV

5 .计算sha512的crc用于解密时对密钥的校验

6 .最后使用生成的KEY和IV进行HC-128流加密

图片

4.6.1 算法分析

这里可以写一个Python脚本来验证一下这个过程,首先假设我们有Alice和Bob两个人

4.6.1.1 流程图

图片

1 .先生成一对随机的密钥,然后再生成对应的公钥

当然这里不见得非得需要33-126,因为我是想保持密钥由明文组成。

import random
import donna25519
private_key = ''
for i in range(0,32):
    private_key+= chr(random.randint(33,126))
donna = donna25519.PrivateKey(secret=private_key)
public_key = donna.get_public().public
print 'private_key: '+private_key.encode('hex')
print 'public_key: '+public_key.encode('hex')

Alice Key:

private_key: 3840763b6b2a68583f7e3d7076224a5b7571217423236f6b233a6b6e68586649
public_key: 0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556

Bob Key:

private_key: 705078776a2f316747502573447255492a513a3653385a3f213674482c495753
public_key: 30c1df51602efdd0eaa2d9f51e87851ecb351d2d555f3ec32cbb76916c74e43b

2 .实现一下这个交换的过程,这里先让Alice给Bob做密钥交换。

import donna25519
Alice_private_key = '3840763b6b2a68583f7e3d7076224a5b7571217423236f6b233a6b6e68586649'.decode('hex')
Bob_public_key  = '30c1df51602efdd0eaa2d9f51e87851ecb351d2d555f3ec32cbb76916c74e43b'.decode('hex')
donna = donna25519.PrivateKey(secret=Alice_private_key)
public_key = donna25519.PublicKey(public=Bob_public_key)
share_key = donna.do_exchange(public_key=public_key)
print 'share_key: '+share_key.encode('hex')

可以得到:

Alice_public_key: 0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556
share_key: 7ef8f5be057f00fed06c3b993c0d5b6102d86680c124ebf12f005cf1c22c1f27

3 .假设Bob接收到了这个Alice的公钥后,然后来实现一下Bob对Alice的密钥交换。

import donna25519
Bob_private_key = '705078776a2f316747502573447255492a513a3653385a3f213674482c495753'.decode('hex')
Bob_public_key = '30c1df51602efdd0eaa2d9f51e87851ecb351d2d555f3ec32cbb76916c74e43b'.decode('hex')
Alice_public_key = '0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556'.decode('hex')
donna = donna25519.PrivateKey(secret=Bob_private_key)
public_key = donna25519.PublicKey(public=Alice_public_key)
share_key = donna.do_exchange(public_key=public_key)
print 'Bob_public_key: '+Alice_public_key.encode('hex')
print 'share_key: '+share_key.encode('hex')

可以得到:

Bob_public_key: 0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556
share_key: 7ef8f5be057f00fed06c3b993c0d5b6102d86680c124ebf12f005cf1c22c1f27

通过这个过程我们了解此恶意程序的密钥生成与交换完全一样,而我们可以是Bob也可以是Alice,黑客也可以是Alice也可以是Bob,当我们根据对方的公钥和自己的私钥生成共享的密钥之后,后面的加密流程几乎都是依赖此密钥继续的。

密钥生成完毕之后,会根据文件的大小来选择是否是全加密或者是部分加密等,之后就会进入到合适的加密函数,但都是一个加密函数

图片

文件内容的加密则会利用刚才的Key和IV进入到HC128的密钥流生成,最后将生成的密钥和原文进行异或后,即完成加密。

图片

4.6.2 加密标志写入

最后就是对文件的末尾进行公钥、CRC32和加密标志"choung dong looks like hot dog!"的写入了,该标志也是作为目前Babuk家族的主要识别标志了。

图片

图片

当黑客拿到文件末尾的公钥后,即可使用自己的私钥来产生出对应的共享密钥,然后实现后面的解密,其中crc32是对共享密钥的校验,来对其完整性进行了验证。

5.总结

Windows这部分的加密的执行主要采用了多线程的方式,其中加密算法采用了Curve25519算法作为其加密算法,每个文件都是使用了同一个黑客的公钥来实现的密钥交换,但每个文件都会生成一个属于自己的私钥和公钥,而且整体发现此款恶意程序以加密速度为目标,为的就是用最短的时间来实现对中招电脑的资料进行加密。

以下是solar安全团队近期处理过的常见勒索病毒后缀:

.live勒索病毒, .locked勒索病毒, .rmallox勒索病毒, .mallox 勒索病毒,.jopanaxye勒索病毒, .2700勒索病毒, .elbie勒索病毒, .mkp勒索病毒, .dura勒索病毒, .halo勒索病毒, .DevicData勒索病毒, .faust勒索病毒, ..locky勒索病毒, .cryptolocker勒索病毒, .cerber勒索病毒, .zepto勒索病毒, .wannacry勒索病毒, .cryptowall勒索病毒, .teslacrypt勒索病毒, .gandcrab勒索病毒, .dharma勒索病毒, .phobos勒索病毒, .lockergoga勒索病毒, .coot勒索病毒, .lockbit勒索病毒, .nemty勒索病毒, .contipa勒索病毒, .djvu勒索病毒, .marlboro勒索病毒, .stop勒索病毒, .etols勒索病毒, .makop勒索病毒, .mado勒索病毒, .skymap勒索病毒, .aleta勒索病毒, .btix勒索病毒, .varasto勒索病毒, .qewe勒索病毒, .mylob勒索病毒, .coharos勒索病毒, .kodc勒索病毒, .tro勒索病毒, .mbed勒索病毒, .wannaren勒索病毒, .babyk勒索病毒, .lockfiles勒索病毒, .locked勒索病毒, .DevicData-P-XXXXXXXX勒索病毒, .lockbit3.0勒索病毒, .blackbit勒索病毒, .360勒索病毒, .360勒索病毒

勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。

而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。

如果您想了解有关勒索病毒的最新发展情况,或者需要获取相关帮助,请关注“solar专业应急响应团队”。

6.安全建议

6.1 风险消减措施

资产梳理排查目标:根据实际情况,对内外网资产进行分时期排查

服务方式:调研访谈、现场勘查、工具扫描

服务关键内容:流量威胁监测系统排查、互联网暴露面扫描服务、技术加固服务、集权系统排查

图片

6.2 安全设备调优

目标

通过对安全现状的梳理和分析,识别安全策略上的不足,结合目标防御、权限最小化、缩小攻击面等一系列参考原则,对设备的相关配置策略进行改进调优,一方面,降低无效或低效规则的出现频次;另一方面,对缺失或遗漏的规则进行补充,实现将安全设备防护能力最优化。

图片

主要目标设备

网络安全防护设备、系统防护软件、日志审计与分析设备、安全监测与入侵识别设备。

6.3 全员安全意识增强调优

目标:

通过网络安全意识宣贯、培训提升全方位安全能力

形式:

培训及宣贯

图片

线下培训课表

若无法组织线下的集体培训,考虑两种方式:

1.提供相关的安全意识培训材料,由上而下分发学习

2.组织相关人员线上开会学习。线上培训模式。

图片

线上学习平台

7.团队介绍

solar团队数年深耕勒索解密与数据恢复领域,在勒索解密和数据恢复领域建立了良好的声誉,以高效、安全、可靠的解决方案赢得了客户的信任。无论是个人用户还是大型企业,都能提供量身定制的服务,确保每一个被勒索软件侵害的数据都能够恢复到最佳状态,同时在解密数据恢复后,提供全面的后门排查及安全加固服务,杜绝二次感染的风险。同时,solar团队坚持自主研发及创新,在攻防演练平台、网络安全竞赛平台、网络安全学习平台方面加大研发投入,目前已获得十几项专利及知识产权。团队也先后通过了ISO9001质量管理体系、ISO14000环境管理体系、ISO45001职业安全健康管理体系 、ITSS(信息技术服务运行维护标准四级)以及国家信息安全漏洞库(CNNVD)技术支撑单位等认证,已构建了网络安全行业合格的资质体系

8.数据恢复服务流程

多年的数据恢复处理经验,在不断对客户服务优化的过程中搭建了"免费售前+安心保障+专业恢复+安全防御"一体化的专业服务流程。

① 免费咨询/数据诊断分析

       专业的售前技术顾问服务,免费在线咨询,可第一时间获取数据中毒后的正确处理措施,防范勒索病毒在内网进一步扩散或二次执行,避免错误操作导致数据无法恢复。

       售前技术顾问沟通了解客户的机器中毒相关信息,结合团队数据恢复案例库的相同案例进行分析评估,初步诊断分析中毒数据的加密/损坏情况。

② 评估报价/数据恢复方案

       您获取售前顾问的初步诊断评估信息后,若同意进行进一步深入的数据恢复诊断,我们将立即安排专业病毒分析工程师及数据恢复工程师进行病毒逆向分析及数据恢复检测分析。

       专业数据恢复工程师根据数据检测分析结果,定制数据恢复方案(恢复价格/恢复率/恢复工期),并为您解答数据恢复方案的相关疑问。

③ 确认下单/签订合同

       您清楚了解数据恢复方案后,您可自主选择以下下单方式:

双方签署对公合同:根据中毒数据分析情况,量身定制输出数据恢复合同,合同内明确客户的数据恢复内容、数据恢复率、恢复工期及双方权责条款,双方合同签订,正式进入数据恢复专业施工阶段,数据恢复后进行验证确认,数据验证无误,交易完成。

④ 开始数据恢复专业施工

      安排专业数据恢复工程师团队全程服务,告知客户数据恢复过程注意事项及相关方案措施,并可根据客户需求及数据情况,可选择上门恢复/远程恢复。

      数据恢复过程中,团队随时向您报告数据恢复每一个节点工作进展(数据扫描 → 数据检测 → 数据确认 → 恢复工具定制 → 执行数据恢复 → 数据完整性确认)。

⑤ 数据验收/安全防御方案

      完成数据恢复后,我司将安排数据分析工程师进行二次检查确认数据恢复完整性,充分保障客户的数据恢复权益,二次检测确认后,通知客户进行数据验证。

      客户对数据进行数据验证完成后,我司将指导后续相关注意事项及安全防范措施,并可提供专业的企业安全防范建设方案及安全顾问服务,抵御勒索病毒再次入侵。   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/658848.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】 如何获取Python模块的路径?

基本原理 在Python中,模块是组织代码的一种方式,每个.py文件都是一个模块。有时,我们需要获取一个模块的路径,这在需要定位模块文件、读取模块配置文件或动态加载模块时非常有用。Python提供了几种方法来获取模块的路径。 代码示…

Java基础入门day60

day60 购物车案例补充 设置欢迎页 打开也系统&#xff0c;就可以直接看到商品列表页面 之前曾经设置过欢迎页&#xff0c;都是针对页面&#xff0c;可以有html页面&#xff0c;也可以有jsp页面 但是今天我们将一个servlet设置成欢迎页 在web.xml文件中设置欢迎页 <welcome…

我国赤泥年产量庞大 政策引导下赤泥绿色利用率将不断提升

我国赤泥年产量庞大 政策引导下赤泥绿色利用率将不断提升 赤泥是指从铝土矿中提炼氧化铝后产生的强碱性工业固体废渣&#xff0c;由于含大量氧化铁&#xff0c;表面呈现红色&#xff0c;而得名赤泥。   赤泥通常包含氧化铝、氧化铁、二氧化硅、氧化钙、碱金属及其他微量元素&…

【Jmeter】性能测试之压测脚本生成,也可以录制接口自动化测试场景

准备工作-10分中药录制HTTPS脚本&#xff0c;需配置证书 准备工作-10分中药 以https://www.baidu.com/这个地址为录制脚本的示例。 录制脚本前的准备工作当然是得先把Jmeter下载安装好、JDK环境配置好、打开Jmeter.bat&#xff0c;打开cmd&#xff0c;输入ipconfig&#xff0c;…

数据分析中的列与行交换技巧

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;数据交换的重要性 二、列交换的基本原理 三、列交换的代码实现 1. 使…

勒索软件统计数据揭示了网络勒索的惊人速度

本文通过各种报告摘录&#xff0c;提供了有关当前勒索软件形势的统计数据和见解。 全球勒索病毒危机加剧 NTT安全控股《2024全球威胁情报报告》&#xff08;2024年5月&#xff09; 据NTT安全控股公司的《2024年全球威胁情报报告》显示&#xff0c;勒索软件和勒索事件在2023年激…

无人售货机零售业务成功指南:从市场分析到创新策略

在科技驱动的零售新时代&#xff0c;无人售货机作为一种便捷购物解决方案&#xff0c;正逐步兴起&#xff0c;它不仅优化了消费者体验&#xff0c;还显著降低了人力成本&#xff0c;提升了运营效能。开展这项业务前&#xff0c;深入的市场剖析不可或缺&#xff0c;需聚焦消费者…

Ai绘画怎么正确使用关键词?

在AI绘画的过程中&#xff0c;关键词&#xff08;提示词&#xff09;是非常重要的组成部分&#xff0c;下面我以AI绘画常用的Stable Diffusion为例&#xff0c;来介绍下AI绘画怎么使用提示词吧&#xff01; 一、提示词是什么 提示词&#xff08;Prompt&#xff09;就是我们对…

开源数据库同步工具DBSyncer

前言&#xff1a; 这么实用的工具&#xff0c;竟然今天才发现&#xff0c;相见恨晚呀&#xff01;&#xff01;&#xff01;&#xff01; DBSyncer&#xff08;英[dbsɪŋkɜː]&#xff0c;美[dbsɪŋkɜː 简称dbs&#xff09;是一款开源的数据同步中间件&#xff0c;提供M…

北美互联网裁员太狠了,程序员“做管理上岸”越来越难

北美互联网现在裁员太狠了&#xff0c;“做管理上岸”这种事情在现在这种行业形势已经基本不存在了&#xff0c;这个人管理40人的团队该裁还是裁。 然而硅谷还是中国程序员心中的圣地&#xff08;华子一定程度上也是很多人的心之所向&#xff0c;技术大厂捞人&#xff0c;前后…

【C语言每日一练】【第1天】C程序实现分数计算器

一、实现目标 输入两个分数&#xff0c;中间是四则运算符&#xff08;&#xff0c;-&#xff0c;*&#xff0c;/&#xff09;&#xff0c;程序输出分数形式的运算结果。 样例输入&#xff1a;1,2,,1,3 样例输出&#xff1a;5/6 (1/21/3) 二、实现步骤 1、求最大公约数 定义一…

在 CentOS 上安装 PostgreSQL 的全面指南

PostgreSQL 是一种功能强大的开源关系型数据库管理系统&#xff0c;广泛应用于各种领域。它提供了诸如事务处理、并发控制和数据完整性等高级功能&#xff0c;因此深受开发者和企业的欢迎。本指南将逐步引导您在 CentOS 上安装 PostgreSQL&#xff0c;以便您充分利用其众多优势…

面试必备:应对 “为什么离职” 的万能回答

使用PC端的朋友&#xff0c;请将页面缩小到最小比例&#xff0c;阅读最佳&#xff01; 面试官问到你为什么从上一家公司离职时&#xff0c;你会怎么回答&#xff1f;这个问题我觉得很有意思&#xff0c;也很有必要去探讨一下。 很多专业人士都会建议你&#xff0c;最好不要直接…

日常使用工具(截图,笔记,一键启动)

目录 一,截图 Snipaste 二.笔记 Joplin 三.翻译 四.自动启动软件 这篇记录一下工作中用的很顺手的工具. 一,截图 Snipaste 官网:Snipaste - 截图 贴图 下面是官方手册. 使用 我都是直接F1 就会出现选择框,随意拖动大小,选择下方工具栏,相应位置, 二.笔记 Joplin 官网:…

【Pandas】深入解析`pd.to_excel()`函数

【Pandas】深入解析pd.to_excel()函数 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xf…

Linux自动重启系统脚本测试工具

前言 脚本允许用户指定重启的次数和重启间隔时间&#xff0c;并自动生成相应的定时任务。通过使用这个脚本&#xff0c;系统管理员可以轻松地设置重启测试。每次重启操作都会被记录下来&#xff0c;以便用户随时了解测试情况。 一、脚本 #!/bin/bashif [ "$1" &qu…

css设置文字在固定宽度中等距分开(仅限于单行文本)

一、要实现的效果&#xff1a; 二、代码 要在CSS中设置文本在一个固定宽度的容器中等距分开&#xff0c; 可以使用text-align: justify;属性&#xff0c;它可以让文本两端对齐&#xff0c;看起来就像是等距分开的。 但是要注意&#xff0c;单独使用text-align:justify;只能对单…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 17 节&#xff09; P17《16.Ark-状态管理Prop Link Provide Consume》 将上一节写出的代码进行功能模块封装&#xff1a;1、任务…

JAVA学习路线图

计算机网课资料分享群&#xff1a;710895979

简单的 Cython 示例

1&#xff0c; pyx文件 fibonacci.pyx def fibonacci_old(n):if n < 0:return 0elif n 1:return 1else:return fibonacci_old(n-1) fibonacci_old(n-2) 2&#xff0c;setup.py setup.py from setuptools import setup from Cython.Build import cythonizesetup(ext_mod…