Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2019, 13:20
Новичок на форуме
Отправить личное сообщение для 0m4n Посмотреть профиль Найти все сообщения от 0m4n
 
Регистрация: 07.07.2019
Сообщений: 2

Просьба помочь разобраться с скриптом.
Всем привет. В 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;
}
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2019, 21:35
Интересующийся
Отправить личное сообщение для Arhitector Посмотреть профиль Найти все сообщения от Arhitector
 
Регистрация: 12.08.2018
Сообщений: 18

Ну если Вас интересует решение, то вот

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

Суть задачи в том, что бы обратно перевести закодированные данные в изначальное состояние. То есть, как бы задом наперёд сделать все преобразования из функции кодирования.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2019, 21:45
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

уже судя по этой login + passwd конкатенации вариантов может быть много
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2019, 04:37
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Arhitector, при объединении двух строк без известного разделителя, логин и пароль не получится однозначно обратно получить.

Сообщение от 0m4n
преобразует ее 7 раз
только один раз!

Вместо объединения строк, вы можете записать их в массив.

Ваши вычисления можно сократить!

{
	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")));
}

Последний раз редактировалось Malleys, 08.07.2019 в 04:50.
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2019, 12:29
Новичок на форуме
Отправить личное сообщение для 0m4n Посмотреть профиль Найти все сообщения от 0m4n
 
Регистрация: 07.07.2019
Сообщений: 2

Всем спасибо за ответы, очень помогли! Подошли значения: логин codeby.net , пароль WAPT2019. У вас отличное сообщество, однозначно всем + к карме

Последний раз редактировалось 0m4n, 08.07.2019 в 13:51.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с скриптом alex72bel Общие вопросы Javascript 9 11.02.2016 13:44
Помогите разобраться со скриптом Валерий1996 Общие вопросы Javascript 7 13.07.2015 21:41
Просьба помочь autocomplete, переменные dr83 jQuery 1 03.08.2011 15:31
Помогите разобраться со скриптом alinastil Элементы интерфейса 1 02.04.2011 18:41
Прошу помочь разобраться с Javascript-ом и т.д. Lucky_ Оффтопик 44 21.07.2010 00:35