zoukankan      html  css  js  c++  java
  • eth/tcp/ip 头的结构记录

    tcp头

     1         tcp_base_header_len = 20
     2         tcp_header = body[0:tcp_base_header_len]
     3         source_port, dest_port, seq, ack_seq, t_f, flags = struct.unpack(b'!HHIIBB6x', tcp_header)
     4         # real tcp header len
     5         tcp_header_len = ((t_f >> 4) & 0xF) * 4
     6 
     7         pack.flags = flags
     8         pack.fin = flags & 1
     9         pack.syn = (flags >> 1) & 1
    10         pack.rst = (flags >> 2) & 1
    11         pack.psh = (flags >> 3) & 1
    12         pack.ack = (flags >> 4) & 1
    13         pack.urg = (flags >> 5) & 1

    其中 tcp_header_len是这样的:

      在t_f中给出的是header长度占32bit的数目,也就是:  8 ==> 8x32 = 8*4*8 = 32 bytes

      其中 这一位可以取值范围是 4 bit 也就是 最大 1111 = 15 * 4* 8 = 60 bytes

      一般这个值是 5 也就是 20 bytes

    如果出于某些目的需要改写出一个异常的 header_len数据,则可以

    binary数据转 helixfy, 修改以后 unhelixfy 得到修改以后的包长信息,当然一般情况下这样做出来的packet包是错误的,可能无法在wireshark中被正确处理

     1     b = binascii.hexlify(p.tcp_header)
     2     # print b[25], b[24], b[26]
     3     if b[24]=='8':
     4         c = b[:24]+'5'+b[25:]
    14         new_tcp_header = binascii.unhexlify(c)
  • 相关阅读:
    进程、线程
    timer控件、三级联动
    用户控件、动态创建添加
    打印控件
    窗体移动和阴影,对话框控件
    winform listview控件
    winform打开唯一窗体、构造函数传值
    菜单和工具栏
    winform公共控件
    hibernate中各种包的添加
  • 原文地址:https://www.cnblogs.com/yeyong/p/6599286.html
Copyright © 2011-2022 走看看