sunsetting
Witam.
Dziś chciałbym zaprezentować moje wypociny z ostatnich kilku dni. Oto one:
Programowanie wsadowe
-----------------------------------------------------------
1. Wstęp
2. Czym jest programowanie wsadowe?
3. Środowisko Windows
4. Wiersz polecenia
5. Pierwszy program
6. Program - żart
7. Słowniczek
8. Zakończenie
-----------------------------------------------------------
Wstęp
Witajcie!
Jestem nowy na Cyber – Crime, więc może się przedstawię. Na nick wybrałem sobie sześć połączonych ze sobą liter i powstał wyraz „VonSton”. Jestem niepełnoletni (prawie dwanaście lat), a komputerami interesuję się od, mniej więcej, roku i trzy czwarte. Mam już pewne doświadczenie w komputerach – znam język SQL, HTML, PHP, z grubsza C i Delphi.
Znam też trochę więcej niż podstawy działania sieci. OK, przedstawiłem się, czas na przejście do właściwego wstępu.
Niniejszy artykuł wprowadza czytelnika w świat programów z rozszerzeniem „.bat”(o tym za chwilę). Jeśli myślisz, że ten tekst będzie o pisaniu niewykrywalnych keyloggerów do Tibi – mylisz się. Rozczarowany? Jeśli tak, naciśnij:
a) Kombinację klawiszy Alt + F4,
b) „x” w rogu przeglądarki,
c) klawisze Ctrl + Alt + Delete, zakładkę „procesy”, potem odnajdź proces w stylu „firefox.exe”, a następnie „Zakończ proces”.
Nie chcesz „hackować” haseł kolegów w Tibii - możesz przejść do następnego punktu. Chcesz - wykonaj jeden z powyższych podpunktów.
Czym jest programowanie wsadowe?
Wspomniałem wcześniej o programach z rozszeniem „bat”. Zastanówcie się, skąd może to pochodzić? Zauważyliście zapewne kiedyś, że zapisując plik napisany w notatniku, do nazwy tegoż pliku zostaje dopisana kropka i napis „txt”. Jest to skrócony zapis „text document” (dokument tekstowy). Wiecie już do czego zmierzam?
Otóż rozszerzenie „bat” jest skróconym zapisem „batch file”, co oznacza „plik wsadowy”. Stąd wzięło się pojęcie „programowanie wsadowe”.
No dobrze, ale co może robić taki plik? Już mówię - może zrobić wszystko, jedyną jego granicą jest nie największa ilość poleceń. Może wypisać jakiś tekst na ekranie, ale może też doprowadzić do konieczności sformatowania dysku. Ogółem – może być bezpieczny lub niebezpieczny.
Środowisko Windows
Windows, a właściwie Microsoft Windows, to rodzina system operacyjnych stworzona przez Microsoft Corporation. Pierwszym systemem Microsoft’u był MS – DOS. Powszechnie za twórcę Windows’ów uznaje się Billa Gatesa (tak naprawdę jest współzałożycielem firmy Microsoft). Wszystkie systemy od MS są komercyjne.
Wiersz polecenia
Wiersz polecenia (inaczej terminal, konsola) to aplikacja, dzięki której możemy wydawać komputerowi polecenia (np. polecenie „format nazwa_dysku ” formatuje wybrany dysk). Dokładne jego omówienie wykracza poza temat tego artykułu, zainteresowani mogą poszukać czegoś na Wikipedii, innych serwisach, albo po prostu wpisując polecenie „help” na konsoli.
Jaka będzie rola wiersza poleceń w naszym artykule? Będziemy testować bezpieczne komendy, jakie wykorzystuje się w programowaniu wsadowym.
Zanim napiszemy nasz pierwszy program, otwórz terminal (Start -> Uruchom -> cmd) i wpisz „echo Testujemy funkcje”. Co się stanie? Pod spodem pojawi się napis „Testujemy funkcje”. Więc wiesz już, że funkcja „echo” wypisuje określony tekst w wierszu poleceń. To już coś.
Pierwszy program
Przyszedł wreszcie czas na napisanie prawdziwego programu. Do zrobienia go nie potrzebujemy kompilatora – wystarczy dowolny edytor tekstu (poza Wordem), np. notatnik.
Zanim jednak napiszemy program wsadowy, spróbujemy zrobić coś, co może wystraszyć niejednego użytkownika. W tym momencie nie będzie program, tylko proste, Windowsowe polecenie.
Kod: shutdown –s –t 3600 –c Ha, ha! Nabrałeś się! Uruchomiłeś konia trojańskiego!
Zapewne jedyne, co z tego rozumiesz, to "shutdown" i wszystko po znaku "c". Jeśli tak jest, nie przejmuj się, bo już to wyjaśnię:
a) shutdown – ang. wyłącz,
b) "-s" - potwierdzenie wyłączenia (s = shutdown),
c) "-t 3600" – (t = time) określenie czasu, po jakim wykona się polecenie; czas liczony jest w sekundach,
d) "-c Ha, ha! Nabrałeś się! Uruchomiłeś konia trojańskiego!" – komentarz (ang. comment).
Możesz to odpalić na konsoli, ale lepiej (przynajmniej na razie) tego nie rób. Nie będziesz wiedział, jak to wyłączyć (krzyżyk jest "zdisablowany").
Teraz kliknij prawym klawiszem myszki na pulpit, a następnie utwórz nowy skrót, wklej nasze polecenie, kliknij next, wpisz "Internet Explorer" i zakończ. Teraz zmień ikonę programu na tą z IE. Jeśli uruchomisz ten skrót, odpali się nie przeglądarka, tylko nasz "program". W ten sposób nabierzemy niejednego usera.
Teraz nauczymy się, jak zatrzymać taki proces. Jest to bardzo proste. Klikamy Start -> Uruchom i wpisujemy shutdown –a. Okienko zniknie, jakby nigdy go nie było.
W końcu przyszedł czas na przejście do właściwej części podrozdziału. Odpalmy notatnik i wpiszmy:
Kod: @echo off
echo To jest nasz pierwszy program
Zapisz plik jako firstprog.bat i uruchom. Jeśli nie zadziała, dopisz do kodu:
Kod: PAUSE
exit
Ponownie zapisz i uruchom. Wyświetlił nam się tekst "To jest nasz pierwszy program".
Teraz wyjaśnię nieoczywiste fragmenty programu:
a) "@" – znak ten ukrywa komendy, np. „echo”. Zamiast całej linijki (komendy i dalszej częśći) pokazuje się tylko to, co planowaliśmy (o ile kod jest poprawny),
b) "PAUSE" – powoduje oczekiwanie na naciśnięcie przez użytkownika jakiegoś klawisza; nie wyświetlane jest też np. "Naciśnij dowolny klawisz aby kontynuować…".
Reszty chyba nie trzeba wyjaśniać…
Program – żart
Wszystko pięknie, ale nie znamy żadnej komendy poza "echo". Nie znamy też żadnego "rundll32", a to jest niezbędne.
Ten podrozdział dotyczy tworzenia żartów za pomocą "wsadów". Nie będą to niebezpieczne programy, jedyne, co mogą zrobić to zirytowanie lub rozbawienie użytkownika. Pierwszy program – żart zamieni klawisze myszki. Oto kod:
Kod: @echo off
rundll32 user,swapmousebutton
W kodzie jest zapewne wszystko zrozumiałe („swap” to zamień), oprócz „rundl32”. Jedyne, co mogę zrobić dobrego, to wyjaśnić Wam, co to. Otóż rundll to program, który umożliwia uruchomienie funkcji z plików dll. Napisałem "rundll32", ponieważ mam 32 bitowy Windows. Dawniej występowały 16 bit’ki, ale już w zasadzie ich nie ma. Rozumiecie już, co to "rundll32"?
Wróćmy do programowania. Gdy uruchomimy nasz program, nasze przyciski zostaną zamienione.
Rozumiesz już o chodzi. Więc teraz jedyne, co Cię ogranicza, to to, że nie znasz wszystkich komend. Więc proszę, oto one (wraz z przykładowymi programami):
a) CALL - Wywołuje inny program wsadowy zapewniając powrót do programu poprzedniego.
Kod: @echo off
CALL firstprog.bat
b) FOR - Wywołuje dane polecenie określoną ilość razy.
Kod: @echo off
FOR %%A IN (1 2 3 4 5) DO ECHO Wartość zmiennej = %%A
c) GOTO - Przenosi sterowanie do wybranej linii.
Kod: @echo off
echo Tekst na początek
goto pominiecie
echo Zostanę pominięta :(…
:pominiecie
PAUSE
exit
d) IF - Jest to instrukcja warunkowa
Kod: @echo off
IF "napisik1"=="napisik2" ECHO Napisik1 i Napisik2 są równe!
e) START - Uruchamia plik lub stronę WWW.
Kod: @echo off
START www.uw-team.org
START cmd.exe
f) DEL – Usuwa plik i nie informuje o jego usunięciu.
Kod: @echo off
DEL myfile.txt
g) COPY – Kopiuje plik do wskazanego katalogu.
Kod: @echo off
COPY myfile.txt TO folder
A teraz spis "rundll32":
---------------------------------------------------------------------------------------------------
rundll32 keyboard,disable - Wyłącza klawiaturę.
rundll32 mouse,disable - Wyłącza myszkę.
rundll32 user,exitwindows – Zamyka system Windows i pyta, czy zamknąć otwarte pliki.
rundll32 Krnl386.exe,exitkernel - Zamyka system Windows.
rundll32 user,wnetconnectdialog - Otwiera okno dialogowe "Mapuj dysk sieciowy".
rundll32 user,disableoemlayer - Zawiesza system.
rundll32 user,repaintscreen - Odświeża ekran.
rundll32 user,setcursorpos - Przesuwa kursor do górnego lewego narożnika ekranu.
rundll32 desk.cpl,InstallScreenSaver - Wygaszacz ekranu.
rundll32 shell32,Control_RunDLL intl.cpl - Ustawienia regionalne.
rundll32 shell32,Control_RunDLL joy.cpl - Kontrolery gry.
rundll32 shell32,Control_RunDLL sticpl.cpl - Skanery i aparaty fotograficzne.
rundll32 shell,shellexecute - Otwiera okno Explorer Windows.
rundll32 shell32,Control_RunDll - Otwiera panel sterowania.
rundll32 shell32,ShellAboutA - Otwiera okno informujące o dostępnej pamięci fizycznej
oraz zasobach systemowych.
rundll32 diskcopy,DiskCopyRunDll - Otwiera okno dialogowe „Kopiuj dysk”.
rundll32 shell32,OpenAs_RunDll - Otwiera okno dialogowe "Otwórz z...".
rundll32 Shell32,SHFormatDrive - Otwiera okno dialogowe „Formatowanie – dyskietka”.
rundll32 shell32,Control_RunDll powercfg.cpl - Przywołuje właściwości zarządzania energią.
rundll32 shell32,Control_RunDll sysdm.cpl - Otwiera okno właściwości systemu.
rundll32 shell32,Control_RunDll timedate.cpl - Otwiera okno ustawień dat i godziny.
rundll32 shell32,Control_RunDll desk.cpl - Otwiera okno właściwości ekranu.
rundll32 shell32,Control_RunDll main.cpl @0 - Otwiera okno właściwości myszki.
rundll32 shell32,Control_RunDll main.cpl @1 - Otwiera okno właściwości klawiatury
rundll32 shell32,Control_RunDll main.cpl @2 - Otwiera okno drukarek.
rundll32 shell32,Control_RunDll main.cpl @3 - Otwiera okno czcionek.
rundll32 user,tilechildwindows - Umieszcza wszystkie otwarte okna obok siebie.
rundll32 msprint2.dll,RUNDLL_PrintTestPage - Drukuje stronę testową.
rundll32 sysdm.cpl,installDevice_Rundll - Włącza kreator dodawania nowego sprzętu.
Ale ciekawostka – w systemach nowszych, niż XP instrukcje "rundll" działają tylko i wyłącznie z prawami administratora!
---------------------------------------------------------------------------------------------------
Słowniczek
Keylogger – aplikacja przechwytująca wpisywane przez nas teksty i wysyłająca go do crackera.
Cracker – osoba ucząca się programowania i innych dziedzin komputerowych tylko po to, by niszczyć.
Tibia – gra komputerowa stworzona w latach dziewięćdziesiątych.
Explorer – wyszukiwarka w systemie Windows.
IE – Internet Explorer; przeglądarka internetowa stworzona przez Microsoft.
Zakończenie
Jak sami widzicie, programowanie wsadowe jest w miarę łatwe, jest tez doskonałym wstępem do prawdziwego programowania. Wiecie już, że pliki Batch mogą być zabawne lub bardzo groźne. W każdym razie mam nadzieję, iż po przeczytaniu tego artykułu będziecie stosowali je wyłącznie do celów edukacyjnych. No nic, to już wszystko.
Proszę o dokładne przeczytanie i uzasadnioną krytykę.
Fakt, skrypty bat to fajna sprawa, ułatwiająca niektóre operacje w OS, ale trochę zacofana.
Poza tym wydaje mi się, że na windowsach nowszych niż XP trzeba nadać skryptom prawa administratora (lub uruchomić jako administrator), żeby można było korzystać z rundll32. Dlatego te 'żarty' wypalą, w tej formie, tylko z przywilejami administratora, o czym mogłeś wspomnieć w arcie.
To miłe, że będąc w tym wieku interesujesz się takimi rzeczami.
Jeśli lubisz zabawy z skryptami powłoki polecam Ci zainstalowac jakiegoś linuksa na virtualboxie i pobawić się powłoką bash, której możliwości są o niebo większe (a umiejętność programowania w niej jest dużo praktyczniejsza) niż tej windowsowej.
Jeśli nie masz możliwości zabawy na linuksie to jest coś takiego - PowerShell, rozbudowany interpreter poleceń by Microsoft, który na pewno jest w wersjach serwerowych i chyba można go sobie samemu doinstalować do wersji nieserwerowych. W razie czego google da Ci na pewno więcej info, niż ja
No cóż, wiem, że programowanie w batchu jest troche zacofane, ale to dobry start do programowania nisko/wysoko poziomowego. Poza tym, dziękuję za opinię .
Dopisz jeszcze składnie i przykłady dla warunków, pętli, skryptu z parametrami a podepnę tego arta. Użyj znaczników code, aby artykuł był bardziej przejrzysty.
Dzięki za krytykę. Artykuł poprawiony. I co sądzicie?