Hinweis : Diese Herausforderung ist jetzt geschlossen. Alle zukünftigen Polizistenbeiträge werden für die akzeptierte Antwort nicht berücksichtigt. Dies soll sicherstellen, dass in Zukunft niemand mehr eine sehr einfache Regex veröffentlichen kann, die nur ungerissen bleibt, weil sich niemand mehr für die Herausforderung interessiert.
Die Herausforderung der Polizei
Sie müssen einen kurzen, verschleierten regulären Ausdruck schreiben, der die folgende Spezifikation erfüllt:
Sie können jeden Geschmack wählen, der online frei testbar ist. Es gibt eine gute Liste von Online-Testern bei StackOverflow . Insbesondere Regex101 sollte für den Einstieg hilfreich sein, da es PCRE-, ECMAScript- und Python- Varianten unterstützt. Sie können das Zeitlimit erhöhen, indem Sie bei Bedarf auf den Schraubenschlüssel in der rechten oberen Ecke klicken. Bitte geben Sie den von Ihnen gewählten Tester in Ihrer Antwort an.
Wenn kein geeigneter Tester für Ihren Geschmack verfügbar ist, können Sie auch einen Online-Dolmetscher wie ideone verwenden und ein kleines Skript in der Host-Sprache schreiben, mit dem die Benutzer Ihre Einreichung testen können.
- Sie können jede Funktion dieser Art verwenden, die die Hostsprache nicht direkt aufruft (wie die Code-Evaluierungsfunktionen von Perl).
- Ebenso können Sie beliebige Modifikatoren verwenden (sofern diese Ihrem Geschmack entsprechen), es sei denn, sie führen zu einer Codebewertung.
- Ihr regulärer Ausdruck muss mindestens eine Zeichenfolge S akzeptieren und mindestens eine Zeichenfolge T ablehnen , von denen jede mindestens 16 und nicht länger als 256 Zeichen ist, und das in einem angemessenen Zeitraum (nicht wesentlich länger als eine Minute). S und T können Unicode-Zeichen enthalten, die nicht ASCII-Zeichen sind, sofern Sie sie in den Online-Tester eingeben können. Jedes Paar solcher Zeichenfolgen ist ein Schlüssel für Ihre Einreichung.
- Ihr regulärer Ausdruck kann bei jeder anderen Eingabe beliebig lange dauern.
Der Kern der Herausforderung besteht darin, einen Regex herzustellen, dessen Schlüssel schwer zu finden ist. Das heißt, es sollte entweder schwer zu sagen sein, mit welcher Zeichenfolge es nicht übereinstimmt oder mit welcher Zeichenfolge es übereinstimmt (oder möglicherweise sogar beides, wenn der reguläre Ausdruck Tage benötigt, um alle Zeichenfolgen außer den Zeichenfolgen des Schlüssels zu beenden).
Die Herausforderung der Räuber
Alle Benutzer, einschließlich derer, die ihre eigenen Regex (e) eingereicht haben, werden aufgefordert, andere Beiträge zu "knacken". Ein Beitrag wird geknackt, wenn einer seiner Schlüssel im zugehörigen Kommentarbereich veröffentlicht wird.
Wichtig: Stellen Sie sicher, dass beide Strings zwischen 16 und 256 Zeichen enthalten, auch wenn für einen Teil des Schlüssels fast jeder String verwendet werden kann.
Wenn eine Einreichung 72 Stunden lang ohne Änderung oder Rissbildung besteht, kann der Autor einen gültigen Schlüssel offenlegen, indem er ihn in seiner Antwort in einen Spoiler-Tag umwandelt. Dadurch wird seine Antwort "sicher", dh es kann nicht mehr geknackt werden.
Es ist nur ein Cracking-Versuch pro Einsendung pro Benutzer zulässig. Wenn ich zum Beispiel an Benutzer X sende: "Ihr Schlüssel ist 0123456789abcdef
/ fedcba9876543210
." Wenn ich mich irre, lehnt Benutzer X meine Vermutung als falsch ab und ich kann keine weiteren Vermutungen für diese Übermittlung mehr einreichen, aber ich kann trotzdem andere Übermittlungen knacken (und andere können diese Übermittlung immer noch knacken).
Gebrochene Einsendungen werden von der Konkurrenz ausgeschlossen (sofern sie nicht "sicher" sind). Sie sollten nicht bearbeitet oder gelöscht werden. Wenn ein Autor einen neuen regulären Ausdruck einreichen möchte, sollte er dies in einer separaten Antwort tun.
Knacken Sie nicht Ihre eigene Vorlage!
Hinweis: Bei langen Zeichenfolgen in Kommentaren ohne Leerzeichen fügt SE manuelle Zeilenumbrüche in Form von zwei Unicode-Zeichen ein. Wenn Sie also einen Schlüssel in Backticks posten, der so lang ist, dass er in Zeilenumbrüche zwischen nicht-Leerzeichen eingeschlossen ist, ist es nicht möglich, den Schlüssel direkt wieder in einen Regex-Tester zu kopieren. In diesem Fall senden Sie bitte einen Permalink zum entsprechenden Regex-Tester mit dem Regex des Polizisten und Ihrem Schlüssel. Die meisten Tester bieten diese Funktion an.
Wertung
Die Punktzahl eines Polizisten entspricht der Größe seines regulären Ausdrucks in Byte (Muster plus Modifikatoren, potenzielle Begrenzer werden nicht gezählt), sofern er nicht geknackt wurde. Die niedrigste Punktzahl einer "sicheren" Einreichung gewinnt.
Die Punktzahl eines Räubers ist die Anzahl der Einreichungen, die er geknackt hat. Im Falle eines Unentschiedens wird die Gesamtbyte-Größe der von ihnen geknackten Einsendungen als Unentschiedener verwendet. Hier gewinnt die höchste Bytezahl.
Wie oben erwähnt, kann jeder Cop als Räuber teilnehmen und umgekehrt.
Ich werde separate Bestenlisten für die beiden Teile der Herausforderung führen.
Bestenlisten
Letzte Aktualisierung: 19.10.2014, 20:33 UTC
Polizei:
Beiträge in Kursivschrift sind noch nicht sicher.
- Nneonneo , 841 Bytes
- Wumpus Q. Wumbley , 10.602 Bytes
- Sp3000 , 52.506 Bytes
- user23013 , 53,884 bytes
- Nneonneo , 656.813 Bytes
Räuber:
- user23013 , Cracked: 11, Gesamtgröße : 733 + 30 + 2.447 + 71 + 109 + 121 + 97 + 60 + 141 + 200.127 + 7.563 = 211.499 Bytes
- nneonneo , geknackt : 10, Gesamtgröße : 4.842 + 12.371 + 150 + 3.571 + 96 + 168 + 395 + 1.043 + 458 + 17.372 = 40.466 Byte
- Wumpus Q. Wummelig , Gebrochen: 6, Gesamtgröße : 22 + 24 + 158 + 32 + 145.245 + 145.475 = 290.956 Bytes
- Dennis , Gebrochen: 2, Gesamtgröße: 70 + 73 = 143 Bytes
- harius , Gebrochen: 1, Gesamtgröße : 9.998 Bytes
- g.rocket , Gebrochen: 1, Gesamtgröße : 721 Bytes
- stokastisch , Gebrochen: 1, Gesamtgröße : 211 Bytes
- Sp3000 , Gebrochen: 1, Gesamtgröße : 133 Bytes
- TwiNight , Cracked: 1, Gesamtgröße : 39 Bytes
quelle
Antworten:
.NET regulärer Ausdruck, 841 Byte [Sicher!]
Jetzt, da ich einen sicheren Zugang habe, wollen wir sehen, wie klein ich den regulären Ausdruck machen kann!
Schön gemacht :
Eigenschaften:
Vielen Dank an Sp3000 und user23013, die mich an .NET regex gewöhnt haben.
Nach 72 Stunden enthülle ich den Schlüssel, um diese Einreichung sicher zu machen.
Spiel :
Nicht übereinstimmend :
Aren'tHashFunctionsFun?
Erläuterung:
quelle
(?<a>){53}
. Es scheint, als würde das leere Mustera
53 Mal in einer benannten Gruppe erfasst . Alsoa=""
52 mal wiederholen? Aber ich weiß nicht genau, ob(?<
das in Microsofts Vorstellung von einem regulären Ausdruck dasselbe bedeutet. Ihre Dokumentation erwähnt es nicht einmal . Wenn sogar ein Regexp-Wettbewerb mit undokumentierten Microsoft-Erweiterungen endet, die über die Unix-Leute rollen, hat meine Existenz keinen Zweck.(?<a>){53}
drückt die leere Zeichenfolge 53 Mal. Sie können den Stapel mit öffnen(?<-a>)
. Hoffentlich ist jetzt klar, warum dieses Konstrukt so nützlich ist.Basic Regex, 656813 Bytes [sicher!]
Der reguläre Ausdruck, um alle regulären Ausdrücke zu beenden. Ein letztes Hoch in die Nacht.
Testbar unter PCRE, Perl, Python und vielen anderen.
bzip2'd und base64-codierte Version auf Pastebin: http://pastebin.com/9kprSWBn (Pastebin wollte die Raw-Version nicht, weil sie zu groß war).
Um sicherzustellen, dass Sie den richtigen regulären Ausdruck erhalten, können Sie überprüfen, ob es sich um den MD5-Hash handelt
oder überprüfen Sie, ob es mit beginnt
und endet mit
Der Schlüssel ist immer noch eine schöne komfortable 256 Bytes.
Ich habe diesen Regex mit Python getestet, aber beachte, dass dieser Regex keine speziellen Funktionen von Python verwendet. In der Tat werden mit Ausnahme von
(?:)
(als Gruppierungsmechanismus) keinerlei Besonderheiten einer Regex-Engine verwendet: lediglich grundlegende Zeichenklassen, Wiederholungen und Verankerungen. Daher sollte es in einer großen Anzahl von regulären Ausdrucksengines testbar sein.Nun, eigentlich kann ich die Schwierigkeit immer noch steigern, vorausgesetzt, jemand löst die kleineren Probleme nicht sofort ... aber ich wette, die Leute werden Probleme mit einem 1 GB großen Regex haben ...
Nach 72 Stunden bleibt dieser Beitrag ungerissen! So enthülle ich jetzt den Schlüssel, um die Einreichung sicher zu machen. Dies ist die erste sichere Einreichung, nachdem mehr als 30 Einreichungen von hartnäckigen Räubern hintereinander geknackt wurden.
Spiel :
Massive Regex Problem Survives The Night!
Non-Spiel :
rae4q9N4gMXG3QkjV1lvbfN!wI4unaqJtMXG9sqt2Tb!0eonbKx9yUt3xcZlUo5ZDilQO6Wfh25vixRzgWUDdiYgw7@J8LgYINiUzEsIjc1GPV1jpXqGcbS7JETMBAqGSlFC3ZOuCJroqcBeYQtOiEHRpmCM1ZPyRQg26F5Cf!5xthgWNiK!8q0mS7093XlRo7YJTgZUXHEN!tXXhER!Kenf8jRFGaWu6AoQpj!juLyMuUO5i0V5cz7knpDX0nsL
Regex Erklärung:
quelle
ECMAScript (10602 Byte)
(Sprachnotiz: Ich sehe viele Beiträge mit der Bezeichnung "Ruby" oder "Python" oder was auch immer, wenn sie wirklich keine sprachspezifischen Funktionen verwenden. Diese erfordern nur
(?!...)
und zusätzlich(?=...)
zu POSIX ERE Rückverweise. Diese Funktionen sind wahrscheinlich in Die Regexp-Engine Ihrer Lieblingssprache. Lassen Sie sich also nicht von der Herausforderung abhalten, da ich mich für die Verwendung des Javascript-Onlinetesters entschieden habe.)Nur ein bisschen Spaß, nicht so rechenintensiv wie einige andere.
Testen Sie hier: http://regex101.com/r/kF2oQ3/1
(Heuschrecken zirpen)
Keine Abnehmer? Es ist seltsamerweise enttäuschend, daran zu denken, den Spoiler ohne Anzeichen dafür zu veröffentlichen, dass jemand ihn lange genug angeschaut hat, um zu verstehen, um welche Art von Problem es sich handelt.
Ich schreibe eine vollständige Erklärung, um sie später zu veröffentlichen, aber ich denke, ich wäre glücklicher, wenn mich jemand schlagen würde.
Als ich sagte, es sei nicht "rechenintensiv" ... es ist eine Instanz eines NP-vollständigen Problems, aber keine große Instanz.
Tipp: Es ist eine Art Bleistift-Papier-Puzzle. Aber ich wäre ziemlich beeindruckt, wenn Sie dieses Problem allein mit Bleistift und Papier lösen könnten (nachdem Sie den regulären Ausdruck in eine für den Druck geeignete Form dekodiert haben).
Spoilerzeit
Es gibt hier mehrere Ebenen von Spoilern. Wenn Sie den regulären Ausdruck noch nicht gelöst haben, möchten Sie es möglicherweise erneut versuchen, nachdem Sie nur den ersten Spoilerblock gelesen haben. Der eigentliche Schlüssel, der mit dem regulären Ausdruck übereinstimmt, befindet sich nach dem letzten Spoilerblock.
Zweite Verderbnisschicht:
Letzte Verderbnisschicht:
Non-Match:
bananabananabanana
Match:
ƜpRԱԺեþɋэʌkȿՌOfɄCҷɐխɷլԿѪɮȹÞӿѤNɹЦʞӶdѯχԎԷӺջՒϻЉAɔbУƾձҴԉҨʬHѺӄӾԏxчɎֆFƈɊΞζџiփΨӃϣɂƱϬɣɿqϚɰƐդΦժʮgBƕȴւҵɺҏϯƋՐѠɴҔŋԀɤȻɸaЊѬҥѾҸшɉҶjnMʙƸՊʡEɟμƩςʢϪʊLՅȾɝUʝՉϥҁѧЩӷƆԋҳϙѭϢմԂɥȸhΔԓƛѿբՑҩSDȽԅҠGeωƪՈɅϛɃwҀҤՂΩßɜȶʟɀҹԄҡλѥՃȵҜҎɞԲЭщɌИдϠʄԻʫҝyϼӻҺЋϗѩͽɒʈէϞՀթЪΠƏƣoտʓюrԾϟϤƺϫճлљIնǂƎԳuȺԃQϧԶʁWըիcYЏʘƜ
Proof: http://regex101.com/r/pJ3uM9/2
quelle
Perlgeschmack, 158 [geknackt]
Hier ist mein erster Versuch:
Teste es auf ideone.com
quelle
j'k3j'kj'k3j'kj'kj'k3j'k3j'kj'k3j'kj'kj'k3R-k-<grc>-j'k<grc>-j'k$j'k-k-
Nicht-Match:HOLYCRAPTHATWASEVIL
(Match verfügbar unter ideone.com/pXaGaX zum Beweis)[^_^]
(-.-)
(?|...)
ist schwierig, aber es ist dokumentiert. Siehe die Passageperlre
, die mit beginnt.Be careful when using the branch reset pattern in combination with named captures.
Der Trick ist, dass Gruppen mit derselben Nummer, aber unterschiedlichen Namen dieselbe Gruppe sind , während Gruppen mit demselben Namen, aber unterschiedlichen Nummern unterschiedliche Gruppen sind .JS-Geschmack, 9998 Bytes [geknackt]
Getestet auf Regex101
Die Lösung, die ich generiert habe:
quelle
M
bisŇ
. Mathematica hat eine FunktionFindHamiltonianCycle
. Wir können dies in einen Zyklus verwandeln,Ň -> M
indem wir eine neue Kante hinzufügen und sie verbindenŇ
undM
durchlaufen. Zum Glück findet Mathematica einen solchen Zyklus sofort. :)JS-kompatibler RegEx - 3.571 Bytes [geknackt]
Ich ... werde ... mindestens ... eine ... ungerissene ... Vorlage haben. o \ __ / o
Löst sich auf praktisch jeder Saite sofort. Auf jeder JS-Konsole testbar.
+100 Wiederholungen für jeden, der dieses Biest knackt.
quelle
ThatWasActuallyFun
. Nicht-Spiel :,,;,;,,;,;;;,;,;,;;,,,,;,,,;,;;,,,,,,;;,,,,;;,;,,,;,;;;;,;;,;;,;,,;,,;,;;;,;,;,;;,,,;,;;;;,;,;;;,;,,;,,,;,,,,;,;;;;;;,,,,,;,;,;;;;;,;;;,;;,,,;;;,,;,;;,,,;,,,,,,;,;,,;;,,;;,,,;,;;,,,;,,;;,;,;,;;;;,,;,;,,;;;;;,,;,,;;,,;,,;;,,,,;,,;,,;;,;;;,,,,,;,,,,,,,,;,,,,
.PCRE - 96 Byte UTF8, keine Begrenzer, keine Flags
[Besiegt] weil Nneonneo ein Weiser ist
Hier gibt es nichts zu sehen, mach weiter ...
quelle
So just *SKIPthis one!
:; KeineThis string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is still not accepted. Snow leopards FTW.
Do just this one!
. Nicht-Spiel :WellThatWasTooEasy
. (Getestet mit Perl 5.12 und Perl 5.18 auf meinem Computer)JS-kompatibler RegEx - 733 Bytes [geknackt]
Versuchen wir es ein zweites Mal mit umgekehrten Metriken: einem massigen regulären Ausdruck, aber einem relativ kleinen Schlüssel (vor allem innerhalb der 256-Byte-Grenze).
Löst sich auf praktisch jeder Saite sofort. Getestet auf RegExr.
Erweitert (der Einfachheit halber):
Viel Glück an alle. ;)
quelle
aaaabaaacaaadaaa
cacdbbcabdeababcdedaacdeecacbdabcd
.NET-Geschmack, 60 Bytes [geknackt]
Getestet mit Regex Storm .
quelle
1234567890012345
. Nicht-Spiel:1111222233334444
.٠߀०০੦૦୦௦౦೦൦๐໐༠၀႐០᠐᥆᧐᭐᮰᱀᱐꘠꣐꤀꩐0
Das sind also alle Ziffern in .NET ...Python-Geschmack: 211 Bytes [geknackt]
Hinweis: Diese Antwort wurde vor der Regeländerung zur maximalen Schlüssellänge veröffentlicht
Dachte, ich würde den Ball ins Rollen bringen:
(Getestet auf RegExr )
quelle
JS-kompatibler RegEx - 12.371 Bytes [geknackt]
Nach einiger Ermutigung von Martin, und zu sehen , dass andere Cops glücklich 600+ KB Regexes einreichen, entschied ich mich mit dem Sprung noch einmal zu übernehmen diesem (und prettified Version hier ).
Löst sich auf praktisch jeder Saite sofort. Auf jeder JS-Konsole testbar. Leider ist es aufgrund seiner Größe für viele Online-Regex-Tester nicht überprüfbar.
quelle
this was not NP-hard
. Non-Match :nerdnydeprdoypoypwwwdprelwsprwssddayaeeeysyaaaypowroplsaoprdaolasnoylaeaeadeosladnnosyoywyesorlrydwddadoeyponneeyaaapesenaalnneydaewndplredlerwaawlnrssapapaopnrdwnslowdoanlrernpwyyarpprwnrssdlaopsnnrnnnardpaessldalroleswnnooarlpllasapsesaorardwreylayrr
.NET-Geschmack, 458 Bytes [geknackt]
Dieser ist einfach. Aber ich werde später einen härteren Beitrag schreiben.
Ich denke, ich bin der kryptografisch sicheren Antwort ziemlich nahe.
Auf RegexStorm getestet .
quelle
1100101001,1100111011
. Non-Match :ThatsWhatIWantedToDo,Nice
JS-kompatibler RegEx - 2.447 Bytes [geknackt]
Mein letzter Versuch.
Ich hoffe, dass dies mindestens ein paar Stunden dauert, bevor es geknackt wird. Danach gebe ich auf. : P
Wie alle vorherigen Übermittlungen wird es sofort aufgelöst. Im Gegensatz zu früheren Einsendungen ist es für RegExr zu lang.
Erweitert:
quelle
aaaabaaacaaadaaa
. Nicht-Spiel:fdeacdbfbdcadaafdadcfdddfdbffeccbdecaaebfdfcfecbbfad
.(.)
durch das passende Zeichen und sortieren Sie es nach diesem Zeichen.Python-Geschmack (721 Bytes) [geknackt]
Es ist Zeit für "Parsing Problem v2":
Getestet auf Regex101 .
quelle
\ZRZTE[1LblHRKl3]?sHcKePT(7tvAE1K4r[zZTE[1LblHRKl3]?sHcKePT(7tvAE1K4rFxRzr
Streichhölzer.a
passt nicht?
durch ein beliebiges Zeichen in(?(1)Q)
?
‚sPython-Geschmack (4842 Bytes) [geknackt]
Vielen Dank an @COTO für Ideen und Ratschläge
Ich mochte @ COTOs 3-SAT-Idee so sehr, dass ich dachte, ich würde versuchen, meine eigene Regex daraus zu machen. Ich bin mit der Theorie von 3-SAT allerdings nicht so vertraut, deshalb werde ich nur zu den RNG-Göttern beten und hoffe, dass ich genug Einschränkungen habe.
Ich habe versucht, den regulären Ausdruck unter 5000 Zeichen zu halten, um fair zu sein - offensichtlich wären längere reguläre Ausdrücke nicht zu knacken, aber es würde auch keinen Spaß machen, sie zu knacken.
Und hier ist es in einer Form, die ein bisschen leichter zu lesen ist:
Getestet auf Regex101 .
quelle
x
. Non-Match:0011001101000000000111010001101101011000010011011010000000010001011111000100010000
aaaabaaacaaadaaa
. Nicht übereinstimmend:011100110010001010111101001010010011110010011010110101010001101100101111111111
+0000
. Nur ein paar Sekunden langsamer ...Perlgeschmack, 133 [geknackt]
Okay, dieser sollte schwerer zu brachialisieren sein:
Und eine längere Version, die nicht Teil der Herausforderung ist:
Kann mit Regex101 (PCRE-Geschmack) getestet werden .
quelle
{16,20}
.aaaaa,aaaaaa,aaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
a
aus irgendeinem Grund zusätzliche s hinzu -a
zwischen den Kommas sollten 5,6,7,85,36,91,18 s stehen: /a
s sind alle ASCII-Zeichen, aber für jeden manuellen Zeilenumbruch, den SE durchführt, gibt es zwei nicht druckbare Unicode-Zeichen..NET-Geschmack, 141 Bytes [geknackt]
Noch einer für die Räuber! Ich bin sicher, dass dies geknackt wird, aber ich hoffe, dass die Person, die es knackt, dabei etwas Interessantes über die .NET-Variante erfährt.
Getestet mit RegexStorm und RegexHero .
quelle
[][][][][][][][]a][][][][][][][][
. Non-Match:That's interesting...
Python-Geschmack (200127 Bytes) [geknackt]
Nur damit wir (hoffentlich) einen Tag lang etwas sehen können, ist es Zeit, die großen Waffen herauszubringen :)
Das Problem bei 3-SAT- und Hamilton-Pfaden ist, dass die Komplexität in Bezug auf die Schlüsselgröße besteht. Dieses Mal habe ich etwas gewählt, das eher vom Regex als vom Schlüssel abhängt.
Hier ist es: Regex . Sie könnten diese Datei auch nützlich finden. (Keine Sorge, ich habe diesmal nichts Verrücktes darin versteckt;))
Ich habe RegexPlanet verwendet , um dieses zu testen - es war schwierig, etwas zu finden, das keine Zeitüberschreitung verursachte : /. Um zu überprüfen, ob eine Übereinstimmung vorliegt, prüfen Sie, ob Ihre Zeichenfolge unter angezeigt wird
findall()
.Viel Glück!
quelle
d,mE~JZ0,_:3kBdLdgBSzJ!@MLrrAgKsf@Pl35N9bxsIf@ReVU>:YDg`d1MjL@_-
. Non-Match:{ line|fold -w1 >filea; while line >filec; do fold -w1 <filec >fileb; diff -d --old-line-format= --new-line-format= --unchanged-line-format=%L filea fileb >filec;mv filec filea;done;cat filea;} <file1|tr -d $'\n'|head -c64;echo
Python, 145475 Bytes [geknackt]
Vielen Dank an den Wumpus, der mir beigebracht hat, wie wichtig es ist, unsere Indizes zu überprüfen :)
Gleicher Deal wie die letzte Lösung, nur hoffentlich diesmal nicht kaputt. Raw Regex: http://pastebin.com/MReS2R1k
EDIT: Es war nicht kaputt, aber anscheinend war es immer noch zu einfach. Zumindest wurde es nicht "sofort" gelöst;)
quelle
1040060321170122554027333022674205250442151362365165773421664173556667110413375720720711725045122733213710556062114131057357354554245723416516004761215632214223735570625116160162051407026445600345370604702671021412723536217011007021752560474402200436670402
Match:minisat2hoursCPU
Java Pattern / Oracle-Implementierung (75 Zeichen / 150 Byte UTF-16) [geknackt]
(Codename: Schlechter Kaffee 101)
Dies ist das
Pattern
Objekt mit demCANON_EQ
Flag, mit dem verwendet werden sollmatches()
(impliziter Anker):Testen Sie Ihren Schlüssel hier auf ideone
Es ist garantiert ein Schlüssel. Lesen Sie den Spoiler, wenn Sie eine Bestätigung wünschen.
Dies macht Gebrauch von 4 Fehlern
CANON_EQ
:, Beibehaltung des erfassten Textes von fehlgeschlagenem Versuch, verlorener Zeichenklasse und Quantifiziererüberlauf.quelle
"(?:e\u0302\u0301\\|\u00ea\u0301\\|\u1ebf\\|\u00ea\\\u0301|e\u0302\\\u0301|\u00ea\\\u0301|\u00ea\u0301\\|\u1ebf\\|e\\\u0302\u0301)\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00"
(zitierte Form). Nicht-Spiel :JavaRegexSoBuggy
. ideone for match: ideone.com/DEesdkCANON_EQ
Erweitert vorkomponierte Charaktere intern zu Abwechslungen, die im Inneren auf lustige Weise unterbrochen werden\Q\E
. (2) Wiederholungslängen werden auf 32 Bits gekürzt; (3) Mit dem Zeichenklassen-Matcher ist etwas Seltsames los, das dazu führt, dass der Wechsel übersprungen wird (ich habe nicht genau herausgefunden, was der Fehler genau war).\1
Bug vergessen . Und ja, es gibt einen Fehler in der Charakterklasse. Wie haben Sie das alles in weniger als 2 Stunden herausgefunden?.NET-Geschmack, 17.372 Bytes [geknackt]
Dies ist immer noch eine einfache Version.
Um mit längeren Zeichenfolgen arbeiten zu können, ist mehr Optimierung erforderlich.Der reguläre Ausdruck ist hier: http://pastebin.com/YPE4zyBB
Ungolfed: http://pastebin.com/PLJp0KhF
Getestet mit RegexStorm und diesem Blog und RegExLib (alle Optionen deaktiviert ).
quelle
Ľê¯6Aĝ4aþĀ,lŃŝĿBİŢŞĩï
(entkommen:)\u013d\xea\xaf6A\u011d4a\xfe\u0100,l\u0143\u015d\u013fB\u0130\u0162\u015e\u0129\xef
. Non-Match :VeryNiceMultiplier
ECMAScript-Geschmack, 30 Bytes [geknackt]
Hier ist eine ziemlich einfache für die Räuber zu knacken. Es ist konzeptionell nicht allzu schwierig, erfordert jedoch möglicherweise ein wenig Recherche (oder Skripterstellung). Ich habe nicht vor, mich in der Rangliste aufzulisten, aber wenn jemand es innerhalb von 72 Stunden knackt, zählt dies für die Punktzahl seines Räubers.
Getestet auf Regex101 und RegExr mit Chrome.
Nun, das ging schnell!
quelle
wqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBnw==
aaaabaaacaaadaaa
.*
im Lookahead vergessen . Guter Fang. Sollte gründlicher getestet haben.Rubinrot , 24 Bytes [geknackt]
quelle
[]\\[]
;))soylentgreenispeople
. Match verfügbar unter rubular.com/r/TCqjcaGsU1 hier nicht gepostet, da das Kommentarsystem lange Wörter verarbeitet.PHP, 168 Bytes [geknackt von nneonneo ]
Hier ist eine Regex-Demo .
PS Dieses Spiel ist schwer.
quelle
\1?!($!?)?!(?=(?1))!?
. Non-Match :IncrementalRegexTestingWorks
PCRE (1043 Bytes) [geknackt]
Nachdem zufällig generierte reguläre Ausdrücke versagt haben (die Ideen waren gut, aber ich konnte keine angemessenen Probleminstanzen generieren), habe ich beschlossen, diese manuell zu erstellen. Ich nenne es "Eine ganze Menge Regeln, die es zu befriedigen gilt".
Und erweitert:
Getestet auf Regex101 - abhängig von Ihrem Computer müssen Sie möglicherweise die maximale Ausführungszeit erhöhen .
quelle
[((({.[.[](){{}{].{.(({){(.[]()....}}].{{[[....).[..]()(}..[..]([....(([{((({).](){.{}{}{}....}[[()[}}][{{[({[[[.]]}()]].{}.]{[..]{.[]]}}}())))(())[(.].{[.{[[..[()].()}{{.[...[}{.]..)]...{.])))).}}..([......{.....[.]}[...}.{[.}...}})}.))).]}}]]]}]]].)]]..}
. Nicht-Spiel:WhatANastySetOfRulesYouHave
.(?=(.*\[.*\(.*\{){5,9}.*)
, müssen Sie die maximale Ausführungszeit (gleiches Ergebnis) nicht erhöhen - die Übereinstimmungen sind sofortig..NET-Flavor (7563 Byte) [geknackt]
Inspiriert von der Idee von @ user23013
Wir können einfach nicht genug NP-vollständige Probleme haben! Hier ist die erweiterte Version:
Getestet auf Regex Hero (Regex Storm läuft in diesem Fall aus).
quelle
01111111111111111111111011001111111111011111111111111111111101111111111
11111111111111111111011111111000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000
(diese Leerzeichen entfernen). Nicht-Spiel:KnapsackAlgorithm
. Es ist nicht einfach, Silverlight auf meinem Ubuntu-Computer zu installieren. Aber das hat bei einem anderen Tester funktioniert..NET-Variante (52506 Byte)
Teilmenge Summe, Deluxe Edition.
Regex hier , erweiterte Version hier , getestet auf RegExLib und Regex Hero
quelle
.NET-Version, 53.884 Byte [sicher]
Erstellt von GnuPG! Und durch pgpdump extrahiert. Es ist 1536 Bit, da längere Versionen auf dem Online-Tester fehlgeschlagen sind.
Der reguläre Ausdruck ist hier: http://pastebin.com/PkJnj9ME
Getestet am RegExLib (ohne ausgewählte Optionen). Ich hoffe, ich habe ihnen nicht zu viel Ärger gemacht.
Sie wollen wahrscheinlich knacken zuerst die einfache Version . Es ist dasselbe wie dieses, außer dass es einen viel kürzeren Schlüssel gibt.
Sie möchten wahrscheinlich auch diese Nummer:
Der Schlüssel
Spiel:
Nicht übereinstimmend:
Die Primzahlen:
Erklärung ist in der einfachen Version .
Das Generator-Skript (in CJam)
Die Eingabe sollte die oben angegebene Zahl sein.
Nachdem Sie fertig sind, kann die Lösung von diesem Programm generiert werden:
Die Eingabe sollte aus zwei ganzen Zahlen bestehen.
quelle
PHP, 395 Bytes [geknackt von nneonneo ]
Ein besseres Puzzle als mein letzter Eintrag.
Hinweis: Der übereinstimmende Schlüssel ist mehrzeilig, wobei jede Zeile durch das neue Zeilenzeichen getrennt ist
\n
. Erstellen Sie einige ASCII-Grafiken neu!Hier ist eine Regex-Demo .
quelle
202e272d207768616c650a2d3a3a2e2f202f205f2e27273a2e0a2d3a2c2020285f5f2e2e27602020205c0a2020205c202020202020202020202e207c0a602c2e5f5f2e2020202c5f5f2e27272f0a2020202020202d2e5f2f5f2e2d5f5f5f2e2d
(hexadezimal codiert). Nicht-Spiel :IDon'tThinkIGotTheRightPicture
. Proof-Arbeitsbereich: regex101.com/r/gF9pU0/1.-'
zu Beginn getauscht.'-
. Ersteres ist im Nachhinein für die ASCII-Kunst viel plausibler;)Perlgeschmack, 97 [geknackt]
Ich befürchte, dass dies aufgrund der Schlüssellängenbeschränkung zu einfach sein wird.
Wenn Sie glauben, die Idee dahinter zu haben, probieren Sie die längere Version (nicht Teil der Herausforderung):
quelle
aaaaaaa,a,aa,aaa,aaaaaaa
. Nicht-Spiel:aaaabaaacaaadaaa
.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,a,aa,
(diese Zeichenaaaa,aaaaaaa,aaaaaaaa,aaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaa,
entfernen ) (diese Zeichen entfernen)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
. Non-Match:aaaabaaacaaadaaa
(remove these characters)
.)