A CAN üzenetek előállíthatók különböző alkalmazásokkal, illetve saját készítésű Python script-ekkel. Ebben a fejezetben különböző megoldásokat mutatunk be, amelyekhez elengedhetetlen a "python-can" csomag telepítése. Ahhoz, hogy elő tudjuk állítani a CAN frame-et, szükséges egy virtuálus CAN interfészt is alklamazni.
A virtulis CAN interfész megvalósításáról már írtunk itt, de most röviden újra ismertetjük. A következő utasítások segítségével előállítjuk a "vcan0" virtuális CAN interfészt.
sudo modprobe can
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
1. ábra A virtuális CAN interfész előállítása
Ezután nézzük meg, létrejött-e a virtuális CAN interfész. Ehhez adjuk ki a következő utasítást.
ifconfig vcan0
Látható a 2. ábrán, hogy a "vcan0" interfészt létrejött, de még nem működik.
2. ábra Még nem működik a VCAN0 virtuális interfész
Most kapcsoljuk be ezt a virtuális interfészt, ehhez a következő utasítást kell alkalmaznunk.
sudo modprobe can
Látjuk a 3. ábrán a "RUNNING"-ot, tehát a virtuális interfész elérhető és üzemel is.
3. ábra Már működik a virtuális CAN interfész
Hiába működik már a virtuális CAN interfész, hiányzik (vagy hiányozhat) az a "CAN" csomag, amelynek a használatával a CAN frame kényelmesen előállítható. A "python-can" csomagot a következő utasítás segítségével lehet telepíteni.
sudo pip3 install python-can
A telepítés menete látható a következő ábrán.
4. ábra A szükséges csomag (python-can) telepítése
Most már készen áll a környezetünk arra, hogy különböző CAN csomagokat tudjunk előállítani. Az első példával egy CAN frame-et tudunk előállítani. A "bus" létrehozásakor meg kell adni a "socketcan"-t, a virtuális csatorna nevét, illetve a bitrate értékét is.
Az "msg" létrehozásakor a "Message" tulajdonságait kell megadni, látható is, hogy beállítjuk a CAN frame ID-ját, illetve az elküldendő adatok értékeit is. Ha működik a virtuális CAN interfész, akkor nem kerül sor a kivételdobásra, és az előállított CAN frame megjelenik a vcan0 interfészen.
import can
bus = can.interface.Bus(bustype = 'socketcan', channel = 'vcan0', bitrate = 250000)
msg = can.Message(arbitration_id = 0x01, data = [0, 25, 0, 1, 3, 0, 4, 1], is_extended_id = False)
try:
bus.send(msg)
print("Üzenetküldés a {}".format(bus.channel_info))
except can.CanError:
print("Nem lehetett elküldeni a CAN üzenetet.")
Az 5. ábrán látható a Python script-nek a futtatása, a CAN frame sikeresen elküldésre került.
5. ábra A tesztalkalmazás futtatása
Nem csak a "can-utils" csomag alkalmazásai (pl.: candump) használhatók arra, hogy az előállított CAN frame megjelenítésre kerüljön, hanem akár a Wireshark is. A Wireshark felületén látható az elküldött CAN üzenet.
6. ábra A futtatási eredmény a SocketCAN-en
A kövektező Python alkalmazás az ennek a kódnak a továbbfejlesztése. Egy ciklust alkalmazunk, amelynek a segítségével bizonyos időközönként (0.5s) ugyanaz a CAN frame kerül elküldésre a vcan0-on keresztül.
import can
import time
bus = can.interface.Bus(bustype = 'socketcan', channel = 'vcan0', bitrate = 250000)
msg = can.Message(arbitration_id = 0x111, data = [0, 0, 0, 0, 0, 0, 0, 0], is_extended_id = False)
try:
print("CAN üzenet küldése {}".format(bus.channel_info))
while True:
bus.send(msg)
time.sleep(0.5)
except can.CanError:
print("A CAN üzenetet nem sikerült elküldeni")
Ennek az egyszerű script-nek a leállításához nyomjuk meg a CTR + C-t (7. ábra).
7. ábra A futtatási eredmény a SocketCAN-en
Ennek a Python alkalmazás futtatásának az eredménye látható a Wireshark felületén.
8. ábra Futási eredmény
Az nmap (grafikus megjelenítésnél a ZenMap) használata az IT biztonság, illetve az üzemeltetés területén dolgozó szakembereknél szinte elkerülhetetlen. Az ingyenes szoftver segítségével tesztelhetők a számítógépeink, a számítógéphálózatunk, vizsgálha. . . .
A Python programozási nyelv nagyon elterjedt a fejlesztők körében. Használják beágyazott rendszereknél, webes alkalmazásoknál, IT biztonság különböző területein, stb. Látható, hogy nagyon széles a felhasználási területe ennek a nyelvnek, ideje volt m. . . .
Bemutatjuk most a saját (!) Wifi-s hálózatunk tesztelésének az alapjait. Megnézzük, hogy hogyan lehet biztonságos jelszót választani. Feltörhetetlen rendszer nem létezik, de megismerve a tesztelés folyamatát, válaszokat kaphatunk arra vonatkozólag, h. . . .