Прорыв в неведомое. #2

Прорыв в неведомое. #2

Joe Pesci
И помните: когда ваши крылья ослабнут, вера иссякнет и дальше лететь вы уже не сможете, вы на полпути к цели!


Чувствуешь? Это новый этап.
Ты познакомился с JS, попробовал точки останова и понял как должен мыслить в поиске непонятных значений и научился немного ориентироваться в этом непонятном джиесе.

Что дальше?
Все генитальное простынь. Запускай код, написанный на определенном языке там, где он должен работать. Звучит логично =)

Логика

Мы создадим простейшее API, которое будет написано на фреймворке Express, будет обрабатывать запросы к нашему API, а также будет отвечать на данные запросы (ошибкой или готовым значением CipherValue) с логикой получения CipherValue.

Step by Step

Не будем тянуть - скачиваем и устанавливаем NodeJS, а так же IDE для разработки (громко сказано).

  1. Переходим, скачиваем, устанавливаем - https://nodejs.org/en/ (советую версию 12.18.4)
  2. Проверяем установку, запускаем CMD и командуем node -v, если в ответ получили установленную версию NodeJS - все сделали верно.
  3. Переходим, скачиваем, устанавливаем - https://code.visualstudio.com/
  4. Подготавливаем рабочую область. Создадим на рабочем столе папку OutLookHelperApi
  5. В Visual Code File - Open Folder и выбираем только что созданную папку на рабочем столе
  6. Открываем терминал (верхний бар в Visual Studio) Terminal - New Terminal
  7. В терминале пишем - npm init, теперь можно дать своему пакету название, задать версию, добавить описание и прочее, а можно просто жать ENTER и все останется по дефолту. После совершения этих действий в папке проекта и в IDE появится новый файл - package.json
  8. Пишем в терминал npm i - устанавливаем текущие зависимости (не обязательно).
  9. В корне проекта создаем два файла - index.js и cipherLogic.js
  10. Устанавливаем фреймворк Express, терминал - npm install express --save

Приступаем Кодить!

В левом окне вы видите структуру проекта - index.js и CipherValue.js лежат в корне проекта! Для вашего удобства каждая строчка кода (ну или почти) имеет своё пояснение.

Наш сервер будет запускаться на порту "3000" и будет иметь два обработчика запросов - по слешу "127.0.0.1:3000/" и по "127.0.0.1:3000/getcipher".
В первом случае он выдаст инструкцию по формированию запросов к API (мини-памятка) -  /getcipher?password=PasswordToCipher&Key=ParsedKey&randomNum=ParsedrandomNum

Во втором же случае, он ожидает, что получит от вас несколько переменных:

  1. PasswordToCipher - исходный пароль
  2. ParsedKey - Key (статичен, как искать поняли в предыдущей статье)
  3. randomNum - необходимо каждый раз парсить из ответа OutLook

А мы ожидаем, что получим либо ошибку, либо значение CipherValue.


Логика index.js


Тут сложнее, функция по генерации хеша пароля тянет за собой кучу других функций. Опять же, понимать какие именно нужны вам - не стоит. Внедрите функции PackageNewPwdOnly, parseRSAKeyFromString, RSAEncrypt (именно эти, потому что мы явно определили в предыдущей статье их значимость) запустите код - он поругается на то, каких еще функций ему не хватает, вот это и добавьте!

Оборачиваем заготовку из всех наших функций в конструкцию вида:

exports.GetCipher = function (password, Key, randomNum) {
//
}
Все, наша функция готова для использования в файле index.js!

Логика cipherLogic.js

Идем в терминал и командуем - node index, если при запуске не возникает ошибок, а в лог приходит сообщение вида - "Joe Pesci listen at localhost:3000!", то значит, что все работает!

Опять же, незачем держать все это в IDE. IDE нужна была для более удобного взаимодействия кода, но теперь мы можем закрыть IDE и запустить наш код из CMD.

Открываем CMD, пишем cd <путь к папке с кодом>, а затем - node index.

В таком случае мы будем тратить еще меньше ресурсов пк:)

Запуск из CMD

Тест

Открываем Fiddler и отправляем запрос к нашему API.
На выходе получаем CipherValue, с которым уже можно работать при регистрации OutLook на запросах.

Получение CipherValue

Надеюсь, что я не написал



Выводы
Изначально Вам покажется, что оно того не стоит - слишком много действий. Но уверяю вас, у вас уже есть заготовка под API, которую можно переписать под другой проект за пару минут, но при этом вы сэкономите деньги и проведете очень быстрый тест!

Надеюсь, я был предельно понятен в своих объяснениях.





Мой канал в Telegram - https://t.me/joebackstage





































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Report Page