• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Stream Binary File (чтение Файла)

  • Автор темы Автор темы KingGLEB
  • Дата начала Дата начала

KingGLEB

Active member
08.05.2008
30
0
Добрый день.

Задача следующая: есть файл, в нем 7 байт. Надо с помощью ssjs разобрать эти байты и преобразовать каждый из них в шестнадцатеричные или десятичные.

Файл находится на сервере ('C:\a.bin'):
D3 02 40 8D C9 16 00

Вот что у меня получилось:
var stream:NotesStream = session.createStream();
stream.open("C:\a.bin");
var logRec:Array = stream.read(7); // Считываем 7 байт
print(logRec); // Результат: -45,2,64,-115,-55,22,0

Вопрос: а почему числа отрицательные? Почему первый байт это -45, а не 211 (D3), например? Как мне из -45 получить нормальное десятичное 211? Поясните плиз. Спасибо.

PS: чувствую, что с возрастом начинаю тупеть. :RTFM:
 
Вопрос снимается. Нашел ответ.

var stream:NotesStream = session.createStream();
stream.open("C:\a.bin");
var logRec:Array = stream.read(7); // Считываем 7 байт
print(logRec); // Результат: -45,2,64,-115,-55,22,0

print(("0x" + (0xFFFFFFFF + logRec[0] + 1).toString(16).toUpperCase()).right(2)); // Результат: D3
print(("0x" + (0xFFFFFFFF + logRec[1] + 1).toString(16).toUpperCase()).right(2)); // Результат: 02
print(("0x" + (0xFFFFFFFF + logRec[2] + 1).toString(16).toUpperCase()).right(2)); // Результат: 40
print(("0x" + (0xFFFFFFFF + logRec[3] + 1).toString(16).toUpperCase()).right(2)); // Результат: 8D
print(("0x" + (0xFFFFFFFF + logRec[4] + 1).toString(16).toUpperCase()).right(2)); // Результат: C9
print(("0x" + (0xFFFFFFFF + logRec[5] + 1).toString(16).toUpperCase()).right(2)); // Результат: 16
print(("0x" + (0xFFFFFFFF + logRec[6] + 1).toString(16).toUpperCase()).right(2)); // Результат: 00
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab