loader
Foto

S7 protokoll teszteléséhez szükséges programok

A Siemens PLC kommunikációs protokolljának a vizsgálatához elengedhetetlen egy Siemens PLC, illetve egy olyan program, amellyel a különböző vezérlési szekvenciák előállíthatók. A PLC lehet virtuális, és a vezérlőszoftvernek is több ingyenes változata található meg az Interneten. Ebben a cikkben két ingyenes szoftvert ajánlunk, az első a regisztráció és letöltés után rögtön használható, a második ajánlott szoftvert a Visual Studio segítségével le kell fordítani "exe" formátummá a használata előtt. Mégis, az utóbbit javasoljuk az érdeklődőknek, mert véleményünk szerint az S7 kommunikációs protokoll ezzel jobban megismerhető.

Ahhoz, hogy a Siemens S7 protokollját vizsgálni tudjuk, szükséges alkalmazni valamilyen programot, amellyel különböző parancsok állíthatók elő. Mi is írhatnánk egyet akár Python-ban a Scapy használatával, de ehhez ismerni kell mélységeiben az S7 kommunikációs protokollt. 
Használjunk ezért valamilyen alkalmazást, szerencsére több ilyen is megtalálható az Interneten.

Az első ingyenesen használható programot a "plccom.de" oldaláról lehet regisztráció után letölteni, és 30 napig használható. A regisztráció és a letöltés a következő linken lehetséges.

https://www.plccom.de/en/plccom/for-s7/fors7-download/

 

A letöltés után nem szükséges a Visual Studio használata, mert a letöltött file-okban megtalálható a "tryMe" könyvtár, ahol a program futtatható változata is elérhető (1. ábra).

kep
1. ábra   A "tryMe" könyvtár tartalma
 

Indítsuk el a "PLCCom_Example_CShartp.exe" programot, ahol az első indítás után meg kell adni a regisztrációnál megadott nick nevet, illetve az emailben megkapott Serial Numbert.
Ezután meg kell adni a PLC típusát, illetve az IP címét, majd tudunk kapcsolódni a (virtuális) PLC-hez (2. ábra).

kep
2. ábra   PLCCom alkalmazás felülete
 

A másik lehetőség az, hogy letöltjük a következő linkről a "sharp7-full-1.0.0.7z" file-t.

https://sourceforge.net/projects/snap7/files/Sharp7/

 

Csomagoljuk ki a letöltött file-t, és indítsuk el a Visual Studio-t, és töltsük be a letöltött és kicsomagolt projektet ("WinClient"), amelynek a felépítése látható a Solution Explorerben (3. ábra).

kep
3. ábra   A "WinClient" projekt felépítése
 

Indítsuk el debug módban az alkalmazást, ha a projekt által használt .NET Framework nem található meg a számítógépünkön, akkor update-eljük a fordítás során a projektet (4. ábra).

kep
4. ábra   A letöltött projekt 4.8 .NET keretkörnyezetbe történő update-elése
 

Egyébként megtalálhatók a telepített keretkörnyezet verziók a Visual Studio Application ablakában (5. ábra).

kep
5. ábra   Egyéb keretkörnyezetek
 

Ebben a letöltött file-ban az "Examples" alkönyvtárban négy lehetőség található, mi most a "WinForm" projektet fordítjuk le. Ebben a projektben található a "MainForm" osztály, amelynek a konstruktora a 6. ábrán látható. A 34. sorban található az "S7Client" osztály példányosítása. Látható a konstruktor tartalmából, hogy a számunkra lényeges rész az "S7Client" osztályban van. Álljunk rá erre a névre, és nyomjuk meg az F12 funkciógombot.

kep
6. ábra   A MainForm osztály konstruktora
 

Az F12 funkciógomb megnyomása után az "S7Client" osztály elejére kerül a nézet, és itt különböző konstansokat, metódusokat találunk (7. ábra).

kep
7. ábra   Az S7Client osztály tartalma
 

Példaként nézzük meg az "S7 Telegrams" csoport tartalmát. Itt találjuk meg a PLC hidegindításához szükséges konstansokat, illetve a PLC állapotának a lekérdezéséhez szükséges tömb tartalmát is. (Ha a kedves Olvasó szeretné megismerni "bitszinten" a Siemens PLC-ket, akkor ez az osztály nagyon sokat tud ebben segíteni.)

kep
8. ábra   Az "S7 Telegrams" részlete
 

Szintén itt található például a TPKT  fejlécének a felépítése is. Tehát ez a projekt arra is alkalmas, hogy megtanuljuk azt, hogy C# nyelven hogyan lehet felépíteni egy hálózati csomagot. Persze, jóval bonyolultabb, mintha Python-t alkalmaznánk a Scapy könyvtárral.

kep
9. ábra   A TPKT fejlés előállítása C# nyelven
 

Végül nézzünk meg egy metódust, amely szintén az 'S7Client" osztályban található meg. A "GetCpuInfo()" metódus meghívása után kapható meg az adott PLC sorozatszáma, modulneve, stb. A metódus legelején az "S7SZL" osztály példányosítása látható (10. ábra). Ennek az osztálynak a megismerése szintén nagyon érdekes lehet, de ez meghaladja most ennek a cikknek a kereteit.

kep
10. ábra   A "GetCpuInfo()" metódus felépítése
 

A letöltött és lefordított program már alkalmas arra, hogy a (virtuális) PLC vizsgálata elkezdődhessen. Ennek a vizsgálatnak a folyamata a következő cikkben kerül bemutatásra.

Ha valaki nem szeretne foglalkozni a programok egyikének a letöltésével, vagy a szükséges pcap file-ok előállításával, de érdeklődik a téma iránt, akkor a következő linkről letöltheti különböző hálózati forgalmakat tartalmazó pcap file-okat.

https://github.com/gymgit/s7-pcaps

 

 



Egyéb cikkek

További cikkeink ebben a témakörben

Régebbi cikkeink

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. . . .