
Pi Zero , , , — . LibComposite, , , Windows , Linux Mac OS X. , — (
).
0 — SD
Raspbian Jessie SD ( ), .
1 —
Sie müssen Kernel 4.4 verwenden, der standardmäßig nicht in der Rasbian-Distribution enthalten ist. Das Aktualisieren ist jedoch einfach genug. Sie müssen nur diesen Konsolenbefehl ausführen:sudo BRANCH = next rpi-updateDanach tunSie Folgendes
: echo "dtoverlay = dwc2" | sudo tee -a /boot/config.txt echo "dwc2" | sudo tee -a / etc / modulesAktivieren Sie abschließend den libcomposite-Treiber:sudo echo “libcomposite” | sudo tee -a / etc / modulesSchritt 2 - Geräte konfigurieren
Jetzt müssen Sie entscheiden, welches Gerät Sie emulieren möchten - eine Netzwerkkarte, eine Tastatur oder all dies zusammen?Wir konfigurieren dies mit ConfigFS, dem virtuellen Dateisystem in / sys /. Es wird automatisch zu Beginn der "Himbeere" montiert, sodass Sie in Zukunft damit arbeiten können.Es gibt ein großartiges Beispiel für ein Gerät namens USBArmory, ein Beispiel hier . Alles andere wird auf seiner Basis gezeigt.Wir erstellen ein Konfigurationsskript.Sie müssen es jedes Mal ausführen, wenn Sie das Gerät starten. Erstellen Sie das isticktoit_usb in / usr / bin / file mit Ihrem bevorzugten Texteditor. Wir schreiben dies:sudo touch / usr / bin / isticktoit_usb #Erstelle die Datei
sudo chmod + x / usr / bin / isticktoit_usb # mache sie ausführbar
sudo nano /usr/bin/isticktoit_usb #edit the file. , systemd unit , rc.local. ( sysvinit, raspberry pi ).
/etc/rc.local (!!!) , «exit»:
sudo nano /etc/rc.local
/etc/rc.local…
/usr/bin/isticktoit_usb # libcomposite configuration
exit, , USB . , .
/usr/bin/isticktoit_usbcd /sys/kernel/config/usb_gadget/
mkdir -p isticktoit
cd isticktoit
echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 0x0100 > bcdDevice # v1.0.0
echo 0x0200 > bcdUSB # USB2
mkdir -p strings/0x409
echo «fedcba9876543210» > strings/0x409/serialnumber
echo «Tobias Girstmair» > strings/0x409/manufacturer
echo «iSticktoit.net USB Device» > strings/0x409/product
mkdir -p configs/c.1/strings/0x409
echo «Config 1: ECM network» > configs/c.1/strings/0x409/configuration
echo 250 > configs/c.1/MaxPower
# Add functions here
# see gadget configurations below
# End functions
ls /sys/class/udc > UDCEthernet, :
sudo nano /usr/bin/isticktoit_usb
/usr/bin/isticktoit_usb# Add functions here
mkdir -p functions/ecm.usb0
# first byte of address must be even
HOST=«48:6f:73:74:50:43» # «HostPC»
SELF=«42:61:64:55:53:42» # «BadUSB»
echo $HOST > functions/ecm.usb0/host_addr
echo $SELF > functions/ecm.usb0/dev_addr
ln -s functions/ecm.usb0 configs/c.1/
# End functions
ls /sys/class/udc > UDC
#put this at the very end of the file:
ifconfig $N 10.0.0.1 netmask 255.255.255.252 up
route add -net default gw 10.0.0.2, host PC:
, , :
dmesg|grep cdc_ether
[13890.668557] cdc_ether 1-1:1.2 eth0: register 'cdc_ether' at usb-0000:00:14.0-1, CDC Ethernet Device, 48:6f:73:74:50:43
[13890.674117] usbcore: registered new interface driver cdc_ether
[13890.687619] cdc_ether 1-1:1.2 enp0s20u1i2: renamed from eth0, enp0s20u1i2
sudo ifconfig enp0s20u1i2 10.0.0.2 netmask 255.255.255.252 upssh PI:
ssh 10.0.0.1 -l pi, , (HID)sudo nano /usr/bin/isticktoit_usb
/usr/bin/isticktoit_usb# Add functions here
mkdir -p functions/hid.usb0
echo 1 > functions/hid.0/protocol
echo 1 > functions/hid.0/subclass
echo 8 > functions/hid.0/report_length
echo -ne \\x05\\x01\\x09\\x06\\xa1\\x01\\x05\\x07\\x19\\xe0\\x29\\xe7\\x15\\x00\\x25\\x01\\x75\\x01\\x95\\x08\\x81\\x02\\x95\\x01\\x75\\x08\\x81\\x03\\x95\\x05\\x75\\x01\\x05\\x08\\x19\\x01\\x29\\x05\\x91\\x02\\x95\\x01\\x75\\x03\\x91\\x03\\x95\\x06\\x75\\x08\\x15\\x00\\x25\\x65\\x05\\x07\\x19\\x00\\x29\\x65\\x81\\x00\\xc0 > functions/hid.0/report_desc
ln -s functions/hid.usb0 configs/c.1/
# End functions:
echo "\0\0\x4\0\0\0\0\0" > /dev/hidg0 #press the A-button
echo "\ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0"> / dev / hidg0 # Alle Schlüssel freigebenDies ist jedoch nicht der praktischste Weg. Verwenden Sie dieses Beispiel und laden Sie es auf Ihren PC herunter. Dann extrahieren wir es auf die "Himbeer" SD-Karte und starten es.Auf Pi:
cd PATH_TO_HARDPASS_REPO
#compile das Programm
echo -n "Hallo Welt!" | sudo ./scan / dev / hidg0 1 2Hier bedeutet ‚1 'das amerikanische Tastaturlayout und" 2 "- deutsch-österreichisch. Die zweite Nummer wird benötigt, um Zeichen einzugeben, die sich nicht auf Ihrer Tastatur befinden (2 = Linux, 3 = Windows (obwohl es für dieses Betriebssystem keine Treiber gibt)).Fahren. . ethernet .
. ,
.
:
sudo nano /usr/bin/isticktoit_usb
/usr/bin/isticktoit_usb# Add functions here
FILE=/home/pi/usbdisk.img
mkdir -p ${FILE/img/d}
mount -o loop,ro,offset=1048576 -t ext4 $FILE ${FILE/img/d}
mkdir -p functions/mass_storage.usb0
echo 1 > functions/mass_storage.usb0/stall
echo 0 > functions/mass_storage.usb0/lun.0/cdrom
echo 0 > functions/mass_storage.usb0/lun.0/ro
echo 0 > functions/mass_storage.usb0/lun.0/nofua
echo $FILE > functions/mass_storage.usb0/lun.0/file
ln -s functions/mass_storage.usb0 configs/c.1/
# End functions
FAT32 , Pi . , Pi, unmount -.
?
20 USB , Linux.
!
:Tutorial by gbamanlibcomposite in the Kernel documentation–>
hardpass – PiZero project (Keyboad emulation) < —
USBArmory Wiki Page