Привіт, я впевнений, що було багато подібних запитань, але після багато пошуків я не знайшов жодної публікації, яка описувала б мою ситуацію.
У мене є деякі файли jpg, які мають певні кольори неправильно після певної точки, а також кожен піксель зміщується вліво. Я думаю, це через деякі пропущені байти в місці, де він змінюється. Я намагався редагувати файл з vi, але здається, неможливо дізнатися, де відсутні байти, також vi дуже складний у використанні. Я також спробував нано, але це не є бінарним.
Це одне із розглянутих зображень:
Тому я хочу поставити вам два питання:
- Як я можу відремонтувати такі зображення в Linux?
- Як я міг безпечно відкривати та редагувати файл у двійковому текстовому редакторі під Linux?
Редагувати: за допомогою hexedit я виявив, що з позиції 0x27F000 до 0x27F403 є лише 0xff, а від 0x27F404 до 0x27FFFF є лише нулі 0x00. Це робить щось подібне:
0027EFF0 F8 83 C3 E2 09 35 AF 13 44 6E C5 FD C7 EF 23 E8 .....5..Dn....#.
0027F000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
[...]
0027F400 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ................
[...]
0027FFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00280000 8F 39 6E 47 4F 43 5F 36 7C 73 66 F1 0D AE AD AF .9nGOC_6|sf.....
Змінюючи ці байти випадковими числами, я зміг відхилити зображення, але проблема з кольором все ще існує.
Чи може хтось вказати мені на якусь документацію про кодування jpeg, щоб я міг зрозуміти, як знати, де закінчується блок 8x8.
Мені цікаво, чому позиції настільки точні (від 0x27F000 до 0x27FFFF), може це помилка моєї камери чи картки пам'яті, яку я використовував?