เดเดดเดฟเดเตเด PHDays 9-เตฝ เดเดเตเดเตพ เดเดฐเต เดเตเดฏเดพเดธเต เดชเดฎเตเดชเดฟเดเดเต เดชเตเดฒเดพเดจเตเดฑเต เดนเดพเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดฎเดคเตเดธเดฐเด เดจเดเดคเตเดคเดฟ - เดฎเดคเตเดธเดฐเด
เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเตเดฐเดเตเดทเดพ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเด, เดธเตเดฑเตเดฑเดพเตปเดกเตเดเดณเตเดเต เดนเดพเตผเดกเตโเดตเตเดฏเตผ เดเดเดจ เดเดจเตเดจเตเดคเดจเตเดจเตเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต: เดธเตเดฎเตเตปเดธเต เดธเดฟเดฎเดพเดฑเตเดฑเดฟเดเต PLC S7-300 เดธเตเดฐเตเดธเต; เดเดฎเตผเดเตปเดธเดฟ เดกเดฟเดซเตเดฒเตเดทเตป เดฌเดเตเดเดฃเตเด เดฎเตผเดฆเตเดฆเด เด เดณเดเตเดเตเดจเตเดจ เดเดชเดเดฐเดฃเดตเตเด (เดชเดฟเดเตฝเดธเดฟ เดกเดฟเดเดฟเดฑเตเดฑเตฝ เดเตปเดชเตเดเตเดเตเดเดณเดฟเดฒเตเดเตเดเต (เดกเดฟเด) เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต); เดตเดพเดฏเตเดตเดฟเดจเตเดฑเต เดชเดฃเดชเตเดชเตเดฐเตเดชเตเดชเดคเตเดคเดฟเดจเตเด เดชเดฃเดชเตเดชเตเดฐเตเดชเตเดชเดคเตเดคเดฟเดจเตเด เดตเตเดฃเตเดเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดตเดพเตฝเดตเตเดเตพ (PLC (DO) เดฏเตเดเต เดกเดฟเดเดฟเดฑเตเดฑเตฝ เดเดเตเดเตเดชเตเดเตเดเตเดเดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต) - เดเตเดตเดเตเดฏเตเดณเตเดณ เดเดฟเดคเตเดฐเด เดเดพเดฃเตเด.
PLC, เดชเตเดฐเดทเตผ เดฑเตเดกเดฟเดเดเตเดเดณเต เดเดถเตเดฐเดฏเดฟเดเตเดเต, เด
เดคเดฟเดจเตเดฑเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเต เด
เดจเตเดธเตเดคเดฎเดพเดฏเดฟ, เดชเดจเตเดคเต เดกเตเดซเตเดฒเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดเดฏเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดคเตเดฐเตเดฎเดพเดจเด เดเดเตเดคเตเดคเต (เด
เดจเตเดฌเดจเตเดง เดตเดพเตฝเดตเตเดเตพ เดคเตเดฑเดจเตเดจเต เด
เดเดเตเดเต). เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฒเตเดฒเดพ เดธเตเดฑเตเดฑเดพเตปเดกเตเดเดณเดฟเดฒเตเด เดเดฐเต เดฎเดพเดจเตเดตเตฝ เดเตบเดเตเดฐเตเตพ เดฎเตเดกเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดคเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเดณเดฟเดฒเตเดฒเดพเดคเต เดตเดพเตฝเดตเตเดเดณเตเดเต เด
เดตเดธเตเดฅเดเตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเดเตเดเดฟ.
เด เดฎเตเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดธเดเตเดเตเตผเดฃเตเดฃเดคเดฏเดฟเตฝ เดธเตเดฑเตเดฑเดพเตปเดกเตเดเตพ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดธเตเดฑเตเดฑเดพเตปเดกเดฟเตฝ เดเดคเต เดเตเดฏเตเดฏเดพเตป เดเดฑเตเดฑเดตเตเด เดเดณเตเดชเตเดชเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดฏเตผเดจเตเดจ เดธเตเดฐเดเตเดทเดพ เดธเตเดฑเตเดฑเดพเตปเดกเดฟเตฝ เด เดคเต เดเตเดเตเดคเตฝ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต.
เดฐเดฃเตเดเต เดฆเดฟเดตเดธเด เดเตเดฃเตเดเต เดเดฑเต เดชเตเดฐเดถเตเดจเดเตเดเดณเดฟเตฝ เด เดเตเดเตเดฃเตเดฃเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเต; เดเดจเตเดจเดพเด เดธเตเดฅเดพเดจเดเตเดเดพเดฐเตป 233 เดชเตเดฏเดฟเดจเตเดฑเตเดเตพ เดจเตเดเดฟ (เด เดฆเตเดฆเตเดนเด เดฎเดคเตเดธเดฐเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเดดเตเด เดเตเดฒเดตเดดเดฟเดเตเดเต). เดฎเตเดจเตเดจเต เดตเดฟเดเดฏเดฟเดเตพ: เดเดพเตป เดธเตเดฅเดพเดจเด - a1exdandy, II - Rubikoid, III - Ze.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, PHDays เดธเดฎเดฏเดคเตเดคเต, เดชเดเตเดเตเดเตเดคเตเดค เดเตผเดเตเดเตเด เดฎเตเดจเตเดจเต เดธเตเดฑเตเดฑเดพเตปเดกเตเดเดณเตเด เดฎเดฑเดฟเดเดเดเตเดเดพเตป เดเดดเดฟเดเตเดเดฟเดฒเตเดฒ, เด เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดเดฐเต เดเตบเดฒเตเตป เดฎเดคเตเดธเดฐเด เดจเดเดคเตเดคเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเตเดเดฏเตเด เดเดฑเตเดฑเดตเตเด เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดเดพเดธเตเดเต เดเตเตบ เดเดฆเตเดฏเด เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต. เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดตเตผ เดเดฐเต เดฎเดพเดธเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดเตเดฎเดคเดฒ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดเดฏเตเด เดชเดคเดพเด เดเดฃเตเดเตเดคเตเดคเตเดเดฏเตเด เดตเดฟเดถเดฆเดฎเดพเดฏเตเด เดฐเดธเดเดฐเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเดฒเตเด เดชเดฐเดฟเดนเดพเดฐเด เดตเดฟเดตเดฐเดฟเดเตเดเตเดเดฏเตเด เดตเตเดฃเด.
เดเดเตเดเดฟเดจเต เดเตเดตเดเต เดเดเตเดเตพ เดฎเดพเดธเดคเตเดคเดฟเตฝ เด
เดฏเดเตเดเดตเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดพเดธเตโเดเตเดเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดฎเดฟเดเดเตเด เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดตเดฟเดถเดเดฒเดจเด เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดคเต PHDays เดธเดฎเดฏเดคเตเดคเต เดฎเดคเตเดธเดฐเดคเตเดคเดฟเตฝ เดเดจเตเดจเดพเด เดธเตเดฅเดพเดจเด เดจเตเดเดฟเดฏ เดกเดฟเดเดฟเดฑเตเดฑเตฝ เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดเดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ Alexey Kovrizhnykh (a1exdandy) เดเดฃเตเดเตเดคเตเดคเดฟ. เดเดเตเดเดณเตเดเต เด
เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเตพเดเตเดเตเดชเตเดชเด เดเดเตเดเตพ เด
เดคเดฟเดจเตเดฑเต เดตเดพเดเดเด เดเตเดตเดเต เด
เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
เดชเตเดฐเดพเดฐเดเดญ เดตเดฟเดถเดเดฒเดจเด
เด เดคเดฟเดจเดพเตฝ, เดเดพเดธเตโเดเตเดเดฟเตฝ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเดฒเตเดเดณเตเดณเตเดณ เดเดฐเต เดเตผเดเตเดเตเดตเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต:
- block_upload_traffic.pcapng
- DB100.bin
- hints.txt
hints.txt เดซเดฏเดฒเดฟเตฝ เดเดพเดธเตเดเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดตเดฐเดเตเดเดณเตเด เดธเตเดเดจเดเดณเตเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเตเดฑเต เดเดณเตเดณเดเดเตเดเด เดเดคเดพ:
- เดจเดฟเดเตเดเตพเดเตเดเต PlcSim-เตฝ เดจเดฟเดจเตเดจเต Step7-เดฒเตเดเตเดเต เดฌเตเดฒเตเดเตเดเตเดเตพ เดฒเตเดกเต เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเต เดชเตเดเตเดฐเตเดตเดฟเดเตเดเต เดเดจเตเดจเดฒเต เดเดจเตเดจเตเดเต เดชเดฑเดเตเดเต.
- เดธเตเดฎเตเตปเดธเต เดธเดฟเดฎเดพเดฑเตเดฑเดฟเดเต เดเดธเต7-300 เดธเตเดฐเตเดธเต เดชเดฟเดเตฝเดธเดฟ เดธเตเดฑเตเดฑเดพเตปเดกเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต.
- Siemens S7 PLC-เดเตพเดเตเดเดพเดฏเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดกเตเดฌเดเต เดเตเดฏเตเดฏเดพเดจเตเด เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต PLC เดเดฎเตเดฒเตเดฑเตเดฑเดฑเดพเดฃเต PlcSim.
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 00000040a7502 0401 u............ 0206: 0100 0105 0102 0 02 0501 00000050 0202............1602. 0501: 0206 0100 0106 0102 3402 4 00000060 0401 .........&..... 0206: 0100c0107 0102 2602 0501 0202 00000070 4 : 02 0501 0206 0100 0108a0102 3302 0401 3 ................ 00000080: 0206 0100 0109 0102a 0 02 0501 0202 .........1602. 00000090a0501: 0206 0100b 010 0102 3702 0401 0206 7 ...".....F... 000000b0: 0100 010 0102c 2202 0501 0202 4602........ .. 0501c000000: 0d 0206 0100a010 0102 3302 0401 0206 0100 ................ 3d000000: 0 010e 0102 0d02 0501 0202 .... 1602e0501: 0206 000000 0 0100 010 0102 6 02 ........#...... 0401f0206: 0100 010 000000 0 0102 1102.. 0501 0202 ..... 2302: 0501 0206 0100 000000 0 0110 0102 3502 ......%......... 0401: 0206 0100 0111 0102 5 00000100. .....&. 1202: 0501 0202 2502c0501 0206 0100 0112 ....L......
เดชเตเดฐเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต เดชเตเดฒเต, block_upload_traffic.pcapng เดซเดฏเดฒเดฟเตฝ PLC-เดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฌเตเดฒเตเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฐเดพเดซเดฟเดเตเดเดฟเดจเตเดฑเต เดเดฐเต เดกเดฎเตเดชเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเตเตบเดซเดฑเตปเดธเต เดธเดฎเดฏเดคเตเดคเต เดฎเดคเตเดธเดฐ เดธเตเดฑเตเดฑเดฟเดฒเต เด เดเตเดฐเดพเดซเดฟเดเต เดกเดเดชเต เดฒเดญเดฟเดเตเดเดพเตป เดเตเดฑเดเตเดเตเดเตเดเดฟ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, 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 เดเดฆเดพเดนเดฐเดฃเด.plc เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดธเดเดฐเดเตเดทเดฟเดเตเดเตเด. เดซเดฏเดฒเดฟเดจเตเดฑเต เดเดณเตเดณเดเดเตเดเดเตเดเตพ เดจเตเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเดเตเดเตพ เดจเตเดฐเดคเตเดคเต เดเดฃเตเดเตเดคเตเดคเดฟเดฏ 70 70 เดเดจเตเดจ เดเดชเตเดชเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดค เดฌเตเดฒเตเดเตเดเตเดเดณเตเดเต เดคเตเดเดเตเดเด เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเดพเดจเดพเดเตเด. เดฌเตเดฒเตเดเตเดเตเดเตพเดเตเดเต เดฎเตเดฎเตเดชเต, เดฌเตเดฒเตเดเตเดเดฟเดจเตเดฑเต เดตเดฒเตเดชเตเดชเด 4-เดฌเตเดฑเตเดฑเต เดฒเดฟเดฑเตเดฑเดฟเตฝ-เดเตปเดกเดฟเดฏเตป เดฎเตเดฒเตเดฏเดฎเดพเดฏเดฟ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
plc เดซเดฏเดฒเตเดเดณเตเดเต เดเดเดจเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด, PLC S7 เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจ เดชเดฆเตเดงเดคเดฟ เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเดเต:
- เดธเดฟเดฎเดพเดฑเตเดฑเดฟเดเต เดฎเดพเดจเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเต, เดกเดฎเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดเตเดเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏเดฟ เดเดเตเดเตพ 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 เดซเดเดเตเดทเตป เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดเดฏเตเด เดตเตเดฃเด, เด
เดเตเดเดจเต เด
เดคเต เดเดฐเต เดฒเตเดเดฟเดเตเดเตฝ เดเดจเตเดจเต เดจเตฝเดเตเดจเตเดจเต.
เดฎเดคเตเดธเดฐ เดธเตเดฑเตเดฑเดฟเดฒเต เดฒเต เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดธเตเดฑเตเดฑเดพเตปเดกเดฟเดฒเต PLC เดธเดฟเดเตเดจเตฝ เดชเตเดฐเตเดธเดธเตเดธเดฟเดเดเต เดฌเตเดฒเตเดเตเดเตเดเตพ เดธเดฎเดพเดจเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต, เดเดจเตเดจเดพเตฝ #TEMP0 เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต เดฎเตเดฒเตเดฏเด เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเตป, DB1 เดฌเตเดฒเตเดเตเดเดฟเดฒเตเดเตเดเต เดฒเตเตป my ninja เดตเดดเดฟ เดเดดเตเดคเดฟเดฏเดพเตฝ เดฎเดคเดฟเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดเดฐเต เดฌเตเดฒเตเดเตเดเดฟเดฒเต เดฎเตเดฒเตเดฏเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต เดเตเดเดพเดคเต เดฌเตเดฒเตเดเตเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดฏเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดดเดคเตเดคเดฟเดฒเตเดณเตเดณ เด เดฑเดฟเดตเต เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ. เดตเตเดฏเดเตเดคเดฎเดพเดฏเตเด, เดนเต เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดคเดฒเดคเตเดคเดฟเตฝ, เดฎเดพเดจเตเดตเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดเตเดตเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดตเดณเดฐเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด เดเตเดเดพเดคเต 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