Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
BadUSBを作ろう / how to make your own BadUSB and Ke...
Search
mu2in
June 29, 2019
Technology
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
BadUSBを作ろう / how to make your own BadUSB and Keyboard
BadUSBを作ってみた話です。
「オープンセミナー2019@岡山 懇親会」でのLT資料です。
https://oso.connpass.com/event/129843/
mu2in
June 29, 2019
More Decks by mu2in
See All by mu2in
スイッチ沼へようこそ / Welcome to the Key Switch Rabbit Hole
mu2in
0
260
Astroで サクッと作るWebサイト(仮) / Quickly create webpages with Astro
mu2in
1
350
CircuitPythonで動く自作キーボードの紹介 / Introducing Self-Made Keyboard from CircuitPython
mu2in
0
2.7k
スクリーンセーバーキラーを作ってみた / Making Mouse Jiggler with CircuitPython
mu2in
0
890
Pythonで始める自作キーボード入門 / Introduction to Self-Made Keyboard from Python
mu2in
1
2.4k
私のエンジニアライフHacks / my-engineer-lifehacks
mu2in
0
600
PyCon mini Hiroshima 2018 でノベルティを作ってみた話/pycon-mini-hiroshima-2018-novelty
mu2in
1
1.7k
家に帰ると灼熱地獄なのをなんとかする/obniz-universal-remote-control
mu2in
0
1k
最近ハマってるゲームとか
mu2in
0
830
Other Decks in Technology
See All in Technology
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
31k
絵ではじめるKubernetesセキュリティ
aoi1
4
700
データ_AIの事業の勝敗をわけるもの
nek0128
1
480
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
280
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
620
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.3k
2026_devsumi_ozono.pdf
o3
3
580
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
260
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
1.1k
Genieを崇めよ
kameitomohiro
0
170
「どのログを見ればいい?」 から始めた サーバーレス障害解析
y_waka1
1
130
ScotSecure West 2026 - Glasgow
raybugg
0
150
Featured
See All Featured
Done Done
chrislema
186
17k
Believing is Seeing
oripsolob
1
220
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
RailsConf 2023
tenderlove
30
1.6k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Code Reviewing Like a Champion
maltzj
528
40k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
Transcript
#BE64#Λ࡞Ζ͏ʂ Φʔϓϯηϛφʔ!Ԭࢁ࠙ձ
‣ @mu2in ‣ JavaΤϯδχΞ6 ‣ ͖ͳϓϩάϥϛϯάݴޠɿJavaScript ‣ ࢀՃίϛϡχςΟ ▹ ͍͢͝ౡ
(ਫ༵͘͘ձ) ओ࠵ ▹ PyCon mini Hiroshima 2019 ▹ Φʔϓϯηϛφʔ2020@ౡ ࣗݾհ
BadUSBͱ ‣ USBϙʔτʹૠ͚ͩ͢ͰPCյͤΔͭ
BadUSBͱ ‣ USBϙʔτʹૠ͚ͩ͢ͰPCյͤΔͭ ▹ ͦΕUSB Killer
BadUSBͱ ‣ 20148݄ʹ։ൃऀձٞ Black Hat 2014 USAͰ ൃද͞Εͨ߈ܸख๏ ▹ USBͷϑΝʔϜΣΞΛॻ͖͑Δ͜ͱʹΑͬͯɺෆਖ਼ͳ
ϓϩάϥϜΛ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δɻ ▹ Өڹ͕େ͖͍ͨΊɺ࣮ূίʔυΛެ։͞Ε͍ͯͳ͔ͬͨɻ ‣ ཌ݄ͷ9݄ʹߦΘΕͨηΩϡϦςΟձٞͷ DerbyCon 4.0 Ͱผͷݚڀऀ͕GitHubʹެ։ ▹ USBΩʔϘʔυͷϑΝʔϜΣΞΛॻ͖͑ͯɺ উखʹΩʔΛೖྗͤ͞ΔσϞ͕ߦΘΕͨɻ
Ͱ࡞ͬͯΈ·͠ΐ͏
༻ҙ͢Δͷ • CJMCU Beetle ▹ Arduino LeonardoޓͷϚΠίϯ • HID(ώϡʔϚϯΠϯλʔϑΣʔεσ όΠε)ͱͯ͠ৼ͏͜ͱ͕Ͱ͖Δ
• USBΦε͕͍ͯΔͨΊૠ͠Մೳ • ී௨ͷUSBϝϞϦΑΓখ͍͞ • AmazonͰ¥1,000 தࠃ༌ೖ¥300
ϚΠίϯʹBadUSBͷίʔυΛॻ͖ࠐΉ
USBΛૠ͚ͩ͢ͰϩάΞτ
͜ΕͰօ͞Μ#BE64#͕࡞Ε·͢ʂ
ण࢘ΩʔϘʔυΛ࡞Ζ͏ʂ
• Ruby Kaigi 2017Ͱͬͨण࢘ΩʔΩϟοϓ ( Misoca͞ΜϒʔεΑΓ ) • CJMCU Beetle
• Cherry MXΩʔεΠον • Cherry MX Switch Breakout • μΠΦʔυɺ߅ • ϐϯϔομ • LED • δϟϯύʔϫΠϠʔ • ϒϨουϘʔυ ༻ҙ͢Δͷ
ΈཱͯΔ
#include <Keyboard.h> #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ೖྗͰ ͷαϩήʔτϖΞΛೖྗ
MacͷೖྗιʔεΛมߋ
ण࢘ΩʔΛಈ͔͢
·ͱΊ ‣ BadUSBૠ͚ͩ͢ͰΩʔೖྗΛ࣮ߦͰ͖ͯɺ ϚΫϩʹศརɻ ‣ ࣗ࡞ΩʔϘʔυ࡞Γָ͍͠ɻ ‣ ৭ΜͳΩʔϘʔυ࡞Γ͍ͨʢপʣ ‣ ѱ͍USB͚ͩͲɺ͍ํ࣍ୈͰ৭ʑͳ͜ͱ͕
Ͱ͖Δͧʂ