WEBVTT 00:00:00.000 --> 00:00:09.120 silent 30C3 preroll titles 00:00:09.120 --> 00:00:11.950 applause 00:00:11.950 --> 00:00:15.000 Travis Goodspeed: First I need to apologize for typesetting this 00:00:15.000 --> 00:00:20.080 in OpenOffice. I know that the text looks like a ransom note. 00:00:20.080 --> 00:00:24.509 But that’s what happens when you don’t use LaTex. 00:00:24.509 --> 00:00:27.630 I’d also like to give a shoutout to Collin Mulliner if he is here, 00:00:27.630 --> 00:00:29.680 and our Dinosaur rock band. 00:00:29.680 --> 00:00:33.230 laughs, applause 00:00:33.230 --> 00:00:36.870 We’re a Christian rock band, we’re called ‘Jesus lives in the ISS’ and 00:00:36.870 --> 00:00:46.070 we know that he is always watching us, but we think that it’s easier for him 00:00:46.070 --> 00:00:50.199 to hear our prayers when he’s, you know, in an orbit 00:00:50.199 --> 00:00:55.689 that passes over us. So we need to use orbital tracking to know when to pray! 00:00:55.689 --> 00:00:57.749 laughter 00:00:57.749 --> 00:01:00.899 As I’m sure you can guess I’m not recognized as a legal minority religion 00:01:00.899 --> 00:01:06.140 in Germany. I’d also like to thank skytee 00:01:06.140 --> 00:01:11.010 and Fabienne Serrière and Adam Laurie 00:01:11.010 --> 00:01:16.810 and Jim Geovedi for some prior satellite tracking work, 00:01:16.810 --> 00:01:20.350 and the Scooby Crew at Dartmouth College for all sorts of fun 00:01:20.350 --> 00:01:24.689 whenever I bounce out there. This is the mission patch 00:01:24.689 --> 00:01:28.329 of the Southern Appalachian Space Agency (SASA). 00:01:28.329 --> 00:01:33.790 applause and cheers 00:01:33.790 --> 00:01:36.920 This was drawn by Scott Beibin and there are a few pieces of my people’s native 00:01:36.920 --> 00:01:42.610 culture that I need to point out here. On the right the little Dinosaur type thing 00:01:42.610 --> 00:01:48.149 with his finger going out, you might call him E.T. but we call these things 00:01:48.149 --> 00:01:51.530 ‘buggers’. They are like this tall, and they are green and that’s why the man 00:01:51.530 --> 00:01:55.990 on the left has a shotgun. laughter 00:01:55.990 --> 00:02:00.909 Because he doesn’t want to be abducted. You got a satellite dish in the middle 00:02:00.909 --> 00:02:04.350 and it’s sitting on sinter blocks because that’s also a piece of my people’s 00:02:04.350 --> 00:02:10.259 native culture. There’s a moonshine still in the background. 00:02:10.259 --> 00:02:15.120 That’s kind of like Vodka but you make it at home and from corn. 00:02:15.120 --> 00:02:19.820 And then there’s the mountain… a piece… it looks like there are snow peaks 00:02:19.820 --> 00:02:24.530 on those mountain tops. But our mountains aren’t tall enough to have snow. 00:02:24.530 --> 00:02:28.679 These are actually that we’ve blown off the lids of the mountains for coal mining. 00:02:28.679 --> 00:02:32.490 Which is another piece of my people’s native culture. 00:02:32.490 --> 00:02:37.001 And at the top, in space you can see the ISS, and you can see a banana, 00:02:37.001 --> 00:02:41.580 and you can see what I think is a bulb. This is to signify space trash. 00:02:41.580 --> 00:02:45.909 I mean there’s a lot of stuff up there. And, you know it’s symbolism that matters 00:02:45.909 --> 00:02:51.260 in these things, you know? 00:02:51.260 --> 00:02:54.729 At BerlinSides, in May of 2012 00:02:54.729 --> 00:03:00.520 I did a lecture on reverse- engineering the SPOT Connect. 00:03:00.520 --> 00:03:05.289 The SPOT Connect is a little hockey puck type thing 00:03:05.289 --> 00:03:08.950 – this is what it looks like. And these things are great. 00:03:08.950 --> 00:03:13.790 It weighs a bit more than your cell phone but it runs off of a couple of batteries, 00:03:13.790 --> 00:03:17.680 it connects to your phone by Bluetooth. 00:03:17.680 --> 00:03:21.840 Originally these were emergency locator beacons. So if you’re going hiking… 00:03:21.840 --> 00:03:24.569 have any of you seen the movie where the guy has to cut off his arm 00:03:24.569 --> 00:03:30.760 with a dull knife? If you’re hiking and you don’t want that same experience 00:03:30.760 --> 00:03:34.349 you buy one of these things. And then there’s an emergency button 00:03:34.349 --> 00:03:38.760 you can push that transmits your GPS coordinates by satellite 00:03:38.760 --> 00:03:44.180 to rescue workers. But that was boring, so they had to add social media. 00:03:44.180 --> 00:03:46.540 laughs, laughter 00:03:46.540 --> 00:03:49.680 So in addition to keeping you from chewing off your own arm 00:03:49.680 --> 00:03:54.920 this device will also allow you to tweet and make Facebook posts. 00:03:54.920 --> 00:04:00.370 laughs, laughter 00:04:00.370 --> 00:04:05.350 The idea is that as you’re running… here I’m crossing the Schuylkill River 00:04:05.350 --> 00:04:10.010 in Philadelphia and the Android phone on the left is making a post. 00:04:10.010 --> 00:04:15.659 And I did an article on reverse- engineering the Bluetooth side 00:04:15.659 --> 00:04:22.430 of these things. Because… I use a weird brand of phone that Microsoft killed off, 00:04:22.430 --> 00:04:27.520 and I’m terribly bitter about it. But I also figured out the physical layer. 00:04:27.520 --> 00:04:34.930 And that’s what this diagram shows. This transmits at 1.6125 GHz. 00:04:34.930 --> 00:04:40.830 And it sends a pseudo-random stream, so each one of these zeros is a long chunk 00:04:40.830 --> 00:04:44.140 where it’s bouncing back and forth between two different frequencies. 00:04:44.140 --> 00:04:48.750 And the same for the ones. But the way that the pattern works 00:04:48.750 --> 00:04:54.551 is that it switches the signal whenever it is going from the 0 signal 00:04:54.551 --> 00:04:59.080 to the 1 signal. And internally, there are these little pops that you can actually 00:04:59.080 --> 00:05:03.910 identify on a software defined radio recording. And this is how you can 00:05:03.910 --> 00:05:08.040 reverse-engineer the signal that the SPOT Connect is sending up 00:05:08.040 --> 00:05:14.510 to its satellite network. 00:05:14.510 --> 00:05:18.330 Everything is clear text on this. And it’s completely unencrypted. 00:05:18.330 --> 00:05:25.040 It just has your serial number, your GPS coordinates, and a bit of ASCII text. 00:05:25.040 --> 00:05:29.759 So if you listen on this frequency and you have the correct recording software 00:05:29.759 --> 00:05:33.630 you can actually watch all of the SPOT Connect messages that are transmitting 00:05:33.630 --> 00:05:39.530 up from your location. And this would be great except that this is designed for 00:05:39.530 --> 00:05:44.490 hiking in areas where there’s no cell phone service. So having an antenna 00:05:44.490 --> 00:05:47.990 on the uplink frequency is kind of useless. You know you would actually 00:05:47.990 --> 00:05:52.290 have to go out to a national park, find some guy who is about to chew his arm off, 00:05:52.290 --> 00:05:55.639 and then you could listen to his uplink where he is like tweeting: “Hey, I’m gonna 00:05:55.639 --> 00:06:00.699 chew my arm off”, you know? laughter 00:06:00.699 --> 00:06:09.810 So that’s great as a proof of concept but it’s not really anything practical. 00:06:09.810 --> 00:06:13.460 The current state of that was that I knew the protocol and I could sniff the uplinks. 00:06:13.460 --> 00:06:17.300 But I wanted to sniff the downlinks. So it’s easy for me to get the thing that 00:06:17.300 --> 00:06:21.509 goes up to the satellite. But what I wanted was what comes down from the satellite. 00:06:21.509 --> 00:06:27.400 And that requires a satellite dish. But a geo-stationary dish isn’t good enough 00:06:27.400 --> 00:06:32.249 because the satellites that run this network – there are a lot of them, 00:06:32.249 --> 00:06:37.710 it’s called the Globalstar network, they fly really low across the earth, 00:06:37.710 --> 00:06:43.289 and they fly across the earth in very tight, very fast orbits. So they’ll move 00:06:43.289 --> 00:06:48.889 from horizon to horizon in 15 to 20 minutes. Which means that you either need 00:06:48.889 --> 00:06:53.789 like a sweat shop army of kids trying to aim the satellite dish 00:06:53.789 --> 00:07:01.259 as it’s going across or you need to make it computer-controlled. 00:07:01.259 --> 00:07:04.490 Stepping back from the SPOT Connect for a little bit, and 00:07:04.490 --> 00:07:08.009 discussing some prior research. Adam Laurie did some work 00:07:08.009 --> 00:07:12.099 with geostationary satellites. These are the satellites that stay 00:07:12.099 --> 00:07:16.449 in one position in the sky. He gave two sets of talks 00:07:16.449 --> 00:07:23.740 – one in 2008 and the second in 2010. And he used a DVB-S card 00:07:23.740 --> 00:07:28.169 connected to a satellite dish with a DiSEqC motor, so that it could move 00:07:28.169 --> 00:07:34.330 the satellite dish left and right in order to scan a region of the horizon. 00:07:34.330 --> 00:07:37.259 His tool is publicly available, it’s called satmap. 00:07:37.259 --> 00:07:41.289 You can grab it at this URL. 00:07:41.289 --> 00:07:46.130 And then after he finds a signal he has a feed scanner. Normally when you use 00:07:46.130 --> 00:07:51.270 Satellite TV your provider gives you a listing of the frequencies, and 00:07:51.270 --> 00:07:58.199 your provider gives you an exact orbital position to aim your satellite dish at. 00:07:58.199 --> 00:08:02.330 But Adam’s tool allows you to scan to see which frequencies are in use and 00:08:02.330 --> 00:08:06.949 which protocols are in use, once you’ve correctly aimed your dish. 00:08:06.949 --> 00:08:09.699 And he also describes a technique for moving your dish left and right 00:08:09.699 --> 00:08:15.780 while doing this in order to identify where the satellites are. 00:08:15.780 --> 00:08:19.639 This recording here is from a re-implementation that I made 00:08:19.639 --> 00:08:24.430 of Adam’s work, in order to catch up with it. In this diagram 00:08:24.430 --> 00:08:30.199 the x-axis – because you move left and right – that shows the azimuth, 00:08:30.199 --> 00:08:35.049 that shows how far left or right my satellite dish has moved. And then 00:08:35.049 --> 00:08:40.860 the y-axis shows the frequency. And all of these dots are strong signals. 00:08:40.860 --> 00:08:48.290 So every vertical bar in which you see chunks of frequencies, that’s a satellite. 00:08:48.290 --> 00:08:52.230 But these stay in the same position. So it’s easy for me to repeat this experiment. 00:08:52.230 --> 00:08:56.780 It’s easy for me to re-run it, and to find the same satellites in the same position. 00:08:56.780 --> 00:09:04.700 It’s easy to debug this. But it can’t move in elevation. 00:09:04.700 --> 00:09:08.170 This diagram is actually a very small slice of the sky. 00:09:08.170 --> 00:09:14.450 We’re looking at a single line, maybe 10 degrees across. 00:09:14.450 --> 00:09:17.750 Maybe only 5 degrees across. 00:09:17.750 --> 00:09:22.690 So hacking Ku-band – the television satellites – has the advantage 00:09:22.690 --> 00:09:27.420 that you can use cheap standardized hardware. I bought one of these DVB-S cards 00:09:27.420 --> 00:09:33.520 in Mauerpark, in Berlin for 3 Euro. You can use standardized DiSEqC motors, 00:09:33.520 --> 00:09:37.270 you can buy them at a satellite TV shop. 00:09:37.270 --> 00:09:42.020 TV signals come with video feeds so you can actually see pictures. 00:09:42.020 --> 00:09:45.580 There was a scandal about 4..5 years ago where they were finding 00:09:45.580 --> 00:09:50.350 drone [control] feeds that were being bounced across these satellites. 00:09:50.350 --> 00:09:56.890 In the nineties it was very popular to listen to the sort of unedited sections 00:09:56.890 --> 00:09:59.910 of interviews, when people would be interviewed over a satellite, 00:09:59.910 --> 00:10:04.910 before Skype and such things became options. And 00:10:04.910 --> 00:10:08.750 there are also networking signals here using TCP/IP packets. So you can actually 00:10:08.750 --> 00:10:13.900 turn your DVB-S card into a promiscuous ethernet adapter, 00:10:13.900 --> 00:10:18.010 and start sniffing all of the traffic that comes across. This is also a great way 00:10:18.010 --> 00:10:23.750 to get free downlink bandwidth. Because you can just flood packets at an address 00:10:23.750 --> 00:10:27.660 that, you know, will be routed to you, or several addresses, and 00:10:27.660 --> 00:10:32.670 then you sniff it out as the legitimate receiver ignores them. 00:10:32.670 --> 00:10:37.100 But it also has some disadvantages. It only works for geostationary satellites. 00:10:37.100 --> 00:10:40.570 If the satellite is not staying in the same position relative to the ground 00:10:40.570 --> 00:10:46.750 then you can’t track it. Your dish also moves very slowly. 00:10:46.750 --> 00:10:50.410 And it only moves left and right. It won’t move up and down. 00:10:50.410 --> 00:10:53.030 And you’re limited to standardized signals. So while it’s great that you get 00:10:53.030 --> 00:10:59.230 video and TCP/IP you’re never going to get anything weird. 00:10:59.230 --> 00:11:05.230 You’re not gonna get any mobile data, you’re not going to get any 00:11:05.230 --> 00:11:10.670 Brazilian truck-drivers – we’ll get to those in a bit. laughs 00:11:10.670 --> 00:11:15.710 I misspoke, you actually will get Brazilian truck-drivers in this. 00:11:15.710 --> 00:11:19.360 So I bought a satellite dish. One of the best things about living in America is 00:11:19.360 --> 00:11:25.530 that you can buy industrial hardware cheap as dirt on ebay. 00:11:25.530 --> 00:11:29.190 I know things aren’t likely used to being a cat bite to (?)(?) human children anymore. 00:11:29.190 --> 00:11:33.400 But this satellite dish here on the left – the one in the radome – 00:11:33.400 --> 00:11:40.980 that’s my dish. And to the right, that’s the boat that it came from. 00:11:40.980 --> 00:11:49.890 applause laughs 00:11:49.890 --> 00:11:53.770 This came from a military ship. But the dish itself is also available 00:11:53.770 --> 00:11:57.620 for civilian use on very large yachts. 00:11:57.620 --> 00:12:01.750 The dish itself is a Felcom 81 and it was intended for use with a network 00:12:01.750 --> 00:12:08.210 called Inmarsat. Inmarsat allows for telephone connections, 00:12:08.210 --> 00:12:12.890 and also data connections when you’re on a boat. So if the crew wants to call home 00:12:12.890 --> 00:12:18.010 or wants to go to AOL Keywords 00:12:18.010 --> 00:12:23.530 or whatever was popular back when this was common they could do that. 00:12:23.530 --> 00:12:28.420 And the dish was designed to sit at the very top of a ship’s mast. 00:12:28.420 --> 00:12:31.660 The reason why is that at the top of the mast there aren’t any obstructions 00:12:31.660 --> 00:12:35.360 – it has a clear view of the sky in all directions. But there’s a complication 00:12:35.360 --> 00:12:39.230 with being on the top of the mast. Which is that the ship is rocking beneath you 00:12:39.230 --> 00:12:43.860 and you’re moving more than the rest of the ship. 00:12:43.860 --> 00:12:47.880 So they have stepper motors for azimuth, elevation and tilt. 00:12:47.880 --> 00:12:52.800 And then they have spinning gyroscopes. Back before the iPhone there was 00:12:52.800 --> 00:12:57.950 this dark, dark time when gyroscopes actually spun. 00:12:57.950 --> 00:13:01.900 And this is the sort of gyroscope that it has. It actually has 4 of them so 00:13:01.900 --> 00:13:05.670 that it can measure its movement. 00:13:05.670 --> 00:13:10.940 And then it has a control computer. So the idea is that the dish itself can be moved 00:13:10.940 --> 00:13:15.620 while remaining absolutely stable with regard to the gyroscopes. 00:13:15.620 --> 00:13:20.000 So it compensates for the rocking of the ship beneath it as it’s targeting 00:13:20.000 --> 00:13:27.530 a stationary satellite. In America this costs 250 dollars 00:13:27.530 --> 00:13:32.080 but it’s electronics equipment, so while you think that would only be a 180 Euro 00:13:32.080 --> 00:13:40.080 it’s more like 2500. And that’s before import duties and it being impounded. 00:13:40.080 --> 00:13:44.680 We also have this lovely culture in which people love excuses to use their trucks. 00:13:44.680 --> 00:13:50.600 So the guy that I bought this from offered to deliver it to my home for only $200. 00:13:50.600 --> 00:13:57.340 It was an 11-hour drive. 00:13:57.340 --> 00:14:00.330 But if you wanted this you’d have to bring it back in your carry-on luggage 00:14:00.330 --> 00:14:05.500 and that could be awkward. 00:14:05.500 --> 00:14:09.490 I got this dish and I decided I had to do something with it. So I created 00:14:09.490 --> 00:14:15.040 the Southern Appalachian Space Agency. I’m from the state of Tennessee, 00:14:15.040 --> 00:14:19.520 formerly known as the State of Franklin until North Carolina invaded us. 00:14:19.520 --> 00:14:22.270 It’s ok, I know Europeans suck at history. 00:14:22.270 --> 00:14:30.310 laughs laughter and applause 00:14:30.310 --> 00:14:33.180 Now I’m trying to think of how to show you on a map where Tennessee is 00:14:33.180 --> 00:14:36.930 without having a map. But, you know, it’s okay, I know you suck at geography 00:14:36.930 --> 00:14:39.750 and will forget it soon. (?) 00:14:39.750 --> 00:14:41.550 From audience: It’s very near Texas, to the north. 00:14:41.550 --> 00:14:48.471 Travis: Texas is our first colony. But it’s actually a decent drive to the east. 00:14:48.471 --> 00:14:53.470 Due east (?). You don’t actually have to go it anyways. 00:14:53.470 --> 00:14:57.990 So what I did was I took these motors which were designed to be able to move 00:14:57.990 --> 00:15:03.250 the satellite dish to compensate for the rocking the ship and 00:15:03.250 --> 00:15:09.550 I re-purposed them to track through the sky while the ground is stable. 00:15:09.550 --> 00:15:12.580 We don’t have very many earthquakes in Tennessee. The last one that we had 00:15:12.580 --> 00:15:18.310 made rivers run the wrong direction. But it’s okay – it’s a geography thing. 00:15:18.310 --> 00:15:22.060 laughs So this allows me to track things 00:15:22.060 --> 00:15:26.500 that are moving through the sky. But it doesn’t actually matter 00:15:26.500 --> 00:15:30.330 where they’re moving in the sky because that’s just a software problem. 00:15:30.330 --> 00:15:35.540 So in addition to tracking objects that are in low-earth orbit by a software patch 00:15:35.540 --> 00:15:41.770 I can also track things that are in deep space. It’s not much harder to track 00:15:41.770 --> 00:15:47.830 deep space probes or stars than it is to track items in low-earth orbit. 00:15:47.830 --> 00:15:52.640 And then I added a software defined radio which allows me to record a signal now 00:15:52.640 --> 00:15:57.920 and then demodulate it later. Which is necessary if you intend 00:15:57.920 --> 00:16:02.810 to reverse-engineer a signal. Because a lot of the downlinks from these satellites 00:16:02.810 --> 00:16:07.630 are completely non… completely undocumented. And being able 00:16:07.630 --> 00:16:11.220 to tune in to the right frequency is only half of it. You also need a recording 00:16:11.220 --> 00:16:15.510 of sufficient quality that you can reverse-engineer it after the fact. 00:16:15.510 --> 00:16:19.680 We’re sort of spoiled by software defined radios in that when doing 00:16:19.680 --> 00:16:27.220 software defined radio work we usually have a very good signal to work from. 00:16:27.220 --> 00:16:33.610 So having high quality signals for later reverse-engineering is necessary. 00:16:33.610 --> 00:16:39.310 I really wanted to be able to identify undocumented downlinks for low-earth orbit 00:16:39.310 --> 00:16:44.310 in the same way that we already do this for geo-stationary orbit 00:16:44.310 --> 00:16:49.990 using tools like the ones that Adam Laurie and Jim Geovedi made. 00:16:49.990 --> 00:16:54.500 So I built a software framework as a collection of Python daemons. 00:16:54.500 --> 00:16:58.720 And these run across a home area network in my house. 00:16:58.720 --> 00:17:03.780 There’s a Beaglebone inside of the Radome. 00:17:03.780 --> 00:17:09.539 And an x86 server in the house. Or AMD64, whatever the kids call it these days. 00:17:09.539 --> 00:17:13.230 And then I used Postgres for coordination. So that all of these daemons can talk 00:17:13.230 --> 00:17:19.290 to each other without… without me really caring which machine they’re on. 00:17:19.290 --> 00:17:25.969 So for maintenance I can have my laptop pretending to be the dish, 00:17:25.969 --> 00:17:30.790 and I can have stepper motors on my desk, and I can watch them spin, and I can even 00:17:30.790 --> 00:17:35.010 make a model of the dish and swap these components in and out without the rest of 00:17:35.010 --> 00:17:42.700 the network being confused. This also allows for SQL injection attacks to 00:17:42.700 --> 00:17:48.260 physically move my dish. Which is why the sensor network is not on one of those 00:17:48.260 --> 00:17:52.620 fancy WEB 2.0 things. Because of you could inject, say, “UPDATE target SET name= 00:17:52.620 --> 00:17:55.910 ‘VOYAGER 1’”. Then my dish would physically move and start tracking Voyager 1 00:17:55.910 --> 00:18:01.440 through the sky. Voyager 2 00:18:01.440 --> 00:18:07.190 doesn’t actually come into the sky because of my position in the Northern hemisphere. 00:18:07.190 --> 00:18:11.170 So, it’s okay, I know you suck at geography. But Voyager 1 is going up, 00:18:11.170 --> 00:18:15.440 and Voyager 2 is going down. 00:18:15.440 --> 00:18:19.260 There’s a Realtek software defined radio for the radio reception. Although 00:18:19.260 --> 00:18:24.370 these things are garbage. So I’m in the process of replacing this for the HackRF. 00:18:24.370 --> 00:18:29.760 There’s also an EiBot board for motor control. We’ll get back to that in a minute. 00:18:29.760 --> 00:18:34.560 And there’s an Inertial Measurement Unit from VectorNav which actually measures 00:18:34.560 --> 00:18:39.510 using the fancy MEMS gyroscopes and a MEMS compass how I’m moving. 00:18:39.510 --> 00:18:44.700 This isn’t accurate enough to target the dish, so I’m still counting steps 00:18:44.700 --> 00:18:49.830 to move the dish. But it is accurate enough to tell me when my belts 00:18:49.830 --> 00:18:56.520 have broken. Or when I’m up against a physical obstruction. 00:18:56.520 --> 00:19:01.510 This is skytee helping me out with the dish. 00:19:01.510 --> 00:19:04.950 He’s zip-tying it. Because, you know we know everything about duct tape 00:19:04.950 --> 00:19:07.260 where I come from, but we don’t know anything about zip-ties. So I had 00:19:07.260 --> 00:19:10.920 to bring in a German engineer. laughter 00:19:10.920 --> 00:19:14.270 We call him a gerry wigger(?) but, you know… 00:19:14.270 --> 00:19:20.020 This is the satellite dish itself. And you can sort of see in this photograph 00:19:20.020 --> 00:19:25.420 where we’ve strapped on the equipment. There’s like an umbilical cord. 00:19:25.420 --> 00:19:29.700 Or more like a spinal column that actually runs up the back of the dish. So we just 00:19:29.700 --> 00:19:36.820 added new cables onto that line. And then zip-tied them in place. 00:19:36.820 --> 00:19:42.390 And skytee came up with all these crazy ideas like that we should use 00:19:42.390 --> 00:19:46.570 chains and zip-ties to make sure that the cables don’t tear themselves out. And 00:19:46.570 --> 00:19:51.890 that worked tremendously well in practice. So, as this thing spins around, 00:19:51.890 --> 00:19:57.680 by the original design there’s a ring connector that all of the signals 00:19:57.680 --> 00:20:01.220 go through. That all of the networking goes through. That all of the rest 00:20:01.220 --> 00:20:05.680 goes through. And that worked in the nineties because it had no reason 00:20:05.680 --> 00:20:11.310 to send anything faster than 9600 baud. 00:20:11.310 --> 00:20:18.050 But with the modern signals going across it I need 100 MBit/s or even GB ethernet, 00:20:18.050 --> 00:20:22.290 that’s not enough, I need more than two wires. So there’s a cable that comes 00:20:22.290 --> 00:20:25.290 across it, and then I rely on the software to keep it from wrapping 00:20:25.290 --> 00:20:31.180 that cable around itself. So it can only move, say, 400 degrees around. 00:20:31.180 --> 00:20:34.730 But that’s still more than a full circle. So by stopping halfway and moving back 00:20:34.730 --> 00:20:39.710 I can prevent it from getting snagged. 00:20:39.710 --> 00:20:43.400 We’ve got the Beaglebone on the left, in the middle there’s a USB hub 00:20:43.400 --> 00:20:47.550 and on the right is the motor controller. 00:20:47.550 --> 00:20:52.640 The Beaglebone runs Debian Linux and takes care of sending the software defined 00:20:52.640 --> 00:21:00.220 radio recordings over the network. It also takes care of updating the motor positions 00:21:00.220 --> 00:21:06.210 to be the ones that the database declares should be current. 00:21:06.210 --> 00:21:13.060 The stepper motors themselves are the originals that the dish was designed with. 00:21:13.060 --> 00:21:17.810 And they’re running to an EiBot Board. The EiBot board was intended 00:21:17.810 --> 00:21:24.560 for plotting on Easter eggs laughs, laughter 00:21:24.560 --> 00:21:27.740 I feel, you know… is that neat? 00:21:27.740 --> 00:21:32.830 laughs applause 00:21:32.830 --> 00:21:37.750 So you can actually aim a satellite dish that’s as tall as you are, with of these 00:21:37.750 --> 00:21:42.470 fancy motors using less sophisticated equipment than what’s used 00:21:42.470 --> 00:21:47.330 in a 3D printer. Don’t panic, though. 00:21:47.330 --> 00:21:51.360 It’s a hell of a lot more reliable than a 3D printer. 00:21:51.360 --> 00:21:55.420 But we needed some sort of backup in addition to the inertial measurement unit 00:21:55.420 --> 00:21:59.360 telling us when the device had snagged itself. 00:21:59.360 --> 00:22:05.180 It would also help to have a visual queue. Because 00:22:05.180 --> 00:22:09.810 the satellite dish sits in Tennessee, and while I love my home town, and, you know 00:22:09.810 --> 00:22:15.170 I’m very proud of being Tennessean, it’s also a long way to travel when you need 00:22:15.170 --> 00:22:20.830 to re-orient the dish. Using an accelerometer it’s easy enough 00:22:20.830 --> 00:22:26.120 to correct the elevation. Because you can use the accelerometer as a level, and 00:22:26.120 --> 00:22:31.220 you can use that to tell how high up the dish is pointing, at an absolute scale. 00:22:31.220 --> 00:22:38.370 But the compass isn’t very accurate. So instead, as a backup we have a webcam 00:22:38.370 --> 00:22:44.300 that’s taped to the top. Taping is my people’s native culture. 00:22:44.300 --> 00:22:47.710 We have it taped to the top, and then it’s pointing backwards. So this gives us 00:22:47.710 --> 00:22:52.280 like a rear view camera, from the dish’s position. 00:22:52.280 --> 00:22:57.179 So as the dish sits inside of its radome… 00:22:57.179 --> 00:23:00.920 – junk cars in the yard are also my people’s native tradition! 00:23:00.920 --> 00:23:04.340 laughs, laughter 00:23:04.340 --> 00:23:09.670 So the dish sits there next to my brother’s Toyota Supra. 00:23:09.670 --> 00:23:13.770 And that thing, you know, that thing flies as soon as it gets 00:23:13.770 --> 00:23:17.800 an engine put back in it. laughter 00:23:17.800 --> 00:23:21.860 So it sits there and it’s moving but externally you can’t see where it is. 00:23:21.860 --> 00:23:26.019 Which means that I can’t call my family in Tennessee and blackmail them into 00:23:26.019 --> 00:23:29.620 – yet again – looking at my dish to tell where it’s pointed. There are bolts 00:23:29.620 --> 00:23:32.882 that hold this down, it takes half an hour to remove the lid, another half an hour 00:23:32.882 --> 00:23:37.390 to put it back on. 00:23:37.390 --> 00:23:43.230 So instead we took the radome… that’s Frank, he’s my cat. 00:23:43.230 --> 00:23:45.500 Give a “Cheers!” for Frank! 00:23:45.500 --> 00:23:51.500 applause and cheers 00:23:51.500 --> 00:23:56.460 Yeah, we had such a great time with Frank. And we never knew that she was pregnant. 00:23:56.460 --> 00:24:02.950 If you happen to need kittens and wanna pay the customs fees I’ll hook you up! 00:24:02.950 --> 00:24:10.580 So then we took tape and ran tape down the edges of the radome, 00:24:10.580 --> 00:24:15.090 and then marked it. So from the markings you can tell which clock position 00:24:15.090 --> 00:24:20.230 the back of the satellite dish is pointing at. So if you point the dish towards 12:00 00:24:20.230 --> 00:24:25.870 you know that you’re roughly at 6:00, so you know that it’s pointing South. 00:24:25.870 --> 00:24:29.110 And then you can sort of scan the sky for a stationary target, and navigate 00:24:29.110 --> 00:24:32.950 off of that, to recover your position. 00:24:32.950 --> 00:24:39.620 Software-wise… remember, the whole thing runs through Postgres, 00:24:39.620 --> 00:24:45.750 so I just tunnel the Postgres over SSH, and then I wrote a Python client 00:24:45.750 --> 00:24:52.120 that displays the satellite positions and the satellite state in PyGame. 00:24:52.120 --> 00:24:54.820 This is intended for making those games where you see the rabbit and the rabbit 00:24:54.820 --> 00:25:00.550 jumps on the other rabbit. But it… works! And it works perfectly well enough 00:25:00.550 --> 00:25:04.940 to target the dish. Because all that this software has to do is plot the positions 00:25:04.940 --> 00:25:10.570 of the satellites, and give orders back to the database when I click on a satellite 00:25:10.570 --> 00:25:15.270 or click on a position. It can also display stars. 00:25:15.270 --> 00:25:21.350 So the red items are satellites which are not selected. The green item is GOES-3 00:25:21.350 --> 00:25:25.470 which is the satellite that I’m targeting. And then the white items are 00:25:25.470 --> 00:25:32.140 stars in the sky. Now this is a plot in which the azimuth 00:25:32.140 --> 00:25:37.230 is on the X axis, and the elevation is on the Y axis. But I can also arrange it 00:25:37.230 --> 00:25:42.160 into a polar plot. Which sort of gives me an upside-down view of the satellite dish 00:25:42.160 --> 00:25:47.520 looking at the sky. I doubt you can read it but 00:25:47.520 --> 00:25:55.330 just above the green circle in the center, that’s Polaris which is the North star. 00:25:55.330 --> 00:25:58.770 It’s also weird because, you know, working on this, you know, I thought 00:25:58.770 --> 00:26:02.170 that I got really good at astronomy until I realized that I only knew 00:26:02.170 --> 00:26:07.940 what the stars looked like during the day. laughter, laughs 00:26:07.940 --> 00:26:12.010 And it being PyGame you can actually run it on a mobile device. 00:26:12.010 --> 00:26:17.960 So the same client that runs on my laptop can also run on my Nokia N900. 00:26:17.960 --> 00:26:26.140 laughs applause 00:26:26.140 --> 00:26:32.940 A significant portion of the GUI client for this was written while stuck on the U-Bahn, 00:26:32.940 --> 00:26:38.330 connected over 3G, SSH through and just using emacs on the phone. 00:26:38.330 --> 00:26:44.590 laughter, laughs applause 00:26:44.590 --> 00:26:49.270 If you’re one of those people who needs to complain about the N900 being too old, 00:26:49.270 --> 00:26:54.260 it also runs on the N9. 00:26:54.260 --> 00:26:59.020 And then you can take the data out of this and run it through scientific software. 00:26:59.020 --> 00:27:03.100 In addition of the software defined radio recordings themselves being dumped out 00:27:03.100 --> 00:27:09.720 to a text file or a binary file on disk you can also dump out things like 00:27:09.720 --> 00:27:14.590 the received signal strength indicators (RSSI). So this is a screenshot in which 00:27:14.590 --> 00:27:18.340 I’m identifying different satellites that I’ve seen in the sky based upon 00:27:18.340 --> 00:27:23.040 their downlink signal peaks. You can see the noise floor there, at the bottom, 00:27:23.040 --> 00:27:28.320 and then there’s a rather strong signal on the left. And a weaker, narrower signal 00:27:28.320 --> 00:27:34.780 on the right. Now, the daemons that build this up… 00:27:34.780 --> 00:27:38.400 you need an orbit prediction daemon. Because you need to know 00:27:38.400 --> 00:27:41.490 where the satellites are and where they’re going, and where they will be 00:27:41.490 --> 00:27:45.830 by the time you get to them. 00:27:45.830 --> 00:27:50.760 You need to update the orbits themselves. 00:27:50.760 --> 00:27:55.150 LEO satellites are described in TLE files, 00:27:55.150 --> 00:27:58.191 these are called ‘Two Line Entry’ and they’re called ‘Two Line Entry’ because 00:27:58.191 --> 00:28:01.970 they’re three lines long. laughter 00:28:01.970 --> 00:28:07.610 These were originally used by NORAD for inter-continental ballistic missile tracking. 00:28:07.610 --> 00:28:11.251 And because a ballistic missile is basically in orbit, it’s just that 00:28:11.251 --> 00:28:14.980 that orbit happens to collide with the earth. 00:28:14.980 --> 00:28:20.380 But this format isn’t terribly accurate for satellites that adjust their own orbit. 00:28:20.380 --> 00:28:26.930 So anything that has fuel, or has engines, or changes mass will vary its position. 00:28:26.930 --> 00:28:34.160 And this also doesn’t account for drag. Because, you know, the missile itself, 00:28:34.160 --> 00:28:38.200 you know it goes up it goes down, it’s not orbiting enough for the light drag 00:28:38.200 --> 00:28:43.030 in the upper atmosphere to matter. But for a satellite it does. So these Two Line Entries 00:28:43.030 --> 00:28:47.760 will work for a matter of days or maybe a couple of weeks. But they don’t last 00:28:47.760 --> 00:28:55.090 longer than that. So you need a daemon that grabs the new files from Space Track. 00:28:55.090 --> 00:28:57.971 And this is just a matter of like a recursive WGET, and then 00:28:57.971 --> 00:29:02.880 parsing the files. And that still needs to be done. You also need motor control, 00:29:02.880 --> 00:29:06.780 because you need to move the dish physically to track your target. 00:29:06.780 --> 00:29:10.600 You need input for the Inertial Measurement Unit. This comes over 00:29:10.600 --> 00:29:15.240 a low voltage serial port. And then you need radio daemons to handle 00:29:15.240 --> 00:29:20.590 spectrum analysis or downlink recording. And these you’ll have several of them, 00:29:20.590 --> 00:29:29.040 you have to swap them out. So you’ll begin by using the spectrum analyzer to identify 00:29:29.040 --> 00:29:33.730 that your aim is accurate, that you’re accurately tracking the targets 00:29:33.730 --> 00:29:37.630 well enough to get a recording from them. And then after that you begin 00:29:37.630 --> 00:29:42.130 to take software defined recordings off them. And, eventually, you might have 00:29:42.130 --> 00:29:48.130 a standalone application that parses what you’re receiving. Such as 00:29:48.130 --> 00:29:55.550 the Osmocom guys did with OpenGMR. 00:29:55.550 --> 00:29:59.810 So for orbit prediction I began with a DOS program that had been 00:29:59.810 --> 00:30:04.550 ported to Unix, called PREDICT. 00:30:04.550 --> 00:30:10.360 And this worked, but it’s garbage. 00:30:10.360 --> 00:30:16.070 It only supports 20 satellites plus the sun, the moon, Venus and Mars. 00:30:16.070 --> 00:30:24.460 But no other planets because it’s designed for astronomy photographers 00:30:24.460 --> 00:30:28.800 who want to get a picture of something as it comes over the horizon. You know, 00:30:28.800 --> 00:30:33.890 I need to track hundreds of targets and then write a script to opportunistically 00:30:33.890 --> 00:30:37.640 pick the ones that I want to record. Because otherwise you have to like 00:30:37.640 --> 00:30:44.880 set an alarm clock for the half-hour pass in which you can play with something. 00:30:44.880 --> 00:30:48.900 That software does allow you to query the results by UDP, though. So you can just 00:30:48.900 --> 00:30:55.000 send it a flood of request packets, then it will flood back with the data 00:30:55.000 --> 00:31:00.860 you’re looking for. So I switched to a library called PyEphem which allows you 00:31:00.860 --> 00:31:05.960 to track hundreds of birds. It has no UDP nonsense. It will also calculate 00:31:05.960 --> 00:31:12.940 satellites, planets and stars. And the really nifty thing about this 00:31:12.940 --> 00:31:18.090 is that you tell it… you know, it being a library you tell it when to update 00:31:18.090 --> 00:31:23.030 the individual object that you’re interested in. So you can update 00:31:23.030 --> 00:31:26.710 objects that are out of view or uninteresting more slowly 00:31:26.710 --> 00:31:33.300 than the ones that you care about. So I managed to track every single item 00:31:33.300 --> 00:31:39.230 in geo-stationary orbit. This thick ring here is the Clarke Belt 00:31:39.230 --> 00:31:47.000 of all satellites in geo-stationary orbit, as viewed from my Southern horizon. 00:31:47.000 --> 00:31:53.880 applause 00:31:53.880 --> 00:31:58.460 The Two Line Entry files you can get freely from CELESTRAK.COM. 00:31:58.460 --> 00:32:02.370 So this is just a simple script that grabs them and then inserts them. 00:32:02.370 --> 00:32:06.990 And the prediction daemon will actually select them as it is loading up. 00:32:06.990 --> 00:32:14.010 Because all inter process communication is running through this Postgres database. 00:32:14.010 --> 00:32:16.540 And this daemon can be moved to a different machine if I needed 00:32:16.540 --> 00:32:21.730 more computing power, or anything like that. The motor control demon… 00:32:21.730 --> 00:32:27.470 well, the EiBot board is designed to take stepper motor commands. It shows up 00:32:27.470 --> 00:32:33.429 as USB Serial device on Linux. So as I plug it in to the Beaglebone it appears 00:32:33.429 --> 00:32:41.660 as /dev/ttyACM0. And the baud rate doesn’t matter. Because this is a USB device. 00:32:41.660 --> 00:32:48.810 You could then send it simple commands. Like ‘SM,3000,500,-400’ means that I wanna 00:32:48.810 --> 00:32:55.559 move a stepper motor for 3000 ms. I want the first motor to move 500 forwards, 00:32:55.559 --> 00:33:03.330 that’s UP, and the second one to move 400 LEFT which is backwards 400 steps. 00:33:03.330 --> 00:33:07.540 And then it will count that out, and then it sends me back an OK. 00:33:07.540 --> 00:33:11.981 If I want to disable the motors, I send ‘EM,0,0’. This allows the motors to be 00:33:11.981 --> 00:33:16.429 freely spun. Because normally a stepper motor will physically hold its position, 00:33:16.429 --> 00:33:22.500 you need to turn them off in order to slide the dish around. 00:33:22.500 --> 00:33:28.260 ‘EM,1,1’ will enable both motors in 1/16-of-a-step mode. 00:33:28.260 --> 00:33:31.340 Stepper motors can do fractional steps because they’re 00:33:31.340 --> 00:33:37.800 holding themselves in position. 00:33:37.800 --> 00:33:41.390 You can see the motors themselves with the belts and the gear train. 00:33:41.390 --> 00:33:46.800 This thing on the right would probably be illegal for me to turn on. 00:33:46.800 --> 00:33:53.100 The thing on the right is a 250 W amplifier. laughter 00:33:53.100 --> 00:33:58.780 The stepper motors themselves just have six wires. In a lot of 3D printer type stuff 00:33:58.780 --> 00:34:02.690 they ignore the middle two. So you just drop off the middle two wires, you run 00:34:02.690 --> 00:34:07.100 the other four to your stepper controller, and you’re good to go. 00:34:07.100 --> 00:34:10.079 The belts and stuff need to be measured in order to figure out exactly 00:34:10.079 --> 00:34:16.639 what the gear reduction is. Because you need to know how many steps form a degree. 00:34:16.639 --> 00:34:23.250 The IMU unit, this Vectornav VN100, it’s a MEMS gyroscope and accelerometer 00:34:23.250 --> 00:34:28.380 and a compass in a single box. It costs $500 which was 00:34:28.380 --> 00:34:33.780 more than all of the other equipment put together. 00:34:33.780 --> 00:34:37.280 The compass is confused by the stepper motors because the compass is measuring 00:34:37.280 --> 00:34:40.280 magnetic fields. So you need to mount this physically as far away 00:34:40.280 --> 00:34:46.159 from the stepper motors as possible. And the gyroscope is confused by motor jerk 00:34:46.159 --> 00:34:50.310 which is a shame because stepper motors work as a series of jerks rather than 00:34:50.310 --> 00:34:56.510 as a single consistent motion. And the accelerometer is confused by gimbal lock, 00:34:56.510 --> 00:35:00.880 so you have to switch it to a quaternion mode in order to get 00:35:00.880 --> 00:35:05.640 consistent values out of it. And if I had to do this over again I’d really try 00:35:05.640 --> 00:35:10.610 to drop this piece of garbage. But it’s a lovely technology when it works. 00:35:10.610 --> 00:35:12.310 some laughter 00:35:12.310 --> 00:35:19.010 Now for position calculations: the elevation itself comes from the IMU, 00:35:19.010 --> 00:35:24.160 the azimuth comes from the motor daemon. This is because the accelerometer 00:35:24.160 --> 00:35:29.710 can very accurately tell which way the earth’s gravity is pulling it 00:35:29.710 --> 00:35:34.410 whereas the accelerometer has to integrate jerks over time in order to figure out 00:35:34.410 --> 00:35:38.890 its position. So the accelerometer will drift 00:35:38.890 --> 00:35:46.410 and the compass will be confused by the magnetic fields while the elevation is 00:35:46.410 --> 00:35:53.300 just a single accelerometer that doesn’t drift. 00:35:53.300 --> 00:35:59.760 And the IMU will become a backup for these things 00:35:59.760 --> 00:36:03.480 in order to figure out how to make it reliable. But at the moment 00:36:03.480 --> 00:36:09.100 the position measurement is infinitely more reliable. The tilt motor 00:36:09.100 --> 00:36:13.970 I’m not using at present because on a ship that’s rocking it’s necessary 00:36:13.970 --> 00:36:20.290 to tilt the dish. On a satellite dish that’s staying still the only useful 00:36:20.290 --> 00:36:26.280 tilting the dish is so that you can follow the arc of a satellite through the sky 00:36:26.280 --> 00:36:30.020 by only moving a single motor. Photopgraphers do this when they’re 00:36:30.020 --> 00:36:35.210 trying to get long exposures of moving satellites. At the moment my software 00:36:35.210 --> 00:36:39.180 doesn’t support this feature. But if it turns out to be necessary 00:36:39.180 --> 00:36:43.960 to get higher quality recordings I might add it. 00:36:43.960 --> 00:36:47.430 There are radio daemons. The first is a spectrum analyzer. 00:36:47.430 --> 00:36:51.480 This just measures the signal strength on each frequency. And it does it by the 00:36:51.480 --> 00:36:58.230 power spectral density function. 00:36:58.230 --> 00:37:02.900 And the strength itself will vary with the position error. 00:37:02.900 --> 00:37:07.050 So this allows you to figure out how far off you are by sort of testing, 00:37:07.050 --> 00:37:09.690 by overshooting just a little bit, or undershooting just a little bit 00:37:09.690 --> 00:37:15.170 to center on your target. The downlink recorder dumps the IQ values 00:37:15.170 --> 00:37:19.950 in the software defined radio directly to an NFS share, 00:37:19.950 --> 00:37:24.749 which can later be decoded and read and reverse-engineered. 00:37:24.749 --> 00:37:30.260 We’ve got a whole table of spectrum data. And then I plot that in a tool 00:37:30.260 --> 00:37:36.840 called Viewpoints which NASA releases for dealing with giant scatter plots 00:37:36.840 --> 00:37:44.480 in multiple dimensions. Each view takes two dimensions, and it’s tons of fun. 00:37:44.480 --> 00:37:47.570 The client GUI is this PyGame. I have Postgres for communications, and 00:37:47.570 --> 00:37:51.590 the server does all the heavy lifting, so the Beaglebone itself never has 00:37:51.590 --> 00:37:58.260 to do anything complicated with regards to software defined radio. 00:37:58.260 --> 00:38:03.610 This is also about these faint blue lines are positions at which I’ve seen 00:38:03.610 --> 00:38:09.620 particularly strong signals in order to identify which satellites are active 00:38:09.620 --> 00:38:14.190 and which ones are inactive. Because satellites die over time. 00:38:14.190 --> 00:38:17.920 And particularly useful targets we’re reverse-engineering are satellites that are 00:38:17.920 --> 00:38:22.910 out-of-commission or outdated. I’m running out of time by these markers. 00:38:22.910 --> 00:38:24.930 Does that mean that we’re skipping questions, or does that mean that 00:38:24.930 --> 00:38:28.910 I need to be off the stage? mumbling to stage 00:38:28.910 --> 00:38:35.880 Not having Q&A, okay. So today I get accurate tracking of satellites. 00:38:35.880 --> 00:38:41.020 And this thing can run unattended 24h a day for months without maintenance. 00:38:41.020 --> 00:38:46.030 Like I said: it’s nothing like a 3D printer. laughter 00:38:46.030 --> 00:38:49.970 It takes software defined radio recordings, it can provide maps 00:38:49.970 --> 00:38:54.920 of views of different satellites in the sky. 00:38:54.920 --> 00:38:59.920 The next step is I want to publish a ‘port scan’ of the entire sky. 00:38:59.920 --> 00:39:04.460 So which frequencies are in use on which birds, for every bird that ever comes 00:39:04.460 --> 00:39:08.490 above Tennessee, on every downlink that fits my antenna 00:39:08.490 --> 00:39:12.230 as well as a database of software defined radio recordings. If anyone 00:39:12.230 --> 00:39:19.000 would care to donate a truckload of disks – that might be handy. 00:39:19.000 --> 00:39:23.080 I’d also like to make other ground stations. The software that I’ve written 00:39:23.080 --> 00:39:25.910 ought to be portable to new hardware. So there’s nothing that should keep you 00:39:25.910 --> 00:39:30.950 from being able to port this to run on your own dish. And I have a large yard, 00:39:30.950 --> 00:39:36.530 so I could conceivably have a dozen of these things. 00:39:36.530 --> 00:39:38.910 Another way that you can do it, and the way that it’s traditionally done 00:39:38.910 --> 00:39:45.230 for, say, cube satellites is having Yagis or other loosely directional antennas 00:39:45.230 --> 00:39:48.910 in order to receive the signals. I went with a dish because I wanted 00:39:48.910 --> 00:39:54.920 more selectivity. I wanted to be able to get reverse-engineerable recordings 00:39:54.920 --> 00:40:03.020 rather than intentional ones for which I already knew the downlink protocol. 00:40:03.020 --> 00:40:07.990 So this is my van, my van is amazing. 00:40:07.990 --> 00:40:15.620 applause 00:40:15.620 --> 00:40:19.300 Thanks to Nick Farr. I had a bit too much to drink in Montreal and 00:40:19.300 --> 00:40:24.440 I called Nick Farr and I said: “Nick, I want a DUKW”, like these amphibious 00:40:24.440 --> 00:40:28.500 troop transport vehicles. And Nick said: “Sorry, I can’t get you one but 00:40:28.500 --> 00:40:32.000 you want a news van!” And I said: “Hell yeah, I want a news van!” 00:40:32.000 --> 00:40:35.430 So – this pole in the background, that’s not a lighting pole. That’s actually 00:40:35.430 --> 00:40:43.369 part of the van. laughter 00:40:43.369 --> 00:40:49.590 This is the antenna retracted. This mast goes up 20 m by pneumatic power. 00:40:49.590 --> 00:40:55.180 There’s an air compressor in the back. Here is the control panel, 00:40:55.180 --> 00:40:57.880 there’s an air-conditioned office in the middle. 00:40:57.880 --> 00:41:02.480 laughter, laughs 00:41:02.480 --> 00:41:08.910 This has four 19" server racks as well as some A/V equipment that was left over. 00:41:08.910 --> 00:41:14.100 I was particularly excited about the video monitor which supports PAL 00:41:14.100 --> 00:41:18.460 which you folks are familiar with, NTSC or “Never The Same Color” 00:41:18.460 --> 00:41:21.840 which is my people’s native culture… laughter 00:41:21.840 --> 00:41:25.610 But most importantly, it does SECAM, the system essentially contrary 00:41:25.610 --> 00:41:29.530 to the American method. laughs 00:41:29.530 --> 00:41:34.230 laughter and applause 00:41:34.230 --> 00:41:41.130 So in addition to my radio equipment I’m adding my Soviet PDP-11 which was… 00:41:41.130 --> 00:41:45.360 laughs …and that’s not a joke. I have a Soviet 00:41:45.360 --> 00:41:51.540 PDP-11 thanks to the kind folks at the Positive Hacking Days conference. 00:41:51.540 --> 00:41:58.200 This is the control panel, and that’s my talk! 00:41:58.200 --> 00:42:13.340 applause 00:42:13.340 --> 00:42:17.740 Herald: Thank you so much. There actually is time for Q&A now. 00:42:17.740 --> 00:42:20.672 Travis: Well, first I’d like to introduce you to my cat. If we could go back 00:42:20.672 --> 00:42:25.691 to the prior image. This is Frank! We didn’t know it at that time, but 00:42:25.691 --> 00:42:31.570 Frank was not dad (?) when this picture was taken. If you’d like kittens get in touch! 00:42:31.570 --> 00:42:34.800 Okay. Are there any questions? 00:42:34.800 --> 00:42:39.030 Question: Great talk. What’s the most interesting signal you decoded so far? 00:42:39.030 --> 00:42:44.650 Travis: At the moment I’m sort of stuck at the L band range. Because of filters 00:42:44.650 --> 00:42:48.220 that I have yet to remove. So everything gets attenuated, and becomes annoyingly 00:42:48.220 --> 00:42:54.720 quiet outside of the 1.5 ..1.6 -ish range. 00:42:54.720 --> 00:43:00.210 The Globalstar network is what I’m most interested in targeting next. 00:43:00.210 --> 00:43:03.050 I can’t wait to see what people are tweeting 00:43:03.050 --> 00:43:07.029 while they should be enjoying nature. 00:43:07.029 --> 00:43:08.850 Herald: Is there a question from the internet? 00:43:08.850 --> 00:43:12.890 Signal Angel: Yeah, the internet has many questions. So first one was: 00:43:12.890 --> 00:43:18.430 Is there really no authentication or encryption on the Q band IP services? 00:43:18.430 --> 00:43:24.859 So you can just spoof at will? And… 00:43:24.859 --> 00:43:28.540 can the birds see the physical location of the source 00:43:28.540 --> 00:43:34.650 accurately enough to find who is spoofing? 00:43:34.650 --> 00:43:41.200 Travis: I’m not an expert in Ku band. The… for the downlink the bird has no clue 00:43:41.200 --> 00:43:45.750 as to the location of the dish. Because you’re only listening. They can roughly 00:43:45.750 --> 00:43:49.530 figure out your geographic area because… they need to figure out where 00:43:49.530 --> 00:43:53.590 the spot beam is going. So they might know whether you’re in, say, Germany or 00:43:53.590 --> 00:44:01.720 in France. But they won’t know whether you’re in Heidelberg or Mannheim. 00:44:01.720 --> 00:44:07.420 They do have forms of authentication for many satellite networks. Satellite TV 00:44:07.420 --> 00:44:11.950 is one of the best-protected network services because of the satellite wars 00:44:11.950 --> 00:44:16.580 in the nineties in which TV pirates would fight back and forth with smart card 00:44:16.580 --> 00:44:23.330 designers. But there are also many unencrypted links. And there are… 00:44:23.330 --> 00:44:31.260 because of standard protocols those are particularly easy to find in Ku band. 00:44:31.260 --> 00:44:37.390 Question: You’ve been talking about using RTLSDR from osmocom. 00:44:37.390 --> 00:44:42.470 And you were talking about your spectrum analysis program. Is this one working 00:44:42.470 --> 00:44:45.810 with RTLSDR? 00:44:45.810 --> 00:44:53.970 Travis: So… RTLSDR… so I’m using the RTLSDR, not the OsmoSDR. 00:44:53.970 --> 00:44:58.900 Which are separate. The spectrum analyzer is working with the RTLSDR. 00:44:58.900 --> 00:45:03.230 My complaint about the RTLSDR is that when you have a strong signal next to 00:45:03.230 --> 00:45:08.230 a weak signal the weak signal is utterly useless for interpretation. 00:45:08.230 --> 00:45:13.330 Question: Okay. Thank you. 00:45:13.330 --> 00:45:15.490 Herald: Another question from the internet? 00:45:15.490 --> 00:45:19.180 Signal Angel: Okay, next question from the internet is: How do you record 00:45:19.180 --> 00:45:24.490 the radio signal from the dish, at what sampling rate? 00:45:24.490 --> 00:45:29.890 Travis: The RTLSDR samples at 2 million samples per second. As soon as I switch it 00:45:29.890 --> 00:45:37.250 over to the HackRF I’ll be having 20 million samples per second. 00:45:37.250 --> 00:45:41.900 The sampling rate can be reduced once the bandwidth of the signal is known. 00:45:41.900 --> 00:45:46.390 For reduced storage. And the recordings can also be compressed. 00:45:46.390 --> 00:45:53.300 But it’s still a hell of a lot of storage. 00:45:53.300 --> 00:45:54.659 Herald: Any other questions? 00:45:54.659 --> 00:45:57.770 Signal Angel: The internet has more questions… 00:45:57.770 --> 00:45:59.860 Herald: Okay… 00:45:59.860 --> 00:46:04.380 Signal Angel: Did you look into obtaining a capacitive high-bandwidth coupler as used 00:46:04.380 --> 00:46:09.880 for the rotary gantries in CT scanners? Those can apparently transmit contactless 00:46:09.880 --> 00:46:13.420 several GBytes per second, bi-directionally. 00:46:13.420 --> 00:46:16.109 Travis: I’ve not looked into those. It seemed better to have an umbilical 00:46:16.109 --> 00:46:21.820 cable and to be careful not to snap it. 00:46:21.820 --> 00:46:25.630 The whole thing was done for a budget of less than 2000 Dollars, and can be 00:46:25.630 --> 00:46:31.640 recreated for less than a budget of 1000 [Dollars]. And they… so we tried to avoid 00:46:31.640 --> 00:46:36.140 fancy parts. The local radio shack loved us because we’d swing in and buy all sorts 00:46:36.140 --> 00:46:39.880 of crazy stuff. As soon as we told them that we wanted the satellite dish to 00:46:39.880 --> 00:46:41.300 dance Gangnam style… laughs 00:46:41.300 --> 00:46:48.740 laughter 00:46:48.740 --> 00:46:50.820 in German, strong accent: Danke, gerne! 00:46:50.820 --> 00:46:53.810 applause 00:46:53.810 --> 00:46:56.610 silent postroll titles 00:46:56.610 --> 00:47:02.893 subtitles created by c3subtitles.de in the year 2017. Join, and help us!