Oppgavene denne uken skal først leveres i oblig 2.
Først flere oppgaver om hvordan høynivåkode faktisk blir kjørt på en datamaskin. Dette er det viktig å vite for å senere forstå hvordan operativsystemet styrer alle prosessene som kjører. Deretter litt mer avanserte shell-script.
Hint: Bruk C-funksjonen enlinje() fra avsnitt 5.2. Hvis du kaller hovedprogrammet main.c og funksjonen enlinje.c, skal de kunne kompileres og kjøres med
$ gcc main.c enlinje.c $ ./a.out Kaller enlinje()... Svar = 42Du kan så lage assembly-kode av C-funksjonen ved
$ gcc -S enlinje.cDet er den resulterende funksjonen enlinje.s du skal studere og prøve å finne ut hva C-linjen
svar = svar + memvari enlinje.c blir oversatt til i assembly-koden som gcc produserer.
Returnerer 1 hvis svar > 0 Returnerer -1 hvis svar < 0 Returnerer ellers 0NB! Siden tidligere har default konfigurasjon av kompilatoren gcc endret seg, slik at du nå må legge på opsjonen -no-pie når du kompilerer; det vil si gcc -no-pie main.c if.s. Hvis ikke får du en feilmelding om relocation R_X86_64_32S against `.data' can not be used.
$6$AB.f/K06$IsV3oABaBO4UEBertVwViFgqFcuRvPfBDBVojDJkwg43AlPlgfD.y8nCpjnb01EgwwrVaxpYRzYjgT5G1g4lw.som er hentet fra shadow-filen på en Linux-server. Passordet er laget med små bokstaver og er bare tre tegn langt. Lag et shell-script som bruker kommandoen mkpasswd til å regne ut hash-verdien for alle mulige kombinasjoner av ord med tre små bokstaver mellom a og z. Det vil si aaa, aab, aac, etc. Få scriptet til å sammenligne med hash-strengen over slik at du dermed cracker passordet!
Hint: se hva for p in {a..z}{a..z}; do echo $p; done gir. Generelt kan lengden på saltet variere, men kommandoen cut kan brukes til å trekke ut strenger mellom $-tegnene i hashen. Opsjonen -s til kommandoen mkpasswd kan brukes til å lese passordet fra STDIN (slik at du med echo kan pipe passordet til kommandoen).
echo dette er en test | sed s/test/fisk/ echo test og test | sed s/test/fisk/ echo test og test | sed s/test/fisk/g echo test og test | sed s@test@fisk@g echo `pwd` | sed s///:/g # (prøver å bytte ut / med : ) echo `pwd` | sed s@/@:@g echo `pwd` | sed s/\[/\]/:/g # gir det samme som forrige find ~ -mtime +1 -print find ~ -mtime 0 -exec file {} \; data2500$ for variable in $(find ~ -name '.*' -print) > do > echo Hidden file/directory $variable > file $variable > echo ------------------------------ > doneHint: bruk manualsidene til å finne ut litt om disse kommandoene.
s802399@stud.hioa.no s886878@stud.hioa.no s886876@stud.hioa.no s886885@stud.hioa.no s886884@stud.hioa.no s850806@stud.hioa.no s886873@stud.hioa.no s886888@stud.hioa.no s808855@stud.hioa.no s856627@stud.hioa.no s886878@stud.hioa.no s299507@stud.hioa.no s850798@stud.hioa.no s803434@stud.hioa.no s886879@stud.hioa.no s886877@stud.hioa.no s959938@stud.hioa.no s886880@stud.hioa.no s826650@stud.hioa.no s886882@stud.hioa.no s886874@stud.hioa.no s859987@stud.hioa.no s803833@stud.hioa.no s886885@stud.hioa.noLag så en kommando som fra denn filen lager en ny fil nyfil.txt hvor alle forekomster av stud.hioa.no er byttet ut med oslomet.no
Arfan Ali s802399 s802399@stud.hioa.no personbilde JA Ali Muhammad Usman s886878 s886878@stud.hioa.no personbilde JA Gupta Suraj s886876 s886876@stud.hioa.no personbilde NEI Olaussen Marius Glenn s886885 s886885@stud.hioa.no personbilde JA Rornes Eirik Johannes s886884 s886884@stud.hioa.no personbilde JA Awale Bikram s850806 s850806@stud.hioa.no personbilde JA Gjoka Perla s886873 s886873@stud.hioa.no personbilde NEI Pirzada Abu Hurrera s886888 s886888@stud.hioa.no personbilde NEI Nguyen Norah Elisabeth s808855 s808855@stud.hioa.no personbilde NEI Abueleis Nihal s856627 s856627@stud.hioa.no personbilde NEI Khan Imran Qayyum s886878 s886878@stud.hioa.no personbilde NEI Smedsrud Kim s299507 s299507@stud.hioa.no personbilde JA Shahmir Shourmasti Komail s850798 s850798@stud.hioa.no personbilde JA Gundersen Martin Bergheim s803434 s803434@stud.hioa.no personbilde JA Khatiwada Baijaya s886879 s886879@stud.hioa.no personbilde JA Jani Tea s886877 s886877@stud.hioa.no personbilde NEI Wiken Stian Leander s959938 s959938@stud.hioa.no personbilde NEI Klausen Magnus s886880 s886880@stud.hioa.no personbilde JA Pandey Siddhartha s826650 s826650@stud.hioa.no personbilde JA Mahmood Tariq s886882 s886882@stud.hioa.no personbilde JA Celiku Lea s886874 s886874@stud.hioa.no personbilde JA KOMANPALLY NIRANJANI REDDY s859987 s859987@stud.hioa.no personbilde JA Toien Fredrik Karlsen s803833 s803833@stud.hioa.no personbilde JA Shahid Shahid Iqbal s886883 s886885@stud.hioa.no personbilde NEIog gi en kommando som gir en fil nyfil.txt som inneholder
s802399@oslomet.no s886878@oslomet.no s886876@oslomet.no etc.Hint: test | awk '{print $(NF-2)}' på en linje i filen.
-rw-r--r-- 1 root root 70481 Jan 15 2021 mime.types -rw-r--r-- 1 root root 26599 Jan 25 06:44 ld.so.cache -rw-r--r-- 1 root root 12813 Mar 27 2021 services -rw-r--r-- 1 root root 10593 Jan 30 2021 sensors3.conf -rw-r--r-- 1 root root 10477 Feb 7 2020 login.defs -rw-r--r-- 1 root root 10056 Dec 2 2020 nanorc -rw-r--r-- 1 root root 9443 Jan 2 23:35 locale.gen -rw-r--r-- 1 root root 6169 Feb 27 2021 sudo_logsrvd.conf -rw-r--r-- 1 root root 5662 Dec 31 21:14 ca-certificates.conf -rw-r--r-- 1 root root 5215 Feb 19 2021 manpath.config
haugerud@data2500:~$ ./false.sh _chrony har pid=507 _chrony har pid=508 zabbix har pid=586821 zabbix har pid=586824 zabbix har pid=586825 zabbix har pid=586826 zabbix har pid=586827 zabbix har pid=586828Hint: Se avsnitt 5.7 i forelesningsnotatene, "Lese filer og output med while og read".
haugerud@data2500:~$ ./info.sh Du har brukernavn haugerud og kjører scriptet ./info.sh med PID = 816133 på maskinen data2500 som kjører operativsystemet Linux Oversikt over din hjemmekatalog /home/haugerud: Filer: 95 Kataloger: 14 Linker: 0 Ditt default shell er /bin/bash og du befinner deg i katalogen /home/haugerud Totalt 32 brukere er oppført i passordfilen og det er definert 58 grupper Oversikt over dine grupper: haugerud : groups: cannot find name for group ID 101964 101964 sudo
$ ./arr.sh Totalt: 5 Array 3: 128.39.89.23 nexus.cs.hioa.noHint: Se avsnittet 'Et vanlig problem med pipe til while og read' i forelesningsnotatene om du bruker head -5 og ikke får noen verdier i arrayene. En annen måte å løse dette problemet på er å sende filen til while-read og så bruke en teller for å bare lese de første fem linjene.
$ ./assarr.sh Totalt: 5 nexus.cs.hioa.no sin IP er 128.39.89.23 csstud.cs.hioa.no sin IP er 128.39.89.61 ssh.cs.hioa.no sin IP er 128.39.89.11 localhost sin IP er 127.0.0.1 studssh.cs.hioa.no sin IP er 128.39.89.65
$ ./parselog.sh < syslog.tmp 08:00:17 47 08:30:17 37 08:00:40 28 08:30:16 20 07:30:44 17Prøv også å lage et script som gir en tilsvarende liste pr minutt. Hint: Bruk timestamp som index i et assosiativt array, skriv ut arrayet og sorter etter antall events.
Logg inn som tidligere med noe tilsvarende som følgende:
$ ssh -p 5135 s135@intel3.vlab.cs.oslomet.no s135@intel3.vlab.cs.oslomet.no's password: s135@os5135:~$
For å sjekke at du har funnet det rette ordet, skriv strengen med 10 tegn inn på siden os.php uke7 og du får beskjed om du har skrevet riktig. I tilegg blir du da med på konkurransen om å finne denne koden fortest mulig!