前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >借助树莓派上演“窃听风云”

借助树莓派上演“窃听风云”

作者头像
FB客服
发布2019-07-22 15:29:57
1.4K0
发布2019-07-22 15:29:57
举报
文章被收录于专栏:FreeBufFreeBuf

0x00 前言

在N年前看《窃听风云》时,里面的窃听环节就深深吸引着我,让我记忆深刻。

在N年前对于普通的我们想要实现远程窃听技术需要购买昂贵的设备才能实现。

但最近科技发展飞速,一般家庭宽带的网速已经达到了100M,同时手机的4G已经普及,5G也开始商用了(加油华为,加油China),在这样的环境下实现电影里面的窃听技术就比较容易得多了。

下面请随我一起开始“窃听”之旅。

0x01 所需材料

1.树莓派

2.USB麦克风

3.VPS服务器

一般家庭的宽带都不是公网IP,外网无法直接连接,所以需要使用VPS服务器来实现FRP内网穿透,这样就可以直接访问家庭内部主机了。

4.手机

5.VLC App

VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。

6.耳机

0x02 技术介绍

本文所使用的到的主要技术有:使用nginx+rtmp搭建音频直播流媒体服务器和FRP 内网穿透。

什么是nginx?

Nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

什么是RTMP?

RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,RTMP作为业内广泛使用的协议也重新被相关开发者重视起来。

什么是FRP?

FRP是fast reverse proxy的缩写,简单地说,FRP就是一个反向代理软件,它具有体积轻量且功能强大特点,可以使处于内网或防火墙后的设备对外界提供服务。

0x03 环境搭建

3.1 在树莓派上使用nginx+rtmp搭建音频直播流媒体服务器

1.安装所需要的依赖

代码语言:javascript
复制
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

2.安装nginx和rtmp

代码语言:javascript
复制
wget http://nginx.org/download/nginx-1.17.0.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
tar -zxvf nginx-1.17.0.tar.gz
unzip master.zip
cd nginx-1.17.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
make
sudo make install

3.修改nginx配置文件

执行sudo nano /usr/local/nginx/conf/nginx.conf,追加如下内容。

代码语言:javascript
复制
# RTMP协议
rtmp {
   # 创建一个服务,监听1935端口,这个是RTMP默认的端口
    server {
        listen 1935;   #默认端口
        chunk_size 4096;
        # 创建了一个名为live的应用, 支持直播
        application live {
            live on;
         }
    }
}
代码语言:javascript
复制
4.启动nginx+rtmp流媒体服务器
代码语言:javascript
复制
sudo /usr/local/nginx/sbin/nginx
代码语言:javascript
复制
5.安装ffmpeg
代码语言:javascript
复制
sudo apt install ffmpeg

6.将usb麦克风插入到树莓派的usb口,启动ffmpeg从usb麦克风实时采集音频,并推流到树莓派上搭建好的nginx+rtmp流媒体服务器上。

代码语言:javascript
复制
ffmpeg -f alsa -ac 2 -i hw:1,0 -ar 44100 -f flv rtmp://192.168.1.150/live/audio

参数说明

主要参数:

-f 设定输出格式 -i 设定输入流(hw:1,0为外接的usb音频采集卡设备,hw:1,0的1指的是第一个外部设备,因为树莓派内部没有声卡,所以只能使用外部的usb音频采集卡); -ar 设定采样率(因为输出为flv格式,所以采样率只能选择44100,22050,11025这三种);

注意:192.168.1.150为树莓派的IP地址。

7.在windows客户端中使用VLC软件打开网络串流,地址为“rtmp://192.168.1.150/live/audio”,即可收听到树莓派麦克风上捕获到的声音。

当前,可以在树莓派相同的wifi网络下,可以实现窃听,如果想要实现在任何地方的外网收听,还需要实现下面的FRP内网穿透。

3.2 在树莓派上搭建FRP内网穿透服务

3.2.1 服务端 - frps(VPS服务器)

1.下载程序

我的VPS服务器是unbuntu系统,使用的是arm64架构,所以需要下载arm64架构的frp软件。

代码语言:javascript
复制
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz

解压

代码语言:javascript
复制
tar -xzvf frp_0.20.0_linux_amd64.tar.gz

新建文件夹

代码语言:javascript
复制
sudo mkdir -p /usr/local/frp

移动

代码语言:javascript
复制
sudo mv frp_0.18.0_linux_amd64 /usr/local/frp
cd /usr/local/frp

确保frps程序具有可执行权限

代码语言:javascript
复制
chmod +x frps

说明:目录下只主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。

2.配置程序

首先删掉frpc、frpc.ini两个文件,然后再进行配置,nano ./frps.ini:

代码语言:javascript
复制
[common]
bindport = 9000           #与客户端绑定的进行通信的端口
auto_token = hell.world      #客户端连接服务器端的口令

验证frps是否安装成功:

代码语言:javascript
复制
./frps -c frps.ini

如果没有出现错误提示就说明配置没有问题,可以正常使用。

接着按下Ctrl + C终止程序运行。

3.使frps开机启动

编辑/etc/rc.local文件,将启动那句命令加到exit 0语句之前(如果有):

代码语言:javascript
复制
nohup /usr/local/frpfrps -c /usr/local/frp/frps.ini &

3.2.2客户端 - frpc (树莓派)

1.下载FRP:

代码语言:javascript
复制
wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_arm.tar.gz

2.修改frpc.ini文件:

代码语言:javascript
复制
[common]

server_addr = XXX.XXX.XXX.XXX  #VPS服务器的公网IP

server_port = 9000                    #与服务端bind_port一致

auto_token = hello.world            #客户端连接服务器端的口令
代码语言:javascript
复制
[RTMP]

type = tcp               #连接协议

local_ip = 127.0.0.1     #内网服务器ip

local_port = 1935         #RTMP默认的端口

remote_port = 6000       #自定义的访问内部RTMP端口号

3.启动frpc:

执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为:

代码语言:javascript
复制
nohup ./frpc -c ./frpc.ini &

到此,FRP内网穿透就搭建完了。

0x04 开始远程监听

使用手机下载VLC Media Player,并将耳机连接到手机上(除非你想让窃听的内容被周围的人听到,当然也可以不连接耳机)。

手机上打开VLC软件,打开网络串流,地址为“rtmp://XXX.XXX.XXX.XXX:6000/live/audio”。

说明:XXX.XXX.XXX.XXX为VPS服务器的IP地址。

稍等一会,在耳机中即可听到远程的实时声音。注意,声音是有延迟的,对于我的网络大概延迟2s左右,具体需要自行测量。

备注:如果连接不成功,可以关闭VLC软件,重试几次即可。

0x05 结束语

当从耳机中听到远程的声音时,内心是无比激动的,希望我的这份愉悦与大家一起分享。

喜欢的话,支持一下吧。

*本文原创作者:xutiejun,本文属于FreeBuf原创奖励计划,未经许可禁止转载

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 所需材料
    • 1.树莓派
      • 2.USB麦克风
        • 3.VPS服务器
          • 4.手机
            • 5.VLC App
              • 6.耳机
              • 0x02 技术介绍
                • 什么是nginx?
                  • 什么是RTMP?
                    • 什么是FRP?
                    • 0x03 环境搭建
                      • 3.1 在树莓派上使用nginx+rtmp搭建音频直播流媒体服务器
                        • 参数说明
                          • 3.2 在树莓派上搭建FRP内网穿透服务
                          • 解压
                          • 新建文件夹
                          • 移动
                          • 确保frps程序具有可执行权限
                            • 0x04 开始远程监听
                              • 0x05 结束语
                              相关产品与服务
                              云直播
                              云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档