Slide 1

Slide 1 text

#BE64#Λ࡞Ζ͏ʂ Φʔϓϯηϛφʔ!Ԭࢁ࠙਌ձ

Slide 2

Slide 2 text

‣ @mu2in ‣ JavaΤϯδχΞ6೥໨ ‣ ޷͖ͳϓϩάϥϛϯάݴޠɿJavaScript ‣ ࢀՃίϛϡχςΟ ▹ ͍͢͝޿ౡ (ਫ༵΋͘΋͘ձ) ओ࠵ ▹ PyCon mini Hiroshima 2019 ▹ Φʔϓϯηϛφʔ2020@޿ౡ ࣗݾ঺հ

Slide 3

Slide 3 text

BadUSBͱ͸ ‣ USBϙʔτʹૠ͚ͩ͢ͰPCյͤΔ΍ͭ

Slide 4

Slide 4 text

BadUSBͱ͸ ‣ USBϙʔτʹૠ͚ͩ͢ͰPCյͤΔ΍ͭ ▹ ͦΕ͸USB Killer

Slide 5

Slide 5 text

BadUSBͱ͸ ‣ 2014೥8݄ʹ։ൃऀձٞ Black Hat 2014 USAͰ ൃද͞Εͨ߈ܸख๏ ▹ USBͷϑΝʔϜ΢ΣΞΛॻ͖׵͑Δ͜ͱʹΑͬͯɺෆਖ਼ͳ ϓϩάϥϜΛ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δɻ ▹ Өڹ͕େ͖͍ͨΊɺ࣮ূίʔυΛެ։͞Ε͍ͯͳ͔ͬͨɻ ‣ ཌ݄ͷ9݄ʹߦΘΕͨηΩϡϦςΟձٞͷ DerbyCon 4.0 Ͱผͷݚڀऀ͕GitHubʹެ։ ▹ USBΩʔϘʔυͷϑΝʔϜ΢ΣΞΛॻ͖׵͑ͯɺ
 উखʹΩʔΛೖྗͤ͞ΔσϞ͕ߦΘΕͨɻ

Slide 6

Slide 6 text

Ͱ͸࡞ͬͯΈ·͠ΐ͏

Slide 7

Slide 7 text

༻ҙ͢Δ΋ͷ • CJMCU Beetle ▹ Arduino Leonardoޓ׵ͷϚΠίϯ • HID(ώϡʔϚϯΠϯλʔϑΣʔεσ όΠε)ͱͯ͠ৼ෣͏͜ͱ͕Ͱ͖Δ • USBΦε͕෇͍ͯΔͨΊ௚ૠ͠Մೳ • ී௨ͷUSBϝϞϦΑΓ΋খ͍͞ • AmazonͰ¥1,000 தࠃ௚༌ೖ¥300

Slide 8

Slide 8 text

ϚΠίϯʹBadUSBͷίʔυΛॻ͖ࠐΉ

Slide 9

Slide 9 text

USBΛૠ͚ͩ͢ͰϩάΞ΢τ

Slide 10

Slide 10 text

͜ΕͰօ͞Μ΋#BE64#͕࡞Ε·͢ʂ

Slide 11

Slide 11 text

ण࢘ΩʔϘʔυΛ࡞Ζ͏ʂ

Slide 12

Slide 12 text

• Ruby Kaigi 2017Ͱ໯ͬͨण࢘ΩʔΩϟοϓ
 ( Misoca͞ΜϒʔεΑΓ ) • CJMCU Beetle • Cherry MXΩʔεΠον • Cherry MX Switch Breakout • μΠΦʔυɺ఍߅ • ϐϯϔομ • LED • δϟϯύʔϫΠϠʔ • ϒϨουϘʔυ ༻ҙ͢Δ΋ͷ

Slide 13

Slide 13 text

૊ΈཱͯΔ

Slide 14

Slide 14 text

#include #define PIN_KEYSW (0) int preState; int currentState; void setup() { pinMode(PIN_KEYSW, INPUT); preState = HIGH; Keyboard.begin(); } void loop() { currentState = digitalRead(PIN_KEYSW); if((currentState != preState) && (currentState == HIGH)) { Keyboard.press(KEY_LEFT_ALT); Keyboard.print("d83c"); Keyboard.print("df63"); delay(10); Keyboard.releaseAll(); } preState = currentState; delay(10); } ण࢘ΩʔϘʔυͷίʔυΛॻ͖͜Ή Ωʔ͕ԡ͞ΕͨΒ 6OJDPEFೖྗͰ ͷαϩήʔτϖΞΛೖྗ

Slide 15

Slide 15 text

MacͷೖྗιʔεΛมߋ

Slide 16

Slide 16 text

ण࢘ΩʔΛಈ͔͢

Slide 17

Slide 17 text

·ͱΊ ‣ BadUSB͸ૠ͚ͩ͢ͰΩʔೖྗΛ࣮ߦͰ͖ͯɺ ϚΫϩʹศརɻ ‣ ࣗ࡞ΩʔϘʔυ࡞Γ௒ָ͍͠ɻ ‣ ৭ΜͳΩʔϘʔυ࡞Γ͍ͨʢপʣ ‣ ѱ͍USB͚ͩͲɺ࢖͍ํ࣍ୈͰ৭ʑͳ͜ͱ͕ Ͱ͖Δͧʂ