Errate mein Passwort (Cops 'Thread)

Oct 23 2020

Inspiriert von dieser Herausforderung, die geschlossen wurde. Dies soll eine einfachere, aber nicht weniger interessante Version davon sein.

Dies ist der Cops-Thread einer Cops-and-Robbers- Herausforderung. Den Räuberfaden finden Sie hier .

Cops werden ein Programm / eine Funktion und ein Flag bereitstellen. Räuber werden versuchen, ein Passwort so zu erraten, dass das Flag ausgegeben wird, wenn das Passwort dem Programm des Polizisten gegeben wird.

Grundregeln

  • Die verwendete Sprache sollte angegeben werden.
  • Das Flag, das eine Ganzzahl, eine Zeichenfolge oder ein Wert eines anderen Typs sein kann, sollte angegeben werden.
  • Das Flag kann in STDOUT gedruckt, von einer Funktion zurückgegeben oder mit einer der anderen Standardausgabemethoden ausgegeben werden, sofern Sie angeben, wie es ausgegeben werden soll.
  • Das Programm / die Funktion kann das Kennwort über STDIN als Funktionsargument oder unter Verwendung einer der anderen Standardeingabemethoden verwenden, sofern Sie angeben, wie es eingegeben werden soll.
  • Ein kostenloser Online-Compiler / Interpreter sollte ebenfalls verknüpft sein, vorzugsweise mit dem Code des Cop, der bereits eingefügt und betriebsbereit ist.

Noch ein paar Regeln

  • Es muss mindestens ein gültiges Kennwort vorhanden sein, das Ihr Programm veranlasst, das Flag zurückzugeben, und Sie sollten mindestens eines dieser Kennwörter kennen, wenn Sie Ihre Antwort veröffentlichen.
  • Im Falle einer Funktionsübermittlung sollte der Cop auch ein vollständig ausführbares Programm enthalten, das die Funktion entweder in der Antwort oder im verknüpften Online-Compiler / Interpreter enthält.
  • Wenn der Typ des Flags nicht eindeutig ist, muss er angegeben werden.
  • Wenn die Beschreibung der Ausgabe durch einen Cop nicht eindeutig ist (z. B. " HashSet(2, 1)sollte gedruckt werden"), dürfen Räuber dies ausnutzen (z. B. die Zeichenfolge "HashSet (2, 1)" anstelle eines tatsächlichen Hashsatzes drucken).
  • Es ist nicht erlaubt, Räuber dazu zu zwingen, das Passwort einfach brutal zu erzwingen.
  • Das Programm muss Eingaben vornehmen und das Flag ausgeben, wenn das richtige Passwort angegeben wird. Wenn Sie nicht das richtige Passwort erhalten, können Sie Fehler machen, etwas anderes ausgeben oder sofort beenden. Wenn Ihr Programm bei falschem Kennwort nie angehalten wird, müssen Sie Räubern über dieses Verhalten informieren, damit niemand darauf wartet, dass das Programm etwas ausgibt.

Die Punktzahl der Cops ist die Anzahl der Bytes, die ihr Code belegt.

Cop-Antworten sind sicher, wenn sie zwei Wochen lang nicht geknackt wurden.

Beispiel

Polizist:

Scala, 4 Bytes

x=>x

Flag: Yay, you cracked it!(Ein Objekt vom Typ Stringwird vom obigen Lambda zurückgegeben.) Probieren Sie es online aus!

Räuber:

Passwort: die Zeichenfolge "Yay, du hast es geknackt!" Probieren Sie es online aus!

Finde ungerissene Bullen

<script>site='meta.codegolf';postID=5686;isAnswer=false;QUESTION_ID=213962;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>

Antworten

15 Sisyphus Oct 23 2020 at 05:41

PHP , 89 Bytes, geknackt von Benkerd22

<?php
$x=file_get_contents('php://stdin');
if(!preg_match('/.*golf.*/',$x))echo trim($x);

Probieren Sie es online aus!

Ausgänge golfgenau.

12 ovs Oct 23 2020 at 04:05

Python 2 , 94 Bytes, geknackt von Christian Mann

Bearbeitet, um die Punktzahl zu reduzieren. Siehe Revisionsverlauf für ungolfed Version.

Eine weitere Python-Antwort.

import re,sys
p=sys.stdin.read()
if re.match('^[exc\dhrkb\slim_=:;,.ants]*$',p):exec p;print a

Probieren Sie es online aus!

Flagge ist 0xc0de. Die Ausgabe sollte STDOUT sein.


Meine Lösung war im Grunde die gleiche wie die von Christian:

Die Regex akzeptiert nur eine sehr begrenzte Anzahl von Zeichen. Bemerkenswerte Ausschlüsse sind alle Arten von Klammern, Zeichenfolgenbegrenzer, fast alle Operatoren und die pfür printund input.
a='0xc0de'stimmt nicht mit dem regulären Ausdruck überein und auch a=hex(49374)nicht.

Mit dieser Einschränkung kenne ich keine Möglichkeit, eine Funktion aufzurufen, die einen Wert zurückgibt. Ich würde mich für Gegenbeispiele interessieren;).
Eine Ausnahme ist a==b, welche Aufrufe a.__eq__(b), aber da qnicht verfügbar, können Sie dies nur mit eingebauten Typen tun.

Die Idee ist, die Tatsache, dass print aAufrufe verwendet werden a.__str__, um eine Zeichenfolgendarstellung des Objekts zu erhalten a. Dies bedeutet, dass wir ein Objekt amit einer benutzerdefinierten __str__Methode definieren müssen, die dann als Zeichenfolge aufgerufen wird.
Das Instanziieren von Objekten ist ohne nicht möglich (), aber zum Glück können wir Methoden für Klassen anstelle von Instanzobjekten mithilfe von Metaklassen definieren.
Die Metaklasse muss über eine __init__Funktion verfügen , die drei Argumente akzeptiert und zurückgibt None. Eine gute Wahl hierfür ist eine __init__Funktion einer anderen Klasse.

Dieses Ergebnis in die endgültige Lösung:

class b:
    __str__ = 49374 .__hex__
    __init__ = 0 .__init__
class a:
    __metaclass__ = b

Probieren Sie es online aus!

Dies funktioniert in Python 3 aus zwei Gründen nicht:

  • intIch habe keine __hex__Methode mehr.
  • Die Syntax für Metaklassen hat sich geändert. In Python 3 würde dies so aussehen class a(metaclass=b): ..., dass verbotene Klammern verwendet werden
10 RobinRyder Oct 24 2020 at 05:25

R , 60 Bytes, von Paul geknackt

function(x) chartr("zyxwvu", "RRRRRR", tolower(x[1] + x[2]))

Probieren Sie es online aus!

Wie bei meiner vorherigen Herausforderung ist das auszugebende Flag die Zeichenfolge "R". Mit anderen Worten, Sie müssen finden , xso dass f(x)=="R"ist TRUE.


Die Lösung ist z as.roman(c(2, 3)). Dieses Objekt wird dargestellt als c(II, III); es ist von Mode, numericaber von Klasse roman. Da es numerisch ist, funktioniert die Addition und gibt die römische Ganzzahl an V. Aber da es von der Klasse Roman ist, tolowerzwingt es zur Schnur und gibt die Schnur "v". Dann chartrübersetzt dies in "R".

8 ThisIsAQuestion Oct 23 2020 at 02:40

Python 2.7 , 189 Bytes, von Ovs geknackt

import re

inp = raw_input()
if not re.match(r"^[\w\d=]*$", inp):
    quit()
exec(inp)

a = raw_input()
b = raw_input()
flag = a == b

if flag == True:
    print("%s %s"%(a, b))

Probieren Sie es online aus!

Flag ist The Flag, Ausgabe an STDOUT. Das mag ein bisschen einfach sein, macht aber hoffentlich trotzdem Spaß!

7 Lynn Oct 24 2020 at 00:15

Haskell , 246 Bytes, von Ovs geknackt

infix 0#
0:p#x=p#1:x
1:p#x:z=p#x:x:z
2:p#x:y:z=p#(y+x):z
3:p#x:y:z=p#(y-x):z
4:p#x:y:z=p#(y*x):z
5:p#x:y:z=p#div y x:z
6:p#x:y:z=p#y:x:y:z
7:p#x:y:z=p#y:x:z
c:p#x|(q,_:r)<-span(<c)p=r#until((==0).head)(q#)x
_#x=x
main=readLn>>=print.(#[]).take 60

Probieren Sie es online aus!

Die Eingabe wird über STDIN übernommen und die Ausgabe wird auf STDOUT gedruckt. Das Flag ist die Ausgabezeichenfolge:[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499]

(Das sind die Primzahlen von 2 bis 499.)

6 Sisyphus Oct 23 2020 at 08:46

Gelee , 4 Bytes, von Bubbler geknackt

OÆTP

Probieren Sie es online aus!

Ausgänge 160.58880817718872.

¯ \ _ (ツ) _ / ¯

6 KevinCruijssen Oct 23 2020 at 17:24

05AB1E (Legacy) , 8 13 Bytes , geknackt von @ovs

F}žhм9£.ER.V*

+5 Bytes, um einen anderen von @ovs gefundenen Riss zu schließen (obwohl er ihn stattdessen als tatsächlichen Riss veröffentlichen kann, wenn er dies wünscht).

Probieren Sie es online aus.

Erwartete Ausgabe: \n137438953472\n(wo das \nnatürlich Zeilenumbrüche sind).

Code-Erklärung:

F              # Loop `N` in the range [0, input-1)
 }             # Close the loop
  žhм          # Remove all digits
     9£        # Only keep the first 9 characters
       .E      # Evaluate and execute as Python code
         R     # Reverse
          .V   # Evaluate and execute as 05AB1E (legacy) code
            *  # Multiply two values
               # (after which the result is output implicitly with a single trailing newline)

Tipp 1: Die vom Programm + beabsichtigte Lösung funktioniert aus zwei Gründen nur in der Legacy-Version von 05AB1E (in Python 3 integriert). Dies funktioniert in der neuesten 05AB1E-Version (in Elixir integriert) nicht, in der alle in der obigen Code-Erklärung erwähnten integrierten Funktionen auch wie beschrieben funktionieren .
Tipp 2: Bei TIO tritt keine Zeitüberschreitung auf, sodass eine Eingabe wie die 274359834731, die dazu führen würde 137438953472\n(beachten Sie, dass die beabsichtigte führende neue Zeile fehlt), nicht die beabsichtigte Lösung ist, da die Schleife zu lange dauert (nach der 5 nicht mehr möglich) Bytes wurden hinzugefügt). Die beabsichtigte Lösung läuft auf TIO in weniger als 0,2 Sekunden.
Tipp 3: Einer der beiden in Tipp 1 genannten Gründe ist ein Fehler mit .Eund eine bestimmte Art von Eingabe (die AUCH in @ovs 'anfänglichem Riss enthalten ist ), die ich missbrauche, um das beabsichtigte Ergebnis zu erhalten.
Tipp 4: Es gibt drei lose Eingänge (getrennt durch ein Zeilenumbruchtrennzeichen), und der erste und der dritte Eingang sind identisch

6 att Oct 23 2020 at 04:10

Wolfram Language (Mathematica) , 15 Bytes, geknackt von w123

#//.a_:>Head@a&

(Bearbeitet, um die Anzahl der Bytes zu verringern. Die Lösung sollte dieselbe sein. Alle unbeabsichtigten Lösungen, die mir einfallen, sollten trivial anzupassen sein.)

Flagge : flag.

Eingabe nach Funktionsargument und Ausgabe nach Rückgabewert. Probieren Sie es online aus!

6 pxeger Oct 24 2020 at 18:39

Python 3.8 (Vorabversion) , 93 Bytes, von pppery geknackt

from functools import*;lambda a,b,c:(d:=reduce)(lambda e,f:e[f],c,d(getattr,b,__import__(a)))

Probieren Sie es online aus!

  • Eingabe ist Funktionsargumente, Ausgabe ist Funktionsrückgabewert.
  • Flag ist die Zeichenfolge pxeger(mein Benutzername)

pppery hat meine beabsichtigte Lösung nicht gefunden, und niemand anderes hat sie gefunden, aber hier ist sie:

Die Funktion

Nimmt einen Modulnamen zum Importieren, eine Liste von Attributen und eine Liste von Unabhängigkeiten und sucht nach einem Wert. Es lässt sich am besten anhand eines Beispiels erklären: ! f("spam_module", ["eggs", "ham"], [2, 3]) ! # ==> ! import spam_module ! spam_module.eggs.ham[2][3] !

Vorausgesetzt, dass:

Mein Benutzername ist regexp(wie im regulären Ausdruck) rückwärts und regexpein ziemlich gebräuchlicher Variablenname

Also müssen wir:

  1. Suchen Sie eine Verwendung des Wortes regexpin der Standardbibliothek

  2. Greifen Sie mit der umfangreichen Laufzeit-Introspection-API von Python darauf zu

  3. Dreh es um

Speziell

Im csvModul gibt es eine Klasse namens, Snifferdie eine Methode namens hat, _guess_quote_and_delimiterdie eine Variable namens verwendet regexp.

Python lässt Sie

Greifen Sie auf diesen Variablennamen als Element des Attributs zu .__code__.co_varnames. (Ich empfehle, alles zu untersuchen, was man bekommen kann __code__- es ist sehr interessant, wenn auch übertrieben)

Dann

regexp ist der sechste Variablenname, der dort verwendet wird, also suche ich nach csv.Sniffer._guess_quote_and_delimiter.__code__.co_varnames[5]

Schließlich,

Kehren Sie das um, indem Sie es mit slice(None, None, -1)(äquivalent zu x[::-1]) in Scheiben schneiden.

Die ganze Lösung ist also

f("csv",["Sniffer","_guess_quote_and_delimiter","__code__","co_varnames"],[5,slice(None,None,-1)])

6 Dorian Oct 26 2020 at 17:28

dotcomma , 819 Bytes, rissig durch den Standard.

[[,.][[,.],[.[[,.][.].]],.[[.,]]].,][,.]
[,],[[,.][[.][[[.][.].,][,.][.].,][[.][.
][.].,].[[[,.][[].[],.][[[,][,.].,]].,][
[,][.]].][,.][[,][[[,.][[[[.][.].,][,][.
][,][,.].,]].,].[[[,.][[[,][,.].,]][[].[
],].,][[,]].][,.][[,.][[[[.]][.][[[.][[.
]][[[[.]][[.][.][.].,][,.].,][.][,.].,][
,.][[.]].,][,.][.].,][[.]][,.].,][,.].][
.].,]][[.]].,]].,][,],[[[,.][.[[[,.][[].
[.],].,].][[,.][,.][,.].,]].,]][[,.].[.[
[.][,.].][[[[.][.][.][.].,][,.].,],][[[,
.][[[[[[[[[,][,.].,][,.].,][,][,.][.][.]
[.].,][.].,][.].,],],][.][.][.][.][.].,]
.,][.][.].,][,][,][,][,][,][,][[,.][[,][
,][,]].,][,][,][,][[,.][[,][,][,][,][,]]
.,][,][[,.][[[,.][[,]].,]].,][,]],.[[[,.
][[[[.][.][.].,][,][,][,.][[].[,],].,]].
,][[[,.][[[[[[[,.][.].,][.][.].,],][.].,
][.].,],].,][.][.][.][.].,][,][,][,][[,.
][[[,.][[,][,][,]].,]].,]]][.][[.]][[.]]

Probieren Sie es online aus!

Die Flagge ist accepted.

Da diese Sprache ziemlich neu ist und ich bisher nur zwei Personen (den Erfinder und mich) gesehen habe, die sie verwenden, habe ich versucht, ein gutes Gleichgewicht zwischen zu hart und zu einfach zu finden.

Wenn ich es richtig gemacht habe, hat der Code zwei gültige Passwörter. Der Interpreter ist in Javascript geschrieben und läuft daher auf Ihrem lokalen Computer.

Auf meinem Notebook dauert es ungefähr fünf Sekunden, bis nach Eingabe des richtigen Passworts "akzeptiert" angezeigt wird.

Lösung:

Die beabsichtigte Lösung ist die Nummer 49375 . Ich wollte ursprünglich den Dezimalwert von 0xC0DE (49374) verwenden, habe aber die Dinge in meinem Kopf durcheinander gebracht und bin eine Zahl zu hoch gelandet. Die Vergleichsfunktion funktioniert so, dass der Eingang und die Lösung in einer Schleife dekrementiert werden, bis einer von ihnen Null wird. Dann muss der andere 1 sein, um akzeptiert zu werden. Das heißt, 49376 ist auch eine gültige Lösung.

Andere bekannte Lösungen sind [49375], [49376], [49375, -1] und [49376, -1]

Die Art und Weise, wie dies geknackt werden sollte:

dotcomma ist eine esoterische Sprache, die wirklich schwer zu lesen ist, deshalb wollte ich nicht, dass jemand sie wirklich "dekompiliert" und genau weiß, was jeder Befehl tut, sondern mit den Blöcken herumrätselt.

Wie bereits in meinem ersten Kommentar erwähnt, funktioniert die Sprache ein bisschen wie Brain-Flak. Die Eingabe wird implizit zu den Anfangswerten in der Warteschlange, und nach Programmende wird der Inhalt der Warteschlange implizit gedruckt. Ein leeres Programm ist also ein Katzenprogramm .

Um dies zu lösen, müssen Sie zuerst den Anfang und das Ende jedes Blocks finden, was zu so etwas führt:

(1) [[,.][[,.],[.[[,.][.].]],.[[.,]]].,]
(2) [,.]
(3) [,],
(4) [[,.][[.][[[.][.].,][,.][.].,][[.][.][.].,].[[[,.][[].[],.][[[,][,.].,]].,][[,][.]].][,.][[,][[[,.][[[[.][.].,][,][.][,][,.].,]].,].[[[,.][[[,][,.].,]][[].[],].,][[,]].][,.][[,.][[[[.]][.][[[.][[.]][[[[.]][[.][.][.].,][,.].,][.][,.].,][,.][[.]].,][,.][.].,][[.]][,.].,][,.].][.].,]][[.]].,]].,]
(5) [,],
(6) [[[,.][.[[[,.][[].[.],].,].][[,.][,.][,.].,]].,]]
(7) [[,.].[.[[.][,.].][[[[.][.][.][.].,][,.].,],][[[,.][[[[[[[[[,][,.].,][,.].,][,][,.][.][.][.].,][.].,][.].,],],][.][.][.][.][.].,].,][.][.].,][,][,][,][,][,][,][[,.][[,][,][,]].,][,][,][,][[,.][[,][,][,][,][,]].,][,][[,.][[[,.][[,]].,]].,][,]],.[[[,.][[[[.][.][.].,][,][,][,.][[].[,],].,]].,][[[,.][[[[[[[,.][.].,][.][.].,],][.].,][.].,],].,][.][.][.][.].,][,][,][,][[,.][[[,.][[,][,][,]].,]].,]]]
(8) [.]
(9) [[.]]
(10) [[.]]

Probieren Sie dann aus, was jeder Block macht.

Block 1 (Filter): Dieser Block beantwortet tatsächlich die Standardeinstellung. Die Frage (Entschuldigung, ich habe sie nicht klar beantwortet. Keine andere Einreichung musste Details zum Passwort beantworten, und das "falsche Passwort :(" war der einzige rote Hering, den ich dem Programm hinzugefügt habe. Also wollte ich nicht zu sagen "Nein, es ist tatsächlich eine fünfstellige Ganzzahl"). Wenn Sie dies mit verschiedenen Datentypen (Zahlen, Zeichenfolgen, Listen von Zahlen oder Zeichenfolgen) ausführen, werden Sie sehen, dass es das erste Element einer Zeichenfolge oder Liste zurückgibt, wenn Es hat mehrere Elemente, oder es gibt eine 1 und das Element zurück, wenn Sie eine Zahl oder eine Zeichenfolge / Liste mit nur einem Buchstaben eingeben. Der Zweck wird klar, wenn Sie den zweiten Block hinzufügen.

Block 2 (erstes Element löschen): Wenn Sie die Blöcke 1 und 2 ausführen, sehen Sie, dass die Ausgabe leer ist, wenn Sie etwas mit mehreren Werten eingeben. Es bleiben nur einzelne Zahlen oder einzelne Buchstaben in der Warteschlange. (Eigentlich die Standardeinstellung. Es wurde ein Fehler in der Programmiersprache gefunden, da negative Werte in der Warteschlange nicht möglich sein sollten. Sie können nicht programmgesteuert einen negativen Wert in die Warteschlange schreiben und negative Werte werden nicht in die Ausgabe geschrieben, aber anscheinend können sie noch von der Eingabe gelesen werden). Ab diesem Punkt sollte klar sein, dass das Passwort entweder eine Zahl oder ein einzelner Buchstabe ist.

Block 3 (nächsten Block ausführen, wenn sich etwas in der Warteschlange befindet): Dies ändert die Ausgabe nicht, dient jedoch der Steuerung. Sie können es ignorieren.

Block 4 (Build-Konstanten zum Vergleich): Dadurch wird die Liste [49375, 96, Eingabe] erstellt. An dieser Stelle können Sie sich fragen, wofür die große Zahl ist und ob sie für das Passwort wichtig sein kann.

Block 5 (nächsten Block ausführen, wenn sich etwas in der Warteschlange befindet): Wie Block 3. Da sich drei Werte in der Warteschlange befinden, wird auch die Warteschlange gedreht, sodass die Ausgabe [96, Eingabe, 49375] lautet.

Block 6 (Eingabe und Passwort vergleichen): Wie bereits erwähnt, werden die Eingabe und die Nummer 49375 dekrementiert, bis einer von ihnen Null wird. Dann dekrementiert das andere ein anderes Mal und hängt die 96 daran an. Der Ausgang ist [49375-Eingang (oder Eingang-49376), 96]. An dieser Stelle sollten Sie darauf hinweisen, dass Sie die Eingabe so ändern müssen, dass der erste Wert zu etwas Interessantem wird, wie 0, -1 oder vielleicht 96?

Block 7 (Schreibausgabe): Dieser Block prüft, ob der erste Wert 0 ist. Wenn ja, verwendet er den zweiten Wert, um die Zeichenfolge "akzeptiert" zu erstellen. Wenn nicht, füllt es die Warteschlange mit der Zeichenfolge "abgelehnt".

Blöcke 8-10: Das sind nur Füllstoffe, daher hat meine Einreichung eine schöne Rechteckform.

5 HyperNeutrino Oct 23 2020 at 01:05

Ich werde die Dinge mit einer beginnen, die wahrscheinlich nicht extrem schwierig sein wird, aber einige Gedanken braucht.

Python 3 , 78 Bytes: durch Wastl geknackt

while 1:
	try:l=input()
	except:l=''
	exec(l,{},{"exit":0,"quit":0})
	print(1)

Probieren Sie es online aus!

Flagge ist nichts. Wie in , . Das Programm sollte nichts ausgeben.

5 Sisyphus Oct 23 2020 at 05:53

Python 3 , 85 Bytes, von r3mainer geknackt

import re,time
b=input()[:40]
a=time.time()
re.match(b,b)
if time.time()-a>9:print(0)

Probieren Sie es online aus!

Druckt 0. Funktioniert mit TIO.

5 RobinRyder Oct 23 2020 at 05:45

R , 29 Bytes, durch Pfeffer geknackt

function(x) intToUtf8(cos(x))

Probieren Sie es online aus!

Das auszugebende Flag ist die Zeichenfolge "R".


Die Lösung ist 5.1i.

Obwohl \$\forall x\in\mathbb R, -1\leq\cos x\leq1\$Diese Grenzen gelten nicht für komplexe \$x\$: \$\cos(a+ib)=\cos x\cosh y -i \sin x\sinh y\$, was unbegrenzt ist. Wir wollen \ finden$x\$so dass \$ \cos x=82\$(der ASCII-Codepunkt von R); pppery gab die Antwort x=5.0998292455...i. Die kürzeren x=5.1iWerke, weil intToUtf8sie ein komplexes Argument annehmen und umwandeln können, sind als Ganzzahl, indem der Imaginärteil ignoriert und der Realteil auf eine Ganzzahl abgerundet wird.

5 ZippyMagician Oct 24 2020 at 01:26

Arn , 19 Bytes , geknackt von r3mainer

€weL˜ù┼󪘛’U•žfcmº

Ich würde das entpackte Formular bereitstellen, aber es ist ziemlich trivial, zusätzliche Herausforderungen zu dekodieren , wenn Sie es selbst dekodieren müssen. Nicht besonders schwierig, aber Sie müssen auf den Quellcode zugreifen. Die Flagge, die Sie wollen, ist:

7.9228162514264337593543950336e+28

Dies wurde im Online-Interpreter durchgeführt . Dies sollte nicht zu schwierig sein und mehrere Eingaben sollten theoretisch funktionieren. Ich empfehle Ihnen jedoch, herauszufinden, welche ich verwendet habe (Sie werden sofort wissen, ob Sie die richtige gefunden haben).

Lösung + Erklärung

Die verwendete Flagge r3mainer war J0e_Biden!. Die Flagge, die ich als Lösung verwenden wollte, bleibt verborgen, um andere zu ermutigen, es zu versuchen :). Zur Vereinfachung finden Sie hier eine Erklärung für das Programm:*:*((|:(|\):}):i0^:i"n

:* Square
  :* Square
      ( Begin expression
        (
            |: Bifurcate*
              (
                |\ Fold with concatenation (remove spaces)
                  _ Variable initialized to STDIN; implied
              ) End expression
          :} Tail
        )
      :i Index of
        0 Literal zero
    ^ To the power of
        _ Implied
      :i
        "n" literal string
  • Hinweis: Die Gabelung ist derzeit defekt, und dieses Programm nutzt dies aus. Ist im Grunde |:(...):}ein Synonym für das Umkehren des Strings ...(liebst du keine Bugs?)
4 NahuelFouilleul Oct 23 2020 at 03:52

Perl 5 ( -n), 33 Bytes, von Neil geknackt

length()<28 && !/\w/ && eval eval

Probieren Sie es online aus!

Die Flagge ist Flag. Die Eingabe ist stdin und die Ausgabe stdout.

4 tsh Oct 23 2020 at 13:54

JavaScript (Spider) , 23 Bytes, Gebrochen durch Sisyphus

a=readline()
print(a+a)

Probieren Sie es online aus!

  • Ausgabe erwarten: aaa
  • Eingabe / Ausgabe verwenden stdin, stdout
4 SunnyMoon Oct 23 2020 at 03:49

! @ # $% ^ & * () _ + , 104 Bytes, geknackt von @thedefault

*^(%  _+*^)%(0_+%)%  _+^$($_^_$_^_$+!!!!!!!!!+++++++++^$)+_^_  _+$(_^^^^^^^^^^_$^$)+xx_+$(_0+_$^$)+!!@@@

Das Flag für dieses Programm wird $$$an STDOUT ausgegeben.

Ich garantiere, dass die Flagge in mindestens 5 Sekunden mit dem richtigen Passwort erscheint.

Probieren Sie es online aus!

Was macht es überhaupt?

*^(%  _+*^)%(0_+%)%  _+^$($_^_$_^_$+!!!!!!!!!  # Push the password integer...
+++++++++^$)+_^_  _+$(_^^^^^^^^^^_$^$)+        # ...from STDIN onto the stack
xx_+$(_0+_$^$)+                                # Divide by the ASCII value of 0 i.e 48
!!@@@                                          # Print the result as a character thrice.

Deshalb:

\.$x = 48 · 36 = 1728\$

Wobei x das Passwort ist.

FYI 36 ist der ASCII-Wert von $.

4 Dingus Oct 25 2020 at 12:43

Ruby -n , 32 Bytes, geknackt von @Sisyphus

Bearbeiten, um die Punktzahl um 1 zu reduzieren: (p eval$_)→p(eval$_) .

!/[Scfpv\.:\?'"%<`(]/&&p(eval$_)

Eingabe über STDIN. Das Flag wird """\n(drei doppelte Anführungszeichen mit nachgestelltem Zeilenumbruch) in STDOUT gedruckt.

4 EricDuminil Oct 25 2020 at 04:59

Rubin , 85 Bytes, geknackt zweimal durch die-default

x=gets
puts (x[0...n=x.size/2].to_i*x[n..-1].to_i).to_s(36) if x[-9..-1]=="123456789"

Probieren Sie es online aus!

Flag ist: codegolfguessmypasswordrobber001qtr5vxskd64lddb0gsyw2w4hp8zd1t0jals Zeichenfolge in STDOUT.

Erläuterung

Es wurden zwei Primzahlen mit jeweils 50 Dezimalstellen ausgewählt. Einer von ihnen endet mit "0123456789", und ihr Produkt beginnt mit codegolfguessmypasswordrobberdem Schreiben in Basis 36.

p = 91642145128772682907542781226248344977333099146327
q = 15416260853069873976599113800182718102190123456789
n = p*q = 1412779214440046356547554449820888121475969772090456386542605159205021769559275444371360154172564003

Dies sieht nach einer RSA-Factoring-Herausforderung aus , und die Faktorisierung des Semi-Prime ist definitiv eine Möglichkeit, das Kennwort zu finden. Bruteforce war für diese Herausforderung jedoch ausdrücklich verboten. Und anscheinend war es sowieso nicht allzu schwer, n mit einem Open-Source-Programm namens cado-nfs zu faktorisieren . Ich hätte wahrscheinlich eine längere Semiprime wählen sollen, zB RSA-200 .

Es gibt eine (schlecht versteckte) Hintertür: Sie String#to_ikonvertiert gerne einen String in eine Ganzzahl.

Fremdzeichen nach dem Ende einer gültigen Nummer werden ignoriert.

So "1x000123456789".to_iwird umgerechnet auf 1, und die Herausforderung wird trivial. Es ist jetzt möglich, n als n * 1 zu "faktorisieren".

3 Scott Oct 23 2020 at 03:55

JavaScript (V8) , 25 Bytes, vom Benutzer geknackt

y=s=>(l=s.length)?l:l/l|1

Probieren Sie es online aus!

Die Flagge ist 0.
Eingabe : Funktionsparameter.
Ausgabe : Rückgabewert der Funktion.

3 pxeger Oct 23 2020 at 03:02

Python 3.8 , 95 Bytes, durch Wastl geknackt

import os;(c:=os.getenv("A")).isidentifier()and c not in"printinput"and eval(c)(os.getenv("B"))

Die Eingabe erfolgt über Umgebungsvariablen. (Kein TIO-Link, da er sie nicht unterstützt). Flagge ist the_flag.

@wastl hat meine beabsichtigte Lösung nicht gefunden - ihre war viel einfacher. Folgendes habe ich behauptet:

PYTHONBREAKPOINT=builtins.print A=breakpoint B=the_flag python -c 'import os;(c:=os.getenv("A")).isidentifier()and c!="print"and eval(c)(os.getenv("B"))'

Die PYTHONBREAKPOINTUmgebungsvariable beschreibt eine Funktion, die bei Verwendung aufgerufen werden soll breakpoint(). Python hat viele seltsame implizite Verhaltensweisen wie dieses. Ich habe absichtlich "Eingabe ist Umgebungsvariablen" vage gelassen, so dass Sie denken würden, es wäre nur AundB

3 SE-stopfiringthegoodguys Oct 23 2020 at 22:14

> <> 4 Bytes

i10p

Probieren Sie es online aus!

Das Flag wird Something smells delicious...in STDOUT gedruckt und nimmt die Eingabeform STDIN an.
Ungültige Schlüssel beenden das Programm möglicherweise nicht immer.

Keine schwierige, aber ich mag diese Funktion.

3 ΛRYΛN Oct 24 2020 at 01:43

JavaScript, 10428 Bytes, geknackt von ovs

[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]]+(([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]]+[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+[+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+!+[]]+(+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+[!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+[+!+[]])[(![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]]((!![]+[])[+[]])[([][(!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]](([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]]+![]+(![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])()[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[+[]])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+!+[]+[+[]]])+[])[+!+[]])+([]+[])[(![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]()[+!+[]+[!+[]+!+[]]])())

Weil niemand sagte, dass es eine Zeichenbeschränkung gibt :)

Geige

Das Flag ist cracked!sonst gibt es keine Ausgabe.

3 ConorO'Brien Oct 26 2020 at 19:12

JavaScript , 2465 Bytes, rissig durch den Standard.

X=([...O],S=[])=>{let M,F,a,b,R,n;M=F=0;while(O.length)eval(("?S.shift())#[a,b]!2);F=a==b;?a-b)#M++#?M)#%#M=0#M=%#R=%O=[]#n=%n!n);if(F)O=n.concat(O)".split`#`[O.shift()]||"").replace(/%/g,"S.pop();").replace(/\?/g,"S.push(").replace(/!/g,"=S.splice(-"));return R};const U=prompt().split``.map(e => e.charCodeAt()).join``.replace(/9/g,"").split("").map(e=>+e);R={s:20,m:0x80000000,a:1103515245,c:12345,get q(){return R.s=(R.a*R.s*+R.c)%R.m},i(v){return R.q/~-R.m*v|0},get b(){return R.i(2)},h([...a]){for(i=~-a.length;i>0;i--){j=R.i(i+1);[a[i],a[j]]=[a[j],a[i]]}return a}};R.s=U.reduce((p,c)=>p+c,0);class S{constructor(w,n=0){this.w=w;this.n=n;this.s={};this.c={}}N(T=this){return new S(T.w,T.n)}P(T=this){for(let i=0;i<T.w;i++)if(!T.c[i])T.A(i,T.n++);return T}M(s,t,T=this){let A=T.c[s],B=T.c[t];T.s[A]=T.s[A]||[];T.s[B]=T.s[B]||[];T.s[A].push(...T.s[B]);T.s[B].map(c=>{T.c[c]=A});delete T.s[B]}S(a,b,T=this){return T.c[a]==T.c[b]}A(c,s,T=this){T.c[c]=s+="";T.s[s]=T.s[s]||[];T.s[s].push(c)}*[Symbol.iterator](){yield*Object.entries(this.s)}Z(f=false,T=this){let C,b,c,v,N,r,g,l,m;C=[];b=[c=0];for(;c<~-T.w;c++){if(T.S(c,c+1)||(!f&&R.b)){C.push(b);b=[c+1]}else{T.M(c,c+1);b.push(c+1)}}C.push(b);v=[];N=T.N();if(!f){for(let[i,s]of T){let q=R.i(s.length-1);if(!q)q++;g=R.h(s).slice(0,q);v.push(...g);g.map(c=>N.A(c,i))}}r=[];C.map(c=>c.map((e,i,a)=>{l=i+1==a.length;m=!l*2;m|=1*(v.indexOf(e)!==-1);r.push(m)}));return[N.P(),r]}static F(w=10,h=10){let s=new S(w).P(),r,g=[[1]],i=0;for(;i<w;i++)g[0].push(1,1);for(let i=0;i<h;i++){[s,r]=s.Z(i===h-1);g.push(...I(r))}return g}};let I=(r, last=false)=>{let D=[1],E=[1];r.map(c=>{D.push(0,+((c&2)==0));E.push(+((c&1)==0),1)});return[D,E]};class B{constructor(w=10,h=10){this.m=S.F(w,h);this.r=0;this.G=true;this.f()}a(x=this.x,y=this.y){return this.m[y][x]}f(T=this){T.x=T.y=T.ey=1;while(T.a()!=0)T.x++;T.ex=this.m[0].length-1;while(T.a(T.ex)!=0)T.ex--}W(){return this.x==this.ex&&this.y==this.ey}d(r=this.r){return [[0,1],[-1,0],[0,-1],[1,0]][r]}L(){this.r++;this.r%=4}F(){let o=this.x,p=this.y,d=this.d();this.x+=d[0];this.y+=d[1];if(this.a()==1){this.x=o;this.y=p;this.G=false}if(this.W()){console.log("win");this.G=false}}M(r){r=this.r+r;r%=4;let m=-1,d=this.d(r),x=this.x,y=this.y;while(this.a(x,y)!=1){x+=d[0];y+=d[1];m++}return m}T(f){let ms=[1,3,0,2],v=f(ms.map(e=>this.M(e)));while(v&&this.G){this["KLFK"[v%4]].bind(this)();v>>=2}return this.G}R(f){let Y=999;while(this.G&&Y-->0)this.T(f)}}(new B()).R(a=>X(U,a))

Probieren Sie es online aus! Die Flagge istwin . Es sollte keine andere vom Programm erzeugte Ausgabe geben. Obwohl ich dieses Programm so konzipiert habe, dass es mit der Implementierung von JavaScript durch Firefox funktioniert, funktioniert es auch auf dem Knoten, daher der Link. Die Eingabe ist eine Zeichenfolge durch prompt, die ein Befehlszeilenargument im Header der Knoten-TIO-Verbindung ersetzt.

In diesem Wahnsinn steckt sehr viel Methode; Brute Force wird hoffentlich weder empfohlen noch praktikabel. Leicht Golf gespielt. Eher ein Versuch, es auf 2 Wochen zu schaffen, als es mit der niedrigstmöglichen Punktzahl zu tun - ein Proof of Concept, wenn Sie so wollen.

Oder versuchen Sie es hier in Ihrem Browser

X=([...O],S=[])=>{let M,F,a,b,R,n;M=F=0;while(O.length)eval(("?S.shift())#[a,b]!2);F=a==b;?a-b)#M++#?M)#%#M=0#M=%#R=%O=[]#n=%n!n);if(F)O=n.concat(O)".split`#`[O.shift()]||"").replace(/%/g,"S.pop();").replace(/\?/g,"S.push(").replace(/!/g,"=S.splice(-"));return R};const U=prompt().split``.map(e => e.charCodeAt()).join``.replace(/9/g,"").split("").map(e=>+e);R={s:20,m:0x80000000,a:1103515245,c:12345,get q(){return R.s=(R.a*R.s*+R.c)%R.m},i(v){return R.q/~-R.m*v|0},get b(){return R.i(2)},h([...a]){for(i=~-a.length;i>0;i--){j=R.i(i+1);[a[i],a[j]]=[a[j],a[i]]}return a}};R.s=U.reduce((p,c)=>p+c,0);class S{constructor(w,n=0){this.w=w;this.n=n;this.s={};this.c={}}N(T=this){return new S(T.w,T.n)}P(T=this){for(let i=0;i<T.w;i++)if(!T.c[i])T.A(i,T.n++);return T}M(s,t,T=this){let A=T.c[s],B=T.c[t];T.s[A]=T.s[A]||[];T.s[B]=T.s[B]||[];T.s[A].push(...T.s[B]);T.s[B].map(c=>{T.c[c]=A});delete T.s[B]}S(a,b,T=this){return T.c[a]==T.c[b]}A(c,s,T=this){T.c[c]=s+="";T.s[s]=T.s[s]||[];T.s[s].push(c)}*[Symbol.iterator](){yield*Object.entries(this.s)}Z(f=false,T=this){let C,b,c,v,N,r,g,l,m;C=[];b=[c=0];for(;c<~-T.w;c++){if(T.S(c,c+1)||(!f&&R.b)){C.push(b);b=[c+1]}else{T.M(c,c+1);b.push(c+1)}}C.push(b);v=[];N=T.N();if(!f){for(let[i,s]of T){let q=R.i(s.length-1);if(!q)q++;g=R.h(s).slice(0,q);v.push(...g);g.map(c=>N.A(c,i))}}r=[];C.map(c=>c.map((e,i,a)=>{l=i+1==a.length;m=!l*2;m|=1*(v.indexOf(e)!==-1);r.push(m)}));return[N.P(),r]}static F(w=10,h=10){let s=new S(w).P(),r,g=[[1]],i=0;for(;i<w;i++)g[0].push(1,1);for(let i=0;i<h;i++){[s,r]=s.Z(i===h-1);g.push(...I(r))}return g}};let I=(r, last=false)=>{let D=[1],E=[1];r.map(c=>{D.push(0,+((c&2)==0));E.push(+((c&1)==0),1)});return[D,E]};class B{constructor(w=10,h=10){this.m=S.F(w,h);this.r=0;this.G=true;this.f()}a(x=this.x,y=this.y){return this.m[y][x]}f(T=this){T.x=T.y=T.ey=1;while(T.a()!=0)T.x++;T.ex=this.m[0].length-1;while(T.a(T.ex)!=0)T.ex--}W(){return this.x==this.ex&&this.y==this.ey}d(r=this.r){return [[0,1],[-1,0],[0,-1],[1,0]][r]}L(){this.r++;this.r%=4}F(){let o=this.x,p=this.y,d=this.d();this.x+=d[0];this.y+=d[1];if(this.a()==1){this.x=o;this.y=p;this.G=false}if(this.W()){console.log("win");this.G=false}}M(r){r=this.r+r;r%=4;let m=-1,d=this.d(r),x=this.x,y=this.y;while(this.a(x,y)!=1){x+=d[0];y+=d[1];m++}return m}T(f){let ms=[1,3,0,2],v=f(ms.map(e=>this.M(e)));while(v&&this.G){this["KLFK"[v%4]].bind(this)();v>>=2}return this.G}R(f){let Y=999;while(this.G&&Y-->0)this.T(f)}}(new B()).R(a=>X(U,a))

Bestimmte Lösung

Die Lösung des Standardwerts war sehr ähnlich zu meiner und tatsächlich konzeptionell gleich meiner. Meins hat jedoch eine etwas engere Codierung:

Z5[_\\#\]:#][4\]!!!!\]\\\\ \\\]:(Z5[_\\#\]:#][4\] \\\]4\\\]:4\\\\\\\\\\\\\\\\\\\\%

Ich werde wahrscheinlich später eine halb Golf-, halb kommentierte Version der Quelle veröffentlichen.

2 ΛRYΛN Oct 24 2020 at 01:17

JavaScript (SpiderMonkey) , 66 Bytes, von @user geknackt

if (readline() === ([0][1]+"").slice(4,8)) console.log('cracked!')

Probieren Sie es online aus!

Die Flagge ist die Zeichenfolge cracked!

2 ovs Oct 24 2020 at 23:30

Python 3 , 42 Bytes, von Pfeffer geknackt

Nur eine einzige Zeile Python.

eval(input(),{'__builtins__':{}})(**{0:0})

Probieren Sie es online aus!

Das Passwort wird über STDIN eingegeben, das Flag ist (nichts) und sollte auf STDERR gedruckt werden. Das bedeutet keine Ausgabe an STDERR.

2 ovs Oct 24 2020 at 23:55

Python 3 , 73 Bytes, von pxeger geknackt

Hoffentlich gibt es diesmal keine Lücken.

s=input()
assert not{*s}&{*'()[]{}'}
eval(s,{'__builtins__':{}})(**{0:0})

Probieren Sie es online aus!

Nach wie vor wird das Passwort über STDIN eingegeben, das Flag ist (nichts) und sollte auf STDERR gedruckt werden. Das bedeutet keine Ausgabe an STDERR.

2 PkmnQ Oct 26 2020 at 10:15

JavaScript (V8) , 113 Byte

f=n=>n!=42?`${n} is a number`:`${n} is the answer to the ultimate question of life, the universe, and everything`

Probieren Sie es online aus!

fmuss zurückkehren 42 is a number.

Wahrscheinlich eine einfache, aber es ist einen Versuch wert.

2 RobinRyder Oct 27 2020 at 20:02

R , 143 Bytes, von Giuseppe geknackt

function(x, y, z){
  if(length(ls(1)) > 1 | length(ls()) != 3) return("S")
  LETTERS[lengths(lapply(y, intToUtf8(x), z)) * lengths(lapply(y, intToUtf8(x+32), z))]
}

Probieren Sie es online aus!

Einmal wieder ist der Wert zur Ausgabe der Zeichenfolge "R". Die Linie mit length(ls())ist da, um zu versuchen, einige Lücken zu schließen; In jedem Fall müssen Sie Objekte finden x, yund zdas f(x, y, z) == "R"ist TRUE.


Giuseppe hat mit den Funktionen und eine schöne Lösung gefunden . Die Lösung, die ich mir vorgestellt hatte, war : Probieren Sie es online aus! (Alle Vektoren der Länge 3 würden funktionieren). Der Trick ist, dass die Funktionen und beide existieren (wobei die zweite viel weniger bekannt ist). Beim Aufrufen wird der Ganzzahlvektor der Länge 6 zurückgegeben . Aufruf gibt einen Faktor der Länge 3 zurück (mit Kontrasten ). Das Produkt der Längen ist also 18, was der Position im Alphabet entspricht.^~f(67, list(as.factor(1:3)), 4:6)cCc(1:3, 4:6)1 2 3 4 5 6C(as.factor(1:3), 4:6)1 2 34 5 6R

1 tsh Oct 26 2020 at 09:07

JavaScript (Spider) , 52 Bytes, Gebrochen durch r3mainer

i=>(a=+i,a<a/a?a/a<-a?1/a<a:a*a>1:1<a*a?a*a<a:1/a<a)

Probieren Sie es online aus!

Erwarten Sie Ausgabe ist true.

Eingabe über Parameter, Ausgabe über Rückgabewert. Globale Werte sollten nicht konfiguriert werden, bevor die Funktion ausgeführt wird. (Ist zum Beispiel Object.defineProperty(globalThis, 'a', { get() { return ...; }, set() { return true; } })nicht gültig.)

Dieser könnte ganz einfach sein. Ich habe erwartet, dass es in 30 Minuten geknackt wird ...