今日最新资讯
热门资讯
国内新闻
    西门子S7-200CN与02版解密研究
    发布者:jiemiPLC  发布时间:2021-01-11 11:29:46  访问次数:

    今天给大家分享的是:西门子02版与CN版PLC解密,老版的S7-200 PLC都被网友解密出来了,新出来02版和CN版的都用软件读不到密码,我们也尝试了很多种方法,对PPI协仪也进行了深入了解,下面把我监控的PPI协仪给大家分享。

    读命令分析:一次读一条数据

    SD LE LER SD DA SA FC DASP SSAP DU FCS ED

    SD:(Start Delimiter)开始定界符(68H)

    LE:(Length)报文数据长度

    LER:(Repeated Length)重复数据长度

    SD: (Start Delimiter)开始定界符(68H)

    SA:(Source Address)目标地址,指该地址的指针,为地址值乘以8

    DA:(Destination Address)本地地址,指该地址的指针,为地址值乘以8

    FC:(Function Code)功能码

    DSAP:(Destination Service Access Point)目的服务存取点

    SSAP:(Source Service Access Point)源服务存取点

    DU:(Data Unit)数据单元

    FCS:(Frame Check Sequence)校验码

    ED:(End Delimiter)结束分界符(16H)

    报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值关于这个校验码的计算方法同上面说明。

    在读写PLC的变量数据中,读数据的功能码为 6CH,写数据的功能码为 7CH。

    对于一次读取一个数据,读命令都是33个字节。前面的0—21字节是相同的,为 :

    西门子解密

    s7-200解密

    因为是PC上发的读PLC数据的命令,SA=00,DA=02,如果有b多个站,DA要改成相应的站号。读命令中从DA到DU的长度为1B即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。表一是读不同存储器命令的Byte22—32。

    西门子02版与CN版S7-200解密

    表一读命令的Byte22-32从表中我们可以得出以下结果:

    Byte 22 读取数据的长度

    01:1 Bit 02:1 Byte

    04:1 Word 06:Double Word

    Byte 24数据个数,这里是01 ,一次读多个数据时见下面的说明。

    Byte 26 存储器类型,01:V存储器 00:其它

    Byte 27 存储器类型

    04:S 05:SM 06:AI 07:AQ 1E: C

    81:I 82:Q 83:M 84:V 1F: T

    Byte 28,29,30存储器偏移量指针(存储器地址*8),如:VB100,存储器地址为100,偏移量指针为800,转换成16进制就是320H,则Byte 28—29这三个字节就是:00 03 20。

    Byte 31 校验和,前面已说到这是从(DA+SA+DSAP+SSAP+DU) Mod 256 。

    一次读多条数据

    对于一次读多个数据的情况,前21Byte与上面相似只是长度LD,LDr及Byte 14不同:

    Byte 14 数据块占位字节,它指明数据块占用的字节数。与数据块数量有关,长度=4+数据块数*10,如:一条数据时为4+10=0E(H);同时读M,V,Q三个不同的数据块时为4+3*10=22(H)。

    Byte 22 总是02 即以Byte为单位。

    Byte 24 以字节为单位,连续读取的字节数。如读2个VD则Byte24=8

    Byte 19---30 按上述一次读一个数据的格式依次列出,

    Byte 31---42 另一类型的数据,也是按上述格式给出。

    以此类推,一次最多读取222个字节的数据。

    写命令分析:一次写一个Double Word类型的数据,写命令是40个字节,其余为38个字节。写一个Double Word类型的数据,前面的0—21字节为 :

    68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

    写一个其它类型的数据,前面的0—21字节为 :(与上面比较,只是长度字节发生变化)

    68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

    从22字节开始根据写入数据的值和位置不同而变化。表二是几个写命令的Byte22—40。表二 写命令的Byte22—40

    经分析我们可以得出以下结果:

    Byte 22-- Byte 30 写入数据的长度、存储器类型、存储器偏移量与读命令相同。T,C等不能用写命令写入。

    Byte 32 如果写入的是位数据这一字节为03,其它则为04

    Byte 34 写入数据的位数

    01: 1 Bit 08: 1 Byte 10H: 1 Word 20H: 1 Double Word

    Byte 35--40值、校验码、结束符

    如果写入的是位、字节数据,Byte35就是写入的值,Byte36=00,Byte37=检验码,Byte38=16H,结束。如果写个的是字数据(双字节),Byte35,Byte36就是写入的值, Byte37=检验码,Byte38=16H,结束。如果写个的是双字数据(四字节),Byte35—38就是写入的值, Byte39=检验码,Byte40=16H,结束。

    看完上面的指令分析我们现在就举例几个常用的PPI协议来分析一下:

    PC寻呼:10 02 00 49 4B 16

    PLC返回:10 00 02 02 04 16

    PC发送:10 02 00 5C 5E 16

    PLC返回: E5

    我们先来看看西门子S7-200PLC的读取密码指令:

    请用串口软件以16进制发送,端口设置9600;e;8;1

    发送:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16 意思:要求传送系统存储区05E0位开始的8个字符(这就是8个密码数值)。

    如果通讯无误,PLC会返回 E5,意思:已经收到

    那么这时上位机再次发送指令 10 02 00 5C 5E 16 意思:请执行命令。(说到这里打住一下,PLC返回E5指令后上位机PC要在很短的时间内发送确认指令,晚了刚才的指令就无效了具体多长时间我也没测准,反正1 2秒时间是没有问题的。)

    那么这时PLC就真的执行命令了返回如下字符:68 1D 1D 68 00 02 08 32 03 00 00 00 00 00 02 00 0C 00 00 04 01 FF 04 00 40 9B 98 02 06 9D 9A 00 76 7D 16

    好了,说到这里就此停止,大家看看密码是多少啊!你如果真正明白了PPI协议就不难看出密码了,你多做实验一定能得出结果的。

    下面再看一个读取PLC版本号的指令:

    我们在解密中首先要确定的是PLC的版本号。就是要看看是老版本还是02版的,也好做出加解密方案。他的通讯源码是这样的:

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

    68 1B 1B 68 02 00 7C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 14 00 00 03 00 00 00 09 16

    发送完上面数据PLC返回E5.

    再次发送确认指令:10 02 00 5C 5E 16

    这时plc的版本号就返回来了。看下面:

    68 29 29 68 00 02 08 32 03 00 00 00 00 00 02 00 18 00 00 04 01 FF 04 00 A0 43 50 55 20 32 32 36 20 43 4E

    20 20 20 20 20 20 30 32 30 31 D7 16

    你看这一段:43 50 55 20 32 32 36 20 43 4E 20 20 20 20 20 20 30 32 30 31 就是plc版本号的ASCII码。用ASC方式显示就会看的更明白上面数据是:C P U SP 2 2 6 SP C N 0 2 0 1 (sp就是空格)

    再一个就是读TD200密码指令:

    68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 02 00 01 84 00 00 50 B9 16

    (VW10)

    通过对上面协仪分析,成功找到西门子S7-200CN解密方法,好了,今天的西门子02版与CN版PLC解密经验分享就到这里了,希望大家多支持,我们将继续突破更多更复杂的PLC解密技术。

免责声明:焊材网转载作品均注明出处,本网未注明出处和转载的,是出于传递更多信息之目的,并不意味 着赞同其观点或证实其内容的真实性。如转载作品侵犯作者署名权,或有其他诸如版权、肖像权、知识产权等方面的伤害,并非本网故意为之,在接到相关权利人通知后将立即加以更正。联系电话:0571-87774297。
0571-87774297