- 博客(2223)
- 资源 (58)
- 收藏
- 关注
原创 Qt笔记-使用SSH2进行远程连接linux服务器并上传文件
本文介绍了使用C++ Qt框架结合libssh2库实现SFTP文件上传的方法。主要内容包括:1)SSH协议基础概念,说明SFTP是FTP通过SSH加密的安全版本;2)详细开发流程,从初始化libssh2、建立TCP连接、SSH握手认证到SFTP文件传输的完整步骤;3)关键代码实现,展示了Qt程序中如何集成libssh2进行安全文件传输,包括远程目录创建、文件读写等核心功能;4)项目配置说明,包含debug/release模式下的库链接配置。该方案为Qt应用程序提供了安全的文件传输实现参考。
2025-12-29 08:55:07
234
原创 MySQL运维笔记-一种数据定期备份的方法
本文介绍了一个通过crontab定时执行的MySQL数据库备份脚本。该脚本每天凌晨3点运行,使用mysqldump命令备份所有数据库(-A参数),并保留最近3个备份文件。作者分析了脚本中的关键命令:ls -lcrt按变更时间排序,awk提取文件名,head获取最旧备份,wc -l统计文件数。同时指出了两个优化方向:1)添加gzip压缩解决大文件问题;2)设置711权限防止密码泄露。这个脚本实现了基本的自动化备份功能,通过简单的改进可以提升安全性和存储效率。
2025-12-22 10:10:40
412
1
原创 C++使用“长度前缀法”解决TCP“粘包 / 拆包”问题
TCP流式传输会导致数据包边界消失,出现粘包/拆包问题。解决方案是采用"长度前缀法":发送端在每个数据包前添加4字节的长度前缀,接收端先读取长度前缀确定数据包大小,再读取对应长度的数据内容。关键点在于接收端必须确保缓冲区至少有4字节才读取长度前缀,避免读取不完整数据。这种机制能确保正确处理TCP流式数据,防止解析错误或程序崩溃。发送端同样需要先发送数据长度再发送实际内容,保持协议一致性。
2025-12-15 08:49:04
306
1
原创 一种低成本自动化脚本项目的监控方案
本文提出一套轻量化监控解决方案,采用Python+C+++PHP技术栈构建。系统通过Python脚本定时截屏并上传至C++服务端存储,PHP前端展示监控数据,形成完整闭环。方案特色包括:1)30秒高频截屏监控;2)基于MySQL的配置关联;3)RESTful数据传输。运行一月数据量可控,并提出了AI图片比对、日志自动清理等扩展方向。该方案成本低、技术成熟,为业务监控提供了实用范例。
2025-12-08 08:50:36
400
1
原创 一次对SM2加密&签名不唯一特性的研究
SM2签名算法具有"不唯一性"的特点,即对同一数据使用相同私钥会生成不同的签名。通过简化椭圆曲线模型(设n=7,dₐ=2,e=1)分析发现:当随机数k分别取1、2、3时,生成的签名(r,s)分别为(4,0)、(0,3)、(3,6),但验签时都能满足r≡(e+x₁)modn的等式。这是因为签名算法中的随机数k导致每次签名结果不同,但验签时通过公钥Pₐ和签名参数(r,s)能成功验证。这种设计确保了签名安全性,同时验证了不同签名结果的合法性。
2025-12-01 09:48:00
942
原创 痛点暴击型(戳中网络安全焦虑)网络突然断网?ARP 攻击原理 + 实现全揭秘,附 Wireshark 抓包分析别让 ARP 攻击搞崩你的网络!原理、实现步骤 + 防护技巧,一文读懂
本文介绍了ARP断网攻击原理与防护方法。攻击者通过伪造ARP应答包,将网关IP与错误MAC地址绑定,导致受害主机无法正常上网。文章演示了使用Python scapy库实现ARP欺骗攻击的过程,包括构造ARP包、循环发送等关键代码。同时提供了Wireshark抓包分析,展示了攻击包特征。防护方面建议使用安全软件或编写监控程序,检测异常高频ARP包。最后提出思考题:为什么ARP广播包需要指定目标IP地址?全文简明扼要地讲解了ARP攻击的技术细节和防范措施。
2025-11-24 09:34:29
327
原创 内网没版本管理工具?U 盘跑 Git 服务,手把手教你搞定代码管理
文章摘要:为解决公司禁止代码外传的要求,作者利用4TB固态硬盘部署便携式代码管理方案。通过在U盘中安装Gitea静态版(选择SQLite数据库),实现本地Git服务管理。针对U盘盘符不固定的问题,作者采用相对路径配置和编写批处理脚本,动态获取当前路径启动Gitea服务。该方法确保代码安全存储的同时,提供了类似GitHub的便捷操作体验,且能防止误操作导致数据覆盖。解决方案仅需运行指定bat脚本即可正常工作。(149字)
2025-11-17 09:26:01
367
1
原创 Wireshark笔记-DNS流程与数据包解析
摘要:本文通过Wireshark抓包分析DNS解析过程。以查询www.qq.com为例,展示了DNS报文的关键字段:1)查询包包含事务ID、递归请求标志和目标域名;2)响应包返回CNAME记录和最终IP地址(116.128.170.212和58.246.163.58)。分析揭示了DNS层级查询机制和UDP传输特性,同时指出响应段的CNAME和A记录是DNS劫持与负载均衡的关键操作点。文中还对比了IPv4/IPv6的DNS查询差异。(149字)
2025-11-10 13:56:22
734
原创 警惕!ICMP 洪水攻击原来这么好实现?原理拆解 + 抓包分析,看完秒懂攻防逻辑
摘要:本文探讨了ICMP洪水攻击的实现原理与防御方法。攻击通过多线程程序发送大量ICMP请求使目标服务器资源耗尽,导致服务瘫痪。实验在CentOS7环境下验证了攻击效果,并观察到网络延迟显著增加直至服务不可用。防御建议包括关闭ICMP应答或启用防火墙。文章最后提出追踪和反击攻击者的开放性问题,邀请读者参与讨论。整个过程使用Wireshark抓包验证了攻击流量特征。(149字)
2025-11-03 09:49:37
607
原创 OpenSSL3.5.2实现SM3数据摘要生成
本文介绍了使用OpenSSL的EVP接口实现SM3哈希计算的步骤和原理。核心内容包括:1)SM3计算流程分为初始化、配置算法、分块处理数据、生成哈希和释放资源五个步骤;2)EVP_DigestUpdate支持分块处理数据,适用于大文件和流式数据场景;3)SM3算法采用迭代式计算,将输入数据分成512位块进行处理;4)给出了计算字符串和文件SM3哈希的完整代码示例,演示了分块处理大文件的方法。这种设计既满足算法迭代特性,又能高效处理任意大小的输入数据。
2025-10-27 15:36:03
565
原创 揭秘 C++ 二进制文件拼接技术:从原理到实现,一文吃透
本文介绍了一种将文件数据附加到可执行文件末尾的技术实现方案。该方案利用PE/ELF文件格式允许尾部添加数据的特性,通过两个程序协作完成:程序A负责将指定文件内容追加到目标程序B末尾,并在最后8字节写入附加文件大小;程序B运行时通过读取自身末尾8字节获取附加数据大小,再定位读取完整数据。文中提供了基于Qt的完整C++实现代码,包含文件写入和读取逻辑,并提示了Windows/Linux系统下的权限处理注意事项。该技术实现了不影响原程序执行的情况下携带附加数据的功能。
2025-10-24 13:55:05
234
原创 比蹭网更恶心的是 ARP 断网!1 篇搞懂原理,附 Wireshark 分析 + 防护工具和思路
摘要: ARP断网攻击利用ARP协议漏洞,通过伪造网关MAC地址广播包,使受害者将流量导向错误地址导致断网。文章详解攻击原理,演示使用Python+Scapy实施攻击的过程,并通过Wireshark抓包分析攻击特征。防护方案包括使用安全软件(如火绒)或开发监控程序检测异常ARP高频包。文末提出技术思考:为何攻击包需指定目标IP而非全网广播?(150字) 核心要点: ARP欺骗通过伪造网关MAC实现中间人攻击 攻击代码展示高频发送伪造ARP包的方法 Wireshark可识别异常ARP包特征(重复/不匹配MAC
2025-10-20 20:06:47
863
原创 Wireshark笔记-从抓包的角度分析几种客户端不能正常获取IP地址的场景
摘要:主机频繁无法通过DHCP获取IP地址,桌面与网络运维团队互相推诿。解决方案包括:①通过领导协调;②诱导一方承认问题;③自行抓包定位根源。DHCP交互流程分为Discover(客户端广播请求)、Offer(服务器响应)、Request(客户端确认)、Ack(最终确认)四步。抓包分析可精准定位故障环节:无Discover可能为网卡配置问题;无Offer指向服务端异常;无Request需排查客户端设置;无Ack可能因IP冲突或权限限制。建议通过技术手段(如Wireshark抓包)明确责任方,推动问题高效解决
2025-10-13 09:30:25
490
原创 Wireshark 实战:SSH2 握手全流程拆解,从数据包看懂加密协商每一步
文章摘要:本文分析了SSHv2协议握手过程,通过Wireshark抓包工具解析了基于TCP的SSH2库实现细节。关键流程包括:1)TCP三次握手;2)版本协商确定使用SSHv2;3)算法协商合并ACK与加密参数;4)ECDH密钥交换生成会话密钥;5)新密钥通知与用户认证。整个过程采用"版本→算法→密钥交换→认证"的递进式设计,确保安全远程访问,相比SSHv1显著提升了加密强度和协议效率。(150字)
2025-10-06 10:03:10
975
原创 干货!Wireshark 抓包 HTTP MP4 媒体流:从流量捕获到内容解析,新手也能上手
摘要:本文分析了某大厂基于HTTP的视频流媒体传输机制,重点解析了MP4格式的分片传输原理。通过Wireshark抓包发现,HTTP通过Range头实现分块请求,服务器返回206状态码和部分内容。关键点包括:1)分片传输支持断点续传和边播边下;2)MP4文件由ftyp(格式标识)、moov(元数据容器)和mdat(媒体数据)三部分组成,其中前两者是播放必备要素。实验证明导出分片数据可正常播放,验证了HTTP流媒体的实现机制。(149字)
2025-09-28 13:36:39
1041
原创 C++笔记-一种二进制文件拼接技术的实现方式
本文介绍了一种将文件数据附加到可执行文件末尾的技术方法。该方法利用PE/ELF文件格式特性,在不影响程序执行的前提下,通过程序A将指定文件内容附加到程序B末尾,并额外写入8字节的文件大小信息。程序B运行时通过定位自身文件末尾读取附加数据,先获取8字节的文件大小信息,再据此读取相应长度的附加内容。文章提供了完整的Qt实现代码,包括文件写入器和读取器两个程序,并说明了在Windows和Linux系统下的权限注意事项。
2025-09-22 08:38:27
330
1
原创 保姆级 Wireshark 实战:SSH2 握手流程逐包拆解,小白也能看懂核心逻辑
本文介绍了SSHv2协议握手过程的分析。作者通过Wireshark抓包工具,观察到一个文件上传工具中SSH2库的底层通信流程。分析发现SSHv2握手包含以下关键步骤:1)TCP三次握手建立连接;2)版本协商;3)算法协商(合并了ACK和算法表发送);4)ECDH密钥交换生成临时会话密钥;5)新密钥通知;6)用户认证。整个过程采用层层递进的安全机制,通过加密技术确保远程连接的安全性。相比传统协议,SSHv2将多个步骤合并优化,提高了通信效率。
2025-09-16 07:39:00
537
原创 为什么说 FTP 早该淘汰?Wireshark 抓包演示:你的信息正被 “明牌” 传输
本文将带你深入了解FTP协议的基本原理、关键流程以及如何通过Wireshark进行实际抓包分析,帮助你全面掌握文件传输协议的核心知识与实战技能。
2025-09-08 08:47:49
861
原创 C++笔记-调用winsocket发送ICMP
该程序实现了一个基于Windows ICMP API的ping工具,通过IcmpCreateFile、IcmpSendEcho等函数向目标主机发送ICMP请求。程序流程包括:初始化Winsock库、解析目标IP、创建ICMP句柄、循环发送4个请求包(默认1秒间隔)、处理响应并显示往返时间,最后释放资源。核心功能类似系统ping命令,可检测目标主机的可达性和网络延迟,依赖iphlpapi和ws2_32库实现ICMP通信。程序默认测试8.8.8.8的连通性,输出包含数据大小、源地址和响应时间等信息。
2025-09-04 15:35:01
377
1
原创 Wireshark笔记-DHCP两步交互流程与数据解析
摘要:DHCP两步交互是续租时的简化流程,客户端直接发送DHCPRequest(携带曾用IP),服务器验证后回复ACK,跳过发现和提供阶段。关键点包括:1)Request包通过Option50声明历史IP;2)ACK包通过相同事务ID确认分配;3)服务器单播回复(基于客户端MAC地址);4)网络层与链路层分离设计,使无IP客户端能接收ACK。该设计解决了"客户端无IP时如何接收配置"的问题,体现了DHCP协议的巧妙性。(149字)
2025-09-02 11:16:26
593
原创 Wireshark笔记-DHCP流程与数据包解析
文章摘要:本文通过Wireshark抓包分析DHCP协议的四个关键交互过程:Discover、Offer、Request和ACK。作者从大学时期的DHCP基础认知出发,详细记录了2021年备考网络工程师时整理的DHCP工作原理,并最终在2025年完成实践验证。抓包分析验证了DHCP客户端从广播请求到最终获得IP地址的全过程,包括关键字段如MAC地址、TransactionID、Option参数等。特别关注了Windows系统特有的Vendorclassidentifier标识和IP冲突防范机制,完整呈现了D
2025-08-25 13:53:01
1404
2
原创 终于搞懂!HTTP 代理的账号密码校验:软件怎么做 + 流程怎么走 + 原理是什么?
Proxy-Authorization是HTTP代理认证的核心请求头,在代理返回407响应后,客户端通过该头提交认证凭据。Basic认证将"用户名:密码"Base64编码传输,但需配合HTTPS保障安全。关键机制是客户端仅在收到407响应后才发送凭证,不会主动提交。代码示例展示了代理服务器如何通过检查Proxy-Authorization头并返回407实现认证流程。HTTPS代理同样采用该机制,只是增加了SSL加密层保护传输安全。
2025-08-19 14:16:52
616
原创 HTTP 代理服务器的 C++ 实现与分析:客户端通过代理访问 HTTP 站点的主页劫持流程(软件实现+流程演示+原理讲解)
本文介绍了HTTP协议的基本概念,重点演示了HTTP劫持的实现过程。作者使用C++Qt框架开发了一个HTTP代理服务器程序,通过在数据转发过程中修改HTTP响应内容,实现了页面劫持效果。文章分析了HTTP劫持的原理,即利用HTTP明文传输特性进行中间人攻击,并展示了关键代码逻辑:在代理服务器转发请求时注入修改后的数据。同时指出HTTPS劫持虽可能但难度较大,需要破坏证书信任链才能实现。最后提到后续将专门探讨HTTPS劫持的技术细节。
2025-08-16 10:39:15
523
原创 从抓包到理解:Wireshark 带你看透 TCP 三次握手
摘要:本文介绍了TCP三次握手的过程及相关概念。TCB(传输控制块)存储TCP连接的关键信息。三次握手步骤包括:1)客户端发送SYN包(SYN=1,seq=x);2)服务端回复SYN-ACK包(SYN=1,ACK=1,seq=y,ack=x+1);3)客户端发送ACK包(ACK=1,seq=x+1,ack=y+1)。通过Java服务端和C++客户端的实例演示了握手过程,抓包结果显示序列号(Seq)和确认号(Ack)的变化验证了TCP连接的建立机制。
2025-08-04 15:19:32
524
原创 理解Linux文件系统层次结构
Linux文件系统采用单根结构(/)设计,遵循FHS标准。主要目录包括:/bin存放基础命令、/sbin存放系统管理工具、/etc存储配置文件、/home存放用户数据。系统运行时数据存放在/var,临时文件在/tmp,第三方软件在/opt。硬件驱动位于/dev,内核和进程信息在/proc和/sys。理解这种层次结构有助于系统维护、故障排查和安全防护,是Linux用户必备的基础知识。
2025-06-16 08:50:46
1203
原创 Linux笔记-使用SCL离线升级GCC
本文介绍了在CentOS 7系统中通过离线方式升级GCC编译器的详细步骤。主要流程包括:1)在联网机器上修改软件源为阿里云镜像,安装devtoolset-9;2)查询并打包/opt/rh/devtoolset-9目录;3)将压缩包复制到离线机器解压;4)配置.bashrc文件添加环境变量。关键点:需确保机器架构一致,使用scl工具管理多版本,通过修改软件源解决CentOS 7停止维护的问题,最终通过source命令激活新编译器环境。该方法同样适用于其他devtoolset版本的安装。
2025-06-16 08:49:12
408
原创 React笔记-Ant Design X样本间对接智谱AI
本文介绍了如何将AntDesignX样本间对接智谱AI的API接口。主要步骤包括:1)搭建AntDesignX样本间;2)获取智谱AI的API接入信息;3)修改代码中的请求配置,设置基础URL、API密钥和模型参数;4)调整请求处理逻辑,实现流式响应处理和数据拼接。关键点在于正确配置请求参数和实现流式数据的实时更新,最终完成与智谱AI的对接。
2025-05-26 08:42:29
1472
原创 React笔记-使用Ant Design X样板间
该文档记录了在create-react-app中搭建Ant Design X环境的过程。作者虽无系统React经验但成功实现了基本功能。关键步骤包括:使用TypeScript模板创建项目后需手动升级TypeScript到5.0.0以上版本;从官方示例中提取组件代码到App.tsx;最后安装antd、antd-style和react等必要依赖。整个过程注重实用性和快速可运行性,而非深入的技术细节。
2025-05-26 08:40:54
637
原创 Qt笔记-自定义托盘弹出界面
原始的Tray只能有菜单,不能放表格,浏览器等其他东西,不太灵活,需要弹出的界面自定义。弹出的界面就是TrayWidget.ui,在此界面上美化即可。
2025-04-28 13:58:12
532
原创 MySQL笔记-mysql -hlocalhost和mysql -h127.0.0.1的不同
我这边有台Linux的机器,搭建了MySQL,端口号是1万开头(非3306),因业务需求,需要再搭建一台MySQL,端口号为3306的,为了方便,我搭建了一个docker版MySQL,启动时做了HOST,端口是3306。一开始以为是iptables转发是不是有问题,就强制写了一条nat转发127.0.0.1到docker网关的规则,但还是不行。应用程序里面也是如此,当输入的是localhost时,连接到宿主机。时,他连接到宿主机(端口号1万开头的那个mysql了,查日志查到的)有意思的地方来了,当我输入。
2025-04-28 13:55:18
481
原创 Qt6笔记-对Qt6中对CMakeLists.txt的解析
下面对CMakeLists.txt进行次理解。首先,新建Qt Console Application项目。下面对上述内容进行解析,都来自于文档。
2025-04-21 10:09:30
459
原创 Qt6文档阅读笔记-RESTful API Server解析
上例中,route指定GET方法,以JSON数组的形式返回当前提供的页码的数据。其中QHttpServer::route()中使用QHttpServerRequest::Method::Get枚举类型,指明这个route为GET方法。上例中,route接收POST方法,新增一个实例,并且返回新增的实例。此请求必须被认证,认证的token需要放到请求的head中,其中token为调用服务端api/login和api/register返回的数据。上面的代码通过请求中的ID参数,获取list实例中单独的那条。
2025-04-21 10:06:43
710
原创 CMake文档阅读笔记-Simple “Hello World“ Project
首先创建一个main.cpp文件,包含一个main函数,并且创建CMakeLists.txt文件。CMakeLists.txt文件的作用是指导CMake在当前操作系统编译C++程序。① cmake_minimum_required(VERSION 2.4):设置了当前脚本需要的最小的CMake版本。③ add_executable(app main.cpp):结合main.cpp文件构建app程序。② project(hello_word):开始创建一个新的CMake项目。这种方式会使得目录更加的干净。
2025-04-14 08:57:48
280
原创 Qt6文档阅读笔记-Simple Http Server解析
上述代码中,使用addAfterRequestHandler()函数,使得QHttpServer中的QHttpServerResponse对象在route()之后被处理。上面代码展示了,如果在reponse中添加响应头。此例展示了如何使用QHttpServer类建立服务端。服务端通过QTcpServer的bind()函数监听tcp端口,并且使用route()函数增加不同URL的处理。上述代码中,使用QSslConfiguration类为QHttpServer进行HTTPS相关的SSL配置。
2025-04-14 08:53:32
727
原创 50道MySQL面试题(41-50)
ACL(Access Control List)用于控制连续MySQL的对象。ACL存储在内存中,ACL也被称为权限表。当用户提交SQL命令时,会先判断用户是否有其权限,做这件事情。聚蔟索引:找到了索引就找到了需要的数据,那么这个索引就是聚簇索引。非聚蔟索引:索引的存储和数据的存储是分离的,也就是说找到了索引但没找到数据,需要根据索引上的值(主键)再次回表查询,非聚簇索引也叫做辅助索引。
2025-04-07 08:59:23
893
原创 C++笔记-关于LNK2019和LNK2001的解决思路(2024-12-03)
② 写代码应该满足面向对象基本原则,至少要写成高内聚低耦合,一样的功能要抽出来放一起,为什么会出现2个同样的文件名(不在同一目录)并且里面还及其相似。工作这么多年了,还在记录LNK2019和LNK2001这个感觉有点菜了,但这次一定要记录下这个问题,因为感觉很具有代表性。有两个同名的.h文件,不在同一个目录,里面的内容还特别的像,刚好这个项目的include都包含了这2个目录。① include一般是引用第三方库时,才用的,自己include自己,这个感觉太奇怪了。并且调用时,需要using。
2025-04-07 08:56:12
454
原创 uniapp笔记-自定义分类组件
uniapp就是基于vue的开发,构造自定义组件就和vue的自定义一样。再次调整,只需要一行分类,categoryList.slice(0, 4)下面完善下category.vue相关的代码。下面美化,设置一些css。
2025-03-31 08:52:10
697
原创 50道MySQL面试题(31-40)
MySQL中主键可以是一列,也可以是几列的组合,用于对数据进行唯一标识。主键不能为NULL或为空。使用ALTER TABLE语句删除表的主键。heap表通常用存储临时数据。BLOB及TEXT字段不允许存在heap中;对比操作仅允许:=,<,>,=>,=<;heap表不支持AUTO_INCREMENT;heap表中不允许将索引设置为NULL。视图中不包含表格内容,视图仅包含行和列,视图是一个虚表。视图可以连接1张或多张表。如果表的底层发生了改变,视图也会跟着进行变化。
2025-03-31 08:49:02
931
原创 50道MySQL面试题(21-30)
50道MySQL面试题(21-30)MySQL是一个开源的关系型数据库管理系统(RDMS:Relational Database Management System),使用行和列这样的表格存储结构化数据。使用结构化查询语言(SQL:Structured Query Language)进行访问、管理、操作数据库。MySQL最初起源于瑞士的AB公司,随后被Oracle公司收购,现在也是Oracle公司的产品。MySQL以高性能,高可靠性,使用简单著称,是目前最流行的数据库之一。
2025-03-24 08:44:03
1173
Qt+Opencv-PCA人脸识别+视频
2017-05-07
基于RFID门禁系统源码 ,C/C++
2017-09-10
Qt文本转化工具 realase版本
2019-01-19
Qt文件编码转换工具源码
2019-01-19
libX11生成libX11-xcb.so.1
2018-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅