IEC10X协议源码

https://github.com/airpig2011/IEC104

一、源码编译

  1. 下载源代码并解压
  2. 进入文件夹下test目录,对main.c进行修改

    我们使用套接字来实现服务器和客户端的交互,两者的地址应该相同,这里的地址应该设置为服务器本身所在的地址,可以用ifconfig查,查不到的话可以采用"127.0.0.1"。





  3. 编译

    在test文件夹下执行命令
    make

    然后分别在此目录的两个终端下执行如下命令

    ./iec104_monitor -m server -n 1

    选项m选择server模式,充当服务器

     ./iec104_monitor -n 1

    默认则为client模式,充当客户端,注意,服务器启动必须在客户端启动之前。如下图所示,即为启动成功,两者之间可以完成收发功能。

二、模糊测试

  1. 修改Makefile,将编译方式改为afl-clang-fast

  2. make cleanmake重新编译,根据报错信息将函数的返回值改为return 0;

  3. 修改main.c文件,使其能够同时启动server和client模式。main函数中区分二者通过if/else条件判断,这里选用fork()函数,完成多进程修改。



    修改server和client读取数据部分,修改while循环。

  4. 保存后重新进行编译,编译通过,可以发送数据。

    ./iec104_monitor -n 1

  5. 新建input、output文件夹,放入中子用例并执行模糊测试命令,出现AFL标准界面。

    echo core >/proc/sys/kernel/core_pattern
    AFL_PERSISTENT=1 afl-fuzz -i input/ -o output/ ./iec104_monitor -n 1 -p 10000

IEC104的更多相关文章

  1. IEC104协议规约解析

    一.四遥信息体基地址范围 104调度规约有1997年和2002年两个版本,在流程上没有什么变化,02版只是在97版上扩展了遥测.遥信等信息体基体址,区别如下: 类别 1997版基地址 2002版基地址 ...

  2. (转)TCP注册端口号大全

    分类: 网络与安全 cisco-sccp 2000/tcp Cisco SCCPcisco-sccp 2000/udp Cisco SCCp# Dan Wing <dwing&cisco ...

  3. 网络-05-端口号-F5-负载均衡设-linux端口详解大全--TCP注册端口号大全备

    [root@test1:Standby] config # [root@test1:Standby] config # [root@test1:Standby] config # [root@test ...

  4. CentOS 7 服务端口表

    # Note that it is presently the policy of IANA to assign a single well-known# port number for both T ...

  5. Apache Pulsar 在能源互联网领域的落地实践

    关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...

  6. EPF:一种基于进化、协议感知和覆盖率引导的网络协议模糊测试框架

    本文系原创,转载请说明出处:from 信安科研人 目录 实验 工具的安装 1.安装AFL++ 2.安装epf 对IEC104协议库进行fuzz 实验准备 使用AFL++中的编译器插桩 开始fuzz 原 ...

随机推荐

  1. centos7 部署 loonflow

    a workflow engine base on django 基于django的工作流引擎系统(通过http接口调用,可以作为企业内部统一的工作流引擎,提供诸如权限申请.资源申请.发布申请.请假. ...

  2. axios 下载文件流或者预览在线pdf

    问题: 后端返回文件流,前端使用axios下载或者在线预览 下载文件流 import axios from 'axios' // 设置响应类型为blob axios.get('/api/app/xxx ...

  3. 第三周作业-N67044-张铭扬

    1. 图文并茂说明raid0,raid1, raid10, raid01, raid5等原理. "RAID"是指独立硬盘冗余阵列(RAID, Redundant Array of ...

  4. K8S资源控制器

    什么是控制器 kubernetes中建立了很多的controller(控制器),这相当于一个控制机,来管理pod的状态和行为. 控制器的类型 ReplicationController和Replica ...

  5. ESModule导入

    //导入某方法 import pick from "lodash/pick"; //默认导入方式 import { pick } from "lodash"; ...

  6. Codeforces 1228A、Distinct Digits

    原题 原题网址 题目大意 给定一个区间(上下界都是整数),判断该区间内是否存在一个整数的数字两两不同. 数据结构 一个数组flag,记录0-9是否出现过. 思路 外层循环枚举该区间内所有整数. 首先初 ...

  7. ecplise项目启动出现permgen space异常内存不够

    1. java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域 ...

  8. java读取apk、ipa包名、版本名、版本号等信息

    package com.gymexpress.exerciseservice.controller;import com.gymexpress.commonmodel.controller.BaseC ...

  9. Linux系统Shell脚本第六章:文件三剑客之sed

    Shell编程三剑客之sed 前言 一.Sed编辑器 (1)Sed概述 (2)Sed工作流程 (3)Sed基本语法 二.Sed用法示例 (1)Sed输出指定行 (2)插入符合条件的行 (3)删除符合条 ...

  10. Oracle获取一段时间前的数据

    获取当前时间一周前的日期selectsysdate - interval '7' dayfrom dual类似的当前时间减去7分钟的时间selectsysdate,sysdate - interval ...