第17节-BLE安全管理概述】的更多相关文章

安全管理是BLE中最复杂的内容,涉及LL层.SM层.GAP层 一.妈妈的担心 1. 白名单: 妈妈说,你只能跟A.B.C这3个好孩子玩:他们打电话给你,你才可以出去玩. A.B.C三人,就在妈妈的“白名单”里. 如果坏小孩D打电话时冒充是B,这怎么办? 妈妈有高招,记得B的声音. 妈妈心里想,这人的声音不是ABC任何一个,肯定是坏小孩. 这两者结合在一起就是: 是否使用白名单,就看你妈妈是否开明了. 类比于BLE,有下图: 可解析列表中会有一个IRK,IRK所对应的是设备的实体地址.ABC同学会…
原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的UI界面基本组件. 一.认识TextView 我们知道前面学习的HelloWorld应用程序中就是使用的TextView来显示一个文本,接下来首先一起来学习TextView的使用方法. TextView的作用就是在界面上显示文本.TextView直接继承了 View,是EditText.Button…
第7.17节  Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析 静态方法也是通过类定义的一种方法,一般将不需要访问类属性但是类需要具有的一些能力可以静态方法提供. 一.    静态方法定义 1.    语法 @ staticmethod  def 方法名(参数): 方法体 2.    定义说明: 1)    上述语法定义中,@ staticmethod 称为静态方法装饰器,凡是静态方法定义都必须有该装饰器. 2)    静态方法与实例方法和类方法不同的是,没有类…
本篇博客根据韦大仙的视频,整理所得. 对于BLE系统,它分为上下两块.上面那一块,我们称为host主机.下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片. 对于host这一块,它运行于linux android 单片机 ,它是纯软件的概念.它和蓝牙芯片之间通过usb口或串口来传输数据.那么对于host和controller中的各个层,它们是如何表示数据的呢?本篇博客就来讨论这个问题. 例子1: 打包: 甲公司A1想给乙公司A2'发送一封信,于是甲公司A1就构造了一个数据包:f…
学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Protocol Specification 建议先复习<BLE协议各层的形象化理解>,下面是我们之前用来类比的医院结构图: 下面这个图是BLE协议各层跟医院的各个科室的类比图: Controller就是快递公司,它知道把数据发给对方哪一个设备,但是它不能进入对方内部. L2CAP是“收发室”,它熟知Hos…
学习资料: 1. 蓝牙协议core_v5.0.pdf <Vol 2: Core System Package [BR/EDR Controller volume]>的“Part E: Host Controller Interface Functional Specification” 2. BTStack源码 对于被动扫描,周边的外设会给controller发送各种广播包,解析广播包,从而得到设备的信息. 对于主动扫描,除了被动的获得广播包外,controller还可以给某个设备发出扫描请求…
本篇博客的学些要结合书籍<低功耗蓝牙开发权威指南,Robin Heydon著>第7章,实际上这书只是对蓝牙原版协议的简化.摘要. 回顾以前学过的<BLE协议各层的形象化理解>和<BLE协议各层数据格式概述> 一  链路层的5种状态: 就绪态(Stanby).扫描态(Scanning).广播态(Advertsing).发起态(Initiating).连接态(Connection). 扫描态有2种子状态:被动扫描(Passive Scanning).主动扫描(Active…
JAVA概述 Java版本 原网址(https://www.oracle.com/java/technologies/java-se-support-roadmap.html) Oracle 将仅将某些版本指定为长期支持 (LTS) 版本.Java SE 7.8.11 和 17 是 LTS 版本.Oracle 打算每两年发布一次未来的 LTS 版本,这意味着下一个计划的 LTS 版本是 2023 年 9 月的 Java 21. 目前实际开发中用的最多的是Java8. Oracle Java SE…
本文目录列表: 1.什么是时间粒度?2.SQL Server提供的时间粒度3.SQL Server时间粒度代码演示   4.SQL Server基准日期 5.总结语6.参考清单列表   什么是时间粒度?        我们知道比如年.季度.月.旬(一个月分为上中下3旬).日这样的时间单位:也知道小时.分钟.秒:也有短于秒的比如毫秒.微妙.纳秒.飞秒等等时间单位.基于不同的时间,我们可以将时间粒度看作不同时间单位的时间值.       举个例子来说明时间粒度这个问题.一个日期时间值是'2016-0…
JavaScript概述 学习要点: 1.什么是JavaScript 2.JavaScript特点 3.JavaScript历史 4.JavaScript核心 5.开发工具集 JavaScript诞生于1995年.它当时的目的是为了验证表单输入的验证.因为在JavaScript问世之前,表单的验证都是通过服务器端验证的.而当时都是电话拨号上网的年代,服务器验证数据是一件非常痛苦的事情. 经过许多年的发展,JavaScript从一个简单的输入验证成为一门强大的编程语言.所以,学会使用它是非常简单的…
本节内容: 1:为什么要有二维数组 2:二维数据 3:实例二维数组声明 4:二维数组的使用 1:为什么要有二维数组 2:二维数据声明 3:实例二维数组声明 4:二维数组的使用 foreach遍历 5:三维数组了解…
本篇博客由韦东山视频整理所得 如何控制链路层让其发出广播包.数据包?通过HCI层向它发出命令,也可以通过ATT层.L2CAP层向LL层发出数据. 学习资料: 蓝牙协议core_v5.0.pdf <Vol 4: Host Controller Interface [Transport Layer]> BTStack源码 回顾一下<开源蓝牙协议栈BTStack框架代码阅读>. BLE协议在硬件上分为上下两部件:主机(Host,PC.单片机.Linux板).控制器(蓝牙模块),如下图所示…
对于软件的人来说,物理层关注的内容会少一点.在前面的博客中,我们以快递员类比物理层,对于快递员来说,道路千万条,这条不通换另外一条.对于物理层来说也是一样的,它有很多频率,这个频率有冲突了,将会切到另一个频率上面. 举例:深圳比较有两个比较出名的电台:105.7MHZ 和106.2MHZ 注意:当说105.7MHZ时,是指该频率的周围一段都属于105.7MHZ.对于106.2MHZ的频率也是这样的.记住,它并不仅仅指一个值.数据是在该频段范围内传输,数据并不是仅仅在105.7MHZ或106.2M…
在上几篇博客中,形象的讲解了BLE各个层的作用,各个层的数据结构.本篇博客将研究BLE协议抓包.在实际开发中,有一个中央设备(central)和一个外设(Peripheral).所谓中央设备就是指它可以识别出周边的蓝牙设备,可以发起连接.所谓外设就是手环等.中央设备和外设之间传递数据,我们使用一个抓包工具sniffer,来抓取空中传递的数据,进而分析和调试.在实际开发中,抓包涉及的硬件框图如下: 但是在学习的过程中,使用下面的结构. 使用手机来模拟外设,在安卓手机上可以运行一个软件:com-bl…
本篇博客根据韦大仙视频,整理所得. 先上框图: ATT层 从ATT开始看,在上篇博客讲的医院结构里面有个检验室,检验室可以得到各项结果,但是它并不知道这些结果代表什么含义.类比的在BLE协议栈里面,ATT定义了各种属性.属性的操作方法,但是这些属性有什么作用,能给用户提供什么服务,它并不知道.举例如下:假设有两个蓝牙设备,一个是手机,一个是手环,此手环戴在手上可以监测心跳.在ATT这一层,手环提供数据,它是一个服务器.另一边的手机从手环获取数据,它是一个client. 在手环服务器这边,它定义了…
1. 概述   蓝牙协议是由SIG制定并维护的无线通信协议,蓝牙协议栈是蓝牙协议的具体实现.各厂商都根据蓝牙协议实现了自己的一套函数库--蓝牙协议栈,所以不同厂商的蓝牙协议栈之间虽然存在差别,但是都遵循同一套蓝牙协议.   蓝牙技术的实质是建立通用无线接口及其控制软件的标准,使移动通信与计算机网络之间能实现无缝连接.蓝牙通讯最初设计初衷是方便移动电话(手机)与配件之间进行低成本.低功耗无线通信连接.   标准号:IEEE802.15.1   核心技术:低功耗,即Low Energy 1.1 RF…
一. 引言 记得刚开始学习Python学习字符串相关内容的时候,查了很多资料,也做了些测试,对repr和str这两个函数的返回值老猿一直没有真正理解,因为测试发现这两个函数基本上输出时一样的.到现在老猿也不能说自己掌握Python的基础知识了,但到现在至少能说清楚repr和str这两个函数分别是干什么用的了. 前面几章分别介绍了__repr__方法和__str__方法的语法.作用.重写,并间或的进行了两者的一些关系说明,他们其实还对应了两个功用与方法一模一样的Python内置函数repr和str…
一. 引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>介绍了组匹配模式,在一个正则表达式内可以定义多个组,每个组都有一个顺序分配的序号,并且在代表匹配结果的匹配对象中能通过组序号去访问每个组的匹配结果.除了这种组序号访问方式之外,re模块还支持在匹配模式串中给组命名,并通过组名去访问组相关匹配数据,这就是正则表达式处理的命名组功能. 二. 语法 组命名的语法是在组匹配模式基础上扩展的,是在组的括号起始部分增加"?P&l…
一. 引言 一般情况下,没有特殊要求的客户,宽带服务提供商提供的上网服务,给客户家庭宽带分配的地址都是一个宽带服务提供商的内部服务地址,真正对外访问时通过NAT进行映射到一个公网地址,如果我们想确认自己的公网地址还不是很容易,但百度提供了一项服务,在百度查询时输入IP就可以查到浏览器所在本机的公网IP,利用该功能我们就可以查到本机公网IP,本节老猿就是要request+BeatifulSoap实现本机公网地址解析. 二. 百度公网地址解析过程分析 按<第14.3节 使用google浏览器获取网站…
老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法大全及对比分析>已经进行了详细介绍,为了章节的完整性在此将相关内容复制过来. 一. 概述 PyQt的图形界面应用中,事件处理类似于Windows系统的消息处理.一个带图形界面的应用程序启动后,事件处理就是应用的主循环,事件处理负责接收事件.分发事件.接收应用处理事件的返回结果,在程序中捕获应用关注的事件…
<html> <head> <title>内置对象</title> </head> <body> <div>内置对象</div> 1.Math <br/> <script type="text/javascript"> document.write("Math.E : ", Math.E,"<br/>"); docu…
原文:http://www.entityframeworktutorial.net/code-first/column-dataannotations-attribute-in-code-first.aspx Column属性可以应用于类的属性. 默认Code First约定创建与名称相同的列名称. Column 属性覆盖此默认约定. EF Code-First将在给定属性的Column属性中创建一个具有指定名称的列. 请看以下示例: using System.ComponentModel.Da…
正则表达式是可匹配文本片段的模式,一个正则表达式指定了一个与之匹配的字符串集合.最简单的正则表达式为普通字符串,与它自己匹配.如正则表达式'python'与字符串'python'匹配.通过匹配,可以在文本中查找模式对应的字符串,或将满足特定模式的字符串替换为新的字符串,以及将文本分割成片段. 正则表达式包含普通或者特殊字符,普通字符匹配自身,这是正则表达式的一种匹配模式:字符匹配,而特殊字符一般不匹配自身,如果要匹配自身需要用转义符转义表示匹配自身而不是作为特殊规则.re模块包括的特殊字符包括:…
原文:Android零基础入门第33节:Android事件处理概述 通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件.选框的状态切换事件. 一.Android事件处理 Android提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理. 基于监听的事件处理:主要做法就是为Android界面组件绑定特定的事件监听器,前面小节已经见到大量这种事件处理的示例. 基于回调的事件处理:主要做法就是重写Android组件特定的回调方法, 或者重写Ac…
第十六章 squid总结: 正向代理:yum  安装后清空防火墙即可正常使用,客户端设置浏览器 透明正向代理:vim  /etc/squid/squid.conf 59行:http_port  3128  transparent 62行:注释去掉 然后firewall-config把nat打开,并清空防火墙 客户端网关指向服务端 反向代理:在主配置文件中修改两行参数(详细见后面内容) 16.1.代理缓存服务器 squid是一款高性能的代理服务软件,通常用作web网站的前置缓存服务器.代替用户向网…
物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探 唐朝实验室 · 2015/10/30 10:22 Author: FengGou 0x00 目录 0x00 目录 0x01 前言 0x02 BLE概述 BLE 协议栈总览 GAP-通用访问规范 GATT-通用属性协议 0x03 BLE嗅探 0x04 伪造BLE通信 0x05 分析BLE私有数据协议(灯泡.跳蛋.小米手环) 1.YeeLight 2 代蓝牙灯泡 2.小爱爱智能跳蛋(这个真不是我的,某个小伙伴借给我研究的) 3.小米手环 番外篇:小…
原文:Android零基础入门第29节:善用TableLayout表格布局,事半功倍 前面学习了线性布局和相对布局,线性布局虽然方便,但如果遇到控件需要排列整齐的情况就很难达到要求,用相对布局又比较麻烦,为此Android系统中提供了表格布局. 一.认识TableLayout 表格布局就是让控件以表格的形式来排列控件,只要将控件放在单元格中,控件就可以整齐地排列,使用TableLayout标签. TableLayout继承了 LinearLayout,因此它的本质依然是线性布局管理器.每次向Ta…
原文:Android零基础入门第30节:两分钟掌握FrameLayout帧布局 前面学习了线性布局.相对布局.表格布局,那么本期来学习第四种布局--FrameLayout帧布局. 一.认识FrameLayout 帧布局是Android布局中最简单的一种,使用FrameLayout标签. 帧布局为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一 帧).釆用帧布局方式设计界面时,只能在屏幕左上角显示一个控件,如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示. 下表显示了 Fra…
原文:Android零基础入门第28节:轻松掌握RelativeLayout相对布局 在前面三期中我们对LinearLayout进行了详细的解析,LinearLayout也是我们用的比较多的一个布局.但在实际开发中使用LinearLayout远远不够,我们本期一起来学习RelativeLayout. 一.认识RelativeLayout RelativeLayout,又叫相对布局,使用RelativeLayout标签.相对布局通常有两种形式,一种是相对于容器而言的,一种是相对于控件而言的. 下表…