資料介紹
描述
在這個(gè)項(xiàng)目中,我使用 Beaglebone Blue 通過 OBDII 端口將其連接到車輛上的 CAN 總線。我展示了如何使用 can-utils 和 python-can 來發(fā)送和接收 CAN 消息。我還介紹了如何將 GPS 模塊和蜂窩調(diào)制解調(diào)器連接到 Beaglebone,以便您可以遠(yuǎn)程獲取數(shù)據(jù)并將數(shù)據(jù)發(fā)送到移動(dòng)的汽車。我使用 Python 腳本收集 GPS 坐標(biāo)并解碼 CAN 消息(車速、發(fā)動(dòng)機(jī)、RPM、溫度等),然后將所有內(nèi)容發(fā)送到在 AWS 上運(yùn)行的簡單 Flask 服務(wù)器。
我們今天正在構(gòu)建的間諜設(shè)備稱為 ChupaCarBrah。
部分
這些是用于構(gòu)建 ChupaCarBrah 的部件。
我使用塑料沖洗裝置蓋板連接 Beaglebone,并使用橡皮筋固定其他部件。我不得不在蓋板的側(cè)面鉆兩個(gè)額外的孔以匹配 BeagleBone 孔。我建議使用彩色連接線。這里使用的顏色標(biāo)準(zhǔn)是:
- 黑色:接地
- 紅色:VCC
- 黃色:CAN 高
- 綠色:CAN 低
BeagleBone 引腳和 CAN 連接器如下所示。需要一個(gè) JST/SH 連接器將連接線連接到 BeagleBone CAN 插槽。
組裝
將 JST/SH 連接器連接到 Beaglebone Blue 上的 CAN 插槽,如下所示
將您的連接線連接到母連接器。在我們的例子中,連接器具有以下標(biāo)準(zhǔn): 黑色:GND;紅色:不會(huì)使用;黃色:CAN Hi;白色:CAN lo。你的可能不一樣。
- GND:JST/SH 黑色 - 連接線黑色
- CAN Hi:JST/SH 黃色 - 連接線黃色
- CAN Lo:JST/SH 白色 - 連接線綠色
將黑色連接線的末端連接到 DC Barrel Jack 適配器上的負(fù)極“-”插槽,但先不要擰緊。獲取另一根黑色連接線并插入同一個(gè)“-”插槽。將兩根黑線擰在一起。
將紅色連接線連接到 DC Barrel Jack 適配器上的正極“+”插槽。
DC Barrel Jack Adapter 插入 Beaglebone 12V 輸入插孔。OBDII 將提供為 BeagleBone 供電所需的 12V。
將連接線連接到母 OBDII 連接器。您可能需要查看車輛手冊(cè),但通常 OBDII 的標(biāo)準(zhǔn)引腳是:
根據(jù)我們的連接線顏色代碼約定,您需要將黑色線連接到 OBDII pin5;黃線到pin6;綠線接pin14,紅線接pin 16。
此時(shí)您已經(jīng)有了一個(gè)可以通過 OBDII 與您的汽車 CAN 總線交互的功能設(shè)備。如果這就是您要查找的全部內(nèi)容,請(qǐng)?zhí)痢皫в?can-utils 的 CAN 總線”部分。
要構(gòu)建完整的 ChupaCarBrah 設(shè)備,您仍然需要添加 GPS 模塊、蜂窩調(diào)制解調(diào)器和電池。電池是可選的,但在您的汽車電池沒電或 OBDII 電源斷開的情況下非常重要(即使電池完全沒電,您也可以找到您的車輛)。
將 GPS 模塊連接到 BeagleBone 上的 UART GPS 插槽。
將您的 USB 蜂窩調(diào)制解調(diào)器連接到 BeagleBone 上的 USB 端口。在將蜂窩調(diào)制解調(diào)器連接到 BeagleBone 之前,請(qǐng)確保您已將有效的 SIM 卡插入到蜂窩調(diào)制解調(diào)器。
將 BeagleBone 連接到塑料板或您選擇的任何其他絕緣材料上。
確保 GPS 模塊和電池正確放置在底部。
將 OBDII 電纜放在電池上并使用橡皮筋固定所有東西。
確保連接線固定在 OBDII 連接器上。我也用了更多的橡皮筋。
連接電池,您的 ChupaCarBrah 將啟動(dòng)。
現(xiàn)在您已經(jīng)準(zhǔn)備好硬件,讓我們?cè)O(shè)置所有必要的軟件,以便我們可以開始使用 CAN 消息。
帶有 can-utils 的 CAN 總線
打開您的 BeagleBone 并通過 WiFi 連接到它。我建議僅在長距離上使用蜂窩 LTE 網(wǎng)絡(luò),以便為您的數(shù)據(jù)計(jì)劃節(jié)省一些錢。確保你已經(jīng)安裝并更新了 can-utils/socketCAN。運(yùn)行以下命令:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install can-utils
安裝/更新 can-utils 后,檢查 can0 接口是否可用
sudo ifconfig can0
root@beaglebone:~# sudo ifconfig can0
can0: flags=128 mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 43
如果您在第二行看到帶有 的類似輸出,則表示您的 can0 接口可用且已禁用。在將 ChupaCarbrah 連接到汽車之前,您希望將其關(guān)閉。如果您需要禁用它,請(qǐng)運(yùn)行:
sudo ifconfig can0 down
然后再次檢查狀態(tài)
sudo ifconfig can0
在確認(rèn)接口 can0 可用和禁用后,將 ChupaCarBrah 連接到您的汽車 OBDII 端口(又名 DLC - 數(shù)據(jù)鏈路連接器)。有關(guān)確切位置,請(qǐng)參閱您的汽車手冊(cè),但通常位于靠近方向盤的儀表板下方。
完成整個(gè)設(shè)置后,您可能希望將其隱藏在儀表板中。
將 ChupaCarBrah 物理連接到您的汽車后,打開點(diǎn)火鑰匙。您可能想啟動(dòng)引擎以防止耗盡汽車的電池(不要犯我犯的同樣錯(cuò)誤)。設(shè)置波特率,在我們的例子中是 500kbps,然后打開 can0 接口:
sudo ip link set can0 up type can bitrate 500000
sudo ifconfig can0 up
sudo ifconfig can0
root@beaglebone:~# sudo ifconfig can0
can0: flags=193 mtu 16,running,noarp>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 43
如您所見,現(xiàn)在輸出包含“”,這意味著您已準(zhǔn)備好發(fā)送一些 CAN 消息。,>打開另一個(gè)終端(ssh 會(huì)話)并運(yùn)行:
sudo candump can0
根據(jù)您的車輛,您可能會(huì)看到很多消息被捕獲,類似于以下內(nèi)容:
can0 418 [8] 50 FF 60 00 00 20 00 00
can0 412 [6] 1E 00 7A 00 8E 00
can0 2F1 [8] 00 00 79 00 00 00 00 00
can0 300 [8] 00 1B 80 89 9F FF 80 0A
can0 248 [8] 00 08 00 09 00 00 41 01
can0 236 [8] 0F FF 10 00 F0 00 00 39
can0 328 [8] 00 00 80 00 D8 80 FF FF
can0 330 [8] 0C FC FC FF FF FF 3F 89
can0 210 [8] 00 00 00 00 00 00 00 00
can0 308 [8] 40 02 B0 40 01 1F FF 00
can0 309 [7] 1F FF FF FF 0F FF 00
can0 312 [8] 67 EF 07 EF 09 BF 07 92
can0 356 [7] 3F FF 3F FF 0B B8 00
can0 7BC [8] 40 00 00 00 00 00 00 00
can0 218 [8] 8E 38 DD 42 00 80 00 00
can0 338 [8] FF FF 00 FF FF 00 FF FF
can0 315 [7] 28 00 00 00 00 8D 00
can0 200 [8] 00 03 C0 00 C0 00 C0 00
但是,對(duì)于某些車輛,包括我的車輛,ODBII CAN 總線默認(rèn)是安靜的,并且只會(huì)對(duì)發(fā)送到總線的消息做出反應(yīng)。如果您也是這種情況,您可以通過使用“cansend”命令發(fā)送檢索車輛 VIN 號(hào)的消息來確認(rèn) CAN 是否正常工作。讓“candump”在第二個(gè)終端上運(yùn)行并返回到第一個(gè)終端。然后運(yùn)行:
sudo cansend can0 7DF#0209020000000000
在運(yùn)行“candump”的終端上,您應(yīng)該能夠看到與此類似的請(qǐng)求和響應(yīng):
root@beaglebone:~# candump can0
can0 7DF [8] 02 09 02 00 00 00 00 00
can0 7E8 [8] 10 14 49 02 01 32 43 34
can0 484 [8] 03 7F 09 11 00 00 00 00
第二行的響應(yīng)“7E8”將最后 3 個(gè)字節(jié)設(shè)置為 32 43 34。如果我們將其從十六進(jìn)制解碼為 ASCII,我們會(huì)得到“2C4”,這實(shí)際上是我的車輛 VIN 的前 3 個(gè)數(shù)字。
您可以使用此在線 VIN 解碼器來確認(rèn)數(shù)據(jù)是否準(zhǔn)確:https ://vpic.nhtsa.dot.gov/decoder/Decoder
為獲取 VIN 號(hào)碼而發(fā)送的消息是“7DF#0209020000000000”。7DF 是 CAN 仲裁 ID(您想使用像這樣的大數(shù)字進(jìn)行測(cè)試,因?yàn)檩^高的數(shù)字具有較低的優(yōu)先級(jí))。“0209020000000000”是數(shù)據(jù)字段:
- “02”:數(shù)據(jù)長度
- “09”:服務(wù) ID 9
- “02”:讀取 VIN 命令
- “0000000000”被忽略
第一個(gè)“02”字節(jié)表示只有數(shù)據(jù)字段上接下來的兩個(gè)字節(jié)是命令的一部分。剩余的“00”字節(jié)全部被忽略;
如果您想嘗試手動(dòng)發(fā)送其他命令,請(qǐng)參考:https ://en.wikipedia.org/wiki/OBD-II_PIDs
現(xiàn)在您確認(rèn) can-utils 工作正常,讓我們使用 Python 發(fā)送更多命令。首先,確保您安裝了 python-can pip 模塊:
sudo python3 -m pip install python-can
然后,運(yùn)行get_vin.py以檢索您汽車的 VIN。這是get_vin.py的 Python 代碼:
import can
bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000)
service_int = 9
pid_int = 2
msg = can.Message(arbitration_id=0x7DF, data=[2, service_int, pid_int, 0, 0, 0, 0, 0], is_extended_id=False)
try:
bus.send(msg)
response = bus.recv(timeout=2)
print(response)
except can.CanError:
print("CAN error")
finally:
bus.shutdown()
sudo python3 get_vin.py
隨意更改“ service_int ”和“ pid_int ”的值并測(cè)試OBDII PID 文檔中的其他命令。
檢索 GPS 數(shù)據(jù)
要測(cè)試您的 GPS 模塊,只需運(yùn)行:
tio /dev/ttyO2 -b 4800
你應(yīng)該得到一個(gè)類似這樣的數(shù)據(jù)流:
root@beaglebone:~# tio /dev/ttyO2 -b 4800
[tio 17:04:53] tio v1.32
[tio 17:04:53] Press ctrl-t q to quit
[tio 17:04:53] Connected
$GPGGA,170454.000,3500.87097,N,10641.14163,W,1,08,1.1,204.3,M,-34.0,M,,0000*69
$GPGSA,A,3,30,07,11,28,01,08,17,13,,,,,2.2,1.1,2.0*33
$GPRMC,170454.000,A,3500.87097,N,10641.14163,W,0.00,171.40,100520,,,A*79
$GPGGA,170455.000,3500.87097,N,10641.14163,W,1,08,1.1,204.3,M,-34.0,M,,0000*68
$GPGSA,A,3,30,07,11,28,01,08,17,13,,,,,2.2,1.1,2.0*33
$GPGSV,3,1,12,30,74,271,37,07,62,163,35,11,51,074,37,28,46,294,18*74
$GPGSV,3,2,12,01,41,120,31,08,30,049,31,17,26,226,27,13,23,302,28*73
$GPGSV,3,3,12,15,04,323,14,23,16,208,,19,03,224,,09,00,189,*77
$GPRMC,170455.000,A,3500.87097,N,10641.14163,W,0.00,171.40,100520,,,A*78
$GPGGA,170456.000,3500.87097,N,10641.14163,W,1,08,1.1,204.3,M,-34.0,M,,0000*6B
$GPGSA,A,3,30,07,11,28,01,08,17,13,,,,,2.2,1.1,2.0*33
$GPRMC,170456.000,A,3500.87097,N,10641.14163,W,0.00,171.40,100520,,,A*7B
[tio 17:04:56] Disconnected
按“ctrl-t q”退出。您的位置將在句子“GPRMC”上可用。例如,復(fù)制句子“ $GPRMC, 170454.000, A, 3500.87097, N, 10641.14163, W, 0.00, 171.40, 100520,,, A*79 ”并使用此在線解碼器對(duì)其進(jìn)行解碼:https ://rl.se/ gprmc
放大地圖,看看 GPS 數(shù)據(jù)有多準(zhǔn)確。
現(xiàn)在,讓我們使用 Python 做同樣的事情。確保您已安裝 pyserial 模塊:
sudo python3 -m pip install pyserial
然后,運(yùn)行get_gps_data.py以檢索您汽車的位置。這是get_gps_data.py 的 Python 代碼:
import time
import serial
gps_data = ""
utf_data = ""
ser = serial.Serial('/dev/ttyO2', 4800)
counter = 0
while utf_data.find("GPRMC") == -1:
counter += 1
try:
ser_data = ser.readline()
utf_data = ser_data.decode()
except:
utf_data = ""
time.sleep(0.5)
if counter > 50:
break
ser.close()
if utf_data.find("GPRMC") != -1:
utf_data = utf_data.replace('\r', '')
utf_data = utf_data.replace('\n', '')
gps_data = utf_data
print(gps_data)
sudo python3 get_gps_data.py
root@beaglebone:~# sudo python3 get_gps_data.py
$GPRMC,173439.000,A,3500.87097,N,10641.14163,W,0.00,348.52,100520,,,A*74
下一步是創(chuàng)建蜂窩 LTE 數(shù)據(jù)鏈路,這樣即使汽車不在我們的 WiFi 網(wǎng)絡(luò)范圍內(nèi),您也可以訪問 GPS 和 CAN 數(shù)據(jù)。
將 ChupaCarBrah 連接到蜂窩網(wǎng)絡(luò)
在本教程中,我使用 USB Hologram.io蜂窩調(diào)制解調(diào)器。隨意使用其他選項(xiàng)。我將使用 PPP 連接,因此 Python 客戶端可以將數(shù)據(jù)發(fā)送到在 AWS 上運(yùn)行的服務(wù)器應(yīng)用程序。確保已安裝 ppp,然后安裝 hologram-python:
sudo apt-get install ppp
sudo python3 -m pip install hologram-python
您還需要訂閱數(shù)據(jù)計(jì)劃并激活您的 SIM 卡。請(qǐng)參閱官方全息圖文檔以準(zhǔn)備好您的卡。
激活您的卡后,確保您的藍(lán)色 LED 指示燈亮起,并且調(diào)制解調(diào)器上的紅色 LED 指示燈閃爍。
然后,要連接和斷開與蜂窩網(wǎng)絡(luò)的連接,請(qǐng)運(yùn)行:
sudo hologram network connect
sudo hologram network disconnect
為了測(cè)試 Internet 連接,您可以使用單個(gè) ICMP 請(qǐng)求 ping Google:
ping -c 1 www.google.com
如果您收到回復(fù),則表示 ChupaCarBrah 已連接到蜂窩網(wǎng)絡(luò),并且它應(yīng)該能夠在您在 LTE 覆蓋范圍內(nèi)駕駛的任何地方(幾乎在美國的任何地方)泄露汽車數(shù)據(jù)。
現(xiàn)在,讓我們看看如何使用 Python 連接和斷開 Hologram 蜂窩網(wǎng)絡(luò)。運(yùn)行cellular_test.py腳本來檢查您的 LTE 數(shù)據(jù)與互聯(lián)網(wǎng)的連接。這是示例腳本cellular_test.py 的 Python 代碼:
import psutil
import time
import subprocess
from Hologram.CustomCloud import CustomCloud
def hologram_network_connect():
hologram_network_disconnect()
time.sleep(2)
cloud = CustomCloud(None, network='cellular')
cloud.network.disable_at_sockets_mode()
res = cloud.network.connect()
message = ""
if res:
message = "PPP session started"
else:
message = "Failed to start PPP"
print(message)
def hologram_network_disconnect():
print('Checking for existing PPP sessions')
for proc in psutil.process_iter():
try:
pinfo = proc.as_dict(attrs=['pid', 'name'])
except:
print("Failed to check for existing PPP sessions")
if 'pppd' in pinfo['name']:
print('Found existing PPP session on pid: %s' % pinfo['pid'])
print('Killing pid %s now' % pinfo['pid'])
process = psutil.Process(pinfo['pid'])
process.terminate()
process.wait()
hologram_network_connect()
time.sleep(2)
ping_response = subprocess.Popen(["/bin/ping", "-c1", "-w100", "www.google.com"], stdout=subprocess.PIPE).stdout.read()
print(ping_response.decode())
time.sleep(2)
hologram_network_disconnect()
sudo python3 cellular_test.py
root@beaglebone:~# sudo python3 cellular_test.py
Checking for existing PPP sessions
PPP session started
PING www.google.com (216.58.201.228) 56(84) bytes of data.
64 bytes from par10s33-in-f4.1e100.net (216.58.201.228): icmp_seq=1 ttl=49 time=420 ms
--- www.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 420.049/420.049/420.049/0.000 ms
Checking for existing PPP sessions
Found existing PPP session on pid: 1559
Killing pid 1559 now
現(xiàn)在您知道如何使用 Python 發(fā)送和接收 CAN 消息了;獲取 GPS 位置;并連接到蜂窩網(wǎng)絡(luò);讓我們把它們放在一起,創(chuàng)建一個(gè)簡單的客戶端和服務(wù)器應(yīng)用程序來泄露所有數(shù)據(jù)。
ChupaCarBrah Python 應(yīng)用程序
我給你帶來了兩個(gè)非常簡單的 Python 腳本,它們可以作為一個(gè)框架來構(gòu)建更復(fù)雜的汽車黑客應(yīng)用程序。客戶端腳本基本上是我迄今為止介紹的所有示例 Python 腳本的組合。它將在 BeagleBone Blue 上運(yùn)行。服務(wù)器腳本是一個(gè)簡單的 Flask 應(yīng)用程序,它將在 AWS(Elastic Beanstalk)上運(yùn)行,并將使用 JSON 格式存儲(chǔ)和顯示所有泄露的數(shù)據(jù)。
客戶端腳本 - chupacarbrah.py
chupacarbrah.py客戶端腳本可以在這里找到。使用以下 git 命令將其克隆到您的 BeagleBone:
git clone https://github.com/blupants/chupacarbrah.git
cd chupacarbrah
客戶端腳本從由變量“ obd2_csv_file ”定義的 csv 文件中讀取要執(zhí)行的 OBDII PID 命令列表。然后它解析命令以創(chuàng)建 CAN 消息。csv 文件格式包括一個(gè)“啟用”列,允許您啟用(設(shè)置為 1)或禁用(設(shè)置為零)您要執(zhí)行的特定 OBDII PID。默認(rèn)情況下,腳本使用simple.csv文件和以下命令子集:
- 發(fā)動(dòng)機(jī)冷卻液溫度
- 發(fā)動(dòng)機(jī)轉(zhuǎn)速
- 車速
- 進(jìn)氣溫度
文件obd2_std_PIDs_enabled.csv包含要啟用/禁用的所有可用 OBDII PID 命令。請(qǐng)確保您了解這些命令的作用,并在啟用額外命令之前知道您在做什么。
chupacarbrah.py 客戶端腳本將使用 csv 文件中的 OBDII PID 公式解碼所有響應(yīng),并將數(shù)據(jù)與 GPS 坐標(biāo)一起發(fā)布到 AWS 上的 Flask 應(yīng)用程序。確保在變量“ server_url ”上定義服務(wù)器 URL 。我們將很快介紹如何將服務(wù)器腳本部署到 AWS 以及如何獲取服務(wù)器 URL。
正確配置客戶端應(yīng)用程序后,您可以運(yùn)行它:
sudo python3 chupacarbrah.py
它將顯示從 CAN 響應(yīng)消息中解碼的當(dāng)前數(shù)據(jù),并每 1 分鐘將所有內(nèi)容發(fā)送到服務(wù)器。
要停止客戶端并正常退出,請(qǐng)運(yùn)行:
sudo touch /tmp/stop
現(xiàn)在,讓我們?cè)O(shè)置服務(wù)器腳本來接收泄露的數(shù)據(jù)。
服務(wù)器腳本 - chupacarbrah_server.py
chupacarbrah_server.py腳本可以在這里找到。它將公開兩個(gè)端點(diǎn),以便您可以發(fā)送和獲取泄露的數(shù)據(jù):
發(fā)布 /api/v1/汽車
獲取 /api/v1/狀態(tài)
客戶端腳本將使用“POST /api/v1/cars”端點(diǎn)提交所有數(shù)據(jù)。然后,您可以在家中舒適地使用“GET /api/v1/status”從 Web 瀏覽器監(jiān)控 JSON 數(shù)據(jù)。
讓我們?cè)O(shè)置一個(gè)簡單的本地 Flask 應(yīng)用程序并在這兩個(gè)端點(diǎn)上運(yùn)行一些快速測(cè)試。在本教程的后面,我將展示如何將這個(gè)相同的本地應(yīng)用程序部署到 AWS。
在您的本地 PC 上,而不是 BeagleBone,創(chuàng)建一個(gè)項(xiàng)目目錄:
~$ mkdir eb-flask
~$ cd eb-flask
創(chuàng)建并激活一個(gè)名為“virt”的虛擬環(huán)境:
~/eb-flask$ virtualenv virt
~$ source virt/bin/activate
(virt) ~/eb-flask$
使用 pip install 安裝燒瓶:
(virt)~/eb-flask$ pip install flask==1.0.2
使用 pip freeze 查看已安裝的庫:
(virt) sacchetin@Sacchetins-MacBook-Air eb-flask % pip freeze
aniso8601==8.0.0
click==7.1.2
Flask==1.0.2
Flask-RESTful==0.3.8
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
pytz==2020.1
six==1.14.0
Werkzeug==1.0.1
(virt) sacchetin@Sacchetins-MacBook-Air eb-flask %
將 pip freeze 的輸出保存到名為 requirements.txt 的文件中。
(virt)~/eb-flask$ pip freeze > requirements.txt
將chupacarbrah_server.py下載到您的eb-flask文件夾并將其重命名為application.py:
curl "https://raw.githubusercontent.com/blupants/chupacarbrah_server/master/chupacarbrah_server.py" -o application.py
在本地運(yùn)行應(yīng)用程序進(jìn)行測(cè)試:
(virt) sacchetin@Sacchetins-MacBook-Air eb-flask % python3 application.py
* Serving Flask app "application" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
發(fā)送一些虛擬數(shù)據(jù)以確保一切正常。打開一個(gè)新終端并使用 curl 發(fā)送一些數(shù)據(jù):
curl --header "Content-Type: application/json" \
--request POST \
--data '{"car_uuid":"51f317ec266e4adb956212201f87ba52", "VIN": "2C4", "maker": "Generic", "log":{"timestamp":"20200501120000","GPS":"00"}}' \
"http://localhost:5000/api/v1/cars"
本地服務(wù)器將回復(fù) car_uuid,在本例中為:“51f317ec266e4adb956212201f87ba52”。打開瀏覽器,最好是 Firefox,因?yàn)樗馕?JSON,然后訪問http://localhost:5000/api/v1/status
如果您能夠看到剛剛使用 curl 發(fā)布的虛擬數(shù)據(jù),則意味著您的 Flask 應(yīng)用程序已準(zhǔn)備好部署到 AWS。
將 ChupaCarBrah 服務(wù)器應(yīng)用程序部署到 AWS
首先,您需要在 AWS 上創(chuàng)建一個(gè)帳戶并在您的計(jì)算機(jī)上安裝 AWS 客戶端。請(qǐng)?jiān)诖颂?/font>創(chuàng)建您的 AWS 賬戶。部署應(yīng)用程序所描述的步驟基于此處的官方AWS 文檔。
確保您能夠登錄 AWS 控制臺(tái)。然后,安裝 AWS 客戶端:
python3 -m pip install awscli
python3 -m pip install awsebcli
使用 eb init 命令初始化您的 EB CLI 存儲(chǔ)庫:
~/eb-flask$ eb init -p python-3.6 flask-chupacarbrah --region us-east-2
可選,但強(qiáng)烈建議:再次運(yùn)行 eb init 以配置默認(rèn)密鑰對(duì),以便您可以使用 SSH 連接到運(yùn)行您的應(yīng)用程序的 EC2 實(shí)例:
~/eb-flask$ eb init
Do you want to set up SSH for your instances? (y/n): ySelect a keypair. 1) my-keypair 2) [ Create new KeyPair ]
創(chuàng)建一個(gè)環(huán)境并使用 eb create 將您的應(yīng)用程序部署到其中:
~/eb-flask$ eb create chupacarbrah-env
環(huán)境創(chuàng)建大約需要 5 分鐘。環(huán)境創(chuàng)建過程完成后,使用 eb open 打開您的網(wǎng)站:
~/eb-flask$ eb open
它將打開一個(gè)網(wǎng)絡(luò)瀏覽器并自動(dòng)加載新服務(wù)的 URL。復(fù)制 URL,返回到您的 BeagleBone,編輯客戶端腳本 chupacarbrah.py 并將變量“ server_url ”更改為您的 AWS 應(yīng)用程序的實(shí)際 URL。使用我的部署示例,“ server_url ”的值應(yīng)設(shè)置為:
global server_url
server_url = "http://chupacarbrah-env.eba-bdahj3wp.us-east-2.elasticbeanstalk.com/"
您的 URL 會(huì)有所不同,但格式應(yīng)該相似。在 BeagleBone 上重新啟動(dòng) chupacarbrah.py,從現(xiàn)在開始,它將開始向 AWS 發(fā)送數(shù)據(jù)。
您也可以將一些虛擬數(shù)據(jù)發(fā)送到您的 AWS 應(yīng)用程序以進(jìn)行測(cè)試。通過將 localhost:5000 替換為您設(shè)置變量“ server_url ”的相同值來重復(fù)“POST /api/v1/cars” curl 請(qǐng)求。例如:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"car_uuid":"51f317ec266e4adb956212201f87ba52", "VIN": "2C4", "maker": "Generic", "log":{"timestamp":"20200501120000","GPS":"00"}}' \
"http://chupacarbrah-env.eba-bdahj3wp.us-east-2.elasticbeanstalk.com/api/v1/cars"
打開 Firefox 瀏覽器并再次訪問http://chupacarbrah-env.eba-bdahj3wp.us-east-2.elasticbeanstalk.com/ 。您應(yīng)該會(huì)看到您發(fā)送的所有虛擬數(shù)據(jù)以及從 ChupaCarBrah 設(shè)備中提取的所有數(shù)據(jù)。
用你的新 ChupaCarBrah 設(shè)備破解汽車
我目前正在撰寫一系列關(guān)于汽車黑客攻擊的網(wǎng)絡(luò)安全文章。請(qǐng)繼續(xù)關(guān)注我的Medium 頁面,了解更多關(guān)于您今天剛剛構(gòu)建的 ChupaCarBrah 設(shè)備可以做的所有事情。
- 使用Beaglebone和BluPants進(jìn)行編碼
- BeagleBone Black的PCB板 0次下載
- 《Python編程入門》.pdf 0次下載
- LICi算法抵抗積分攻擊的相關(guān)實(shí)驗(yàn)及分析 18次下載
- 基于概率屬性網(wǎng)絡(luò)攻擊圖的攻擊路徑預(yù)測(cè)方法 14次下載
- 基于SQAG模型的網(wǎng)絡(luò)攻擊建模優(yōu)化算法 6次下載
- 基于SQAG模型的網(wǎng)絡(luò)攻擊建模優(yōu)化算法 14次下載
- Python進(jìn)行配置文件的教程免費(fèi)下載 6次下載
- Python的學(xué)習(xí)和使用經(jīng)驗(yàn)說明 16次下載
- Python語言的特點(diǎn)和使用Python對(duì)XML文件的數(shù)據(jù)進(jìn)行解析說明 6次下載
- 如何使用符號(hào)執(zhí)行的python實(shí)現(xiàn)攻擊腳本分析平臺(tái) 11次下載
- 為什么選用python進(jìn)行科學(xué)計(jì)算 3次下載
- python基礎(chǔ)教程之如何使用python進(jìn)行環(huán)境搭建 32次下載
- beaglebone--Android開發(fā)教程(中文資料) 12次下載
- BeagleBone-Camera-Expansion-RevA 0次下載
- 使用Python進(jìn)行Ping測(cè)試 232次閱讀
- 使用Python進(jìn)行自然語言處理 246次閱讀
- 操作BeagleBone Black的方法 3157次閱讀
- 應(yīng)對(duì)黑客攻擊的10個(gè)網(wǎng)絡(luò)安全小技巧 4639次閱讀
- 服務(wù)器遭到DDoS攻擊的應(yīng)對(duì)方法 3352次閱讀
- 有效地預(yù)防DDoS攻擊的技術(shù)手段及解決措施 2863次閱讀
- 如何避免供應(yīng)鏈?zhǔn)艿骄W(wǎng)絡(luò)攻擊 1548次閱讀
- 是德科技推出汽車網(wǎng)絡(luò)安全計(jì)劃,可主動(dòng)防范網(wǎng)絡(luò)攻擊 516次閱讀
- 一文盤點(diǎn)黑客最可怕的7種攻擊手段 4940次閱讀
- 黑客經(jīng)常通過哪些端口進(jìn)行入侵 1.2w次閱讀
- 詳細(xì)剖析黑客利用機(jī)器學(xué)習(xí)發(fā)起網(wǎng)絡(luò)攻擊的六種方式 6955次閱讀
- 防止電池被假冒--選擇能提供所需精度,防止克隆、黑客攻擊的電量計(jì)IC 5571次閱讀
- 黑客Dos命令大全_入門dos命令教程 3.3w次閱讀
- 怎么編寫ddos攻擊器ddos攻擊器源碼 1.8w次閱讀
- ddos攻擊能防住嗎?ddos攻擊預(yù)防方法分析 3.3w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多