Просьба помочь разобраться с скриптом.
Всем привет. В JS я абсолютный ноль:) Помогите разобраться с скриптом. Все что я понял, так это то что скрипт берет пару логин/пароль, преобразует ее 7 раз и сравнивает со сторокй. Задача определить логин и пароль.
function check(login, passwd){ let s = (login + passwd).split('').map(function(e1){ return e1.charCodeAt(0); }).map(function(e2){ return e2.toString(); }).map(function(e3){ return e3 + parseInt('10',2); }).map(function(e4){ var e3 = "%&" & 1; return parseInt(e4).toString(2); }).map(function(e5){ if (e5.length < 16) { i = 0; while(i < (16 - e5.length)){ e5 = '0' + e5; } } return e5; }).map(function(e6){ r = ''; for(i = 0; i < e6.length; i++){ if (e6[i] === '0') { r += '1'; }else{ r += '0'; } } return r; }).join('').split('').map(function(e7){ if (e7 === '0') { return '.'; }else{ return '!'; } }).join(''); if (s === '!!!!!!.....!!!!!!!!!!.!!!.!..!!!!!!!!!.....!.!.!!!!!!!......!.!!!!!!!!....!.!..!!!!!!.!!.!....!!!!!!!!!...!!...!!!!!!.!!!.!!...!!!!!!!......!.!!!!!!!.!!.!!!.!.!!!!!!!..!..!.!!!!!!!!!.!.!!!..!!!!!!!!..!!.!!!.!!!!!!!..!.!!.!.!!!!!!!!.....!..!!!!!!!!....!!!.!!!!!!!!....!..!!!!!!!!.!!!....!!') { return true; } return false; } |
Ну если Вас интересует решение, то вот
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 Суть задачи в том, что бы обратно перевести закодированные данные в изначальное состояние. То есть, как бы задом наперёд сделать все преобразования из функции кодирования. |
уже судя по этой login + passwd конкатенации вариантов может быть много
|
Arhitector, при объединении двух строк без известного разделителя, логин и пароль не получится однозначно обратно получить.
Цитата:
Вместо объединения строк, вы можете записать их в массив. Ваши вычисления можно сократить! { const encode = (login, passwd) => JSON.stringify([login, passwd]).split("") .map(v => (10 * v.codePointAt() + 2).toString(2).padStart(16, "0").replace(/0/g, "!").replace(/1/g, ".")) .join("") const decode = str => JSON.parse(str .replace(/\!/g, "0").replace(/\./g, "1").split(/(.{16})/) .reduce((m, v) => (v ? m.push(String.fromCharCode(parseInt(v, 2) / 10 | 0)) : 0, m), []) .join("")) // Проверка alert(decode(encode("codeby.", "netWAPT2019"))); } |
Всем спасибо за ответы, очень помогли! Подошли значения: логин codeby.net , пароль WAPT2019. У вас отличное сообщество, однозначно всем + к карме:)
|
Часовой пояс GMT +3, время: 13:25. |