Strona 1 z 1

[bash][skrypty][dosbox][hacking]Linuxowy władca marionetek... ;)

: wtorek 31 gru 2024, 08:03
autor: j23
Dzień dobry Dzieci... ;)
Proszę mi na wstępie wybaczyć Koleżanki i Koledzy Forum Microgeek ten nieco infantylny zwrot - "Dzieci", ale... z uwagi w jakim kontekście jest on użyty w niniejszym samouczku to spełnia z grubsza wymagania i wydaje mi się, że jest jak najbardziej na miejscu ;)
Jeśli jednak Ktoś z Koleżanek czy Kolegów forum się obraził to z góry przepraszam. Wyjaśnienia pełniejsze poniżej. Zapraszam. ;)

"Krótki" wstęp - oczywiście MUSISZ przeczytać ;)
W czasie tegorocznych świąt byłem chory, a jakoż iż NAWET WTEDY człowiekowi... aaa sorry... dziecku (dużemu) ;) trudno wysiedzieć/wyleżeć/przechorować w spokoju to postanowiłem czymś zająć swoją głowę, żeby nie skupiać się na chorobie i czym prędzej wyzdrowieć. Do spraw poważnych nie miałem niestety pełnej rozporządzalnej mocy umysłowej, ale do pierdół typu gry.. a jakże... czemu nie.. ;) No i odpaliłem se starego dobrego DOS'a co by wrócić do prostych, fajnych gierek z tamtego okresu i nostalgicznie nieco się odprężyć. Po przejrzeniu katalogu z grami wybór padł na "Master of Orion" (dalej będę używał skrótu: "MOO") - przy czym chodzi mi o tą całkiem pierwszą część tej gry działającej jeszcze pod DOS'em. No bo tych części "MOO" jest nieco więcej.
No i gram sobie, gram, ale rozgrywka idzie "jak krew z nosa" - pooo-ooo-wooooooli... (kto w to grał wie o czym mówię). Tam załóżmy klikasz "Tech", klikasz "Planets" - a tam w tym okienku z tabelką dajesz znany i lubiany cheat-code zwiększający ilość kasy (wciskasz ALT i wklepujesz "moola" - bez cudzysłowów rzecz jasna), potem znowu coś tam planujesz i klikasz "Next", no i kolejna tura i tak dalej.. Tak to leci aż w końcu pokonamy przeciwników i jesteśmy władcami wszystkich galaktyk w tym wyimaginowanym wszechświecie.. Wszystko okey, tylko że zawsze ta kasa.. ;) ...zawsze ta kasa.. Ciągle jej mało i mało.. No i przyszłego imperatora galaktyk wkurza gdy gra ciągnie się jak flaki z olejem... ALE.. :) Na szczęście to nie szare, zwykłe życie, tylko wirtualne światy równoległe, do tego jeszcze Linux (w jakiejkolwiek z Debianowych dystrybucji), pod który podpięty jest program Dosbox będący emulatorem DOS'a... No i do tego ta kombinacja w "orionie" ALT+moola... :) ;) :) hie hie... :)
Hmm.. A może by tak.. A czy nie dałoby radę tego jakoś przyspieszyć z automatu, żeby nie trzeba napierniczać z klawiatury wciąż i wciąż tego "alt+moola"? No cóż... hie hie... ;) 8-) Zdaje się, że można i o tym jest mniej więcej ten samouczek..

W dystrybucjach debianowych Linuxa często znajduje się bardzo przydatny program o nazwie: xdotool
Działa on w trybie graficznym linux (czyli okienka jak w windows) i potrafi przejąć niejako kontrolę na określony czas nad dowolnym (określonym przez użytkownika/dziecko) oknem no i coś tam zrobić (w tym konkretnym przykładzie przesłać sekwencję klawiszy: ALT+moola.

Na razie trochę namieszałem, ale spokojnie, już teraz krok po kroku wyjaśniam jak stać się linux'owym władcą marionetek i przejąć kontrolę nad marionetką=oknem (lub marionetkami=oknami) - w naszym przykładzie: oknem Dosbox'a.

Z pisaniem tego samouczka miałem "trochę" roboty.. A klepałem to słuchając takiej oto muzy ;)
https://www.youtube.com/watch?v=aTafZRecy2k
Tłumaczenie tekstu piosenki: https://www.tekstowo.pl/piosenka,dropkick_murphys,worker_s_song.html

Nie ma co! Jedziemy z koksem... Wyżej wspomniane czary robi się tak:

0. Założenia wstępne:
- posiadamy linux'a zgodnego do dystrybucji Debian (na takich to testowałem i działało),
- sami jesteśmy zalogowani jako zwykły użytkownik (ale taki użytkownik, ktory należy do grupy sudo, czyli po podaniu hasła root'a ma przywilej wykonywać rozkazy systemu operacyjnego takie jak root),
- posiadamy zainstalowany edytor mcedit (jest on instalowany wraz z mc = midnight commander'em),
- działamy trybie graficznym naszego linux'a.
- posiadamy grę "MOO" = "Master of Orion"

1. Odpalamy Dosbox.
Z racji, że dosbox odpala się w terminalu z automatu, to powinno pojawić się okno coś a la terminal (czy tam okno konsoli jak kto woli).
Tutaj nadmienię, że u mnie w systemie jest to tak skonfigurowane, że dosbox w pliku configuracyjnym do inicjalizacji (czyli załapania ustawień gdy się go odpala) ma już co nieco wpisane. Na przykład u mnie w dosboxie zaraz po odpaleniu zaczyna działać skrypt, który odpala norton commandera (odpowiednik midnight commander'a w linux lub odpowiednik total commander'a w windows), dzięki czemu widzę przyjazne dwa okna norton commander'a skąd jest mi łatwiej i szybciej odpalić już samą grę (taką czy inną, ale tutaj skupimi się na "MOO"="Master Of Orion").
Jakby kto nie wiedział jak odpalić program Dosbox w Linux to najsam w przód trzeba odpalić okno terminala (czyli linuxowej konsoli CLI) po czem...
W otwartym oknie terminala po tzw.znaku zachęty wklepujemy:
pkt_1a__w_terminalu_wklepujemy_dosbox.png
i klikamy ENTER.

Pokazuje nam się okno "DOS'a" (a konkretnie emulator tego zacnego Systemu Operacyjnego):
pkt_1b__okno_dos.png


2. Odpalamy grę w "DOS":
W oknie dosbox (które stanowi tzw.emulator systemu DOS), musimy wejść do katalogu z grą i ją odpalić. Dla uproszczenia załóżmy, że nasz katalog z grą znajduje się w głównym katalogu DOS'a czyli w "\" zaś pliki gry w katalogu "\Moo", a z kolei "my" jako użytkownik po odpaleniu dosbox'a lądujemy w katalogu "\" czyli w głównym katalogu wirtualnego DOS'a.

3. Wklepujemy w terminalu dosbox komendę uruchamiającą grę:
pkt_3__w_dos_odpalamy_gre.png
i klikamy ENTER - czyli odpalamy grę.
Tam oglądamy se intro, albo i nie, dalej ustawiamy parametry gracza, gry, no i gramy...

4. W grze "MOO" klikamy na zakładkę "Planets", która jest w menu gry na dole.
pkt_4a__moo__klikamy_na_planets.png


Otwiera się nam tabelka gdzie (póki co) jest nasza rodzima planeta (Ziemia, lub jakkolwiek inaczej jak ją żeśmy se tam nazwali).
pkt_4b__moo__tabelka_z_planetami.png


Sprawa z tym oknem jest o tyle istotna, że w tej konfiguracji gry "MOO" najlepiej widać jak przybywa kasy. No i teraz gdyby grać tak klasycznie, uczciwie cheat'ując starą poczciwą grę i chcieć zarobić 100BC (BC to jest... tak jakby taki PLN w realu, ok? ) to trzeba robić tak, że: wciskamy ALT i przy wciśniętym ALT'cie klepiemy na klawiaturze "moola" (bez cudzysłowów rzecz jasna) i bach mamy 100BC.
pkt_4c__moo__bach_mamy_100bc.png


ALE... 100BC to trochę mało kasiory... No i przy takim ręcznym klepaniu to raczej zbyt szybko tego kosmicznego biznesu nie rozkręcimy ;) no więc trzeba by tak po kilka razy naklepać serię "alt+moola" - ile? No, dobrze by było przynajmniej tak na 3000BC... Hmm.. Czyli, że co? 30x "alt+moola" ręcznie klepiąc w klawiaturę?... Eee... Trochę słabe podejście.. Na szczęście teraz mamy xdotool i linux'a i trochę to przyspieszymy.. hie hie... :twisted: :twisted: 8-)

5. Odpalamy okno terminala do zarządzania marionetkowym oknem gry sąsiadującym obok:
To drugie okno, które odpalamy w trybie graficznym linux to ma to być okno czystego terminala - konsoli CLI (zakładam, że w linux'ie, który posiadacie wiecie co to okno terminala i gdzie znajduje się ikonka, która to odpali).
pkt_5__okno_terminala_xfce.png


6. Tworzymy plik skryptu bash'a:
Najpierw musimy stworzyć plik gdzie będziemy implementowali kod języka skryptowego bash. A zatem w oknie terminala wklepujemy:
pkt_6__cli__tworzymy_plik_skryptu_bash.png
i wciskamy ENTER
Oczywiście nazwa pliku może być dowolna (nawet taka bez rozszerzenia), ale okey... Pojawia się co prawda plik, ale tak utworzonemu plikowi musimy jeszcze nadać uprawnienia do wykonywania (konkretnie wykonywania skryptów konsoli jakby co). Taki plik będzie nam służył niczym marionetka (hie hie) :twisted: która zdalnie za nas wklepuje tajne kody gry dające kasiorę. Tak.. No i oczywiście możemy mieć takich plików więcej, a z okna terminala niczym linuxowy władca marionetek będziemy je sobie odpalali... :roll: 8-) Póki co na razie skupimy się na jednej "marionetce" czyli jednym pliku i opanujmy sterowanie nią do perfekcji... 8-)

7. Sprawiamy, że plik skryptu basha będzie pełnoprawnym plikiem uruchomieniowym powłoki Linux:
Nadajemy plikowi odpal_gre_z_parametrami.run stosowne uprawnienia (zdolność do bycia czytanym, zdolność do bycia redagowanym i zdolność do bycia WYKONYWANYM i to za jednym razem dla root'a, dla zwykłego user'a i dla gościa (czyli reszty). W tym celu wklepujemy w oknie wcześniej uruchomionego terminala:
pkt_7a__cli__nadajemy_plikowi_uprawnienia.png
i klikamy ENTER.

System Linux zapyta nas w terminalu o hasło root'a (jako że używamy przedrostka "sudo" aby nadawać uprawnienia, co może robić tylko root). Oczywiście posłusznie wklepujemy hasło (nie będzie go widać)
pkt_7b__cli__system_pyta_o_haslo_podczas_sudo.png
i klikamy ENTER.

No to plik skryptowy jest stworzony, ma nadane uprawnienia, żeby System Linux pozwolił mu z poziomu pliku uruchamiać programy z konsoli CLI, tylko że... póki co ten plik jest pusty. Pora aby wypełnić go kodem, a więc...

8. Pora na edycję pliku i wklepanie doń kodu języka skryptowego bash.
W tym celu w w/w oknie terminala wklepujemy:
pkt_8a__cli__uruchamiamy_edytor_mcedit.png
i klikamy ENTER.

Odpala się edytor midnight commander'a, który ma ładną, cukierkowo podświetloną składnię... mniam.. :P
Wklepujemy do pliku taki oto kod (wyjaśnienia co do linijek kodu -> patrz: kolejne punkty samouczka):
pkt_8b__mcedit__wklepujemy_kod_skryptu_bash.png

Kod: Zaznacz cały

#!/bin/bash
# $1 = window id
# $2 = ilosc powtorzen
for ((i=1; $i <= $2; i++));
do
    xdotool key --window $1 alt+m alt+o alt+o alt+l alt+a;
    sleep .1;
done


Poniżej omawiam kolejne linie kodu bash, stosując tu starą, dobrą zasadę koderów:
linia komentarza do linii kodu :like:

Linia 1:
#!/bin/bash
Takie coś musi być, żeby plik z poziomu konsoli linux był przez system operacyjny rozpoznawalny jako plik skryptowy, lub po prostu w skrócie skrypt linux'a.
A po co? A za co? A na co? Aaa.. to już bardziej ciekawskich odsyłam do bardziej fachowych źródeł wiedzy, które będą podane pod koniec tego samouczka.

Linia 2:
# $1 = window id
Komentarz, który interpreter bash'a nie bierze pod uwagę i go omija, ale dla kodera jest to informacja wyjaśniająca o co chodzi z tym dziwnym "$1" które jest wewnątrz pętli "for". Teraz z komentarza wiemy, że jest to pierwsza zmienna parametryczna, która jest odpowiedzialna za dane nt. tzw. "window id" czyli numeru okna, który to numer został nadany przez system operacyjny podczas tworzenia tego okna. Krótko: jak odpalamy dosbox tworzy się okno, no nie?. No właśnie, a system tworzy sobie nr tego okna i tyle. Dla nas ten numer stanowi z punktu widzenia kodu bash zwykłą daną liczbową, aczkolwiek bardzo istotną.

Linia 3:
# $2 = ilosc powtorzen
Ten z kolei komentarz odnosi się do drugiej zmiennej parametrycznej czyli "$2", która przekazuje do skryptu bash'a dane o ilości powtórzeń pętli for.

Te dane liczbowe trafiają z parametrów wejściowych skryptu do danych parametrycznych kodu basha "$1" i "$2" podczas odpalania pliku skryptowego: odpal_gre_z_parametrami.run - PRZY CZYM ten skrypt odpalamy w konkretny sposób - o czym za chwilę...
Pora na omówienie kolejnej linii..

Linia 4:

Kod: Zaznacz cały

for ((i=1; $i <= $2; i++));

Jest to linia gdzie swe życie zaczyna pętla "for" i jest to linia instrukcji for, której kolejne parametry mówią o tym jak ma być wykonana pętla for.
W tym wypadku pętla rozpocznie pracę począwszy od pierwszego elementu "i=1;", następnie instrukcja "for" sprawdzi czy nie nastąpił koniec pętli "$i <= $2;" i jeśli koniec pętli "for" nie nastąpił to wykonywana jest podinstrukcja iteracji czyli "i++", a jeśli koniec pętli nastąpił to cóż... nastąpiło zarazem zakończenie wykonywania skryptu powłoki, a zatem i zakończenie robienia wirtualnej kasy w grze. Kolejne uruchomienie skryptu to kolejne robienie kasiory w takim zakresie w jakim to zadamy w drugim parametrze podawanym podczas uruchamiania skryptu (pierwszy parametr to numer okna na jakim skrypt ma zadziałać, o tym pierwszym parametrze już za chwilę).

Linia 5:

Linia ta otwiera pętlę "for". Taka jest notacja w języku skryptowym bash dla pętli "for". Dla ciekawskich taka dygresja, że "do" w tym wypadku stanowi to samo co "{" dla języka c i to samo co "begin" dla języka pascal.

Linia 6:

Kod: Zaznacz cały

xdotool key --window $1 alt+m alt+o alt+o alt+l alt+a;

No.. Tutaj się dzieje, ale po kolei.. Po pierwsze jest tutaj odpalany (poprzez skrypt) program xdotool wraz z parametrami. Program xdotool pomimo niezbyt długiej nazwy stanowi dość potężne narzędzie do zdalnego zarządzania oknami w trybie graficznym linux. Do zarządzania "xdotool" wykorzystuje tzw."mouse events" (czyli "zdarzenia myszy") oraz tzw."keystrokes" (czyli "sekwencje klawiszy"). Nie będę go tutaj całego opisywał. Bardzo wyczerpujący opis xdotool jest w tzw.manualu do tego programu, a także w źródłach wiedzy na ten temat, co wszystko wyjaśniam pod koniec tego samouczka. Tutaj skupię się na przykładzie generowania wirtualnego wklepania klawiszy "alt+moola" jak to zostało wyjaśnione wyżej.
Widać zatem, że za "xdotool" jest parametr "key" wraz z opcją "--window", która pobiera parametr jako numer okna (tzw."window id") do pierwszej zmiennej parametrycznej jaką jest: "$1", a dalej są zmienne parametryczne typu "keystrokes" czyli zestaw sekwencji wciśnięć klawiszy (minimalnie musi być to przynajmniej jedna sekwekcja, ale w naszym przykładzie "moola" jest ich jak wiadomo pięć (no bo pięć liter, proste).
Podsumowując, linijka robiąca całe czary zawiera kolejno wpisy:
xdotool - program
key - parametr programu xdotool jako typ keystroke
--window - opcja dla parametru key
$1 - zmienna parametryczna (na etapie wprowadzania danych w oknie terminala używa się w tym odniesieniu tożsamego pojęcia: parametr wejściowy = input parameter)
alt+m alt+o alt+o alt+l alt+a - pięć sekwencji klawiszy (tzw.keystrokes) do wygenerowania względem kolejności jak zostały wpisane w czasie jednej iteracji pętli "for" (w jednym rozkazie xdotool można za jednym zamachem wykonać/zasymulować wciśnięcie dowolnie długiej sekwencji klawiszy)
; - średnik kończy każdy rozkaz w bash, można za średnikiem wpisywać co prawda kolejny rozkaz (ale nie powinno się tak robić ze względu na czytelność kodu)

Linia 7:

Kod: Zaznacz cały

sleep .1;

Ta linia skryptu odpala program sleep, który ma za zadanie OPÓŹNIĆ rozpoczęcie następnej iteracji pętli for o dokładnie 1 dziesiętną sekundy, czyli dokładnie 100 milisekund. Czemu? Ano.. Nie zapominajmy, że dawniej w kochanym DOS'ie ubiegłego milenium, tamtejsze gry działały przy innych parametrach procesora CPU, a te CPU z kolei miały "trochę" wolniejsze zegary odmierzające najmniejsze jednostki czasu czasami nawet w zakresie dziesiątek megaherców, no i.. cholera.. :roll: :oops: krótko rzecz ujmując, jest to po to, żeby skrypt zadziałał tak, żeby gra się nie zacieła podczas wykonania skryptu (i również żeby sam skrypt się nie zaciął). A o historii komputerów i wstecznej kompatybilności programów (w tym gier) to już se doczytajcie sami, bo inaczej zamiast zwięzłego samouczka napiszę tutaj jakąś biblię dla maniaków staroci.. ;) -z całym szacunkiem dla maniaków staroci, do których i ja się zaliczam.

Linia 8:

Kod: Zaznacz cały

done

Linia ta zamyka pętlę "for" w notacji języka skryptowego bash. Dla ciekawskich kolejna dygresja jest taka, że "done" w tym wypadku stanowi to samo co "}" dla języka c i to samo co "end;" dla języka pascal.

Na tym etapie należy się jeszcze wyjaśnienie, że "Linia 6" odpowiada za zarobienie "jedynie" 100BC w grze, natomiast za to żeby zarobić całą naprawdę dużą kasiorę to już odpowiada cała pętla "for" która ma być wykonana TYLE RAZY na ile wskazuje jej zmienna parametryczna "$2". Innymi słowy, jeśli chcemy "naklepać" w grze kasy na 100000BC to drugi parametr skryptu musi być równy 1000 (bo 10000/100 = 1000 ).
Co prawda będę to jeszcze tłumaczył obrazowo niżej, ale jeszcze tutaj dodam, że zakładając, że numer okna (window id) jest równy 58720259 to dla wygenerowania 100000BC linijka uruchamiająca nasz skrypt w terminalu linux powinna mieć postać:
./odpal_gre_z_parametrami.run 58720259 1000

gdzie:
./ - <kropka i slash> = ten sam katalog gdzie jesteśmy jest plik skryptowy (podczas odpalania programu podaje się całą ścieżkę dostępu)
odpal_gre_z_parametrami.run - nasz program jako tzw. plik skryptowy języka bash (w skrócie: skrypt powłoki bash)
58720259 - pierwszy parametr wejściowy (first input parameter) trafiający do zmiennej parametrycznej "$1"
1000 - drugi parametr wejściowy (second input parameter) trafiający do zmiennej parametrycznej "$2"

Cóż... To by było tyle co do omawiania samego pliku skryptowego i kodu jaki w nim jest, ale teraz pora połączyć to wszystko w całość i stać się niby takim linuxowym władcą marionetek. ;)
A zatem...

9. Zapisujemy skrypt: "odpal_gre_z_parametrami.run" w edytorze mcedit.
W tym celu wciskamy klawisz "F2" na naszej klawiaturze i edytor mcedit nasz skrypt pięknie zapisuje. Teraz jeszcze tylko wciskamy "Escape" i wychodzimy z edytora mcedit trafiając z powrotem do naszej konsoli w terminalu. Pora na przetestowanie naszego skryptu.

10. Podsumowując.. Mamy na pulpicie linux otwarte następujące okna:
10.1. Po lewej stronie: okno z grą "MOO" na zakładce "Planets" co by było widać "klepanie" kasiory. :)
10.2. Po prawej stronie: okno z konsolą CLI terminala linux, w katalogu gdzie znajduje się nasz przed chwilą napisany skrypt uruchamiający pracę marionetki w grze "MOO".
pkt_10__okna_na_pulpicie.png


11. Ustalamy nr okna (window id) dla okna=marionetki gdzie jest odpalona gra "MOO":
Ustalenie jaki jest numer okna pozwoli nam w prawidłowy sposób podać dane do pierwszego parametru wejściowego jakim jest tzw."window id", czyli ten nr okna marionetki o jaki tak nam chodzi. Mówimy tutaj o tym lewym oknie, wyżej wymienionym jako okno 10.1.
W tym celu klikamy raz na górną belkę okna gdzie jest terminal (czyli klikamy na okno 10.2) i wklepujemy do konsoli CLI następującą linijkę:
pkt_11a__okna__xdotool_selectwindow.png
i klikamy ENTER.

Widzimy, że kursor myszy zmienił się w taki jakby kwadratowy celownik czy coś w tym rodzaju. W każdym razie posługując się myszą najeżdżamy tym celownikiem na GÓRNĄ BELKĘ okna gdzie jest odpalona gra "MOO" (chodzi teraz ponownie o okno 10.1) i klikamy lewym klawiszem myszy.
pkt_11b__okna__xdotool_celownik_i_oznaczamy_okno.png


Widzimy, że w oknie terminala, a pod wpisanym uprzednio rozkazem "xdotool selectwindow" pojawił się jakiś numer. Jest to właśnie numer okna (window id) oznaczający pierwszy parametr identyfikujący dla naszego skryptu okno z grą.
U mnie ten nr okna (window id) to: 58720259
ale jest więcej niż prawdopodobne, że u każdego z Was czytających ten samouczek ten nr będzie inny.
pkt_11c__okna__xdotool_podal_w_cli_nr_okna_marionetki.png


12. Teraz miodzio... Występ finałowy, czyli test naszego skryptu w praktyce.
Zakładając, że oba okna są obok siebie na pulpicie i oba są widoczne to teraz przechodzimy do okna z terminalem (klikamy na górną belkę okna 10.2) i zakładając, że chcemy se naklepać kasy w grze na 100000 [BC] wklepujemy w oknie terminala:
./odpal_gre_z_parametrami.run 58720259 1000

pkt_12a__okna__wklepujemy_rozkaz_odpalenia_skryptu.png
po czym klikamy ENTER i z uśmiechem na ustach patrzymy na czary dziejące się w oknie gdzie pracuje emulator DOS'a z odpaloną grą "MOO". :)

pkt_12b__okna__efekt_odpalenia_skryptu.png

pkt_12c__okna__efekt_odpalenia_skryptu.png

pkt_12d__okna__efekt_odpalenia_skryptu.png


Hmm... Czy gdzieśkolwiek tutaj wspominałem, że program xdotool niekoniecznie musi służyć do tak "górnolotnych" zadań jak klepanie kasiory w "MOO"? ;) No właśnie.. a więc nie wspominam. ;)


Acha... Dzieci kochane... Nie grajcie może tak przez cały dzień w Nowy Rok i nie hack'ujcie tyle tych gier, co? ;) ;) Chcecie żeby tak przez cały rok było??? :shock: :roll: :lol: ;) :twisted: :twisted: 8-) :like:

P.S. A tak btw.. tytuł postu nawiązuje do takiego fajnego filmu (również o tematyce dotykających obcych cywilizacji),
a mianowicie do filmu pt: "Władcy marionetek" , gdzie jedną z głównych ról gra wspaniały aktor Hollywood - Donald Sutherland, który swoją grą aktorską stworzył wiele nieśmiertelnych kreacji kinowych...

------------------------------------------------------------------------------------------------------------------------------
Poniżej wspomniane powyżej ;) dodatki:
------------------------------------------------------------------------------------------------------------------------------
Dodatek A - sposób czytania dokumentacji programów linux'owych:

Sposób A.1. - notacja typu: <program> --help
np.
xdotool --help + ENTER
Na oknie terminala pojawia się jakaś tam pomoc, większa lub mniejsza, ale zazwyczaj bardziej okrojona od tej z typowego manuala.
-----
Sposób A.2. - notacja typu: man <program>
np. man xdotool + ENTER
Na oknie terminala pojawia się dokumentacja dla programu. Jest to najczęściej możliwie najpełniejsza i najdokładniejsza dokumentacja, dlatego, że wymagana jest w społeczności tworzącej daną dystrybucję linux'a żeby zrobiona była na tyle dokładnie, żeby pakiet (w skład którego wchodzi program, biblioteki no i sama dokumentacja) był w ogóle dopuszczony do możliwości zainstalowania (co nie znaczy, że nie można tworzyć prywatnie programów BEZ DOKUMENTACJI, jednak takie "programy" prawdopodobnie nigdy nie będą miały zaszczytu zagościć w jakimkolwiek linuxowym repozytorium, czyli takim zbiorze programów dla linuxa).
--------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------
Dodatek B - źródła wiedzy użyte do napisania niniejszego samouczka:

1. Podstawowe komendy Linux'a - z zasobów strony internetowej Obserwatorium Astronomicznego Uniwersytetu Warszawskiego - po polsku:
https://www.astrouw.edu.pl/~jskowron/pracownia/komendy/

2. Jedno z oficjalnego forum dla Systemu Operacyjnego Linux w dystrybucji Debian i dyskusja nt.symulacji naciśnięcia klawisza - po polsku:
https://www.debian.pl/viewtopic.php?t=33488

3. Jedno z oficjalnych forum Systemu Operacyjnego Linux i taki mini samouczek nt. przykładów stosowania programu xdotool (forum angielskojęzyczne):
https://www.linux.org/threads/xdotool-examples.10705/

4. Dyskusja na forum stackoverflow o tym jak wstrzymać na chwilę wykonywanie skryptu (lub pętli "for" - w moim zainteresowaniu) - po angielsku:
https://stackoverflow.com/questions/21620406/how-do-i-pause-my-shell-script-for-a-second-before-continuing

5. Jak pisać kod dla języka skryptowego bash, przykłady, notacje (wersja po polsku):
https://www.obliczeniowo.com.pl/619
https://www.obliczeniowo.com.pl/616

------------------------------------------------------------------------------------------------------------------------------
Dodatek C - miejsce skąd można ściągnąć grę "MOO":

https://gamesnostalgia.com/download/master-of-orion/870

Jedyny link jaki znalazłem na poczekaniu, który można legitnie udostępnić. Niestety nie sprawdzałem czy spakowana wersja gry działa.

Re: [bash][skrypty][dosbox][hacking]Linuxowy władca marionetek... ;)

: wtorek 31 gru 2024, 12:12
autor: gaweł
Ach dzięki za dobre info.

Re: [bash][skrypty][dosbox][hacking]Linuxowy władca marionetek... ;)

: wtorek 31 gru 2024, 13:58
autor: Zegar
Po takim poradniku należałoby wreszcie przejść do grupy starszaków i poznać linux. ;)
Może kiedyś...

Re: [bash][skrypty][dosbox][hacking]Linuxowy władca marionetek... ;)

: wtorek 31 gru 2024, 22:04
autor: j23
Zegar pisze:Po takim poradniku należałoby wreszcie przejść do grupy starszaków i poznać linux. ;)
Może kiedyś...
Linux W BARDZO WIELU aspektach przypomina DOS'a i Windows'a z tych najlepszych ich lat, tylko naprawdę odrobina wysiłku jest potrzebna do opanowania tej minimalnej porcji wiedzy, która już dalej pozwoli względnie swobodnie poruszać się w Linux. Należy brać pod uwagę, że teraz to jednak dużo lepsze czasy, bo nawet jak Ktoś nie zna angielskiego są translatory online na internecie. Sam przez to przechodziłem, więc wiem co mówię. Po Nowym Roku zamierzam poczynić ku temu pewne ułatwienia (samouczki - lepsze niż ten), ale na razie cicho sza ;) - żeby nie zapeszyć. :like:

Re: [bash][skrypty][dosbox][hacking]Linuxowy władca marionetek... ;)

: wtorek 31 gru 2024, 22:30
autor: Zegar
Trzymam kciuki i czekam. :like:

Re: [bash][skrypty][dosbox][hacking]Linuxowy władca marionetek... ;)

: sobota 04 sty 2025, 11:12
autor: PROTON
Tu też jest :)
https://www.retrogames.cz/play_495-DOS.php
Jak ściągnąć?
Wchodzimy w Web Developer Tools (Ctrl+Shift+I), otwieramy zakładkę Network i uruchamiamy grę "Click to Start"
https://i.imgur.com/3hqgEqn.jpeg


https://www.retrogames.cz/dos/zip/orion.zip

Re: [bash][skrypty][dosbox][hacking]Linuxowy władca marionetek... ;)

: środa 22 sty 2025, 11:56
autor: photin
J23 2-3 miesiace temu zainstalowalem MOO2 moim dwom synom. Strasznie wsiakli i "Orion" stal sie jedna z ich ulubionych gier, i sporo nowych slow z angielskiego podlapali.

Uzywam DosBox takze w pracy, do uruchamiania starej Aplikacji, ktora po RS232 steruje maszyna do epitaksji. Byc moze wykorzystam Twoj precyzyjny poradnik.. Dobrze wiedziec, ze mozna uruchamiac/przekazywac sekwencje klawiszy z Linuxa do DosBox!