Просьба помочь разобраться с скриптом.
Всем привет. В 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:32. |