20232803 2023-2024-2 《网络攻防实践》实践八报告

目录

    • 1. 实践内容
    • 2. 实践过程
      • 2.1 动手实践任务一
      • 2.2 动手实践任务二:分析Crackme程序
        • 2.2.1 crackme1.exe
        • 2.2.2 crackme2.exe
      • 2.3 分析实践任务一
      • 2.4 分析实践任务二
    • 3. 学习中遇到的问题及解决
    • 4. 学习感悟、思考等

1. 实践内容

  • 动手实践任务一:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。

  • 动手实践任务二:分析Crackme程序

    • 任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
  • 分析实践任务一:分析一个自制恶意代码样本rada,并撰写报告,回答问题。

  • 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络

    • 任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置,并回答问题。

2. 实践过程

2.1 动手实践任务一

具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

  • 在学习通中下载rada.rar压缩包,解压密码为rada,将压缩包中的两个文件粘贴到WinXPattacker中。

注:如无法粘贴可先为WinXPattacker安装VMware Tools
在这里插入图片描述

  • 在命令行窗口中输入以下命令查看RaDa.exe的文件格式
cd 桌面
file RaDa.exe

在这里插入图片描述
根据命令结果可知,RaDa.exe是PE32位的可执行文件,具有微软Windows系统的GUI界面,系统架构为英特尔80386系列,运行在32位Windows系统上

  • 输入命令strings RaDa.exe查看RaDa.exe文件恶意代码字符串
    在这里插入图片描述
    如上图所示,前面的字符串都是一些乱码,而最后出现了两个dll文件和三个没有文件名后缀的文件,根据这三个文件的文件名,猜测是程序或函数

  • 输入命令RaDa --authors查看作者信息
    在这里插入图片描述

  • 输入命令RaDa.exe --authors查看作者信息
    在这里插入图片描述
    可以发现以上两个命令显示的作者信息是一致的

  • 按如下步骤打开PEid工具
    在这里插入图片描述

  • 打开PEid工具后,点击文件右侧的按钮,打开RaDa.exe文件
    在这里插入图片描述

  • 打开后,根据提供的信息可知RaDa.exe文件的加壳为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
    在这里插入图片描述

  • 打开超级巡警虚拟机脱壳器
    在这里插入图片描述

  • 点击文件右侧的按钮选择文件RaDa.exe
    在这里插入图片描述

  • 点击右侧脱壳按钮,脱壳后的文件将保存到RaDa.exe同一目录下
    在这里插入图片描述

  • 在命令行窗口中输入strings RaDa_unpacked.exe查看脱壳后的文件里的字符串
    在这里插入图片描述
    可以看到输出结果中有大量的函数调用名,但仅知道这些还不够,还需要进行反汇编

  • 打开反汇编软件IDA Pro Free
    在这里插入图片描述

  • 点击New按钮
    在这里插入图片描述

  • 选择PE Executable,打开桌面上的RaDa_unpacked.exe文件
    在这里插入图片描述

  • 打开后如下图
    在这里插入图片描述

  • 我们重点关注右下角的strings窗口,将该窗口最大化
    在这里插入图片描述
    可以发现在该软件里看到的字符串与命令行窗口里的字符串相同

  • 修改编码格式:在strings窗口中右键,点击Setup,将Unicode勾选上,点击OK完成
    在这里插入图片描述

  • 可以看到字符串发生变化了
    在这里插入图片描述

  • 下拉,在地址JDR0:00402D04处,找到了作者信息
    在这里插入图片描述

  • 与命令RaDa.exe --authors得到的作者信息进行比对
    在这里插入图片描述
    可以发现,该作者信息与命令得到的作者信息一致,作者为Raul Siles & David Perez

2.2 动手实践任务二:分析Crackme程序

  • 在学习通中下载crackme1.execrackme2.exe文件,传入WinXPattacker虚拟机
2.2.1 crackme1.exe
  • 打开命令行窗口,运行crackme1.exe,并依次输入不同的参数,根据输出的结果来猜测程序所需的特定输入
    在这里插入图片描述
    根据返回结果很难看出程序需要什么参数

  • 打开反汇编软件IDA Pro Free,新建一个PE Executable分析界面,对crackme1.exe进行分析
    在这里插入图片描述

  • 打开右下角的strings窗口
    在这里插入图片描述
    可以看到该程序有四种输出语句,而刚才在命令行窗口中只试探出其中的两种,我们还需要找出另外两种输出的特定输入

  • 打开IDA View-A窗口,然后依次点击页面上方的View - Graphs - Function calls查看函数调用图
    在这里插入图片描述
    可以看到输出函数printfsub_401280调用,sub_401280还调用了strcmp函数,应该是用于判断输入与密码是否一致

  • 查看sub_401280代码块
    在这里插入图片描述

  • 依次点击页面上方的View - Graphs - Flow Chart 查看代码流程图
    在这里插入图片描述
    结合之前我们在命令行窗口中做的尝试,根据以上汇编代码我们可以得知:

    • sub_401280先判断输入的参数个数
      • 如果参数个数不为一个,则跳转到false分支,调用fprintf输出I think you are missing something.
      • 如果参数个数为一个,则跳转到true分支
        • 调用strcmp判断输入是否为I know the secret,如果不是则跳转到下一false分支,输出Pardon?What did you say?
        • 如果输入是I know the secret,则跳转到下一true分支,输出You know how to speak to programs,Mr.Reverse—Engineer
  • 验证我们的分析:在命令行窗口中输入crackme1.exe “I know the secret”

注:I know the secret需要加上双引号

在这里插入图片描述
根据输出结果可知验证成功

2.2.2 crackme2.exe

注:分析crackme2.exe的过程与分析crackme1.exe的过程基本一致,下面仅作一些必要的介绍

  • 在命令行窗口观察不同的输入对应输出的区别
    在这里插入图片描述

  • 使用IDA Pro Free打开crackme2.exe,查看Strings窗口
    在这里插入图片描述
    可以看到有五种输出结果

  • 查看函数调用图
    在这里插入图片描述
    可以看到fprintfstrcmp等函数被sub_401280调用

  • 查看代码流程图
    在这里插入图片描述
    结合之前我们在命令行窗口中做的尝试,根据以上汇编代码我们可以得知:

    • sub_401280先判断输入的参数个数
      • 如果参数个数不为一个,则跳转到false分支,调用fprintf输出I think you are missing something.
      • 如果参数个数为一个,则跳转到true分支
        • 调用strcmp判断调用的文件名是否为crackmeplease.exe,如果不是则跳转到下一false分支,输出I hava an identity problem.
        • 如果调用的文件名是crackmeplease.exe,则跳转到下一true分支
          • 调用strcmp判断输入是否为I know the secret,如果不是则跳转到下一false分支,输出Pardon?What did you say?
          • 如果输入是I know the secret,则跳转到下一true分支,输出正确语句
  • 验证我们的分析:将crackme2.exe文件名改为crackmeplease.exe,在命令行窗口中输入crackmeplease.exe “I know the secret”
    在这里插入图片描述
    根据输出结果可知验证成功

2.3 分析实践任务一

  • 输入命令md5sum RaDa.exe获取RaDa.exe文件的MD5值
    在这里插入图片描述
  • 双击运行脱壳后的RaDa_unpacked.exe文件,然后打开监视工具Process Explorer,用于监听RaDa_unpacked.exe
    在这里插入图片描述
  • Process Explorer中打开RaDa_unpacked.exe,点击Strings查看监听到的字符串信息
    • 根据图中信息可知,该程序先访问了http://10.10.10.10/RaDa,请求了RaDa_commands.html页面,进行一些下载和上传的操作
    • 并且还检查了是否在VMware虚拟机环境下,发现不是,开始进行DDoS Smurf攻击
    • 此外,还修改了注册表,通过Wscript.Shell进行操作,将RaDa.exe设为开机自动启动
      在这里插入图片描述
    • 之后还攻击了192.168172.1610三个内网网段
    • 这里还能看到该程序的所有者为Raul Siles & David Perez,于2004年9月编写该程序
      在这里插入图片描述

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

摘要为caaa6985a43225a0b3add54f44a0d4c7

2、找出并解释这个二进制文件的目的;

  • 访问http://10.10.10.10/RaDa,请求该网站上的页面,进行下载和上传的操作
  • 实施DDoS Smurf攻击
  • 修改注册表,将RaDa.exe设为开机自动启动
  • 攻击192.168172.1610三个内网网段

3、识别并说明这个二进制文件所具有的不同特性;

  • 会将文件下载到C盘指定目录
  • 实施DDoS Smurf攻击
  • RaDa.exe设为开机自动启动

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

  • 使用了UPX加壳技术,不先进行脱壳而直接分析的话,会得到许多乱码结果

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

  • 该恶意程序通过修改注册表来实现开机自动运行,通过连接到特定的网站来下载文件,并在系统中留下后门,从而允许攻击者远程控制受影响的主机。此外,该程序实施DDoS攻击,其目的是使主机失去响应。该恶意程序并不通过自我复制来传播,也不伪装成合法程序诱使用户执行,因此它是蠕虫或木马。因此,该恶意软件应被归类为后门程序。

6、给出过去已有的具有相似功能的其他工具;

  • 木马Bobax
  • 特洛伊木马Setiri

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

  • 作者为Raul Siles & David Perez
    • 命令行输入RaDa --authorsRaDa.exe --authors
    • 反编译该脱壳文件RaDa_unpacked.exe
    • 使用监视工具Process Explorer进行监听

2.4 分析实践任务二

  • 在学习通下载botnet_pcap_file.dat文件,传入Kali虚拟机中
  • 右键botnet_pcap_file.dat文件选择使用Wireshark打开,进行分析
    在这里插入图片描述
    可以看到,里面有各种协议的数据包,且ip地址也是多种多样

1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪些消息?IRC一般使用哪些TCP端口?

  • IRC(Internet Relay Chat)是一种主要用于实时文本通信的在线聊天系统,它允许用户在不同的“频道”上进行交流。
  • 当IRC客户端申请加入一个IRC网络时,它会发送一个用户认证消息,通常包括用户的昵称、用户标识和其他可能的认证信息。这个过程遵循IRC协议,客户端会与服务器进行一系列的通信,以完成注册、登录和加入频道等操作。
  • IRC一般使用的TCP端口是6667和6697。端口6667通常用于未加密的IRC通信,而端口6697通常用于TLS/SSL加密的IRC通信,提供更安全的数据传输。

2、僵尸网络是什么?僵尸网络通常用于什么?

  • 僵尸网络(Botnet)是由大量被恶意软件感染并被黑客远程控制的计算机组成的网络。这些计算机被称为“僵尸”,因为它们在不知情的用户控制之外执行黑客的命令。僵尸网络的控制者,即僵尸主控机(Botmaster),可以通过命令与控制(Command and Control,C&C)服务器向bot发布命令,使僵尸网络执行特定的恶意行为。

  • 僵尸网络通常用于以下目的:

    • 分布式拒绝服务攻击(DDoS):通过向目标网站或服务器发送大量请求,使其无法处理合法用户的访问,导致服务不可用。
    • 垃圾邮件发送:利用被感染的计算机发送大量的垃圾邮件,包括诈骗邮件和恶意软件分发。
    • 加密货币挖矿:利用僵尸网络中的计算机进行加密货币挖矿,而不经过设备所有者的同意。
    • 数据盗窃:窃取被感染计算机上的敏感信息,如银行账户密码、信用卡信息等。
    • 勒索软件传播:通过电子邮件附件或其他方式传播勒索软件,要求受害者支付赎金以恢复其数据或设备。
    • 间谍软件活动:监视用户的活动并收集敏感数据,然后将其发送回攻击者。
    • 投票欺诈:在在线投票系统中,使用僵尸网络模拟大量独立用户进行欺诈性投票。

3、蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?

  • 输入ip.src == 172.16.134.191 && tcp.port == 6667筛选数据包
    在这里插入图片描述
    根据筛选后得到的数据包可知,蜜罐主机与IRC服务器209.126.161.2966.33.65.5863.241.174.144217.199.175.10209.196.44.172进行了通信

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

  • 输入命令sudo apt-get install tcpflow 安装tcpflow
    在这里插入图片描述
  • 输入命令sudo tcpflow -r Desktop/botnet_pcap_file.dat "host 209.196.44.172 and port 6667"对样本进行分流
    在这里插入图片描述
  • 分流后得到两个数据文件172.016.134.191.01152-209.196.044.172.06667209.196.044.172.06667-172.016.134.191.01152,以及一份报告report.xml
    在这里插入图片描述
  • 输入以下命令来计算209.196.044.172.06667-172.016.134.191.01152文件中有多少主机访问了209.196.044.172
sudo cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l
# grep 取出昵称
# sed 去除前缀
# tr 将空格转换为新行
# tr -d 去除\r
# grep -v "^$" 去除空行
# sort -u 排序并去重
# wc 计算行数

在这里插入图片描述
结果为:有3461个不同的主机访问了以209.196.44.172为服务器的僵尸网络

5、哪些IP地址被用于攻击蜜罐主机?

  • 输入以下命令找出所有连接蜜罐主机的IP地址,将结果输出到IP.txt文件中,并输入IP地址的个数
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > IP.txt;wc -l IP.txt

在这里插入图片描述
可以看到输出165,表示有165个IP被用于攻击蜜罐主机

  • 打开IP.txt文件即可查看这165个被用于攻击蜜罐主机的IP地址
    在这里插入图片描述

6、攻击者尝试攻击了哪些安全漏洞?

  • 使用Tcpdump工具筛选出蜜罐主机有哪些端口是响应的

    • 输入命令tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq筛选TCP端口
    • 输入命令tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq筛选UDP端口
      在这里插入图片描述
      可以看到相应的TCP端口有135、139、25、445、4899、80,而响应的UDP端口只有137
  • 135端口:在Wireshark中输入tcp.port == 135进行筛选
    在这里插入图片描述
    在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互

  • 139端口:输入tcp.port == 139进行筛选
    在这里插入图片描述
    在筛选后的数据包中有许多TCP、SMB和NBSS类型的数据包,但没有关于攻击或漏洞的信息

  • 25端口:输入tcp.port == 25进行筛选
    在这里插入图片描述
    在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互

  • 445端口:输入tcp.port == 445进行筛选
    在这里插入图片描述
    在筛选后的数据包中发现了可执行文件PSEXESVC.EXE,查阅资料可知这是一种蠕虫病毒的特征码

    • 攻击者拿到ADMIN权限
      在这里插入图片描述
    • 攻击者拿到Administrator权限
      在这里插入图片描述
      攻击者攻击成功,拿到了管理员权限,导致被远程控制
  • 4899端口:输入tcp.port == 4899进行筛选
    在这里插入图片描述
    在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互

  • 80端口:输入tcp.port == 80进行筛选
    在这里插入图片描述
    在筛选后的数据包中发现有一数据包中含有CCCCCCCC...填充数据,这是攻击者在尝试缓冲区溢出攻击

    • 追踪TCP流
      在这里插入图片描述
    • 追踪HTTP流
      在这里插入图片描述
      发现并没有后续,说明攻击者失败了
  • 137端口:输入udp.port == 137进行筛选
    在这里插入图片描述
    在筛选后的数据包中发现只有NBNS包,NBNS是网络基本输入/输出系统(NetBIOS)的一部分,主要负责在基于NetBIOS名称访问的网络上提供主机名和地址映射服务

7、哪些攻击成功了?是如何成功的?

  • 根据刚才第六个问题中的抓包分析可知,只有445端口攻击成功,攻击者通过PSEXESVC.EXE可执行文件,获取了目标主机的管理员权限,从而控制了目标主机

3. 学习中遇到的问题及解决

  • 问题描述:在Kali中安装tcpflow时报错
    在这里插入图片描述
  • 解决方案:发现连接实验室网线时,Kali会提示没有网络,因此将网线拔出,改为连接手机热点

4. 学习感悟、思考等

通过这次实践,我深刻体会到了恶意代码分析和逆向工程的复杂性与重要性。在分析Rada恶意代码样本和Crackme程序的过程中,锻炼了我脱壳、字符串提取、反汇编及逻辑思维的能力;在分析网络数据源的过程中,面对大量的数据,我学会了如何筛选和识别关键信息,通过对数据包的深入分析,我能够理解攻击者的策略和行为模式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue入门到关门之第三方框架elementui

1、什么是ElementUI? Element UI 是一个基于 Vue.js 的组件库,它提供了丰富的 UI 组件和一套完整的解决方案,用于快速构建现代化的 Web 应用程序。Element UI 的目标是帮助开发者快速构建出美观、易用的界面,并提供了丰富的组件&…

四种粒子群算法的Matlab实现

粒子群算法,又称为粒子群优化(Particle Swarm Optimization,简称PSO),是一种基于群体智能的优化算法。它最初由James Kennedy和Russell Eberhart于1995年提出,灵感来源于鸟群捕食行为的研究。在PSO中&#…

R语言实战——中国职工平均工资的变化分析——相关与回归分析

链接: R语言学习—1—将数据框中某一列数据改成行名 R语言学习—2—安德鲁斯曲线分析时间序列数据 R语言学习—3—基本操作 R语言学习—4—数据矩阵及R表示 R语言的学习—5—多元数据直观表示 R语言学习—6—多元相关与回归分析 1、源数据 各行业平均工资变化 各地区平均工资…

list 的模拟实现

目录 1. list 的实现框架 2. push_back 3. 迭代器 4. constructor 4.1. default 4.2. fill 4.3. range 4.4. initializer list 5. insert 6. erase 7. clear 和 destructor 8. copy constructor 9. operator 10. const_iterator 10.1. 普通人的处理方案 10.2. …

运维的边缘计算

运维的边缘计算是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,进行运维管理和服务的计算模式。具体来说,边缘计算在运维领域的应用主要体现在以下几个方面: 超低时延:在传统的云…

数据库复习1

1.试述数据、数据库、数据库管理系统、数据库系统的概念 1.数据(Data): 数据是关于事物的符号表示或描述。它可以是任何事实、观察或者测量的结果,如数字、字符、声音、图像等。数据在没有上下文的情况下可能没有明确的意义。 2.数据库(Database): 数据库是一个持…

Linux——socket编程之tcp通信

前言 前面我们学习socket的udp通信,了解到了socket的概念与udp的实现方法,今天我们来学习一下面向连接的tcp通信。 一、tcp套接字创建 UDP和TCP都是通过套接字(socket)来实现通信的,因此TCP也得使用socket()接口创建…

时间复杂度_空间复杂度

时间复杂度_空间复杂度 1.算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。 时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的…

vue什么是服务端渲染(SSR)

Vue服务端渲染(SSR)在优化SEO方面有着显著的优势,因为它允许搜索引擎直接访问服务器渲染的页面,从而更容易解析页面内容。以下是一些关于如何使用Vue SSR优化SEO的建议: 为每个URL生成静态HTML:Vue SSR允许…

达摩院 2025届暑期实习 大模型算法

文章目录 写在前面一面/技术面 2024/4/7 晚上19:00-20:00二面/技术面 2024/4/23 早上11:15-12:15 写在前面 学校情况:211本中9硕,本硕都是计算机科班,但研究方向并不是NLP,而是图表示学习论文情况:1A(NeurIPS)1B(ICDM…

C#技巧之同步与异步

区别 首先,同步就是程序从上往下顺序执行,要执行完当前流程,才能往下个流程去。 而异步,则是启动当前流程以后,不需要等待流程完成,立刻就去执行下一个流程。 同步示例 创建一个窗体,往窗体里…

面试 Java 基础八股文十问十答第二十八期

面试 Java 基础八股文十问十答第二十八期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)动态代理是什么&am…

2131 - 枚举-练习-涂国旗

2131 - 枚举-练习-涂国旗 c刷题 超能力编程 分析 枚举涂w的底边和涂b的底边即可 剩下的部分都涂r 数据范围这么小,暴力枚举,代码简单难度低。搜索什么的用不着啦! 那么问题来了:怎么枚举呢? 我们只要枚举白与蓝、蓝与红的边界&…

【SQL基础】mysql中如何将日期时间类型转换为日期类型

在MySQL中,将DATETIME类型的数据转换为日期格式可以通过使用DATE()函数来实现。DATE()函数可以从DATETIME或TIMESTAMP类型的值中提取出日期部分。 以下是几种将DATETIME转换为日期格式的示例: 直接转换DATETIME列为日期: SELECT DATE(date…

Containerd方式部署K8s集群

1.1 Kubernetes基础环境部署 kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包 minikube:一个用于快速搭建单节点kubernetes的工具 kubeadm:一个用于快速搭建kubernetes集群的工具 二进制包 :从官网下载…

【DPU系列之】DPU中的ECPF概念是什么?全称是什么?(E CPF对标H CPF;embedded CPU function ownership)

ECPF:embedded CPU function ownership。 嵌入式CPU运转ownership。也叫DPU模式,是DPU工作运转3种模式之一,也是默认的模式。这里的嵌入式CPU指的是DPU上ARM CPU,表示网卡所有资源和功能被embedded CPU全权管理,行使所…

【动态规划】投资问题

本文利用markdown基于https://blog.csdn.net/qq_41926985/article/details/105627049重写,代码部分为本人编辑 代码要求 应用动态规划方法,求解投资问题,实现下面的例子。 #define MAX_N 4 //最大投资项目数目 #define MAX_M 5 //最大投资钱数(万元) /…

【机器视觉】yolo-world-opencvsharp-.net4.8 C# 窗体应用程序

这段代码是基于 OpenCvSharp, OpenVinoSharp 和 .NET Framework 4.8 的 Windows Forms 应用程序。其主要目的是加载和编译机器学习模型,对输入数据进行推理,并显示结果。 下面是该程序的主要功能和方法的详细总结: 初始化 OpenVINO 运行时核心…

基于Pytorch深度学习——卷积神经网络(卷积层/池化层/多输入多输出通道/填充和步幅/)

本文章来源于对李沐动手深度学习代码以及原理的理解,并且由于李沐老师的代码能力很强,以及视频中讲解代码的部分较少,所以这里将代码进行尽量逐行详细解释 并且由于pytorch的语法有些小伙伴可能并不熟悉,所以我们会采用逐行解释小…

【DPU系列之】如何通过带外口登录到DPU上的ARM服务器?(Bluefield2举例)

文章目录 1. 背景说明2. 详细操作步骤2.1 目标拓扑结构2.2 连接DPU带外口网线,并获取IP地址2.3 ssh登录到DPU 3. 进一步看看系统的一些信息3.1 CPU信息:8核A723.2 内存信息 16GB3.3 查看ibdev设备 3.4 使用小工具pcie2netdev查看信息3.5 查看PCIe设备信息…