Zagadka polega na tym, aby dowiedzieć się, w jaki sposób złośliwy kod może być ukryty i wykryty w programie.
Osoba zadaje pytanie:
Plz daj mi kod, w jaki sposób mogę przeszukać plik w katalogu bieżącym lub w jego podkatalogach.
(Jest to wariant prawdziwego pytania, które widziałem na jednej stronie).
Aby być bardziej szczegółowym: OP chce, abyś napisał program, który akceptuje ciąg i katalog. Przejdzie wszystkie pliki w katalogu i rekurencyjnie wszystkie jego podkatalogi. Dla każdego pliku sprawdzi, czy plik zawiera ciąg, a jeśli tak, wydrukuje nazwę pliku. (Program może mieć dodatkowe funkcje, o ile są one zgodne z głównym celem, jeśli chcesz). Nie ma żadnych wymagań dotyczących kolejności przejścia.
Jednak głównym zadaniem tej układanki jest ukrywanie w programie dodatkowego kodu, który będzie głupcem osoby, która prosi o program w oczach użytkowników / współpracowników / szefa itp. Na przykład w pewnym momencie wydrukuj upokarzający tekst, na przykład: Autor programu nie wie, jak programować, powinien zwrócić swój dyplom i zostać zwolniony. Bądź kreatywny.
Zasady:
- Rozwiązanie nie może być szkodliwe (oczywiście z wyjątkiem głupstwa PO), oczywiście. Nie może wyrządzić żadnych nieodwracalnych szkód użytkownikom końcowym (nic podobnego
rm -rf
)! Takie rozwiązania zostaną zdyskwalifikowane. - Trollingowe rzeczy powinny być ukryte, aby OP nie mógł ich łatwo znaleźć.
- Nie powinno być oczywiste, że trollujesz PO. Kod powinien wyglądać autentycznie.
- Rozwiązanie musi pochodzić z właściwego wyjaśnienia, jak to trolle OP tak, że każdy może nauczyć się czegoś od swojego rozwiązania. Wyjaśnienie powinno być ukryte w tekście ukrytym aż do kliknięcia (spoilery) . Oceniając, spróbuj odkryć trolling bez patrzenia na wyjaśnienia i głosuj na tych, których trudno odkryć.
- Spróbuj także ukryć trollowanie przed OP, jeśli spróbuje uruchomić kod kilka razy. Być może zacznij trolling dopiero po określonej dacie lub pod pewnymi warunkami, których niechlujny programista nie przetestuje. Bądź kreatywny i nie zapomnij wyjaśnić sztuczki.
- Nie twórz po prostu skryptu przy użyciu istniejących narzędzi, takich jak
grep
lubfind
. Napisz program od zera. Lepiej unikaj bibliotek i preferuj połączenia niskopoziomowe - sprawi to, że kod będzie bardziej złożony i da ci możliwość ukrycia tam złych rzeczy.
To konkurs popularności . Oceniaj zgodnie z powyższymi punktami.
źródło
Odpowiedzi:
Oto moje rozwiązanie (w Perlu):
Pierwszym argumentem programu jest katalog, a drugim argumentem jest szukany ciąg. Program pokazuje również liczbę dopasowań w każdym pliku.
Oto jak wyszukać „VGA” w / etc:
A teraz oto sztuczka:
źródło