āĻāĻ¤ PHDays 9 āĻ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ¸ āĻĒāĻžāĻŽā§āĻĒāĻŋāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ā§āĻ āĻšā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻž āĻāĻ°ā§āĻāĻŋ - āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻž
āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻšāĻžāĻ°ā§āĻĄāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ°āĻāĻ¨āĻž āĻāĻāĻ āĻāĻŋāĻ˛: āĻ¸āĻŋāĻŽā§āĻ¨ā§āĻ¸ āĻ¸āĻŋāĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ S7-300 āĻ¸āĻŋāĻ°āĻŋāĻ; āĻāĻ°ā§āĻ°ā§ āĻĄāĻŋāĻĢā§āĻ˛ā§āĻļāĻ¨ āĻŦā§āĻ¤āĻžāĻŽ āĻāĻŦāĻ āĻāĻžāĻĒ āĻŽāĻžāĻĒāĻžāĻ° āĻĄāĻŋāĻāĻžāĻāĻ¸ (āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ āĻĄāĻŋāĻāĻŋāĻāĻžāĻ˛ āĻāĻ¨āĻĒā§āĻ (āĻĄāĻŋāĻāĻ) āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤); āĻŦāĻžāĻ¤āĻžāĻ¸ā§āĻ° āĻ¸ā§āĻĢā§āĻ¤āĻŋ āĻāĻŦāĻ āĻĄāĻŋāĻĢā§āĻ˛ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ˛āĻ āĻāĻžāĻ āĻāĻ°ā§ (āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ (āĻĄāĻŋāĻ) āĻāĻ° āĻĄāĻŋāĻāĻŋāĻāĻžāĻ˛ āĻāĻāĻāĻĒā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤) - āĻ¨ā§āĻā§āĻ° āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻĻā§āĻā§āĻ¨āĨ¤
āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ, āĻĒā§āĻ°ā§āĻ¸āĻžāĻ° āĻ°āĻŋāĻĄāĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ
āĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻŦāĻ˛āĻāĻŋāĻā§ āĻĄāĻŋāĻĢā§āĻ˛ā§āĻ āĻŦāĻž āĻ¸ā§āĻĢā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§ (āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻāĻžāĻ˛āĻāĻā§āĻ˛āĻŋ āĻā§āĻ˛āĻž āĻāĻŦāĻ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§āĻā§)āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ° āĻāĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻŽā§āĻĄ āĻāĻŋāĻ˛, āĻ¯āĻž āĻā§āĻ¨āĻ āĻŦāĻŋāĻ§āĻŋāĻ¨āĻŋāĻˇā§āĻ§ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻžāĻ˛āĻāĻā§āĻ˛āĻŋāĻ° āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§āĻāĻŋāĻ˛āĨ¤
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻ āĻŽā§āĻĄāĻāĻŋ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°āĻžāĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ¯āĻŧ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻŋāĻ˛: āĻ āĻ°āĻā§āĻˇāĻŋāĻ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄā§ āĻāĻāĻŋ āĻāĻ°āĻž āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻā§āĻ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄā§ āĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻĒāĻāĻžāĻŦā§ āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨ āĻāĻŋāĻ˛āĨ¤
āĻāĻ¯āĻŧāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻāĻāĻāĻŋāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻšāĻ¯āĻŧā§āĻā§ āĻĻā§āĻ āĻĻāĻŋāĻ¨ā§; āĻĒā§āĻ°āĻĨāĻŽ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ° āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§ 233 āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°ā§āĻā§ (āĻ¤āĻŋāĻ¨āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ āĻ¸āĻĒā§āĻ¤āĻžāĻš āĻāĻžāĻāĻŋāĻ¯āĻŧā§āĻā§āĻ¨)āĨ¤ āĻ¤āĻŋāĻ¨āĻāĻ¨ āĻŦāĻŋāĻāĻ¯āĻŧā§: āĻāĻŽāĻŋ āĻ°āĻžāĻāĻŋ - a1exdandy, II - Rubikoid, III - ZeāĨ¤
āĻ¯āĻžāĻāĻšā§āĻ, PHDay-āĻāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻāĻ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄ āĻ āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¯āĻŧāĻ¨āĻŋ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻāĻŦāĻ āĻā§āĻ¨ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¨ āĻāĻžāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻ āĻŽāĻžāĻ¸ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻĒāĻ¤āĻžāĻāĻžāĻāĻŋ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋ āĻŦāĻŋāĻļāĻĻāĻāĻžāĻŦā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻžāĻā§āĻ° āĻ¨ā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻŽāĻžāĻ¸ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°ā§āĻ°āĻŋāĻ¤āĻĻā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻŋ, āĻāĻāĻŋ āĻĄāĻŋāĻāĻŋāĻāĻžāĻ˛ āĻ¸āĻŋāĻāĻŋāĻāĻ°āĻŋāĻāĻŋ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻ
ā§āĻ¯āĻžāĻ˛ā§āĻā§āĻ¸āĻŋ āĻā§āĻāĻ°āĻŋāĻāĻ¨āĻŋāĻ (a1exdandy) āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻā§āĻā§, āĻ¯āĻŋāĻ¨āĻŋ PHDays āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ¯āĻŧ XNUMXāĻŽ āĻ¸ā§āĻĨāĻžāĻ¨ āĻ
āĻ§āĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĻ˛ā§āĻ¨āĨ¤ āĻ¨ā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¸āĻš āĻ¤āĻžāĻ° āĻĒāĻžāĻ ā§āĻ¯ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻāĻŋāĨ¤
āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻžāĻ¸ā§āĻāĻāĻŋāĻ¤ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§:
- block_upload_traffic.pcapng
- DB100.bin
- hints.txt
hints.txt āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻāĻžāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯ āĻāĻŦāĻ āĻāĻā§āĻāĻŋāĻ¤ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ°āĻ¯āĻŧā§āĻā§:
- āĻĒā§āĻā§āĻ°ā§āĻāĻŋāĻ āĻāĻ¤āĻāĻžāĻ˛ āĻāĻŽāĻžāĻā§ āĻŦāĻ˛ā§āĻāĻŋāĻ˛ā§āĻ¨ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ PlcSim āĻĨā§āĻā§ āĻ§āĻžāĻĒ 7 āĻ āĻŦā§āĻ˛āĻ āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
- āĻ¸āĻŋāĻŽā§āĻ¨ā§āĻ¸ āĻ¸āĻŋāĻŽā§āĻ¯āĻžāĻāĻŋāĻ S7-300 āĻ¸āĻŋāĻ°āĻŋāĻā§āĻ° PLC āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
- PlcSim āĻšāĻ˛ āĻāĻāĻāĻŋ PLC āĻāĻŽā§āĻ˛ā§āĻāĻ° āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ Siemens S7 PLC-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻāĻŦāĻ āĻĄāĻŋāĻŦāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
DB100.bin āĻĢāĻžāĻāĻ˛ā§ DB100 PLC āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§: 00000000: 0100 0102 6e02 0401 0206 0100 0101 0102 .....n......... 00000010: 1002 0501 0202 2002āĨ¤ ..... ......... 0501: 0206 0100 0102 00000020 0102 7702 0401 0206a0100 ..w............. 0103: 0102 0 02 00000030 0501 0202 ................... 1602 0501............0206. 0100: 0104 0102 00000040 7502 0401 0206 0100 0105 ......... & ..... 0102: 0C02 0501 00000050 0202 1602 0501 0206 0100 āĻāĻ˛ ......... 0106āĨ¤ .. 0102 : 3402 4 00000060 0401 0206a0100 0107 0102 2602 ................ 0501: 0202 00000070 4 02a 0501 0206 0100 0108 .......... 0102a3302: 0401 3b 00000080 0206 0100 0109 0102 0 ......".....F... 02b0501: 0202 1602 00000090c 0501 0206 0100 ... 010 .......... .. 0102c3702: 0401d 0206 7a000000 0 0100 010 0102 2202................ 0501d0202: 4602 0501e 000000 0d0206 0100 010 0102 3302 0401 0206 0100.. .... 3e000000: 0 010 0102 0 02 0501 0202 1602 ........#...... 0501f0206: 000000 0 0100 010 0102 6..... ..... 02: 0401 0206 0100 010 000000 0 0102 1102 ......%......... 0501: 0202 2302 0501 0206 0100 000000..... .....&. 0: 0110 0102 3502c0401 0206 0100 0111 ....L......
āĻ¨āĻžāĻŽ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§, block_upload_traffic.pcapng āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ-āĻ¤ā§ āĻŦā§āĻ˛āĻ āĻāĻĒāĻ˛ā§āĻĄ āĻā§āĻ°āĻžāĻĢāĻŋāĻā§āĻ° āĻāĻāĻāĻŋ āĻĄāĻžāĻŽā§āĻĒ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻŋ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¯ā§ āĻ¸āĻŽā§āĻŽā§āĻ˛āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ° āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻāĻ āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ āĻĄāĻžāĻŽā§āĻĒāĻāĻŋ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻāĻ°āĻ āĻāĻŋāĻā§āĻāĻž āĻāĻ āĻŋāĻ¨ āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, TeslaSCADA2 āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻĢāĻžāĻāĻ˛ āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻŦā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻĨā§āĻā§ āĻŦā§āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ˛ āĻ¯ā§ RC4 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻĄāĻžāĻŽā§āĻĒāĻāĻŋ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻāĻŦāĻ āĻāĻāĻŋ āĻĄāĻŋāĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§ āĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ°āĨ¤ āĻ¸āĻžāĻāĻā§ āĻĄā§āĻāĻž āĻŦā§āĻ˛āĻā§āĻ° āĻĄāĻžāĻŽā§āĻĒ S7 āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻŋ Snap7 āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĨā§āĻā§ āĻĄā§āĻŽā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĨ¤
āĻāĻāĻāĻŋ āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻĄāĻžāĻŽā§āĻĒ āĻĨā§āĻā§ āĻ¸āĻāĻā§āĻ¤ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻŦā§āĻ˛āĻ āĻ¨āĻŋāĻˇā§āĻāĻžāĻļāĻ¨ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĄāĻžāĻŽā§āĻĒā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻĻā§āĻā§ āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¯ā§ āĻāĻ¤ā§ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻŦā§āĻ˛āĻ OB1, FC1, FC2 āĻāĻŦāĻ FC3 āĻ°āĻ¯āĻŧā§āĻā§:
āĻāĻ āĻŦā§āĻ˛āĻ āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ. āĻāĻāĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§, āĻĒā§āĻ°ā§āĻŦā§ pcapng āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻĨā§āĻā§ pcap-āĻ āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
#!/usr/bin/env python2
import struct
from scapy.all import *
packets = rdpcap('block_upload_traffic.pcap')
s7_hdr_struct = '>BBHHHHBB'
s7_hdr_sz = struct.calcsize(s7_hdr_struct)
tpkt_cotp_sz = 7
names = iter(['OB1.bin', 'FC1.bin', 'FC2.bin', 'FC3.bin'])
buf = ''
for packet in packets:
if packet.getlayer(IP).src == '10.0.102.11':
tpkt_cotp_s7 = str(packet.getlayer(TCP).payload)
if len(tpkt_cotp_s7) < tpkt_cotp_sz + s7_hdr_sz:
continue
s7 = tpkt_cotp_s7[tpkt_cotp_sz:]
s7_hdr = s7[:s7_hdr_sz]
param_sz = struct.unpack(s7_hdr_struct, s7_hdr)[4]
s7_param = s7[12:12+param_sz]
s7_data = s7[12+param_sz:]
if s7_param in ('x1ex00', 'x1ex01'): # upload
buf += s7_data[4:]
elif s7_param == 'x1f':
with open(next(names), 'wb') as f:
f.write(buf)
buf = ''
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻŦā§āĻ¨ āĻ¯ā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻŦāĻžāĻāĻ 70 70 (āĻĒāĻŋāĻĒāĻŋ) āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¤āĻžāĻĻā§āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻļāĻŋāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨āĻŽā§āĻ¨ā§āĻ āĻāĻā§āĻāĻŋāĻ¤ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§āĻ¯āĻŧ āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ° āĻāĻ¨ā§āĻ¯ PlcSim āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻŦā§āĻ˛āĻ āĻĨā§āĻā§ āĻŽāĻžāĻ¨āĻŦ-āĻĒāĻ āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž
āĻĒā§āĻ°āĻĨāĻŽā§, āĻ¸āĻŋāĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋāĻ¤ā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻŽā§āĻ˛āĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ (= Q 7) āĻ¸āĻš āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻŦā§āĻ˛āĻ āĻ˛ā§āĻĄ āĻāĻ°ā§ S0.0-PlcSim āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻŽā§āĻ˛ā§āĻāĻ°ā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ PLC āĻā§ example.plc āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĨ¤ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻĻā§āĻā§, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻšāĻā§āĻ 70 70 āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻŦā§āĻ˛āĻā§āĻ° āĻļā§āĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻā§ āĻāĻŦāĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĨ¤ āĻŦā§āĻ˛āĻā§āĻ° āĻāĻā§, āĻĻā§āĻļā§āĻ¯āĻ¤, āĻŦā§āĻ˛āĻā§āĻ° āĻāĻāĻžāĻ° 4-āĻŦāĻžāĻāĻ āĻ˛āĻŋāĻāĻ˛-āĻāĻ¨ā§āĻĄāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻŽāĻ°āĻž āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ āĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°, āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ āĻāĻ¸7 āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻĒāĻĄāĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻ°ā§āĻŽ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§:
- āĻ¸āĻŋāĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŽāĻ°āĻž S7-PlcSim-āĻ āĻāĻāĻāĻŋ āĻŦā§āĻ˛āĻ āĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻĄāĻžāĻŽā§āĻĒ āĻĨā§āĻā§ āĻĒā§āĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻŦā§āĻ˛āĻā§āĻ° āĻāĻāĻžāĻ° āĻ āĻŦāĻļā§āĻ¯āĻ āĻŽāĻŋāĻ˛āĻ¤ā§ āĻšāĻŦā§ (āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻāĻā§āĻ¯āĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°ā§ āĻāĻāĻŋ āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ) āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§ (OB1, FC1, FC2, FC3)āĨ¤
- PLC āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨āĨ¤
- āĻāĻŽāĻ°āĻž āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĢāĻžāĻāĻ˛ā§ āĻŦā§āĻ˛āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻĄāĻžāĻŽā§āĻĒ āĻĨā§āĻā§ āĻŦā§āĻ˛āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŋāĨ¤ āĻŦā§āĻ˛āĻā§āĻ° āĻļā§āĻ°ā§ āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
- āĻāĻŽāĻ°āĻž āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĢāĻžāĻāĻ˛āĻāĻŋ S7-PlcSim āĻ āĻ˛ā§āĻĄ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸āĻŋāĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ°ā§ āĻŦā§āĻ˛āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻĻā§āĻāĻŋāĨ¤
āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§:
with open('original.plc', 'rb') as f:
plc = f.read()
blocks = []
for fname in ['OB1.bin', 'FC1.bin', 'FC2.bin', 'FC3.bin']:
with open(fname, 'rb') as f:
blocks.append(f.read())
i = plc.find(b'pp')
for block in blocks:
plc = plc[:i] + block + plc[i+len(block):]
i = plc.find(b'pp', i + 1)
with open('target.plc', 'wb') as f:
f.write(plc)
āĻāĻ˛ā§āĻā§āĻ¸āĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨, āĻ¤āĻŦā§ āĻāĻāĻ¨āĻ āĻ¸āĻ āĻŋāĻ āĻĒāĻĨ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻŽāĻ°āĻž āĻ§āĻ°ā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻ°āĻž NetToPlcSim āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§ āĻ¯āĻžāĻ¤ā§ PlcSim āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§, Snap7 āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ PlcSim-āĻ āĻŦā§āĻ˛āĻ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦāĻŋāĻāĻžāĻļ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ PlcSim āĻĨā§āĻā§ āĻāĻ āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
S7-PlcSim-āĻ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻā§āĻ˛āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŋāĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻžāĻ°āĻ°āĻžāĻāĻ āĻāĻ°āĻž āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ āĻĒāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ˛āĻ FC1 āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧ. āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻāĻ˛ā§āĻ˛ā§āĻā§āĻ¯ āĻšāĻ˛ #TEMP0 āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛, āĻ¯ā§āĻāĻŋ āĻāĻžāĻ˛ā§ āĻšāĻ˛ā§ M2.2 āĻāĻŦāĻ M2.3 āĻŦāĻŋāĻ āĻŽā§āĻŽāĻ°āĻŋ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ PLC āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻā§ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻĄā§ āĻ¸ā§āĻ āĻāĻ°ā§āĨ¤ #TEMP0 āĻŽāĻžāĻ¨āĻāĻŋ FC3 āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ FC3 āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§ āĻā§ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ° āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧāĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻ˛ā§ āĻ¸āĻŋāĻāĻŋāĻāĻ°āĻŋāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄā§ āĻĒāĻŋāĻāĻ˛āĻ¸āĻŋ āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ āĻāĻāĻāĻāĻžāĻŦā§ āĻ¸āĻžāĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŋāĻ¨ā§āĻ¤ā§ #TEMP0 āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻŽāĻžāĻ¨ āĻ¸ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, DB1 āĻŦā§āĻ˛āĻā§ āĻāĻŽāĻžāĻ° āĻ¨āĻŋāĻ¨āĻāĻž āĻāĻžāĻŦā§ āĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻ˛ā§āĻāĻžāĻ āĻ¯āĻĨā§āĻˇā§āĻ āĻāĻŋāĻ˛ā§ˇ āĻāĻāĻāĻŋ āĻŦā§āĻ˛āĻā§āĻ° āĻŽāĻžāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¸āĻšāĻ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻŦā§āĻ˛āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻžāĻ° āĻāĻā§āĻ° āĻā§āĻāĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻāĻā§āĻ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¸ā§āĻ¤āĻ°ā§, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°āĻž āĻ āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻāĻ āĻŋāĻ¨ āĻšāĻŦā§ āĻāĻŦāĻ STL āĻāĻžāĻˇāĻžāĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻŦā§āĻāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ (S7 PLC āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻ°āĻžāĻ° āĻāĻĒāĻžāĻ¯āĻŧāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ)āĨ¤
āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻŦā§āĻ˛āĻ FC3
STL āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ¯āĻŧ FC3 āĻŦā§āĻ˛āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§:
L B#16#0
T #TEMP13
T #TEMP15
L P#DBX 0.0
T #TEMP4
CLR
= #TEMP14
M015: L #TEMP4
LAR1
OPN DB 100
L DBLG
TAR1
<=D
JC M016
L DW#16#0
T #TEMP0
L #TEMP6
L W#16#0
<>I
JC M00d
L P#DBX 0.0
LAR1
M00d: L B [AR1,P#0.0]
T #TEMP5
L W#16#1
==I
JC M007
L #TEMP5
L W#16#2
==I
JC M008
L #TEMP5
L W#16#3
==I
JC M00f
L #TEMP5
L W#16#4
==I
JC M00e
L #TEMP5
L W#16#5
==I
JC M011
L #TEMP5
L W#16#6
==I
JC M012
JU M010
M007: +AR1 P#1.0
L P#DBX 0.0
LAR2
L B [AR1,P#0.0]
L C#8
*I
+AR2
+AR1 P#1.0
L B [AR1,P#0.0]
JL M003
JU M001
JU M002
JU M004
M003: JU M005
M001: OPN DB 101
L B [AR2,P#0.0]
T #TEMP0
JU M006
M002: OPN DB 101
L B [AR2,P#0.0]
T #TEMP1
JU M006
M004: OPN DB 101
L B [AR2,P#0.0]
T #TEMP2
JU M006
M00f: +AR1 P#1.0
L B [AR1,P#0.0]
L C#8
*I
T #TEMP11
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP7
L P#M 100.0
LAR2
L #TEMP7
L C#8
*I
+AR2
TAR2 #TEMP9
TAR1 #TEMP4
OPN DB 101
L P#DBX 0.0
LAR1
L #TEMP11
+AR1
LAR2 #TEMP9
L B [AR2,P#0.0]
T B [AR1,P#0.0]
L #TEMP4
LAR1
JU M006
M008: +AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP3
+AR1 P#1.0
L B [AR1,P#0.0]
JL M009
JU M00b
JU M00a
JU M00c
M009: JU M005
M00b: L #TEMP3
T #TEMP0
JU M006
M00a: L #TEMP3
T #TEMP1
JU M006
M00c: L #TEMP3
T #TEMP2
JU M006
M00e: +AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP7
L P#M 100.0
LAR2
L #TEMP7
L C#8
*I
+AR2
TAR2 #TEMP9
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP8
L P#M 100.0
LAR2
L #TEMP8
L C#8
*I
+AR2
TAR2 #TEMP10
TAR1 #TEMP4
LAR1 #TEMP9
LAR2 #TEMP10
L B [AR1,P#0.0]
L B [AR2,P#0.0]
AW
INVI
T #TEMP12
L B [AR1,P#0.0]
L B [AR2,P#0.0]
OW
L #TEMP12
AW
T B [AR1,P#0.0]
L DW#16#0
T #TEMP0
L MB 101
T #TEMP1
L MB 102
T #TEMP2
L #TEMP4
LAR1
JU M006
M011: +AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP7
L P#M 100.0
LAR2
L #TEMP7
L C#8
*I
+AR2
TAR2 #TEMP9
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP8
L P#M 100.0
LAR2
L #TEMP8
L C#8
*I
+AR2
TAR2 #TEMP10
TAR1 #TEMP4
LAR1 #TEMP9
LAR2 #TEMP10
L B [AR1,P#0.0]
L B [AR2,P#0.0]
-I
T B [AR1,P#0.0]
L DW#16#0
T #TEMP0
L MB 101
T #TEMP1
L MB 102
T #TEMP2
L #TEMP4
LAR1
JU M006
M012: L #TEMP15
INC 1
T #TEMP15
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP7
L P#M 100.0
LAR2
L #TEMP7
L C#8
*I
+AR2
TAR2 #TEMP9
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP8
L P#M 100.0
LAR2
L #TEMP8
L C#8
*I
+AR2
TAR2 #TEMP10
TAR1 #TEMP4
LAR1 #TEMP9
LAR2 #TEMP10
L B [AR1,P#0.0]
L B [AR2,P#0.0]
==I
JCN M013
JU M014
M013: L P#DBX 0.0
LAR1
T #TEMP4
L B#16#0
T #TEMP6
JU M006
M014: L #TEMP4
LAR1
L #TEMP13
L L#1
+I
T #TEMP13
JU M006
M006: L #TEMP0
T MB 100
L #TEMP1
T MB 101
L #TEMP2
T MB 102
+AR1 P#1.0
L #TEMP6
+ 1
T #TEMP6
JU M005
M010: L P#DBX 0.0
LAR1
L 0
T #TEMP6
TAR1 #TEMP4
M005: TAR1 #TEMP4
CLR
= #TEMP16
L #TEMP13
L L#20
==I
S #TEMP16
L #TEMP15
==I
A #TEMP16
JC M017
L #TEMP13
L L#20
<I
S #TEMP16
L #TEMP15
==I
A #TEMP16
JC M018
JU M019
M017: SET
= #TEMP14
JU M016
M018: CLR
= #TEMP14
JU M016
M019: CLR
O #TEMP14
= #RET_VAL
JU M015
M016: CLR
O #TEMP14
= #RET_VAL
āĻā§āĻĄāĻāĻŋ āĻŦā§āĻļ āĻĻā§āĻ°ā§āĻ āĻāĻŦāĻ STL āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ
āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻāĻžāĻ°ā§ āĻāĻžāĻā§ āĻāĻāĻŋāĻ˛ āĻŽāĻ¨ā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻā§āĻ¨ āĻŽāĻžāĻ¨ā§ āĻ¨ā§āĻ; STL āĻāĻžāĻˇāĻžāĻ° āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻāĻŦāĻ āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻāĻŋāĻ¤ā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§:
āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻĒāĻ°ā§ āĻā§āĻĄ]
# ĐĐŊиŅиаĐģиСаŅиŅ ŅаСĐģиŅĐŊŅŅ
ĐŋĐĩŅĐĩĐŧĐĩĐŊĐŊŅŅ
L B#16#0
T #CHECK_N # ĐĄŅĐĩŅŅиĐē ŅŅĐŋĐĩŅĐŊĐž ĐŋŅОКдĐĩĐŊĐŊŅŅ
ĐŋŅОвĐĩŅĐžĐē
T #COUNTER_N # ĐĄŅĐĩŅŅиĐē ОйŅĐĩĐŗĐž ĐēĐžĐģиŅĐĩŅŅва ĐŋŅОвĐĩŅĐžĐē
L P#DBX 0.0
T #POINTER # ĐŖĐēаСаŅĐĩĐģŅ ĐŊĐ° ŅĐĩĐēŅŅŅŅ иĐŊŅŅŅŅĐēŅиŅ
CLR
= #PRE_RET_VAL
# ĐŅĐŊОвĐŊОК ŅиĐēĐģ ŅайОŅŅ иĐŊŅĐĩŅĐŋŅĐĩŅĐ°ŅĐžŅĐ° йаКŅ-ĐēОда
LOOP: L #POINTER
LAR1
OPN DB 100
L DBLG
TAR1
<=D # ĐŅОвĐĩŅĐēĐ° вŅŅ
Ода ŅĐēаСаŅĐĩĐģŅ Са ĐŋŅĐĩĐ´ĐĩĐģŅ ĐŋŅĐžĐŗŅĐ°ĐŧĐŧŅ
JC FINISH
L DW#16#0
T #REG0
L #TEMP6
L W#16#0
<>I
JC M00d
L P#DBX 0.0
LAR1
# ĐĐžĐŊŅŅŅŅĐēŅиŅ switch - case Đ´ĐģŅ ОйŅайОŅĐēи ŅаСĐģиŅĐŊŅŅ
ĐžĐŋĐēОдОв
M00d: L B [AR1,P#0.0]
T #OPCODE
L W#16#1
==I
JC OPCODE_1
L #OPCODE
L W#16#2
==I
JC OPCODE_2
L #OPCODE
L W#16#3
==I
JC OPCODE_3
L #OPCODE
L W#16#4
==I
JC OPCODE_4
L #OPCODE
L W#16#5
==I
JC OPCODE_5
L #OPCODE
L W#16#6
==I
JC OPCODE_6
JU OPCODE_OTHER
# ĐĐąŅайОŅŅиĐē ĐžĐŋĐēОда 01: СаĐŗŅŅСĐēĐ° СĐŊĐ°ŅĐĩĐŊиŅ иС DB101[X] в ŅĐĩĐŗиŅŅŅ Y
# OP01(X, Y): REG[Y] = DB101[X]
OPCODE_1: +AR1 P#1.0
L P#DBX 0.0
LAR2
L B [AR1,P#0.0] # ĐĐ°ĐŗŅŅСĐēĐ° Đ°ŅĐŗŅĐŧĐĩĐŊŅĐ° X (иĐŊĐ´ĐĩĐēŅ в DB101)
L C#8
*I
+AR2
+AR1 P#1.0
L B [AR1,P#0.0] # ĐĐ°ĐŗŅŅСĐēĐ° Đ°ŅĐŗŅĐŧĐĩĐŊŅĐ° Y (иĐŊĐ´ĐĩĐēŅ ŅĐĩĐŗиŅŅŅĐ°)
JL M003 # ĐĐŊĐ°ĐģĐžĐŗ switch - case ĐŊĐ° ĐžŅĐŊОвĐĩ СĐŊĐ°ŅĐĩĐŊиŅ Y
JU M001 # Đ´ĐģŅ вŅйОŅĐ° ĐŊĐĩОйŅ
ОдиĐŧĐžĐŗĐž ŅĐĩĐŗиŅŅŅĐ° Đ´ĐģŅ СаĐŋиŅи.
JU M002 # ĐОдОйĐŊŅĐĩ ĐēĐžĐŊŅŅŅŅĐēŅии иŅĐŋĐžĐģŅСŅŅŅŅŅ и в Đ´ŅŅĐŗиŅ
JU M004 # ĐžĐŋĐĩŅĐ°ŅиŅŅ
ĐŊиĐļĐĩ Đ´ĐģŅ Đ°ĐŊĐ°ĐģĐžĐŗиŅĐŊŅŅ
ŅĐĩĐģĐĩĐš
M003: JU LOOPEND
M001: OPN DB 101
L B [AR2,P#0.0]
T #REG0 # ĐĐ°ĐŋиŅŅ СĐŊĐ°ŅĐĩĐŊиŅ DB101[X] в REG[0]
JU PRE_LOOPEND
M002: OPN DB 101
L B [AR2,P#0.0]
T #REG1 # ĐĐ°ĐŋиŅŅ СĐŊĐ°ŅĐĩĐŊиŅ DB101[X] в REG[1]
JU PRE_LOOPEND
M004: OPN DB 101
L B [AR2,P#0.0]
T #REG2 # ĐĐ°ĐŋиŅŅ СĐŊĐ°ŅĐĩĐŊиŅ DB101[X] в REG[2]
JU PRE_LOOPEND
# ĐĐąŅайОŅŅиĐē ĐžĐŋĐēОда 02: СаĐŗŅŅСĐēĐ° СĐŊĐ°ŅĐĩĐŊиŅ X в ŅĐĩĐŗиŅŅŅ Y
# OP02(X, Y): REG[Y] = X
OPCODE_2: +AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP3
+AR1 P#1.0
L B [AR1,P#0.0]
JL M009
JU M00b
JU M00a
JU M00c
M009: JU LOOPEND
M00b: L #TEMP3
T #REG0
JU PRE_LOOPEND
M00a: L #TEMP3
T #REG1
JU PRE_LOOPEND
M00c: L #TEMP3
T #REG2
JU PRE_LOOPEND
# ĐĐŋĐēОд 03 ĐŊĐĩ иŅĐŋĐžĐģŅСŅĐĩŅŅŅ в ĐŋŅĐžĐŗŅĐ°ĐŧĐŧĐĩ, ĐŋĐžŅŅĐžĐŧŅ ĐŋŅĐžĐŋŅŅŅиĐŧ ĐĩĐŗĐž
...
# ĐĐąŅайОŅŅиĐē ĐžĐŋĐēОда 04: ŅŅавĐŊĐĩĐŊиĐĩ ŅĐĩĐŗиŅŅŅОв X и Y
# OP04(X, Y): REG[0] = 0; REG[X] = (REG[X] == REG[Y])
OPCODE_4: +AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP7 # ĐŋĐĩŅвŅĐš Đ°ŅĐŗŅĐŧĐĩĐŊŅ - X
L P#M 100.0
LAR2
L #TEMP7
L C#8
*I
+AR2
TAR2 #TEMP9 # REG[X]
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP8
L P#M 100.0
LAR2
L #TEMP8
L C#8
*I
+AR2
TAR2 #TEMP10 # REG[Y]
TAR1 #POINTER
LAR1 #TEMP9 # REG[X]
LAR2 #TEMP10 # REG[Y]
L B [AR1,P#0.0]
L B [AR2,P#0.0]
AW
INVI
T #TEMP12 # ~(REG[Y] & REG[X])
L B [AR1,P#0.0]
L B [AR2,P#0.0]
OW
L #TEMP12
AW # (~(REG[Y] & REG[X])) & (REG[Y] | REG[X]) - Đ°ĐŊĐ°ĐģĐžĐŗ ĐŋŅОвĐĩŅĐēи ĐŊĐ° ŅавĐĩĐŊŅŅвО
T B [AR1,P#0.0]
L DW#16#0
T #REG0
L MB 101
T #REG1
L MB 102
T #REG2
L #POINTER
LAR1
JU PRE_LOOPEND
# ĐĐąŅайОŅŅиĐē ĐžĐŋĐēОда 05: вŅŅиŅĐ°ĐŊиĐĩ ŅĐĩĐŗиŅŅŅĐ° Y иС X
# OP05(X, Y): REG[0] = 0; REG[X] = REG[X] - REG[Y]
OPCODE_5: +AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP7
L P#M 100.0
LAR2
L #TEMP7
L C#8
*I
+AR2
TAR2 #TEMP9 # REG[X]
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP8
L P#M 100.0
LAR2
L #TEMP8
L C#8
*I
+AR2
TAR2 #TEMP10 # REG[Y]
TAR1 #POINTER
LAR1 #TEMP9
LAR2 #TEMP10
L B [AR1,P#0.0]
L B [AR2,P#0.0]
-I # ACCU1 = ACCU2 - ACCU1, REG[X] - REG[Y]
T B [AR1,P#0.0]
L DW#16#0
T #REG0
L MB 101
T #REG1
L MB 102
T #REG2
L #POINTER
LAR1
JU PRE_LOOPEND
# ĐĐąŅайОŅŅиĐē ĐžĐŋĐēОда 06: иĐŊĐēŅĐĩĐŧĐĩĐŊŅ #CHECK_N ĐŋŅи ŅавĐĩĐŊŅŅвĐĩ ŅĐĩĐŗиŅŅŅОв X и Y
# OP06(X, Y): #CHECK_N += (1 if REG[X] == REG[Y] else 0)
OPCODE_6: L #COUNTER_N
INC 1
T #COUNTER_N
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP7 # REG[X]
L P#M 100.0
LAR2
L #TEMP7
L C#8
*I
+AR2
TAR2 #TEMP9 # REG[X]
+AR1 P#1.0
L B [AR1,P#0.0]
T #TEMP8
L P#M 100.0
LAR2
L #TEMP8
L C#8
*I
+AR2
TAR2 #TEMP10 # REG[Y]
TAR1 #POINTER
LAR1 #TEMP9 # REG[Y]
LAR2 #TEMP10 # REG[X]
L B [AR1,P#0.0]
L B [AR2,P#0.0]
==I
JCN M013
JU M014
M013: L P#DBX 0.0
LAR1
T #POINTER
L B#16#0
T #TEMP6
JU PRE_LOOPEND
M014: L #POINTER
LAR1
# ĐĐŊĐēŅĐĩĐŧĐĩĐŊŅ СĐŊĐ°ŅĐĩĐŊиŅ #CHECK_N
L #CHECK_N
L L#1
+I
T #CHECK_N
JU PRE_LOOPEND
PRE_LOOPEND: L #REG0
T MB 100
L #REG1
T MB 101
L #REG2
T MB 102
+AR1 P#1.0
L #TEMP6
+ 1
T #TEMP6
JU LOOPEND
OPCODE_OTHER: L P#DBX 0.0
LAR1
L 0
T #TEMP6
TAR1 #POINTER
LOOPEND: TAR1 #POINTER
CLR
= #TEMP16
L #CHECK_N
L L#20
==I
S #TEMP16
L #COUNTER_N
==I
A #TEMP16
# ĐŅĐĩ ĐŋŅОвĐĩŅĐēи ĐŋŅОКдĐĩĐŊŅ, ĐĩŅĐģи #CHECK_N == #COUNTER_N == 20
JC GOOD
L #CHECK_N
L L#20
<I
S #TEMP16
L #COUNTER_N
==I
A #TEMP16
JC FAIL
JU M019
GOOD: SET
= #PRE_RET_VAL
JU FINISH
FAIL: CLR
= #PRE_RET_VAL
JU FINISH
M019: CLR
O #PRE_RET_VAL
= #RET_VAL
JU LOOP
FINISH: CLR
O #PRE_RET_VAL
= #RET_VAL
āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ā§āĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ§āĻžāĻ°āĻŖāĻž āĻĒā§āĻ¯āĻŧā§, āĻāĻ¸ā§āĻ¨ DB100 āĻŦā§āĻ˛āĻā§ āĻŦāĻžāĻāĻāĻā§āĻĄ āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻ āĻĄāĻŋāĻ¸āĻ¸ā§āĻŽā§āĻŦāĻ˛āĻžāĻ° āĻ˛āĻŋāĻāĻŋ:
import string
alph = string.ascii_letters + string.digits
with open('DB100.bin', 'rb') as f:
m = f.read()
pc = 0
while pc < len(m):
op = m[pc]
if op == 1:
print('R{} = DB101[{}]'.format(m[pc + 2], m[pc + 1]))
pc += 3
elif op == 2:
c = chr(m[pc + 1])
c = c if c in alph else '?'
print('R{} = {:02x} ({})'.format(m[pc + 2], m[pc + 1], c))
pc += 3
elif op == 4:
print('R0 = 0; R{} = (R{} == R{})'.format(
m[pc + 1], m[pc + 1], m[pc + 2]))
pc += 3
elif op == 5:
print('R0 = 0; R{} = R{} - R{}'.format(
m[pc + 1], m[pc + 1], m[pc + 2]))
pc += 3
elif op == 6:
print('CHECK (R{} == R{})n'.format(
m[pc + 1], m[pc + 2]))
pc += 3
else:
print('unk opcode {}'.format(op))
break
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻā§āĻĄ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻā§āĻĄ
R1 = DB101[0]
R2 = 6e (n)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[1]
R2 = 10 (?)
R0 = 0; R1 = R1 - R2
R2 = 20 (?)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[2]
R2 = 77 (w)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[3]
R2 = 0a (?)
R0 = 0; R1 = R1 - R2
R2 = 16 (?)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[4]
R2 = 75 (u)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[5]
R2 = 0a (?)
R0 = 0; R1 = R1 - R2
R2 = 16 (?)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[6]
R2 = 34 (4)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[7]
R2 = 26 (?)
R0 = 0; R1 = R1 - R2
R2 = 4c (L)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[8]
R2 = 33 (3)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[9]
R2 = 0a (?)
R0 = 0; R1 = R1 - R2
R2 = 16 (?)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[10]
R2 = 37 (7)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[11]
R2 = 22 (?)
R0 = 0; R1 = R1 - R2
R2 = 46 (F)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[12]
R2 = 33 (3)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[13]
R2 = 0a (?)
R0 = 0; R1 = R1 - R2
R2 = 16 (?)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[14]
R2 = 6d (m)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[15]
R2 = 11 (?)
R0 = 0; R1 = R1 - R2
R2 = 23 (?)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[16]
R2 = 35 (5)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[17]
R2 = 12 (?)
R0 = 0; R1 = R1 - R2
R2 = 25 (?)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
R1 = DB101[18]
R2 = 33 (3)
R0 = 0; R1 = (R1 == R2)
CHECK (R1 == R0)
R1 = DB101[19]
R2 = 26 (?)
R0 = 0; R1 = R1 - R2
R2 = 4c (L)
R0 = 0; R1 = R1 - R2
CHECK (R1 == R0)
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻāĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ DB101 āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ āĻā§āĻˇāĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ˛āĻžāĻāĻ¨ āĻšāĻ˛: n0w u 4r3 7h3 m4573rāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ āĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻŦā§āĻ˛āĻ DB101 āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ PLC āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻŦā§āĻ˛ā§āĻ¨āĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻĢā§āĻ°āĻŋāĻ¤ āĻŦāĻž āĻĄāĻŋāĻĢā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻŦā§āĨ¤â¨
āĻāĻāĻžāĻ¨ā§āĻ āĻļā§āĻˇ! āĻ
ā§āĻ¯āĻžāĻ˛ā§āĻā§āĻ¸āĻŋ āĻāĻāĻāĻŋ āĻļāĻŋāĻ˛ā§āĻĒ āĻ¨āĻŋāĻ¨āĻāĻžāĻ° āĻ¯ā§āĻā§āĻ¯ āĻāĻā§āĻ āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻā§āĻāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĻā§āĻ¨ :) āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻāĻ¯āĻŧā§āĻā§ āĻ¸ā§āĻŽāĻ°āĻŖā§āĻ¯āĻŧ āĻĒā§āĻ°āĻ¸ā§āĻāĻžāĻ° āĻĒāĻžāĻ āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ
āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ
āĻ¨ā§āĻ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ!
āĻāĻ¤ā§āĻ¸: www.habr.com