超級加密,就是不用軟件給三菱plc加密,而是給非法的寄存器寫入值,你就讀不到程序。
這個是我在三菱fx1s的plc無數(shù)次實驗,加密可以成功,這個有詳細的過程講解和簡單的協(xié)議分析,知道這個的加密過程,逆向解密不是不可能的,大家都發(fā)表一下自己的看法與意見,高手就不要見笑,希望高手指正錯誤,三菱fx1n 2n的協(xié)議有所不同,只要弄懂我給你這么詳細的解密過程,那是也可以的,這個就需要大家共同學習,討論。3u 3g也需要大家來分析和搗鼓,不要那種衣來伸手,飯來張口哦,這種人你看了這帖子,也是白看,要反復的研究和琢磨。高手就不要扔磚頭和臭雞蛋,需要大家獻上鮮花支持哦。
加密過程如下,說了這么多的廢話,上主題:
第一次打開串口
[00000000] ioctl_serial_set_baud_rate baud rate: 9600 (此處設置波特率)
[00000000] ioctl_serial_set_line_control stopbits: 1, parity: even, databits: 7(通訊格式)
[00000001] irp_mj_write length: 0001, data: 02 ( stx通訊起始符02h)
[00000001] irp_mj_write length: 0005, data: 37 32 35 30 46(此處cmd的置位指令37h,32 35 30 46及是要置位的地址‘250f’操作位元件的)
[00000001] irp_mj_write length: 0001, data: 03 (此處是終,及到這里結束的意思代碼‘03h’)
[00000001] irp_mj_write length: 0002, data: 31 37 (校驗和,從37h到此處的03h的和,如果有溢出,取最后兩位)
[00000008] irp_mj_write length: 0001, data: 02 ( stx通訊起始符02h)
[00000008] irp_mj_write length: 0005, data: 37 32 35 30 46(此處cmd的置位指令37h,32 35 30 46及是要置位的地址‘250f’
[00000008] irp_mj_write length: 0001, data: 03 (此處是終,及到這里結束的意思代碼‘03h’)
[00000008] irp_mj_write length: 0002, data: 31 37 (校驗和,從37h到此處的03h的和,如果有溢出,取最后兩位)
[00000015] irp_mj_write length: 0001, data: 02 ( stx通訊起始符02h)
[00000015] irp_mj_write length: 0011, data: 31 38 30 30 30 30 32 30 30 30 30 (此處的cmd功能碼31h,就是寫入數(shù)據,38 30 30 30就是寫入數(shù)據的首地址‘8000’30 32就是寫入的操作位數(shù)這里是2位 那就是一個雙字,30 30 30 30就是這個雙字的數(shù)據為'0'
[00000015] irp_mj_write length: 0001, data: 03 (此處是終,及到這里結束的意思代碼‘03h’)
[00000016] irp_mj_write length: 0002, data: 31 45 (校驗和,從37h到此處的03h的和,如果有溢出,取最后兩位)
[00000022] irp_mj_write length: 0001, data: 02 ( stx通訊起始符02h)
[00000022] irp_mj_write length: 0011, data: 31 38 30 30 30 30 32 30 30 30 30 (此處的cmd功能碼31h,就是寫入數(shù)據,38 30 30 30就是寫入數(shù)據的首地址‘8000’30 32就是寫入的操作位數(shù)這里是2位 那就是一個雙字,30 30 30 30就是這個雙字的數(shù)據為'0'
[00000023] irp_mj_write length: 0001, data: 03 (此處是終,及到這里結束的意思代碼‘03h’)
[00000023] irp_mj_write length: 0002, data: 31 45 (校驗和,從37h到此處的03h的和,如果有溢出,取最后兩位)
[00000030] irp_mj_close port closed 關閉串口
第二次打開串口
[00000000] ioctl_serial_set_baud_rate baud rate: 9600
[00000000] ioctl_serial_set_line_control stopbits: 1, parity: even, databits: 7
[00000000] irp_mj_write length: 0001, data: 02 ( stx通訊起始符02h)
[00000000] irp_mj_write length: 0005, data: 38 32 35 30 46 (此處cmd的復位指令38h,32 35 30 46及是要復位的地址‘250f’操作位元件的,這里把剛剛置位的205f的地址復位了)
[00000001] irp_mj_write length: 0001, data: 03 (此處是終,及到這里結束的意思代碼‘03h’)
[00000001] irp_mj_write length: 0002, data: 31 38 (校驗和,從37h到此處的03h的和,如果有溢出,取最后兩位)
[00000007] irp_mj_write length: 0001, data: 02 ( stx通訊起始符02h)
[00000007] irp_mj_write length: 0005, data: 38 32 35 30 46 (此處cmd的復位指令38h,32 35 30 46及是要復位的地址‘250f’操作位元件的,這里把剛剛置位的250f的地址復位了)
[00000008] irp_mj_write length: 0001, data: 03 (此處是終,及到這里結束的意思代碼‘03h’)
[00000008] irp_mj_write length: 0002, data: 31 38 (校驗和,從37h到此處的03h的和,如果有溢出,取最后兩位)
[00000010] irp_mj_close port closed