工具概述

Sparrow-wifi本质上一款针对下一代2.4GHz和5GHz的WiFi频谱感知工具,它不仅提供了GUI图形化用户界面,而且功能更加全面,可以代替类似inSSIDer和linssid之类的Linux工具。在其最完整的使用场景下,Sparrow-wifi可以将WiFi、软件定义无线电(hackrf)、高级蓝牙工具、传统GPS(gpsd)和漫游GPS(mavlink)整合到一个解决方案之中。

该工具完全使用Python3开发,并且适用于以下场景:

1、基本的WiFi SSID识别;

2、WiFi源捕捉;

3、2.4GHz和5GHz频谱查看;

4、蓝牙识别;

5、蓝牙源捕捉;

6、iBeacon广播;

7、远程操作(通过GUI);

8、可挂载到无人机,支持树莓派;

9、远程代理基于JSON,可整合进其他应用;

10、CSV和JSON数据导出/导入;

11、可根据GPS坐标生成Google地图;

工具运行截图

Sparrow-wifi主面板,执行基础的WiFi扫描:

WiFi和蓝牙跟踪:

工具安装

Sparrow-wifi使用了Python3、qt5和qtchart来构建UI界面,在标准的基于Debian的平台上,已经自带了Python3和qt5,只需要单独配置qtchart即可。在Ubuntu和Kali Linux上执行下列命令:

sudo apt-get install python3-pip gpsd gpsd-clients python3-tk python3-setuptools

sudo pip3 install QScintilla PyQtChart gps3 dronekit manuf python-dateutil numpy matplotlib

当然了,你也可以在Python虚拟环境(virtualenv)中使用该工具:

git clone https://github.com/ghostop14/sparrow-wifi

cd sparrow-wifi

virtualenv --python=python3 $HOME/sparrow

source $HOME/sparrow/bin/activate

pip3 install gps3 python-dateutil requests pyqt5 pyqtchart numpy matplotlib

sudo python3 sparrow-wifi.py

工具运行

该工具需要使用标准的命令行工具“iw”来执行WiFi扫描,因此我们需要使用root权限来运行:

sudo ./sparrow-wifi.py

GPS通信

Sparrow-wifi基于gpsd来提供标准的GPS通信功能,我们可以使用下列命令来进行快速的GPS测试:

gpsd -D 2 -N /dev/ttyUSB0

运行Sparrow-wifi远程代理

由于代理所需的权限跟GUI工具的运行权限相同,因此这里我们同样需要使用到root权限:

sudo ./sparrowwifiagent.py

默认配置下,代理会监听端口8020。我们也可以使用下列命令来指定其他端口:

sudo ./sparrowwifiagent.py --port=<myport>

工具帮助菜单

我们可以使用–help命令来查看Sparrow-wifi的帮助菜单以及参数选项:

usage: sparrowwifiagent.py [-h] [--port PORT] [--allowedips ALLOWEDIPS]

                           [--mavlinkgps MLINKGPS] [--sendannounce]

                           [--userpileds] [--recordinterface RECORDINTERFACE]

                           [--ignorecfg] [--cfgfile CFGFILE]

                           [--delaystart DELAYSTART]

Sparrow-wifi agent

optional arguments:

  -h, --help            show this help message and exit

  --port PORT           Port for HTTP server to listen on

  --allowedips ALLOWEDIPS

                        IP addresses allowed to connect to this agent. Default

                        is any. This can be a comma-separated list for

                        multiple IP addresses

  --mavlinkgps MLINKGPS

                        Use Mavlink (drone) for GPS. Options are: '3dr' for a

                        Solo, 'sitl' for local simulator, or full connection

                        string ('udp/tcp:<ip>:<port>' such as:

                        'udp:10.1.1.10:14550')

  --sendannounce        Send a UDP broadcast packet on the specified port to

                        announce presence

  --userpileds          Use RPi LEDs to signal state. Red=GPS

                        [off=None,blinking=Unsynchronized,solid=synchronized],

                        Green=Agent Running [On=Running, blinking=servicing

                        HTTP request]

  --recordinterface RECORDINTERFACE

                        Automatically start recording locally with the given

                        wireless interface (headless mode) in a recordings

                        directory

  --ignorecfg           Don't load any config files (useful for overriding

                        and/or testing)

  --cfgfile CFGFILE     Use the specified config file rather than the default

                        sparrowwifiagent.cfg file

  --delaystart DELAYSTART

                        Wait <delaystart> seconds before initializing

树莓派

我们可以使用下列命令在树莓派上完成工具的安装以及构建:

sudo apt-get install libsqlite3-dev

cd /tmp

wget https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz

tar -zxvf Python-3.5.5.tgz

cd Python-3.5.5

./configure && make -j3 && sudo make install

完成之后,安装其他的依赖模块:

sudo pip3.5 install gps3 dronekit manuf python-dateutil

接下来,直接使用下列命令运行代理即可:

/usr/local/bin/python3.5 ./sparrowwifiagent.py

/usr/local/bin/python3.5 ./sparrowwifiagent.py --mavlinkgps=3dr --recordinterface=wlan0

项目地址

Sparrow-wifi:【GitHub传送门

Sparrow-WiFi:一款Linux平台下的图形化WiFi及蓝牙分析工具的更多相关文章

  1. Git各大平台(win/Linux/Mac)图形化界面客户端大汇总

    摘要: 介绍各平台下的图形化界面git客户端(本人并没有全部使用过),欢迎大家补充新的软件或者使用感受~  一.TortoiseGit - The coolest Interface to Git V ...

  2. linux平台下防火墙iptables原理(转)

    原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html iptables简介 netfilter/iptables( ...

  3. Windows及Linux平台下的计时函数总结

    本文对Windows及Linux平台下常用的计时函数进行总结,包括精度为秒.毫秒.微秒三种精度的各种函数.比如Window平台下特有的Windows API函数GetTickCount().timeG ...

  4. Thrift在Windows及Linux平台下的安装和使用示例

    本文章也同时发表在个人博客Thrift在Windows及Linux平台下的安装和使用示例上. thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的R ...

  5. Linux平台下裸设备的绑定:

    Linux平台下裸设备的绑定: 运用RAW绑定 方法一 raw的配置(1) [root@qs-dmm-rh2 mapper]# cat /etc/rc.local #!/bin/sh # # This ...

  6. Ninject是一款.Net平台下的开源依赖注入框架

    Ninject是一款.Net平台下的开源依赖注入框架.按照官方说法,它快如闪电.超级轻量,且充分利用了.Net的最新语法,使用Lambda表达式代替Xml文件完成类型绑定.Ninject结构精巧,功能 ...

  7. Linux平台下源码安装mysql多实例数据库

    Linux平台下源码安装mysql多实例数据库[root@linux-node1 ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6 ...

  8. Windows 和 Linux 平台下的端口转发工具

    原文地址: http://unmi.cc/windows-linux-port-forwarding/ 这里记录一下我曾经使用过的几个端口转发工具,即端口映射.端口重定向,和 NAT 也是差不多的概念 ...

  9. 【android开发】如何在Linux平台下安装JDK环境

    原文:http://android.eoe.cn/topic/android_sdk Linux平台JDK安装 本文主要描述如何在Linux平台下安装JDK环境.进入网页:http://www.ora ...

随机推荐

  1. robotframe添加自定义lib 报Importing test library ‘xxxx’ failed

    问题现象:在linux服务器上搭建jenkins 执行robot工程时报:Importing test library  ‘xxxx’   failed 问题分析一: 在library  引入非rob ...

  2. php无限分类方法类

    创建数据库以及表 CREATE DATABASE `sortclass`DEFAULT CHARSET utf8; CREATE TABLE IF NOT EXISTS `class` ( `cid` ...

  3. chattr和lsattr命令

    原文 在一个技术群上看到这么一个问题: 问题出现在服务器被黑后!特意出记录下问题的解决方法. 由于被黑了,所以我们的很多命令将会出现使用不正常等问题,而这些问题大多是给人家添加或删除了某些权限所致.比 ...

  4. JSON是什么

    JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度, 那么,JSON到底是什么? JSON就是一串字符串 只不过元素会使 ...

  5. PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。

    PySpark 的背后原理 Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等 ...

  6. CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作

    需求:上传到SVN服务器的项目文件如果被普通用户误删了,虽然能恢复,但是如果删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,会很麻烦,可能还会出现提交代码版本 ...

  7. qt事件机制(转)

    学习了一段时间的Qt之后,发现Qt的事件机制和其他语言的机制有些不同.Qt除了能够通过信号和槽机制来实现一些Action动作之外,还可以用对象所带的事件,或者用户自定义的事件来实现对象的一些行为处理. ...

  8. 12.基于vue-router的案例

    案例分析 用到的路由技术要点: 路由的基础用法 嵌套路由 路由重定向 路由传参 编程式导航 根据项目的整体布局划分好组件结构,通过路由导航控制组件的显示 1.抽离并渲染 App根组件 2.将左侧菜 单 ...

  9. CPU 的三大架构 —— numa smp mpp

    SMP 模式 SMP模式将多个处理器与一个集中的存储器相连.在SMP模式下,所有处理器都可以访问同一个系统物理存储器,这就意味着SMP系统只运行操作系统的一个拷贝. 因此SMP系统有时也被称为一致存储 ...

  10. yii2 oracle 原生sql分页

    $sql_list = "SELECT ID, FID, INSID, FLIGHTNO, DEPNAME, ARRNAME, to_char(DEPDATE,'yyyy-MM-dd HH2 ...