永不消逝的电波
来源:互联网 发布:commvault linux 编辑:程序博客网 时间:2024/04/27 13:31
文/漏洞盒子安全团队-雪碧
0×00 无线电发展简史
· 1837年,摩斯发明了电报,创造了摩斯密码(Morse code),开始了通信的新纪元。· 1865年,英国的麦克斯韦总结了前人的科学成果,提出电磁波学说。 · 1876年,贝尔发明了电话,能够直接将语言信号变为电能沿导线传送。 · 1887年,德国科学家赫兹(Hertz)用一个振荡偶子产生了电磁波,在历史上第一次直接验证了电磁波的存在。 · 1897年,意大利科学家马可尼(Marconi)在赫兹实验的基础上,实现了远距离无线电信号的传送,这个距离在当时不过一百码,但一年后他就实现了船只与海岸的通信。 · 1901年12月12日,马可尼做了跨越大西洋传送无线电信号的表演。这一次他把信号从英国的Cornwall发送到加拿大的Newfoundland。 马可尼因此获得1909年度诺贝尔奖。与他分享这一年度诺贝尔奖的是布劳恩(Braun),因为布氏发现金属硫化物具有单向导电性,这一成果可用于无线电接收装置。 · 1904年,英国科学家弗莱明(Fleming)获得了一项专利,在专利说明书中描述了一个高频交变电流整流用的两极真空管,标志着进入无线电电子学时代。 · 1906年,美国科学家弗雷斯特(Forest)发明了真空三极管,是电子技术发展史上第一个重要里程碑。同年,美国科学家费森登(Fessenden)在Massachusetts领导了第一次广播。 · 1912年,英国科学家埃克尔斯(Eccles)提出了无线电波通过电离层传播的理论,这一理论使得一群业余爱好者在1921年实现了短波试验性广播; 同年,美国的费森登(Fessenden)和阿姆斯特朗(Armstrong)改进了接收机的工作方式,发明了外差式接受系统,这种形式仍是目前许多无线电接收机的主要工作方式。
在新中国成立后相当长的一个时期内,由于考虑国家安全等问题,国家对无线电台实行“少设严管”的政策,无线电台成为军队、邮电、广播、公安和交通等国家要害部门进行信息通信的重要工具。改革开放以后,各种无线电新技术、新业务在国民经济和社会生活的各个领域得到了越来越广泛的应用,我国逐步成为全球无线电应用大国。
近年来,国际电联划分的43 多种无线电业务,已在我国通信、广电、铁路、交通、航空、航天、气象、渔业、科研等行业和领域得到广泛应用,有力地推动了经济和社会发展的进程。
0×01 电磁波与无线电
1. 混为一谈OR完全割裂
有人会把电磁波、光、无线电波混为一谈,也有人会把它们完全割裂开来,这些都是不正确的。
在快速变化的电流周围会产生电磁波,为了描述电磁波的特征,科学家们引入了频率、波长、波速三个物理参数:
物理量 概念 单位频率(f) 电磁波1s振荡的次数 赫兹(Hz)波长(λ) 电磁波每振荡一次向前传播的距离 米(m)波速(c) 电磁波每1s向前传播的距离 米/秒(m/s)公式 C=λf(波速=波长×频率)
2. 电磁波波段划分:
L波段、S波段、C波段、X波段、Ku波段、K波段、Ka波段。
这种划分方式是雷达业内的通俗叫法,没有一个严格、统一的标准。通常的划分是:
L波段 1~2GHz;S波段 2~4GHz;C波段 4~8GHz;X波段 8~12GHz;Ku波段 12~18GHz;K波段 18~27GHz;Ka波段 27~40GHz;U波段 40~60GHz;V波段 60~80GHz;W波段 80~100GHz.
3. 电磁波的速度&分类:
电磁波产生之后,传播时不需要任何介质,在真空中也能传播,其在真空中传播速度为固定值,是宇宙中物质运动的最快速度,与光速相同,数值为3×10^8 (3乘10的八次方) m/s;
电磁波根据波长的大小,分为短波、中波、长波、微波、红外线、可见光、紫外线、Χ射线、γ射线等。
4. 无线电波传播途径:
无线电波广泛地应用于无线电通讯、广播、电视等方面,无线电波的发射和接受通过天线实现,其传播分为三种途径:天波、地波、微波。
地波:沿地球表面空间传播的无线电波叫做地波。由于地球是一个大导体,地球表面会因地波的传播引起感应电流,因此地波在传播过程中要损失能量,频率越高损失的能量也越多,所以地波主要适用于长波、中波和中短波。天波:依靠电离层的反射来传播的无线电波叫做天波。电离层对于不同波长的电磁波的反射和吸收表现不同的特性,波长越长,吸收越强反射越弱,因此短波最适宜以天波的形式传播。微波:微波是由于频率高、波长短,它既不能以地波的形式传播,又不能依靠天波的形式传播,和光一样,沿直线传播。
5. 无线电与电磁波
频率在数百千赫兹到数百兆赫兹之间的电磁波叫做无线电波,它包括短波、中波、长波、微波,无线电波也仅仅是电磁波的一部分,但电磁波不仅仅只有无线电波,仅仅只有频率相对较低的一部分电磁波才叫无线电波。
0×02 无线电信号调制
1. 什么叫调制,为什么要调制?
声音的频率是20HZ-20KHZ,转变成电磁波后也是这个频率,属于低频。电磁波的频率越高越容易传送得更远。所以音频需搭载在高频信号上才能传输得更远,音频搭载上高频信号的过程就叫调制。
调频波波形
无线电信号是原始信号和已调振荡信号的总称。声音、图像、文字、电码等欲传送的信息,通过转换设备后,转变成为相应变化的电压或电流,这种变化的电压或电流称为原始信号。在发射机中原始信号是用来调制高频振荡的,或者说是用来控制高频振荡的某一参数的,因此又称为调制信号或控制信号。经过调制的高频振荡,或者说参数按调制信号规律变化的高频振荡,称为已调振荡(已调波)。
调制的目的是为了把音频传送到更远的地方。目前常用的方法有调幅(AM)和调频(FM)两种方法。
AM(Amplitude Modulation 调幅):调制幅度,高频信号的幅度随着音频信号幅度的改变而改变,当音频信号的幅度高时高频信号的幅度也跟着高,反之跟着变低,形成音频信号的幅度包络,但高频信号的频率保持不变;调幅的特点是频宽宽,距离短。频宽宽的意思是对阻碍物的穿透能力强,但是传输距离较短FM(Frequency Modulation 调频):调制频率,高频信号的频率随着音频信号幅度的改变而改变,当音频信号的幅度高时高频信号的频率也跟着高,反之跟着变低,但高频信号的幅度保持不变。调频的特点是频宽窄,距离长。频宽窄的意思是对阻碍物的穿透能力弱,但是传输距离长。
注:
频率:波在一定时间内震动次数幅度:波在震动时候上下的幅度大小
调制器: 用于实现调制信号对高频载波信号的调制,产生已调波输出。高频放大器: 对产生的已调波进行功率及幅度的放大后送至天线发射出去。电源: 为电路各个部分提供电源。
数字信号波形
0×03 日常生活中的无线电
1. 收音机(无线广播)
在一般的收音机或收录音机上都有AM及FM波段,这两个波段是用于收听国内广播的,若收音机上还有SW波段时,那么除了国内短波电台之外,还可以收听到世界各国的广播电台节目。
一般中波广播(MW: Medium Wave)采用了调幅(AM)的方式,在不知不觉中,MW及AM之间就划上了等号。实际上MW只是诸多利用AM调制方式的一种广播,像在高频(3-30MHz)中的国际短波广播所使用的调制方式也是AM,甚至比调频广播更高频率的航空导航通讯(116-136MHz)也是采用AM的方式,只是我们日常所说的AM波段指的就是中波广播(MW)。
2. 遥控器
3. 路由器
频率:2.4GHz、5GHz
双频路由:2.4G&5GHz
4. 卫星天线
目前,卫星电视广播采用了三种方式:
一、通过普通的通信卫星将模拟或数字电视信号转发到本地电视台、有线电视网或集体接收站进入千家万户;二、采用模拟技术,使用大功率电视直播卫星直接向家庭广播电视信号,由于这种电视信号未经数字压缩处理,每个转发器只能直播一路电视节目信号,每颗卫星一般只能直播几路电视节目;三、采用Ku频段数字视频压缩卫星电视直播。每个卫星转发器可向装有约为0.5~0.8m左右的小口径卫星接收天线的家庭直播5~8路电视节目,一颗卫星可以直播100多路电视信号。这种业务亦称卫星数字电视直播(DVB-S);随着航天技术、数字电视技术、微电子技术、码率压缩技术的突破性进展,使卫星电视由原来的C频段转播进入了数字Ku频段的直播卫星阶段。卫星数字电视直播的发展已成为全球热点。
C波段天线&Ku波段天线
c波段卫星 机顶盒的大锅 直径1.2米
户户通(村村通)直播星小锅 直径0.3米
卫星天线的一些小知识:
· 在卫星通信中,要先从地面站向卫星上发送通信信号,叫上行,经过卫星上的星载设备进行放大,再发送回地面的另一个接收站接收,叫下行。
· 为防止上行和下行频率重叠干扰,系统中上行和下行各采用一个频率进行发送,从地面向卫星发送上行信号的频率叫上行频率,从卫星向地面发送下行信号的频率叫下行频率。
· 卫星天线调试参数:本振频率、下行频率、符号率、极化方式,不过目前大多数机顶盒自带自动搜索功能,所以这些参数无需牢记。
亚洲七号卫星部分节目参数
近期FreeBuf报道也曾报道过,APT 组织 Turla 使用基于卫星的通信实现 C&C。
上面提及的间谍组织使用使用了DVB-S调制器(下图):
这里我们稍微了解一下:DVB-S(ETS300421) 数字卫星广播系统标准。
特点:卫星传输具有覆盖面广、节目容量大等特点。数据流的调制采用四相相移键控调制(QPSK)方式,工作频率为11/12GHz。
FreeBuf也曾报道过,今年的BlackHat大会上也有个卫星相关的议题《利用卫星接收器扩展僵尸网络》。
5. 机场塔台与飞机
一般来说,降落的灰机高度在6K的时候会通过无线电与机场塔台联系,首次联系时会向机场塔台报告本次航班的编号、已经收到的机场通播编号等(起飞的时候灰机和塔台之间也会有通信联系)。
然后机场塔台会回复该航班,是否已经从雷达上看到该航班、该航班应继续进行的操作(例如保持目前航向等),然后该航班会重复一次机场塔台刚刚发布的指挥信息。这就完成了一次联系。
机场塔台&飞机
参考知乎:机场塔台的无线电环境有什么要求?在其周围私设电台会对塔台和飞机通讯造成哪些影响?
我国民航使用的无线电频率:1090MHz
民用对讲机使用的无线电频率:408-409MHz
警用频率:350-390MHz
0×04 使用软件无线电接收飞机信号
1. 接收飞机信号的常用设备
电视棒
优势:廉价(四五十元) 接地气
不足:只能接收、不能发射信号
HackRf
优势:开源、可以接收、发射信号
不足:USB2.0传输速率低于接收速率
其它设备:bladeRF
优势:USB3.0;支持300MHz到3.8GHz
缺陷:最高只能支持 3.8GHz,不可能用bladeRF来实现5GHz频段的802.11n
电视棒的核心芯片:
淘宝搜索"电视棒"一词是被屏蔽的,想买的同学可以搜电视棒的芯片名:“RTL2832U”。
USB DVB-T & RTL-SDR Realtek RTL2832U & R820T,这是螃蟹( Realtek)的一个芯片型号,原本是做电视棒芯片的。
后来被人发现这个芯片具有非常广的频率接收范围,然后就被用来做sdr应用了,rtl的sdr应用。
其实,某宝两三百的无线电接收器也是根据电视棒芯片改装的。
(都是用的RTL2832U。左边价格三百,右边四十多,知道真相的我曾经哭晕在厕所)
2. 电视棒使用的一些软件
硬件有了,那么软件呢?
Linux:(Ubuntu)环境搭建
硬件驱动:rtl-sdr
接收信号&解码:dump 1090
sudo apt-get install gitsudo apt-get install cmake
git clone https://github.com/pinkavaj/rtl-sdr.gitcd rtl-sdr/ mkdir build cd buildcmake ../make sudo make install sudo ldconfig
编译安装dump 1090:
git clone https://github.com/antirez/dump1090.git cd dump1090/ make
软件启动:
cd /home/$user/dump1090 #转到dump 1090的主目录sudo ./ dump1090 --interactive --net
软件截图:
软件界面参数:
HEX:16进制数据Flight:航班号Altitude:灰行高度(海拔)Speed:灰行速度Lat/Lon:地理坐标(经纬度数)
dump启动时会开启自带的WEB服务器,并且WEB调用了谷歌地图的API 接收到飞机的一些信息后 会在页面地图上描绘出飞机的轨迹(谷歌地图目前需要翻墙):
Windows:
驱动-zadig:类似于驱动精灵。可以在win上安装电视棒、HackRf的驱动;
sdrsharp:可以用来听广播&录制无线电信号 并把信号保存为音频文件;
HDSDR:把音频转化为信号,可配合HackRF使用进行信号输出;
rtl1090:可以接收灰机信号;
Audacity:音频分析(信号分析);
另外,之前在网上查阅资料的时候看到一张图片,思路很Nice:(原文 :使用HACKRF巡视钓鱼岛(HACKRF ADS-B out) )
理论上来说,这种思路是可以实现的,但是法律上不可能允许民众私自占用无线频段,(一定要遵守无线电管理法规!一定要遵守无线电管理法规!一定要遵守无线电管理法规!重要的事情要说三遍),PS:通过无线电信号的“伪造”灰机,那么雷达那边如何才能瞒天过海?
第一篇先到这里,接下来的文章中我们将通过windows上一些软件(sdrsharp、HDSDR、Audacity)进行信号分析并使用HackRF进行简单的遥控信号重放。(其实,写完这句话的时候我的内心是崩溃的,牛皮吹大了,万一不能实现怎么破?!趴在厕所马桶上哭完,坚强地回到工位 o(╯□╰)o囧 然后终于顿悟:生命在于折腾,自己吹的牛逼流着泪也要实现!)
*参考资料:人民教育出版社 、无线电通信发展简史、新时期的无线电技术应用、维基百科、google、百度、知乎,雪碧整理发布,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
0×00 前言
在第一篇文章:永不消逝的电波(一):无线电入门篇 我们了解了一下无线电的发展史以及无线电的一些物理知识,在第二篇里我们将用HackRF录制家用门铃的无线信号,然后重放门铃信号。
门铃从某宝买的,如图:
看到红色部分的时候,雪碧同学的表情是这样的:
好像买完什么,用不了多久就降价了,233…. 我可以退货再买吗?
0×01 环境搭建:
MAC下可以用gqrx和hackrf (需要有Xcode、Mac Port的支持)
sudo port install gnuradiosudo port install hackrfsudo port install rtl-sdrsudo port install gr-osmosdrsudo port install hackrf
sudo port install gqrx
也可以参考:在Mac上安装HackRF环境
0×02 步入正题:
安装完成以后,插入HackRF,终端执行 hackrf_info:
hackrf_info Found HackRF board.Board ID Number: 2 (HackRF One)Firmware Version: git-815d1f6Part ID Number: 0xa000cb3c 0x00664f49Serial Number: 0x00000000 0x00000000 0x583064c0 0x2640ad4b
#通过终端启动gqrxgqrx
按下遥控器,我们可以看到信号的频率在314.100000Mhz(读作:314.1兆赫兹)左右
1Mhz=1000000hz;1Khz=1000hz314.1Mhz=314100000hz;
关掉gqrx启动hackrf
hackrf_transfer Usage:
Usage: -r <filename> # Receive data into file. 把接收到的信号、数据保存到文件中;(信号录制) -t <filename> # Transmit data from file. 从文件中提取、发送射频信号;(信号播放) -w # Receive data into file with WAV header and automatic name. # This is for SDR# compatibility and may not work with other software. [-f freq_hz] # Frequency in Hz [0MHz to 7250MHz]. [-i if_freq_hz] # Intermediate Frequency (IF) in Hz [2150MHz to 2750MHz]. [-o lo_freq_hz] # Front-end Local Oscillator (LO) frequency in Hz [84MHz to 5400MHz]. [-m image_reject] # Image rejection filter selection, 0=bypass, 1=low pass, 2=high pass. [-a amp_enable] # RX/TX RF amplifier 1=Enable, 0=Disable. [-p antenna_enable] # Antenna port power, 1=Enable, 0=Disable. [-l gain_db] # RX LNA (IF) gain, 0-40dB, 8dB steps [-g gain_db] # RX VGA (baseband) gain, 0-62dB, 2dB steps [-x gain_db] # TX VGA (IF) gain, 0-47dB, 1dB steps [-s sample_rate_hz] # Sample rate in Hz (8/10/12.5/16/20MHz, default 10MHz). [-n num_samples] # Number of samples to transfer (default is unlimited). [-c amplitude] # CW signal source mode, amplitude 0-127 (DC value to DAC). [-b baseband_filter_bw_hz] # Set baseband filter bandwidth in MHz. Possible values: 1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz, default < sample_rate_hz.
hackrf_transfer -r /dev/stdout -f 314100000 -a 1 -g 16 -l 32 -s 8000000
没按遥控器
按下遥控器:
由于hackrf_transfer后面没带解码参数,so我们看到一堆乱码数据;
0×03 录制信号&信号分析
录制遥控的无线信号:
hackrf_transfer -r door.raw -f 314100000 -g 16 -l 32 -a 1 -s 8000000 -b 4000000
终端输出:
hackrf_transfer -r door.raw -f 314100000 -g 16 -l 32 -a 1 -s 8000000 -b 4000000call hackrf_sample_rate_set(8000000 Hz/8.000 MHz)call hackrf_baseband_filter_bandwidth_set(3500000 Hz/3.500 MHz)call hackrf_set_freq(314100000 Hz/314.100 MHz)call hackrf_set_amp_enable(1)Stop with Ctrl-C16.0 MiB / 1.005 sec = 15.9 MiB/second16.0 MiB / 1.003 sec = 15.9 MiB/second16.0 MiB / 1.004 sec = 15.9 MiB/second16.3 MiB / 1.004 sec = 16.2 MiB/second16.0 MiB / 1.002 sec = 16.0 MiB/second16.0 MiB / 1.001 sec = 16.0 MiB/second16.0 MiB / 1.004 sec = 15.9 MiB/second16.0 MiB / 1.003 sec = 15.9 MiB/second16.3 MiB / 1.003 sec = 16.2 MiB/second16.0 MiB / 1.003 sec = 15.9 MiB/second16.0 MiB / 1.005 sec = 15.9 MiB/second^CCaught signal 2 8.1 MiB / 0.510 sec = 15.9 MiB/secondUser cancel, exiting...Total time: 11.54724 shackrf_stop_rx() donehackrf_close() donehackrf_exit() donefclose(fd) doneexit
—————————————萌萌的分割线—————————————题外话—————————————
信号波形分析:
这里用到的软件是Audacity,导入录制的音频信号(未压缩原始数据)
然后出现如下界面:
使用默认参数,直接导入:
中间的那部分就是按下遥控时录制到的无线信号,我们使用Audacity的放大镜放大来看:
继续放大我们可以看到:
继续放大:
再放大:
这时经验比较丰富的童鞋可以通过图形,把无线射频信号转换成二进制数据:01010101**** ,接着可以把二进制写到GRC(Gnu Radio Cpmpainon),制作一个框图,使用GNC项目重放无线信号,大致方法如下:
启动Gnu Radio Cpmpainon :Kali Linux—->无线攻击—>Software defined Radio—>GnuRadio-Companion
源:在右侧Misc一栏找到Vector Source
通过搜索添加Repeat(old)、Moving Average、osmocom Sink
四个组件:
按照流程连线:
GNC用得不多,暂时还不上手,这种方法以后再试 :)
—————————————萌萌的分割线—————————————题外话结束—————————————
0×04 信号重放
使用hackrf_transfer重放信号:
hackrf_transfer -t door.raw -f 314100000 -x 47 -a 1 -s 8000000 -b 4000000
终端输出:
hackrf_transfer -t door.raw -f 314100000 -g 16 -l 32 -a 1 -s 8000000 -b 4000000call hackrf_sample_rate_set(8000000 Hz/8.000 MHz)call hackrf_baseband_filter_bandwidth_set(3500000 Hz/3.500 MHz)call hackrf_set_freq(314100000 Hz/314.100 MHz)call hackrf_set_amp_enable(1)Stop with Ctrl-C16.0 MiB / 1.004 sec = 15.9 MiB/second16.0 MiB / 1.004 sec = 15.9 MiB/second16.0 MiB / 1.003 sec = 15.9 MiB/second16.0 MiB / 1.001 sec = 16.0 MiB/second16.0 MiB / 1.000 sec = 16.0 MiB/second16.3 MiB / 1.001 sec = 16.2 MiB/second16.0 MiB / 1.003 sec = 16.0 MiB/second16.0 MiB / 1.001 sec = 16.0 MiB/second16.0 MiB / 1.005 sec = 15.9 MiB/second16.0 MiB / 1.003 sec = 15.9 MiB/second16.3 MiB / 1.003 sec = 16.2 MiB/second 8.4 MiB / 1.004 sec = 8.4 MiB/second Exiting... hackrf_is_streaming() result: HACKRF_ERROR_STREAMING_EXIT_CALLED (-1004)Total time: 12.03184 shackrf_stop_tx() donehackrf_close() donehackrf_exit() donefclose(fd) doneexit
0×05 演示视频
binggo
熊孩子的正确使用姿势是这样的:
for i in {1..999}; do hackrf_transfer -t door.raw -f 314100000 -g 16 -l 32 -a 1 -s 8000000 -b 4000000; done
嗯,你没看错,重复播放九百九十九次 :)
0×06 参考:
Hacking fixed key remotes
Exploring Bluetooth & iBeacons – from software to radio signals and back.
中文版:HackRF嗅探蓝牙重放iBeacons信号
GNU_Radio入门_V0.99
0×00 前言
蓝牙(Bluetooth),一种无线技术标准,用来让固定与移动设备,在短距离间交换数据,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由2.4至2.485 GHz的ISM频段来进行通信。1994年由电信商爱立信发展出这个技术。它最初的设计,是希望创建一个RS-232数据线的无线通讯替代版本。
蓝牙技术目前由蓝牙技术联盟(SIG)来负责维护其技术标准,这个联盟拥有超过20,000间公司成员,其成员的领域分布在电信、电脑、网络与消费性电子产品上。
蓝牙也是目前数码产品中不可或缺的模块。蓝牙技术的出现让我们在连接各种设备的时候不再被繁多的数据线所束缚,比如音响、电脑、鼠标、键盘,甚至是汽车。
0×01 蓝牙版本更新
蓝牙技术版本更新:1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2。
蓝牙1.1标准:为最早期版本,传输率约在748~810kb/s,因是早期设计,容易受到同频率之产品所干扰下影响通讯质量。蓝牙1.2标准:同样是只有 748~810kb/s 的传输率,但在加上了(改善 Software)抗干扰跳频功能。蓝牙2.0标准:1.2 的改良提升版,传输率约在 1.8M/s~2.1M/s,开始支持双工模式——即一面作语音通讯,同时亦可以传输档案/高质素图片。蓝牙2.1标准:2007年8月2日,蓝牙技术联盟正式批准了蓝牙2.1版规范,即“蓝牙2.1+EDR”,可供未来的设备自由使用。相对2.0版本主要是提高了待机时间2倍以上,技术标准没有根本性变化。蓝牙3.0标准:2009年4月21日,蓝牙技术联盟颁布的新一代标准规范"Bluetooth Core Specification Version 3.0 High Speed"(蓝牙核心规范3.0版 ),核心是"Generic Alternate MAC/PHY"(AMP)一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。3.0的数据传输率提高到了大约24Mbps(即可在需要的时候调用802.11 WI-FI用于实现高速数据传输)。3.0的传输速速率是2.0的八倍。蓝牙4.0标准:于2010年7月7日正式发布,是蓝牙3.0+HS规范的补充,新版本的最大意义在于低功耗,同时加强不同OEM厂商之间的设备兼容性,并且降低延迟,理论最高传输速度依然为24Mbps(即3MB/s),有效覆盖范围扩大到100米(之前的版本为10米)。4.0是专门面向对成本和功耗都有较高要求的无线方案,可广泛用于卫生保健、体育健身、家庭娱乐、安全保障等诸多领域。....
正如上面所说,蓝牙4.0是以低功耗技术为代表优势的蓝牙核心规格版本。
0×02 低功耗蓝牙术语及概念:
蓝牙设备所用波段是无需认可的2.4 GHz ISM(工业、科研和医疗)波段。跳频收发器用于对抗干扰及信号衰减。
2.1 频率和信道:
蓝牙系统所使用的波段为2.4 GHz ISM波段。其频率范围是2400 – 2483.5 MHz。
BlueTooth 有79个射频信道,按0-78排序,并于2402 MHz开始,以1 MHz分隔:
channel 00 : 2.402000000 Ghzchannel 01 : 2.403000000 Ghz…channel 78 : 2.480000000 Ghz
BTLE有40个频道:
channel 37 : 2.402000000 Ghzchannel 00 : 2.404000000 Ghzchannel 01 : 2.406000000 Ghzchannel 02 : 2.408000000 Ghzchannel 03 : 2.410000000 Ghzchannel 04 : 2.412000000 Ghzchannel 05 : 2.414000000 Ghzchannel 06 : 2.416000000 Ghzchannel 07 : 2.418000000 Ghzchannel 08 : 2.420000000 Ghzchannel 09 : 2.422000000 Ghzchannel 10 : 2.424000000 Ghzchannel 38 : 2.426000000 Ghzchannel 11 : 2.428000000 Ghzchannel 12 : 2.430000000 Ghzchannel 13 : 2.432000000 Ghzchannel 14 : 2.434000000 Ghzchannel 15 : 2.436000000 Ghzchannel 16 : 2.438000000 Ghzchannel 17 : 2.440000000 Ghzchannel 18 : 2.442000000 Ghzchannel 19 : 2.444000000 Ghzchannel 20 : 2.446000000 Ghzchannel 21 : 2.448000000 Ghzchannel 22 : 2.450000000 Ghzchannel 23 : 2.452000000 Ghzchannel 24 : 2.454000000 Ghzchannel 25 : 2.456000000 Ghzchannel 26 : 2.458000000 Ghzchannel 27 : 2.460000000 Ghzchannel 28 : 2.462000000 Ghzchannel 29 : 2.464000000 Ghzchannel 30 : 2.466000000 Ghzchannel 31 : 2.468000000 Ghzchannel 32 : 2.470000000 Ghzchannel 33 : 2.472000000 Ghzchannel 34 : 2.474000000 Ghzchannel 35 : 2.476000000 Ghzchannel 36 : 2.478000000 Ghzchannel 39 : 2.480000000 Ghz
2.2 蓝牙规格:
规格名称 规格类型 分配编码 规格级别警报类别ID org.bluetooth.characteristic.alert_category_id 0x2A43 已采纳警报类别ID位掩码 org.bluetooth.characteristic.alert_category_id_bit_mask 0x2A42 已采纳警报级别 org.bluetooth.characteristic.alert_level 0x2A06 已采纳警报通知控制点 org.bluetooth.characteristic.alert_notification_control_point 0x2A44 已采纳警报状态 org.bluetooth.characteristic.alert_status 0x2A3F 已采纳Appearance org.bluetooth.characteristic.gap.appearance 0x2A01 Adopted电池电量 org.bluetooth.characteristic.battery_level 0x2A19 已采纳血压功能 org.bluetooth.characteristic.blood_pressure_feature 0x2A49 已采纳血压测量 org.bluetooth.characteristic.blood_pressure_measurement 0x2A35 已采纳人体传感器定位 org.bluetooth.characteristic.body_sensor_location 0x2A38 已采纳引导键盘输入报告 org.bluetooth.characteristic.boot_keyboard_input_report 0x2A22 已采纳引导键盘输出报告 org.bluetooth.characteristic.boot_keyboard_output_report 0x2A32 已采纳引导鼠标输入报告 org.bluetooth.characteristic.boot_mouse_input_report 0x2A33 已采纳CSC功能 org.bluetooth.characteristic.csc_feature 0x2A5C 已采纳CSC测量 org.bluetooth.characteristic.csc_measurement 0x2A5B 已采纳当前时间 org.bluetooth.characteristic.current_time 0x2A2B 已采纳自行车功率控制点 bluetooth.characteristic.cycling_power_control_point 0x2A66 已采纳自行车功率特征 org.bluteooth.characteristic.cycling_power_feature 0x2A65 已采纳自行车功率测量 org.blueeooth.cycling_power_measurement 0x2A63 已采纳自行车功率矢量 org.bluetooth.characteristic.cycling_power_vector 0x2A64 已采纳日期时间 org.bluetooth.characteristic.date_time 0x2A08 已采纳星期日期时间 org.bluetooth.characteristic.day_date_time 0x2A0A 已采纳星期 org.bluetooth.characteristic.day_of_week 0x2A09 已采纳Device Name org.bluetooth.characteristic.gap.device_name 0x2A00 Adopted日光节约时间偏移 org.bluetooth.characteristic.dst_offset 0x2A0D 已采纳准确时间256 org.bluetooth.characteristic.exact_time_256 0x2A0C 已采纳固件修订字符串 org.bluetooth.characteristic.firmware_revision_string 0x2A26 已采纳血糖功能 org.bluetooth.characteristic.glucose_feature 0x2A51 已采纳血糖测量 org.bluetooth.characteristic.glucose_measurement 0x2A18 已采纳血糖测量环境 org.bluetooth.characteristic.glucose_measurement_context 0x2A34 已采纳硬件修订字符串 org.bluetooth.characteristic.hardware_revision_string 0x2A27 已采纳心率控制点 org.bluetooth.characteristic.heart_rate_control_point 0x2A39 已采纳心率测量 org.bluetooth.characteristic.heart_rate_measurement 0x2A37 已采纳HID控制点 org.bluetooth.characteristic.hid_control_point 0x2A4C 已采纳HID信息 org.bluetooth.characteristic.hid_information 0x2A4A 已采纳IEEE 11073-20601监管认证数据表 org.bluetooth.characteristic.ieee_11073-20601_regulatory_certification_data_list 0x2A2A 已采纳中间体套囊压力 org.bluetooth.characteristic.intermediate_blood_pressure 0x2A36 已采纳中间体温度 org.bluetooth.characteristic.intermediate_temperature 0x2A1E 已采纳LN控制点 org.bluetooth.ln_control_point 0x2A6B 已采纳LN功能 org.bluetooth.characteristic.ln_feature 0x2A6A 已采纳当地时间信息 org.bluetooth.characteristic.local_time_information 0x2A0F 已采纳定位和速度 org.bluetooth.location_and_speed 0x2A67 已采纳制造商名称字符串 org.bluetooth.characteristic.manufacturer_name_string 0x2A29 已采纳测量间隔 org.bluetooth.characteristic.measurement_interval 0x2A21 已采纳型号字符串 org.bluetooth.characteristic.model_number_string 0x2A24 已采纳导航 org.bluetooth.characteristic.navigation 0x2A68 已采纳新警报 org.bluetooth.characteristic.new_alert 0x2A46 已采纳Peripheral Preferred Connection Parameters org.bluetooth.characteristic.gap.peripheral_preferred_connection_parameters 0x2A04 AdoptedPeripheral Privacy Flag org.bluetooth.characteristic.gap.peripheral_privacy_flag 0x2A02 AdoptedPnP ID org.bluetooth.characteristic.pnp_id 0x2A50 已采纳定位质量 org.bluetooth.position_quality 0x2A69 已采纳协议模式 org.bluetooth.characteristic.protocol_mode 0x2A4E 已采纳Reconnection Address org.bluetooth.characteristic.gap.reconnection_address 0x2A03 Adopted记录存取控制点 org.bluetooth.characteristic.record_access_control_point 0x2A52 已采纳参考时间信息 org.bluetooth.characteristic.reference_time_information 0x2A14 已采纳报告 org.bluetooth.characteristic.report 0x2A4D 已采纳报告地图 org.bluetooth.characteristic.report_map 0x2A4B 已采纳振铃器控制点 org.bluetooth.characteristic.ringer_control_point 0x2A40 已采纳振铃器设定 org.bluetooth.characteristic.ringer_setting 0x2A41 已采纳RSC功能 org.bluetooth.characteristic.rsc_feature 0x2A54 已采纳RSC测量 org.bluetooth.characteristic.rsc_measurement 0x2A53 已采纳SC控制点 org.bluetooth.characteristic.sc_control_point 0x2A55 已采纳扫描间隔窗口 org.bluetooth.characteristic.scan_interval_window 0x2A4F 已采纳扫描刷新 org.bluetooth.characteristic.scan_refresh 0x2A31 已采纳传感器定位 org.bluetooth.characteristic.sensor_location 0x2A5D 已采纳序列号字符串 org.bluetooth.characteristic.serial_number_string 0x2A25 已采纳Service Changed org.bluetooth.characteristic.gatt.service_changed 0x2A05 Adopted软件修订字符串 org.bluetooth.characteristic.software_revision_string 0x2A28 已采纳获支持的新警报类别 org.bluetooth.characteristic.supported_new_alert_category 0x2A47 已采纳获支持的未读警报类别 org.bluetooth.characteristic.supported_unread_alert_category 0x2A48 已采纳系统ID org.bluetooth.characteristic.system_id 0x2A23 已采纳温度测量 org.bluetooth.characteristic.temperature_measurement 0x2A1C 已采纳温度类型 org.bluetooth.characteristic.temperature_type 0x2A1D 已采纳时间准确度 org.bluetooth.characteristic.time_accuracy 0x2A12 已采纳时间源 org.bluetooth.characteristic.time_source 0x2A13 已采纳时间更新控制点 org.bluetooth.characteristic.time_update_control_point 0x2A16 已采纳时间更新状态 org.bluetooth.characteristic.time_update_state 0x2A17 已采纳日光节约时间的时间 org.bluetooth.characteristic.time_with_dst 0x2A11 已采纳时区 org.bluetooth.characteristic.time_zone 0x2A0E 已采纳射频功率 org.bluetooth.characteristic.tx_power_level 0x2A07 已采纳未读警报状态 org.bluetooth.characteristic.unread_alert_status 0x2A45 已采纳记忆码 UUID规格 UUID 参考规格«设备名称» uuid16 0x2A00 蓝牙核心规格第3卷C部分第12.1节«外观» uuid16 0x2A01 蓝牙核心规格第3卷C部分第12.2节«外置设备隐私标志» uuid16 0x2A02 蓝牙核心规格第3卷C部分第12.3节«重新连接地址» uuid16 0x2A03 蓝牙核心规格第3卷C部分第12.4节«外置设备首选连接参数» uuid16 0x2A04 蓝牙核心规格第3卷C部分第12.5节«服务更改» uuid16 0x2A05 蓝牙核心规格第3卷G部分第7.1节
2.3 蓝牙UUID
UUID是“Universally Unique Identifier”的简称,通用唯一识别码的意思。对于蓝牙设备,每个服务都有通用、独立、唯一的UUID与之对应。
例举:
#蓝牙串口服务SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}'LANAccessUsingPPPServiceClass_UUID = '{00001102-0000-1000-8000-00805F9B34FB}'#拨号网络服务DialupNetworkingServiceClass_UUID = '{00001103-0000-1000-8000-00805F9B34FB}'#信息同步服务IrMCSyncServiceClass_UUID = '{00001104-0000-1000-8000-00805F9B34FB}'SDP_OBEXObjectPushServiceClass_UUID = '{00001105-0000-1000-8000-00805F9B34FB}'#文件传输服务OBEXFileTransferServiceClass_UUID = '{00001106-0000-1000-8000-00805F9B34FB}'
分享几个蓝牙相关的文章、扫描器和App:
基于HACKRF的低功耗蓝牙(BTLE)packet sniffer/scanner
项目地址:https://github.com/JiaoXianjun/BTLE
博客:http://sdr-x.github.io/BTLE-SNIFFER/
手机App(iphone)
BLE ScannerLightBlue
0×03 调戏小米手环
小米手环的主要功能包括查看运动量,监测睡眠质量,智能闹钟唤醒等。可以通过手机应用实时查看运动量,监测走路和跑步的效果,还可以通过云端识别更多的运动项目。
小米手环配备了低功耗蓝牙芯片及加速传感器,待机可达30天。(→_→ 这里真的不是广告,虽然,看起来很像… 顺便吐槽一下渣米手环,蓝牙信号不稳定经常断线…)
今年360HackPwn大会上,有小米手环破解的演示和讲解(木有去现场只能自己动手玩了)。下面用到刚刚推荐的LightBlue这个App,打开App可以看到附件的蓝牙设备信号:
连接上小米手环,我们可以看到这些参数:
UUID:FEE0
0xFF01 0xFF02 ...... 0xFF0F
UUID:FEE1
0xFEDD 0xFEDE ...... 0xFFD2 0xFFd3
UUID:FEE7
0xFEC7 0xFEC8 0xFEC9
immediate Alert
Alert Level
在Alert Level中“Write new value”(写入新值)1和2都行(震动级别:0不震动、1轻微&小幅震动、2强烈震动)可控制小米手环的震动。通过这种方法,可控制一定范围内任何人的小米手环,使其不停震动…(听起来,总感觉怪怪的→_→ )
0×04 演示视频:
0×05 参考:
百科、文库
http://developer.bluetooth.cn/libs/Cn/Overview/CoreArc/2013/1231/4.html
https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.alert_level.xml
Exploring Bluetooth & iBeacons – from software to radio signals and back
来自FreeBuf黑客与极客(FreeBuf.COM)- 永不消逝的电波
- 永不消逝的电波(一):无线电入门篇
- 永不消逝的电波 -GSM空口信号的接收与解码
- 永不消逝的电波(四):从无线电角度揭秘定位劫持
- 永不消逝的进程
- Delphi----永不消逝的精灵
- Delphi----永不消逝的精灵
- Delphi----永不消逝的精灵
- Delphi----永不消逝的精灵
- Delphi----永不消逝的精灵
- Delphi----永不消逝的精灵
- Delphi----永不消逝的精灵
- Delphi----永不消逝的精灵(转)
- 转篇文章: Delphi——永不消逝的精灵
- Delphi情结——永不消逝的精灵
- 永不消逝的浪漫:Programming Languages and Haskell
- 读《马云创造:颠覆传统的草根创业者传奇》永不消逝的激情!
- 永不消逝的缓存数据:Adaptec 5445Z RAID卡评测
- 【Java多线程】写入同一文件,自定义线程池与线程回收利用
- 常见的正则表达式--收集一下
- zigbee网关 cc2530终端裸机串行驱动12864(字库ST7920)
- hibernate如何返回一个Map对象 以及List<Map<String, Object>>
- java克隆对象clone()的用法和作用
- 永不消逝的电波
- Xcode 7 开发
- Android Studio 视图解析
- Spring3 MVC请求参数获取的几种方法
- 页面加载完成之后执行
- python anaconda 安装包
- 从Spinner下拉框中获取选中的数据
- Ubuntu linux下chrome浏览器字体发虚
- SpringMVC框架