00:12:36 -!- tgwizard has quit (Remote closed the connection). 00:47:30 -!- Sgeo has joined. 00:53:59 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)). 01:16:47 -!- anonfunc has joined. 01:19:50 -!- Sukoshi has quit ("仮初めな出るということをしているけど。10分まで待って。どうも。"). 01:24:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 01:31:19 -!- CakeProphet has joined. 01:57:43 ~cat foo 01:57:52 ummm 01:58:12 ~exec self.print_callbacks() 01:58:16 oh 01:59:16 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :(.*)", lambda x,y : bot.raw("PRIVMSG %s :%s" % (y.group(1), y.group(2)))) 01:59:22 ~cat foo 01:59:22 ~cat foo 01:59:55 ~exec self.raw_regex_queue.pop() 01:59:55 ~exec self.raw_regex_queue.pop() 02:00:03 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y : bot.raw("PRIVMSG %s :%s" % (y.group(1), y.group(2)))) 02:00:07 ~cat foo 02:00:07 foo 02:02:28 ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running]) 02:02:28 [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running])', 0.00041484832763671875)] 02:02:37 urgh, I want ~kill 02:07:44 -!- bsmnt_bot has quit (Remote closed the connection). 02:07:47 -!- bsmnt_bot has joined. 02:07:50 ~ps 02:08:04 ~exec __import__("time").sleep(100) 02:08:06 ~ps 02:08:06 -!- bsmnt_bot has quit (Remote closed the connection). 02:08:26 -!- bsmnt_bot has joined. 02:08:28 ~ps 02:08:30 ~exec __import__("time").sleep(100) 02:08:32 ~ps 02:08:32 0: ('__import__("time").sleep(100)', 1168048899.352859) 02:09:50 -!- bsmnt_bot has quit (Remote closed the connection). 02:10:01 -!- bsmnt_bot has joined. 02:10:03 ~exec __import__("time").sleep(100) 02:10:04 ~ps 02:10:05 0: '__import__("time").sleep(100)' 1.35289692879 02:10:22 hmm, what should the format be 02:10:40 -!- bsmnt_bot has quit (Remote closed the connection). 02:10:54 -!- bsmnt_bot has joined. 02:10:55 ~exec __import__("time").sleep(100) 02:11:00 ~exec __import__("time").sleep(10) 02:11:02 ~ps 02:11:02 0: '__import__("time").sleep(100)', 6.17545199394 seconds 02:11:02 1: '__import__("time").sleep(10)', 2.13798308372 seconds 02:11:44 ~ps 02:11:45 0: '__import__("time").sleep(100)', 48.8571178913 seconds 02:11:49 -!- bsmnt_bot has quit (Remote closed the connection). 02:11:56 -!- bsmnt_bot has joined. 02:11:58 ~exec __import__("time").sleep(100) 02:12:00 ~ps 02:12:00 0: '__import__("time").sleep(100)', 1.68 seconds 02:12:05 ~ps 02:12:05 0: '__import__("time").sleep(100)', 6.57 seconds 02:12:08 cool 02:13:04 ~ps 02:13:04 0: '__import__("time").sleep(100)', 65.71 seconds 02:13:08 ~exec __import__("time").sleep(123) 02:13:10 ~ps 02:13:10 0: '__import__("time").sleep(100)', 71.65 seconds 02:13:10 1: '__import__("time").sleep(123)', 1.35 seconds 02:13:20 ~exec __import__("time").sleep(105) 02:13:21 ~ps 02:13:22 0: '__import__("time").sleep(100)', 83.13 seconds 02:13:22 1: '__import__("time").sleep(123)', 12.83 seconds 02:13:22 2: '__import__("time").sleep(105)', 1.30 seconds 02:14:44 ~ps 02:14:44 0: '__import__("time").sleep(123)', 95.86 seconds 02:14:45 1: '__import__("time").sleep(105)', 84.33 seconds 02:16:31 hmm 02:17:20 pids should really stay the same, shouldn't they 02:23:18 -!- bsmnt_bot has quit (Remote closed the connection). 02:23:20 -!- bsmnt_bot has joined. 02:23:24 ~exec pass 02:23:33 -!- bsmnt_bot has quit (Remote closed the connection). 02:23:39 -!- bsmnt_bot has joined. 02:23:41 ~exec pass 02:23:43 ~exec pass 02:23:53 ~exec time.sleep(10) 02:24:02 ~exec print os.getpid() 02:28:00 still no killing of threads :( 02:29:10 -!- ihope has quit (Connection timed out). 02:34:14 arg 02:35:28 ~exec asdf 02:35:41 -!- bsmnt_bot has quit (Remote closed the connection). 02:35:44 -!- bsmnt_bot has joined. 02:35:46 ~exec asdf 02:35:59 ~exec while 1: os.fork() 02:36:16 ~ps 02:36:22 ... 02:36:34 ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[2]) for i in self.commands_running]) 02:36:49 ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running]) 02:36:49 [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running])', 0.00040602684020996094)] 02:36:57 oh duh 02:37:00 ~exec while 1: os.fork() 02:37:02 ~ps 02:37:07 ~exec self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running]) 02:37:09 [('self.raw("PRIVMSG #esoteric :%s" % [(i[0],time.time() - i[1]) for i in self.commands_running])', 0.00045800209045410156)] 02:37:18 !ps 02:37:23 2 bsmntbombdood: ps 02:38:46 -!- bsmnt_bot has quit (Remote closed the connection). 02:38:51 !ps 02:38:52 -!- bsmnt_bot has joined. 02:38:54 !ps 02:38:55 2 bsmntbombdood: ps 02:38:57 2 bsmntbombdood: ps 02:38:58 ~ps 02:38:58 None 02:39:25 ~exec self.verbose = Falso 02:39:27 ~exec self.verbose = False 02:39:30 ~ps 02:39:49 ~exec self.verbose = True 02:39:51 ~ps 02:39:51 None 03:13:51 -!- oerjan has joined. 03:49:24 -!- oerjan has quit ("leaving"). 04:53:05 -!- oerjan has joined. 05:30:16 -!- Sartak has joined. 05:30:28 -!- Sartak has quit (Client Quit). 05:38:41 -!- digital_me has quit (Read error: 110 (Connection timed out)). 05:50:12 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 06:30:52 cy'all later 06:31:06 -!- RodgerTheGreat has quit. 06:36:48 ~ps 06:36:48 None 06:37:19 ~exec __import__("time").sleep() 06:37:21 ~ps 06:37:21 None 06:37:32 ~exec __import__("time").sleep(10) 06:37:33 ~ps 06:37:34 0: '__import__("time").sleep(10)', 1.21 seconds 06:37:37 woot 06:39:26 * bsmntbombdood feels leet 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:47:12 -!- oerjan has quit ("leaving"). 10:30:08 -!- tgwizard has joined. 13:07:22 -!- puzzlet_ has joined. 13:10:53 -!- CakeProphet has quit (Read error: 113 (No route to host)). 13:11:22 -!- CakeProphet has joined. 13:13:34 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 14:03:40 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)). 14:03:49 -!- CakeProphet has joined. 14:15:23 -!- CakeProphet has quit ("haaaaaaaaaa"). 14:38:00 -!- jix has joined. 15:29:20 -!- tgwizard has quit (Remote closed the connection). 15:36:22 -!- tgwizard has joined. 15:38:00 -!- ihope has joined. 17:26:35 -!- RodgerTheGreat has joined. 18:14:17 -!- Sgeo has joined. 18:37:35 -!- CakeProphet has joined. 18:57:13 -!- calamari has joined. 18:58:42 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 19:03:51 -!- jix has joined. 19:19:25 -!- CakeProphet_ has joined. 19:19:27 -!- CakeProphet has quit (Connection reset by peer). 19:19:31 -!- CakeProphet_ has changed nick to CakeProphet. 20:05:47 -!- mtve has joined. 21:01:30 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)). 21:01:38 -!- RodgerTheGreat has joined. 22:48:22 -!- tgwizard has quit (Remote closed the connection). 23:10:46 ps 23:10:51 ~ps 23:10:51 None 23:11:44 ~~~~~~~~~~~~~~~~~~ 23:15:16 ~ps 23:15:17 None 23:15:20 Hmm. 23:15:22 ~ps 23:15:22 None 23:15:23 ~ps 23:15:24 None 23:15:25 Aww. 23:15:26 what? 23:15:36 I was hoping one ~ps would catch the other. :-) 23:15:38 only ~exec commands go in ps 23:15:43 Oh. 23:15:51 ~exec __import__("time").sleep(10) 23:15:52 ~ps 23:15:52 0: '__import__("time").sleep(10)', 0.96 seconds 23:16:40 I want a ~horriblysandboxedexec command that I can use. 23:16:58 There was some work on a python safe-exec, but it wasn't very good 23:18:29 feel free to implement it ;) 23:18:47 Just use chroots. 23:19:03 If you don't have root access, use an emulator. 23:19:17 an emulator? 23:19:30 Something that emulates x86. 23:19:34 oh 23:19:40 * bsmntbombdood goes about making a chroot 23:20:26 argh, lotsa libs 23:30:25 hrm, not sure how to do this 23:36:26 debootstrap 23:36:39 ? 23:36:47 debootstrap = instant magic chroot 23:37:01 owtf 23:37:08 # chroot . 23:37:08 chroot: cannot run command `/bin/bash': No such file or directory 23:37:18 yet ./bin/bash is there... 23:37:27 Just install debootstrap ye dumbsicle 23:37:32 You don't have lib/ld-linux.so 23:37:43 I already did 23:38:07 Then you need whatever lib/ld-linux.so points to :P 23:38:17 As well as, of course, whatever `ldd bash` gives you. 23:38:20 And most importantly: 23:38:22 INSTALL DEBOOTSTRAP 23:38:46 * ihope suddenly chroots 23:39:06 You need to run debootstrap, too, not just install the package. 23:39:18 * ihope opens up Debian 23:39:18 Well, yes :-P 23:40:00 nevar! 23:40:18 'chroot' isn't really a good sandbox, though. Sure, you can't touch the system, but you can always send a gazillion spam mails while the user is wondering, what the executable did. 23:40:27 Send mail? 23:40:38 You can do whatnow? 23:41:04 /bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory 23:41:06 Well, make network connections. Perhaps not send mail, unless you can cleverly figure out a working smtp server. 23:41:09 eergh 23:41:25 You can make network connections inside a chroot jail? 23:41:30 What happened to everything being a file? 23:41:30 duh 23:42:24 a ha! 23:42:25 bash! 23:42:41 ihope; At least in Linux, sockets aren't files. 'socket' is a system call, and you can certainly do that in a chroot jail. 23:42:53 Mmh. 23:43:03 How many system calls are there? 23:43:24 ... a lot. 23:43:40 In a linux system, you can look at /usr/include/asm/unistd.h (or whatever that includes) for a rather complete list. 23:43:54 I take it there's more than... four. 23:44:08 ya 23:44:23 Die, run full, run delegate, more. 23:44:27 That's four. 23:44:46 Of course, some might consider the use of one called "more" cheating... 23:45:15 But "more" shouldn't be used too much anyway. 23:45:31 hrm 23:45:35 Then again, starting another process every time you want to do a basic operation might not be... well. 23:45:38 How do I drop root inside the chroot? 23:45:56 make $CHROOT/etc/passwd? 23:46:07 su? 23:46:34 Die, run full, run delegate, read, write, more should be all you need. 23:46:50 My 'su' refuses to change uid to any random number, which is strange. 23:47:01 su < /dev/random 23:47:04 That doesn't work? 23:47:50 >>> os.setuid(1000) 23:47:51 >>> os.getuid() 23:47:51 1000 23:47:52 hmmmm 23:48:08 I guess that means i'm not root anymore 23:48:41 So anyway, all processes not Unreasonably Restricted would be allowed to "die", while only a few would be able to "more", because you can do anything at all with "more", 23:48:45 s/,/./ 23:49:18 You can also do anything at all with "run full" or "write", but only if you're allowed to "run full" or "write" everything. 23:50:38 Depending on how the system's set up, allowing to "read" everything may or may not give a process omnipotence. Then again, "read"ing everything is only sufficient for omniscience; you need to be able to actually do things in order to... do anything. 23:52:10 Actually, "run full" isn't that necessary, as it can be built from "more" and "run delegate". Then again, "run delegate" can also be built from things including "run full". 23:52:12 ok, think i've got it 23:55:50 uuugh, can't resolve hostnames