Benutzt hier irgendjemand ShellInABox (2.14, vom originalen Github-Account geladen, Patches aus dem Freetz-Paket) im Daemon-Mode (genauer nicht im CGI-Mode)?
Anstelle einer .config-Datei nur die betreffenden Settings, ein "clean build" ausschließlich mit diesem Paket läuft im Moment gerade bei mir ... wenn sich mein Fehler bestätigt, kommt eine ordentliche .config-Datei dazu.
Auf einer 7490 funktioniert das erst einmal nicht, inzwischen auch auf einer 7390 nicht mehr (hier ging es vorher aus irgendeinem Grund, aber da könnte ich auch die Quellen verändert haben vor einiger Zeit, was leider einem unüberlegten "make distclean" zum Opfer fiel):
Ich reduziere gerade die Umgebung auf "minimales Freetz", nur mit diesem einen Paket, um Seiteneffekte an anderen Stellen auszuschließen und baue ausschließlich das ShellInABox-Paket für Vx180 und VR9.
Um einen Anhaltspunkt zu haben, ob irgendetwas an meiner Build-Umgebung nicht stimmt oder ob das ein Problem des Paketes ist (das statische Binary hat wirklich keine weiteren Referenzen auf irgendwelche Libs, ich habe es vor dem Strippen - ab heute auch Rotlicht-Werbung, wenn der Spider das liest? - geprüft), wäre es nützlich zu wissen, ob das bei jemand anderem in der oben gezeigten Art funktioniert.
Die Ursache des "Child terminated" ist nach "strace" ein POLLHUP-Signal für einen - meiner Meinung nach unbenutzten - File-Deskriptor im Rahmen eines "poll"-Calls für mehrere Files. Der unten rot markierte Aufruf endet mit einem Fehler für FD 7, der aber (darüber in blau markiert) eigentlich schon geschlossen ist und nur dazu diente, etwas Zufall aus /dev/urandom zu ziehen.
Entweder ich übersehe einen früheren Abbruch des Childs oder verstehe da (noch habe ich nicht in die Quellen gesehen, jedenfalls nicht richtig) etwas fundamental falsch, wenn ich in FD7 erst einmal die Pipe zwischen der Shell und dem Parent-Prozess sehe.
Eigentlich kann es ja nicht so sehr viele Gründe geben, wenn ein Kindsprozess beendet wird (wenn es am Ende nicht am FD 7 liegt). Da aber UID/GID 0 verwendet werden und auch /bin/sh mit ziemlicher Sicherheit ausgeführt werden kann (utmp/wtmp,PAM, eigentlich alles mit potentiellen Zugriffsproblemen, sollte beim make disabled sein für die Ausführung auf der Box), bin ich im Moment etwas ratlos, was da am Ende tatsächlich schief geht. Nun ist der Quelltext auch nicht unbedingt der übersichtlichste ... aber das wird schon, wenn ich mir sicher sein kann, da kein Phantom zu jagen.
Auf der anderen Seite gibt es schon unzählige Forks (selten so viele nicht weiter gepflegte Forks gesehen) des originalen Repositories (das Freetz-Paket nutzt das originale Paket und 4 Patches aus irgendeiner anderen Quelle), vielleicht enthält ja einer davon tatsächlich schon die funktionierende Lösung?
Es gibt eine entsprechende Fehlermeldung (Issue 248) im Feed, aber der Fork, der von sich behauptet, diesen Fehler beseitigt zu haben, enthält nicht einmal die PAM-Teile, womit für mich ein früheres Forken mit nachfolgenden Änderungen am "Original" logisch wäre.
Soviel zur Erklärung ... ich suche also nicht unbedingt Hilfe bei der Fehlersuche (auch wenn ich mich gerne mit jemandem austausche, der mitsuchen will), sondern eher die Erfahrungen anderer (in vergleichbarer Konfiguration), die mich vielleicht auf einen funktionierenden Fork stoßen können, ohne daß ich selbst suchen muß.
Ich brauche überhaupt erst einmal eine funktionierende SIAB-Version, bevor ich da die Benutzung des Box-Zertifikats ranstricken kann.
Ach ja, auch wenn die auf der 7390 mal lief, machte sie mit diversen Sonderzeichen eigentlich nur Späne (damit war schon mein Kennwort nicht eingebbar) ... kriegt jemand damit "*", "#", "+", "<" und "ß" (inkl. der Modifikationen auf den jeweiligen Tasten) eingegeben? Dann läge es wieder an meiner speziellen Konfiguration des Notebooks mit irgendwelchen unbekannten Make-/Break-Codes, aber das kann ich mir fast nicht vorstellen - wird ja alles auf der Javascript-Ebene "übersetzt" und da funktionieren die Keys.
Anstelle einer .config-Datei nur die betreffenden Settings, ein "clean build" ausschließlich mit diesem Paket läuft im Moment gerade bei mir ... wenn sich mein Fehler bestätigt, kommt eine ordentliche .config-Datei dazu.
Code:
FREETZ_PACKAGE_SHELLINABOX=y
FREETZ_PACKAGE_SHELLINABOX_STATIC=y
FREETZ_PACKAGE_SHELLINABOX_SSL=y
Code:
root@FB7490:~ $ cd /var/media/ftp/bin/
root@FB7490:/var/media/ftp/bin $ ls -l ./shellinaboxd;./shellinaboxd -d -t -g 0 -u 0 --service=/:0:0:/:/bin/sh
-rwxr-xr-x 1 root root 1429460 May 15 14:27 ./shellinaboxd
Command line: ./shellinaboxd -d -t -g 0 -u 0 --service=/:0:0:/:/bin/sh
Listening on port 4200
Accepted connection from 192.168.123.2:55956
Handling "GET" "/"
Compressed response from 4967 to 2124
192.168.123.2 - - [15/May/2015:15:06:32 +0200] "GET / HTTP/1.1" 200 2217
Handling "GET" "/styles.css"
Compressed response from 7286 to 1498
192.168.123.2 - - [15/May/2015:15:06:32 +0200] "GET /styles.css HTTP/1.1" 200 1630
Accepted connection from 192.168.123.2:55957
Handling "GET" "/ShellInABox.js"
Compressed response from 186756 to 41961
192.168.123.2 - - [15/May/2015:15:06:32 +0200] "GET /ShellInABox.js HTTP/1.1" 200 42076
Handling "GET" "/favicon.ico"
Compressed response from 2307 to 1983
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "GET /favicon.ico HTTP/1.1" 200 2079
Handling "GET" "/favicon.ico"
Compressed response from 2307 to 1983
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "GET /favicon.ico HTTP/1.1" 200 2079
Handling "GET" "/favicon.ico"
Compressed response from 2307 to 1983
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "GET /favicon.ico HTTP/1.1" 200 2079
Handling "GET" "/keyboard.png"
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "GET /keyboard.png HTTP/1.1" 200 873
Handling "GET" "/keyboard.html"
Compressed response from 3181 to 801
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "GET /keyboard.html HTTP/1.1" 200 893
Handling "POST" "/?"
Creating a new session: iMQrtZuDmGEVlr9LHl2j6Q
Window size changed to 190x56
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "POST /? HTTP/1.1" 200 157
Child terminated
Handling "POST" "/?"
Failed to find session: iMQrtZuDmGEVlr9LHl2j6Q
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "POST /? HTTP/1.1" 400 458
Closing connection to 192.168.123.2:55957
Handling "POST" "/?"
Failed to find session: iMQrtZuDmGEVlr9LHl2j6Q
192.168.123.2 - - [15/May/2015:15:06:33 +0200] "POST /? HTTP/1.1" 400 458
Closing connection to 192.168.123.2:55956
^CShutting down server
Done
root@FB7490:/var/media/ftp/bin $
Um einen Anhaltspunkt zu haben, ob irgendetwas an meiner Build-Umgebung nicht stimmt oder ob das ein Problem des Paketes ist (das statische Binary hat wirklich keine weiteren Referenzen auf irgendwelche Libs, ich habe es vor dem Strippen - ab heute auch Rotlicht-Werbung, wenn der Spider das liest? - geprüft), wäre es nützlich zu wissen, ob das bei jemand anderem in der oben gezeigten Art funktioniert.
Die Ursache des "Child terminated" ist nach "strace" ein POLLHUP-Signal für einen - meiner Meinung nach unbenutzten - File-Deskriptor im Rahmen eines "poll"-Calls für mehrere Files. Der unten rot markierte Aufruf endet mit einem Fehler für FD 7, der aber (darüber in blau markiert) eigentlich schon geschlossen ist und nur dazu diente, etwas Zufall aus /dev/urandom zu ziehen.
Code:
root@FB7490:~ $ strace ../bin/shellinaboxd -d -t -g 0 -u 0 --service=/:0:0:/:/bin/sh
execve("../bin/shellinaboxd", ["../bin/shellinaboxd", "-d", "-t", "-g", "0", "-u", "0", "--service=/:0:0:/:/bin/sh"], [/* 286 vars */]) = 0
brk(0) = 0x572000
brk(0x572c58) = 0x572c58
set_thread_area(0x579440) = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
prctl(PR_SET_DUMPABLE, 0) = 0
setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=4195992}) = 0
getrlimit(RLIMIT_CPU, {rlim_cur=9223372034707292159, rlim_max=9223372032564004520}) = 0
getrlimit(RLIMIT_DATA, {rlim_cur=9223372034707292159, rlim_max=9223372032564004520}) = 0
getrlimit(RLIMIT_FSIZE, {rlim_cur=9223372034707292159, rlim_max=9223372032564004520}) = 0
getrlimit(RLIMIT_NPROC, {rlim_cur=4118873637823, rlim_max=9223372032564004520}) = 0
setrlimit(RLIMIT_NPROC, {rlim_cur=4121021120511, rlim_max=9223372032564004576}) = 0
getrlimit(RLIMIT_NPROC, {rlim_cur=4121021120511, rlim_max=9223372032564004588}) = 0
setrlimit(RLIMIT_NPROC, {rlim_cur=9223372034707292159, rlim_max=9223372032564004652}) = 0
brk(0x573c58) = 0x573c58
brk(0x574000) = 0x574000
brk(0x576000) = 0x576000
open("/etc/passwd", O_RDONLY) = 3
ioctl(3, TIOCNXCL, 0x7fb6fa38) = -1 ENOTTY (Inappropriate ioctl for device)
brk(0x577000) = 0x577000
read(3, "root:x:0:0:root:/var/media/ftp/r"..., 4096) = 545
close(3) = 0
open("/etc/group", O_RDONLY) = 3
ioctl(3, TIOCNXCL, 0x7fb6fa40) = -1 ENOTTY (Inappropriate ioctl for device)
read(3, "root:x:0:\n", 4096) = 10
close(3) = 0
write(2, "Command line:", 13Command line:) = 13
write(2, " ../bin/shellinaboxd -d -t -g 0 "..., 62 ../bin/shellinaboxd -d -t -g 0 -u 0 --service=/:0:0:/:/bin/sh) = 62
write(2, "\n", 1
) = 1
socketpair(PF_LOCAL, SOCK_STREAM, 0, [3, 4]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x572068) = 8606
close(4) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
gettimeofday({1431702047, 622609}, NULL) = 0
bind(4, {sa_family=AF_INET, sin_port=htons(4200), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(4, 128) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(4200), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
write(2, "Listening on port ", 18Listening on port ) = 18
write(2, "4200", 44200) = 4
write(2, "\n", 1
) = 1
getresuid([0], [0], [0]) = 0
getresgid([0], [0], [0]) = 0
setgroups(0, []) = 0
getresuid([0], [0], [0]) = 0
setresgid(0, 0, 0) = 0
setresuid(0, 0, 0) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigaction(SIGHUP, {0x80000008, [], SA_SIGINFO|0x401c44}, NULL, 16) = 0
rt_sigaction(SIGINT, {0x80000008, [], SA_SIGINFO|0x401c44}, NULL, 16) = 0
rt_sigaction(SIGQUIT, {0x80000008, [], SA_SIGINFO|0x401c44}, NULL, 16) = 0
rt_sigaction(SIGTERM, {0x80000008, [], SA_SIGINFO|0x401c44}, NULL, 16) = 0
time([1431702047]) = 1431702047
poll([{fd=4, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
time([1431702108]) = 1431702108
accept(4, {sa_family=AF_INET, sin_port=htons(56612), sin_addr=inet_addr("192.168.123.2")}, [16]) = 5
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0
getpeername(5, {sa_family=AF_INET, sin_port=htons(56612), sin_addr=inet_addr("192.168.123.2")}, [16]) = 0
open("/etc/hosts", O_RDONLY) = 6
ioctl(6, TIOCNXCL, 0x7fb6f580) = -1 ENOTTY (Inappropriate ioctl for device)
read(6, "127.0.0.1 localhost\n", 4096) = 20
read(6, "", 4096) = 0
close(6) = 0
stat64("/etc/resolv.conf", {st_mode=S_IFREG|0777, st_size=21, ...}) = 0
open("/etc/resolv.conf", O_RDONLY) = 6
ioctl(6, TIOCNXCL, 0x7fb6f278) = -1 ENOTTY (Inappropriate ioctl for device)
read(6, "nameserver 127.0.0.1\n", 4096) = 21
read(6, "", 4096) = 0
close(6) = 0
uname({sys="Linux", node="FB7490", ...}) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 6
connect(6, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 28) = 0
send(6, "\0\2\1\0\0\1\0\0\0\0\0\0\0012\003130\003168\003192\7in-ad"..., 44, 0) = 44
poll([{fd=6, events=POLLIN}], 1, 5000) = 1 ([{fd=6, revents=POLLIN}])
recv(6, "\0\2\201\3\0\1\0\0\0\0\0\0\0012\003130\003168\003192\7in-ad"..., 512, MSG_DONTWAIT) = 44
close(6) = 0
write(2, "Accepted connection from ", 25Accepted connection from ) = 25
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, ":", 1:) = 1
write(2, "56612", 556612) = 5
write(2, "\n", 1
) = 1
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 601000) = 1 ([{fd=5, revents=POLLIN}])
time([1431702108]) = 1431702108
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, "GET / HTTP/1.1\r\nHost: 192.168.13"..., 4096) = 305
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/", 1/) = 1
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
brk(0x578000) = 0x578000
brk(0x579000) = 0x579000
brk(0x57b000) = 0x57b000
brk(0x57c000) = 0x57c000
brk(0x58c000) = 0x58c000
brk(0x59c000) = 0x59c000
brk(0x5ac000) = 0x5ac000
brk(0x5bc000) = 0x5bc000
write(2, "Compressed response from ", 25Compressed response from ) = 25
write(2, "4967", 44967) = 4
write(2, " to ", 4 to ) = 4
write(2, "2124", 42124) = 4
write(2, "\n", 1
) = 1
brk(0x57c000) = 0x57c000
time(NULL) = 1431702108
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:48 +0200]", 28[15/May/2015:17:01:48 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/", 1/) = 1
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "2217", 42217) = 4
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(5, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 2217) = 2217
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 601000) = 1 ([{fd=5, revents=POLLIN}])
time([1431702108]) = 1431702108
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, "GET /styles.css HTTP/1.1\r\nHost: "..., 4096) = 307
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/styles.css", 11/styles.css) = 11
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
brk(0x58c000) = 0x58c000
brk(0x59c000) = 0x59c000
brk(0x5ac000) = 0x5ac000
brk(0x5bc000) = 0x5bc000
write(2, "Compressed response from ", 25Compressed response from ) = 25
write(2, "7286", 47286) = 4
write(2, " to ", 4 to ) = 4
write(2, "1498", 41498) = 4
write(2, "\n", 1
) = 1
brk(0x57c000) = 0x57c000
time(NULL) = 1431702108
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:48 +0200]", 28[15/May/2015:17:01:48 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/styles.css", 11/styles.css) = 11
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "1630", 41630) = 4
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(5, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 1630) = 1630
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 601000) = 1 ([{fd=4, revents=POLLIN}])
time([1431702108]) = 1431702108
accept(4, {sa_family=AF_INET, sin_port=htons(56613), sin_addr=inet_addr("192.168.123.2")}, [16]) = 6
fcntl64(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0
getpeername(6, {sa_family=AF_INET, sin_port=htons(56613), sin_addr=inet_addr("192.168.123.2")}, [16]) = 0
open("/etc/hosts", O_RDONLY) = 7
ioctl(7, TIOCNXCL, 0x7fb6f580) = -1 ENOTTY (Inappropriate ioctl for device)
read(7, "127.0.0.1 localhost\n", 4096) = 20
read(7, "", 4096) = 0
close(7) = 0
stat64("/etc/resolv.conf", {st_mode=S_IFREG|0777, st_size=21, ...}) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 7
connect(7, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 28) = 0
send(7, "\0\3\1\0\0\1\0\0\0\0\0\0\0012\003130\003168\003192\7in-ad"..., 44, 0) = 44
poll([{fd=7, events=POLLIN}], 1, 5000) = 1 ([{fd=7, revents=POLLIN}])
recv(7, "\0\3\201\3\0\1\0\0\0\0\0\0\0012\003130\003168\003192\7in-ad"..., 512, MSG_DONTWAIT) = 44
close(7) = 0
write(2, "Accepted connection from ", 25Accepted connection from ) = 25
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, ":", 1:) = 1
write(2, "56613", 556613) = 5
write(2, "\n", 1
) = 1
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 3, 601000) = 2 ([{fd=5, revents=POLLIN}, {fd=6, revents=POLLIN}])
time([1431702108]) = 1431702108
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, "GET /favicon.ico HTTP/1.1\r\nHost:"..., 4096) = 316
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/favicon.ico", 12/favicon.ico) = 12
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
brk(0x589000) = 0x589000
brk(0x599000) = 0x599000
brk(0x5a9000) = 0x5a9000
brk(0x5b9000) = 0x5b9000
write(2, "Compressed response from ", 25Compressed response from ) = 25
write(2, "2307", 42307) = 4
write(2, " to ", 4 to ) = 4
write(2, "1983", 41983) = 4
write(2, "\n", 1
) = 1
brk(0x579000) = 0x579000
time(NULL) = 1431702108
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:48 +0200]", 28[15/May/2015:17:01:48 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/favicon.ico", 12/favicon.ico) = 12
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "2079", 42079) = 4
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(5, "HTTP/1.1 200 OK\r\nContent-Type: i"..., 2079) = 2079
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, "GET /ShellInABox.js HTTP/1.1\r\nHo"..., 4096) = 296
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/ShellInABox.js", 15/ShellInABox.js) = 15
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
brk(0x5a5000) = 0x5a5000
brk(0x5d2000) = 0x5d2000
brk(0x5d4000) = 0x5d4000
brk(0x5e4000) = 0x5e4000
brk(0x5f4000) = 0x5f4000
brk(0x604000) = 0x604000
brk(0x614000) = 0x614000
write(2, "Compressed response from ", 25Compressed response from ) = 25
write(2, "186756", 6186756) = 6
write(2, " to ", 4 to ) = 4
write(2, "41961", 541961) = 5
write(2, "\n", 1
) = 1
brk(0x5d4000) = 0x5d4000
brk(0x581000) = 0x581000
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:48 +0200]", 28[15/May/2015:17:01:48 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/ShellInABox.js", 15/ShellInABox.js) = 15
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "42076", 542076) = 5
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(6, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 42076) = 36500
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(6, "\7\374;\340\177\2\376'\340\177\2\376'\340\177\2\376'\340\177\2\376'\340\177\2\376'\340\177\2\376"..., 5576) = 5576
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 3, 601000) = 1 ([{fd=5, revents=POLLIN}])
time([1431702109]) = 1431702109
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, "GET /favicon.ico HTTP/1.1\r\nHost:"..., 4096) = 316
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/favicon.ico", 12/favicon.ico) = 12
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
brk(0x589000) = 0x589000
brk(0x599000) = 0x599000
brk(0x5a9000) = 0x5a9000
brk(0x5b9000) = 0x5b9000
write(2, "Compressed response from ", 25Compressed response from ) = 25
write(2, "2307", 42307) = 4
write(2, " to ", 4 to ) = 4
write(2, "1983", 41983) = 4
write(2, "\n", 1
) = 1
brk(0x579000) = 0x579000
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:49 +0200]", 28[15/May/2015:17:01:49 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/favicon.ico", 12/favicon.ico) = 12
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "2079", 42079) = 4
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(5, "HTTP/1.1 200 OK\r\nContent-Type: i"..., 2079) = 2079
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 3, 600000) = 1 ([{fd=6, revents=POLLIN}])
time([1431702109]) = 1431702109
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, "GET /favicon.ico HTTP/1.1\r\nHost:"..., 4096) = 286
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/favicon.ico", 12/favicon.ico) = 12
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
brk(0x589000) = 0x589000
brk(0x599000) = 0x599000
brk(0x5a9000) = 0x5a9000
brk(0x5b9000) = 0x5b9000
write(2, "Compressed response from ", 25Compressed response from ) = 25
write(2, "2307", 42307) = 4
write(2, " to ", 4 to ) = 4
write(2, "1983", 41983) = 4
write(2, "\n", 1
) = 1
brk(0x579000) = 0x579000
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:49 +0200]", 28[15/May/2015:17:01:49 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/favicon.ico", 12/favicon.ico) = 12
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "2079", 42079) = 4
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(6, "HTTP/1.1 200 OK\r\nContent-Type: i"..., 2079) = 2079
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 3, 601000) = 2 ([{fd=5, revents=POLLIN}, {fd=6, revents=POLLIN}])
time([1431702109]) = 1431702109
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, "GET /keyboard.html HTTP/1.1\r\nHos"..., 4096) = 355
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/keyboard.html", 14/keyboard.html) = 14
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
brk(0x589000) = 0x589000
brk(0x599000) = 0x599000
brk(0x5a9000) = 0x5a9000
brk(0x5b9000) = 0x5b9000
write(2, "Compressed response from ", 25Compressed response from ) = 25
write(2, "3181", 43181) = 4
write(2, " to ", 4 to ) = 4
write(2, "801", 3801) = 3
write(2, "\n", 1
) = 1
brk(0x579000) = 0x579000
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:49 +0200]", 28[15/May/2015:17:01:49 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/keyboard.html", 14/keyboard.html) = 14
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "893", 3893) = 3
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(5, "HTTP/1.1 200 OK\r\nContent-Type: t"..., 893) = 893
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, "GET /keyboard.png HTTP/1.1\r\nHost"..., 4096) = 324
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "GET", 3GET) = 3
write(2, "\" \"", 3" ") = 3
write(2, "/keyboard.png", 13/keyboard.png) = 13
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:49 +0200]", 28[15/May/2015:17:01:49 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "GET", 3GET) = 3
write(2, " ", 1 ) = 1
write(2, "/keyboard.png", 13/keyboard.png) = 13
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "873", 3873) = 3
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(6, "HTTP/1.1 200 OK\r\nContent-Type: i"..., 873) = 873
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 3, 601000) = 1 ([{fd=6, revents=POLLIN}])
time([1431702109]) = 1431702109
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, "POST /? HTTP/1.1\r\nHost: 192.168."..., 4096) = 535
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "POST", 4POST) = 4
write(2, "\" \"", 3" ") = 3
write(2, "/?", 2/?) = 2
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 7
read(7, "\200\367\320\260b6?cr\225\217\303\261v\31\274", 16) = 16
close(7) = 0
write(2, "Creating a new session: ", 24Creating a new session: ) = 24
write(2, "gPfQsGI2P2NylY/DsXYZvA", 22gPfQsGI2P2NylY/DsXYZvA) = 22
write(2, "\n", 1
) = 1
write(3, "\0\0\0\0\0\0\0\276\0\0\0008192.168.123.2\0\0\0\0\0\0\0"..., 171) = 171
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\0\0$j", 4}], msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, {7}}, msg_flags=0}, 0) = 4
write(2, "Window size changed to ", 23Window size changed to ) = 23
write(2, "190", 3190) = 3
write(2, "x", 1x) = 1
write(2, "56", 256) = 2
write(2, "\n", 1
) = 1
ioctl(7, 0x40087468, 0x7fb6ea30) = 0
ioctl(7, 0x80087467, 0x7fb6ea30) = 0
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:49 +0200]", 28[15/May/2015:17:01:49 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "POST", 4POST) = 4
write(2, " ", 1 ) = 1
write(2, "/?", 2/?) = 2
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "200", 3200) = 3
write(2, " ", 1 ) = 1
write(2, "157", 3157) = 3
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(6, "HTTP/1.1 200 OK\r\nContent-Type: a"..., 157) = 157
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, 0x7fb6eb28, 4096) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}], 4, 46000) = 1 ([{fd=7, revents=POLLHUP}])
time([1431702109]) = 1431702109
write(2, "Child terminated", 16Child terminated) = 16
write(2, "\n", 1
) = 1
time(NULL) = 1431702109
close(7) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=6, events=POLLIN}], 3, 601000) = 1 ([{fd=6, revents=POLLIN}])
time([1431702109]) = 1431702109
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(6, "POST /? HTTP/1.1\r\nHost: 192.168."..., 4096) = 523
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "POST", 4POST) = 4
write(2, "\" \"", 3" ") = 3
write(2, "/?", 2/?) = 2
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
time(NULL) = 1431702109
write(2, "Failed to find session: ", 24Failed to find session: ) = 24
write(2, "gPfQsGI2P2NylY/DsXYZvA", 22gPfQsGI2P2NylY/DsXYZvA) = 22
write(2, "\n", 1
) = 1
shutdown(6, SHUT_RD) = 0
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:49 +0200]", 28[15/May/2015:17:01:49 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "POST", 4POST) = 4
write(2, " ", 1 ) = 1
write(2, "/?", 2/?) = 2
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "400", 3400) = 3
write(2, " ", 1 ) = 1
write(2, "458", 3458) = 3
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(6, "HTTP/1.1 400 Bad Request\r\nConnec"..., 458) = 458
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Closing connection to ", 22Closing connection to ) = 22
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, ":", 1:) = 1
write(2, "56613", 556613) = 5
write(2, "\n", 1
) = 1
shutdown(6, SHUT_WR) = 0
close(6) = 0
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}], 2, 601000) = 1 ([{fd=5, revents=POLLIN}])
time([1431702109]) = 1431702109
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
read(5, "POST /? HTTP/1.1\r\nHost: 192.168."..., 4096) = 529
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Handling \"", 10Handling ") = 10
write(2, "POST", 4POST) = 4
write(2, "\" \"", 3" ") = 3
write(2, "/?", 2/?) = 2
write(2, "\"", 1") = 1
write(2, "\n", 1
) = 1
time(NULL) = 1431702109
write(2, "Failed to find session: ", 24Failed to find session: ) = 24
write(2, "gPfQsGI2P2NylY/DsXYZvA", 22gPfQsGI2P2NylY/DsXYZvA) = 22
write(2, "\n", 1
) = 1
shutdown(5, SHUT_RD) = 0
time(NULL) = 1431702109
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, " - - ", 5 - - ) = 5
write(2, "[15/May/2015:17:01:49 +0200]", 28[15/May/2015:17:01:49 +0200]) = 28
write(2, " \"", 2 ") = 2
write(2, "POST", 4POST) = 4
write(2, " ", 1 ) = 1
write(2, "/?", 2/?) = 2
write(2, " ", 1 ) = 1
write(2, "HTTP/1.1", 8HTTP/1.1) = 8
write(2, "\" ", 2" ) = 2
write(2, "400", 3400) = 3
write(2, " ", 1 ) = 1
write(2, "458", 3458) = 3
write(2, "\n", 1
) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 16) = 0
write(5, "HTTP/1.1 400 Bad Request\r\nConnec"..., 458) = 458
rt_sigpending([]) = 0
rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 16) = 0
write(2, "Closing connection to ", 22Closing connection to ) = 22
write(2, "192.168.123.2", 13192.168.123.2) = 13
write(2, ":", 1:) = 1
write(2, "56612", 556612) = 5
write(2, "\n", 1
) = 1
shutdown(5, SHUT_WR) = 0
close(5) = 0
poll([{fd=4, events=POLLIN}], 1, -1^CProcess 8605 detached
<detached ...>
Shutting down server
Done
root@FB7490:~ $
Eigentlich kann es ja nicht so sehr viele Gründe geben, wenn ein Kindsprozess beendet wird (wenn es am Ende nicht am FD 7 liegt). Da aber UID/GID 0 verwendet werden und auch /bin/sh mit ziemlicher Sicherheit ausgeführt werden kann (utmp/wtmp,PAM, eigentlich alles mit potentiellen Zugriffsproblemen, sollte beim make disabled sein für die Ausführung auf der Box), bin ich im Moment etwas ratlos, was da am Ende tatsächlich schief geht. Nun ist der Quelltext auch nicht unbedingt der übersichtlichste ... aber das wird schon, wenn ich mir sicher sein kann, da kein Phantom zu jagen.
Auf der anderen Seite gibt es schon unzählige Forks (selten so viele nicht weiter gepflegte Forks gesehen) des originalen Repositories (das Freetz-Paket nutzt das originale Paket und 4 Patches aus irgendeiner anderen Quelle), vielleicht enthält ja einer davon tatsächlich schon die funktionierende Lösung?
Es gibt eine entsprechende Fehlermeldung (Issue 248) im Feed, aber der Fork, der von sich behauptet, diesen Fehler beseitigt zu haben, enthält nicht einmal die PAM-Teile, womit für mich ein früheres Forken mit nachfolgenden Änderungen am "Original" logisch wäre.
Soviel zur Erklärung ... ich suche also nicht unbedingt Hilfe bei der Fehlersuche (auch wenn ich mich gerne mit jemandem austausche, der mitsuchen will), sondern eher die Erfahrungen anderer (in vergleichbarer Konfiguration), die mich vielleicht auf einen funktionierenden Fork stoßen können, ohne daß ich selbst suchen muß.
Ich brauche überhaupt erst einmal eine funktionierende SIAB-Version, bevor ich da die Benutzung des Box-Zertifikats ranstricken kann.
Ach ja, auch wenn die auf der 7390 mal lief, machte sie mit diversen Sonderzeichen eigentlich nur Späne (damit war schon mein Kennwort nicht eingebbar) ... kriegt jemand damit "*", "#", "+", "<" und "ß" (inkl. der Modifikationen auf den jeweiligen Tasten) eingegeben? Dann läge es wieder an meiner speziellen Konfiguration des Notebooks mit irgendwelchen unbekannten Make-/Break-Codes, aber das kann ich mir fast nicht vorstellen - wird ja alles auf der Javascript-Ebene "übersetzt" und da funktionieren die Keys.