zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/hAKpZHy0IU6_XEvctfkHOA

     
    简单介绍Fuzzer的实现。
     
     
    1. IDMapGenerator
     
    功能类似于IDPool,用于记录id的信息,并对ID进行分配和回收:
     
    2. LFSR64
     
    用于生成一个64位随机数的逻辑:
     
    3. LFSRNoiseMaker
     
    使用LFSR64生成一个指定宽度(wide位)的随机数输出:
     
     
    4. TLFuzzer
     
    1) 基本功能
     
    生成一系列的随机请求,用于测试:
     
    2) 类参数
     
    a. nOperations:需要生成的请求的数目;
    b. inFlight: 可以有多少个请求并行处理;
    c. noiseMaker: 随机数生成器;
    d. noModify:是否不支持写内存的消息;
    e. overrideAddress:是否使用该参数覆盖随机生成的访问地址;
    f. nOrdered:生成的需要按顺序响应的client参数的数目;
     
    3) diplomacy node
     
    Fuzzer是一个client节点:
     
    不再是适配器节点了,所以Fuzzer只能作为上游节点使用,而不能作为中间节点或者下游节点:
     
    clientParams用于生成一组client参数:
    A. nOrdered == None:发出的请求不需要按顺序响应
    只需要生成一个client参数即可,其包含inFlight个sourceId,用于并发时对响应消息做区分。
     
    B. nOrdered != None:发出的请求需要排序
     
    nOrdered中的n是指要生成多少个client的参数,Ordered是指每个client中的请求需要按顺序响应。
     
    举例:inFlight = 6,nOrdered = Some(2)
    a. 需要生成2个client的参数;
    b. 每个client包含3个sourceId;
    c. 每个client的最多3个请求需要按顺序响应;
     
    4) lazy module
     
     
    A. 只有输出边,而没有输入边
     
    因为Fuzzer是client节点,所以只有输出边,而没有输入边。准确的说,只有一个输出边:
     
    B. 提取参数
     
     
    C. 请求消息/响应消息计数
     
    计数寄存器,初始值为总数目:
     
    发送成功和接收成功后递减计数器:
     
    D. 所以请求是否发送完成,并全部收到响应消息
     
     
    E. 取出channel a/d的信息
     
     
    F. 使用随机数生成器生成请求消息的各个组成部分
     
     
    G. 进而生成channel a支持的各种消息:
     
     
    H. 访问的地址是否合法
     
     
    I. 使用随机数从各种消息中选择一个:
     
     
    J. out.a.valid
     
    channel a中是否包含着一个valid的请求:
    需要满足以下条件:
    a. 请求信息没有发送完成;
    b. 随机生成的信息是合法的;
    c. 并行消息所需的sourceId没有被用完,即没有达到并行消息数目上限;
     
    K. 回收sourceId
     
     
    L. 填充channel a,接收channel d的响应消息
     
    其中:
    a. 一直接收channel d的响应消息,但是并不进行解析处理;
    b. channel b/c/e不使用;
     
    M. inc:生成新的请求消息
     
    包含两种情况:
    a. 已生成的消息不合法;
    b. 上一个请求消息已发送完成;
     
    N. inc_beat:生成新的beat
     
    包含两种情况:
    a. 已生成的消息(beat)不合法;
    b. 上一个beat发送完成;
     
  • 相关阅读:
    【OPENGL】第二篇 HELLO OPENGL(续)
    【转载】关于在vs2013中配置opengl红宝书第八版环境
    【OpenGL】 第一篇 OpenGL概览
    【OpenGL】第二篇 Hello OpenGL
    【OpenGL】VAO与VBO
    面试题五 数组中出现次数超过一半的数字 时间为O(n)
    intellij idea激活,免费激活方式分享
    使用接口还是使用抽象类
    CRM(Customer Relationship Management)
    java提高篇-----字符串
  • 原文地址:https://www.cnblogs.com/wjcdx/p/11432771.html
Copyright © 2011-2022 走看看