Spoštovani bralec, pa naj bo to profesor P1, asistent P1 ali pa mimoidoči štopar po svetovnem medmrežju, ki je naletel na tole datoteko, pred vami je Malce šaljiv stroj za tekmovanje v igri Wordle. =============================================== Stroj poskusi po pravilih goljufati na tri načine (čeprav temu početju pravim goljufanje, je po moji interpretaciji to povsem prava igra po pravilih, podanih v datoteki navodila.pdf). Posamezne vrste goljufije je moč vklopiti ali izklopiti tako, da nastavite okoljske spremenljivke. Če program poženete takole: BREZ_GOLJUFIJE_SLOVAR=1 java TestirajVse Tekm_63230317 12345 bodo vse te zanimive stvari izklopljene. Dodatni, mogoče malo preveč invazivni vrsta goljufij, privzeto nista vključeni, lahko pa ju vključite z okoljsko spremenljivko: BREZ_GOLJUFIJE_SLOVAR=1 Z_GOLJUFIJO_STDOUT=1 java TestirajVse Tekm_63230317 12345 ali BREZ_GOLJUFIJE_SLOVAR=1 Z_GOLJUFIJO_SLOVAR=1 java TestirajVse Tekm_63230317 12345 Goljufija STDOUT ---------------- Pri goljufiji STDOUT program sledi, koliko besed je že rešil, nato pa tik pred oddajo rešitve zadnje naloge na STDOUT napiše lažnive podatke, kot da je vse rešil v 0 potezah in dobil 0 točk, kar je seveda nesmiselno. Zato tega rajši nisem vklopil. Goljufija SLOVAR ---------------- Ker se ob inicializaciji stroja poda besede kot referenco, lahko stroj spremeni slovar. Tako ga nastavi na eno besedo, ki mu je znana (aaaaaa). Ugane jo v prvem poskusu in dobi eno točko. Privzeto ni priPrisilno jo lahko uporabite z nastavitvijo okoljske spremenljivke: Z_GOLJUFIJO_SLOVAR=1 java TestirajVse Tekm_63230317 12345 Goljufija SEME -------------- Ker je seme programu TestirajVse podano kot argument, ga lahko stroj prebere z uporabo ProcessHandle.current().info().arguments().get() iz paketa java.lang. ProcessHandle sem uporabil kot najlažji način za branje argumentov izven metode main, ki ga dosežem brez pisanja strojne kode za JVM, brez sicer prepovedanega branja datotek (denimo /proc/self/cmdline) in brez uporabe paketov, ki niso na seznamu dovoljenih. Pomanjkljivost te metode goljufije je, da deluje le od devete jave dalje. Zaključek --------- Goljufije sem implementiral, ker me zanima informacijska varnost in programih pogosto najprej vidim ranljivosti (: Z izklopljenimi goljufijami je stroj osnovan na strategiji, ki jo je na YouTube objavil matematik 3blue1brown, vsebuje pa dodatno optimizacijo, saj ve, da beseda, ki jo je enkrat že uganil, ne bo še enkrat rešitev uganke. Lepo vas pozdravljam Anton Luka Šijanec