精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>ChupaCarBrah:使用BeagleBone和Python進行汽車黑客攻擊

ChupaCarBrah:使用BeagleBone和Python進行汽車黑客攻擊

2022-12-16 | zip | 1.64 MB | 次下載 | 免費

資料介紹

描述

在這個項目中,我使用 Beaglebone Blue 通過 OBDII 端口將其連接到車輛上的 CAN 總線。我展示了如何使用 can-utils 和 python-can 來發送和接收 CAN 消息。我還介紹了如何將 GPS 模塊和蜂窩調制解調器連接到 Beaglebone,以便您可以遠程獲取數據并將數據發送到移動的汽車。我使用 Python 腳本收集 GPS 坐標并解碼 CAN 消息(車速、發動機、RPM、溫度等),然后將所有內容發送到在 AWS 上運行的簡單 Flask 服務器。

?
?
?
pYYBAGOYHx2Af0YFAAk6fAapcPI372.png
?
1 / 2 ? ChupaCarBrah 使用 OBDII 連接器
?

我們今天正在構建的間諜設備稱為 ChupaCarBrah。

?

部分

這些是用于構建 ChupaCarBrah 的部件。

pYYBAGOYH3SAQJ3NAA1ihjX1YHI476.png
ChupaCarBrah 零件
?

我使用塑料沖洗裝置蓋板連接 Beaglebone,并使用橡皮筋固定其他部件。我不得不在蓋板的側面鉆兩個額外的孔以匹配 BeagleBone 孔。我建議使用彩色連接線。這里使用的顏色標準是:

  • 黑色:接地
  • 紅色:VCC
  • 黃色:CAN 高
  • 綠色:CAN 低

BeagleBone 引腳和 CAN 連接器如下所示。需要一個 JST/SH 連接器將連接線連接到 BeagleBone CAN 插槽。

?
?
?
pYYBAGOYH46Ab87DAAKUTy0YpE4842.jpg
?
1 / 2 ? BeagleBone 藍色引腳
?

組裝

將 JST/SH 連接器連接到 Beaglebone Blue 上的 CAN 插槽,如下所示

?
?
?
pYYBAGOYH6yABNrjAAuFUY46rqI158.png
?
1 / 2 ?將 JST 連接到 Beaglebone CAN 插槽
?

將您的連接線連接到母連接器。在我們的例子中,連接器具有以下標準: 黑色:GND;紅色:不會使用;黃色:CAN Hi;白色:CAN lo。你的可能不一樣。

  • GND:JST/SH 黑色 - 連接線黑色
  • CAN Hi:JST/SH 黃色 - 連接線黃色
  • CAN Lo:JST/SH 白色 - 連接線綠色
?
?
?
pYYBAGOYH8OAKBtAAA3HDQ95z10922.png
?
1 / 2 ?將連接線連接到 JST/SH 連接器
?

將黑色連接線的末端連接到 DC Barrel Jack 適配器上的負極“-”插槽,但先不要擰緊。獲取另一根黑色連接線并插入同一個“-”插槽。將兩根黑線擰在一起。

pYYBAGOYIAyAFguhAA2jG6lnPfc654.png
兩根黑色連接線連接到 DC Barrel Jack 上的“-”
?

將紅色連接線連接到 DC Barrel Jack 適配器上的正極“+”插槽。

?
?
?
pYYBAGOYxzuAIggIABCWkP3NE6g310.png
?
1 / 2 ?一根紅色連接線連接到 DC Barrel Jack 上的“+”
?

DC Barrel Jack Adapter 插入 Beaglebone 12V 輸入插孔。OBDII 將提供為 BeagleBone 供電所需的 12V。

pYYBAGOYx1qAIGueAAxH7h3EfQI027.png
連接到 BeagleBone 的 DC Barrel Jack 適配器
?

將連接線連接到母 OBDII 連接器。您可能需要查看車輛手冊,但通常 OBDII 的標準引腳是:

  • 引腳 5:信號 GND
  • 引腳 6:CAN 嗨
  • Pin14:CAN Lo
  • 引腳 16:12V
poYBAGOYx12ARkecAACC8nxK_x4948.png
OBDII 引出線
?

根據我們的連接線顏色代碼約定,您需要將黑色線連接到 OBDII pin5;黃線到pin6;綠線接pin14,紅線接pin 16。

?
?
?
poYBAGOYx3aAG30RAAgAik5vYUg492.png
?
1 / 2 ?連接線到母 OBDII 連接器
?

此時您已經有了一個可以通過 OBDII 與您的汽車 CAN 總線交互的功能設備。如果這就是您要查找的全部內容,請跳至“帶有 can-utils 的 CAN 總線”部分。

要構建完整的 ChupaCarBrah 設備,您仍然需要添加 GPS 模塊、蜂窩調制解調器和電池。電池是可選的,但在您的汽車電池沒電或 OBDII 電源斷開的情況下非常重要(即使電池完全沒電,您也可以找到您的車輛)。

將 GPS 模塊連接到 BeagleBone 上的 UART GPS 插槽。

?
?
?
poYBAGOYx6CARdC1AA4sAGhEjtg093.png
?
1 / 2 ? BeagleBone 上的 UART GPS 插槽
?

將您的 USB 蜂窩調制解調器連接到 BeagleBone 上的 USB 端口。在將蜂窩調制解調器連接到 BeagleBone 之前,請確保您已將有效的 SIM 卡插入到蜂窩調制解調器。

poYBAGOYx9WAL2RSAA-vbU49Cs4750.png
帶 SIM 卡的 USB 蜂窩調制解調器
?

將 BeagleBone 連接到塑料板或您選擇的任何其他絕緣材料上。

?
?
?
poYBAGOYx_KADvp8AAko5pUaRTI231.png
?
1 / 2 ?帶螺絲孔的塑料板
?

確保 GPS 模塊和電池正確放置在底部。

?
?
?
pYYBAGOYyAWAVCk8AAlAb4zP2sE334.png
?
1 / 2 ?底部受保護的 GPS 模塊
?

將 OBDII 電纜放在電池上并使用橡皮筋固定所有東西。

?
?
?
pYYBAGOYyCWAAQgRAA3XvUQaDYA161.png
?
1 / 2 ?電池底部的 OBDII 電纜
?

確保連接線固定在 OBDII 連接器上。我也用了更多的橡皮筋。

pYYBAGOab0GADNDWAA2naIEDWYE426.png
用于固定連接到 OBDII 連接器的連接器的橡皮筋
?

連接電池,您的 ChupaCarBrah 將啟動。

?
?
?
pYYBAGOab0eAQTa4AA2smADLr2I605.png
?
1 / 2 ?將電池連接到 BeagleBone
?

現在您已經準備好硬件,讓我們設置所有必要的軟件,以便我們可以開始使用 CAN 消息。

帶有 can-utils 的 CAN 總線

打開您的 BeagleBone 并通過 WiFi 連接到它我建議僅在長距離上使用蜂窩 LTE 網絡,以便為您的數據計劃節省一些錢。確保你已經安裝并更新了 can-utils/socketCAN。運行以下命令:

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 連接到汽車之前,您希望將其關閉。如果您需要禁用它,請運行:

sudo ifconfig can0 down

然后再次檢查狀態

sudo ifconfig can0

在確認接口 can0 可用和禁用后,將 ChupaCarBrah 連接到您的汽車 OBDII 端口(又名 DLC - 數據鏈路連接器)。有關確切位置,請參閱您的汽車手冊,但通常位于靠近方向盤的儀表板下方。

?
?
?
poYBAGOab02AKSyKAA2YDqbKqlY615.png
?
1 / 2 ?將 ChupaCarBrah 連接到 OBDII 端口
?

完成整個設置后,您可能希望將其隱藏在儀表板中。

?

將 ChupaCarBrah 物理連接到您的汽車后,打開點火鑰匙。您可能想啟動引擎以防止耗盡汽車的電池(不要犯我犯的同樣錯誤)。設置波特率,在我們的例子中是 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

如您所見,現在輸出包含“”,這意味著您已準備好發送一些 CAN 消息。,>打開另一個終端(ssh 會話)并運行:

sudo candump can0

根據您的車輛,您可能會看到很多消息被捕獲,類似于以下內容:

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

但是,對于某些車輛,包括我的車輛,ODBII CAN 總線默認是安靜的,并且只會對發送到總線的消息做出反應。如果您也是這種情況,您可以通過使用“cansend”命令發送檢索車輛 VIN 號的消息來確認 CAN 是否正常工作。讓“candump”在第二個終端上運行并返回到第一個終端。然后運行:

sudo cansend can0 7DF#0209020000000000

在運行“candump”的終端上,您應該能夠看到與此類似的請求和響應:

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

第二行的響應“7E8”將最后 3 個字節設置為 32 43 34。如果我們將其從十六進制解碼為 ASCII,我們會得到“2C4”,這實際上是我的車輛 VIN 的前 3 個數字。

您可以使用此在線 VIN 解碼器來確認數據是否準確:https ://vpic.nhtsa.dot.gov/decoder/Decoder

為獲取 VIN 號碼而發送的消息是“7DF#0209020000000000”。7DF 是 CAN 仲裁 ID(您想使用像這樣的大數字進行測試,因為較高的數字具有較低的優先級)。“0209020000000000”是數據字段:

  • “02”:數據長度
  • “09”:服務 ID 9
  • “02”:讀取 VIN 命令
  • “0000000000”被忽略

第一個“02”字節表示只有數據字段上接下來的兩個字節是命令的一部分。剩余的“00”字節全部被忽略;

如果您想嘗試手動發送其他命令,請參考:https ://en.wikipedia.org/wiki/OBD-II_PIDs

現在您確認 can-utils 工作正常,讓我們使用 Python 發送更多命令。首先,確保您安裝了 python-can pip 模塊:

sudo python3 -m pip install python-can

然后,運行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 ”的值并測試OBDII PID 文檔中的其他命令

檢索 GPS 數據

要測試您的 GPS 模塊,只需運行:

tio /dev/ttyO2 -b 4800

你應該得到一個類似這樣的數據流:

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”上可用。例如,復制句子“ $GPRMC, 170454.000, A, 3500.87097, N, 10641.14163, W, 0.00, 171.40, 100520,,, A*79 ”并使用此在線解碼器對其進行解碼:https ://rl.se/ gprmc

?
?
?
pYYBAGOab1CAK2m0AAL4eDuIhaU275.png
?
1 / 3 ?地圖上繪制的 GPS 坐標
?

放大地圖,看看 GPS 數據有多準確。

現在,讓我們使用 Python 做同樣的事情。確保您已安裝 pyserial 模塊:

sudo python3 -m pip install pyserial

然后,運行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

下一步是創建蜂窩 LTE 數據鏈路,這樣即使汽車不在我們的 WiFi 網絡范圍內,您也可以訪問 GPS 和 CAN 數據。

將 ChupaCarBrah 連接到蜂窩網絡

在本教程中,我使用 USB Hologram.io蜂窩調制解調器。隨意使用其他選項。我將使用 PPP 連接,因此 Python 客戶端可以將數據發送到在 AWS 上運行的服務器應用程序。確保已安裝 ppp,然后安裝 hologram-python:

sudo apt-get install ppp

sudo python3 -m pip install hologram-python

您還需要訂閱數據計劃并激活您的 SIM 卡。請參閱官方全息圖文檔以準備好您的卡。

激活您的卡后,確保您的藍色 LED 指示燈亮起,并且調制解調器上的紅色 LED 指示燈閃爍。

pYYBAGOab1aAPZhJAA0Paqic0Hs180.png
蜂窩調制解調器:藍色和紅色 LED 亮起
?

然后,要連接和斷開與蜂窩網絡的連接,請運行:

sudo hologram network connect

sudo hologram network disconnect

為了測試 Internet 連接,您可以使用單個 ICMP 請求 ping Google:

ping -c 1 www.google.com

如果您收到回復,則表示 ChupaCarBrah 已連接到蜂窩網絡,并且它應該能夠在您在 LTE 覆蓋范圍內駕駛的任何地方(幾乎在美國的任何地方)泄露汽車數據。

現在,讓我們看看如何使用 Python 連接和斷開 Hologram 蜂窩網絡。運行cellular_test.py腳本來檢查您的 LTE 數據與互聯網的連接。這是示例腳本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

現在您知道如何使用 Python 發送和接收 CAN 消息了;獲取 GPS 位置;并連接到蜂窩網絡;讓我們把它們放在一起,創建一個簡單的客戶端和服務器應用程序來泄露所有數據。

ChupaCarBrah Python 應用程序

我給你帶來了兩個非常簡單的 Python 腳本,它們可以作為一個框架來構建更復雜的汽車黑客應用程序。客戶端腳本基本上是我迄今為止介紹的所有示例 Python 腳本的組合。它將在 BeagleBone Blue 上運行。服務器腳本是一個簡單的 Flask 應用程序,它將在 AWS(Elastic Beanstalk)上運行,并將使用 JSON 格式存儲和顯示所有泄露的數據。

客戶端腳本 - chupacarbrah.py

chupacarbrah.py客戶端腳本可以在這里找到使用以下 git 命令將其克隆到您的 BeagleBone:

git clone https://github.com/blupants/chupacarbrah.git

cd chupacarbrah

客戶端腳本從由變量“ obd2_csv_file ”定義的 csv 文件中讀取要執行的 OBDII PID 命令列表然后它解析命令以創建 CAN 消息。csv 文件格式包括一個“啟用”列,允許您啟用(設置為 1)或禁用(設置為零)您要執行的特定 OBDII PID。默認情況下,腳本使用simple.csv文件和以下命令子集:

  • 發動機冷卻液溫度
  • 發動機轉速
  • 車速
  • 進氣溫度

文件obd2_std_PIDs_enabled.csv包含要啟用/禁用的所有可用 OBDII PID 命令。請確保您了解這些命令的作用,并在啟用額外命令之前知道您在做什么。

chupacarbrah.py 客戶端腳本將使用 csv 文件中的 OBDII PID 公式解碼所有響應,并將數據與 GPS 坐標一起發布到 AWS 上的 Flask 應用程序。確保在變量“ server_url ”上定義服務器 URL 我們將很快介紹如何將服務器腳本部署到 AWS 以及如何獲取服務器 URL。

正確配置客戶端應用程序后,您可以運行它:

sudo python3 chupacarbrah.py

它將顯示從 CAN 響應消息中解碼的當前數據,并每 1 分鐘將所有內容發送到服務器。

poYBAGOab2GAdX1pAAME1KKpLlY437.png
ChupaCarBrah 監控移動的車輛
?

要停止客戶端并正常退出,請運行:

sudo touch /tmp/stop

現在,讓我們設置服務器腳本來接收泄露的數據。

服務器腳本 - chupacarbrah_server.py

chupacarbrah_server.py腳本可以在這里找到它將公開兩個端點,以便您可以發送和獲取泄露的數據:

發布 /api/v1/汽車

獲取 /api/v1/狀態

客戶端腳本將使用“POST /api/v1/cars”端點提交所有數據。然后,您可以在家中舒適地使用“GET /api/v1/status”從 Web 瀏覽器監控 JSON 數據。

讓我們設置一個簡單的本地 Flask 應用程序并在這兩個端點上運行一些快速測試。在本教程的后面,我將展示如何將這個相同的本地應用程序部署到 AWS。

在您的本地 PC 上,而不是 BeagleBone,創建一個項目目錄:

~$ mkdir eb-flask

~$ cd eb-flask

創建并激活一個名為“virt”的虛擬環境:

~/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

在本地運行應用程序進行測試:

(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)

發送一些虛擬數據以確保一切正常。打開一個新終端并使用 curl 發送一些數據:

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"

本地服務器將回復 car_uuid,在本例中為:“51f317ec266e4adb956212201f87ba52”。打開瀏覽器,最好是 Firefox,因為它原生解析 JSON,然后訪問http://localhost:5000/api/v1/status

pYYBAGOab2OAJFUuAAChMm-Mieo035.png
從本地 Flask 服務器中竊取的虛擬數據
?

如果您能夠看到剛剛使用 curl 發布的虛擬數據,則意味著您的 Flask 應用程序已準備好部署到 AWS。

將 ChupaCarBrah 服務器應用程序部署到 AWS

首先,您需要在 AWS 上創建一個帳戶并在您的計算機上安裝 AWS 客戶端。請在此處創建您的 AWS 賬戶部署應用程序所描述的步驟基于此處的官方AWS 文檔

確保您能夠登錄 AWS 控制臺。然后,安裝 AWS 客戶端:

python3 -m pip install awscli

python3 -m pip install awsebcli

使用 eb init 命令初始化您的 EB CLI 存儲庫:

~/eb-flask$ eb init -p python-3.6 flask-chupacarbrah --region us-east-2

可選,但強烈建議:再次運行 eb init 以配置默認密鑰對,以便您可以使用 SSH 連接到運行您的應用程序的 EC2 實例:

~/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 ]

創建一個環境并使用 eb create 將您的應用程序部署到其中:

~/eb-flask$ eb create chupacarbrah-env

環境創建大約需要 5 分鐘。環境創建過程完成后,使用 eb open 打開您的網站:

~/eb-flask$ eb open

它將打開一個網絡瀏覽器并自動加載新服務的 URL。復制 URL,返回到您的 BeagleBone,編輯客戶端腳本 chupacarbrah.py 并將變量“ server_url ”更改為您的 AWS 應用程序的實際 URL。使用我的部署示例,“ server_url ”的值應設置為:

global server_url
server_url = "http://chupacarbrah-env.eba-bdahj3wp.us-east-2.elasticbeanstalk.com/"

您的 URL 會有所不同,但格式應該相似。在 BeagleBone 上重新啟動 chupacarbrah.py,從現在開始,它將開始向 AWS 發送數據。

您也可以將一些虛擬數據發送到您的 AWS 應用程序以進行測試。通過將 localhost:5000 替換為您設置變量“ server_url ”的相同值來重復“POST /api/v1/cars” curl 請求。例如:

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/ 您應該會看到您發送的所有虛擬數據以及從 ChupaCarBrah 設備中提取的所有數據。

用你的新 ChupaCarBrah 設備破解汽車

我目前正在撰寫一系列關于汽車黑客攻擊的網絡安全文章。請繼續關注我的Medium 頁面,了解更多關于您今天剛剛構建的 ChupaCarBrah 設備可以做的所有事情。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費