用于测试FDIA在现实约束下可行性的FDIA建模框架(Matlab代码实现)

news/2024/5/19 19:38:05/

      目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

       信息通信技术的发展和智能设备的引入使电力系统逐渐演变为电力信息物理系统,而信息层与物理层之间的深度耦合也加剧了电力系统遭受网络攻击的风险。虚假数据注入攻击(false data injection attack,FDIA)作为一种兼具隐蔽性、灵活性和攻击导向性的网络攻击方式,对电力数据采集与监控系统的安全稳定构成很大威胁。

📚2 运行结果

主函数部分代码:

%traditional ACSE: wls method
%close all
clear
addpath(genpath('matpower7.0/')) %add all subfolders
casename = 'case30.m';%% simulate reality/environment
if ~(exist('measure')==1)disp("simulate grid enviroment and meters by power flow")mpc = loadcase(casename);%simulate truth by power flow, and SCADA meters with noisenoise_level = 0.01; %std of gaussian noise to be added on meterspf_results = runpf(mpc);ref = find(mpc.bus(:,2)==3);[measure,idx,sigma,GT,V_GT] = simulate_SCADA_meters(pf_results, noise_level);%% add bad data (traditional)if_bad = 0;if if_bad==1%add one bad datameasure.Pinj(3) = sign(measure.Pinj(3))*(1+abs(measure.Pinj(3)));end
end%% attacker side:
%create imperfect grid model: topology error/inaccurate network parameter
%grid model [baseMVA, bus_as, gen_as, branch_as]
baseMVA = mpc.baseMVA;
bus_as = mpc.bus;
gen_as = mpc.gen;
branch_as0 = mpc.branch;
%create some imperfectness in network parameters
branch_as1 = mpc.branch;
branch_as1(2,11)=0;
branch_as2 = mpc.branch;
branch_as2(:,4) = branch_as0(:,4)+0.02*randn(size(branch_as0,1),1);
branch_as3 = branch_as2;
branch_as3(2,11)=0;
branch_as3(6,11)=0;%prepare infomation: state x, 
%generate: manipulated measurement measure_a (z_a) z_a = z + ha(Xa)-ha(X)
% functin runpf returns angle in degree
Vest_as0 = V_GT; %X, estimation of the state x on attacker's server
%Vest_as = abs(V_GT); %imperfect state x
Vest_as1 = Vest_as0 + randn(length(Vest_as0),1)*0.01;
Vest_as1(1) = 1+0i; %attackers know reference bus %target bad case 
tgtcase_as = mpc;
tgtcase_as.bus(:,3:4) = mpc.bus(:,3:4)*0.9; %reduce load by 10%
%tgtcase_as.bus(6:10,3:4) = tgtcase_as.bus(6:10,3:4)-1;
pf_astgt = runpf(tgtcase_as);
dA_as = 3*randn(length(bus_as),1); %for FDIA DC
%dA_as = 3.*pf_results.bus(:,9);
dA_as(11:end)=0;Instances_modes = {'perfect','perfect','DC','DC'};
Instances_cons = {'No','combined','No','combined'}; 
%Instances_modes = {'perfect','perfect','perfect','perfect','perfect',...
%    'DC','DC','DC','DC','DC'};
%Instances_cons = {'No','topology','ntwpara','state','combined',...
%    'No','topology','ntwpara','state','combined'}; 
for i = 1:length(Instances_modes)MODE_FDIA = Instances_modes{i}; %'DC','target AC','perfect'constraint = Instances_cons{i};Vest_as = Vest_as0;branch_as = branch_as0;if strcmp(constraint,'topology')==1branch_as = branch_as1;elseif strcmp(constraint,'ntwpara')==1branch_as = branch_as2;elseif strcmp(constraint,'state')==1Vest_as = Vest_as1;elseif strcmp(constraint,'combined')==1branch_as = branch_as3;Vest_as = Vest_as1;endif strcmp(MODE_FDIA,'target AC')%AC FDIA designed by certain target wrong solution Vtarget_asVtarget_as = Vest_as; %target manipulate on estimate xVtarget_abs = abs(Vest_as); %magnitude of wrong solutionVtarget_as=Vtarget_abs.*exp(1i*angle(Vest_as)*2); %Xa, the bad state that attackers want to mislead operators toward%Vtarget_as(2) = 0.95;Vtarget_as(ref)=1+0i; %attackers know reference bus  [measure_a, idx] = ...fdia_ac_gen(Vest_as,Vtarget_as, measure, idx,...baseMVA, bus_as, gen_as, branch_as);elseif strcmp(MODE_FDIA, 'perfect')||strcmp(MODE_FDIA, 'DC')%well crafted fdia ac%Vest_as readyif strcmp(MODE_FDIA, 'perfect')[measure_a, idx, Vtarget_as] = ...fdia_perfac_gen(Vest_as,pf_astgt, ...measure,idx,...baseMVA, bus_as, gen_as, branch_as);elseif strcmp(MODE_FDIA, 'DC')%DC FDiA:%dA_as = randn(length(bus_as),1); %delta angle (radias), create some random disturb of angle        %dA_as = angle(Vest_as)-pf_astgt.bus(:,9)./180.*pi;%dA_as(ref)=0;       [measure_a, idx] = fdia_dc_gen(dA_as,measure,idx, baseMVA, bus_as, gen_as, branch_as);Vtarget_as=abs(V_GT).*exp(1i*(angle(V_GT)+dA_as)); %Xa, the bad state that attackers want to mislead operators towardendend

🎉3 参考文献

​[1]黄冬梅,丁仲辉,胡安铎等.低成本对抗性隐蔽虚假数据注入攻击及其检测方法[J].电网技术,2023,47(04):1531-1540.

部分理论引用网络文献,若有侵权联系博主删除。


http://www.ppmy.cn/news/48583.html

相关文章

Netty:常见的面试题和答案

1. 什么是Netty? 答:Netty是一个高性能的网络编程框架,基于NIO的非阻塞式IO模型,可以帮助开发者快速开发高性能、高可靠性的网络应用程序。 2. Netty的核心组件有哪些? 答:Netty的核心组件包括&#xff…

变压器绕制

变压器同名端 1、变压器同名端,是指在变压器绕制的时候,各绕组方向统一,同名端同时都为进线(起始端) 或出线(结束端)。若某一个绕组骨架插入夹头方向反向,则相应该绕组进出线同时反向。同名端&a…

基于Simulink单载波链路射频波束成形仿真

一、前言 此示例展示了如何在 Simulink中对 IEEE 802.11ad单载波链路进行建模,其中包括具有射频波束成形功能的相控阵天线。 二、介绍 此模型模拟具有射频波束成形的 802.11ad 单载波 (SC)链路。多个数据包通过自由空间传输,然后射…

少儿编程 电子学会图形化编程等级考试Scratch二级真题解析(选择题)2022年9月

2022年9月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、数列:1,2,3,4,6,9,13,19,28,...的下一项是多少 A、37 B、39 C、41 D、47 答案:C 考点分析:考查观察能力和逻辑推理能力,从前面数字可以观察到一些规律: 第4个数字,是由前面…

如何进行代码评审(Code Review)

什么是CodeReview Code Review(CR)即代码评审,是一种通过复查代码来提高代码质量的过程,一般体现在一个团队的开发过程中。CR要求团队成员有意识地、系统地检查彼此的代码,从而验证需求、发现错误,同时指出…

项目部署常见问题

1、前后端分离 需要在配置文件中添加如下代码&#xff1a;然后把前端代码放置到dist 目录下即可 server.viewUrl : /u01/isi/39/system/web/dist/ 2、项目和依赖包分离 2.1 修改pom文件中打包配置、此时install后lib包和项目分离 <build><finalName>opera_an…

云原生周刊:Kubernetes v1.27 发布 | 2023.4.17

开源项目推荐 Palaemon Palaemon 是一个开源开发工具&#xff0c;用于监控 Kubernetes 集群的健康状况和资源指标并分析内存不足 (OOMKill) 错误。 Gitkube Gitkube 是一种使用 git push 将 Docker 镜像构建和部署到 Kubernetes 上的工具。 经过简单的初始设置后&#xff…

FFMPEG: [ API ] >打开/关闭一个输入文件

它们是成对出现的. ffmpeg 把输入文件--转换成--->AVFormatContext实例 ◆ avformat_open_input() int avformat_open_input(AVFormatContext ** ps,const char * url,ff_const59 AVInputFormat * fmt,AVDictionary ** options ) Open an input stream and read the header…

MiniGPT4,开源了

简介 MiniGPT-4 旨在将来自预训练视觉编码器的视觉信息与先进的大型语言模型 (LLM) 对齐。 具体来说&#xff0c;在文本方面&#xff0c;作者利用 Vicuna 作为语言解码器&#xff0c;在视觉感知方面&#xff0c;使用了与BLIP-2相同的视觉编码器&#xff0c;并且语言和视觉模型…

【密码学复习】期中复习

对称保密体制的定义 对称加密体制的基本思想是使用一个秘密密钥来加密数据&#xff0c;并使用同样的密钥来解密数据。这个密钥必须保密&#xff0c;因为如果被攻击者获取到&#xff0c;他们就可以轻松地解密加密的数据。因此&#xff0c;对称加密通常需要对密钥进行安全分发和…

智能营销服务性能提升2倍关键秘诀?就是亚马逊云科技

随着数字化进程加快和B2B商业市场竞争的白热化&#xff0c;通过挖掘数据“黄金”提升投资回报比与市场竞争力的智能营销&#xff0c;正成为B2B营销的热门风口。 但企业在获得更精准、更智能营销服务的同时&#xff0c;也不得不面临来自海量数据的搜寻以及数据实时更新等方面的…

Unity-ML-Agents-训练生成的results文件解读-PushBlock

前言 训练结果文件路径&#xff1a;E:\ml-agents-release_19\results\push_block_test_02&#xff08;具体路径以自己电脑为准&#xff09; ML-Agents安装和PushBlock训练过程请见&#xff1a;&#xff08;注意&#xff1a;push_block_test_02没有全部训练完毕&#xff09; …

算法记录 | Day37 贪心算法

738.单调递增的数字 思路&#xff1a; 1.一旦出现strNum[i - 1] > strNum[i]的情况&#xff08;非单调递增&#xff09;&#xff0c;首先想让strNum[i - 1]–&#xff0c;然后strNum[i]给为9&#xff0c;这样这个整数就是89&#xff0c;即小于98的最大的单调递增整数。 2…

10分钟了解人工智能(最通俗的语言)

最通俗的语言&#xff1a;15分钟了解人工智能&#xff1b;唯一优点&#xff0c;受众完全听懂 无人驾驶、智能家居、远程医疗……如今&#xff0c;人工智能(AI)技术已被广泛应用于金融、交通、医疗、安防、教育等领域&#xff0c;成为经济增长新动能 一 什么是人工智能 人工智能…

JVM之JDK 监控和故障处理工具总结

JDK 命令行工具 这些命令在 JDK 安装目录下的 bin 目录下&#xff1a; jps (JVM Process Status&#xff09;: 类似 UNIX 的 ps 命令。用于查看所有 Java 进程的启动类、传入参数和Java 虚拟机参数等信息&#xff1b;jstat&#xff08;JVM Statistics Monitoring Tool&#x…

java项目之疫情网课管理系统(springboot+vue源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的疫情网课管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

redis笔记

string sds(简单动态字符串) sds内部又可以转为int ,embstr(连续&#xff0c;查一次内存),raw&#xff08;查两次&#xff09; 效率 防止数据溢出 空间预分配 惰性空间释放 hash ziplist (数据量小) hashtable list ziplist (连续内存空间&#xff0c;访问效率高) quicklist&am…

QT CTK控件 CTK开发(二)

CTK 为支持生物医学图像计算的公共开发包,其全称为 Common Toolkit。为医学成像提供一组统一的基本功能;促进代码和数据的交互及结合;避免重复开发;在工具包(医学成像)范围内不断扩展到新任务,而不会增加现有任务的负担;整合并适应成功的解决方案。 本专栏文章较为全面…

【华为OD机试真题】预定酒店(javaC++python)100%通过率

预定酒店 知识点排序 时间限制:1s空间限制:256MB限定语言:不限 题目描述: 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为 n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格。 …

无线蓝牙耳机哪款音质好?目前音质最好的无线蓝牙耳机推荐

现如今&#xff0c;蓝牙耳机已经是一个非常实用且常见的数码产品了&#xff0c;不少人喜欢戴着蓝牙耳机听歌&#xff0c;玩游戏。一款音质好的蓝牙耳机不止能听个响&#xff0c;还能给人极致的听觉享受。在此&#xff0c;我来给大家分享几款目前音质最好的无线蓝牙耳机&#xf…