Ну если Вас интересует решение, то вот
const codeString = '!!!!!!.....!!!!!!!!!!.!!!.!..!!!!!!!!!.....!.!.!!!!!!!......!.!!!!!!!!....!.!..!!!!!!.!!.!....!!!!!!!!!...!!...!!!!!!.!!!.!!...!!!!!!!......!.!!!!!!!.!!.!!!.!.!!!!!!!..!..!.!!!!!!!!!.!.!!!..!!!!!!!!..!!.!!!.!!!!!!!..!.!!.!.!!!!!!!!.....!..!!!!!!!!....!!!.!!!!!!!!....!..!!!!!!!!.!!!....!!';
// ваша функция кодировки
const encode = (login, passwd) => (`` + login + passwd).split('')
.map(e1 => e1.charCodeAt(0))
.map(e2 => e2.toString())
.map(e3 => e3 + parseInt('10', 2))
.map(e4 => parseInt(e4).toString(2))
.map(e5 => `0`.repeat(Math.round(16 - e5.length)) + e5)
.map(e6 => e6.split(``).map(it => it === '0' ? `1` : `0`).join(``)).join('').split('')
.map(e7 => e7 === '0' ? `.` : `!`).join('');
// функция декодировки
const decode = str => str.split(``)
.map(d1 => d1 === `.` ? `0` : `1`)
.map(d2 => d2.split(``).map(it => it === '1' ? `0` : `1`).join()).join(``).split()
.map(d3 => Array(d3.length / 16).fill(null).map((it, idx) => +d3.substr((idx * 16), 16)))[0]
.map(d4 => Math.trunc(parseInt(d4, 2) / 10))
.map(d5 => String.fromCharCode(d5)).join(``);
console.log(encode(`codeby.`,`netWAPT2019`) === codeString);
Логин -
codeby. , пароль
netWAPT2019
Суть задачи в том, что бы обратно перевести закодированные данные в изначальное состояние. То есть, как бы задом наперёд сделать все преобразования из функции кодирования.