Substitution-Cipher
我有一個加密 png 文件
我有一個加密png。
我在十六進制編輯器中打開文件,我看到了它:
83 5A 44 4D 07 00 10 00 0A 0A 0A 07 43 42 4E 58 0A 0A 0B A5 0A 0A 0A D8 02 08 0A 0A 0A 78 C8 D2 F7 0A 0A 0A 0B 79 58 4D 48 0A A4 C4 16 E3 0A 0A 0A 0E 6D 4B 47 4B 0A 0A BB 85 01 F6 6B 0F 0A 0A 0A 03 7A 42 53 79 0A 0A 04 C9 0A 0A 04 C9 0B CD 65 A2 6E 0A 0A 06 70 43 4E 4B 5E 72 54 E7 D7 CB 61 5E 53 B4 0D 7A D1 6E 80 86 19 50 7A D5 81 AE 5B 70 1B F6 1D 10 16 B1 15 47 6A 4A 1D E4 0F 2B 09 49 25 F0 B3 C2 CC AF 11 1D B4 53 3E 09 17 1A D6 B1 5A 72 2A C9 7E ED 03 F4 01 E8 A8 5B 30 53 B2 65 E2 2C 69 8D 10 69 54 F7 A0 64 3E BB E5 B3 5F 9F 71 79 E5 A7 A0 C5 8D 01 77 A9 63 43 40 E1 91 79 E4 33 ED FD F1 62 75 75 F5 1E CA C6 31 97 F7 1D 6A BC 43 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 42 49 8A 2A 07 0B 88 3E 0E 02 D8 1A 2A 76 BE B5 B5 95 D7 08 3F E0 D4 36 B5 F9 2A B1 35 EE E0 E8 A1 31 97 E6 94 50 43 C9 D8 3C DD 75 B4 F4 3A B1 35 DA B3 F5 78 FB 78 7C 05 33 F8 F4 D3 16 28 19 11 6A AC 56 D8 FC E4 D5 79 F4 47 7D F5 74 65 25 B1 8F 16 71 35 B7 C2 E4 F8 37 D6 F3 EE F6 C4 6C FC 0B FF 9A 8C DA 58 D7 E1 5D 7C BD B8 71 60 2A 07 51 65 E1 D4 A5 95 96 F5 33 77 F7 B0 BB 97 77 EC FE 71 D8 11 3B 17 F7 FC 2D 3F 25 EC 34 B7 9A D7 1F 73 F4 F0 15 45 B8 51 44 94 ED 8C 2F 67 E5 A4 74 F3 F0 53 FC CB 71 1D DD C5 34 B4 3B 9D 77 7A 06 83 35 BC D2 BF 87 79 7D 25 6F FD 5F D2 D1 B2 F8 C1 E7 ED D3 0D CD 5A E7 DD D9 F1 A3 FA F3 97 3D D3 0D 8D A7 96 73 F0 62 6B 33 F1 6A 78 FE 98 77 A7 91 D7 1D 92 DA E5 64 28 13 11 BC C6 EC 70 75 C2 39 74 1E FC 36 52 81 F5 FD 6C 3F A9 83 B8 5B D2 39 F2 70 0C 5D E3 A5 60 E5 8D CD 73 5B D2 39 AB 09 A2 41 81 A5 54 94 71 75 77 75 EC 68 FC 11 4D 37 E5 F4 3A 31 69 F5 8C 43 C9 DC 12 C6 82 81 DC 13 4D 19 13 5E 74 F4 B2 F7 95 F5 27 1D 8F 15 12 2E E9 E0 FB 1D 9D FC 54 AE B5 94 15 BD 2C 75 C7 60 63 EB 7B 74 2A B4 73 2B 07 61 28 07 51 AB 71 F9 F6 C5 F3 D9 CA E9 73 F4 F0 F9 5C A4 42 34 B1 F9 C1 3B 15 7E 64 B5 F7 3B B1 91 54 41 75 F2 C1 40 7C 71 D2 89 75 87 3A AB AC 08 D8 BA 7B D1 B1 A1 B3 B1 7A C1 60 E7 80 EE 91 D1 55 84 35 42 56 30 F7 53 7C 3D CF EC B4 52 97 C5 64 63 8A 3E 66 D0 EC 7D CD 73 4E 32 98 ED A5 B5 64 E1 BC CD 12 2E A4 85 3F EE 93 B1 9A 3D 64 10 F2 66 B3 CE 88 5F 91 26 25 ED B7 2B 55 B6 BF C5 AC 1C D8 BA 6B C9 7C EB 94 90 B5 FF F7 AB 6D E7 E5 A5 CF 61 D3 2D 1E 73 7C ED D5 E7 D7 75 F9 7A 6D 96 1B 68 70 D6 BE 78 EC 65 5F A4 AE 3D 60 63 34 ED DB EB F9 3D D8 BA 1C D8 BA A7 A4 67 06 58 E5 E9 BF AF E6 5D 84 E0 D6 87 D5 37 71 21 37 68 E0 71 79 F1 B1 40 95 30 A7 96 73 F0 34 9B D9 DD CC 42 AD C0 70 29 CE DB DD 90 9D 65 76 F6 7E F7 7D 8B 72 7F FB 9F 07 22 5E 49 10 BC 44 3C 12 16 67 AD D4 D6 D0 A9 79 33 13 7B D2 C9 64 09 C1 23 0D D1 4D E4 55 C7 74 2B EF CB D0 12 A1 37 B7 4A C6 D8 FC D7 3F 6F 8D 73 6D E8 FB 62 61 43 C9 3C E3 85 0D 59 89 CB AE F6 4B D9 71 D7 75 3C BD 17 E5 F8 97 D4 7D 5E 36 A3 7D AC 91 9C 9A 8C 07 31 72 16 DC 91 FB 87 30 14 C6 BB 76 69 AB 2A 7B 90 D4 84 DD 91 DE 1D 0F E8 B9 31 B5 23 45 5A E2 E7 45 BC 16 DC 4B 10 3C 27 91 F7 9F 97 FB 7F F4 9C 14 14 34 71 D3 F2 EA A1 79 3D 7F DC 28 3E 33 70 8F 09 D8 7A 50 26 F5 B3 99 86 91 3C 66 DB 52 50 F2 3C 97 DD 3C 12 D9 08 D8 7A 60 2E 44 38 BE 4D DB 7E D4 9C 30 90 2D 07 A3 45 ED A1 DE 18 B9 27 7F 3E 45 10 44 85 DB 40 EC 3F 60 F3 76 60 B8 D6 AC 8F 88 D5 5D 5B 36 7E 9F 22 36 4B C1 43 C9 E3 3B FE 52 41 F9 F8 45 94 8F 9B 20 BF 6E EF C4 84 56 9F 1F AD 72 F5 8D 1D 9C 17 E6 1D 94 E2 75 D0 72 2D 01 63 35 63 32 01 24 96 64 C1 63 87 D6 99 6D 29 30 BB 1C 3E 89 16 16 B1 9C 50 BE 24 9B 83 D9 4E 10 44 85 6E 0F CA 81 ED AD AE A2 4B FF F0 99 E8 58 3F 2F 29 19 6D A3 13 C9 3E 99 8C 59 E9 43 3D 5B 1C 66 F4 25 75 9C 8C 33 A8 B6 E4 22 BF F2 8D 81 10 6F 1F 9F 16 AD 4B D8 7A 40 E6 67 76 91 72 69 A5 7E B4 12 F9 A2 D5 03 D0 74 99 22 55 3C 75 AB D4 25 B8 3D 31 A4 B8 B6 64 B5 B2 BD 4A 96 7A D8 7A 30 36 F3 27 DF C9 EE E8 E0 15 D0 59 E8 6F 61 E1 67 7C FD AB D9 95 DC 92 8C B7 5B 6B FB E6 F2 AA 8A DA DB A1 E2 32 47 72 BA 6C C0 36 DB AE EB 3E E2 D4 46 C4 F2 30 D5 9E 63 D7 5D BF A7 9D 83 EB D2 C0 76 77 9B F7 6E 2D 37 20 26 26 2A BE BE FA 32 68 BB AA 80 D0 91 D1 F5 A7 09 F8 EE 98 8C 19 A5 71 39 D7 42 EA D0 CC E8 EF E6 BC 07 B0 F5 46 87 C2 E0 51 FF 44 F5 EE 82 C8 13 A9 1E 1A 80 20 60 C3 08 84 30 2A 45 3A 63 32 DB 00 71 A0 56 56 35 51 63 71 EF D8 98 E1 36 FF A7 70 65 A4 2D 54 A4 54 1E 84 5F 32 E9 D8 68 20 1A CD A0 D2 F2 31 B3 07 05 BE C7 A1 8D 3E 96 5E 71 11 5D 00 D1 24 55 57 26 DF D4 B4 70 0F D9 F3 B0 5C B7 F9 7D 26 FC 01 70 15 A9 8C DA AF CF 4E 27 51 2F 73 2C 9E 3E 96 3E 0D 4D 2C 80 50 B5 FD 4C 8F 67 21 00 97 16 9E FF 56 57 12 BD CA E7 FB 2E 10 78 C7 D5 F0 95 69 FC 18 B2 F6 DD F6 7F 9F 18 2F 73 F8 85 5D A0 FB 59 01 63 D2 38 73 8D C5 84 56 C9 BC 00 CD 30 4A C1 4C 8F CF 61 B2 F9 BD F4 50 45 7A 2D 94 50 9C C3 E8 AF 8F 65 78 8D 8D 2F B0 25 56 F4 A5 B6 5D A9 9B 7C 04 39 4D 10 BC 40 60 20 3D 98 C4 F7 52 FB 16 B1 9B CA 43 11 B8 B9 A5 A4 8B 6B E8 A3 6F D3 26 C4 05 A5 38 99 EF 41 97 B6 B0 6D D7 E1 84 0A 94 32 63 D2 20 C3 C7 C3 49 CE DE F2 6F A1 9C 85 F1 8C 95 71 E1 D6 A5 61 4C B5 93 31 D3 26 B5 3F 37 7B F8 B0 4E FD 8F 4E 13 F9 8D 31 C4 4E 95 3A 63 32 1F D4 1D 5C 33 D5 8C 19 1B D7 91 89 25 6C D2 B3 BD 10 3D 0A EF 45 99 21 D2 90 94 E2 78 5D AC F1 48 B8 26 A4 30 1B 2D 41 10 BC 40 93 18 25 0D 14 A6 97 6E 2C 34 75 F7 F3 4B E6 AC A5 FE 88 C3 2B BF 64 0A D0 74 F1 69 7C 7D CE 6D C1 EF 15 BA EC E4 83 23 53 C7 B1 BA A5 DC 2A 19 71 DD 1F 31 B7 A1 2F 07 51 2F FF 5E 74 76 F7 46 A6 A6 FC 55 EF 70 5B 52 E1 58 45 F4 29 82 40 04 4D 2D 80 E6 9C A7 EC D7 01 CE 88 49 25 77 7C 70 5D 46 10 BC 46 B5 0B FB BA 21 7F 1A E8 49 D7 E1 A7 26 3C 7F 67 A9 E4 5F E5 FE F3 E2 3C E1 15 70 13 AB 49 35 1F F3 62 75 75 35 B1 EF 32 BC 7D 5D F9 BC 4A DD 3F FC 23 30 9C 7D 6A F4 DC FD E9 25 3E 2D B4 A5 D8 30 FD 85 B7 D0 59 E8 AF D4 56 25 5D CE FA 32 40 76 AD 15 72 B8 99 70 08 D1 F1 B3 D8 A4 E9 4C 99 C7 D2 7A B8 FF EC 59 B7 EB 49 5B E5 FC 74 FF B7 3C 46 93 0D 0F 1B 10 53 F2 94 8A 14 03 03 F7 FF A2 6B 81 5B 5E 4E 10 44 89 C2 CE C8 F3 5E A9 B1 DF 5C C4 36 87 C2 64 D7 4C C2 DC 11 30 FA E5 76 6F 6A 52 2F 63 32 27 24 D5 23 06 CE 8D 31 FF E4 B6 13 66 0F E5 55 85 84 73 E4 67 BC E7 67 56 43 4F EB B1 DD BC 77 31 46 2D 91 3E 96 28 9D E5 1E 47 93 A1 33 E1 90 07 FE 8C 54 39 F5 4C B7 D0 23 F9 00 66 D7 F1 7D F4 33 FE 22 31 2C 0E 45 82 3E 96 20 97 B1 0F C1 C7 05 7D 5F 6C A4 C3 B2 FF CB 34 DE F7 4D E4 53 CC B8 75 26 CF AE EB 9E B3 FE CD 88 C0 C6 C0 EE 17 9F 5F B0 A4 F4 20 93 53 F3 4D A0 E1 31 CF 32 A1 AE EB BE 93 F1 68 3F E5 9E 61 55 83 C9 B9 DE 2D FD 42 FF CF FF 35 90 2A 95 3A 63 32 7F 9C 9D 99 75 A3 6F 04 C5 58 9D D6 29 DF D0 CA DC 4A 10 38 F7 18 8D ED D0 F3 E2 2A 7D 90 D6 A0 3C BA 59 41 10 38 09 9C C5 2D 95 14 BE 47 F4 2B C8 F0 B0 62 C7 38 63 C2 06 42 37 37 62 EB 89 DE D6 2C A1 BF 7F DB 90 67 D8 7A E0 1E 5E 22 92 D7 3D 5F A8 5E D0 B9 CD F5 63 53 5B A6 F6 49 8E 5F 5E 14 69 22 63 32 7F 98 17 D6 6D 53 A8 2C 61 E3 B0 51 FF A2 AE F8 12 49 43 C9 63 99 E4 EA 34 D9 E1 98 97 A5 F8 85 27 BC A7 D1 ED D4 81 7E 21 4E 44 92 3E 96 24 51 FD 7C D9 ED F6 45 75 30 C9 49 86 4E 31 AD 59 05 B4 5F 4B 90 0B 63 D2 AA E7 D7 DF 74 D7 F6 C0 C0 67 67 E5 74 57 DE 97 A4 DE C3 D3 83 9D D5 81 44 0F 63 D4 9B 8C C7 D3 F0 B5 64 B5 7C 63 FD 70 25 19 21 A2 B2 DF B7 53 5E 95 BF BC BC CF A7 9F E2 4F 1D 57 19 D0 D1 38 8B 10 43 C9 9C 22 D3 04 27 8C 93 8F BF FA 60 61 51 D6 68 C3 54 7E FB 09 43 2A 28 07 51 2F 61 8D 3C D4 31 79 79 F7 ED 45 8C 5E E7 3D 3A 16 42 04 05 F1 8B 52 B8 8D C6 D4 CC 9F 74 21 31 CB 30 A3 AE 6B 11 FF ED C4 F7 A1 AA 4E E1 DC B7 55 0D 95 39 BE E9 CD CF FF 35 13 12 04 26 D5 F2 59 4B 87 95 D1 55 14 6D 72 74 FA 1D FB C1 4B 4F C8 BD 35 A3 1F 3E 9B AE 6B 79 00 C0 21 B6 39 62 84 96 71 77 54 BA 6A 78 D2 DF CF 90 11 DE BF D1 D6 D0 A9 C8 3C 38 0D D7 80 81 41 8F B5 F1 5B 9E FD 1D AB 78 D0 8E 98 8C 07 A0 A8 9D F6 1A E0 89 EC E2 D6 F7 F4 C6 DA 5D B4 EA ED 5A E5 10 FF 4D 1B 99 4E 10 3C 62 63 EB D1 EE 69 A6 00 56 56 35 21 00 F9 27 27 36 14 2B 1A 85 C1 DB 9B 03 2F 07 11 BF 76 E9 E9 5D 2D F8 BC 86 A0 C4 2C C2 4F 70 8B F2 F8 66 F0 13 68 03 9C E5 2D 9F 3E 66 56 B6 27 C5 5F 92 83 DD 3C C4 63 DD 33 90 B3 BF 4D 5F B4 F8 5B A6 B5 76 11 0A 10 29 07 41 50 50 F2 2C ED 0A 66 ED 91 7B CD 6F 89 46 76 73 E4 E3 FB ED C4 53 69 C3 B1 9F FE D2 47 C6 E8 A5 77 D7 56 31 DA A0 54 E0 05 6E A5 76 7B 8D F4 68 E5 F0 A1 E2 6C 3D DB 34 D0 D5 D5 C5 64 63 97 2D 31 95 A6 1F 65 F2 E2 B7 05 07 09 A1 3C F6 6F 85 6D B8 2D F9 2A 28 BD A9 76 E5 ED 96 96 A7 8B 3E 8E FC D2 D4 57 C7 D3 42 25 07 E1 6B AC 06 1A AE 2B BE D6 C0 B6 AC 22 BF 9A 8C DA 14 D1 65 00 C5 91 79 A8 AE 2B BE 8C 8C 73 87 98 8C DA 1C 71 35 36 C4 33 FA AD 6B 54 57 AE 2B BE CE 99 D5 04 A0 EA 16 AB 6B 54 57 AE 2B BE CB FC E4 60 F4 2C CD C4 5D 9F 66 AD 6D 32 F1 07 AB 1B F3 51 01 75 4D 1F A8 F0 12 11 48 19 3C B5 11 2B 00 1F 27 A5 9F 3E 8E 0C E6 F7 FE 28 B1 21 A8 16 44 A7 AE 2B BE D9 C0 93 AD EC C2 BF 98 8C DA 8A B3 45 25 6E 7D F3 A4 24 B4 70 DE 56 B3 AA 13 6F 1F 0F 90 9B 51 A4 EC EE A0 E9 3A 9E 3E 0E 02 6C C0 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 0E 63 02 1A AE 2B 4A 9A 8C 0A 4B 10 08 96 30 7F E0 DE F5 09 18 CE 1C 6B 0F 5D C5 D6 0A 0A 0A 0A 43 4F 44 4E A4 48 6A 88
現在,我知道 png 文件必須以上述順序開始:
83 5A 44 4D 07 00 10 00 0A 0A 0A 07 43 42 4E 58 0A 0A - original sequence 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 - need to be
另外文件的最終順序必須與上述順序一致:
0A 0A 0A 0A 43 4F 44 4E A4 48 6A 88 - original final sequence 00 00 00 00 49 45 4E 44 AE 42 60 82 - need to be
我試圖弄清楚文件被加密的加密類型。
我認為這是替換密碼所以我寫了這個腳本:
import io with open('second.png', mode='rb') as file: # b is important -> binary fileContent = file.read() binary = " ".join("{:02x}".format(ord(c)) for c in fileContent) # for word in binary.split(): # print word arr1 = ["89", "50", "4E", "47", "0D", "0A", "1A", "00", "49", "48", "44", "52", "49", "45" ,"4E", "44" ,"AE", "42", "60", "82"] arr2 = ["83", "5A", "44", "4D", "07", "00", "10", "0A", "43", "42", "4E", "58", "43", "4F", "44", "4E", "A4", "48", "6A", "88"] with open('second2.png', mode='wb') as file2: # b is important -> binary for word in binary.split(): if word.upper() in arr2: # print word file2.write( (arr1[arr2.index(word.upper())]).decode("hex") ) #bytearray.fromhex("7061756c").decode() else: file2.write( word.upper().decode('hex') )
但它不起作用。
您的程式碼不起作用的原因是您還沒有弄清楚如何解密沒有出現在標題或最終序列中的字節值。
雖然您可以嘗試將這種加密簡單地作為字節上的通用單字母替換密碼來破解,但這需要您單獨找出 256 個可能的密文字節中的每一個對應的明文字節。一種更有效的方法是查看是否有一些簡單的規則將密文字節與明文字節相關聯。
我會嘗試的第一種可能性是按位 XOR。實際上,如果您獲取文件的前 18 個字節,並將它們與預期的 PNG 標頭字節進行異或,您將得到:
ciphertext: 83 5A 44 4D 07 00 10 00 0A 0A 0A 07 43 42 4E 58 0A 0A PNG header: 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 ----------------------------------------------------------------- XOR: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A
這確實表明了一個相當明顯的模式,不是嗎?