在N年前看《竊聽風雲》時,裏面的竊聽環節就深深吸引着我,讓我記憶深入。javascript
在N年前對於普通的咱們想要實現遠程竊聽技術須要購買昂貴的設備才能實現。css
但最近科技發展飛速,通常家庭寬帶的網速已經達到了100M,同時手機的4G已經普及,5G也開始商用了(加油華爲,加油China),在這樣的環境下實現電影裏面的竊聽技術就比較容易得多了。java
下面請隨我一塊兒開始「竊聽」之旅。linux
通常家庭的寬帶都不是公網IP,外網沒法直接鏈接,因此須要使用VPS服務器來實現FRP內網穿透,這樣就能夠直接訪問家庭內部主機了。nginx
VLC 是一款自由、開源的跨平臺多媒體播放器及框架,可播放大多數多媒體文件,以及 DVD、音頻 CD、VCD 及各種流媒體協議。git
本文所使用的到的主要技術有:使用nginx+rtmp搭建音頻直播流媒體服務器和FRP 內網穿透。github
Nginx 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。web
RTMP協議是Real Time Message Protocol(實時信息傳輸協議)的縮寫,它是由Adobe公司提出的一種應用層的協議,用來解決多媒體數據傳輸流的多路複用(Multiplexing)和分包(packetizing)的問題。隨着VR技術的發展,視頻直播等領域逐漸活躍起來,RTMP做爲業內普遍使用的協議也從新被相關開發者重視起來。sql
FRP是fast reverse proxy的縮寫,簡單地說,FRP就是一個反向代理軟件,它具備體積輕量且功能強大特色,可使處於內網或防火牆後的設備對外界提供服務。swift
1.安裝所須要的依賴
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
2.安裝nginx和rtmp
wget http://nginx.org/download/nginx-1.17.0.tar.gztar -zxvf nginx-1.17.0.tar.gzunzip master.zipcd nginx-1.17.0makesudo make install
3.修改nginx配置文件
執行sudo nano /usr/local/nginx/conf/nginx.conf,追加以下內容。
# RTMP協議rtmp { # 建立一個服務,監聽1935端口,這個是RTMP默認的端口 server { listen 1935; #默認端口 chunk_size 4096; # 建立了一個名爲live的應用, 支持直播 application live { live on; } }}
4.啓動nginx+rtmp流媒體服務器
sudo /usr/local/nginx/sbin/nginx
5.安裝ffmpeg
sudo apt install ffmpeg
6.將usb麥克風插入到樹莓派的usb口,啓動ffmpeg從usb麥克風實時採集音頻,並推流到樹莓派上搭建好的nginx+rtmp流媒體服務器上。
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.1 服務端 - frps(VPS服務器)
1.下載程序
個人VPS服務器是unbuntu系統,使用的是arm64架構,因此須要下載arm64架構的frp軟件。
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz
tar -xzvf frp_0.20.0_linux_amd64.tar.gz
sudo mkdir -p /usr/local/frp
sudo mv frp_0.18.0_linux_amd64 /usr/local/frpcd /usr/local/frp
chmod +x frps
說明:目錄下只主要關注4個文件,分別是frpc、frpc.ini和frps、frps.ini,前者兩個文件是客戶端所關注文件,後者兩個文件是服務端所關注兩個文件。
2.配置程序
首先刪掉frpc、frpc.ini兩個文件,而後再進行配置,nano ./frps.ini:
[common]bindport = 9000 #與客戶端綁定的進行通訊的端口auto_token = hell.world #客戶端鏈接服務器端的口令
驗證frps是否安裝成功:
./frps -c frps.ini
若是沒有出現錯誤提示就說明配置沒有問題,能夠正常使用。
接着按下Ctrl + C終止程序運行。
3.使frps開機啓動
編輯/etc/rc.local文件,將啓動那句命令加到exit 0語句以前(若是有):
nohup /usr/local/frpfrps -c /usr/local/frp/frps.ini &
3.2.2客戶端 - frpc (樹莓派)
1.下載FRP:
wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_arm.tar.gz
2.修改frpc.ini文件:
[common]
server_addr = XXX.XXX.XXX.XXX #VPS服務器的公網IP
server_port = 9000 #與服務端bind_port一致
auto_token = hello.world #客戶端鏈接服務器端的口令
[RTMP]
type = tcp #鏈接協議
local_ip = 127.0.0.1 #內網服務器ip
local_port = 1935 #RTMP默認的端口
remote_port = 6000 #自定義的訪問內部RTMP端口號
3.啓動frpc:
執行./frpc -c ./frpc.ini啓動,這是前臺啓動,後臺啓動命令爲:
nohup ./frpc -c ./frpc.ini &
到此,FRP內網穿透就搭建完了。
使用手機下載VLC Media Player,並將耳機鏈接到手機上(除非你想讓竊聽的內容被周圍的人聽到,固然也能夠不鏈接耳機)。
手機上打開VLC軟件,打開網絡串流,地址爲「rtmp://XXX.XXX.XXX.XXX:6000/live/audio」。
說明:XXX.XXX.XXX.XXX爲VPS服務器的IP地址。
稍等一會,在耳機中便可聽到遠程的實時聲音。注意,聲音是有延遲的,對於個人網絡大概延遲2s左右,具體須要自行測量。
備註:若是鏈接不成功,能夠關閉VLC軟件,重試幾回便可。
當從耳機中聽到遠程的聲音時,心裏是無比激動的,但願個人這份愉悅與你們一塊兒分享。
喜歡的話,支持一下吧。
本文原創做者:xutiejun
原文連接:https://mp.weixin.qq.com/s/uBr6sgbU2ISx4EaZIq6Y6g