精华内容
下载资源
问答
  • 协议报文发包软件

    2018-11-06 16:29:15
    这个软件支持5个网卡口,支持各种协议报文自由组报文方式进行给设备进行打报文三层协议报文OSPF ISIS DHCP IGMP等等报文,二层报文基本MPLS报文,VLAN tag报文都可以
  • HTTP发包测试工具

    2019-12-31 09:42:17
    HTTP 发包工具 支持多种HTTP协议方法的发包, 包括GET,POST,PUT,DELETE,COPY,MOVE等, 对PUT,COPY ,MOVE等复杂方法的使用提供协议头信息补充和提示。 学习HTTP协议的好工具,可用于安全测试、api接口测试数据。
  • 实现了MAC、ARP、IP 、TCP、UDP协议的编辑与发送,并且支持生成协议字段的默认值,支持用户输入协议字段值,发包前对协议字段的合理性进行检查,发包前自动计算并显示校验和,支持单次发包、多次发包,支持连续发包...
  • post发包工具,支持get请求发包,底层是http协议实现,操作简单
  • 应用层发送一条mesh的控制消息(比如generic on/off 消息),在协议栈层会转化为4条hci消息,分别是:。4条消息顺序发送给controller,如下图。 其中几个概念: adv packet:ble mesh消息(adv type为"mesh"的...

    目录

    背景:

    概念:

    发包策略分析:

    测试步骤:

    测试1:

    测试2:

    测试3:

    测试4:

    总结:


    背景:

    虽然各大蓝牙芯片原厂在设计芯片和开发controller时,都会按照Bluetooth SIG的spec来实现,但在代码设计上会略有不同,比如在打开BLE扫描之后,如何处理Host发送的BLE广播命令,此部分逻辑会影响BLE Mesh的发包。本文主要介绍Controller的BLE广播包的发包策略。

    概念:

    应用层发送一条mesh的控制消息(比如generic on/off 消息),在协议栈层会转化为4条hci命令,分别是:LE Set Advertising Parameters Command,LE Set Advertising Data Command,LE Set Advertising Enable Command(enable),LE Set Advertising Enable Command(disable)。4条命令顺序发送给controller,如图1。

    图1

    上图是从Controller的角度绘制的,蓝牙的条形框代表Controller收到的hci命令,浅绿色的代表Controller实际发出去的广播包。

    图中几个定义:

    adv packet:ble mesh消息(adv type为"mesh"的广播包)。图1显示的是一次广播发出6包相同的Mesh消息(多发几次,防止node收不到)。

    adv period:广播时长,“使能广播”和“停止广播”之间的时间间隔,例如180ms。

    adv interval:mesh spec中规定interval最小值为20ms(high duty模式除外),在实际Mesh消息中通常也设置adv interval为20ms。

    adv delay:controller在收到LE Set Advertising Enable Command(enable)之后,到实际发出去广播包的时间间隔(此部分为本文的关注点)。

    发包策略分析:

    作为蓝牙Mesh应用开发工程师,我们要关注所用蓝牙芯片的Controller在不同扫描和广播参数下的发包情况,分析Controller的发包策略,如果不满足我们合理的需求,需要反馈给原厂FAE解决。

    这里需要借助ellisys工具抓取蓝牙的空中包。观察在不同的扫描和广播场景下实际Mesh空中包的情况,主要关注几个参数:mesh广播包的数量,adv delay的值,adv interval的值。

    测试步骤:

    1.设置controller扫描参数:LE Set Scan Parameters Command

    2.打开controller扫描开关:LE Set Scan Enable Command

    3.设置广播参数:LE Set Advertising Parameters Command

    4.设置广播数据:LE Set Advertising Data Command

    5.打开广播:LE Set Advertising Enable Command(enable)

    持续时间:adv period ms

    6.关闭广播:LE Set Advertising Enable Command(disable)

    7.重复3~6。

    我们使用t**k的一款单模BLE蓝牙芯片的Controller为例,通过4组测试来分析controller的发包策略。

    测试1:

    测试场景
    (模拟SNB)
    scan interval(ms)20ms
    scan window(ms)20ms
    adv interval(ms)20ms
    adv period(ms)20ms
    测试数据adv interval(ms)20ms~30ms
    发包数量1包
    adv delay大部分数据在20ms以内,个别接近30ms

    测试2:

    测试场景
    (模拟Mesh控制消息)
    scan interval(ms)20ms
    scan window(ms)20ms
    adv interval(ms)20ms
    adv period(ms)

    180ms

    测试数据adv interval(ms)20ms~30ms
    发包数量

    9~10包

    adv delay大部分数据在20ms以内,个别接近30ms

    测试3:

    测试场景
    (模拟SNB)
    Scan interval(ms)100ms
    Scan window(ms)100ms
    Adv interval(ms)20ms
    Adv period(ms)20ms
    测试数据adv interval(ms)20ms~30ms
    发包数量丢包严重,经常在一个adv period中发不出来数据包
    adv delay

    发包成功的话,在70ms以内波动

    测试4:

    测试场景
    (模拟Mesh控制消息)
    scan interval(ms)100ms
    scan window(ms)100ms
    adv interval(ms)20ms
    adv period(ms)180ms
    测试数据adv interval(ms)20ms~30ms
    发包数量

    2~4包

    adv delay

    80ms+

    总结:

    理论上在Controller收到LE Set Advertising Enable Command之后,应该在一个时隙0.625ms后,即刻发出广播包,但实测时发现adv delay的值远远大于0.625ms,并且与scan window和scan interval相关。通过对比测试2和测试4可以判断,该controller在scan window内接收到LE Set Advertising Enable Command的话,不会立刻执行广播操作,而是等待scan window结束后,才开始执行发送广播。可以解释在测试3中由于scan window为100ms,adv period为20ms,adv的“使能”和“停止”的两条命令有可能掉入了scan window内,因此在scan window结束后,controller没有发出来广播包。也可以解释测试4,根据scan windows为100ms,adv period为180ms,可以推断出,有效的真正的adv period为80ms以内,因此发出的广播数据包在2~4包。

    展开全文
  • GUI界面,TCP/IP协议栈5层协议中实现了MAC、ARP、IP 、TCP、UDP协议的编辑与发送。 注:程序源代码在我的上传资源中

    一、实现的功能

        基于python+scapy设计协议编辑器,基于Tkinter的Python  GUI界面设计。实现了MAC、ARP、IP 、TCP、UDP协议的编辑与发送,并且支持生成协议字段的默认值,支持用户输入协议字段值,发包前对协议字段的合理性进行检查,发包前自动计算并显示校验和,支持单次发包、多次发包,支持连续发包,连续发包时可随时停止和计算并显示数据包发送速度的功能。

    注:

    程序源代码:https://download.csdn.net/download/wmrem/10439779

    运行前需要先安装第三方库scapy,安装方法:https://blog.csdn.net/wmrem/article/details/80004819

    二、主要函数说明——IP包的编辑与发送为例

    1.创建IP包编辑器界面,为每个按钮绑定单击响应时间。
    def create_ip_sender():
       1.设置协议编辑器的界面
        ip_fields = 'IP协议的版本:',…… , '目的IP地址:'
        entries = create_protocol_editor(protocol_editor_panedwindow, ip_fields)
        2.创建发送,默认值,清空按钮,并绑定功能
        send_packet_button, reset_button, default_packet_button = create_bottom_buttons(protocol_editor_panedwindow)
        3.为"回车键"的Press事件编写事件响应代码,发送IP包
        tk.bind('<Return>', (lambda event: send_ip_packet(entries, send_packet_button)))  # <Return>代表回车键
        4.为"发送"、默认值、按钮的单击事件编写事件响应代码,发送IP包
        send_packet_button.bind('<Button-1>', (
            lambda event: send_ip_packet(entries, send_packet_button)))

    2. 在协议字段编辑框中填入默认IP包的字段值,为IP数据包的发送做好准备
    def create_default_ip_packet(entries):
        1.清空各字段的值
        clear_protocol_editor(entries)
        2.创建默认的IP数据包,并将其各字段的值填入协议编辑器的对应的文本框中
        default_ip_packet = IP()
        entries[0].insert(0, int(default_ip_packet.version))

        …

    3.获取协议编辑器文本框的值,创建对应的数据包并开启一个线程用于连续发送数据包。
    def send_ip_packet(entries, send_packet_button):
        if 按钮为发送时:
    1. 从协议编辑框中获取要发送的数据包的各个字段的值
            ip_version = int(entries[0].get())

            2.用获取的数据包的各字段的值创建相应的数据包
            packet_to_send = IP(version=ip_version,……,src=ip_src, dst=ip_dst)
            3.开一个线程用于连续发送数据包,并启动
            t = threading.Thread(target=send_packet, args=(packet_to_send,))
            t.start()
            4.使协议导航树不可用
            toggle_protocols_tree_state()
            send_packet_button['text'] = '停止'
        else 按钮为停止时:
            5.按钮为停止时可以终止数据包发送线程
            stop_sending.set()
            6.恢复协议导航树可用
            toggle_protocols_tree_state()

            send_packet_button['text'] = '发送'

    4.发送数据包的线程函数,并计算数据包发送速度
    def send_packet(packet_to_send):
        stop_sending.clear()
        1.计算待发送数据包的长度(用于计算发送速度)
        packet_size = len(packet_to_send)
        2.推导数据包的协议类型
        3.计算发包开始发送时间点
        begin_time = datetime.now()
        4.连续发送数据包直到进程关闭
        while 进程没有关闭:
            if 发送Ether:
                sendp(packet_to_send, verbose=0)  # verbose=0,不在控制回显'Sent 1 packets'.
            else:
                send(packet_to_send, verbose=0)
            5.计算发送的总字节数
            total_bytes = packet_size * n
            6.计算发包用的总时间 
            total_time = (end_time - begin_time).total_seconds()
    7.计算发包的速度
            bytes_per_second = total_bytes / total_time / 1024

    三、基础知识准备

    1.构造数据包,发送数据包——“/"运算符数据包的拼装,send()用于3层发包,可直接发送IP数据包,自动加以太帧;只发送以太帧使用sendp()。

    2.计算校验和——IP包的校验和默认值为None,在IP包被发送时,其校验和被被自动计算并填充在IP包中
    以下方式可以在发包前计算IP包的校验和,直接用packet.show2()命令也可以显示校验和。raw(packet)将数据包的内容转换为字节。

     

    3.查看数据包的字段值(使用ls()),查看某层协议数据包对象支持的函数(使用help())

    4.ls()列出scapy支持的所有数据包,协议;lsc()列出scapy支持的全部命令;conf列出scapy的当前配置。

    四、主要功能实现代码——以IP包为例

    1.创建IP包编辑器的界面

    # 创建协议字段编辑区
    def create_protocol_editor(root, field_names):
        """
        创建协议字段编辑区
        :param root: 协议编辑区
        :param field_names: 协议字段名列表
        :return: 协议字段编辑框列表
        """
        entries = []
        for field in field_names:
            row = Frame(root)
            label = Label(row, width=15, text=field, anchor='e')
            entry = Entry(row, font=('Courier', '12', 'bold'), state='normal')  # 设置编辑框为等宽字体
            row.pack(side=TOP, fill=X, padx=5, pady=5)
            label.pack(side=LEFT)
            entry.pack(side=RIGHT, expand=YES, fill=X)
            entries.append(entry)
        return entries
    def create_ip_sender():
        """
        创建IP包编辑器
        :return: None
        """
        # IP帧编辑区
        ip_fields = 'IP协议的版本:', '首部长度(5-15):', '区分服务:', '总长度:', '标识:', '标志(0-2)DF,MF:', \
                    '片偏移:', '生存时间:', '协议(数据部分):', '首部校验和:', '源IP地址:', '目的IP地址:'
        entries = create_protocol_editor(protocol_editor_panedwindow, ip_fields)
        send_packet_button, reset_button, default_packet_button = create_bottom_buttons(protocol_editor_panedwindow)
        # 为"回车键"的Press事件编写事件响应代码,发送ARP包
        tk.bind('<Return>', (lambda event: send_ip_packet(entries, send_packet_button)))  # <Return>代表回车键
        # 为"发送"按钮的单击事件编写事件响应代码,发送ARP包
        send_packet_button.bind('<Button-1>', (
            lambda event: send_ip_packet(entries, send_packet_button)))  # <Button-1>代表鼠标左键单击
        # 为"清空"按钮的单击事件编写事件响应代码,清空协议字段编辑框
        reset_button.bind('<Button-1>', (lambda event: clear_protocol_editor(entries)))
        # 为"默认值"按钮的单击事件编写事件响应代码,在协议字段编辑框填入ARP包字段的默认值
        default_packet_button.bind('<Button-1>', (lambda event: create_default_ip_packet(entries)))

    2.在协议字段编辑框中填入默认IP包的字段值,填入前需要先清空当前值。

    def clear_protocol_editor(entries):
        """
        清空协议编辑器的当前值
        :param entries: 协议字段编辑框列表
        :return: None
        """
        for entry in entries:
            # 如果有只读Entry,也要清空它的当前值
            state = entry['state']
            entry['state'] = 'normal'
            entry.delete(0, END)
            entry['state'] = state
    # 当前网卡的默认网关
    default_gateway = [a for a in os.popen('route print').readlines() if ' 0.0.0.0 ' in a][0].split()[-3]
    
    def create_default_ip_packet(entries):
        """
            在协议字段编辑框中填入默认IP包的字段值
             :param entries: 协议字段编辑框列表
             :return: None
             """
        clear_protocol_editor(entries)
        default_ip_packet = IP()
        entries[0].insert(0, int(default_ip_packet.version))
        entries[1].insert(0, 5)
        entries[3].insert(0, 20)
        entries[2].insert(0, hex(default_ip_packet.tos))
        entries[4].insert(0, int(default_ip_packet.id))
        entries[5].insert(0, int(default_ip_packet.flags))
        entries[6].insert(0, int(default_ip_packet.frag))
        entries[7].insert(0, int(default_ip_packet.ttl))
        entries[8].insert(0, int(default_ip_packet.proto))
        entries[9]['state'] = NORMAL # 可操作
        entries[9].insert(0, "单机发送时自动计算")
        entries[9]['state'] = DISABLED  # 不可操作
        # 目标IP地址设成本地默认网关
        entries[11].insert(0, default_gateway)
        default_ip_packet = IP(dst=entries[11].get())#可以省略
        entries[10].insert(0, default_ip_packet.src)

    3.发送IP包

    def send_ip_packet(entries, send_packet_button):
        """
        发IP包
        :param entries:
        :param send_packet_button:
        :return:
        """
        if send_packet_button['text'] == '发送':
            ip_version = int(entries[0].get())
            ip_ihl = int(entries[1].get())
            ip_tos = int(entries[2].get(), 16)
            ip_len = int(entries[3].get())
            ip_id = int(entries[4].get())
            ip_flags = int(entries[5].get())
            ip_frag = int(entries[6].get())
            ip_ttl = int(entries[7].get())
            ip_proto = int(entries[8].get())
            ip_src = entries[10].get()
            ip_dst = entries[11].get()
            # ip_options = entries[12].get()
            packet_to_send = IP(version=ip_version, ihl=ip_ihl, tos=ip_tos, len=ip_len, id=ip_id,
                                frag=ip_frag, flags=ip_flags, ttl=ip_ttl, proto=ip_proto, src=ip_src, dst=ip_dst)
            packet_to_send = IP(raw(packet_to_send))
            entries[9]['state'] = NORMAL  # 重新激活
            entries[9].delete(0, END)
            entries[9].insert(0, hex(packet_to_send.chksum))
            entries[9]['state'] = DISABLED  # 不可操作
            # 开一个线程用于连续发送数据包
            t = threading.Thread(target=send_packet, args=(packet_to_send,))
            t.setDaemon(True)
            t.start()
            # 使协议导航树不可用
            toggle_protocols_tree_state()
            send_packet_button['text'] = '停止'
        else:
            # 终止数据包发送线程
            stop_sending.set()
            # 恢复协议导航树可用
            toggle_protocols_tree_state()
            send_packet_button['text'] = '发送'

    4.线程中运行的用于发送数据包的函数,可以计算发包速度

    def send_packet(packet_to_send):
        """
        在我们给出的发包程序中,如果电脑速度太快,send_packet函数中的send(...)函数执行前后,
        datetetime返回的begin_time和end_time可能是相同的,结果会报除零错误,所以,send_packet函数应该做修改
    
        用于发送数据包的线程函数,持续发送数据包
        :type packet_to_send: 待发送的数据包
        """
        # print(packet.show(dump=True))
        # 对发送的数据包次数进行计数,用于计算发送速度
        n = 0
        stop_sending.clear()
        # 待发送数据包的长度(用于计算发送速度)
        packet_size = len(packet_to_send)
        # 推导数据包的协议类型
        proto_names = ['TCP', 'UDP', 'ICMP', 'IP', 'ARP', 'Ether', 'Unknown']
        packet_proto = ''
        for pn in proto_names:
            if pn in packet_to_send:
                packet_proto = pn
                break
        # 开始发送时间点
        begin_time = datetime.now()
        while not stop_sending.is_set():
            if isinstance(packet_to_send, Ether):
                sendp(packet_to_send, verbose=0)  # verbose=0,不在控制回显'Sent 1 packets'.
            else:
                send(packet_to_send, verbose=0)
            n += 1
            end_time = datetime.now()
            total_bytes = packet_size * n
            #修改
            total_time = (end_time - begin_time).total_seconds()
            if total_time == 0:
                total_time = 2.23E-308  # 当begin_time和end_time相等时,将total_time设为IEEE 745标准中规定的最小浮点数
            bytes_per_second = total_bytes / total_time / 1024
            # bytes_per_second = total_bytes / ((end_time - begin_time).total_seconds()) / 1024
            status_bar.set('已经发送了%d个%s数据包, 已经发送了%d个字节,发送速率: %0.2fK字节/秒',
                           n, packet_proto, total_bytes, bytes_per_second)

    五、运行结果

    展开全文
  • 从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。整个互联网系统分为三大支柱...

    从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。整个互联网系统分为三大支柱,分别是操作系统,编译器,和网络协议,我们完成了前面三者,还剩第三者一直孤悬在那,直到今天我终于下定决心,尝试着把tcp/ip协议栈也重新实现一遍。

    对于网络协议栈而言,绝大多数人都是”只见过猪跑,但没吃过猪肉“,这绝对是一种巨大的遗憾。网络协议栈构思值巧妙,架构之稳定,非常值得任何期望提升自身技术能力,设计能力,全局思考能力的技术工程师好好把握,把一样东西从无到有,从0到1重新构建出来,绝对是把握其精髓的最佳方式。

    我们要开发的协议栈采取四层架构:

    屏幕快照 2018-11-27 下午5.38.41.png

    协议栈设计的最巧妙之处在于,上层协议只需要关注自己的数据处理,剩下的问题交由下层协议处理,这种方式将一个相当复杂的系统分而治之,一个复杂度极高的系统级怪兽就被庖丁血牛似的给肢解掉了,在后面的编码实现中,我们会感受到此种设计模式的巨大威力。

    在上面的架构图中,所有的网络从最顶层开始封包,直到最底部的网卡,数据会转换为电信号被网卡发送给指定服务器或路由器,因此要想再造整个协议栈,我们需要一个功能就是直接操作网卡进行数据包的发送和接收,由此我们使用java开发时,需要有办法直接操作网卡硬件,能帮我们完成该任务的,是常有的java抓包发包组件jpcap。

    它是一个jar包,我把它传送到课堂附件,或者大家也可以自行下载。下载到本地后,在eclipse中新建一个项目叫TCPImplementation,当然你也可以任意取自己喜欢的名字,然后在项目目录上右键单击,选择property属性,点击"java build path",然后选择"Libraires",然后点击”add externel jars",然后从下载的jpcap目录下,进入lib目录,然后选择jpcap.jar,接着进入bin目录,选取jpcap.bin,完成后配置如下图:

    屏幕快照 2018-11-27 下午5.59.53.png

    然后进入jpcap目录下的src/main/c目录,如果像我一样使用macos,那么就打开makefil,找到ifeq else部分代码,然后在该部分的末尾添加如下代码:

    ifeq ($(PLATFORM), Darwin)
        JNI_INCLUDE2 = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/JavaVM.framework/versions/A/Headers/ 
        COMPILE_OPTION = -bundle -framework JavaVM
        SUFFIX = .jnilib
    endif
    

    添加完后,在控制台执行make命令进行编译,如果使用windows系统,请同学自己百度一下相关配置,编译好后在目录下会有libjpcap.jnilib,将该文件拷贝到目录/Library/Java/Extensions/,如果不是使用macos的同学需要百度一下相应目录或者是jpcap的编译配置方法,最后执行命令sudo chomod 777 /dev/bpf*,如此所有准备工作就完成了。

    然后在java工程下新建一个文件ProtocolEntry.java,然后添加如下代码:

    import java.io.IOException;
    
    import jpcap.JpcapCaptor;
    import jpcap.NetworkInterface;
    import jpcap.NetworkInterfaceAddress;
    import jpcap.packet.Packet;
    
    public class ProtocolEntry implements PacketReceiver {
    	
    	public void receivePacket(Packet packet) {
    		System.out.println(packet);
    		System.out.println("Receive a packet");
    	}
    
    	public static void main(String[] args) throws IOException {
    		//获取网卡列表
    	    NetworkInterface[] devices = JpcapCaptor.getDeviceList();
    	    JpcapCaptor captor = null;
    	    for (int i = 0; i < devices.length; i++) {
    	    	//显示网卡名字
    	        System.out.println(i+": "+devices[i].name + "(" + devices[i].description + ")");
    	        
    	        System.out.println(" datalink: " + devices[i].datalink_name + "(" + devices[i].datalink_description + ")");
    	        
    	        System.out.println(" Mac Address: ");
    	        for (byte b : devices[i].mac_address) {
    	            System.out.print(Integer.toHexString(b & 0xff) + ":");
    	        }
    	        
    	        System.out.println();
    	        
    	        for (NetworkInterfaceAddress a : devices[i].addresses) {
    	            System.out.println(" address:" + a.address + " " + a.subnet + " " + a.broadcast);
    	        }
    	        
    	        captor = JpcapCaptor.openDevice(devices[i], 65536, false, 20);
    	        if (captor != null) {
    	            System.out.println("Open captor on device" + i);
    	            break;
    	        }
    	    }
    	    
    	   
    	}
    }
    
    

    上面代码运行后,结果如下图:

    屏幕快照 2018-11-27 下午6.09.42.png

    通过jpcap,我们成功访问了网卡硬件,其中"Open captor on device0“,表示我们可以使用名为device0这个网卡来实现数据包的发送和接收,如果你有多块可用网卡,那么这些网卡都可以成功open,后面可以选择其中某一个来进行数据包的发送,至此万里长征,我们成功的走出了第一步!

    欢迎关注公众号,让我们一起学习,交流,成长:
    文章公众号.jpg

    展开全文
  • 小兵发包工具

    2015-04-20 13:14:01
    一款不错的发包工具,用过不错,比其它软件易操作易懂
  • UDPSender发包器工具

    2020-10-26 17:15:11
    udpsender主要用于udp测试和压力测试,自定义EPS,支持syslog和snmp协议。 使用方便,快捷,自定义性强
  • 供电局对外发包工程安全协议.docx
  • 发包工程安全管理协议书.docx
  • 发包工具anysend

    2018-08-02 14:33:58
    一个不错发包工具,支持IPv4,ipv6,ARP等常见的协议报文,可以修改IP地址,MAC ,报文长度,发包个数等
  • 协议栈通过 dev_queue_xmit() 将 sk_buffer 下送到网卡驱动。 网卡驱动将 sk_buff 放入 Tx descriptor ring,更新网卡寄存器 TDT。 DMA 感知到 TDT 的改变后,找到 Tx descriptor ring 中下一个将要使用

    目录

    协议栈发包处理流程

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    以 UDP 数据报为例:

    1. 应用层:可以通过 System Call 接口层
    展开全文
  • 然后还要准备一个post 助手(只要能使用winhttp 等 协议进行post get等操作的工具) 我使用idea的 restClient ; 然后还要有一个编码转换工具,这个百度就好。 ————————————————-开搞开搞。 ——...
  • 上海市电力工程承发包安全管理协议.docx
  • 建设工程承发包安全管理协议书范本.doc
  • HTTP发包工具

    2018-05-11 13:41:00
    HTTP 发包工具,原创,支持多种HTTP协议方法的发包,包括GET,POST,PUT,DELETE,COPY,MOVE等,对PUT,COPY ,MOVE等复杂方法的使用提供协议头信息补充和提示。学习HTTP协议的好工具,可用于安全测试。
  • 对外发包工程施工安全管理协议书.docx
  • 发包程序:发送数据 from winpcapy import WinPcapUtils # Build a packet buffer # This example-code is built for tutorial purposes, for actual packet crafting use modules like dpkt arp_request_hex_...
  • 前言:本实例中以APDU协议为例进行封包和发包(这里的发包以一个报文为单位,在实际工作中应该是以实际带宽决定吧)。 #include <stdio.h> #include <string.h> #include <stdlib.h> //SYS #...
  • 浅谈浏览器插件检测 和自定义协议的支持 前一阵子一直在折腾浏览器的插件检测和自定义协议的支持。 经过种种痛苦的折腾,算是对这一领域有了点浅显的认知。特此记录一下   一、背景知识 自定义协议:常用的协议有...
  • arp模拟发包工具

    2018-06-06 10:55:08
    arp攻击工具,可以模拟arp请求发包,连续发包。是常用的网络调试工具。也可以用来做arp攻击的压力测试
  • Nemesis项目是为了开发一个UNIX/Linux...它可以自定义数据包、插入数据包、进行协议攻击等。是一个很好的测试防火墙、 路由器和其他网络设备的工具。支持 ARP, DNS, ETHERNET, ICMP, IGMP, IP, OSPF, RIP, TCP and UDP
  • 安全管理协议书(发包单位与分包单位)
  • 合同模板协议范文2021广西省锚杆工程承发包合同.docx
  • 详解Linux协议栈的数据流向,SOCKET的操作流程,unicast multicast等等的区别。
  • 合同模板协议范文2021广西省基坑支护锚杆工程承发包合同.docx
  • TCP协议发包机制

    千次阅读 2011-05-14 00:06:00
    TCP协议发包机制当我们通过TCP的socket发送一个大的数据时,TCP会把数据分成一个个小的数据包发送,然而由于接收窗口和拥塞窗口的限制,这些数据包可能不能一次发送出去。这时后继的数据包等待在发送缓冲区,等待...
  • 1、UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC ...
  • 1.arp、icmp、tcp、udp四种协议的数据包构造 2.使用socket发送以上四种数据包 3.使用libpcap发送数据包 附:可以简单的设置数据包数据部分的长度,发送重复次数。 **程序运行环境是Linux,需要输入dev_name是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,805
精华内容 8,722
关键字:

发包协议