随笔分类 -  《Visual C++ 编程技术实践》

摘要:计算机安全和数据隐私是现代应用程序设计中至关重要的方面。为了确保数据的机密性和完整性,常常需要使用加密和解密算法。C++是一种广泛使用的编程语言,提供了许多加密和解密算法的实现。本文将介绍一些在C++中常用的加密与解密算法,这其中包括Xor异或、BASE64、AES、MD5、SHA256、RSA等。 阅读全文
posted @ 2023-11-26 11:56 lyshark 阅读(2270) 评论(2) 推荐(1) 编辑
摘要:本文介绍了一个基于 C++、SQLite 和 Boost 库的简单交互式数据库操作 Shell。该 Shell 允许用户通过命令行输入执行各种数据库操作,包括添加、删除主机信息,设置主机到特定主机组,以及显示主机和主机组列表。通过调用 SQLite3 库实现数据库连接和操作,以及使用 Boost 库进行字符串解析和格式化。该交互式 Shell 提供了一些基本的命令,使用户能够方便地管理主机信息和组织结构。代码结构清晰,易于理解,可根据需要扩展和定制功能。 阅读全文
posted @ 2023-11-26 10:29 lyshark 阅读(419) 评论(0) 推荐(0) 编辑
摘要:SQLite,作为一款嵌入式关系型数据库管理系统,一直以其轻量级、零配置以及跨平台等特性而备受青睐。不同于传统的数据库系统,SQLite是一个库,直接与应用程序一同编译和链接,无需单独的数据库服务器进程,实现了数据库的零配置管理。这种设计理念使得SQLite成为许多嵌入式系统、移动应用和小型项目中的首选数据库引擎。 阅读全文
posted @ 2023-11-25 20:09 lyshark 阅读(823) 评论(0) 推荐(2) 编辑
摘要:Npcap 是一个功能强大的开源网络抓包库,它是 WinPcap 的一个分支,并提供了一些增强和改进。特别适用于在 Windows 环境下进行网络流量捕获和分析。除了支持通常的网络抓包功能外,Npcap 还提供了对数据包的拼合与构造,使其成为实现 UDP 数据包发包的理想选择。本章将通过Npcap库构造一个UDP原始数据包,并实现对特定主机的发包功能,通过本章的学习读者可以掌握如何使用Npcap库伪造特定的数据包格式。 阅读全文
posted @ 2023-11-25 14:04 lyshark 阅读(1214) 评论(0) 推荐(2) 编辑
摘要:Boost库为C++提供了强大的支持,尤其在多线程和网络编程方面。其中,Boost.Asio库是一个基于前摄器设计模式的库,用于实现高并发和网络相关的开发。Boost.Asio核心类是`io_service`,它相当于前摄模式下的`Proactor`角色。所有的IO操作都需要通过`io_service`来实现。在异步模式下,程序除了发起IO操作外,还需要定义一个用于回调的完成处理函数。`io_service`将IO操作交给操作系统执行,但它不同步等待,而是立即返回。调用`io_service`的`run`成员函数可以等待异步操作完成。当异步操作完成时,`io_service`会从操作系统获取结果,再调用相应的处理函数(handler)来处理后续逻辑。 阅读全文
posted @ 2023-11-25 11:37 lyshark 阅读(704) 评论(0) 推荐(0) 编辑
摘要:在 Windows 操作系统中,原生提供了强大的网络编程支持,允许开发者使用 Socket API 进行网络通信,通过 Socket API,开发者可以创建、连接、发送和接收数据,实现网络通信。本文将深入探讨如何通过调用原生网络 API 实现同步远程通信,并介绍了一个交互式 Socket 类的封装,提升了编写交互式服务器的便利性。 阅读全文
posted @ 2023-11-24 15:48 lyshark 阅读(1355) 评论(0) 推荐(0) 编辑
摘要:Boost.Asio 是一个功能强大的 C++ 库,用于异步编程和网络编程,它提供了跨平台的异步 `I/O` 操作。在这篇文章中,我们将深入分析一个使用 `Boost.Asio` 实现的简单端口映射服务器,该服务器能够将本地端口的数据包转发到指定的远程服务器上。端口映射通常用于将一个网络端口上的流量转发到另一个网络端口。这对于实现网络中间人攻击、内网穿透等场景非常有用。我们将使用 `Boost.Asio` 提供的异步操作来实现这个简单而功能强大的端口映射服务器。 阅读全文
posted @ 2023-11-24 14:13 lyshark 阅读(423) 评论(0) 推荐(0) 编辑
摘要:SCM(Service Control Manager)服务管理器是 Windows 操作系统中的一个关键组件,负责管理系统服务的启动、停止和配置。服务是一种在后台运行的应用程序,可以在系统启动时自动启动,也可以由用户或其他应用程序手动启动。本篇文章中,我们将通过使用 Windows 的服务管理器(SCM)提供的API接口,实现一个简单的服务管理组件的编写。 阅读全文
posted @ 2023-11-23 10:10 lyshark 阅读(994) 评论(2) 推荐(4) 编辑
摘要:Windows注册表(Registry)是Windows操作系统中用于存储系统配置信息、用户设置和应用程序数据的一个集中式数据库。它是一个层次结构的数据库,由键(Key)和值(Value)组成,这些键和值被用于存储各种系统和应用程序的配置信息。 阅读全文
posted @ 2023-11-22 20:04 lyshark 阅读(2292) 评论(0) 推荐(0) 编辑
摘要:Zlib是一个开源的数据压缩库,提供了一种通用的数据压缩和解压缩算法。它最初由`Jean-Loup Gailly`和`Mark Adler`开发,旨在成为一个高效、轻量级的压缩库,其被广泛应用于许多领域,包括网络通信、文件压缩、数据库系统等。其压缩算法是基于`DEFLATE`算法,这是一种无损数据压缩算法,通常能够提供相当高的压缩比。在Zlib项目中的`contrib`目录下有一个`minizip`子项目,minizip实际上不是`zlib`库的一部分,而是一个独立的开源库,用于处理ZIP压缩文件格式。它提供了对ZIP文件的创建和解压的简单接口。minizip在很多情况下与`zlib`一起使用,因为ZIP压缩通常使用了`DEFLATE`压缩算法。通过对`minizip`库的二次封装则可实现针对目录的压缩与解压功能。 阅读全文
posted @ 2023-11-22 16:49 lyshark 阅读(1958) 评论(0) 推荐(5) 编辑
摘要:本文介绍了几种常见的排序算法的实现,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序。冒泡排序通过多次遍历数组,比较并交换相邻元素,逐步将较小元素“浮”到数组顶端,时间复杂度为O(n^2)。选择排序通过选择未排序部分的最小元素进行交换,逐步完成整个数组排序,同样具有O(n^2)的时间复杂度。插入排序将数组分为已排序和未排序部分,逐个插入未排序元素到已排序部分的合适位置,时间复杂度为O(n^2)。希尔排序是插入排序的改进版本,通过分组插入排序,最终得到有序数组,时间复杂度在O(n log n)到O(n^2)之间。归并排序采用分治策略,递归拆分和合并数组,时间复杂度始终为O(n log n),但需要额外空间。最后,快速排序通过选择基准值划分数组,并递归排序子数组,平均时间复杂度为O(n log n),但最坏情况下为O(n^2)。这些算法各有特点,适用于不同场景。 阅读全文
posted @ 2023-11-22 13:55 lyshark 阅读(626) 评论(0) 推荐(0) 编辑
摘要:在Windows编程中,经常会遇到需要对数据进行压缩和解压缩的情况,数据压缩是一种常见的优化手段,能够减小数据的存储空间并提高传输效率。Windows提供了这些API函数,本文将深入探讨使用Windows API进行数据压缩与解压缩的过程,主要使用`ntdll.dll`库中的相关函数。 阅读全文
posted @ 2023-11-22 12:37 lyshark 阅读(624) 评论(0) 推荐(0) 编辑
摘要:Web指纹识别是一种通过分析Web应用程序的特征和元数据,以确定应用程序所使用的技术栈和配置的技术。这项技术旨在识别Web服务器、Web应用框架、后端数据库、JavaScript库等组件的版本和配置信息。通过分析HTTP响应头、HTML源代码、JavaScript代码、CSS文件等,可以获取关于Web应用程序的信息。指纹识别在信息搜集、渗透测试、安全审计等方面具有重要作用。有许多开源和商业工具可以用于执行Web指纹识别,例如Wappalyzer、WebScarab、Nmap等。 阅读全文
posted @ 2023-11-21 20:38 lyshark 阅读(831) 评论(0) 推荐(3) 编辑
摘要:LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括HTTP、FTP、SMTP、POP3等协议的功能,使用libcurl可以方便地进行网络数据传输操作,如发送HTTP请求、下载文件、发送电子邮件等。它被广泛应用于各种网络应用开发中,特别是涉及到数据传输的场景。本章将是`《C++ LibCurl 库的使用方法》`的扩展篇,在前一篇文章中我们简单实现了LibCurl对特定页面的访问功能,本文将继续扩展该功能,并以此实现Web隐藏目录扫描功能。 阅读全文
posted @ 2023-11-21 11:26 lyshark 阅读(391) 评论(0) 推荐(0) 编辑
摘要:端口扫描是一种用于识别目标系统上哪些网络端口处于开放、关闭或监听状态的网络活动。在计算机网络中,端口是一个虚拟的通信端点,用于在计算机之间传输数据。每个端口都关联着特定类型的网络服务或应用程序。端口扫描通常是网络管理员、安全专业人员或黑客用来评估网络安全的一种方法。通过扫描目标系统的端口,可以了解系统上哪些服务在运行、哪些端口是开放的,从而评估系统的安全性。 阅读全文
posted @ 2023-11-21 06:35 lyshark 阅读(463) 评论(0) 推荐(0) 编辑
摘要:MAC地址(Media Access Control address),又称为物理地址或硬件地址,是网络适配器(网卡)在制造时被分配的全球唯一的48位地址。这个地址是数据链路层(OSI模型的第二层)的一部分,用于在局域网(LAN)中唯一标识网络设备。获取网卡地址主要用于网络标识和身份验证的目的。MAC地址是一个唯一的硬件地址,通常由网卡的制造商在制造过程中分配。通过获取MAC地址可以判断当前主机的唯一性可以与IP地址绑定并实现网络准入控制。在Windows平台下获取MAC地址的方式有很多,获取MAC地址的常见方式包括使用操作系统提供的网络API(如Windows的GetAdaptersAddresses和GetAdaptersInfo),NetBIOS API,系统命令(如ipconfig /all),ARP缓存表查询,第三方库(如WinPcap或Libpcap),以及在编程语言中使用网络库。 阅读全文
posted @ 2023-11-19 09:27 lyshark 阅读(907) 评论(0) 推荐(0) 编辑
摘要:Windows Management Instrumentation(WMI)是一种用于管理和监视`Windows`操作系统的框架。它为开发人员、系统管理员和自动化工具提供了一种标准的接口,通过这个接口,可以获取有关计算机系统硬件、操作系统和应用程序的信息,以及对系统进行管理和控制的能力。WQL 的语法类似于 SQL(Structured Query Language),使用WQL可以执行各种查询来检索关于计算机系统、硬件、软件和其他管理信息的数据。这些查询可以用于编写脚本、管理任务、监视性能等。为了方便查询获取参数这里提供一个简单的查询工具供大家查询使用,下载后打开,其默认查询的是`Win32_ComputerSystem`也就是系统的基本参数信息; 阅读全文
posted @ 2023-11-18 12:04 lyshark 阅读(1503) 评论(2) 推荐(3) 编辑
摘要:获取硬盘的序列号、型号和固件版本号,此类功能通常用于做硬盘绑定或硬件验证操作,通过使用Windows API的DeviceIoControl函数与物理硬盘驱动程序进行通信,发送ATA命令来获取硬盘的信息。 阅读全文
posted @ 2023-11-16 10:54 lyshark 阅读(1629) 评论(0) 推荐(0) 编辑
摘要:在C++编程中,经常需要迭代一系列数字或其他可迭代对象。通常,这需要编写复杂的循环结构,但有一种精妙的方法可以使这一过程变得更加简单和可读。如果你使用过Python语言那么一定对Range语句非常的数据,我们可以使用C++来实现一个简单的Range封装,如下代码定义了一个名为Range的命名空间,其中包含一个RangeImpl类和相关的函数,用于生成指定范围内的数值序列。这序列生成器支持指定开始值、结束值和可选步长,确保生成的序列满足指定的条件。此代码简化了迭代数值序列的过程,提高了代码的可读性和可维护性,适用于处理不同数据类型的序列。 阅读全文
posted @ 2023-11-03 19:17 lyshark 阅读(526) 评论(0) 推荐(0) 编辑
摘要:Boost ASIO(Asynchronous I/O)是一个用于异步I/O操作的C++库,该框架提供了一种方便的方式来处理网络通信、多线程编程和异步操作。特别适用于网络应用程序的开发,从基本的网络通信到复杂的异步操作,如远程控制程序、高并发服务器等都可以使用该框架。该框架的优势在于其允许处理多个并发连接,而不必创建一个线程来管理每个连接。最重要的是ASIO是一个跨平台库,可以运行在任何支持C++的平台下。本章笔者将介绍如何通过ASIO框架实现一个简单的异步网络套接字应用程序,该程序支持对Socket套接字的存储,默认将套接字放入到一个Map容器内,当需要使用时只需要将套接字在容器内取出并实现通信,客户端下线时则自动从Map容器内移除,通过对本章知识的学习读者可以很容易的构建一个跨平台的简单远控功能。 阅读全文
posted @ 2023-08-29 17:19 lyshark 阅读(929) 评论(0) 推荐(0) 编辑


8951714 | 6896846
博客园 - 开发者的网上家园

点击右上角即可分享
微信分享提示