30行代码,让27吨发电机原地爆炸

Wesley13
• 阅读 413

30行代码,让27吨发电机原地爆炸

30行代码,让27吨发电机原地爆炸

30行代码,让27吨发电机原地爆炸

点击上方 蓝字关注我们

30行代码,让27吨发电机原地爆炸

点击上方“ 印象python ”,选择“ 星标 ”公众号

重磅干货,第一时间送达!

30行代码,让27吨发电机原地爆炸

正文

只需要30行代码 (约140KB的文件),就能让20吨的发电机原地爆炸?

这一幕确实发生在了美国爱达荷州的测试场地上。

黑客模拟者将大约30行代码推进保护继电器中,不到23秒,机器就已经开始摇晃。

30行代码,让27吨发电机原地爆炸

又过了几秒钟,发电机开始冒黑烟,最后直接爆炸。

30行代码,让27吨发电机原地爆炸

从黑客攻击手段,回溯一项实验

事情得从美国司法局这周起诉的6名黑客说起。

这6名黑客的组织名为Sandworm,被认为不仅在2016年对乌克兰的电网进行了攻击,造成停电和物理设备损害;还恶意破坏了2018年的韩国冬奥会。

30行代码,让27吨发电机原地爆炸

然而在调查他们的攻击手段时,人们发现,早在十年前,就已经有一位网络安全研究者进行过了类似的测试方法。

这是美国国安部进行的一项秘密实验,当时的一位员工迈克·阿桑特(Mike Assante)仅用30行代码,对重达27吨的发电机进行了代码攻击,就成功让后者发生了爆炸。

30行代码,大约是140KB的文件大小(比一个常见表情包还小)。

30行代码,让27吨发电机原地爆炸

这个gif大小约为75KB,文件不超过它的两倍

这项实验被称为Aurora发电机测试,目前,它再一次引起了人们对大型设备可能遭受网络攻击的重视。

至于爆炸的原理,还得从发电机构造谈起。

发电机的“保护壳”,变成了攻击利器

传统柴油发电机包含一个名为保护继电器的设备,相当于电路中的一个应急闸门。

一旦保护继电器检测到线路过热、或者发电不同步,那么它就会认为电路异常,从而立刻断开电路连接。

同步发电机,利用旋转的转子磁场在定子中感应发电。其中,转子用于旋转磁场,定子用于切割磁场,所以频率与转子一致,被称为同步发电。

30行代码,让27吨发电机原地爆炸

而一旦发电同步,那么它又会将电路再接通回来。

但也正因为它起着保护电路的作用,使得电路异常的检查任务全部压在了保护继电器上,一旦它出现问题,就可能成为攻击者的利器。

攻击者的基本思路是,想办法将同步器和同步检查继电器的工作“打乱”,使得发电机变速过快,最后“引火自焚”。

而这30行代码的逻辑,就是反向利用它的工作原理,在电路不同步时保持通电,电路同步时立刻断电。

为了验证这一想法的可实施性,研究人员阿桑特,在美国爱达荷州的测试场地上,将模拟黑客攻击的30行代码输入到保护继电器中,对这一安全装置进行了重新编码。

30行代码,让27吨发电机原地爆炸

在发电机运转时,保护继电器虽然观察到发电机已经完全同步,但仍然选择了立刻断开连接,使得发电机与系统其它电机断开,“卸下一身负担”,转速被提升到一个前所未有的值。

搜索公众号程序员小乐回复关键字“offer”,获取算法面试题和答案。

而当电路不同步时,保护继电器又将电路合上,这时候,其它旋转发电机将给它一个巨大的冲击。

几乎不到几十秒的时间,电路就遭到了破坏,如燎原之势一般席卷了整个发电机,造成了最终的破坏。

当然,这30行代码之所以能成功,离不开这种发电机的特殊构造。

30行代码,让27吨发电机原地爆炸

网友认为,如果当时发电机电网系统加上了反向功率,以及磁极滑动保护、瞬时过流保护、AVR励磁限制以及超速控制等装置,这样的危险就能够避免。

但,换作其他发电机,就完全能避免受到攻击了吗?

电机种类有限,攻击方法却有千百种。

有网友认为,代码的行数、文件大小不重要,只要发电机存在漏洞,就无法避免会遭受这样的黑客攻击。

所以,对于任何系统来说,安防都是至关重要的。

网友:又一场没有硝烟的战争

有网友看后感叹,科技升级了战场,哪怕没有枪,靠键盘就能将对手麻痹。(嗯…你指哪方面?)

30行代码,让27吨发电机原地爆炸

此外,也有网友调侃,YAML不能被用于配置27吨发电机的原因找到了。

30行代码,让27吨发电机原地爆炸

但也有网友表示,电网崩溃所带来的恐怖影响,甚至令人难以想象。

30行代码,让27吨发电机原地爆炸

你认为呢?

参考链接:
https://www.wired.com/story/how-30-lines-of-code-blew-up-27-ton-generator/
https://en.wikipedia.org/wiki/Aurora\_Generator\_Test
https://news.ycombinator.com/item?id=2486955

回复下方 「关键词」,获取优质资源

30行代码,让27吨发电机原地爆炸

回复关键词 「linux」,即可获取 185 页 Linux 工具快速教程手册和154页的Linux笔记。

回复关键词 「Python进阶」,即可获取 106 页 Python 进阶文档 PDF

回复关键词 「Python面试题」,即可获取最新 100道 面试题 PDF

回复关键词 「python数据分析」,即可获取47页python数据分析与自然语言处理的 PDF

回复关键词 「python爬虫」,满满五份PPT爬虫教程和70多个案例

回复关键词 「Python最强基础学习文档」,即可获取 168 页 Python 最强基础学习文档 PDF,让你快速入门Python

==========================================================================================================================================================================================================================================================================================================================================================================

30行代码,让27吨发电机原地爆炸

**推荐我的微信号

**

30行代码,让27吨发电机原地爆炸

来围观我的朋友圈,我的经验分享,技术更新,不定期送书,坑位有限,速速扫码添加!
备注:开发方向_昵称_城市,另送你10本Python电子书。

点点在看行不行

本文分享自微信公众号 - 印象Python(Python_logic)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
17张程序员专用的电脑壁纸
!(https://oscimg.oschina.net/oscnet/220dde2448be4f7090da175592bd00f9.gif)1、三思后再写代码!!!!(https://oscimg.oschina.net/oscnet/2babd54776e4453d9872ae80efb1fa1d.png)
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这