Malduino Elite – 非常に最初の印象
A回り戻って、私はMalduino、ArduinoベースのオープンソースのBadusbデバイスに関する記事を構成しました。私は魅力的な仕事を発見したので、私はEliteバージョンと確かに十分にサインアップしました。記事を逃した人のために、MalduinoはキーボードをエミュレートするだけでなくキーボードをエミュレートすることができるUSBガジェットです。適切なケーシングでは、USBフラッシュドライブのように見えます。それはあなたがガイドがガジェットを差し込む映画の中で見るものと、自動車がコンピュータをハックしていることを見るもののようなものです。 atmega32u4に基づいて、2つのバージョン、Lite、Lite、Lite、Eliteに出荷されます。
Liteのバージョンは本当に小さく、USBコネクタの他に、個人が実行中の実行モードとプログラミングモードと同様にスイッチを選択すると、スクリプトが実行されたかを示すLEDを選択できます。
オリジナルのMalduinoエリートスケッチとLite Prototype
Eliteバージョンは大きく、マイクロSDカードの訪問者と4つのDIPスイッチを含みます。これにより、個人がカードから実行するスクリプトを選択できるようにします。それは同様にLEDを持っています。これは、スクリプトがいつ実行されたかを示します。これにより、個人が異なるスクリプトを実行したい場合は、Micro-SDカードに保持されているキーストロークインジェクションスクリプトをプログラムしている場合にのみ、個人がファームウェアを開くことができます。
これらは、Arduino IDEから直接プログラムされているからでなく、2つのMALDUINOSです。あなたは1つより購入することができますそしてそれを「通常の」アルドイノのように利用することを選択することができます。この柔軟性は、私がそれについて好きだった最初のものであり、群衆資金調達キャンペーンに参加するように私を本当に運転しました。フルレビューのためにチェックアウトしました。
ハードウェア
Malduinoエリート対USBフラッシュドライブ
それで、エリートボードはそれを見るのに長い時間を知っただけでなく、私は自分自身を私自身を発見しました。 Liteのバージョンより長くされているにもかかわらず、それはまだ小さいです。 DIPスイッチとマイクロSDカードの穴。群衆の資金調達キャンペーンでは、オリジナルのスケッチは3つのDIPスイッチ版のためでしたが、最後のエリートは4つを持っています。私はそれが発送されるかもしれないどちらのファームウェアも私のラップトップに何があるかもしれないかについて、そして確かに十分な赤いLEDが現れたのかどうかについてのいくつかの検討の後、私はそれを古いコンピュータに接続しました。それだけでなくそれでした。他に何もありません。
スイッチと遊んだり、いくつかのRTFMを行使した後、私はそれが出荷しているファームウェアが最もある種のQ.cである可能性が最も高いことに気づいた。 DIPSのテスト。これにより、MALDUINOが1から4(実際にキープレス1~4をシミュレートする)に応じて、どのスイッチがオンのかに応じて出力します。これまでのところ、それはこれだけでなく、これよりも悪いPCBボードを見たことがあります。ボードには6つのピン用の穴があり、私はマイクロコントローラに渡っていませんでした。
セットアップ
Malduinoを設定すると、Arduino IDEがインストールされているとともに、日付と同様にインストールされている必要があります。 Eliteは、3.3 Vと8 MHzで実行されている「Sparkfun Pro Micro」としてプログラムされているため、ボードマネージャを開く必要があります。それからあなたはMalduinoスクリプトコンバータのウェブサイトに行く必要があります。
それはLiteとEliteバージョン間でスクリプトを変換することを可能にします
キーボードのデザイン言語を選択できます
それはあなたがIDEにインポートするためのArduinoの仕事を自動生産する
Eliteバージョンの場合は、「通常の」操作では、Malduinoを点滅させるだけでなく、新しいスクリプトを保存するためにMicro-SDカードを利用するだけなので、プロジェクトをダウンロードするためのシンプルまたは空のスクリプトを作成するだけです。
あなたがDebianベースの分布を利用している場合、点滅に関するメモは私がしたようないくつかの問題に遭遇するかもしれません。この最も便利な投稿の個人のように、私のモデムマネージャーはすべてのリセットの後にMalduinoと話をしようとしていました。解決策は、「/etc/udev/rules.d/77-mm-udeb-device.d/77- mm-usb-device.d/77- mm-usb-device-blacklist-local.rules」に追加することです。
1
2.
3.
4.
5.
6.
7
8.
アクション!=" ADD | quoto = quoto =" mm_usb_device_blacklist_local_end"
サブシステム!=" USB&Quot; Goto =" mm_usb_device_blacklist_local_end"
env {devtype}!=" usb_device" goto =" mm_usb_device_blacklist_local_end"
attrs {idvendor} ==" 1b4f" attrs {idproduct} ==" 9204" env {id_mm_device_ignore} =" 1 ‘。
attrs {idvend.or}=="1b4f" ATTRS{idProduct}=="9203", ENV{ID_MM_DEVICE_IGNORE}="1"
LABEL="mm_usb_device_blacklist_local_end"
The Software
Since I’m running Linux, a quick shortcut to run a command is the ALT-F2 combination. So I script that into a data as well as save it to 1111.txt. The Elite searches the Micro-SD card for a data corresponding to the present dip switch state. lets state the dip switch 2 as well as 4 are ON. In this case, the software application tries to discover the data named 0101.txt as well as parse its contents (as in dip switch order 1,2,3,4 as well as not the binary representation of the number 2 as well as 4) . When it finishes, the red LED starts flashing quickly. My simple script was:
1
2.
3.
4.
5.
6.
7
8.
9.
10.
DELAY 2000
ALT F2
DELAY 1000
STRING xterm
DELAY 1000
入力
DELAY 1000
STRING id
DELAY 1000
入力
But it was not working. almost all commands worked however the ALT-F2 combo was not working properly. Close, however no cigar. No ALT-F2, no run command window. I’ve already lazy-browsed the source code a bit since I truly didn’t have a great deal of time on my hands however I needed to figure this out. The offending code was this:
1
2.
3.
4.
5.
6.
else if(equals(s,e,"F1",3)) Keyboard.press(KEY_F1);</pre>
else if(equals(s,e,"F2",3)) Keyboard.press(KEY_F2);
…
else if(equals(s,e,"F10",3)) Keyboard.press(KEY_F10);
else if(equals(s,e,"F11",3)) Keyboard.press(KEY_F11);
A custom equals function was getting size 3 for the strings of the function keys, like “F2”. It was okay for “F10”, “F11” as well as “F12”, however failed for the rest of the keys. altering 3 to 2 did the trick, however my Portuguese keyboard design started to interfere with other test scripts. So I altered the code to include PT as well as UK layouts, altering them in a #define at compile time.
It would be awesome if it was possible to gain access to the SD card from the computer as a routine USB volume. I don’t understand precisely exactly how feasible that is, however it does not include the present firmware. I still wished to be able to output the material of an arbitrary data on the SD card to the screen, so I added one more script function called ECHOFILEHEX that outputs the material of a data in the SD card as getaway characters. For example, if the data a.txt contains “AAA”, the script command ECHOFILEHEX a.txt would output “\x41\x41\x41”. This can be useful to echo binary data into printf or echo -e, in Linux holds at least.
Meanwhile, I had some difficulty reading the original code. You know, all of us have different programming styles. Don’t get me wrong, I’ve been understood to compose some messed-up spaghetti code. I sometimes search old jobs looking for some libs or classes I coded as well as question ‘who the heck composed this steaming stack of code?’ Me, it was me. Anyway, I started to modification a bit right here as well as there as well as ended up altering quite much the entire code. That’s the beauty as well as the curse of open-source. If you’re curious you can inspect it out here.
結論
All in all, as well as in spite of some bumps, I’m rather delighted with Malduino. It is what I expected: an open platform for BadUSB attacks that’s in its infancy. It’s incredible that we can all tinker with it, customize it, make it much better or just make it fit our needs. I hope a genuine neighborhood can begin so we can see its full prospective emerge. My short listing includes simulating other USB devices, much better SD card management, as well as broadening the gadget via the unused pins. What would you add?
It’s a long method to go as well as a great deal can go wrong, so great luck with the job [Seytonic]!