Köklü bir endüstriyel kontrol şirketi olan Siemens, Çin pazarında yüksek bir pazar payına sahiptir. Siemensin iletişim protokolleri hakkında konuşmak isterseniz, MPI, PPI, USS, Profibus, Profinet, S7 vb. Gibi az çok bir şey söyleyebileceğinize inanıyorum. Bununla birlikte, Siemens hala protokol açıklığı açısından nispeten kapalıdır, pek çok kez Bu protokollerin altında yatan iletişim ilkelerini bilmenin hiçbir yolu yok.
Burada, Wireshark paket yakalama aracını, Siemens S7 iletişim protokolünün altında yatan iletişim mesajlarını adım adım nasıl yakalayacağınızı sizinle paylaşmak için esas olarak birleştiriyorum.Umarım adım adım analizim sayesinde herkes Siemens S7 protokolünü anlayabilir. Biraz anlarken, temel paket yakalama işlemlerini ve mesaj analizini de öğrenin.
1
Ortam kurulumu
1. Öncelikle bir Siemens PLC hazırlamalı ve PLC ile PC arasında normal ağ bağlantısını sağlamalıyız. Not: Elinizde PLC bulunmayan çocuk ayakkabıları için, ilgili makaleleri kendiniz kontrol edebilirsiniz: TIA'ya dayalı Siemens PLC simülasyon ortamını ve iletişim şemasını kurun.
2. Haberleşme mesajını yakalamak için PC ile PLC arasındaki haberleşmenin gerçekleştirilmesi gerekiyor Burada kullandığım yöntem KepServer V6.4 ile bunu gerçekleştirmek.
3. Wireshark paket yakalama yazılımını kurun.
4. S7 protokolünün ağ modelini bilin.
2
Adımlar
1. İlk olarak, KepServer ile PLC arasındaki iletişim bağlantısını yapılandırın;
Not: KepServer yazılım uygulamaları için lütfen ilgili makalelere bakın: KepServer V6.4 tabanlı Mitsubishi FX3U PLC ile iletişimi gerçekleştirin.
2. Wireshark yazılımını açın ve mesajları izleme durumunda olun;
3. KepServer'ı PLC'ye bağlayın Bu sırada mesaj verileri Wireshark yazılımında görünecektir KepServer bağlantısını durdurun ve yazılımı kapatın Aynı zamanda, sonraki mesaj analizi için Wireshark izlemesini durdurun;
3
ilk analiz
Kendi TCP iletişimi anlayışınızı birleştirerek, yakalanan mesaj türlerini ayırt edebilirsiniz:
TCP üç yönlü el sıkışma süreci
S7 protokolünün ilk bağlantı doğrulaması
S7 protokolü ikinci bağlantı doğrulaması
TCP dört kez salladı
Analiz sayesinde, Siemens'in S7 iletişiminin basit bir TCP iletişimi olmadığını gördük.TCP üç yönlü el sıkışma gerçekleştirdikten sonra, iki bağlantı doğrulaması göndermesi gerekiyor.İki bağlantı doğrulamasından sonra gerçek veri alışverişi gerçekleştirilebilir.
4
Paket yakalama analizi
(1) İlk el sıkışma için mesaj gönderin
Mesaj açıklaması:
TPKT (Katman 5: Oturum Katmanı)
Bu katman toplam 4 bayt kaplar:
Sürüm numarası: 0x03
Ayrılmış: 0x00
Uzunluk: 0x0016
COTP (altıncı katman: sunum katmanı)
Bu katman toplam 18 bayt kaplar:
Uzunluk: 0x11
PDU tipi (CRConnect İsteği bağlantı isteği): 0x0E
Hedef referans: 0x0000
Kaynak referans: 0x0001
Genişletilmiş biçim / akış denetimi: 0x00
Parametre kodu TPDU-Boyutu: 0xC0
Parametre uzunluğu: 0x01
TPDU boyutu: 0x0A
Parametre kodu SRC-TASP: 0xC1
Parametre uzunluğu: 0x02
KaynakTSAP: 0x0201
Parametre kodu DST-TASP: 0xC2
Parametre uzunluğu: 0x02
HedefTSAP: 0x0201
(2) İlk el sıkışma cevap mesajı
Mesaj açıklaması:
TPKT (Katman 5: Oturum Katmanı)
Bu katman toplam 4 bayt kaplar:
Sürüm numarası: 0x03
Ayrılmış: 0x00
Uzunluk: 0x0016
COTP (altıncı katman: sunum katmanı)
Bu katman toplam 18 bayt kaplar:
Uzunluk: 0x11
PDU tipi (CCConnect Bağlantı onayı onayı): 0x0D
Hedef referans: 0x0001
Kaynak referans: 0x0006
Genişletilmiş biçim / akış denetimi: 0x00
Parametre kodu TPDU-Boyutu: 0xC0
Parametre uzunluğu: 0x01
TPDU boyutu: 0x0A
Parametre kodu SRC-TASP: 0xC1
Parametre uzunluğu: 0x02
KaynakTSAP: 0x0201
Parametre kodu DST-TASP: 0xC2
Parametre uzunluğu: 0x02
HedefTSAP: 0x0201
(3) İkinci el sıkışmada mesaj gönder
Mesaj açıklaması:
TPKT (Katman 5: Oturum Katmanı)
Bu katman toplam 4 bayt kaplar:
Sürüm numarası: 0x03
Ayrılmış: 0x00
Uzunluk: 0x0019
COTP (altıncı katman: sunum katmanı)
Bu katman toplam 3 bayt kaplar:
Uzunluk: 0x02
PDU tipi (DT Verileri): 0XF0
Hedef referans: 0x80
S7Communication (yedinci katman: uygulama katmanı)
Bu katman toplamda 18 bayt yer kaplar ve iki bölüme ayrılır:
Üstbilgi:
Protokol Kimliği (Protokol Kimliği): 0x32
ROSCTR: 0x01
Ayrılmış: 0x0000
Protokol veri birimi referansı: 0x037C
Parametre uzunluğu: 0x0008
Veri uzunluğu: 0x0000
Parametre:
İşlev kodu: 0xF0
Ayrılmış: 0x00
Maks AmQ (Arama): 0x0001
Maks AmQ (Aranan): 0x0001
PDU uzunluğu: 0x03C0
(4) İkinci el sıkışma dönüş mesajı
Mesaj açıklaması:
TPKT (Katman 5: Oturum Katmanı)
Bu katman toplam 4 bayt kaplar:
Sürüm numarası: 0x03
Ayrılmış: 0x00
Uzunluk: 0x0019
COTP (altıncı katman: sunum katmanı)
Bu katman toplam 3 bayt kaplar:
Uzunluk: 0x02
PDU tipi (DT Verileri): 0XF0
Hedef referans: 0x80
S7Communication (yedinci katman: uygulama katmanı)
Bu katman toplamda 20 bayt yer kaplar ve iki bölüme ayrılır:
Üstbilgi:
Protokol Kimliği (Protokol Kimliği): 0x32
Ack_Data: 0x03
Ayrılmış: 0x0000
Protokol veri birimi referansı: 0x037C
Parametre uzunluğu: 0x0008
Veri uzunluğu: 0x0000
Hata seviyesi: 0x00
Hata kodu: 0x00
Parametre:
İşlev kodu: 0xF0
Ayrılmış: 0x00
Maks AmQ (Arama): 0x0001
Maks AmQ (Aranan): 0x0001
PDU uzunluğu: 0x00F0
(5) Veri aktarım mesajını okuyun:
Yalnızca VD0 yapılandırıldığından, DB1.DBX0.0'dan başlayan 4 bayt okunur
Mesaj açıklaması:
TPKT (Katman 5: Oturum Katmanı)
Bu katman toplam 4 bayt kaplar:
Sürüm numarası: 0x03
Ayrılmış: 0x00
Uzunluk: 0x001F
COTP (altıncı katman: sunum katmanı)
Bu katman toplam 3 bayt kaplar:
Uzunluk: 0x02
PDU tipi (DT Verileri): 0XF0
Hedef referans: 0x80
S7Communication (yedinci katman: uygulama katmanı)
Bu katman toplamda 24 bayt yer kaplar ve iki bölüme ayrılır:
Üstbilgi:
Protokol Kimliği (Protokol Kimliği): 0x32
Ack_Data: 0x01
Ayrılmış: 0x0000
Protokol veri birimi referansı: 0x037D
Parametre uzunluğu: 0x000E
Veri uzunluğu: 0x0000
Parametre:
Fonksiyon kodu Var: 0x04 Oku
İletişim öğelerinin sayısı: 0x01
İletişim öğesi 1:
İletişim öğesi Üstbilgi
Değişken özellikleri: 0x12
Adres uzunluğu: 0x0A
Sözdizimi Kimliği: 0x10
İletim veri türü baytı: 0x02
İletişim öğesi Param
Okuma uzunluğu: 0x04
DB numarası: 0x01
Depolama alanı türü DB depolama alanı: 0x84
Bayt başlat: 0x000000
(6) Veri iade mesajını okuyun:
Mesaj açıklaması:
TPKT (Katman 5: Oturum Katmanı)
Bu katman toplam 4 bayt kaplar:
Sürüm numarası: 0x03
Ayrılmış: 0x00
Uzunluk: 0x001D
COTP (altıncı katman: sunum katmanı)
Bu katman toplam 3 bayt kaplar:
Uzunluk: 0x02
PDU tipi (DT Verileri): 0XF0
Hedef referans: 0x80
S7Communication (yedinci katman: uygulama katmanı)
Bu katman toplamda 22 bayt yer kaplar ve iki kısma ayrılır:
Üstbilgi:
Protokol Kimliği (Protokol Kimliği): 0x32
Ack_Data: 0x03
Ayrılmış: 0x0000
Protokol veri birimi referansı: 0x037D
Parametre uzunluğu: 0x0002
Veri uzunluğu: 0x0008
Hata seviyesi: 0x00
Hata kodu: 0x00
Parametre:
Fonksiyon kodu Var: 0x04 Oku
İletişim öğelerinin sayısı: 0x01
İletişim öğesi 1:
Dönüş sonucu Başarı: 0xFF
İletim veri türü Byte / Word / DWord: 0x04
Uzunluk: 0x0020
Veri: 0x00000000
Dönüş mesajı, okunan 4 baytın hepsinin 0 olduğunu gösterir
Buradaki mesajlar sıralanır ve ilgili Soket iletişimi bilgisi ile birleştirilirse, Siemens PLC ile iletişim sorunu kolayca çözülecektir.