Povolení nedůvěryhodného přístupu:
- Otevřete Editor registru (Win + R → napište
regedit
). - Přejděte na klíč do:
- Vytvořte nebo upravte hodnotu DWORD (32bit) s názvem:
- Nastavte hodnotu na 1.
regedit
).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
AllowInsecureGuestAuth
V tomto článku se podíváme na proces přidání nového modulu do linuxového jádra na Raspberry Pi a jeho konfiguraci pomocí Device Tree (DT). Ukážeme si konkrétní příklad s EEPROM pamětí připojenou přes I2C sběrnici.
Nejprve stáhneme zdrojový kód ovladače z repozitáře Linuxu. Použijeme EEPROM ovladač at24:
wget https://raw.githubusercontent.com/torvalds/linux/refs/tags/v6.6/drivers/misc/eeprom/at24.c
Tento ovladač slouží k práci s paměťmi EEPROM přes sběrnici I2C. Zajišťuje správu komunikace mezi jádrem systému a zařízením připojeným přes I2C.
Makefile definuje pravidla pro kompilaci modulu. Vytvořte soubor s názvem Makefile s následujícím obsahem:
obj-m += at24.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Pro spuštění kompilace použijte:
make
Výstupem bude soubor at24.ko, což je zkompilovaný modul jádra.
Device Tree (DT) je systémová konfigurace, která popisuje hardwarová zařízení. Pro konfiguraci EEPROM pamětí vytvoříme soubor at24.dts s následujícím obsahem:
/dts-v1/; /plugin/; / { compatible = "brcm,bcm2835"; fragment@0 { target = <&i2c1>; // Použití I2C-1 __overlay__ { #address-cells = <1>; #size-cells = <0>; EEPROM1@50 { // první EEPROM compatible = "at24,24c02"; // Typ EEPROM reg = <0x50>; // Adresa na I2C sběrnici pagesize = <16>; // Velikost stránky size = <256>; // Celková velikost EEPROM }; EEPROM2@57 { // druhá EEPROM compatible = "at24,24c02"; reg = <0x57>; // Adresa na I2C sběrnici pagesize = <16>; size = <256>; }; }; }; };
Pro převedení souboru na binární formát použijeme nástroj:
dtc -I dts -O dtb -o at24.dtbo at24.dts
Tímto příkazem vznikne binární soubor at24.dtbo, který je připraven pro použití.
Zkopírujeme výsledný soubor do adresáře s DT overlays:
sudo cp at24.dtbo /boot/firmware/overlays/
Přidáme overlay do konfiguračního souboru:
echo 'dtoverlay=at24' | sudo tee -a /boot/firmware/config.txt
Pro otestování funkce EEPROM můžeme zapsat řetězec do paměti:
echo "Zapis do I2C EEPROM" | sudo dd of=/sys/bus/i2c/devices/1-0057/eeprom bs=1 seek=0
Následně ověříme zápis čtením obsahu EEPROM:
sudo hexdump -C /sys/bus/i2c/devices/1-0057/eeprom
00000000 5a 61 70 69 73 20 64 6f 20 49 32 43 20 45 45 50 |Zapis do I2C EEP| 00000010 52 4f 4d 0a 01 00 0f 00 00 00 00 14 0f 14 2d 10 |ROM...........-.|
= Σ((xi - x̄)(yi - ȳ)) / Σ(xi - x̄)²
= ȳ - b * x̄
Kde:
x̄
a ȳ
reprezentují průměrnou hodnotu x a yxi
a yi
reprezentují jednotlivé hodnoty x a y
Na openwrt je nutné nainstalovat nmap-full, který podporuje scriptování a TLS. A stáhnout script ssl-enum-ciphers
"Normální" kontextová nabídka u souboru
reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d "" /f
sudo ip addr add 192.168.1.245/24 dev eth0
sudo ip route add default via 192.168.1.1
/etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
Všichni to používají ale zda vůbec vědí jak se tato textová reprezentace binárních dat v ASCII vlastně převádí?
Binární data převedeme na 24 bitové číslo a to rozdělíme na skupiny o 6 bitech. Níže uvedená tabulka nám pomůže při kódování.
Máme binární data 01 02 03, 24 bit číslo bude 0x010203, to binárně zapsané vypadá 00000001 00000010 00000011. Nyní si data rozdělíme na šesti bitové skupiny, 000000 010000 001000 000011 (desítkové soustavě 1 16 8 3). Podle tabulky získáme AQID.
Pro data nesoudělná čtyřmi to funguje takto:
01 02, bude číslo 0x0102, tedy 00000001 00000010 binárně. Rozdělíme na šesti bitové skupiny, 000000 010000 0010, zprava přidáme nuly a vyjde nám AQI. Aby bylo možné detekovat padding, tak se doplní za každé dva bity znak =.
Příklad 01 02 03 04.
000000 010000 001000 000011 000001 000000
AQIDBA==
Dekódování se provádí opačně, jen se podle počtu znaků = data od konce oříznou. AA== je tedy 000000 00 0000 což je 00.
Hex | Binary | Decimal | Base64 |
---|---|---|---|
00 | 000000 | 0 | A |
01 | 000001 | 1 | B |
02 | 000010 | 2 | C |
03 | 000011 | 3 | D |
04 | 000100 | 4 | E |
05 | 000101 | 5 | F |
06 | 000110 | 6 | G |
07 | 000111 | 7 | H |
08 | 001000 | 8 | I |
09 | 001001 | 9 | J |
0A | 001010 | 10 | K |
0B | 001011 | 11 | L |
0C | 001100 | 12 | M |
0D | 001101 | 13 | N |
0E | 001110 | 14 | O |
0F | 001111 | 15 | P |
10 | 010000 | 16 | Q |
11 | 010001 | 17 | R |
12 | 010010 | 18 | S |
13 | 010011 | 19 | T |
14 | 010100 | 20 | U |
15 | 010101 | 21 | V |
16 | 010110 | 22 | W |
17 | 010111 | 23 | X |
18 | 011000 | 24 | Y |
19 | 011001 | 25 | Z |
1A | 011010 | 26 | a |
1B | 011011 | 27 | b |
1C | 011100 | 28 | c |
1D | 011101 | 29 | d |
1E | 011110 | 30 | e |
1F | 011111 | 31 | f |
20 | 100000 | 32 | g |
21 | 100001 | 33 | h |
22 | 100010 | 34 | i |
23 | 100011 | 35 | j |
24 | 100100 | 36 | k |
25 | 100101 | 37 | l |
26 | 100110 | 38 | m |
27 | 100111 | 39 | n |
28 | 101000 | 40 | o |
29 | 101001 | 41 | p |
2A | 101010 | 42 | q |
2B | 101011 | 43 | r |
2C | 101100 | 44 | s |
2D | 101101 | 45 | t |
2E | 101110 | 46 | u |
2F | 101111 | 47 | v |
30 | 110000 | 48 | w |
31 | 110001 | 49 | x |
32 | 110010 | 50 | y |
33 | 110011 | 51 | z |
34 | 110100 | 52 | 0 |
35 | 110101 | 53 | 1 |
36 | 110110 | 54 | 2 |
37 | 110111 | 55 | 3 |
38 | 111000 | 56 | 4 |
39 | 111001 | 57 | 5 |
3A | 111010 | 58 | 6 |
3B | 111011 | 59 | 7 |
3C | 111100 | 60 | 8 |
3D | 111101 | 61 | 9 |
3E | 111110 | 62 | + |
3F | 111111 | 63 | / |
Za vygenerování tabulky děkuji AI.