]> pere.pagekite.me Git - homepage.git/blob - blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html
Switched blog to hungry.com for now. Updated all links.
[homepage.git] / blog / Where_did_that_package_go___mdash__geolocated_IP_traceroute.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Where did that package go? &mdash; geolocated IP traceroute</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/vim.css" />
9
10
11 </head>
12 <body>
13 <div class="title">
14 <h1>
15 <a href="http://www.hungry.com/~pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <div class="entry">
23 <div class="title">Where did that package go? &mdash; geolocated IP traceroute</div>
24 <div class="date"> 9th January 2017</div>
25 <div class="body"><p>Did you ever wonder where the web trafic really flow to reach the
26 web servers, and who own the network equipment it is flowing through?
27 It is possible to get a glimpse of this from using traceroute, but it
28 is hard to find all the details. Many years ago, I wrote a system to
29 map the Norwegian Internet (trying to figure out if our plans for a
30 network game service would get low enough latency, and who we needed
31 to talk to about setting up game servers close to the users. Back
32 then I used traceroute output from many locations (I asked my friends
33 to run a script and send me their traceroute output) to create the
34 graph and the map. The output from traceroute typically look like
35 this:
36
37 <p><pre>
38 traceroute to www.stortinget.no (85.88.67.10), 30 hops max, 60 byte packets
39 1 uio-gw10.uio.no (129.240.202.1) 0.447 ms 0.486 ms 0.621 ms
40 2 uio-gw8.uio.no (129.240.24.229) 0.467 ms 0.578 ms 0.675 ms
41 3 oslo-gw1.uninett.no (128.39.65.17) 0.385 ms 0.373 ms 0.358 ms
42 4 te3-1-2.br1.fn3.as2116.net (193.156.90.3) 1.174 ms 1.172 ms 1.153 ms
43 5 he16-1-1.cr1.san110.as2116.net (195.0.244.234) 2.627 ms he16-1-1.cr2.oslosda310.as2116.net (195.0.244.48) 3.172 ms he16-1-1.cr1.san110.as2116.net (195.0.244.234) 2.857 ms
44 6 ae1.ar8.oslosda310.as2116.net (195.0.242.39) 0.662 ms 0.637 ms ae0.ar8.oslosda310.as2116.net (195.0.242.23) 0.622 ms
45 7 89.191.10.146 (89.191.10.146) 0.931 ms 0.917 ms 0.955 ms
46 8 * * *
47 9 * * *
48 [...]
49 </pre></p>
50
51 <p>This show the DNS names and IP addresses of (at least some of the)
52 network equipment involved in getting the data traffic from me to the
53 www.stortinget.no server, and how long it took in milliseconds for a
54 package to reach the equipment and return to me. Three packages are
55 sent, and some times the packages do not follow the same path. This
56 is shown for hop 5, where three different IP addresses replied to the
57 traceroute request.</p>
58
59 <p>There are many ways to measure trace routes. Other good traceroute
60 implementations I use are traceroute (using ICMP packages) mtr (can do
61 both ICMP, UDP and TCP) and scapy (python library with ICMP, UDP, TCP
62 traceroute and a lot of other capabilities). All of them are easily
63 available in <a href="https://www.debian.org/">Debian</a>.</p>
64
65 <p>This time around, I wanted to know the geographic location of
66 different route points, to visualize how visiting a web page spread
67 information about the visit to a lot of servers around the globe. The
68 background is that a web site today often will ask the browser to get
69 from many servers the parts (for example HTML, JSON, fonts,
70 JavaScript, CSS, video) required to display the content. This will
71 leak information about the visit to those controlling these servers
72 and anyone able to peek at the data traffic passing by (like your ISP,
73 the ISPs backbone provider, FRA, GCHQ, NSA and others).</p>
74
75 <p>Lets pick an example, the Norwegian parliament web site
76 www.stortinget.no. It is read daily by all members of parliament and
77 their staff, as well as political journalists, activits and many other
78 citizens of Norway. A visit to the www.stortinget.no web site will
79 ask your browser to contact 8 other servers: ajax.googleapis.com,
80 insights.hotjar.com, script.hotjar.com, static.hotjar.com,
81 stats.g.doubleclick.net, www.google-analytics.com,
82 www.googletagmanager.com and www.netigate.se. I extracted this by
83 asking <a href="http://phantomjs.org/">PhantomJS</a> to visit the
84 Stortinget web page and tell me all the URLs PhantomJS downloaded to
85 render the page (in HAR format using
86 <a href="https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js">their
87 netsniff example</a>. I am very grateful to Gorm for showing me how
88 to do this). My goal is to visualize network traces to all IP
89 addresses behind these DNS names, do show where visitors personal
90 information is spread when visiting the page.</p>
91
92 <p align="center"><a href="www.stortinget.no-geoip.kml"><img
93 src="https://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geoip-small.png" alt="map of combined traces for URLs used by www.stortinget.no using GeoIP"/></a></p>
94
95 <p>When I had a look around for options, I could not find any good
96 free software tools to do this, and decided I needed my own traceroute
97 wrapper outputting KML based on locations looked up using GeoIP. KML
98 is easy to work with and easy to generate, and understood by several
99 of the GIS tools I have available. I got good help from by NUUG
100 colleague Anders Einar with this, and the result can be seen in
101 <a href="https://github.com/petterreinholdtsen/kmltraceroute">my
102 kmltraceroute git repository</a>. Unfortunately, the quality of the
103 free GeoIP databases I could find (and the for-pay databases my
104 friends had access to) is not up to the task. The IP addresses of
105 central Internet infrastructure would typically be placed near the
106 controlling companies main office, and not where the router is really
107 located, as you can see from <a href="www.stortinget.no-geoip.kml">the
108 KML file I created</a> using the GeoLite City dataset from MaxMind.
109
110 <p align="center"><a href="https://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg"><img
111 src="https://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy-small.png" alt="scapy traceroute graph for URLs used by www.stortinget.no"/></a></p>
112
113 <p>I also had a look at the visual traceroute graph created by
114 <a href="http://www.secdev.org/projects/scapy/">the scrapy project</a>,
115 showing IP network ownership (aka AS owner) for the IP address in
116 question.
117 <a href="https://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg">The
118 graph display a lot of useful information about the traceroute in SVG
119 format</a>, and give a good indication on who control the network
120 equipment involved, but it do not include geolocation. This graph
121 make it possible to see the information is made available at least for
122 UNINETT, Catchcom, Stortinget, Nordunet, Google, Amazon, Telia, Level
123 3 Communications and NetDNA.</p>
124
125 <p align="center"><a href="https://geotraceroute.com/index.php?node=4&host=www.stortinget.no"><img
126 src="https://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-small.png" alt="example geotraceroute view for www.stortinget.no"/></a></p>
127
128 <p>In the process, I came across the
129 <a href="https://geotraceroute.com/">web service GeoTraceroute</a> by
130 Salim Gasmi. Its methology of combining guesses based on DNS names,
131 various location databases and finally use latecy times to rule out
132 candidate locations seemed to do a very good job of guessing correct
133 geolocation. But it could only do one trace at the time, did not have
134 a sensor in Norway and did not make the geolocations easily available
135 for postprocessing. So I contacted the developer and asked if he
136 would be willing to share the code (he refused until he had time to
137 clean it up), but he was interested in providing the geolocations in a
138 machine readable format, and willing to set up a sensor in Norway. So
139 since yesterday, it is possible to run traces from Norway in this
140 service thanks to a sensor node set up by
141 <a href="https://www.nuug.no/">the NUUG assosiation</a>, and get the
142 trace in KML format for further processing.</p>
143
144 <p align="center"><a href="https://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.kml"><img
145 src="https://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.png" alt="map of combined traces for URLs used by www.stortinget.no using geotraceroute"/></a></p>
146
147 <p>Here we can see a lot of trafic passes Sweden on its way to
148 Denmark, Germany, Holland and Ireland. Plenty of places where the
149 Snowden confirmations verified the traffic is read by various actors
150 without your best interest as their top priority.</p>
151
152 <p>Combining KML files is trivial using a text editor, so I could loop
153 over all the hosts behind the urls imported by www.stortinget.no and
154 ask for the KML file from GeoTraceroute, and create a combined KML
155 file with all the traces (unfortunately only one of the IP addresses
156 behind the DNS name is traced this time. To get them all, one would
157 have to request traces using IP number instead of DNS names from
158 GeoTraceroute). That might be the next step in this project.</p>
159
160 <p>Armed with these tools, I find it a lot easier to figure out where
161 the IP traffic moves and who control the boxes involved in moving it.
162 And every time the link crosses for example the Swedish border, we can
163 be sure Swedish Signal Intelligence (FRA) is listening, as GCHQ do in
164 Britain and NSA in USA and cables around the globe. (Hm, what should
165 we tell them? :) Keep that in mind if you ever send anything
166 unencrypted over the Internet.</p>
167
168 <p>PS: KML files are drawn using
169 <a href="http://ivanrublev.me/kml/">the KML viewer from Ivan
170 Rublev<a/>, as it was less cluttered than the local Linux application
171 Marble. There are heaps of other options too.</p>
172
173 <p>As usual, if you use Bitcoin and want to show your support of my
174 activities, please send Bitcoin donations to my address
175 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
176 </div>
177
178 <div class="tags">Tags: <a href="http://www.hungry.com/~pere/blog/tags/debian">debian</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/kart">kart</a>, <a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug</a>, <a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern</a>, <a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget</a>, <a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance</a>, <a href="http://www.hungry.com/~pere/blog/tags/web">web</a>.</div>
179
180
181 </div>
182
183
184
185
186 <div id="sidebar">
187
188
189
190 <h2>Archive</h2>
191 <ul>
192
193 <li>2025
194 <ul>
195
196 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/01/">January (1)</a></li>
197
198 </ul></li>
199
200 <li>2024
201 <ul>
202
203 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
204
205 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
206
207 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
208
209 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
210
211 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
212
213 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
214
215 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
216
217 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/12/">December (1)</a></li>
218
219 </ul></li>
220
221 <li>2023
222 <ul>
223
224 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
225
226 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
227
228 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
229
230 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
231
232 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
233
234 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
235
236 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
237
238 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
239
240 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
241
242 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
243
244 </ul></li>
245
246 <li>2022
247 <ul>
248
249 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
250
251 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
252
253 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
254
255 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
256
257 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
258
259 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
260
261 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
262
263 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
264
265 </ul></li>
266
267 <li>2021
268 <ul>
269
270 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
271
272 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
273
274 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
275
276 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
277
278 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
279
280 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
281
282 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
283
284 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
285
286 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
287
288 </ul></li>
289
290 <li>2020
291 <ul>
292
293 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
294
295 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
296
297 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
298
299 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
300
301 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
302
303 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
304
305 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
306
307 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
308
309 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
310
311 </ul></li>
312
313 <li>2019
314 <ul>
315
316 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
317
318 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
319
320 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
321
322 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
323
324 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
325
326 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
327
328 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
329
330 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
331
332 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
333
334 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
335
336 </ul></li>
337
338 <li>2018
339 <ul>
340
341 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
342
343 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
344
345 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
346
347 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
348
349 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
350
351 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
352
353 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
354
355 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
356
357 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
358
359 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
360
361 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
362
363 </ul></li>
364
365 <li>2017
366 <ul>
367
368 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
369
370 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
371
372 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
373
374 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
375
376 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
377
378 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
379
380 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
381
382 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
383
384 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
385
386 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
387
388 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
389
390 </ul></li>
391
392 <li>2016
393 <ul>
394
395 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
396
397 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
398
399 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
400
401 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
402
403 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
404
405 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
406
407 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
408
409 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
410
411 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
412
413 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
414
415 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
416
417 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
418
419 </ul></li>
420
421 <li>2015
422 <ul>
423
424 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
425
426 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
427
428 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
429
430 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
431
432 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
433
434 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
435
436 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
437
438 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
439
440 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
441
442 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
443
444 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
445
446 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
447
448 </ul></li>
449
450 <li>2014
451 <ul>
452
453 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
454
455 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
456
457 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
458
459 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
460
461 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
462
463 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
464
465 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
466
467 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
468
469 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
470
471 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
472
473 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
474
475 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
476
477 </ul></li>
478
479 <li>2013
480 <ul>
481
482 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
483
484 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
485
486 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
487
488 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
489
490 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
491
492 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
493
494 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
495
496 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
497
498 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
499
500 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
501
502 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
503
504 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
505
506 </ul></li>
507
508 <li>2012
509 <ul>
510
511 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
512
513 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
514
515 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
516
517 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
518
519 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
520
521 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
522
523 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
524
525 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
526
527 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
528
529 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
530
531 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
532
533 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
534
535 </ul></li>
536
537 <li>2011
538 <ul>
539
540 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
541
542 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
543
544 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
545
546 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
547
548 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
549
550 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
551
552 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
553
554 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
555
556 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
557
558 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
559
560 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
561
562 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
563
564 </ul></li>
565
566 <li>2010
567 <ul>
568
569 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
570
571 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
572
573 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
574
575 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
576
577 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
578
579 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
580
581 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
582
583 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
584
585 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
586
587 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
588
589 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
590
591 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
592
593 </ul></li>
594
595 <li>2009
596 <ul>
597
598 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
599
600 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
601
602 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
603
604 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
605
606 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
607
608 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
609
610 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
611
612 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
613
614 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
615
616 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
617
618 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
619
620 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
621
622 </ul></li>
623
624 <li>2008
625 <ul>
626
627 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
628
629 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
630
631 </ul></li>
632
633 </ul>
634
635
636
637 <h2>Tags</h2>
638 <ul>
639
640 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
641
642 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
643
644 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
645
646 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
647
648 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
649
650 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
651
652 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
653
654 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
655
656 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
657
658 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (204)</a></li>
659
660 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
661
662 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
663
664 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
665
666 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
667
668 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
669
670 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
671
672 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (466)</a></li>
673
674 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
675
676 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
677
678 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
679
680 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
681
682 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
683
684 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
685
686 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
687
688 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (18)</a></li>
689
690 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
691
692 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
693
694 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
695
696 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
697
698 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
699
700 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (8)</a></li>
701
702 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (2)</a></li>
703
704 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
705
706 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
707
708 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
709
710 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (46)</a></li>
711
712 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
713
714 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (25)</a></li>
715
716 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (325)</a></li>
717
718 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (199)</a></li>
719
720 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (41)</a></li>
721
722 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
723
724 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
725
726 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
727
728 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
729
730 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
731
732 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
733
734 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
735
736 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
737
738 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
739
740 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
741
742 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
743
744 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
745
746 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
747
748 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
749
750 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
751
752 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (76)</a></li>
753
754 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
755
756 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
757
758 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
759
760 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (5)</a></li>
761
762 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
763
764 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
765
766 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (22)</a></li>
767
768 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (80)</a></li>
769
770 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
771
772 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
773
774 </ul>
775
776
777 </div>
778 <p style="text-align: right">
779 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
780 </p>
781
782 </body>
783 </html>