精华内容
下载资源
问答
  • tcp数据包解析
    千次阅读
    2020-11-11 14:10:52

    1.[文件]

    tcp.py ~ 2KB

    下载(69)

    # -*- coding: cp936 -*-

    import socket

    from struct import *

    from time import ctime,sleep

    from os import system

    system("title tcp sniffer")

    system("color 05")

    # the public network interface

    HOST = socket.gethostbyname(socket.gethostname())

    # create a raw socket and bind it to the public interface

    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)

    s.bind((HOST, 0))

    # Include IP headers

    s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

    # receive all packages

    #s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

    # receive a package

    while 1==1:

    packet = s.recvfrom(65565)

    packet = packet[0]

    ip_header = packet[0:20]

    iph = unpack("!BBHHHBBH4s4s",ip_header)

    version = iph[0] >> 4 #Version

    ihl = iph[0] * 0xF #IHL

    iph_length = ihl * 4 #Total Length

    ttl = iph[5]

    protocol = iph[6]

    s_addr = socket.inet_ntoa(iph[8])

    d_addr = socket.inet_ntoa(iph[9])

    print ctime()

    print "Version : " + str(version) + " IHL : " + str(ihl) + " Total Length: "+str(iph_length) + " TTL : " +str(ttl) + " Protocol : " + str(protocol) + " Source Address : " + str(s_addr) + " Destination Address : " + str(d_addr)

    if protocol == 6:

    tcp_header = packet[20:40]

    tcph = unpack("!HHLLBBHHH" , tcp_header)

    source_port = tcph[0]

    dest_port = tcph[1]

    sequence = tcph[2]

    acknowledgement = tcph[3]

    doff_reserved = tcph[4]

    tcph_length = doff_reserved >> 4

    print "Source Port : " + str(source_port) + " Dest Port : " + str(dest_port) + " Sequence Number : " + str(sequence) + " Acknowledgement : " + str(acknowledgement) + " TCP header length : " + str(tcph_length)

    data = packet[40:len(packet)]

    print "Data : " + data

    # disabled promiscuous mode

    s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)

    更多相关内容
  • 3.TCP数据包解析 3.1 数据包解析源码 import com.alibaba.fastjson.JSON; import com.sun.jmx.remote.internal.ArrayQueue; import com.sun.xml.internal.messaging.saaj.util.ByteInputStream; import jpcap....

    1.jpcap抓包

    https://github.com/kumqu/java-jpcap

    2.TCP逻辑分析

    3.TCP数据包解析

    3.1 数据包解析源码

    import com.alibaba.fastjson.JSON;
    import com.sun.jmx.remote.internal.ArrayQueue;
    import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;
    import jpcap.packet.TCPPacket;
    import sun.misc.FloatingDecimal;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.nio.ByteBuffer;
    import java.util.*;
    
    /**
     * @description:
     * @date: 2021-09-16 17:38
     */
    
    class Data{
     
    展开全文
  • 采用C#作为开发语言,可解析UDP,TCP数据包的网络嗅探器
  • Tcp数据包详细解析

    热门讨论 2011-02-22 09:51:51
    这是我利用网络抓包工具抓取数据以后,然后按照TCP协议,对照把数据解析出来的过程,对照这个文档很容易就能让你了解TCP协议包的组成。
  • TCP/IP——TCP数据包分析

    千次阅读 2021-05-18 17:07:02
    一.实验目的 学习和掌握TCP协议的应用和报文格式 二.实验拓扑 三....GNS3和Wireshark抓包分析软件 四.TCP协议的封装格式 ...6.分析TCP三次握手数据包 1)第一次握手数据包 2)第二次握手数据包 3)第三次握手

    一.实验目的

    学习和掌握TCP协议的应用和报文格式

    二.实验拓扑

    image.png

    三.实验工具

    GNS3和Wireshark抓包分析软件

    四.TCP协议的封装格式

    image.png
    image.png

    五.TCP三次握手实验步骤

    1.按照拓扑图,搭建实验环境
    2.配置接口IP
    1)配置IP地址
    PC:
    image.png
    SERVER:
    image.png
    3.在SERVER上创建一个用户,用于远程登录
    image.png
    4.开启抓包工具抓取PC的F0/0端口的流量
    5.在PC上telnet 12.1.1.2
    image.png
    6.分析TCP三次握手数据包
    image.png
    1)第一次握手数据包
    image.png
    2)第二次握手数据包
    image.png
    3)第三次握手数据包
    image.png
    7.还原TCP三次握手数据包“序列号”字段的值
    image.png
    原始序列号的三次握手数据包
    image.png
    1)第一次握手数据包
    image.png
    2)第二次握手数据包
    image.png
    3)第三次握手数据包
    image.png

    六. TCP四次挥手实验步骤

    1.开启抓包工具抓取PC的F0/0端口的流量
    2. 在PC上telnet 12.1.1.2,并输入用户名和密码,登录SERVER后,再退出。
    image.png
    3.分析TCP四次挥手数据包
    image.png
    1)第1次挥手数据包
    image.png
    2)第2次挥手数据包
    image.png
    3)第3次挥手数据包
    image.png
    4)第4次挥手数据包
    image.png

    七. TCP连接建立超时重传实验步骤

    1.SYN重传原理
    image.png
    2.在GNS3中,将SERVER暂停,如下图所示
    将SERVER暂停即右键点击SERVER,点击“Suspend”
    image.png
    3.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2
    4.分析SYN重传
    image.png//重传4次
    5.SYN/ACK重传原理
    image.png
    6.在PC 上写一个ACL语句禁止ACK位置1的TCP数据包进入PC,并在PC的f0/0端口入方向调用,同时禁止PC向SERVER发送ICMP Unreachable messages 报文(做这步之前要右键点击SERVER,点击“Start”)
    image.png
    image.png
    image.png
    image.png
    7.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2
    image.png
    8.分析SYN/ACK重传数据包
    image.png

    八. TCP连接关闭超时重传实验步骤

    1.FIN超时重传原理
    image.png
    2.将PC上的ACL删除,并在SERVER上,配置ACL禁止FIN位置1的TCP数据包进入SERVER,并在SERVER的f0/0端口入方向调用,同时禁止SERVER向PC发送ICMP Unreachable messages 报文
    image.png
    image.png
    image.png//禁止SERVER向PC发送ICMP Unreachable messages 报文
    3.开启抓包工具抓取PC的F0/0端口流量,在PC上Telnet 12.1.1.2,输入用户名和密码登录成功后,再退出
    image.png
    4.分析FIN重传数据包
    image.png

    展开全文
  • TCP数据包解析注意点

    2019-09-26 23:00:41
    2.一个TCP数据包在传输的过程中,实际传输的数据单元包括包头和数据部分。包头为各层在数据头加上的层层头部说明,在实际网络环境中,一个MTU(一般为1500)包括了包头和数据部分,包头部分在每个传输过程的节点中都...

    1.链路层数据单元为帧,网络层数据单元为包,传输层数据单元为段。
    2.一个TCP数据包在传输的过程中,实际传输的数据单元包括包头和数据部分。包头为各层在数据头加上的层层头部说明,在实际网络环境中,一个MTU(一般为1500)包括了包头和数据部分,包头部分在每个传输过程的节点中都在进行着解析和封装。
    3.TCP传输过来的数据是无边界的,存在着粘包的现象。由于TCP有一个缓冲区,发送端往其中写数据,为了增加发送效率减小网络负担,TCP会等缓冲区满或者某个时间发送此缓冲区的数据,此时粘包在发送方就已经出现;同时接收方没能及时处理数据,那么后续到达的数据也会存放在缓冲区中,等待下一次读取的时候缓冲区就形成了粘包;或者是一次写入的数据小于缓冲区容量,在第二次写入诗缓冲区满了,数据直接发送,剩下的部分会在下一次发送时补发,因此会造成不完整的粘包等等。

      粘包情况有两种,一种是粘在一起的包都是完整的数据包,另一种情况是粘在一起的包有不完整的包。
      
      解决办法:
      	1.可以用适当的字符串作为包的边界。
        2.参考http的chunk,在包头加上此次数据的大小值。
        实际中,可以在接收端创建一个预处理线程,对接收到的数据包进行预处理,将粘连的包分开。
    

    4.在传输数据的解析过程中,存在着大小端问题,如windows一般为小段,linux系统为大端,对于数据的解析需要大小端转换一遍。
    htonl() //32位无符号整型的主机字节顺序到网络字节顺序的转换(小端->>大端)
    htons() //16位无符号短整型的主机字节顺序到网络字节顺序的转换 (小端->>大端)
    ntohl() //32位无符号整型的网络字节顺序到主机字节顺序的转换 (大端->>小端)
    ntohs() //16位无符号短整型的网络字节顺序到主机字节顺序的转换 (大端->>小端)

    在这里插入图片描述
    QT解析函数:
    T qFromBigEndian(const uchar * src)
    T qFromBigEndian(T src)
    T qFromLittleEndian(const uchar * src)
    T qFromLittleEndian(T src)
    void qToBigEndian(T src, uchar * dest)
    T qToBigEndian(T src)
    void qToLittleEndian(T src, uchar * dest)
    T qToLittleEndian(T src)

    展开全文
  • TCP数据包分析

    千次阅读 2019-05-24 10:35:49
    通信过程中,每层协议都要加上一个数据首部(header),称为封装...不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封...
  • 一个专注于帮助解析tcp二进制协议包的go包 例子 这是一个协议: |2 字节版本|4 字节正文长度|8 字节数据包 ID|正文| type Packet struct { Version string BodyLen uint32 Pid uint64 Body [] byte } func ...
  • 这个解码器最主要是解决TCP粘包拆包问题 package com.wunaozai.iot.nettyplatform.code; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.netty.buffer.ByteBuf; ...
  • 帧封装、IP数据包解析和发送TCP数据包帧封装、IP数据包解析和发送TCP数据包帧封装、IP数据包解析和发送TCP数据包帧封装、IP数据包解析和发送TCP数据包
  • 今天小编就为大家分享一篇python设计tcp数据包协议类的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包
  • 通过TCP接收数据包

    2021-03-09 01:39:01
    如果您想要使用标识字段,则不使用标准TCP . 对于应用程序,TCP连接呈现为流 . 您无权访问基本数据包 . 此外,在标准TCP连接中,标识字段是随机的16位字段 . 0x0d没有填充此宽度,很可能不会是常量 . 但是,我可以...
  • 1、一个完整的TCP数据包 11:43:26.893811 IP 10.135.1.108.39936 > 10.135.38.95.8090: P 1:247(246) ack 1 win 12 0x0000: 4500 012a cfdf 4000 3d06 3016 0a87 016c E..*..@.=.0....l 0x0010: 0a87 265....
  • 服务器端的流程图,如下图1所示 图一 服务器端 import java.io.*; import java.net.ServerSocket;...public class TCPServer { public static void main(String[] args) throws IOExcepti...
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包.rar
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包.pdf
  • 网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包汇编.pdf
  • 网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包.pdf
  • 我目前有一个简单的TCP服务器,该服务器调用一个函数,并在每个新的传入数据包上以字节数组的形式将二进制TCP有效负载传递给它,解析它的正确方法是什么?我试图通过将其切成不同的字节数组并分别进行处理来尝试执行...
  • Winpcap 解析TCP、IP报文

    2014-03-23 21:12:03
    使用Winpcap捕获并解析TCP报文 需要配置Winpcap的库和头文件
  • 网络数据包的结构,以及协议分析。如:网络监控,故障排查等。 IP包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用。由IP协议衍生的协议族有10数种(据我所知),以后还会出现 更多的基于IP的。 先从...
  • 自己整理的 TCP IP 数据包分析 对于初学以太网相关协议有一定帮助 TCP数据包分析 TCP数据包分析
  • wireshark抓包分析TCP数据包

    千次阅读 2020-06-24 18:23:18
    1、直接从TCP的三次握手开始说起 三次握手就是客户与服务器建立连接的过程 客户向服务器发送SYN(SEQ=x)报文,然后就会进入SYN_SEND状态 服务器收到SYN报文之后,回应一个SYN(SEQ=y)ACK(ACK=x+1)报文,然后...
  • TCP数据包协议格式详解

    千次阅读 2021-01-29 18:20:54
    出一个专栏把通信协议搞一下吧,万物互联的根本呀。 IP 版本4位:4(二进制0100)表示IPv4,6(二进制0110)表示IPv6 ... 查看往期专栏 TCP数据包协议格式详解 UDP数据包协议详解 TCP/UDP伪头部详解 COAP数据包协议格式详解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 99,013
精华内容 39,605
关键字:

tcp数据包解析

友情链接: 710427.zip