编程计算加油轮次 —— 外国人是怎么省油的

我最近在开一辆烧 93 号汽油的车子。根据汽车制造商的说法,它只需要加 91 号汽油就可以了。然而,在美国只能买到 87 号、89 号、93 号汽油。而我家附近的汽油物价水平是每增加一号,每加仑就要多付 30 美分,因此如果加 93 号汽油,每加仑就要多花 60 美分。为什么不能节省一些钱呢?

一开始很简单,只需要先加满 93 号汽油,然后在油量表显示油箱半满的时候,用 89 号汽油加满,就得到一整箱 91 号汽油了。但接下来就麻烦了,剩下半箱 91 号汽油加上半箱 93 号汽油,只会变成一箱 92 号汽油,再接下来呢?如果继续算下去,只会越来越混乱。这个时候 Python 就派上用场了。

我的方案是,可以根据汽油的实时状态,不断向油箱中加入 93 号汽油或者 89 号汽油,而最终目标是使油箱内汽油的号数不低于 91。我需要做的是只是通过一些算法来判断新旧汽油混合之后的号数。使用多项式方程或许也可以解决这个问题,但如果使用 Python,好像只需要进行循环就可以了。

#!/usr/bin/env python

# octane.py

o = 93.0

newgas = 93.0 # 这个变量记录上一次加入的汽油号数

i = 1

while i < 21: # 20 次迭代 (加油次数)

    if newgas == 89.0: # 如果上一次加的是 89 号汽油,改加 93 号汽油

        newgas = 93.0

        o = newgas/2 + o/2 # 当油箱半满的时候就加油

    else: # 如果上一次加的是 93 号汽油,则改加 89 号汽油

        newgas = 89.0

        o = newgas/2 + o/2 # 当油箱半满的时候就加油

    print (str(i) + ‘: ‘+ str(o))

    i += 1

在代码中,我首先将变量 o(油箱中的当前混合汽油号数)和变量 newgas(上一次加入的汽油号数)的初始值都设为 93,然后循环 20 次,也就是分别加入 89 号汽油和 93 号汽油一共 20 次,以保持混合汽油号数稳定。

1: 91.0

2: 92.0

3: 90.5

4: 91.75

5: 90.375

6: 91.6875

7: 90.34375

8: 91.671875

9: 90.3359375

10: 91.66796875

11: 90.333984375

12: 91.6669921875

13: 90.3334960938

14: 91.6667480469

15: 90.3333740234

16: 91.6666870117

17: 90.3333435059

18: 91.6666717529

19: 90.3333358765

20: 91.6666679382

从以上数据来看,只需要 10 到 15 次循环,汽油号数就比较稳定了,也相当接近 91 号汽油的目标。这种交替混合直到稳定的现象看起来很有趣,每次交替加入同等量的不同号数汽油,都会趋于稳定。实际上,即使加入的 89 号汽油和 93 号汽油的量不同,也会趋于稳定。

因此,我尝试了不同的比例,我认为加入的 93 号汽油需要比 89 号汽油更多一点。在尽量少补充新汽油的情况下,我最终计算到的结果是 89 号汽油要在油箱大约7/12满的时候加进去,而 93 号汽油则要在油箱1/4满的时候才加进去。

我的循环将会更改成这样:

if newgas == 89.0:

    newgas = 93.0

    o = 3*newgas/4 + o/4

else:

    newgas = 89.0

    o = 5*newgas/12 + 7*o/12

以下是从第十次加油开始的混合汽油号数:

10: 92.5122272978

11: 91.0487992571

12: 92.5121998143

13: 91.048783225

14: 92.5121958062

15: 91.048780887

如你所见,这个调整会令混合汽油号数始终略高于 91。当然,我的油量表并没有 1/12 的刻度,但是 7/12 略小于 5/8,我可以近似地计算。

一个更简单地方案是每次都首先加满 93 号汽油,然后在油箱半满时加入 89 号汽油直到耗尽,这可能会是我的常规方案。就我个人而言,这种方法并不太好,有时甚至会产生一些麻烦。但对于长途旅行来说,这种方案会相对简便一些。有时我也会因为油价突然下跌而购买一些汽油,所以,这个方案是我可以考虑的一系列选项之一。

当然最重要的是:开车不写码,写码不开车!

via: https://opensource.com/article/18/10/python-gas-pump

作者:Greg Pittman 译者:HankChow 校对:wxy 编译:Linux.cn

用Ubuntu构建开源数字取证工具 —— Bitscout

面对真实的网络犯罪现场,司法线索必须保证不被篡改,这也是某些调查耗费了大量时间的一个主要原因。其需要有关工作人员跑到罪案现场,并在不破坏证据的情况下提取恶意软件样本。

为了解决打击网络犯罪的这个巨大痛点,卡巴斯基实验室特地发布了一款免费的网络取证工具,它就是 Bit Scout 。其允许研究人员“远程收集重要的司法鉴定材料,通过网络(或本地附加存储)获得完整的磁盘镜像,或者远程协助处理恶意软件事宜”。

最开始这只是卡巴斯基工作人员Vitaly Kamluk的个人项目,但随着卡巴斯基对数字取证工具方面的需求不断增长,这个项目也一直在被不断改进。

在谈到自己的作品时,Vitaly Kamluk表示:“Bitscout项目开始于多年之前,最早是我的一项兴趣。我一直在研究LiveCD的制作和定制。

后来,我们需要在非洲一个国家的一台受感染计算机上查找攻击者踪迹,我认为自己可以帮忙。我在Linux上制作了一个简单和简化的LiveCD,预配置了VPN客户端和SSH服务器,并通过互联网将其分享给系统所有者。

他利用其烧制了光盘,通过光盘启动了受感染计算机。

这个工具非常好用,我可以通过互联网,连接到远程计算机,并且完全控制它。虽然连接很慢,但幸运的是,我使用的远程桌面访问工具对带宽要求不高。

一个文本终端就足够完成这项工作,通过较慢的拨号互联网服务也能够胜任。我设法帮助系统所有者获取到受感染系统的磁盘镜像,发现了恶意文件和相关文件的位置,最为重要的是,提取了有关威胁的重要信息,包括一个恶意软件释放器和造成感染的鱼叉式钓鱼邮件。

随着时间的推移,类似的情况出现过多次。在同国际刑警组织进行合作时,我们也采用了同样的模式:首先,执法人员前往物理磁盘采集地点,在得到当地执法机关的许可后,帮助我们在现场收集最重要的证据,而且速度非常快。这种方法节省了我们的出差时间,帮助执法机关快速获取网络攻击后留下的关键证据。”

此次发布的版本为Bitscout v2.0,其1.0版本至今未公开发布过。这款工具可以帮助取证调查人员对目标系统进行远程分析,并允许系统拥有者随时监控调查人员的取证活动以确保他们只能访问受限的目标磁盘。

无论是对于安全研究人员、网络犯罪执法部门或是教育机构,这都是一款非常棒的工具。

研究人员此次发布的是Bitscout的镜像文件,因此该工具必须写入一个可移动存储驱动器(U盘)中才可以使用。

让系统从U盘启动之后,研究人员可以使用VPN和SSH远程连接至Bitscout。Bitscout中包含了几种专门为取证分析而设计的热门工具,但用户也可以根据自己的需要来自定义配置这些工具或者添加其他工具。

为了帮助有兴趣的朋友把这款开源数字取证工具用起来,这里放上一则视频教程。

以便新手可以对照着在Ubuntu上构建出成品。

视频地址:http://v.qq.com/x/page/f0744agppqa.html

该工具的几个特点:

1.手动修复受感染的计算机(从rootkit感染中修复)。

2.共享远程会话,可以培训用户,提高分析的速度。

3.能够通过网络从原始服务器硬件克隆磁盘,不需要待在冰冷的服务器室监控整个进度。

4.避免图形界面连接效果不佳。Bitscout使用的是基于文本的用户交互界面(TUI)。

下载地址:

https://github.com/vitaly-kamluk/bitscout

The Kaspersky BitScout Cyber Forensics Tool Revealed

彭博商业周刊指责中国用间谍芯片渗透美国大厂

Bloomberg Businessweek(彭博商业周刊)近期发布一份报告称, 由于在设备制造过程中嵌入间谍芯片,亚马逊网络服务和苹果公司的数据中心设备可能受到中国政府的监视。

他们以“The Big Hack”为主题,称中方通过供应商将间谍芯片嵌入为美国制造的Supermicro主板,对美国顶尖企业进行渗透,受害者包括大型银行和美国政府合同商。

该报告称,测试人员在服务器主板上发现了一个比笔尖大不了多少的微型芯片,但这不是主板最初设计的一部分。根据彭博商业周刊的描述,该芯片的攻击过程如下:

彭博称美国政府早在2015年就启动了这项秘密调查,调查人员怀疑这些芯片被一家中国服务器公司组装后,被亚马逊和苹果部署在数据中心,用于收集美国公司的知识产权和商业机密。

不过,苹果和亚马逊AWS、Supermicro都否定了彭博的说法。

而有些电子发烧友则认为,那可能只是个普通滤波器,并不具备那些夸张的“间谍芯片”功能。

注:Supermicro(美国超微电脑股份有限公司)创立于 1993 年,总部设于美国加州圣何塞(San Jose),主要致力于为全球的企业IT、数据中心、云计算、高性能计算与嵌入式系统提供端到端计算解决方案。是世界上规模较大的服务器主板供应商之一。

用上Micro:bit离线开发工具Windows 10版本

Micro:bit 是一款由英国广播电视公司(BBC)为青少年编程教育设计,并由微软,三星,ARM,英国兰卡斯特大学等合作伙伴共同完成开发的微型电脑。

为了降低门槛,早期只提供了Web版的在线开发工具(makecode.microbit.org)供大家创作。

可随着玩家数量的增多以及对调试效率的追求,离线开发工具成为了很多玩家追求的目标。

后来官方提供了Android、iOS……等需要借助蓝牙,借助Web的伪离线版本。但始终没有为广大Windows用户提供一个支持积木编程的“真”离线版本。

前几天逛Windows App Store,突然发现 Micro:bit 官方 IDE 支持Windows 10了。

虽然还在BETA,但总比在线版好用多了 —— 代码编译下载后还要手动写入程序,效率很低。

该版本同时支持“积木”和 JavaScript 两种编程方式。界面和Web在线版一样,但不用担心像Web版那样,经常刷不出来。

写入程序时也不用多余工序 —— 在 Micro:bit 硬件联机状态点击“下载”即可。

怎么样?还不赶紧试一下,为自己提高创作效率。

另外也欢迎Micro:bit的同好关注我们的公众号“IoT前哨站”,一起来为物联网学习添砖加瓦。

加州首个“物联网安全法案”被批肤浅

加州首个“物联网安全法案”已经被放到了州长办公桌上等待签字,但其本身遭到了安全研究人员的大量批评。

专家指出,该法案明显是基于对此类问题的肤浅理解。该法案(SB-327)于 2017 年 2 月推出,比向美国参议院提出的《物联网网络安全改进法案》还要早半年。虽然后者已经蒙尘,但加州仍在积极推进,并于 8 月 28-29 日两天通过了州会和议院的批准。

如果没有公众或私营企业对其表示强烈反对,那在州长签署通过后,新法案将于 2020 年 1 月 1 日起生效。该法案主要规定了“连接设备的制造商们,应该为设备附上合理的安全功能”。

与大多数立法工作一样,该法案对于“合理安全性”的定义相当模糊,但在认证程序方面给出了详细说明。其写到 ——“若设备配备了局域网外的认证手段”,就必须满足两个标准之一:

(1)如果设备使用默认密码,则密码必须对每个设备是唯一的;

(2)当首次配置设备时,都必须提示用户设置自己的密码。

显然,法案为避免制造商对所有设备使用相同的默认凭证,而给出了硬性的规定。

不过信息安全研究专家罗伯特·格雷厄姆指出:

新法案的初衷是好的,但在当前的物联网市场下,它并不是特别有用、也无法解决困扰物联网设备的任何问题。

这是基于对‘增强安全功能’的误解,就像节食一样 —— 人们要求你坚持多吃蔬菜,但无力解决你正在吃薯片的问题!

格雷厄姆在昨日的《法案分析》一文中写到:

节食的关键不是多吃,而是少吃一点,网络安全也是如此。其重点不在于增加‘安全特性’,而是移除‘不安全的功能’。

对物联网设备来说,这意味着在网络管理中删除侦听端口和跨站点/注入问题。

我们不希望在这些产品中增加防火墙和防病毒等任意功能,那样只会增加攻击面,是情况变得更加糟糕。

总而言之:“这项法律基于对问题明显肤浅的理解。它不会解决真正的威胁,反而会给消费者带来巨大的‘创新’成本”。

[编译自:ZDNet]

IoT前哨站:大家怎么看待这个问题?

用树莓派实现网站访客LED闪亮提醒

用树莓派实现网站访客LED闪亮提醒,每当有用户访问你博客时LED就会闪一下,闪得频率越快访问者越多。

以下是清单列表:

LED 1个、公/母杜邦线2条、220欧姆电阻1个、面包版1个。
首先我们先来安装WiringPi(通过它我们可以用php来控制GPIO)

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build

下面我们开始链接LED到GPIO,直接看图就好,你可以连接到任何一个绿色的借口,我们这里连接的是GPIO.0(LED正负极我就不讲了自己百度吧),PS,图不是我画的如果严谨点GND应该用黑线。

好了接下来我们来写点PHP代码,可以直接嵌入到网站的PHP页面内。

<? php
exec(“gpio mode 0 out”);/*mode 0就是蓝线插入的针脚,可以使用0-7*/
exec(“gpio write 0 1”);/*点亮led*/
exec(“gpio write 0 0”);/*关闭led*/
? >

到这里我们的游客提醒功能就完成了,各位还可以发挥想象力,比如用三(绿,黄,红)显示剩余内存,CPU使用率等等。

CoinHive挖矿劫持仍在肆虐 至少28万路由器被检出感染

最近几年,区块链领域闹出了许多幺蛾子。比如为了攫取不当的加密货币挖矿收益,某些人制作了能够窃取设备算力的恶意软件,有几个挖矿网络的受害者规模甚至相当庞大。就在过去几天,研究人员发现了另外 3700 台秘密运行恶意的加密货币挖矿软件的路由器。

截止目前,此类受感染设备的总数已经超过了 28 万台 —— 仅在 30 天的时间里,就增加了 8 万。

8 月初的时候,这波攻击就已经登上了媒体的头条。当时黑客利用此前未被发现的漏洞,入侵了巴西的 20 多万台路由器。

攻击者成功地对 MicroTik 路由器实施了“零日攻击”,为其注入了 CoinHive 的修改版本。CoinHive 的一小段代码,支持利用简易的浏览器来挖掘门罗币。

最近的研究表明,该加密货币僵尸网络,每月有超过 25 万美元的产出。不过安全人员指出,挖矿劫持不是 MicroTik 路由器面临的唯一威胁。

一款危险的、名叫 Android Banker 的特洛伊木马病毒,当前正在互联网上传播。继 1 月首次曝光后,已有近 200 个针对性的网银应用受害。

Android Banker 可以绕过双因素认证,来窃取用户名和密码。若不幸受到影响,还请将所有账号的用户名和密码都重置,比如流行的 Bitfinex 和 Blockfolio 。

安全研究人员 Lukas Stefanko 指出,因其能够动态改变、针对特定的受害者进行定制,所以是一个相当危险的威胁。

由于 Android Banker 主要通过虚假版本的 Adobe Flash Player 分发,因此普通人可以相对简单地避开大部分雷区 —— 确保未知来源的应用程序被阻止且无法运行。

如果你对本文所述的木马和恶意软件的细节感兴趣,并希望知晓如何制定让公司免受网络钓鱼攻击的安全策略,可移步至这里查看(传送门)。

[编译自:TNW]

研究员利用 AI 打击盗猎大象活动

美国 Cornell University 的 Elephant Listening Project 是利用录音数据来追踪非洲森林象的计划,他们通过研究动物的呼叫声来协助研究员追踪大象族群的数目,最终更希望借此保护大象免受偷猎者的伤害。可是这计划在每 3 个月就会获得 7TB 数据需要处理,通常都要 12 星期的时间才能分析完成,在忙于处理数据时就可能已经出现了新威胁,所以研究员就希望利用 AI 来加速分析追踪数据的过程。

Elephant Listening Project 是与一家专门开发分析音频数据的 AI 的新创公司 Conservation Metrics 合作,利用后者的 AI 来大大减少收集数据和分析的所需时间。据 Elephant Listening Project 的负责人 Peter Wrege 所道,这合作的重点为加速,让他们能更快地提供分析结果予国家公园的管理人员,让他们作出应对措施;如果要花逾年的时间才能知道大象在公园里的活动,那已经为时已晚。

目前预计有约 40,000 头森林象栖息于中非,数字已经比十年前大减 60%,其中盗猎活动是大象数目锐减的最大原因。科学家发现在加蓬(Gabon)就有 25,000 头森林象在 2004 年至 2014 年间被杀;刚刚过去的一星期,Elephants Without Borders 就在野生动物保护区附近发现有 90 头大象的尸体,全都因为盗猎活动而死亡。

目前 Conservation Metrics 已经能在 22 天内完成分析,并持续努力缩短需时。据指他们最近成功加入微软的 AI for Earth 计划并能利用 Azure 服务,这有望把分析时间缩短至一天。Wrege 表示,音频数据是会源源不绝地记录下来,但这方法能让我们定期从中获得有用信息。即使这挑战是令人生畏的,但是值得的,而且能够克服下去的,只要坚持到底就可以了。

经由: Engadget
来源: Cornell University

美军火商邀大众开发更迅捷的 AI 无人机导航系统

当前,自动驾驶的无人机很少能进行高速飞行,更别说挑战专业的竞速飞手了。

Lockheed Martin(洛克希德.马丁)与 Drone Racing League(无人机竞速联盟)想要逆转这现况,两者合作开展 AlphaPilot Innovation Challenge,鼓励大众开发高速飞行的无人机 AI 系统,并在DRL联盟的比赛中取得胜利。

AlphaPilot Innovation Challenge既是一项合作,又是一项挑战赛,参与的开发者不仅需要将AI系统开发出来,更需要赢得这场比赛。据悉,参赛的开发者可以在NVIDIA Jetson的平台上开发AI,以便让开发好的AI系统能够转移到联盟的AIRR电路板上使用。

这挑战会在2018年 11 月正式开始,奖金总额达 200 万美元,而且还有额外 25 万美元的奖金来鼓励首个能击败专业 DRL 飞手的 AI 系统开发者。

这计划除了宣传无人机竞速联盟之外,对于洛马来说,更能借助通过 AlphaPilot 的技术来开发无人航机(民用或军用),带来更便宜、更具弹性的操作方案。

来源: Lockheed Martin

好消息 —— GCC 编译器已接纳 OpenRISC 的移植版本

近期,GCC 发布公告称 ,GCC 指导委员会已接受 OpenRISC 作为包含在 GCC 编译器的最新架构移植,并指派 Stafford Horne 为维护者。这个 OpenRISC 移植应该会在不久的将来落地使用,以便明年发布的 GCC 9 稳定版提供该功能。

与 RISC-V 指令集架构相比,虽然 OpenRISC 对 GCC 的支持时间比它更长,但 OpenRISC 移植遇到了复杂的问题 —— 关于代码版权方面的问题。负责 OpenRISC GCC 代码的原始开发者无法满足自由软件基金会代码所需的版权分配作为上游工作的要求。

因此,开发者最终为 GCC 重写了 OpenRISC 编译器代码。该代码已经发布,GCC 指导委员会也已确认其将会成为 GCC 最新的处理器目标。

OpenRISC 是 OpenCores 组织提供的基于 GPL 协议的开源 RISC(精简指令集计算机)处理器。有人认为其性能介于 ARM7 和 ARM9 之间,适合一般的嵌入式系统使用。最重要的一点是 OpenCores 组织提供了大量的开源 IP 核供研究人员使用,因此对于一般的开发单位具有很大的吸引力。

OpenRISC 具有以下特点:

1、采用免费开源的 32/64bit RISC/DSP 架构。

2、用 Verilog HDL(硬件描述语言) 实现了基于该 RISC/DSP 架构的 RTL(寄存器传输级) 描述。

3、具有完整的工具链,包括:开源的软件开发工具、C 语言实现的 CPU 仿真模型、操作系统,以及软件应用所需的函数库。