首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ping 实现设计---ICMP

发送ICMP报文时,必须程序自己计算校验和,将它填入ICMP头部对应域中。...校验和计算方法:   将数据以字为单位累加到一个双字中,如果数据长度为奇数,最后一个字节将被扩展到字,累加结果是一个双字,最后将这个双字高16位,低16位相加后取反,便得到了校验和。...下面是checksum计算校验和代码: USHORT checksum(USHORT* buff, int size) { unsigned long cksum = 0; while...下面是Ping执行步骤: 1 创建协议类型为IPPROTO_ICMP原始套接字 2 创建并初始化ICMP封包 3 调用sendto函数向远程主机发送ICMP请求 4 调用recvfrom函数接收ICMP...short icmp_checksum; // 校验和 // 下面是回显头 unsigned short icmp_id; // 用来惟一标识此请求ID号,通常设置为进程

1.3K70

如何实现支持NATICMP隧道

,超时之后即便接收到了PONG包也不会转发给内部机器在部分对安全性要求更高场景下,还会有以下一些限制:PING包与PONG包长度必须一致更短超时时间(秒级)因此,ICMP隧道没法实现完美的双向通信,...0x02 实现ICMP隧道一些关键点连接管理ICMP协议与UDP协议类似,是不保证可靠传输,需要上层逻辑进行连接管理。...如果这两个包时间非常接近,则前面发送包其实是没有必要。可以通过延时确认机制,保证在这种情况下不会产生多余数据包。其实现原理基本与TCP延时确认机制是一致。...包如果客户端连续30秒都没有收到对方发送过来数据包,则认为连接已断开;服务端也是类似的逻辑可以看出,这里基本实现了类似TCP逻辑,只是实现上简化了很多;并针对ICMP穿越NAT特点做了适配。...ID0x04 总结详细实现代码可以看:https://github.com/drunkdream/turbo-tunnel/blob/master/turbo_tunnel/icmp.py。

78730
您找到你想要的搜索结果了吗?
是的
没有找到

Libnet实现ICMP SMURF攻击

完整代码在文末 什么是ICMP SMURF攻击 ICMP SMURF攻击是一种DDoS攻击,利用了Internet Control Message Protocol (ICMP) 功能和网络特性,目的是通过大量伪造...开发者可以使用Libnet库将构建好数据包发送到网络中目标主机,或者将数据包注入到本地网络设备上。这使得开发者能够直接与网络进行交互,并实现各种网络应用和工具。...此外,Libnet库还提供了对数据链路层(如以太网帧)访问,使得开发者能够更底层地操作网络数据。 跨平台支持:Libnet库可在多个操作系统和平台上使用,包括Linux、Unix、Windows等。...这使得开发者能够在不同环境中进行网络编程,并实现跨平台网络应用程序。...下载libnet sudo apt install libnet-dev 在C语言中使用libnet #include Libnet实现ICMP SMURF攻击 初始化Libnet

23920

Linux编程之ICMP洪水攻击

上一篇文章《Linux编程之PING实现》里使用ICMP协议实现了PING程序,ICMP除了实现这么一个PING程序,还有哪些不为人知或者好玩用途?...要实现ICMP洪水攻击,需要以下三项知识储备: DOS攻击原理 ICMP深入理解 原始套接字编程技巧 一、ICMP洪水攻击原理 ICMP洪水攻击是在ping基础上形成,但是ping程序很少能造成目的及宕机问题...,这是因为ping发送包速率太慢了,像我实现PING程序里ping包发送速率限定在1秒1发,这个速率目的主机处理ping包还是绰绰有余。...二、ICMP洪水攻击程序设计 这里我想实现一个ICMP洪水攻击例子,这里我想采用方式二来进行设计。...虽说方式三“借刀杀人”更为巧妙,其实也是由方式二伪装方式进一步延伸实现起来也是大同小异。 首先给出攻击模型图: ?

2.1K21

ICMP timestamp 协议原理和实现

发起同步设备产生一个时间戳,然后利用ICMP消息体和协议规则,将时间戳发送给接收设备,这就是一个timestamp request消息。...我们看看timestamp消息结构: ? 它其实是我们上次实现ping应用翻版,只不过多加了几个数据项。...我们看看消息组成数据格式: ? 在实践上,即使有这样协议,不同设备之间同频依然难以实现。...因为ICMP基于IP之上,而IP协议本质上是不可靠,因此发出去消息很可能会遗失,抵达不了目的设备,因此如此简单交换两个设备时间戳根本保障不了不同设备之间同步,于是有更强大协议用于保障时间同步...由于该协议与前面我们实现ping协议非常相近,因此我们可以在上一节基础上进行修改就可以完成。

2.5K10

Linux C++ 实现一个简易版ping (也就是ICMP协议)

背景: 想实现一个在没外网时候就自动重启路由器功能。 又不想用ping命令,因为在代码里调用system("ping"); 可能会比较耗时,得单开线程。于是找了个实现ICMP协议代码。...icmp*)sendpacket; icmp->icmp_type=ICMP_ECHO; //回显请求 icmp->icmp_code=0; icmp->icmp_cksum...->icmp_id:%d\n",ips,icmp->icmp_type,icmp->icmp_id); // 判断Ping回复包状态 if (icmp->icmp_type...\n"); } return 0; } 实际效果: 补充说明: 0)直接用参考链接上代码时编译不过,不知道是不是因为我用是cpp,没太深究。...1)实际使用时候需要加上sudo,不然在创建套接字那个地方会报错。我还没想好怎么在代码里用sudo,(因为实际项目运行起来是不需要加sudo)。

1.6K20

ICMP报文详解之ping实现「建议收藏」

ping命令底层使用ICMPICMP报文封装在ip包里。它是一个对IP协议补充协议,允许主机或路由器报告差错情况和异常状况。 ICMP报文格式和各个字段含义 ICMP报文由首部和数据段组成。...回送请求具体报文: 回送应答具体报文: ICMP报头格式: ICMP报文包含在IP数据报中,IP报头在ICMP报文最前面。...更多说明可以参考:https://tools.ietf.org/html/rfc792 ping程序实现 ping程序使用ICMP协议强制回显请求数据报以使主机或网关发送一份 ICMP 回显应答。...= 0) { sum = (sum & 0xffff) + (sum >> 16); } return (uint16_t)~sum; } 有效校验和实现对于良好性能至关重要...写这篇文章主要目标是熟悉原始套接字编程基本流程,理解ping程序实现机制,理解ICMP协议。

1.4K20

ICMP 是干啥用

ICMP 是干啥用 它到底是用来干啥呢?为啥叫控制报文协议,控制是什么? ICMP 分为查询报文和差错报文两大类。...ICMP 协议说明 虽然工作在网络层,看上去和 IP 协议是并列,但是 ICMP 报文要附加 IP 头,一般被 IP 层或者更高层协议(例如TCP或UDP)使用。...下面这张图是 ICMP 分类,包括查询报文和差错报文,需要原始 Excel 同学可以回复 ICMP获取源文件。...查询报文 将 ICMP 用作查询报文场景比较少,用作查询报文意思就像是使用 ARP 协议或者 TCP 协议这种,是我们主动发起,只不过选了 ICMP 协议。...总结 1、 ICMP 在网络层,但要加上 IP 首部; 2、ICMP 分为查询报文和差错报文,主要用到还是差错报文; 3、ICMP 差错报文就好像一个只通知坏消息信息,当数据报在网络中出现问题时候

81720

速读原著-TCPIP(ICMP差错)

第21章 TCP超时与重传 21.10 ICMP差错 让我们来看一下 T C P是怎样处理一个给定连接返回 I C M P差错。...当前基于伯克利实现对这些错误处理是: • 一个接收到源站抑制引起拥塞窗口 c w n d被置为1个报文段大小来发起慢启动,但是慢启动门限s s t h re s h没有变化,所以窗口将打开直至它或者开放了所有的通路...当前基于伯克利实现记录发生 I C M P差错,如果连接超时, I C M P差错被转换为一个更合适差错码而不是“连接超时”。...早期B S D实现在任何时候收到一个主机不可达或网络不可达I C M P差错时会不正确放弃连接。...然而,我们所观察到现象是 s o c k程序在最终放弃时打印出来差错信息:“没有到达主机路由”。这与U n i xI C M P主机不可达差错类似(图 6 - 1 2)。

44730

Python3实现ICMP远控后门(上)

本次就以ICMP协议进行分析,并使用Python开发出一个ICMP远控后门,在写这篇文章之前,我感觉大家对ICMP协议肯定不会很了解,因此将ICMP后门实现分成几篇进行讲解,循序渐进。...本篇就讲解一下ICMP协议内容,并使用Python实现一个简单ping。 ? 第一节 ICMP协议是什么鬼? 不知道大家有没有ping过百度,用来测试自己网络是不是畅通,如下图所示。...ping命令使用就是ICMP协议,在ping百度过程中,咱们使用wireshark抓一下包,这样比较直观。...第三节 ping实现 在上面我们简单讲解了ICMP报文格式,接下来我们使用Python3根据报文格式简单实现一下ping功能,主要用到了raw socket技术,即原始套接字,使用struct pack...代码实现如下所示: ?

1.2K30

ICMP报文格式和种类

下面是几种常见ICMP报文: 1.响应请求 我们日常使用最多ping,就是响应请求(Type=8)和应答(Code=0),一台主机向一个节点发送一个Type=8ICMP报文,如果途中没有异常(...例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0ICMP报文,说明这台主机存在,更详细tracert通过计算ICMP报文通过节点来确定主机与目标之间网络距离。...——————————–种类————————————- ICMP报文格式 ICMP虽然是网络层协议,但要将ICMP报文放入IP中发送。...ICMP报文公共头标由1字节类型(type)、1字节 代码(code)和2字节校验和(checksum)组成。 类型域和代码域用来标识各种ICMP报文。...类型域表示ICMP报文类型,目前已定义了14 种,从类型值来看ICMP报文可分为二大类。

1.1K10

网络入侵检测系统之Suricata(十)--ICMP实现详解

,5--ICMP_REDIRECT,11--ICMP_TIME_EXCEEDED,12--ICMP_PARAMETERPROB时,ICMPv4可以内嵌IPv4+UDP/TCP/ICMPv4,来指示导致差错产生原始报文...4--ICMP6_PARAM_PROB时,也可以内嵌IPv6+UDP/TCP/ICMPv6,来指示导致差错产生原始头部信息ICMP攻击ICMPv6 Floodalert icmp any any ->...Smurf ScanSmurf方式把源IP设置为受害者IP,然后向多台服务器发送ICMP报文(通常是ECHO请求),这些接收报文服务器被报文欺骗,向受害者返回ECHO应答(Type=0),导致垃圾阻塞受害者门口...如果目某主机A支持ICMP重定向,那么主机B发一个IMCP重定向给它,以后它发出所有到指定地址报文都会转发主机B,这样B就可以达到窃听目的了或者该主机按照黑客要求来修改路由表。...misc-activity; sid:2100436; rev:7; metadata:created_at 2010_09_23, updated_at 2010_09_23;)Suricata涉及到匹配Optionitype

7210

速读原著-TCPIP(ICMP报文类型)

6.2 ICMP报文类型 各种类型I C M P报文如图6 - 3所示,不同类型由报文中类型字段和代码字段来共同决定。图中最后两列表明 I C M P报文是一份查询报文还是一份差错报文。...当发送一份I C M P差错报文时,报文始终包含 I P首部和产生I C M P差错报文I P数据报前8个字节。...这样,接收 I C M P差错报文模块就会把它与某个特定协议(根据 I P数据报首部中协议字段来判断)和用户进程(根据包含在 I P数据报前8个字节中T C P或U D P报文首部中T C P...下面各种情况都不会导致产生 I C M P差错报文: ICMP差错报文(但是,I C M P查询报文可能会产生I C M P差错报文)。...目的地址是广播地址(见图 3 - 9)或多播地址(D类地址,见图1 - 5)I P数据报。 作为链路层广播数据报。 不是I P分片第一片(将在11 . 5节介绍分片)。

33230

使用ICMP-TransferTools在受限网络环境传输ICMP与Windows主机之间文件

关于ICMP-TransferTools ICMP-TransferTools是一款功能强大文件传输工具,可以帮助广大研究人员在受限网络环境中通过ICMP与Windows主机之间传输文件。...ICMP-TransferTools由四个不同脚本文件组成,即一个Python服务器和针对不同传输方向(下载和上传)PowerShell客户端。...clone https://github.com/icyguider/ICMP-TransferTools.git 工具使用 通过ICMP下载文件 在使用该功能时候,需要用到ICMP-SendFile.py...Python服务器必须要提前运行才可以实现文件下载,脚本使用方法请参见下列帮助信息: usage: ICMP-SendFile.py [-h] [-v] [-b 1000] source destination...Python服务器必须要提前运行才可以实现文件上传,脚本使用方法请参见下列帮助信息: usage: ICMP-ReceiveFile.py [-h] src file ICYGUIDER'S

91020
领券