ICMP后门(上)补充篇

前言

在上一篇文章Python3实现ICMP远控后门(上)中,我简要讲解了ICMP协议,以及实现了一个简单的ping功能,在文章发表之后,后台很多朋友留言,说对校验和的计算不是很了解,实现的ping功能仅实现了发送,接收没有实现,一个完整ping如何实现等等。本来对于ICMP后门写三篇文章的,但是对大家的疑惑临时开辟了一个补充篇,对ICMP协议校验方式,以及实现一个完整功能的ping给大家进行详细的讲解。

第一节 ICMP协议校验和

对于校验和的计算,我对写校验和的代码进行了如下注释,注意看注释就会明白校验的整个流程。

def checksum(packet):

    """

    校验

    """

   #packet为icmp头部和data的字节流,其中icmp校验和字段初始化为0    

    sum =0

   #countTo:记录packet是有多少个16位,因为对每两个字节进行校验

    countTo = (len(packet)//2)*2 

    count =0

    while count <countTo:

        #将每两个字节中的第二个字节作为高位,第一个字节作为低位组成16位的值

        sum += ((packet[count+1] << 8) | packet[count])

        count += 2

    #packet并不一定都是偶数字节,可能是奇数,把最后一个字节加到sum中

    if countTo<len(packet):

        sum += packet[len(packet) - 1]

        sum = sum & 0xffffffff

    #sum中超过16位的高位加到低位

    sum = (sum >> 16)  +  (sum & 0xffff)

    sum = sum + (sum >> 16)

    #对sum取反

    answer = ~sum

    #到这应该就结束了,但是字节序有问题,下面是将主机字节序转为网络字节序

    #即高位转低位,低位转高位

    answer = answer & 0xffff

    answer = answer >> 8 | (answer << 8 & 0xff00)

    return answer

  

第二节 ICMP报文的标识符与序列号

ICMP回送消息(Type = 8),被请求主机回送响应消息(Type = 0),基本格式如下:

回送消息[ECHO]

回送响应消息[ECHO REPLY]

  • Code = 0,

  • CheckSum为校验和,重点注意从ICMP的头部到data结束(即到整个数据包结束)

  • Identifier为标识符,由主机设定,一般设置为进程号,回送响应消息与回送消息中identifier保持一致

  • Sequence Number为序列号,由主机设定,一般设为由0递增的序列,回送响应消息与回送消息中Sequence Number保持一致

  • data为数据,由主机设定,回送响应消息与回送消息中data保持一致

第三节 ping实现

在上篇中,我们讲解了如何发送icmp请求,接下来我们实现如何接受响应,并计算响应时间,效果类似下图:

接收ping响应的代码如下:

ping的超时机制是通过select模型实现的。对于Identifier设置为进程号,如下图所示。

测试ping效果

注意使用管理员权限运行Python脚本,直接ping www.baidu.com

最后

如果觉得本文还可以,一定记得推荐哟。欢迎关注我的公众号。

Python3实现ICMP远控后门(上)_补充篇的更多相关文章

  1. Python3实现ICMP远控后门(上)

    这几天一直在研究远控木马的一些通信协议,比如TCP,UDP,ICMP,DNS,HTTP等等,对于TCP,UDP这两种就不讲解了,因为太常见了. 大家可能对采用ICMP,DNS的木马不是很熟悉,其实这两 ...

  2. Python3实现ICMP远控后门(中)之“嗅探”黑科技

    ICMP后门 前言 第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇 在上两篇文章中,详细讲解了ICMP协议,同时实现了一个具备完整功能的pi ...

  3. Python3实现ICMP远控后门(下)之“Boss”出场

    ICMP后门 前言 第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇 第三篇:Python3实现ICMP远控后门(中)之"嗅探&qu ...

  4. 用nc+简单bat/vbs脚本+winrar制作迷你远控后门

    前言 某大佬某天和我聊起了nc,并且提到了nc正反向shell这个概念. 我对nc之前的了解程度仅局限于:可以侦听TCP/UDP端口,发起对应的连接. 真正的远控还没实践过,所以决定写个小后门试一试. ...

  5. 设计模式之代理模式(Proxy Pattern)_补充篇

    写在前面: 代理模式的内部原理,作用及远程代理的实现在上一篇博文中都做了详细解释,本文只是对其内容的补充,介绍其它代理 一.虚拟代理 首先,明确虚拟代理的作用:在巨大对象被真正创建出来之前,用虚拟代理 ...

  6. 【原创】利用Office宏实现powershell payload远控

    本文将演示使用Veil-Evasion生成远控所需要的payload以及监听器,然后使用MacroShop生成payload 相关的VBA代码,最后演示将VBA代码写入.doc文本文档的宏中. 环境: ...

  7. 2019-9-11:渗透测试,Kill远控软件,初接触

     初步使用Kill远控软件,使win7靶机被远控 该文章仅供学习,利用方法来自网络文章,仅供参考   1,打开运行Kill,选择系统设置,设置监听端口,通讯密码,点击保存设置 2,点击服务生成,上线参 ...

  8. 利用kage把msf变成可视化远控平台

    项目下载https://github.com/WayzDev/Kage/releases 这里用kali系统演示 1,先下载kage: 2,右击给予执行权限 3,启动msf msfconsole -q ...

  9. 使用kali生成远控payload

    kali linux中的metasploit框架是优秀的渗透框架之一,今天记载一下使用kali生成windows远控木马的过程 生成payload使用的工具是MSFVenom,我们输入msfvenom ...

随机推荐

  1. javascript之DOM编程设置节点插入节点

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Android反编译获取资源文件-android学习之旅(69)

    有时候你看到一些很好看的布局,会考虑别人怎么实现的,回想参考一下,那么这时候反编译一下是很必要的. 要用到的工具apktool.bat和aapt.exe和apktool.jar(要最新版本) 下载前两 ...

  3. MPLSVPN 命令集

      载请标明出处:http://blog.csdn.net/sk719887916,作者:skay 读懂下面配置命令需要有一定的TCP/IP,路由协议基础,现在直接上关键VPN命令. router ...

  4. 漫谈程序员(十一)老鸟程序员知道而新手不知道的小技巧之Web 前端篇

    老鸟程序员知道而新手不知道的小技巧 Web 前端篇 常充电!程序员只有一种死法:土死的. 函数不要超过50行. 不要一次性写太多来不及测的代码,而是要写一段调试一段. UI和编码要同步做. 多写注释方 ...

  5. 打包volley

    1.如果电脑没有安装git和ant的话,需要安装git和ant,直接Google就可以,并配置环境变量 2.在命令行执行 git clone https://android.googlesource. ...

  6. Android NDK开发method GetStringUTFChars’could not be resolved

    Android NDK开发method GetStringUTFChars'could not be resolved 图1 最近用到android的ndk,但在eclipse中提示method Ge ...

  7. 四种简单的图像显著性区域特征提取方法-----AC/HC/LC/FT。

    四种简单的图像显著性区域特征提取方法-----> AC/HC/LC/FT. 分类: 图像处理 2014-08-03 12:40 4088人阅读 评论(4) 收藏 举报 salient regio ...

  8. web.xml 详细介绍

    url:http://mianhuaman.iteye.com/blog/1105522#bc2344393 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<l ...

  9. How Tomcat Works读书笔记三-------连接器

    几个概念 HttpServlet,Servlet Servlet是一个接口,定义了一种网络服务,我们所有的servlet都要实现它(或它的子类) HttpServlet是一个抽象类,它针对的就是htt ...

  10. ios的位置和方向(来自苹果官方文档,仅供简单参考)

    取得用户的当前位置 Core Location框架使您可以定位设备的当前位置,并将这个信息应用到程序中.该框架利用设备内置的硬件,在已有信号的基础上通过三角测量得到固定位置,然后将它报告给您的代码.在 ...