diff --git a/20211108/bit-operationen.xcf.gz b/20211108/bit-operationen.xcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..fdfcaa8a11558ca1f16949f9b2de509717148953 Binary files /dev/null and b/20211108/bit-operationen.xcf.gz differ diff --git a/20211108/blink-0.c b/20211108/blink-0.c new file mode 100644 index 0000000000000000000000000000000000000000..b0022c681fd1482ed0a6d9fded7bb0a54699de32 --- /dev/null +++ b/20211108/blink-0.c @@ -0,0 +1,9 @@ +#include <avr/io.h> + +int main (void) +{ + DDRD = 0x40; /* binär: 0100 0000 */ + PORTD = 0x40; /* binär: 0100 0000 */ + while (1); + return 0; +} diff --git a/20211108/blink-1.c b/20211108/blink-1.c new file mode 100644 index 0000000000000000000000000000000000000000..6d28dce84f94375094c98479c30a54ace1b2a9d9 --- /dev/null +++ b/20211108/blink-1.c @@ -0,0 +1,18 @@ +#include <avr/io.h> + +#define F_CPU 16000000l +#include <util/delay.h> + +int main (void) +{ + DDRD = 0x01; + PORTD |= 0x01; + while (1) + { + _delay_ms (500); + PORTD &= ~0x01; + _delay_ms (500); + PORTD |= 0x01; + } + return 0; +} diff --git a/20211108/blink-3.c b/20211108/blink-3.c new file mode 100644 index 0000000000000000000000000000000000000000..5268e7977f0f2a99b2005a81a2fa7560dfea481f --- /dev/null +++ b/20211108/blink-3.c @@ -0,0 +1,17 @@ +#include <avr/io.h> + +#define F_CPU 16000000 +#include <util/delay.h> + +int main (void) +{ + DDRD = 0x01; + PORTD = 0x01; + while (1) + { + while ((PIND & 0x02) == 0) + ; /* just wait */ + PORTD ^= 0x01; + } + return 0; +} diff --git a/20211108/exploit-1.c b/20211108/exploit-1.c new file mode 100644 index 0000000000000000000000000000000000000000..226faca541c9d3472cb8038ff3218c56a810bed9 --- /dev/null +++ b/20211108/exploit-1.c @@ -0,0 +1,14 @@ +#include <stdio.h> +#include <stdlib.h> + +int main (void) +{ + char name[42]; + printf ("Ihr Name: "); + fflush (stdout); + fgets (name, 42, stdin); + char buffer[100]; + snprintf (buffer, 100, "echo \"Hallo, %s!\"", name); + system (buffer); + return 0; +} diff --git a/20211108/exploit-1.txt b/20211108/exploit-1.txt new file mode 100644 index 0000000000000000000000000000000000000000..7716d1c725e85115b1f608b22aa908bfd2063828 --- /dev/null +++ b/20211108/exploit-1.txt @@ -0,0 +1,8 @@ +cassini/home/peter/bo/2021ws/hp/20211108> ./exploit-1 +Ihr Name: Peter $(ls -lrt | tail -4) +Hallo, Peter -rw-r--r-- 1 peter peter 82 Nov 8 13:28 hello.c +-rwxr-xr-x 1 peter peter 16608 Nov 8 13:28 hello +-rw-r--r-- 1 peter peter 254 Nov 8 13:32 exploit-1.c +-rwxr-xr-x 1 peter peter 16888 Nov 8 13:32 exploit-1 +! +cassini/home/peter/bo/2021ws/hp/20211108> diff --git a/20211108/main-params-1.c b/20211108/main-params-1.c new file mode 100644 index 0000000000000000000000000000000000000000..e6e64ba029e1042aff60960fc8b7c3d4d5d8e2e2 --- /dev/null +++ b/20211108/main-params-1.c @@ -0,0 +1,9 @@ +#include <stdio.h> + +int main (int argc, char **argv) +{ + printf ("argc = %d\n", argc); + for (int i = 0; i < argc; i++) + printf ("argv[%d] = \"%s\"\n", i, argv[i]); + return 0; +} diff --git a/20211108/main-params-2.c b/20211108/main-params-2.c new file mode 100644 index 0000000000000000000000000000000000000000..242aa8abb5f3af0ea60aeba94edb978388ea4c4d --- /dev/null +++ b/20211108/main-params-2.c @@ -0,0 +1,9 @@ +#include <stdio.h> + +int main (int argc, char **argv) +{ + printf ("argc = %d\n", argc); + for (int i = 0; argv[i]; i++) + printf ("argv[%d] = \"%s\"\n", i, argv[i]); + return 0; +} diff --git a/20211108/main-params-3.c b/20211108/main-params-3.c new file mode 100644 index 0000000000000000000000000000000000000000..8fa64e701d9257dae4040a694ec651a054657cf4 --- /dev/null +++ b/20211108/main-params-3.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (int argc, char **argv) +{ + printf ("argc = %d\n", argc); + int i = 0; + while (*argv) + printf ("argv[%d] = \"%s\"\n", i++, *argv++); + return 0; +} diff --git a/20211108/main-params-4.c b/20211108/main-params-4.c new file mode 100644 index 0000000000000000000000000000000000000000..cdf917f06bccfe1e74f19d9d078ee915f5b3e557 --- /dev/null +++ b/20211108/main-params-4.c @@ -0,0 +1,17 @@ +#include <stdio.h> + +void remove_first_parameter (int argc, char **argv) +{ + argc--; + argv++; +} + +int main (int argc, char **argv) +{ + remove_first_parameter (argc, argv); + printf ("argc = %d\n", argc); + int i = 0; + while (*argv) + printf ("argv[%d] = \"%s\"\n", i++, *argv++); + return 0; +} diff --git a/20211108/main-params-5.c b/20211108/main-params-5.c new file mode 100644 index 0000000000000000000000000000000000000000..2b24c0956068f7d93815bf95234804b3d9467c26 --- /dev/null +++ b/20211108/main-params-5.c @@ -0,0 +1,17 @@ +#include <stdio.h> + +void remove_first_parameter (int *argc, char ***argv) +{ + *argc--; + *argv++; +} + +int main (int argc, char **argv) +{ + remove_first_parameter (&argc, &argv); + printf ("argc = %d\n", argc); + int i = 0; + while (*argv) + printf ("argv[%d] = \"%s\"\n", i++, *argv++); + return 0; +} diff --git a/20211108/main-params-6.c b/20211108/main-params-6.c new file mode 100644 index 0000000000000000000000000000000000000000..b2fa13993df64786fe901f77b64e6a9d01ed308b --- /dev/null +++ b/20211108/main-params-6.c @@ -0,0 +1,17 @@ +#include <stdio.h> + +void remove_first_parameter (int *argc, char ***argv) +{ + (*argc)--; + (*argv)++; +} + +int main (int argc, char **argv) +{ + remove_first_parameter (&argc, &argv); + printf ("argc = %d\n", argc); + int i = 0; + while (*argv) + printf ("argv[%d] = \"%s\"\n", i++, *argv++); + return 0; +} diff --git a/20211108/string-ops-1.c b/20211108/string-ops-1.c new file mode 100644 index 0000000000000000000000000000000000000000..dd05111f79e0573d616522593362f6f93beb89e7 --- /dev/null +++ b/20211108/string-ops-1.c @@ -0,0 +1,19 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char hello[] = "Hello, world!\n"; + + printf ("%s\n", hello); + printf ("%zd\n", strlen (hello)); + + printf ("%s\n", hello + 7); + printf ("%zd\n", strlen (hello + 7)); + + hello[5] = 0; + printf ("%s\n", hello); + printf ("%zd\n", strlen (hello)); + + return 0; +} diff --git a/20211108/string-ops-10.c b/20211108/string-ops-10.c new file mode 100644 index 0000000000000000000000000000000000000000..e1c1e84fba7eade92c2a0c818104de31b24c5f61 --- /dev/null +++ b/20211108/string-ops-10.c @@ -0,0 +1,15 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char buffer[100] = ""; + snprintf (buffer, 100, "Die Antwort lautet: %d", 42); + printf ("%s\n", buffer); + + char *answer = strstr (buffer, "Antwort"); + printf ("%s\n", answer); + printf ("found at: %zd\n", answer - buffer); + + return 0; +} diff --git a/20211108/string-ops-2.c b/20211108/string-ops-2.c new file mode 100644 index 0000000000000000000000000000000000000000..e139787faa20e518d8d2c2ec02f2a765d3181455 --- /dev/null +++ b/20211108/string-ops-2.c @@ -0,0 +1,19 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char *anton = "Anton"; + char *klein_anton = "anton"; + char *zacharias = "Zacharias"; + + printf ("%d\n", strcmp (klein_anton, zacharias)); + printf ("%d\n", strcmp (zacharias, klein_anton)); + printf ("%d\n", strcmp (klein_anton, klein_anton)); + + char buffer[100] = "Huber "; + strncat (buffer, anton, 99); + printf ("%s\n", buffer); + + return 0; +} diff --git a/20211108/string-ops-3.c b/20211108/string-ops-3.c new file mode 100644 index 0000000000000000000000000000000000000000..89e4cedd8edff17016ecb65bd257214c221085d2 --- /dev/null +++ b/20211108/string-ops-3.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char *anton = "Anton"; + char *zacharias = "Zacharias"; + + if (anton < zacharias) + printf ("%s vor %s\n", anton, zacharias); + else if (anton > zacharias) + printf ("%s nach %s\n", anton, zacharias); + else + printf ("%s = %s\n", anton, zacharias); + + return 0; +} diff --git a/20211108/string-ops-4.c b/20211108/string-ops-4.c new file mode 100644 index 0000000000000000000000000000000000000000..147437d5bcdf9468cb891dcc4b908538caf9c4cf --- /dev/null +++ b/20211108/string-ops-4.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char *zacharias = "Zacharias"; + char *anton = "Anton"; + + if (anton < zacharias) + printf ("%s vor %s\n", anton, zacharias); + else if (anton > zacharias) + printf ("%s nach %s\n", anton, zacharias); + else + printf ("%s = %s\n", anton, zacharias); + + return 0; +} diff --git a/20211108/string-ops-5.c b/20211108/string-ops-5.c new file mode 100644 index 0000000000000000000000000000000000000000..2f1d80df60c8a8d1a5b7777eb6829bcaeae7f591 --- /dev/null +++ b/20211108/string-ops-5.c @@ -0,0 +1,16 @@ +#include <stdio.h> +#include <string.h> + +char *zacharias = "Zacharias"; +char *anton = "Anton"; + +int main (void) +{ + if (anton < zacharias) + printf ("%s vor %s\n", anton, zacharias); + else if (anton > zacharias) + printf ("%s nach %s\n", anton, zacharias); + else + printf ("%s = %s\n", anton, zacharias); + return 0; +} diff --git a/20211108/string-ops-6.c b/20211108/string-ops-6.c new file mode 100644 index 0000000000000000000000000000000000000000..75a187146beef3be07c005400af98b80d56c2887 --- /dev/null +++ b/20211108/string-ops-6.c @@ -0,0 +1,16 @@ +#include <stdio.h> +#include <string.h> + +char *anton = "Anton"; +char *zacharias = "Zacharias"; + +int main (void) +{ + if (anton < zacharias) + printf ("%s vor %s\n", anton, zacharias); + else if (anton > zacharias) + printf ("%s nach %s\n", anton, zacharias); + else + printf ("%s = %s\n", anton, zacharias); + return 0; +} diff --git a/20211108/string-ops-7.c b/20211108/string-ops-7.c new file mode 100644 index 0000000000000000000000000000000000000000..46689eafb14487d42164ccf89e6743586423ee18 --- /dev/null +++ b/20211108/string-ops-7.c @@ -0,0 +1,9 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char *huber_anton = "Huber" " " "Anton"; + printf ("%s\n", huber_anton); + return 0; +} diff --git a/20211108/string-ops-8.c b/20211108/string-ops-8.c new file mode 100644 index 0000000000000000000000000000000000000000..4e81814b8cd569ebdce703a9d2d80057ab69db80 --- /dev/null +++ b/20211108/string-ops-8.c @@ -0,0 +1,9 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char *huber_anton = "Huber" + " " + "Anton"; + printf ("%s\n", huber_anton); + return 0; +} diff --git a/20211108/string-ops-9.c b/20211108/string-ops-9.c new file mode 100644 index 0000000000000000000000000000000000000000..953459b5608f9d82cc142879bf218d75b7d1c858 --- /dev/null +++ b/20211108/string-ops-9.c @@ -0,0 +1,9 @@ +#include <stdio.h> +#include <string.h> + +int main (void) +{ + char *huber_anton = "Huber" + ("Anton" - " "); + printf ("%s\n", huber_anton); + return 0; +} diff --git a/20211108/write-program-1.c b/20211108/write-program-1.c new file mode 100644 index 0000000000000000000000000000000000000000..157cdd77270626b002d45f7c1c0f26db742bfff0 --- /dev/null +++ b/20211108/write-program-1.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#include <errno.h> +#include <error.h> + +int main (void) +{ + FILE *f = fopen ("hello.c", "w"); + if (!f) + error (errno, errno, "cannot open file"); + fprintf (f, "#include <stdio.h>\n" + "\n" + "int main (void)\n" + "{\n" + " printf ("Hello, world!\n");\n" + " return 0;\n" + "}\n"); + if (errno) + error (errno, errno, "cannot write to file"); + fclose (f); + if (errno) + error (errno, errno, "cannot close file"); + return 0; +} diff --git a/20211108/write-program-2.c b/20211108/write-program-2.c new file mode 100644 index 0000000000000000000000000000000000000000..70a60330007f6f82dd1dca747ef44023e0d35c17 --- /dev/null +++ b/20211108/write-program-2.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#include <errno.h> +#include <error.h> + +int main (void) +{ + FILE *f = fopen ("hello.c", "w"); + if (!f) + error (errno, errno, "cannot open file"); + fprintf (f, "#include <stdio.h>\n" + "\n" + "int main (void)\n" + "{\n" + " printf (\"Hello, world!\n\");\n" + " return 0;\n" + "}\n"); + if (errno) + error (errno, errno, "cannot write to file"); + fclose (f); + if (errno) + error (errno, errno, "cannot close file"); + return 0; +} diff --git a/20211108/write-program-3.c b/20211108/write-program-3.c new file mode 100644 index 0000000000000000000000000000000000000000..37fef21f45b13f89e164d3d2022c1332275b9bed --- /dev/null +++ b/20211108/write-program-3.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#include <errno.h> +#include <error.h> + +int main (void) +{ + FILE *f = fopen ("hello.c", "w"); + if (!f) + error (errno, errno, "cannot open file"); + fprintf (f, "#include <stdio.h>\n" + "\n" + "int main (void)\n" + "{\n" + " printf (\"Hello, world!\\n\");\n" + " return 0;\n" + "}\n"); + if (errno) + error (errno, errno, "cannot write to file"); + fclose (f); + if (errno) + error (errno, errno, "cannot close file"); + return 0; +} diff --git a/20211108/write-program-4.c b/20211108/write-program-4.c new file mode 100644 index 0000000000000000000000000000000000000000..9b37afdc16a8b6920809a67b6391f89e59755759 --- /dev/null +++ b/20211108/write-program-4.c @@ -0,0 +1,26 @@ +#include <stdio.h> +#include <errno.h> +#include <error.h> +#include <stdlib.h> + +int main (void) +{ + FILE *f = fopen ("hello.c", "w"); + if (!f) + error (errno, errno, "cannot open file"); + fprintf (f, "#include <stdio.h>\n" + "\n" + "int main (void)\n" + "{\n" + " printf (\"Hello, world!\\n\");\n" + " return 0;\n" + "}\n"); + if (errno) + error (errno, errno, "cannot write to file"); + fclose (f); + if (errno) + error (errno, errno, "cannot close file"); + system ("gcc -Wall -O hello.c -o hello"); + system ("./hello"); + return 0; +}