- 博客(311)
- 资源 (1)
- 收藏
- 关注
原创 Linux C/C++实现SSL的应用层VPN (MiniVPN)
SSL协议,全称安全套接层(Secure Sockets Layer),是一种广泛应用于互联网的安全协议,主要在两个通信端点之间建立安全连接,以保护数据的传输安全。具体来说,SSL通过使用公钥加密算法实现数据的加密和解密,在客户端和服务器之间建立安全的通信通道。它还使用数字证书来验证通信双方的的身份,一旦身份验证成功,SSL就会使用加密算法对通信数据进行加密,确保数据在传输过程中不被篡改或窃取。VPN是一种可以在公共网络上建立加密通道的技术,通过这种技术可以使远程用户访问公司内部网络资源时,实现安全的连
2023-09-17 22:45:07
323
原创 OSPF链路状态(LS)路由算法(C/C++代码实现)
路由算法主要用于提高网络质量。通过使用该算法,可以确定适合网络的最佳路由。该算法适用于特定的协议。可以使用不同的算法方法来计算路线。根据网络类型及其应用,可以应用每种算法。该算法具有许多特性,如稳定性、正确性、效率、简单性、公平性和鲁棒性。路由算法在连接不同系统以通过网络进行通信方面发挥着重要作用。路由器的主要职责是识别每个设备、其结构、存在和传输数据包。通过使用这些算法,可以在几秒钟内通过网络传输数据,可以安全地传输数据,并可以保持数据的质量。
2023-09-02 23:43:09
89
原创 路由攻击(ospf attack)及C/C++代码实现
开放式最短路径优先(OSPF)是应用最广泛的域内路由协议之一。不幸的是,它有许多严重的安全问题。OSPF上的伪造是可能导致路由循环和黑洞的最关键的漏洞之一。大多数已知的OSPF攻击基于伪造攻击者控制的路由器的链路状态通告(LSA)。如果攻击者控制的路由器地理位置优越。然而,这些攻击只能伪造路由域的拓扑结构;因此它们的效果通常是有的。更多强大的攻击会影响其他未受控制的路由器的LSA攻击者。然而,这些攻击通常会引发“反击”受害者路由器的机制,该机制通告校正LSA攻击的影响是不持久的。
2023-08-27 15:37:30
286
1
原创 密码破解!字典攻击(C/C++代码实现)
字典攻击是一种通过系统地将字典中的每个单词作为密码输入,从而侵入受密码保护的计算机、网络或其他IT资源的方法。字典攻击也可以用于查找解密加密消息或文档所需的密钥。字典攻击之所以有效,是因为许多计算机用户和企业坚持使用普通单词作为密码。这些攻击通常针对使用多字密码的系统不成功,也经常针对由大小写字母和随机组合的数字组成的密码不成功。在密码要求很高的系统中,暴力攻击方法有时是有效的,在这种方法中,字符和空格的每一个可能组合都要测试到一定的最大长度。然而,暴力攻击可能需要很长时间才能产生结果。
2023-08-13 22:52:46
428
原创 将shllcode注入Linux中正在运行的进程(C/C++代码实现)
进程注入是一种在单独的活动进程的地址空间中执行任意代码的方法。在另一个进程的上下文中运行代码可以允许访问该进程的内存、系统/网络资源,以及可能提升的权限。通过进程注入执行也可能逃避安全产品的检测,因为在合法进程下执行是被掩盖的。有许多不同的方法可以将代码注入进程,其中许多方法滥用合法功能。这些实现适用于每个主要的操作系统,但通常是特定于平台的。更复杂的样本可以利用命名管道或其他进程间通信(IPC)机制作为通信信道来执行对分段模块的多个进程注入,并进一步逃避检测。
2023-07-30 23:18:48
153
原创 Linux C/C++实现Socks5代理及Socks5协议抓包分析
套接字安全(SOCKS)是一种类似HTTP/S、TCP等的网络协议,用于促进服务器之间的连接。它使用代理服务器在请求信息的用户和目标服务器之间路由数据包。这种类型的代理服务器是SOCKS代理服务器,可以路由任何程序或协议创建的任何类型的流量。SOCKS有两个版本——SOCKS5和SOCKS4。SOCKS5支持不同的身份验证方法和UDP代理,而SOCKS4则不支持。SOCKS5代理更安全,因为它们提供完整的TCP连接并使用SSH协议和身份验证机制。因此,传输中的每个数据包都经过验证,只有安全的数
2023-07-16 22:49:46
1031
1
原创 DNS-over-HTTPS(DoH)详解与C/C++代码实现
HTTPS上的DNS(DoH)是一种相对较新的协议,通过超文本传输协议安全加密会话传递DNS查询来加密域名系统流量。DoH试图通过隐藏DNS查询来改善在线隐私。 DoH的工作原理与DNS类似,但HTTPS会话保留请求并最大限度地减少查询期间交换的信息。网络浏览器,如Mozilla的Firefox、微软的Edge和谷歌的Chrome,都具有使用加密DoH的功能,目的是提高用户的数据隐私和安全性。
2023-07-02 23:19:43
450
原创 LLDP(链路层发现协议)详解及C/C++代码实现
LLDP(链路层发现协议)是一种IEEE标准协议(IEEE 802.1AB),它定义了封装在以太网帧中的消息,目的是通过默认情况下每30秒从每个端口定期重传一次,为设备提供一种向LAN(局域网)上的其他设备宣布基本设备信息的方式。它是一个类似于CDP(思科发现协议)的标准化协议。它是一个独立于供应商的链路层协议,用于网络拓扑、故障排除和网络管理自动化。
2023-06-24 22:44:37
1051
原创 Linux下C/C++ 多线程SSH扫描与暴力攻击
如果没有SSH,绝大多数网络管理员将无法完成他们的工作。SSH协议取代了Telnet和FTP等不安全的机制,成为远程访问和管理的事实标准。SSH不仅确保了网络和系统之间交换的数据的机密性和完整性,而且还实现了基于公钥的身份验证。但是,SSH的默认安装并不一定安全。而且,如果管理员不遵循最佳实践,SSH可能会使网络容易受到各种攻击。让我们研究一下安全管理员应该在策略和过程中写入的关键SSH最佳实践,以确保其组织的SSH安装是安全的。
2023-06-11 23:12:30
575
原创 SMTP简单邮件传输协议(C/C++ 发送电子邮件)
SMTP是用于通过Internet发送电子邮件的协议。电子邮件客户端(如Microsoft Outlook或macOS Mail应用程序)使用SMTP连接到邮件服务器并发送电子邮件。邮件服务器还使用SMTP将邮件从一个邮件服务器交换到另一个。它不用于从服务器下载电子邮件;相反,IMAP和POP3协议检索邮件。
2023-06-04 15:30:43
1294
原创 Linux下C/C++实现DNS查询(DNS QUERY)
DNS 的全称是 Domain Name System 或者 Domain Name Service,它主要的作用就是将人们所熟悉的网址 (域名) “翻译”成电脑可以理解的 IP 地址,这个过程叫做 DNS 域名解析。域名是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。
2023-05-18 22:42:01
799
原创 Linux下C/C++(端口扫描技术)
端口扫描技术向目标系统的TCP/UDP端口发送探测数据包,记录目标系统的响应,通过分析响应来查看该系统处于监听或运行状态的服务。最后,端口扫描是网络犯罪分子用来识别计算机开放端口的一种方法。计算机利用许多端口来实现其功能和操作。其中包括打开和关闭端口。计算机网络中的开放端口被网络攻击者利用,通过这种机制进入系统进行端口扫描网络犯罪。
2023-05-09 21:46:36
617
1
原创 Linux下C/C++实现(网络流量分析-NTA)
网络流量分析解决方案领先于其他网络安全工具,如入侵检测系统(IDS)、入侵防御系统(IPS)和防火墙。虽然这些工具主要关注网络周边的流量,但网络流量分析分析所有类型的网络通信,包括传统的TCP/IP数据包、云流量、虚拟网络流量以及API和SaaS交互。
2023-04-23 22:33:23
775
原创 Linux下C/C++ SNTP网络时间协议实现
对于许多应用程序,特别是在小型计算机和微控制器上,不需要NTP的最终性能。便开发了简单网络时间协议(SNTP),为功能较弱的计算机提供时钟同步,而这些计算机不需要NTP的复杂性。而简单网络时间协议(SNTP)是一种用于同步计算机网络时钟的互联网协议,是网络时间协议(NTP)的一个子集。与NTP相比,需要更少的内存和处理能力。它用于精确时钟同步不是关键的应用程序。使用TCP/IP协议套件,UDP端口123。
2023-04-16 21:59:19
1049
1
原创 CDP思科发现协议解析及C/C++代码实现
CDP是一种专有的第二层思科网络协议。它是一种网络发现工具,在cisco设备上运行,有助于发现连接到网络的cisco设备。CDP有助于有效地检查设备,而无需实际进行物理检查。CDP允许用户使用一些显示命令来查看连接设备的信息,例如有关本地端口、远程端口、主机名、设备平台等的信息。
2023-04-09 19:51:48
869
1
原创 Linux下C/C++ redis协议(RESP)解析
Redis 基于 RESP (Redis Serialization Protocal)协议来完成客户端和服务端通讯的。RESP 本质是一种文本协议,实现简单、易于解析。底层采用的是TCP的连接方式,通过tcp进行数据传输,然后根据解析规则解析相应信息。
2023-04-03 23:56:14
569
原创 Linux C/C++实现随机密码生成器
当您使用用户名和密码对服务进行身份验证时,强密码非常重要。一个强密码必须至少有14个字符,并有大小写字母和字母等变体。大多数时候,长密码被认为比短密码安全得多,因为它很难获得。下面我们将学习使用Linux命令行创建安全密码的多种方法。我们将研究使用Linux命令行创建更强、更安全的密码的多种不同方法。如果要使用命令行创建强密码,可以使用多种方法和实用程序。我们将讨论其中的许多方法,可以根据需要选择其中一种方法来创建密码。
2023-03-28 22:30:53
281
原创 Linux 下ELF 文件理解及C/C++代码实现
ELF 就是 Executable and Linkable Format,它定义了可重定位文件、可执行文件和 共享目标文件的结构。这种格式能让操作系统正确解释文件中的机器指令。
2023-03-19 21:11:32
650
1
原创 Linux下C/C++ 网络扫描(主机扫描技术)
主机扫描是在可达状态下检测,局域网下的 ARP 扫描和广域网下的 ICMP Echo 扫描、ICMP Sweep 扫描、ICMP Broadcast 扫描、ICMP Non-Echo 扫描都是基本的扫描技术。如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包被对方的设备过滤掉。主机扫描是网络扫描的基础,通过对目标网络中主机IP地址的扫描,从一堆主机中扫描出存活的主机,然后以他们为目标进行后续的攻击。我们只需要对目标主机发送特定的数据包,如果目标主机有回应,那么我们就认为该主机是存活的;
2023-03-09 22:49:20
618
原创 Linux下 C/C++ NTP网络时间协议详解
NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议。它是通过网络在计算机系统之间进行时钟同步的网络协议。NTP 在公共互联网上通常能够保持时间延迟在几十毫秒以内的精度,并在理想条件下,它能在局域网下达到低于一毫秒的延迟精度。它使用用户数据报协议(UDP)在端口 123 上发送和接受时间戳。它是个 C/S 架构的应用程序。
2023-03-01 23:01:54
1128
原创 Linux C/C++ 多线程TCP/UDP服务器 (监控系统状态)
Linux环境中实现并发TCP/IP服务器。多线程在解决方案中提供了并发性。由于并发性,它允许多个客户端同时连接到服务器并与服务器交互。
2023-02-19 22:09:06
1366
1
原创 Linux C/C++ timeout命令实现(运行具有时间限制)
Linux附带了大量命令,每个命令都是唯一的,并在特定情况下使用。Linux timeout命令的一个属性是时间限制。可以为任何命令设置时间限制。如果时间到期,命令将停止执行。
2023-02-12 16:01:44
2110
4
原创 Linux C/C++ fping命令(检查主机是否存在)
fping与ping的完全不同之处在于,您可以在命令行上定义任意数量的主机,或者使用要ping的IP地址或主机列表指定文件。但是今天我们要讲的是fping,因为fping是一个类似ping的程序,它使用Internet控制消息协议(ICMP)回显请求来确定目标主机是否正在响应。fping与ping的不同之处在于,您可以在命令行上指定任意数量的目标,或者指定包含要ping的目标列表的文件。fping不会发送到一个目标直到超时或回复,而是发送一个ping数据包,然后以循环方式转到下一个目标。
2023-02-05 23:21:14
609
原创 Linux下C/C++实现cpustat(测量CPU利用率)
cpustat是一个转储当前运行任务(即进程或内核线程)的CPU利用率的程序。cpustat用于监视系统中长期存在的进程的活动,例如守护进程、内核线程以及典型的用户进程。
2023-01-08 22:58:07
1799
原创 Linux下cal命令C/C++实现(显示日历信息)
在Linux生态系统中,cal代表日历。cal是一个命令行实用程序,用于在Linux终端窗口上显示日历信息。它将有助于打印单月日历、多个或多个月日历以及全年。
2023-01-03 14:47:04
1276
原创 Linux下tree命令C/C++实现(以树状格式列出目录的内容)
在UNIX/LINUX系统中,tree是一个递归目录列表程序,它生成文件的深度缩进列表。在没有参数的情况下,树将列出当前目录中的文件。当给定目录参数时,树依次列出在给定目录中找到的所有文件或目录。列出找到的所有文件和目录后,树将返回列出的文件和目录总数。在没有参数的情况下,树将列出当前目录中的文件。唯一的区别是tree命令以类似树的方式输出文件和目录。注意目录的内容是如何缩进的。列出找到的所有文件/目录后,树将返回列出的文件和/或目录总数。要列出带有完整路径前缀的文件,请在tree命令中使用-f标志。
2022-12-25 21:51:04
800
原创 Linux下C/C++实现类似netstat命令(列出TCP和UDP连接)
网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline等。
2022-12-11 22:07:09
971
原创 Linux中的/proc文件系统详解(C/C++代码实现)
proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。系中当前运行的每一个进程都有对应的一个目录在 proc 下,以进程的 PID 号为目录名,它们是读取进程信息的接口。
2022-12-01 22:23:29
2076
1
原创 Linux下加密库Libsodium 使用实践(ip监听、封装的加密消息、运行系统命令)
Libsodium 是一个用C语言编写的库,是一种新的易于使用的高速软件库,用于网络通信、加密、解密、签名等实现和简化密码学。完成 Libsodium 安装Libsodium 是一个用于加密,解密,数字签名,密码哈希,等的,现代的,易用的密码学库。如果你在环境中没有安装sodium。可以执行如下操作:Libsodium 使用方法在程序中,只需包含头文件 sodium.h 即可。库的名字是 sodium (使用 -lsodium 来链接)。
2022-11-27 16:55:45
1990
原创 Linux下C/C++实现以十六进制的形式显示命令(xxd)
如果你需要在linux文本文件的十六进制转储?且正在寻找可以执行此操作的命令行实用程序,xxd的命令可以为你做这件事。xxd命令将文件显示为十六进制值和ASCII表示,并允许对其进行编辑。
2022-11-20 13:37:17
1682
原创 Linux下C/C++实现进程内存使用分析工具(memstat)
但实际上在物理内存的层面,很多东西是可以共享的,比如共享的代码库(.so)、自身代码甚至是自身运行时私有的堆栈内存。比如libxxx.so这个程序库,有多个进程会用到它,而系统在物理内存只会加载一遍这个代码库,然后这块物理内存会被映射到不同进程的虚拟内存空间中,对于单独的进程来说,就像是这个库只加载在自己的虚拟内存中一样,不需要关心它是否与其它进程共享。而进程的RSS是包含这块共享库的内存空间的,因此如果简单把系统中所有进程的RSS相加的话,结果是比系统总的内存大的,因为共享库占的内存被计算了多遍。
2022-11-09 22:35:33
2451
原创 Linux 中的cut命令详解及C/C++代码实现
基于Linux的操作系统提供了许多命令行文本处理实用程序,您可以在日常工作中使用。cut命令就是这样一个文本操作实用程序,它使用分隔符、字节、字段和列从平面文件数据库或行中获取所需的字符串。
2022-10-30 11:26:32
637
原创 Linux下C/C++数据包嗅探(Sniffer)
一旦处于混杂模式,数据包嗅探器的功能就变成了分离、重组和记录所有通过接口的软件数据包的问题,而不管它们的目的地址如何。先在另一个终端执行写好的my_ping命令,然后在另一个终端运行一个嗅探-伪造程序,当监听到此局域网上有ICMP请求报文,便立即使用伪造技术来进行一个响应,并且伪造的ICMP回复数据包与正确的ICMP回复数据包不应该有过大的区别,使得不易被察觉。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。ICMP协议有一个名为type的字段,表示ICMP数据包的类型。
2022-10-24 21:54:35
1335
原创 Linux 下C/C++实现发送ICMP和ICMPv6(报文分析)
我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算 ICMP报文通过的节点来确定主机与目标之间的网络距离。一种称为Internet控制消息协议(ICMP)的特殊协议与IP结合使用,以提供与IP协议层配置和IP数据包处理相关的诊断和控制信息。许多信息性消息是请求/回复对。
2022-10-13 22:34:18
2132
原创 Linux 中的which命令及C/C++代码实现
Linux which命令允许用户搜索$PATH环境变量中的路径列表,并输出作为参数指定的命令的完整路径。只能查找可执行文件,该命令基本只在$PATH路径中搜索,查找范围最小,查找速度快。但是,同一命令的两个版本可能位于不同的位置,或者两个不同的命令使用相同的名称。如果您想知道指定的程序存储在哪里,那么which命令可以帮助您识别路径,使用起来非常简单。如果您在使用which 命令时卡住了,可以通过显示which 命令的手册从终端获得帮助。常见的选项为-a,它是可选的,用于打印找到的所有匹配项。
2022-10-07 22:55:45
747
原创 Linux C++ 编写插件系统
插件系统只是在指定文件夹中搜索 .so,如果找到,则将内容添加到程序中。当然,因为程序实际上并不知道 .so动态库中的内容,所以通常的方法是让 .so 定义一个集合入口点并调用程序本身定义的函数,然后程序可以使用这些动态库提供的接口功能。我们在放把插件放在指定目录下(plugin),然后应用程序启动时候遍历目录找到插件,实现动态加载插件。将所有插件编译为so文件并放入当前工程目录下的plugin/Debug目录中,启动应用程序,插件自动被加载到程序中.
2022-09-22 23:20:00
700
原创 Linux下uniq命令详解及C/C++代码实现
Linux uniq 命令用于从文件中删除所有重复的行。uniq 命令的一个限制是它只能识别文件中相邻或彼此相邻的重复项。它可以单独使用,但通常与其他命令一起使用,例如识别文件中的冗余信息。首先执行“uniq”命令将仅识别相邻的重复项,然后使用“sort”命令将它们按字母顺序排序。uniq命令用于删除有序文件中的重复行并将结果输出到标准输出。从上面的输出中,命令“sort test1.txt | uniq -c”计算一个单词重复的次数。
2022-09-15 23:17:56
1172
原创 MongoDB数据库协议解析及C/C++代码实现
MongoDB Wire Protocol是一个简单的基于socket,请求/响应方式的协议,客户端使用常规的TCP/IP套接字(socket)进行通信,服务端默认监听端口是 27017。
2022-09-08 23:01:51
2115
原创 Linux whois命令C/C++实现及WHOIS协议抓包分析
WHOIS 客户端向 WHOIS 服务器发出文本请求,然后 WHOIS 服务器回复文本内容。WHOIS 是一种基于 TCP 的面向事务的查询/响应协议,广泛用于向 Internet 用户提供信息服务。当你运行后,其中一个注册机构将处理您的请求并从相应的 whois 记录中向你发送详细信息。whois 是一个有用的 Linux 命令,可让您轻松获取有关域或网站的详细信息。可以在 Linux 中运行此命令来查找有关域的信息。这是获取有关特定域或 IP 地址的信息的一种非常有用的方法。
2022-09-01 22:57:12
965
原创 Linux C/C++下IPv6 socket详解
IPv4 地址的长度为 32 位,而 IPv6 接口由 128 位地址标识。套接字接口使 IP 地址的大小对应用程序非常可见。IPv6 的地址表示法是一组 8 个 4 位十六进制数字,用“:”分隔。 “::” 代表一串 0 位。 特殊地址是 ::1 用于环回。IPv6地址族和协议族IPv4 和 IPv6 共享本地端口空间。当您获得到 IPv6 套接字的 IPv4 连接或数据包时,其源地址将映射到 v6。sin6_family 始终设置为 AF_INET6;用于区分了原始的 sockad
2022-08-25 22:56:04
3943
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人