![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Здравствуйте, уважаемые форумчане.
У меня вопрос в следующем: есть бинарный файл, я разобрался в его структуре, есть программа, которая создает эти файлы и может читать(исходника, соответственно, нету, структура не описана). Вот например наименьший кусочек файла: (в Hex виде) Код:
66 A5 67 A3 70 9A 76 AA 67 A5 67 A3 70 9A Структура одной записи: (без дополнительного одного байта, указывающего на длину либо конец строки). Кстати, так и не понял до сих пор тоже, как понять, что строка определенной длины..что здесь используется символ типа #0 или вначале например число, указывающее на длину. ![]() Код:
Singature:Byte; // $66 Rating:String; // В данном случае длина = 1, значение = "1" Question:String; // В данном случае длина = 1, значение = "1" Answer:String; // также 1, значение = "1" Value1:String; // 1, значение = "1" Value2:String; // 1, значение = "1" Value3:String; // 1, значение = "1" Value4:String; // 1, значение = "1" т.е. если изобразить правильнее, то для данного кусочка структура такая: Код:
Singature :Byte; Rating :String[2]; Question :String[2]; Answer :String[2]; Value1 :String[2]; Value2 :String[2]; Value3 :String[2]; Value4 :String[1]; // не стоит символ конца! ![]() Вот примерно можно увидеть наглядно эту запись немного "приятнее" для глаз: Код:
Исходная: 66 A5 67 A3 70 9A 76 AA 67 A5 67 A3 70 9A а теперь немного структурированнее, смотрим сверху вниз первый столбик, затем на второй столбик, видим что закономерно начинается повторение. 66 A5 67 67 A3 A3 70 70 9A 9A 76 AA 67 A5 т.е. например сделаем, чтобы вопрос(question) был из двух символов "1", тогда имеем уже: Код:
66 A5 67 A3 9F 6B A5 7B 96 76 96 74 9F 6B A5 а исходная(с вопросом, где символ "1" один): 66 A5 67 A3 70 9A 76 AA 67 A5 67 A3 70 9A Очень надеюсь на вашу помощь, т.к. сам пока не могу понять. ![]() Если нужны записи другой длины, с другим содержанием или ещё что-то, то скажите. Помогите, пожалуйста разобраться. Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей ![]() |
#2
|
|||
|
|||
![]() хотелось бы увидеть что выдаст при Rating='2' и '3'
или длинную строку из одного итого же символа я так понял, сейчас оно вот-так: http://imglink.ru/show-image.php?id=...0b785dacf97ea9 Последний раз редактировалось Pyro, 25.09.2011 в 14:27. |
#3
|
||||
|
||||
![]() При Rating = '2'
Код:
66 A6 67 A3 70 9A 76 AA 67 A5 67 A3 70 9A Код:
66 A5 67 A3 9F 9A A5 AA 67 A5 67 A3 70 9A 76 AA 67 A5 Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей ![]() |
#4
|
|||
|
|||
![]() Цитата:
в xor не шарю, но думается, потом взять из результата посимвольно вычесть '1' и это будет ключ Последний раз редактировалось Pyro, 25.09.2011 в 14:36. |
#5
|
||||
|
||||
![]() Создал файл, где questions ='11111111111111111111' // т.е. 20 единиц.
Код:
66 // signature A5 67 // ratink {questions} A3 9F 9A A5 AA 96 A5 96 A3 9F 9A A5 AA 96 A5 96 A3 9F 9A A5 7B 96 76 // answer 96 74 // val1 9F 6B // val2 A5 7B // val3 96 // val4 Получается хor ключ 8 значный ?! Этот ? Код:
$92 $AE $AB $94 $9B $A7 $94 $A7 146 174 171 148 155 167 148 167 Как тогда правильно восстановить по этому коду исходный ? Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей ![]() Последний раз редактировалось Oleg, 25.09.2011 в 15:02. |
#6
|
|||
|
|||
![]() похоже что 8-значный, а xor или что-то ещё чтобы узнать, надо не 111111... а что-то другое подставлять и смотреть как меняется, например интересно глянуть что даст 11111111222222221111111122222222... по 8 тех и этих
|