Konversi JSF ** k ke JS normal

12

Banyak dari Anda sudah tahu JSF ** k . Bagi yang tidak, ini adalah skrip yang pada dasarnya mengubah kode JavaScript apa pun menjadi hanya ditulis menggunakan []()!+.

Tugas Anda adalah membangun, menggunakan bahasa apa pun yang Anda pilih, sebuah program yang mengubah JSF ** k menjadi JavaScript yang tidak diobotasi.

  • Input : String dengan kode JSF ** k yang valid.
  • Output : Sebuah string dengan kode JavaScript biasa yang sebelumnya JSF ** ked untuk menghasilkan input.

Untuk tantangan ini, pertimbangkan bahwa string input hanya JSF ** ked sekali.

Ini adalah kontes , jadi kode terpendek, dalam byte, menang.

William Barbosa
sumber
@Michael tetapi apakah pengkodeannya jelas-jelas dapat dipulihkan? Saya tidak berpikir begitu ... bagaimana saya memutuskan apakah [...]akses array adalah bagian dari kode asli atau bagian dari kebingungan? sama untuk semua konstruksi lainnya, sungguh.
Martin Ender
2
@ JanDvorak oh apa ... itu sangat kontraproduktif ... kita bisa membantunya menutup pertanyaan ini dan melakukan upvoting alih-alih downvoting.
Martin Ender
2
@ m.buettner Saya turun karena saya merasa pertanyaannya tidak ke mana-mana. Saya jelas tidak ingin mengunggah posting hanya untuk membuka beberapa hak istimewa bagi seseorang.
John Dvorak
2
@JanDvorak Saya pikir kita tidak seharusnya mencegah pengguna baru yang ingin menulis tantangan yang baik dan mendengarkan kritik. Karena sandbox adalah pada meta dan akan tinggal di sana, downvoting adalah kontra-produktif. Penutupan sudah cukup memadai. Saya tidak berpikir satu upvote akan membahayakan siapa pun, dan itu akan memberi pengguna kesempatan untuk benar-benar menemukan entri ke komunitas ini. Tetapi seseorang setuju dengan Anda dan memutuskan untuk mengundurkan diri juga, karena, mengapa pengguna baru boleh memposting di kotak pasir (saya kira) ... dan sekarang ia masih tidak dapat memposting di sana. Saya tidak berpikir bagaimana kita menumbuhkan komunitas ini.
Martin Ender
1
Bisakah Anda menambahkan penjelasan apa arti JavaScript normal ? Mungkin tidak jelas bagaimana transformasi-belakang harus dilakukan. Misalnya jika saya mengulangi obfustator dua kali pada beberapa input yang bagus, apa output yang disarankan? Program asli atau input yang sudah dikaburkan?
Howard

Jawaban:

12

Javascript - 68 55 51

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

Atau: (panjang yang sama)

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

Berjalan di konsol browser Anda. Hanya dijamin untuk bekerja dengan kode yang dihasilkan oleh jsfuck.com dengan opsi 'Sumber Eval' dicentang.

Tidak Disatukan:

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
)
nderscore
sumber
Dalam sunting yang disarankan yang saya tolak, @ user3082537 menyarankan untuk menggunakan regex alih-alih slice, seperti direplace(/^.*\n|\n}$/g,'')
user12205
7

JavaScript, 122, bekerja dengan input apa pun

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

Cukup mudah; itu hanya kembali dalam string sampai tanda kurung ( (dan )) seimbang. Tiga karakter terakhir dari output JSF selalu )() , jadi memotong 2 parens terakhir dan kemudian menemukan paren yang cocok untuk yang lain akan selalu bekerja. (Ini berfungsi dengan input []juga.)

Gagang pintu
sumber