Перетворіть JSF ** k у звичайний JS


12

Багато з вас вже знають JSF ** k . Для тих, хто цього не робить, це сценарій, який в основному перетворює будь-який код JavaScript у щось, написане лише за допомогою []()!+.

Ваше завдання - створити, використовуючи будь-яку мову на ваш вибір, програму, яка перетворює JSF ** k у безперешкодний JavaScript.

  • Введення : рядок з дійсним кодом JSF ** k.
  • Вихід : Рядок із звичайним кодом JavaScript, який раніше був JSF ** ked для створення вводу.

Для цього завдання врахуйте, що вхідний рядок був JSF ** ked лише один раз.

Це змагання з , тому найкоротший код у байтах виграє.


@Michael, але чи є кодування однозначно зворотним? Я не думаю, що так ... як я можу вирішити, чи був [...]доступ до якогось масиву частиною вихідного коду чи частиною обфускування? те саме для всіх інших конструкцій, справді.
Мартін Ендер

2
@JanDvorak ой, що ... це настільки контрпродуктивно ... ми могли б допомогти йому закрити це питання та подати заявку замість того, щоб звертати увагу.
Мартін Ендер

2
@ m.buettner Я вважаю, що я не вважаю, що питання нікуди йде. Я, безумовно, не хочу просити публікацію лише для того, щоб розблокувати деякі привілеї для когось.
Джон Дворак

2
@JanDvorak Я думаю, що ми не повинні відлякувати нових користувачів, які хочуть писати гарні виклики та слухати критику. Оскільки пісочниця перебуває на мета і залишиться там, анонімне котирування є контрпродуктивним. Закриття цілком достатньо. Я не думаю, що жодна надбавка може нікому не нашкодити, і це дасть користувачеві можливість реально знайти вхід до цієї спільноти. Але хтось погодився з вами і вирішив також заперечувати, бо чорт, чому новим користувачам слід дозволити публікувати в пісочниці (я думаю) ... і тепер він все ще не може там розміщувати інформацію. Я не думаю, що таким чином ми розвиваємо цю спільноту.
Мартін Ендер

1
Чи можете ви додати трохи пояснення, що означає звичайний JavaScript ? Можливо, не очевидно, як потрібно зробити зворотну трансформацію. Наприклад, якщо я повторюю обфустатор двічі на приємному вході, що пропонується? Оригінальна програма або вхід, який уже був затуманений?
Говард

Відповіді:


12

Javascript - 68 55 51

alert(/\n(.+)/.exec(eval(prompt().slice(0,-2)))[1])

Як варіант: (однакова довжина)

alert(/.+(?=\n})/.exec(eval(prompt().slice(0,-2))))

Запускається в консолі браузера. Гарантована робота лише з кодом, згенерованим jsfuck.com, за допомогою пункту "Евал Джерело".

Безголівки:

alert(
    /\n(.+)/.exec(                 // regex to extract code from inside outer function braces {}
        eval(prompt().slice(0,-2)) // remove the final set of parens () and evaluate the code
                                   // this results in a function, which will be converted to a string as 'exec' expects a string
    )[1]                           // get the first capture group
)

У запропонованій редакції, яку я відхилив, @ user3082537 запропонував використовувати регулярний вимір замість зрізу, як вreplace(/^.*\n|\n}$/g,'')
user12205

7

JavaScript, 122, працює з будь-яким входом

s=prompt().slice(0,-2)
i=s.length
while(i--){if((l=s.slice(i)).split(')').length==l.split('(').length)break}alert(eval(l))

Досить простий; він просто повертається в рядку, поки круглі дужки ( (і )) не будуть врівноважені. Останні три символи виходу JSF завжди є )(), тому відрізання останніх 2-х паронів і потім знаходження відповідного батьків для іншого завжди працюватиме. (Він також працює з введенням [].)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.