轩哥代码库
type: channel
link: http://code.chboy.top/
description: 轩哥代码库_Code.CHBOY.Top
items: 学习通屏蔽Console的解决方案
items: labelimg退出重进载入class||labelimg关闭后重新进入w新建标注信息不见||labelimg接着退出前的数据继续标注
items: Linux多功能测速脚本 | Multi-functional speedtest script
items: 宝塔面板Cloudreve+Aria2配置离线下载
items: SCVTC_教务系统系统课程提醒自动化程序
items: git设置代理方法
items: 基于中国铁路12306公布的火车信息等数据进行数据分析与数据可视化
items: 在Windows系统与Linux系统中刷新本地DNS缓存的方法
items: 记一次使用宝塔多用户功能弱密码被SSH爆破导致服务器中招
items: 工业无损检测 _ 使用教程

学习通屏蔽Console的解决方案
type: item
date: 2025-04-10T12:52:30+08:00
description: 最近研究学习通逆向的时候，发现学习通做了无限debugger()措施，通过跟战分析，发现具体的导致无限debugger()的JS文件位于"a\mooc1.chaoxing.com\ananas\space\exam\jsenc_js_work.js"的532行附近。注释掉相应的代码即可，最后慢慢分析！var _0x2360 = ['\x65\x4d\x4b\x57\x4c\x38\x4b\x4c\x77\x34\x6e\x44\x67\x41\x55\x3d', '\x77\x71\x78\x55\x63\x43\x4c\x43\x68\x77\x3d\x3d', '\x77\x70\x72\x43\x6e\x31\x62\x43\x67\x7a\x55\x3d', '\x66\x77\x70\x4e', '\x56\x73\x4f\x2b\x49\x6c\x38\x3d', '\x77\x37\x77\x66\x5a\x63\x4f\x75\x77\x34\x4d\x3d', '\x58\x38\x4b\x79\x45\x63\x4b\x7a\x77\x70\x34\x3d', '\x77\x37\x55\x36\x77\x72\x2f\x43\x67\x41\x6b\x3d', '\x77\x36\x49\x6e\x77\x72\x44\x43\x6b\x41\x4e\x39\x51\x67\x3d\x3d', '\x4d\x38\x4b\x30\x77\x37\x73\x3d', '\x77\x35\x42\x75\x77\x70\x4c\x44\x76\x51\x3d\x3d', '\x77\x34\x67\x6b\x50\x73\x4b\x77\x4d\x4d\x4f\x46\x59\x51\x3d\x3d', '\x42\x38\x4b\x4b\x44\x4d\x4f\x63\x77\x6f\x51\x3d', '\x77\x70\x51\x50\x77\x37\x6e\x43\x75\x38\x4b\x56\x77\x36\x49\x4d', '\x77\x37\x67\x75\x77\x6f\x78\x64\x44\x44\x48\x44\x6b\x41\x3d\x3d', '\x41\x55\x34\x51\x57\x68\x62\x44\x73\x41\x67\x74\x59\x51\x3d\x3d', '\x41\x4d\x4b\x41\x41\x4d\x4f\x61\x77\x6f\x77\x38\x66\x67\x3d\x3d', '\x77\x6f\x62\x44\x6d\x63\x4f\x78\x77\x6f\x35\x6b', '\x77\x71\x63\x6e\x4e\x52\x6a\x43\x76\x51\x3d\x3d', '\x77\x72\x4c\x43\x67\x38\x4b\x43\x57\x73\x4b\x75\x4f\x51\x3d\x3d', '\x53\x30\x6a\x43\x6b\x57\x52\x39\x4f\x67\x6a\x44\x68\x68\x33\x43\x75\x38\x4f\x32\x77\x36\x73\x6e\x55\x51\x3d\x3d', '\x4f\x63\x4f\x41\x53\x73\x4f\x78\x77\x37\x72\x44\x6c\x67\x3d\x3d', '\x5a\x51\x52\x47\x62\x38\x4f\x43', '\x42\x4d\x4b\x4b\x47\x73\x4f\x73\x77\x6f\x38\x31\x64\x67\x50\x43\x6b\x73\x4f\x51\x50\x67\x54\x43\x72\x38\x4b\x45', '\x45\x31\x6b\x42\x56\x44\x54\x44\x6f\x51\x30\x6a\x65\x7a\x4d\x5a\x50\x73\x4f\x6b\x77\x36\x34\x3d', '\x77\x35\x30\x71\x50\x4d\x4b\x32\x4f\x67\x3d\x3d', '\x44\x63\x4f\x2b\x61\x38\x4b\x4f\x77\x35\x2f\x44\x70\x47\x49\x3d', '\x77\x35\x72\x44\x71\x67\x62\x43\x75\x73\x4f\x39', '\x4d\x47\x70\x72\x77\x35\x74\x42', '\x44\x73\x4b\x77\x50\x32\x33\x44\x6e\x38\x4f\x4d\x77\x35\x50\x43\x6a\x73\x4b\x72\x4f\…

labelimg退出重进载入class||labelimg关闭后重新进入w新建标注信息不见||labelimg接着退出前的数据继续标注
type: item
date: 2025-03-26T10:04:00+08:00
description: 问题如下图如何断点重续打开\venv\Lib\site-packages\labelImg\labelImg.py 文件在labelimg文件1252行 self.default_save_dir = dir_path 下面加入以下代码 if dir_path is not None and len(dir_path) > 1: self.default_save_dir = dir_path # 加入以下代码 files = os.listdir(dir_path) # 判断是否存在名为 class.txt 的文件 if "classes.txt" in files: self.label_hist.clear() # 不清空继续打开其他标注文件不会删除原来的 with open(dir_path + "/classes.txt", 'r') as f: for line in f.readlines(): line = line.strip() if self.label_hist is None: self.label_hist = [line] else: self.label_hist.append(line) 加入后重新按照 Open dir->Change Save Dir顺序打开文件,即可重新读取Change Save Dir下的classes标注信息使用前建议备份一下 目前我用是没啥问题 不知道有啥隐藏bug。os:因为这个问题导致我标了一天的信息全被覆盖了。干!

Linux多功能测速脚本 | Multi-functional speedtest script
type: item
date: 2025-03-10T11:43:02+08:00
description: 多功能测速脚本原文：https://github.com/i-abc/Speedtest兼容 speedtest-cli、bim-core、speedtest-go、librespeed-cli、iperf3。脚本自带丰富的测试项目任君挑选，使用者还能自定义想要的测试项目。目录：👉 效果展示、使用方法、基本功能、进阶功能效果展示大陆三网+教育网 IPv4 多线程测速 (点击展开或收起)✈️ 测试服务器：Azure 东京------------------------ 多功能 自更新 测速脚本 ------------------------ Version : v2023-09-07 Usage : bash <(curl -sL bash.icu/speedtest) GitHub : https://github.com/i-abc/speedtest ------------------------------------------------------------------------ 大陆三网+教育网 IPv4 多线程测速，v2023-09-07 ------------------------------------------------------------------------ 测速节点 下载/Mbps 上传/Mbps 延迟/ms 抖动/ms 最近的测速点 8201.26 Mbps 883.80 Mbps 1.97 ms 0.09 ms 电信 天津 3616.50 Mbps 961.05 Mbps 68.72 ms 0.22 ms 电信 甘肃兰州 13.85 Mbps 759.77 Mbps 63.59 ms 2.06 ms 电信 四川成都 11.87 Mbps 812.11 Mbps 163.53 ms 10.54 ms 电信 安徽合肥 5G 3807.94 Mbps 961.02 Mbps 38.43 ms 0.46 ms 电信 江苏镇江 5G 4863.40 Mbps 960.81 Mbps 36.36 ms 0.60 ms 电信 湖南长沙 5G 2807.66 Mbps 952.72 Mbps 67.41 ms 0.92 ms 电信 江苏连云港 5G 4310.71 Mbps 44.88 Mbps 34.83 ms 0.23 ms 移动 北京 2632.46 Mbps 955.66 Mbps 122.76 ms 0.17 ms 移动 甘肃兰州 6.41 Mbps 932.02 Mbps 136.94 ms 8.23 ms 移动 广东深圳 11.13 Mbps 653.17 Mbps 187.76 ms 154.31 ms 移动 浙江杭州 5G 2894.64 Mbps 705.73 Mbps 85.02 ms 0.12 ms 移动 陕西西安 5G 2685.48 Mbps 957.27 Mbps 133.28 ms 0.30 ms 联通 江苏无锡 3876.50 Mbps 960.85 Mbps 36.55 ms 0.19 ms 联通 四川成都 25.62 Mbps 355.90 Mbps 62.15 ms 0.30 ms 联通 福建福州 5501.38 Mbps 失败 53.53 ms 0.19 ms 联通 辽宁沈阳 2323.80 Mbps 581.46 Mbps 66.04 ms 0.80 ms 联通 海南三亚 4729.78 Mbps 923.30 Mbps 76.86 ms 0.05 ms 联通 湖南长沙 5G 141.74 Mbps 960.81 Mbps 76.18 ms 1.33 ms 联通 河南郑州 5G 39.73 Mbps 960.70 Mbps 51.34 ms 0.29 ms 广电 重庆 1.88 Mbps 23.92 Mbps 87.10 ms 0.45 ms 教育网 江苏苏州 1.07 Mbps 19.53 Mbps 147.53 ms 209.28 ms 教育网 北京 220.15 Mbps 366.71 Mbps 85.82 ms 0.02 ms 教育网 上海 241.95 Mbps 262.00 Mbps 197.73 ms 0.79 ms 教育网 江苏南京 619.21 Mbps 502.79 Mbps 110.64 ms 0.39 ms 教育网 安徽合肥 失败 635.71 Mbps 106.36 ms 1.16 ms ------------------------------------------------------------------------ 当前时间：2023-09-08 09:30:48 CST 北京时间: 2023-09-08…

宝塔面板Cloudreve+Aria2配置离线下载
type: item
date: 2025-02-14T23:08:00+08:00
description: 宝塔面板Cloudreve+Aria2配置离线下载原文链接：https://www.daniao.org/13249.htmlCloudreve安装好后，如果不配置一个离线下载，感觉没有灵魂，这篇文章就来说说宝塔面板安装好Cloudreve后，在安装一个Aria2，这样搭配用来实现离线下载。Aria2 是目前最强大的全能型下载工具，支持各种协议的下载，常用做离线下载的服务端。而Cloudreve网盘系统自带了离线下载功能，所以只需要在安装好Cloudreve的服务器上搭建好Aria2 ，Cloudreve就会启用Aria2离线下载。废话不多说了，围观吧~~~1. 简介项目：https://github.com/P3TERX/aria2.sh2. 准备要启动Aria2的离线下载，你需要在和安装了Cloudreve的同一台服务器上运行启动。宝塔面板安装好Cloudreve安装教程设置存储3. 部署这篇文章主要是配置Aria2的离线下载，具体安装设置Cloudreve不在本教程的讲述的范围内，具体如何安装Cloudreve请看上面贴出的教程链接。Aria2 一键安装，系统要求CentOS 6+ / Debian 6+ / Ubuntu 14.04+，以 Debian 为例子，安装命令如下：为了确保能正常使用，请先安装基础组件wget、curl、ca-certificates，以 Debian/centos为例子：apt install wget curl ca-certificates #debian yum install wget curl ca-certificates #centos下载脚本wget -N git.io/aria2.sh && chmod +x aria2.sh运行脚本./aria2.sh选择你要执行的选项，额，当然是选择安装了。Aria2 一键安装管理脚本 增强版 [v2.7.4] by P3TERX.COM 0. 升级脚本 ——————————————————————— 1. 安装 Aria2 2. 更新 Aria2 3. 卸载 Aria2 ——————————————————————— 4. 启动 Aria2 5. 停止 Aria2 6. 重启 Aria2 ——————————————————————— 7. 修改 配置 8. 查看 配置 9. 查看 日志 10. 清空 日志 ——————————————————————— 11. 手动更新 BT-Tracker 12. 自动更新 BT-Tracker ——————————————————————— Aria2 状态: 已安装| 已启动 自动更新 BT-Tracker: 已开启 请输入数字 [0-12]:安装完成后，Aria2 一键安装管理脚本会显示你的配置信息，把这些信息记下来。4. 简单使用Aria2 默认已经自带了Aria2NG了，打开：http://ariang.js.org/#xxxx那一串地址，就可以进入Aria2 离线下载界面了。注意，如果显示一直不能连接，在宝塔安全放行6800端口，就可以成功了连接~可以添加一个下载任务，就能看到Aria2 离线下载进度了。Aria2 离线下载最大的速度取决你的VPS主机的带宽，主机商不会让你长期占满带宽。所以buyvm，contabo这些大硬盘主机上的货源开始紧俏了。Aria2 基本操作命令启动：/etc/init.d/aria2 start|service aria2 start 停止：/etc/init.d/aria2 stop|service aria2 stop 重启：/etc/init.d/aria2 restart|service aria2 restart 查看状态：/etc/init.d/aria2 status|service aria2 status 配置文件路径：/root/.aria2c/aria2.conf（配置文件有中文注释，若语言设置有问题会导致中文乱码） 默认下载目录：/root/downloads RPC 密钥：随机生成，可使用选项7. 修改 配置文件自定义5. Cloudreve离线下载配置本文的重点来了，就是配置Cloudreve离线下载配置。还没有搭建的童鞋，参考上文搭建和配置。进入到Cloudreve网盘系统离线下载参数配置当中，直接开始配置吧。将Aria2 一键安装管理脚本生成的配置信息填写进去，填写好后，测试下链接，一般都是没有问题的。如下图：注意：RPC 服务器地址，Aria2 RPC 服务器的地址，一般可填写为http://127.0.0.1:6800/。其中6800为上文 Aria2 配置文件中指定的监听端口。您可以使用 WebSocket 通信，此处…

SCVTC_教务系统系统课程提醒自动化程序
type: item
date: 2025-02-05T21:31:00+08:00
description: 本项目已上传至GitHub，详见：GitHub下文摘自README：SCVTC_教务系统课程提醒自动化程序项目简介本项目基于python自动化程序实现SCVTC_教务系统的课程提醒功能，帮助学生及时了解课程安排，避免错过重要的课程信息。该程序通过抓取教务系统的课程表数据并进行处理，在设置的规定时间自动发送课程提醒通知。此项目配合青龙面板一起使用更搭哦~功能特点自动从SCVTC学院的教务系统中抓取课程表数据。根据设定的提醒时间，自动从钉钉发送课程提醒通知。支持自定义提醒时间和上课时间。简单易用，已经将需要自己设置的参数内容提取了出来，傻瓜式配置即可。技术栈Python(100%)劝退警告本脚本使用Python获取课程表信息，并且在上课前30分钟通过钉钉发信提醒用户。故需要配置钉钉发信参数，如果不愿意配置，则此项目可能不适合你。如果你不想折腾，可能这个项目也不适合你，但你若有问题欢迎提出issue，我也会尽力帮助你，但请遵循《提问的智慧 - How To Ask Questions The Smart Way》。如果你也是川教的学生，那么你可以完全不用改任何的代码，直接部署之后填入相应的配置参数，即可使用。安装与使用创建钉钉机器人首先，需要在钉钉OA平台创建企业/组织，再到钉钉开发平台选择刚才创建的企业/组织，之后创建应用并创建机器人。在钉钉开放平台获取下述相应参数，并把相应参数填入/dingMsg.py中。ding_sdk_config_appKey = "" ding_sdk_config_appSecret = "" ding_sdk_config_openConversationId = "" ding_sdk_config_robotCode = ""配置教务系统参数配置教务系统的登录网址、登录名、密码，以获取课程表信息。Ps:教务系统默认封了国外IP，如果需要将自动化程序部署在国外服务器，需自行在国内服务器中部署反向代理，否则教务系统无法连接！把相应参数填入/config.py中。web_system_url = '' # 教务系统的 url 访问链接 web_system_login_username = '' # 教务系统欲登录的 用户名 web_system_login_password = '' # 教务系统欲登录中的 密码环境要求Python 3.1及以上版本相关Python库：requests, json, datetime部署步骤(二选一)克隆项目到本地：git clone https://github.com/chboy666/SCVTC_ClassReminder.git在Releases中下载成品代码：截止撰稿前，最近一次更新版本是250204，若发现有最新版请自行更改下述链接。https://github.com/chboy666/SCVTC_ClassReminder/releases/tag/250204程序构造程序提供了两个python文件，分别为/main.py、/cron.py。Main.py：主函数，负责当天课程表的数据爬取，并把爬取的数据写入到项目主路径下。cron.py：Cron（定时任务）函数，负责消息推送。读入主函数爬取的数据，并检测当前的运行时间是否在上课前30分钟的阈值内，如果在，则推送消息。一般主函数在每天的凌晨执行一次（具体时间可自定义，尽量在每天上课之前执行），以获取当天课程表的数据。Crontab我设置的是0 3 * * *一般Cron（定时任务）函数每分钟执行一次，Crontab请设置（务必设置）* * * * *若搭配青龙面板，请也遵循上述规则添加上述两个自动化任务。本项目会在系统中写入、修改文件，故请确保本项目在系统中权限为：755异常容错机制程序内已做好异常容错机制，程序会尝试在发信推送前的2分钟进行第一次发信，如果第一次发信成功，则直接跳过第二次发信。如果第一次发信失败，则会在发信推送前的1分钟进行第二次发信。在每次发信成功后，程序会自动锁定当前课程的消息提醒，确保不会造成重复发信。一般情况下，99.9%的几率第一次发信即直接成功，所以在消息推送时，总是在消息推送的前2分钟提前收到消息推送这是正常现象。

git设置代理方法
type: item
date: 2025-02-05T20:58:09+08:00
description: 有时候想使用git将项目上传至github，但是由于国内环境无法访问github，所以我们就需要设置代理IP。下面是设置代理IP的方法，在git命令行中，设置：git config --global -l git config --global http.proxy 127.0.0.1:10808 git config --global https.proxy 127.0.0.1:10808

基于中国铁路12306公布的火车信息等数据进行数据分析与数据可视化
type: item
date: 2024-12-19T16:18:11+08:00
description: 项目概要项目名称基于中国铁路12306公布的火车信息等数据进行数据分析与数据可视化项目背景随着中国经济的持续发展和城市化进程的加速，人口流动日益频繁，铁路运输作为中国最重要的公共交通方式之一，承载了巨大的客运量。本项目旨在利用中国铁路12306公布的火车票价格等公开数据，通过数据分析与可视化技术，探索票价趋势、出行模式，提供直观的数据洞察，辅助决策优化和服务提升。分析范围本项目主要分析中国铁路12306公布的较为繁忙的铁路线路的火车车次、火车类型、火车出发时刻/到站时刻、火车始发站/终点站、火车票价等进行数学分析和数据可视化。实现思路[!NOTE]为确保项目实现过程与课程教学内容紧密对应，本项目将依据课程中讲授的知识点逐步实现相应功能。尽管实现方法可能非最高效途径，但旨在强化理论与实践的结合，确保学习效果。编写开发文档一个好的项目避免不了需要一个好的开发文档，为了实现此项目，特编写了这篇开发文档，因为了保持和课程教学内容紧密对应，本篇文档将采用MarkDown编写。数据采集本次选取了piao.gaotie.cn网站进行火车数据的数据采集，并加入了代理IP进行高效爬取，谨防出现IP被封禁等情况。为了更好的实现数据采集的功能，我将数据采集(GetData)与代理(Proxy)制作成了两个软件包，供主函数调用。为了更高效的使用IP代理，减少数据采集带来的麻烦。我将代理IP的软件包制作成了一个Class(类)对象，进行代理调度让采集更高效，以更好的实现数据采集。通过上述步骤，将采集好的数据通过Python中的List(列表)特有的数据类型返回给主函数进行调用。[!WARNING]本项目侧重点为数据分析与可视化，故数据采集的具体实现方法与过程将不再过多讲述，详情可查看源代码。数据写入与保存将数据采集返回的数据保存到运行目录下的/data文件夹下（在保存前，应先判断此路径是否存在，如不存在应先创建），将为每一条火车线路单独创建一个csv文件，实现数据的分别保存。 # 获取火车数据并写入csv文件，准备数据处理 # 注意：如是火车，则动车组二等座的价格为硬座价格。 # TODO 数据获取与写入 # START------------------------------------------------ data, city = GetData_Package.get_data() # 获取数据的函数 for index, item in enumerate(data): #循环取值 city_from = city[index]["from"][0] #获取火车的出发地 city_to = city[index]["to"][0] #获取火车的目的地 with open(r"data/" + city_from + "-" + city_to + ".csv", "w", newline="", encoding="gbk") as files: #创建文件对象 writer = csv.writer(files) # 创建csv对象 writer.writerow( ['车次', '空白值1', '类型', '出发站', '空白值2', '到达站', '出发时间', '到达时间', '运行时长', '动车组票价', '火车组票价', '空白值3']) # 在数据爬取中，有空白列，在后续处理 writer.writerows(item) # 写入数据 # END------------------------------------------------[!CAUTION]至此，数据采集与文件写入已完成，下面将开始进行数据分析。数据分析前提条件：读入csv文件进行数据分析的前提需要读入csv文件，在csv文件中进行分析。因本项目中，将每一条火车线路都单独创建了一个csv文件，所以在读入时，我采用了循环读入文件。 data, city = GetData_Package.get_data() # 获取采集后的数据 for index, item in enumerate(data): city_from = city[index]["from"][0] #获取火车的出发地 city_to = city[index]["to"][0] #获取火车的目的地 file_path = f"data/{city_from}-{city_to}.csv" # 读取CSV文件到 DataFrame df = pd.read_csv(file_path, encoding='gbk', na_values=' - ') # 后续数据分析的代码都在此循环内依次进行数据分析_第一步：空白列删除（缺失值处理）因数据采集后的数据有多余无意义的数据，为了保证数据分…

在Windows系统与Linux系统中刷新本地DNS缓存的方法
type: item
date: 2024-12-15T19:49:18+08:00
description: 在不同的操作系统平台上，刷新本地DNS缓存的命令有所不同。1. Windows 平台在 Windows 操作系统中，刷新 DNS 缓存通常使用 ipconfig 命令。步骤：打开命令提示符：点击 开始菜单，然后搜索并选择 命令提示符（Command Prompt），或者按下 Win + R 键，输入 cmd，然后按 Enter 键。输入刷新 DNS 缓存命令：在命令提示符中输入以下命令并按 Enter 键：ipconfig /flushdns说明：该命令会清除本地 DNS 缓存并强制系统重新解析 DNS 查询。执行后，系统会显示类似以下信息：Windows IP 配置 已成功刷新 DNS 解析缓存。注意事项：需要以管理员权限运行命令提示符才能正常刷新 DNS 缓存。在 开始菜单 中找到 命令提示符，右键选择 以管理员身份运行。2. Linux 平台在 Linux 系统中，刷新 DNS 缓存的命令依赖于你使用的 DNS 缓存服务。常见的 DNS 缓存服务包括 systemd-resolved、dnsmasq 和 nscd。不同的 Linux 发行版和配置可能会有所不同。以下是常见的几种方法：1. 使用 systemd-resolved 服务（适用于 Ubuntu 18.04 及更高版本）如果你的系统使用 systemd 管理 DNS，使用以下命令：sudo systemd-resolve --flush-caches说明：该命令会刷新 systemd-resolved 管理的 DNS 缓存。2. 使用 nscd 服务（适用于一些 Linux 发行版）如果你的系统使用 nscd（名称服务缓存守护进程）来缓存 DNS，可以使用以下命令：sudo /etc/init.d/nscd restart或者：sudo systemctl restart nscd说明：这些命令会重新启动 nscd 服务，清除 DNS 缓存。3. 使用 dnsmasq 服务（适用于某些发行版和配置）如果你的系统使用 dnsmasq 服务来缓存 DNS，可以使用以下命令：sudo systemctl restart dnsmasq说明：此命令会重启 dnsmasq 服务，清除 DNS 缓存。4. 其他方式如果你不确定系统使用的是哪种 DNS 缓存服务，你可以尝试以下命令，这些命令会清除一些常见的 DNS 缓存：sudo service nscd restart或者sudo service dnsmasq restart总结：Windows：使用 ipconfig /flushdns 命令刷新 DNS 缓存。Linux：根据使用的 DNS 缓存服务选择合适的命令：systemd-resolved：sudo systemd-resolve --flush-cachesnscd：sudo systemctl restart nscddnsmasq：sudo systemctl restart dnsmasq通过这些命令，可以解决一些由于 DNS 缓存错误导致的访问问题。

记一次使用宝塔多用户功能弱密码被SSH爆破导致服务器中招
type: item
date: 2024-12-11T13:06:00+08:00
description: 概要宝塔在新版本中上线了多用户功能，满足在多用户的条件下操作宝塔面板，当做虚拟主机使用。在2024年12月10日晚上，我安装了这个功能，因为测试，我创建了一个测试用户，“test”，因为是测试用户密码都是弱密码，我本以为和大多数虚拟主机一样，只是一个登录的字段。万万没想到，宝塔这边直接创建了一个linux账户，因此我服务器被爆破了。排查今天发现这台服务器无法访问了，没有办法只能重启服务器，重启后发现CPU内存等指标全满，首先到SSH执行top查看具体情况，但未见明显异常。但这个情况是肯定不对的，于是避免资源占用，我们先关闭Mysql和Nginx，释放一部分资源，因为在服务器满载的情况下，我们是排查不了任何东西的。释放了部分内存后，我们登录宝塔查看任务管理器查看，发现有部分异常进程，但是结束进程后又会创建新的进程，无解。查看任务管理器详情我仔细查看了任务管理器中进程的创建者，发现有"test"用户创建的，我联想到了昨天晚上执行的多用户的时候。想到办法之后，我们强制删除这个"test"用户，之后查询这个用户创建的文件，一并强制删除，即恢复了。爆破日志回调了服务器日志，看到了这一幕：主机SSH被外部爆破且成功登陆，时间：2024-12-10 22:16:38，攻击IP：139.59.101.197，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-10 22:16:58，攻击IP：139.59.101.197，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-10 22:30:53，攻击IP：134.209.65.140，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-10 22:31:04，攻击IP：134.209.65.140，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 02:55:08，攻击IP：103.248.43.99，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 02:55:49，攻击IP：103.248.43.99，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 03:53:09，攻击IP：116.193.190.174，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 03:54:02，攻击IP：116.193.190.174，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:09:16，攻击IP：209.38.90.61，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:09:34，攻击IP：209.38.90.61，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:32:29，攻击IP：10.0.46.69，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:32:31，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:32:36，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:32:43，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:32:52，攻击IP：10.0.46.69，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:32:53，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:33:00，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:33:08，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:40:22，攻击IP：10.0.46.69，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:41:55，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:46:24，攻击IP：23.224.174.55，登录用户：test 主机SSH被外部爆破且成功登陆，时间：2024-12-11 06:48:30，攻击IP：10.0.46.69，登录用户：test 主机SSH被外部爆破且成功登…

工业无损检测 _ 使用教程
type: item
date: 2024-12-04T13:42:00+08:00
description: 组装硬件将提供的设备进行组装，有相机组件、机械臂组件、传送带组件。其中，机械臂组件还需要与吸盘、夹爪组装。(如果是螺丝检测，则应该组装夹爪；如果是PCB检测，则应该组装吸盘)传送带组件中，还有红外线检测仪器。项目文件螺丝加工件处理数据采集与标注数据采集本项目中，数据采集使用"MAIN_DH.py"文件，直接在终端内执行(执行命令前需要cd至代码主路径下)python3 MAIN_DH.py执行命令后，会打开GUI窗口，如图所示：其中具体功能详情如下：打开相机关闭相机采集图像数据连接机械臂断开机械臂机械臂回零关闭真空发生器显示机械臂现在的笛卡的坐标XYZR的值控制机械臂XY方向运动控制机械臂Z方向与R旋转设置中转点将8现在的坐标值设置到中转点位运动到中转点设置抓取点将8现在的坐标值设置到抓取点位运动到抓取点设置机械臂抓取机械臂在XY方向的偏差显示日志信息选择放置物料的类别开始零件分类开始PCB分类调用执行开始保存设置的点位信息调试完成后勾选记录比赛根据17设置的类别设置对应类别的放置点运动到17选择的点位数据采集后，数据保存到主路径的上一级目录下的"save_image"文件夹下。数据标注此时，应该在项目主目录下新建一个文件夹，然后把"save_image"文件夹下的文件复制到新建的文件夹下。cd进入这个文件夹后，在终端执行：labelimg会打开数据标注工具"labelimg"，如下图所示：打开标注照片的文件夹设置标注完成保存位置（将采集的图片.jpg文件和打完标签的.txt文件保存在一个文件夹里）打完标签完成后可以打开该文件里的classes.txt文件，若里面的东西只有本次打标签的名字，则正确。格式选YOLO可以在 Edit 里面选择"auto save"（自动保存）注意事项：标注PCB缺陷数据集的时候必须标注一个名为PCB的类，为pcb抓取定位位置（没有这个类无法定位抓取）。需要将有问题的PCB板的问题处特别标定。模型训练在数据采集和训练完成后，我们需要训练数据，训练数据的python代码是项目主路径下的"train.py"文件。但是在训练之前，我们需要调整训练参数，具体要调整的内容如下：训练的模型配置文件和标签数据文件：在 train.py的大概430行左右，有下述代码： parser.add_argument('--cfg', type=str, default='models/yolo5s_part.yaml', help='model.yaml path') parser.add_argument('--data', type=str, default=ROOT /'data/part.yaml', help='dataset.yaml path')依次点击上述两个yaml文件，修改nc(标签个数)与name(标签名称)。训练的GPU与训练的轮数、一轮中每秒训练的图片张数：在 train.py的大概440行左右，有下述代码： parser.add_argument('--epochs', type=int, default=1000, help='total training epochs') parser.add_argument('--batch-size', type=int, default=100, help='total batch size for all GPUs, -1 for autobatch')修改第一行的轮数次数，修改第二行的一轮中每秒训练的图片张数（一般为6 or 8）。在 train.py的大概450行左右，有下述代码： parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')修改需要使用的GPU索引，一般填0，即默认使用第一张显卡训练。修改完训练参数后，我们开始训练模型。我们使用终端执行下述命令打开它。python3 train.py然后等待训练的模型完成。会生成best.pt与last.pt文件，路径是在"/runs/train/xxx"(这个路径在训练的python文件中可自定义)。我们把这两个pt文件复制到\my_weights\nut路径下。九点标注运行项目主路径线下的"arm_机械臂手眼标定\MAIN_GUI_daheng.py"文件，进行九点标注，实现九点标注是为了把机械臂与摄像头的点位匹配，已达到获取后续抓取的准确性。开始测试本项目中，数据测试使用"MAIN_DH.py"文件，直接在终端内执行(执行命令前需要cd至代码主路径下)python3 MAIN_DH.py打开GUI页面后，开始测试。PCB板加工件处理数据采集与标注同上文一致。模型训练同上…