使用阿里云开发物联网应用 (一) - Hello world

本文记录 AliOS Things 开发板环境搭建, 编译及烧录方法, 全过程约30分钟.

1 集成开发环境

可参考阿里官方文档: https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-Studio

1.1 安装 Visual Studio Code (vscode)

从微软官网 https://code.visualstudio.com/ 下载并安装.

1.2 安装 alios-studio (alios.alios-studio) 插件

在 vscode 扩展中搜索 alios, 找到 alios-studio 插件并安装 1(安装后需要重启).

alios-studio 安装

1.3 安装硬件驱动程序 (开发板)

可以从ST(开发板主芯片)官网下载 或 上海诺行科技(开发板的代工厂)

1.4 安装其他依赖

可参考阿里官方文档: https://github.com/alibaba/AliOS-Things/wiki/Starter-Kit-Tutorial

2 下载并编译

  1. 使用 git 下载 AliOS Things 源码 git@github.com:alibaba/AliOS-Things.git
  2. 修改 example 目录下的 Helloword 文件源码, 点击状态栏的编译图标 √ 进行编译

Helloword 编译

3 连接并烧录

给开发板上电, 注意两个USB口, 只有一个是烧录口, 如下图所示:

开发板上电

点击烧录按钮 闪电图标 进行烧录 (Upload)

开发板烧录

4 查看打印信息

调试信息

Zero-Copy & sendfile 浅析

转自 https://www.cnblogs.com/duanxz/p/4611972.html posted on 2015-06-30 22:35 duanxz

一 典型IO调用的问题

一个典型的web服务器传送静态文件(如CSS,JS,图片等)的过程如下:

1
2
read(file, tmp_buf, len);
write(socket, tmp_buf, len);

首先调用read将文件从磁盘读取到tmp_buf,然后调用write将tmp_buf写入到socket,在这过程中会出现四次数据copy,过程如图1所示

图一

  1. 当调用read系统调用时,通过DMA(Direct Memory Access)将数据copy到内核模式
  2. 然后由CPU控制将内核模式数据copy到用户模式下的 buffer中
  3. read调用完成后,write调用首先将用户模式下 buffer中的数据copy到内核模式下的socket buffer中
  4. 最后通过DMA copy将内核模式下的socket buffer中的数据copy到网卡设备中传送。

从上面的过程可以看出,数据白白从内核模式到用户模式走了一 圈,浪费了两次copy,而这两次copy都是CPU copy,即占用CPU资源。

Read More

C++ 游戏服务器开发常用工具介绍

在软件开发过程中需要使用的工具类型实属众多,从需求建模到软件测试,从代码编译到工程管理,这些工具都对项目有着不可替代的作用。庄子有云,“吾生也有涯,而知也无涯,以有涯随无涯,殆已”。代入到项目开发中就是说,如果对知识点无差别的全面攻击,不仅会导致所学甚泛却无一深入的尴尬,也会占用太多的有效时间从而影响项目进度。作为一个C++游戏服务器开发者来说,我们时刻肩负着线上游戏开发和维护任务,可以优先学习对自己工作最常用且最重要的,解决实际问题最为紧迫。本文对一些常用工具给出了介绍和指引,包括调试器、内存泄露检查工具、代码覆盖工具、抓包工具、性能分析工具、静态代码检查工具、high cpu分析工具以及Lua脚本开发工具,旨在帮助经验不足的C++服务器开发工程师解决代码问题和提升代码质量,从而提升自己和团队的工作效率。

1 调试器

通常,调试(debugging)是指发现缺陷并改正的过程。如果代码中存在缺陷,我们首先要识别造成缺陷的根本原因(root cause),这个过程就称作调试。找到根本原因后,就可以修正缺陷。在软件开发周期中,调试并修正缺陷的时间可能远多于写代码的时间,有得心应手的工具可以节省调试时间无疑是非常重要的。

在linux下一般使用 GDB(GNU symbolic debugger)进行调试,它是一个受通用公共许可证即GPL保护的自由软件,可以调试多种语言。

用法参考:http://www.gnu.org/software/gdb/
下载地址:http://ftp.gnu.org/gnu/gdb/

对GDB有一定了解的人会发现,GDB对STL的调试比较困难,这里推荐一个GNU提供的调试工具 ,使用python实现,支持C++11特性。

用法参考:http://sourceware.org/gdb/wiki/STLSupport
下载地址:svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

同时你可以使用一些前端工具如XXGDB,DDD等。它们都有图形化界面,因此使用更方便。也可以使用WinGdb,利用Visual Studio的IDE进行Linux远程调试。

下载地址:http://www.wingdb.com/

另外,如果你再程序中发现了和系统调用相关的问题,使用strace可以快速定位。strace能够跟踪进程执行时的系统调用和所接收的信号,并将相关调用信息放在输出流中。

下载地址:http://sourceforge.net/projects/strace/

在windows下一般使用 Visual Studio自带的调试工具,除此以外,也推荐使用WinDbg,它是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。

用法参考:http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx
下载地址:http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

Read More

物联网 - NB-IoT、eMTC、LoRa、Sigfox及ZigBee的应用场景

互联网连接的是电脑和手机,让人和人可以随时随地发消息。物联网连接的可能是你家的灯、水壶、门锁、管道、电表、水表,还有遛狗时路边的灯杆、上班路上的洒水车,小器件到大元件,种种包容万象,涉及的场景,也是上天入地。

  人的意识比物复杂,可物的世界比人繁杂,连接人和连接物所需的频谱完全不同。人希望24小时在线,随时联网发消息发视频,现在试试拿走一个人的手机看看,担心你会被打。可你家的灯没必要非和另一盏灯24小时联网随时在线吧,物联网使用早期无线网络的话,从耗能、流量及运行上就不太适合。

  无论是NB-IoT还是LoRa、eMTC等,长期看应该不可能出现王者垄断,想想看可乐还有百事、雪碧、芬达呢。在这些物联网网络连接技术里,用户可根据自身需求,选择适合的网络连接技术。毕竟没有完美的技术,只有适合的技术。那这篇从NB-IoT、LoRa、eMTC、SigFox及ZigBee各自特点分析下它们适用那些应用场景?

Read More

系统架构师教程 - 计算机结构及组成

随着工艺水平的提高,集成电路的集成程度越来越高,主频也不断提高,处理器的功能部件的计算能力越来越强(现在已经能够一拍就完成32位定点乘法),处理器的性能瓶颈不再再是处理器核心的计算能力了,而是突出表现为访存的瓶颈上了,“如何喂饱饥饿的CPU”成了处理器设计的主要问题,因此设计一个高效的,能尽量喂得快点的存储子系统对于当今的处理器设计越来越重要。

由于辅存(如硬盘)的访问速度太慢,根本无法喂饱饥饿的CPU,于是出现了主存,随着处理器性能提高,主存的速度也不够,根据局部性原理,于是出现了Cache,最早Cache做在片外,后来处理器性能提高了,做在外面也不行,于是做到了片内,之后为了更优化Cache,又出现了L1Cache,L2 Cache,甚至L3 Cache。随着SMP以及CMP的出现,存储一致性问题愈加突出,成为影响程序执行是否正确的一个重要因素。

另一方面,随着多任务操作系统的引入,导致了逻辑地址(又叫虚拟地址)和物理地址的区分,为了建立虚拟地址VA和物理地址PA的映射关系,出现了页表机制。但是,直接在主存中查找页表进行虚实地址转化的代价太高了,于是又出现了旁路转换缓冲TLB(又称为页表缓冲,Translation lookaside buffer),还是根据局部性原理,通过将最常使用或者最近使用的页表直接保存在处理器核内,可以大大的提高虚实地址转换的速度,提高处理器的整体性能。

纵观真个处理器存储系统的发展,其基本目的都是喂饱CPU,设计的基本依据都是程序的时间局部性和空间局部性。

计算机结构及组成

10种常见的软件架构模式

转自: http://www.techug.com/post/10-common-software-architectural-patterns-in-a-nutshell.html 20180126

原文地址: 10 Common Software Architectural Patterns in a nutshell

有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的体系结构。

软件架构模式

Read More

史上最污技术解读

转自: http://www.techug.com/post/most-dirty-tech-explain.html 20180129

假设你是个妹子,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友好,又不是恋人。你随时可以甩了现任男友,另外一位马上就能补上。这是冷备份

假设你是个妹子,同时和两位男性在交往,两位都是你男朋友。并且他们还互不干涉,独立运行。这就是双机热备份

假设你是个妹子,不安于男朋友给你的安全感。在遥远的男友未知的地方,和一位男生保持着联系,你告诉他你没有男朋友,你现在处于纠结期,一旦你和你男朋友分开了,你马上可以把自己感情转移到异地男人那里去。这是异地容灾备份

假设你是个妹子,有一位男朋友,你又付了钱给一家婚姻介绍所,让他帮你留意好的资源,一旦你和你这位男朋友分开,婚姻介绍所马上给你安排资源,你感情不间断运行,这是云备份。。。。

假设你是个妹子,你怀疑男朋友对你的忠诚,在某宝购买了一个测试忠诚度的服务。这是灾难演练友情提醒,在没有备份的情况下,切忌进行灾难演练,说不好会让你数据血本无归。

Read More

The Shadow Brokers "Lost In Translation" leak

https://github.com/misterch0c/shadowbroker

Exploits

  • EARLYSHOVEL RedHat 7.0 - 7.1 Sendmail 8.11.x exploit
  • EBBISLAND (EBBSHAVE) root RCE via RPC XDR overflow in Solaris 6, 7, 8, 9 & 10 (possibly newer) both SPARC and x86.
  • ECHOWRECKER remote Samba 3.0.x Linux exploit.
  • EASYBEE appears to be an MDaemon email server vulnerability
  • EASYFUN EasyFun 2.2.0 Exploit for WDaemon / IIS MDaemon/WorldClient pre 9.5.6
  • EASYPI is an IBM Lotus Notes exploit that gets detected as Stuxnet
  • EWOKFRENZY is an exploit for IBM Lotus Domino 6.5.4 & 7.0.2
  • EXPLODINGCAN is an IIS 6.0 exploit that creates a remote backdoor
  • ETERNALROMANCE is a SMB1 exploit over TCP port 445 which targets XP, 2003, Vista, 7, Windows 8, 2008, 2008 R2, and gives SYSTEM privileges (MS17-010)
  • EDUCATEDSCHOLAR is a SMB exploit (MS09-050)
  • EMERALDTHREAD is a SMB exploit for Windows XP and Server 2003 (MS10-061)
  • EMPHASISMINE is a remote IMAP exploit for IBM Lotus Domino 6.6.4 to 8.5.2
  • ENGLISHMANSDENTIST sets Outlook Exchange WebAccess rules to trigger executable code on the client’s side to send an email to other users
  • EPICHERO 0-day exploit (RCE) for Avaya Call Server
  • ERRATICGOPHER is a SMBv1 exploit targeting Windows XP and Server 2003
  • ETERNALSYNERGY is a SMBv3 remote code execution flaw for Windows 8 and Server 2012 SP0 (MS17-010)
  • ETERNALBLUE is a SMBv2 exploit for Windows 7 SP1 (MS17-010)
  • ETERNALCHAMPION is a SMBv1 exploit
  • ESKIMOROLL is a Kerberos exploit targeting 2000, 2003, 2008 and 2008 R2 domain controllers
  • ESTEEMAUDIT is an RDP exploit and backdoor for Windows Server 2003
  • ECLIPSEDWING is an RCE exploit for the Server service in Windows Server 2008 and later (MS08-067)
  • ETRE is an exploit for IMail 8.10 to 8.22
  • ETCETERABLUE is an exploit for IMail 7.04 to 8.05
  • FUZZBUNCH is an exploit framework, similar to MetaSploit
  • ODDJOB is an implant builder and C&C server that can deliver exploits for Windows 2000 and later, also not detected by any AV vendors
  • EXPIREDPAYCHECK IIS6 exploit
  • EAGERLEVER NBT/SMB exploit for Windows NT4.0, 2000, XP SP1 & SP2, 2003 SP1 & Base Release
  • EASYFUN WordClient / IIS6.0 exploit
  • ESSAYKEYNOTE
  • EVADEFRED

Utilities

  • PASSFREELY utility which “Bypasses authentication for Oracle servers”
  • SMBTOUCH check if the target is vulnerable to samba exploits like ETERNALSYNERGY, ETERNALBLUE, ETERNALROMANCE
  • ERRATICGOPHERTOUCH Check if the target is running some RPC
  • IISTOUCH check if the running IIS version is vulnerable
  • RPCOUTCH get info about windows via RPC
  • DOPU used to connect to machines exploited by ETERNALCHAMPIONS
  • NAMEDPIPETOUCH Utility to test for a predefined list of named pipes, mostly AV detection. User can add checks for custom named pipes.

Kali Linux Metapackages

Metapackages give you the flexibility to install specific subsets of tools based on your particular needs. For instance, if you are going to conduct a wireless security assessment, you can quickly create a custom Kali ISO and include the kali-linux-wireless metapackage to only install the tools you need.

For more information, please refer to the original Kali Linux Metapackages blog post.

  • kali-linux : The Base Kali Linux System
  • kali-linux-full : The Default Kali Linux Install
  • kali-linux-all : All Available Packages in Kali Linux
  • kali-linux-sdr : Software Defined Radio (SDR) Tools in Kali
  • kali-linux-gpu : Kali Linux GPU-Powered Tools
  • kali-linux-wireless : Wireless Tools in Kali
  • kali-linux-web : Kali Linux WebApp Assessment Tools
  • kali-linux-forensic : Kali Linux Forensic Tools
  • kali-linux-voip : Kali Linux VoIP Tools
  • kali-linux-pwtools : Kali Linux Password Cracking Tools
  • kali-linux-top10 : Top 10 Kali Linux Tools
  • kali-linux-rfid : Kali Linux RFID Tools

Kali Linux - Stress Testing Tool

DHCPig

Keywords: DHCP

DHCPig initiates an advanced DHCP exhaustion attack. It will consume all IPs on the LAN, stop new users from obtaining IPs, release any IPs in use, then for good measure send gratuitous ARP and knock all windows hosts offline. It requires scapy >=2.1 library and admin privileges to execute. No configuration necessary, just pass the interface as a parameter. It has been tested on multiple Linux distributions and multiple DHCP servers (ISC,Windows 2k3/2k8).

Source: https://github.com/kamorin/DHCPig

DHCPig Homepage | Kali DHCPig Repo

  • Author: kamorin
  • License: GPLv2

Read More