Uwaga : to wyzwanie jest teraz zamknięte. Wszelkie przyszłe zgłoszenia gliniarzy nie będą brane pod uwagę dla zaakceptowanej odpowiedzi. Ma to na celu zagwarantowanie, że nikt nie będzie w stanie opublikować bardzo prostego wyrażenia regularnego w przyszłości, który pozostaje tylko bez crackowania, ponieważ nikt nie jest już zainteresowany wyzwaniem.
Wyzwanie gliniarzy
Masz napisać krótki, zaciemniony regex spełniający następującą specyfikację:
Możesz wybrać dowolny smak, który można swobodnie testować online. Na StackOverflow znajduje się dobra lista testerów online . W szczególności Regex101 powinien być dobry na początek, ponieważ obsługuje smaki PCRE, ECMAScript i Python. W razie potrzeby możesz zwiększyć limit czasu, klikając klucz w prawym górnym rogu. W odpowiedzi podaj testera, który wybierzesz.
Jeśli nie jest dostępny odpowiedni tester dla twojego gustu , możesz również skorzystać z tłumacza internetowego, takiego jak ideone, i napisać mały skrypt w języku hosta, którego ludzie mogą użyć do przetestowania twojego zgłoszenia.
- Możesz użyć dowolnej funkcji tego smaku, która nie wywołuje bezpośrednio języka hosta (jak funkcje oceny kodu Perla).
- Podobnie, możesz użyć dowolnych modyfikatorów (jeśli twój smak je ma), chyba że powodują one ocenę kodu.
- Wyrażenie regularne musi zaakceptować co najmniej jeden ciąg S i odrzucić co najmniej jeden ciąg T , z których każdy ma co najmniej 16 i nie więcej niż 256 znaków, w rozsądnym czasie (nie znacznie dłuższym niż minuta). S i T mogą zawierać znaki Unicode, które nie są ASCII, o ile istnieje sposób, aby wprowadzić je do testera online. Każda taka para ciągów będzie kluczem do przesłania.
- Wyrażenie regularne może zająć dowolnie długo dowolne inne dane wejściowe.
Podstawą wyzwania jest stworzenie wyrażenia regularnego, którego klucz jest trudny do znalezienia. Oznacza to, że albo trudno będzie stwierdzić, który ciąg nie pasuje, albo który pasuje do niego (lub potencjalnie nawet oba, jeśli wyrażenie regularne zajmuje dni na wszystkich oprócz ciągów klucza).
Wyzwanie rabusiów
Wszystkich użytkowników, w tym tych, którzy przesłali własne wyrażenia regularne, zachęca się do „łamania” innych zgłoszeń. Zgłoszenie jest łamane, gdy jeden z jego kluczy jest publikowany w powiązanej sekcji komentarzy.
Ważne: Upewnij się, że oba napisane ciągi zawierają od 16 do 256 znaków włącznie, nawet jeśli dla jednej części klucza można użyć prawie dowolnego łańcucha.
Jeśli przesłanie trwa 72 godziny bez modyfikacji lub złamania, autor może ujawnić prawidłowy klucz, edytując go w spoiler-tag w swojej odpowiedzi. To sprawi, że jego odpowiedź będzie „bezpieczna”, tj. Nie da się jej już złamać.
Dozwolona jest tylko jedna próba krakowania na zgłoszenie na użytkownika Na przykład, jeśli prześlę do użytkownika X: „Twój klucz to 0123456789abcdef
/ fedcba9876543210
”. i mylę się, użytkownik X zignoruje moje przypuszczenie, że jest niepoprawne i nie będę już mógł przesyłać dodatkowych zgadnięć dla tego przesłania, ale nadal mogę złamać inne zgłoszenia (a inni nadal mogą złamać to zgłoszenie).
Zgłoszone zgłoszenia są eliminowane ze sporów (pod warunkiem, że nie są „bezpieczne”). Nie należy ich edytować ani usuwać. Jeśli autor chce przesłać nowe wyrażenie regularne, powinien to zrobić w osobnej odpowiedzi.
Nie łam się własnemu zgłoszeniu!
Uwaga: W przypadku długich ciągów w komentarzach bez spacji SE wstawia ręczne łamanie wiersza w postaci dwóch znaków Unicode. Jeśli więc umieścisz klucz w backtiksie, który jest tak długi, że zawija się między znakami spacji, nie będzie możliwe skopiowanie klucza z powrotem do testera wyrażenia regularnego. W takim przypadku prosimy o podanie bezpośredniego odnośnika do testera wyrażenia regularnego z wyrażeniem regularnym policjanta i kluczem - większość testerów ma tę funkcję.
Punktacja
Wynik gliniarza będzie miał wielkość wyrażenia regularnego w bajtach (wzorzec plus modyfikatory, potencjalne ograniczniki nie są liczone), pod warunkiem, że nie został złamany. Zwycięży najniższy wynik „bezpiecznego” zgłoszenia.
Wynik rabusia to liczba zgłoszeń, które złamali. W przypadku remisu całkowity rozmiar bajtów przesłanych przez nich zgłoszeń zostanie wykorzystany jako remis. Tutaj wygrywa najwyższa liczba bajtów.
Jak wspomniano powyżej, każdy policjant może uczestniczyć jako złodziej i na odwrót.
Będę utrzymywać osobne tabele wyników dla dwóch części wyzwania.
Liderów
Ostatnia aktualizacja: 19/10/2014, 20:33 UTC
Gliny
Przesyłanie kursywą nie jest jeszcze bezpieczne.
- nneonneo , 841 bajtów
- Wumpus Q. Wumbley , 10602 bajtów
- Sp3000 , 52 506 bajtów
- user23013 , 53,884 bajtów
- nneonneo , 656,813 bajtów
Rabusie:
- user23013 krakingowych 11, powierzchnia: 733 + 30 + 2.447 + 71 + 109 + 121 + 97 + 60 + 141 + 200,127 + 7,563 = 211,499 bajtów
- nneonneo , Pęknięty: 10, Całkowity rozmiar: 4842 + 12371 + 150 + 3571 + 96 + 168 + 395 + 1043 + 458 + 1782 = 40 466 bajtów
- Wumpus Q. Wumbley , Cracked: 6, Total Size: 22 + 24 + 158 + 32 + 145 245 + 145 475 = 290 956 bajtów
- Dennis , Cracked: 2, Total Size: 70 + 73 = 143 bajtów
- harius , Cracked: 1, Total Size: 9998 bytes
- g. gniazdo , pęknięty: 1, całkowity rozmiar: 721 bajtów
- stokastic , Cracked: 1, Total Size: 211 bytes
- Sp3000 , pęknięty: 1, całkowity rozmiar: 133 bajty
- TwiNight , Pęknięty: 1, Całkowity rozmiar: 39 bajtów
źródło
Odpowiedzi:
Wyrażenie regularne .NET, 841 bajtów [Bezpiecznie!]
Teraz, gdy mam bezpieczny wpis, zobaczmy, jak mały mogę zrobić wyrażenie regularne!
Prettified :
Cechy:
Dzięki Sp3000 i user23013 za włożenie mnie do wyrażenia regularnego .NET.
Po 72 godzinach ujawniam klucz, aby uczynić to przesyłanie bezpiecznym.
Dopasuj :
Brak dopasowania :
Aren'tHashFunctionsFun?
Wyjaśnienie:
źródło
(?<a>){53}
. Wygląda na to, żea
53 razy przechwytuje pusty wzór w nazwanej grupie . Więc ustaw,a=""
a następnie powtórz 52 razy jeszcze? Ale tak naprawdę nie wiem, czy(?<
to oznacza to samo w pomyśle Microsoftu wyrażenia regularnego. Ich dokumentacja nawet o tym nie wspomina . Jeśli nawet konkurs wyrażeń regularnych kończy się z nieudokumentowanymi rozszerzeniami Microsoftu przewijającymi się przez ludzi uniksowych, moje istnienie nie ma sensu.(?<a>){53}
przepycha pusty ciąg 53 razy. Możesz przebić stos za pomocą(?<-a>)
. Mam nadzieję, że teraz jest jasne, dlaczego ten konstrukt jest tak przydatny.Basic Regex, 656813 bajtów [bezpieczny!]
Wyrażenie regularne kończące wszystkie wyrażenia regularne. Ostatni huragan w noc.
Testowany w PCRE, Perl, Python i wielu innych.
Wersja bzip2'd i kodowana base64 na Pastebin: http://pastebin.com/9kprSWBn (Pastebin nie chciał wersji surowej, ponieważ była zbyt duża).
Aby upewnić się, że otrzymasz poprawne wyrażenie regularne, możesz sprawdzić, czy jego skrót MD5 jest
lub sprawdź, czy zaczyna się od
i kończy się na
Klucz to wciąż ładne wygodne 256 bajtów.
Testowałem ten regex z Pythonem, ale zauważ, że ten regex nie używa żadnych specjalnych funkcji Pythona. Rzeczywiście, z wyjątkiem
(?:)
(jako mechanizmu grupowania), w rzeczywistości nie używa żadnych specjalnych cech żadnego silnika wyrażeń regularnych: tylko podstawowe klasy znaków, powtórzenia i zakotwiczenie. Dlatego powinien być testowalny w wielu silnikach wyrażeń regularnych.Cóż, właściwie wciąż mogę zwiększyć trudność, zakładając, że ktoś nie tylko natychmiast rozwiązuje mniejsze problemy ... ale zakładam, że ludzie będą mieli problemy z regexem 1 GB ...
Po 72 godzinach to zgłoszenie pozostanie bez krakowania! W związku z tym ujawniam teraz klucz do bezpiecznego przesłania. To pierwsze bezpieczne zgłoszenie po tym, jak ponad 30 zgłoszeń zostało złamanych przez wytrwałych rabusiów.
Dopasuj :
Massive Regex Problem Survives The Night!
Brak dopasowania :
rae4q9N4gMXG3QkjV1lvbfN!wI4unaqJtMXG9sqt2Tb!0eonbKx9yUt3xcZlUo5ZDilQO6Wfh25vixRzgWUDdiYgw7@J8LgYINiUzEsIjc1GPV1jpXqGcbS7JETMBAqGSlFC3ZOuCJroqcBeYQtOiEHRpmCM1ZPyRQg26F5Cf!5xthgWNiK!8q0mS7093XlRo7YJTgZUXHEN!tXXhER!Kenf8jRFGaWu6AoQpj!juLyMuUO5i0V5cz7knpDX0nsL
Wyjaśnienie Regex:
źródło
ECMAScript (10602 bajtów)
(Uwaga językowa: widzę wiele postów oznaczonych ruby, python lub cokolwiek innego, kiedy tak naprawdę nie używają żadnych funkcji specyficznych dla języka. Ta wymaga tylko
(?!...)
i(?=...)
oprócz POSIX ERE z odnośnikami wstecznymi. Te funkcje są prawdopodobnie w silnik regexp twojego ulubionego języka, więc nie zniechęcaj się do podjęcia wyzwania, ponieważ zdecydowałem się użyć testera online javascript).Trochę zabawy, nie tak trudne obliczeniowo, jak niektóre inne.
Przetestuj tutaj: http://regex101.com/r/kF2oQ3/1
(świerszcze ćwierkają)
Brak chętnych? Dziwnie rozczarowuje myśl o umieszczeniu spoilera bez dowodów, że ktoś spojrzał na niego wystarczająco długo, aby zrozumieć, jaki to jest problem.
Piszę pełne wyjaśnienie, aby opublikować później, ale myślę, że byłbym szczęśliwszy, gdyby ktoś mnie pokonał.
Kiedy powiedziałem, że nie jest to „trudne obliczeniowo” ... jest to przykład problemu NP-zupełnego, ale nie duży .
Wskazówka: to rodzaj układanki ołówkowej i papierowej. Byłbym jednak pod wrażeniem, jeśli potrafisz rozwiązać ten problem tylko za pomocą ołówka i papieru (po zdekodowaniu wyrażenia regularnego do postaci odpowiedniej do drukowania).
Czas spoilera
Jest tu wiele poziomów spoilerów. Jeśli nie rozwiązałeś jeszcze wyrażenia regularnego, możesz spróbować ponownie po przeczytaniu pierwszego bloku spoilera. Rzeczywisty klucz pasujący do wyrażenia regularnego znajduje się po ostatnim bloku spoilera.
Druga warstwa psucia się:
Ostatnia warstwa psucia się:
Brak dopasowania:
bananabananabanana
dopasowanie:
Ɯ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ЏʘƜ
dowód: http://regex101.com/r/pJ3uM9/2
źródło
Perl o smaku 158 [pęknięty]
Oto moja pierwsza próba:
Przetestuj na ideone.com
źródło
j'k3j'kj'k3j'kj'kj'k3j'k3j'kj'k3j'kj'kj'k3R-k-<grc>-j'k<grc>-j'k$j'k-k-
Non-match:HOLYCRAPTHATWASEVIL
(mecz dostępny na ideone.com/pXaGaX jako dowód)[^_^]
(-.-)
(?|...)
jest trudne, ale jest udokumentowane. Zobacz fragmentperlre
zaczynający się odBe careful when using the branch reset pattern in combination with named captures.
Trik polega na tym, że grupy, które mają ten sam numer, ale różne nazwy są tą samą grupą , podczas gdy grupy, które mają tę samą nazwę, ale różne liczby, są różnymi grupami .Smak JS, 9998 bajtów [pęknięty]
Testowane na Regex101
Rozwiązanie, które wygenerowałem:
źródło
M
doŇ
. Mathematica ma funkcjęFindHamiltonianCycle
. Możemy przekształcić cyklu, które przechodząŇ -> M
przez dodanie nowego krawędź i łączeniaŇ
iM
przez nią. Na szczęście Mathematica natychmiast znajduje taki cykl. :)RegEx kompatybilny z JS - 3571 bajtów [pęknięty]
Ja ... będę ... miał ... przynajmniej ... jedno ... niezłapane ... poddanie się. o \ __ / o
Natychmiast rozwiązuje praktycznie każdy ciąg. Testowany na dowolnej konsoli JS.
+100 powtórzeń do każdego, kto złamie tę bestię.
źródło
ThatWasActuallyFun
. Non-match :,,;,;,,;,;;;,;,;,;;,,,,;,,,;,;;,,,,,,;;,,,,;;,;,,,;,;;;;,;;,;;,;,,;,,;,;;;,;,;,;;,,,;,;;;;,;,;;;,;,,;,,,;,,,,;,;;;;;;,,,,,;,;,;;;;;,;;;,;;,,,;;;,,;,;;,,,;,,,,,,;,;,,;;,,;;,,,;,;;,,,;,,;;,;,;,;;;;,,;,;,,;;;;;,,;,,;;,,;,,;;,,,,;,,;,,;;,;;;,,,,,;,,,,,,,,;,,,,
.PCRE - 96 bajtów UTF8, bez ograniczników, bez flag
[Pokonany], ponieważ Nneonneo jest mądrym facetem
Nic tu do oglądania, ruszać się...
źródło
So just *SKIPthis one!
; Bez meczu: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 not accepted. This string is still not accepted. Snow leopards FTW.
Do just this one!
. Non-match :WellThatWasTooEasy
. (Testowane z Perlem 5.12 i Perlem 5.18 na mojej maszynie)RegEx zgodny z JS - 733 bajtów [pęknięty]
Spróbujmy to drugi raz z odwróconymi wskaźnikami: potężne wyrażenie regularne, ale stosunkowo niewielki klucz (co najważniejsze, w granicach 256 bajtów).
Natychmiast rozwiązuje praktycznie każdy ciąg. Testowane na RegExr.
Rozszerzony (dla wygody):
Powodzenia dla wszystkich. ;)
źródło
aaaabaaacaaadaaa
cacdbbcabdeababcdedaacdeecacbdabcd
Smak .NET, 60 bajtów [pęknięty]
Testowane z Regex Storm .
źródło
1234567890012345
. Non-match:1111222233334444
.٠߀०০੦૦୦௦౦೦൦๐໐༠၀႐០᠐᥆᧐᭐᮰᱀᱐꘠꣐꤀꩐0
Więc wszystkie są uważane za cyfry w .NET ...Smak Pythona: 211 bajtów [pęknięty]
Uwaga: Ta odpowiedź została opublikowana przed zmianą reguły dotyczącej maksymalnej długości klucza
Pomyślałem, że sprawię, że piłka się potoczy:
(Testowane na RegExr )
źródło
RegEx kompatybilny z JS - 12 371 bajtów [pęknięty]
Po pewnej zachęcie ze strony Martina i widząc, że inni gliniarze z radością przesyłają ponad 600 KB wyrażeń regularnych, postanowiłem raz jeszcze rzucić okiem na tę (i tutaj prettified) wersję .
Natychmiast rozwiązuje praktycznie każdy ciąg. Testowany na dowolnej konsoli JS. Niestety rozmiar sprawia, że jest on nie do przetestowania przez wielu internetowych testerów wyrażeń regularnych.
źródło
this was not NP-hard
. Non-match :nerdnydeprdoypoypwwwdprelwsprwssddayaeeeysyaaaypowroplsaoprdaolasnoylaeaeadeosladnnosyoywyesorlrydwddadoeyponneeyaaapesenaalnneydaewndplredlerwaawlnrssapapaopnrdwnslowdoanlrernpwyyarpprwnrssdlaopsnnrnnnardpaessldalroleswnnooarlpllasapsesaorardwreylayrr
Smak .NET, 458 bajtów [pęknięty]
Ten jest łatwy. Ale później opublikuję trudniejszy.
Myślę, że jestem blisko kryptograficznie bezpiecznej odpowiedzi.
Testowane na RegexStorm .
źródło
1100101001,1100111011
. Non-match :ThatsWhatIWantedToDo,Nice
RegEx zgodny z JS - 2447 bajtów [pęknięty]
Moja ostatnia próba.
Mam nadzieję, że ten potrwa co najmniej kilka godzin przed pęknięciem. Po tym poddaję się. : P
Podobnie jak wszystkie poprzednie zgłoszenia rozwiązuje się natychmiast. W przeciwieństwie do poprzednich zgłoszeń, dla RegExr jest to zbyt długo.
Rozszerzony:
źródło
aaaabaaacaaadaaa
. Non-match:fdeacdbfbdcadaafdadcfdddfdbffeccbdecaaebfdfcfecbbfad
.(.)
na pasującą postać i posortuj według tej postaci, a stanie się to oczywiste.Smak Pythona (721 bajtów) [pęknięty]
Nadszedł czas na „Parsing Problem v2”:
Testowane na Regex101 .
źródło
\ZRZTE[1LblHRKl3]?sHcKePT(7tvAE1K4r[zZTE[1LblHRKl3]?sHcKePT(7tvAE1K4rFxRzr
mecze.a
nie pasuje?
zastąpionymi dowolną postacią(?(1)Q)
?
„sSmak Pythona (4842 bajty) [pęknięty]
Dzięki @COTO za pomysły i porady
Tak bardzo podobał mi się pomysł 3-SAT @ COTO, że pomyślałem, że spróbuję stworzyć na nim swój regex. Nie znam się jednak na teoretyce 3-SAT, więc po prostu pomodlę się do bogów RNG i mam nadzieję, że mam wystarczająco dużo ograniczeń.
Próbowałem utrzymać regex poniżej 5000 znaków, aby być sprawiedliwym - oczywiście dłuższe regexy byłyby niemożliwe do złamania, ale nie byłoby też fajnie.
A tutaj jest w formie, która jest nieco łatwiejsza do odczytania:
Testowane na Regex101 .
źródło
x
. Non-match:0011001101000000000111010001101101011000010011011010000000010001011111000100010000
aaaabaaacaaadaaa
. Brak dopasowania:011100110010001010111101001010010011110010011010110101010001101100101111111111
+0000
. Tylko kilka sekund wolniej ...Perl o smaku 133 [krakowany]
Okej, ta powinna być trudniejsza do brutalnej siły:
I dłuższa wersja, nie będąca częścią wyzwania:
Może być testowany na Regex101 (smak pcre).
źródło
{16,20}
.aaaaa,aaaaaa,aaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
a
z jakiegoś powodu ciągle dodaje dodatkowe s -a
między przecinkami powinno być 5,6,7,85,36,91,18 s: /a
Wszystkie są ASCII, ale istnieją dwa niedrukowalne znaki Unicode dla każdego ręcznego podziału wiersza SE.Smak .NET, 141 bajtów [pęknięty]
Kolejny dla złodziei! Jestem pewien, że zostanie to złamane, ale mam nadzieję, że osoba, która go złamie, dowie się czegoś interesującego na temat smaku .NET.
Testowane na RegexStorm i RegexHero .
źródło
[][][][][][][][]a][][][][][][][][
. Brak dopasowania:That's interesting...
Smak Pythona (200127 bajtów) [pęknięty]
Abyśmy (miejmy nadzieję) mogli zobaczyć coś trwałego dnia, nadszedł czas na wydobycie wielkich broni :)
Problem z 3-SAT i ścieżką Hamiltona polega na tym, że złożoność dotyczy wielkości klucza. Tym razem wybrałem coś, co zależy od wyrażenia regularnego, a nie od klucza.
Oto on: regex . Ten plik może być również przydatny. (Nie martw się, tym razem nie ukryłem niczego dziwnego;))
Użyłem RegexPlanet do przetestowania tego - trudno było znaleźć coś, co nie miałoby limitu czasu: /. Aby sprawdzić, czy było dopasowanie, sprawdź, czy Twój ciąg pojawia się pod
findall()
.Powodzenia!
źródło
d,mE~JZ0,_:3kBdLdgBSzJ!@MLrrAgKsf@Pl35N9bxsIf@ReVU>:YDg`d1MjL@_-
. Bez dopasowania:{ 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 bajtów [pęknięty]
Dzięki Wumpusowi za nauczenie mnie, jak ważne jest sprawdzanie naszych indeksów :)
Ta sama oferta jak w ostatnim rozwiązaniu, ale mam nadzieję, że tym razem nie zostanie zerwana. Raw regex: http://pastebin.com/MReS2R1k
EDYCJA: Nie była zepsuta, ale najwyraźniej wciąż była zbyt łatwa. Przynajmniej nie zostało rozwiązane „natychmiast”;)
źródło
1040060321170122554027333022674205250442151362365165773421664173556667110413375720720711725045122733213710556062114131057357354554245723416516004761215632214223735570625116160162051407026445600345370604702671021412723536217011007021752560474402200436670402
dopasowanie:minisat2hoursCPU
Implementacja wzorca Java / Oracle (75 znaków / 150 bajtów UTF-16) [pęknięty]
(Nazwa kodowa: Bad Coffee 101)
Jest to
Pattern
obiekt zCANON_EQ
flagą do użycia zmatches()
(domyślną kotwicą):Sprawdź swój klucz tutaj na ideone
Gwarantowany jest klucz. Przeczytaj spoiler, jeśli chcesz trochę potwierdzenia.
Wykorzystuje to 4 błędy:
CANON_EQ
przechwytywanie tekstu zatrzymania nieudanej próby, utratę klasy postaci i przepełnienie kwantyfikatora.źródło
"(?: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"
(formularz cytowany). Non-match :JavaRegexSoBuggy
. ideone na mecz: ideone.com/DEesdkCANON_EQ
rozszerza postacie nieskomponowane wewnętrznie na przemian wewnętrznie, które w zabawny sposób pękają wewnątrz\Q\E
; (2) długości powtórzeń są skracane do 32 bitów; (3) w dopasowaniu klasy postaci dzieje się coś dziwnego, co powoduje, że przeskakuje na przemian (nie do końca wiedział, co to dokładnie był błąd).\1
błędu wstecznego . I tak, w klasie postaci jest błąd. Jak wymyśliłeś to wszystko w mniej niż 2 godziny?.NET flavour, 1782 bajtów [pęknięty]
To wciąż łatwa wersja.
Potrzebuje większej optymalizacji do pracy z dłuższymi łańcuchami.Wyrażenie regularne znajduje się tutaj: http://pastebin.com/YPE4zyBB
Niegolfowany: http://pastebin.com/PLJp0KhF
Testowane na RegexStorm oraz na tym blogu i RegExLib (bez zaznaczonych wszystkich opcji).
źródło
Ľê¯6Aĝ4aþĀ,lŃŝĿBİŢŞĩï
(uciekł:)\u013d\xea\xaf6A\u011d4a\xfe\u0100,l\u0143\u015d\u013fB\u0130\u0162\u015e\u0129\xef
. Non-match :VeryNiceMultiplier
ECMAScript smak, 30 bajtów [pęknięty]
Oto dość prosty sposób na złodziei. Jest to koncepcyjnie niezbyt trudne, ale może wymagać trochę badań (lub skryptów). Nie zamierzam umieszczać się na liście liderów, ale jeśli ktoś złamie go w ciągu 72 godzin, będzie to wliczone do wyniku rabusia.
Testowane na Regex101 i RegExr przy użyciu Chrome.
Cóż, to było szybkie!
źródło
wqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBnw==
aaaabaaacaaadaaa
.*
tym z wyprzedzeniem. Dobry chwyt Powinienem był przetestować dokładniej.O smaku rubinowym , 24 bajtów [pęknięty]
źródło
[]\\[]
;))soylentgreenispeople
. Mecz dostępny na rubular.com/r/TCqjcaGsU1, nie zamieszczony tutaj, ponieważ system komentarzy obsługuje długie słowa.PHP, 168 bajtów [cracked przez nneonneo ]
Oto demo wyrażenia regularnego .
PS Ta gra jest trudna.
źródło
\1?!($!?)?!(?=(?1))!?
. Non-match :IncrementalRegexTestingWorks
PCRE (1043 bajty) [pęknięty]
Po tym, jak zawiodły mnie losowo generowane wyrażenia regularne (pomysły były dobre, ale nie mogłem wygenerować odpowiednich przypadków problemów), zdecydowałem się stworzyć ten ręcznie. Nazywam to „mnóstwem zasad do spełnienia”.
I rozszerzył:
Testowany na Regex101 - w zależności od komputera może być konieczne zwiększenie maksymalnego czasu wykonania.
źródło
[((({.[.[](){{}{].{.(({){(.[]()....}}].{{[[....).[..]()(}..[..]([....(([{((({).](){.{}{}{}....}[[()[}}][{{[({[[[.]]}()]].{}.]{[..]{.[]]}}}())))(())[(.].{[.{[[..[()].()}{{.[...[}{.]..)]...{.])))).}}..([......{.....[.]}[...}.{[.}...}})}.))).]}}]]]}]]].)]]..}
. Non-match:WhatANastySetOfRulesYouHave
.(?=(.*\[.*\(.*\{){5,9}.*)
, nie będziesz musiał zwiększać maksymalnego czasu wykonania (ten sam wynik) - dopasowania będą natychmiastowe.Smak .NET (7563 bajtów) [pęknięty]
Zainspirowany pomysłem @ user23013
Po prostu nie możemy mieć wystarczającej liczby problemów z NP! Oto rozszerzona wersja:
Testowane na Regex Hero (limit czasu Regex Storm dla tego).
źródło
01111111111111111111111011001111111111011111111111111111111101111111111
11111111111111111111011111111000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000
(usuń te spacje). Non-match:KnapsackAlgorithm
. Nie jest łatwo zainstalować Silverlight na moim komputerze Ubuntu. Ale działało to na innym testerze.Smak .NET (52506 bajtów)
Suma częściowa, edycja Deluxe.
Regex tutaj , tutaj wersja rozszerzona , testowana na RegExLib i Regex Hero
źródło
Smak .NET, 53 884 bajtów [bezpieczny]
Wygenerowane przez GnuPG! I wyodrębnione przez pgpdump. Jest to 1536 bitów, ponieważ dłuższe wersje zawiodły w testerze online.
Wyrażenie regularne znajduje się tutaj: http://pastebin.com/PkJnj9ME
Testowane na RegExLib (bez wybranych opcji). Mam nadzieję, że nie sprawiłem im zbyt wiele problemów.
Prawdopodobnie chcesz najpierw złamać łatwą wersję . Jest taki sam jak ten, z wyjątkiem tego, że ma znacznie krótszy klucz.
Prawdopodobnie chcesz również ten numer:
Klucz
Mecz:
Brak dopasowania:
Liczby pierwsze:
Wyjaśnienie jest w prostej wersji .
Skrypt generatora (w CJam)
Dane wejściowe powinny być powyższą liczbą.
Po zakończeniu rozwiązanie może zostać wygenerowane przez ten program:
Dane wejściowe powinny mieć dwie liczby całkowite.
źródło
PHP, 395 bajtów [cracked przez nneonneo ]
Lepsza układanka niż mój ostatni wpis.
Uwaga: Klucz dopasowania jest wielowierszowy, a każda linia jest oddzielona znakiem nowej linii
\n
. Odbuduj trochę sztuki ASCII!Oto demo wyrażenia regularnego .
źródło
202e272d207768616c650a2d3a3a2e2f202f205f2e27273a2e0a2d3a2c2020285f5f2e2e27602020205c0a2020205c202020202020202020202e207c0a602c2e5f5f2e2020202c5f5f2e27272f0a2020202020202d2e5f2f5f2e2d5f5f5f2e2d
(kodowane szesnastkowo). Non-match :IDon'tThinkIGotTheRightPicture
. Proof workspace: regex101.com/r/gF9pU0/1.-'
na początku zamieniłem.'-
. Z perspektywy czasu ta pierwsza jest znacznie bardziej prawdopodobna dla sztuki ASCII;)Perl smak, 97 [krakowany]
Obawiam się, że będzie to zbyt łatwe ze względu na limit długości klucza.
Jeśli uważasz, że wymyśliłeś ten pomysł, wypróbuj dłuższą wersję (nie stanowiącą części wyzwania):
źródło
aaaaaaa,a,aa,aaa,aaaaaaa
. Non-match:aaaabaaacaaadaaa
.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,a,aa,
(usuń te znaki)aaaa,aaaaaaa,aaaaaaaa,aaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaa,
(usuń te znaki)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
. Brak dopasowania:aaaabaaacaaadaaa
(remove these characters)
.)