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">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: entries from January
2017</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"01.rss" type=
"application/rss+xml" />
15 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
22 <h3>Entries from January
2017.
</h3>
26 <a href=
"http://people.skolelinux.org/pere/blog/Where_did_that_package_go___mdash__geolocated_IP_traceroute.html">Where did that package go?
— geolocated IP traceroute
</a>
32 <p>Did you ever wonder where the web trafic really flow to reach the
33 web servers, and who own the network equipment it is flowing through?
34 It is possible to get a glimpse of this from using traceroute, but it
35 is hard to find all the details. Many years ago, I wrote a system to
36 map the Norwegian Internet (trying to figure out if our plans for a
37 network game service would get low enough latency, and who we needed
38 to talk to about setting up game servers close to the users. Back
39 then I used traceroute output from many locations (I asked my friends
40 to run a script and send me their traceroute output) to create the
41 graph and the map. The output from traceroute typically look like
45 traceroute to www.stortinget.no (
85.88.67.10),
30 hops max,
60 byte packets
46 1 uio-gw10.uio.no (
129.240.202.1)
0.447 ms
0.486 ms
0.621 ms
47 2 uio-gw8.uio.no (
129.240.24.229)
0.467 ms
0.578 ms
0.675 ms
48 3 oslo-gw1.uninett.no (
128.39.65.17)
0.385 ms
0.373 ms
0.358 ms
49 4 te3-
1-
2.br1.fn3.as2116.net (
193.156.90.3)
1.174 ms
1.172 ms
1.153 ms
50 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
51 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
52 7 89.191.10.146 (
89.191.10.146)
0.931 ms
0.917 ms
0.955 ms
58 <p>This show the DNS names and IP addresses of (at least some of the)
59 network equipment involved in getting the data traffic from me to the
60 www.stortinget.no server, and how long it took in milliseconds for a
61 package to reach the equipment and return to me. Three packages are
62 sent, and some times the packages do not follow the same path. This
63 is shown for hop
5, where three different IP addresses replied to the
64 traceroute request.
</p>
66 <p>There are many ways to measure trace routes. Other good traceroute
67 implementations I use are traceroute (using ICMP packages) mtr (can do
68 both ICMP, UDP and TCP) and scapy (python library with ICMP, UDP, TCP
69 traceroute and a lot of other capabilities). All of them are easily
70 available in
<a href=
"https://www.debian.org/">Debian
</a>.
</p>
72 <p>This time around, I wanted to know the geographic location of
73 different route points, to visualize how visiting a web page spread
74 information about the visit to a lot of servers around the globe. The
75 background is that a web site today often will ask the browser to get
76 from many servers the parts (for example HTML, JSON, fonts,
77 JavaScript, CSS, video) required to display the content. This will
78 leak information about the visit to those controlling these servers
79 and anyone able to peek at the data traffic passing by (like your ISP,
80 the ISPs backbone provider, FRA, GCHQ, NSA and others).
</p>
82 <p>Lets pick an example, the Norwegian parliament web site
83 www.stortinget.no. It is read daily by all members of parliament and
84 their staff, as well as political journalists, activits and many other
85 citizens of Norway. A visit to the www.stortinget.no web site will
86 ask your browser to contact
8 other servers: ajax.googleapis.com,
87 insights.hotjar.com, script.hotjar.com, static.hotjar.com,
88 stats.g.doubleclick.net, www.google-analytics.com,
89 www.googletagmanager.com and www.netigate.se. I extracted this by
90 asking
<a href=
"http://phantomjs.org/">PhantomJS
</a> to visit the
91 Stortinget web page and tell me all the URLs PhantomJS downloaded to
92 render the page (in HAR format using
93 <a href=
"https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js">their
94 netsniff example
</a>. I am very grateful to Gorm for showing me how
95 to do this). My goal is to visualize network traces to all IP
96 addresses behind these DNS names, do show where visitors personal
97 information is spread when visiting the page.
</p>
99 <p align=
"center"><a href=
"www.stortinget.no-geoip.kml"><img
100 src=
"http://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>
102 <p>When I had a look around for options, I could not find any good
103 free software tools to do this, and decided I needed my own traceroute
104 wrapper outputting KML based on locations looked up using GeoIP. KML
105 is easy to work with and easy to generate, and understood by several
106 of the GIS tools I have available. I got good help from by NUUG
107 colleague Anders Einar with this, and the result can be seen in
108 <a href=
"https://github.com/petterreinholdtsen/kmltraceroute">my
109 kmltraceroute git repository
</a>. Unfortunately, the quality of the
110 free GeoIP databases I could find (and the for-pay databases my
111 friends had access to) is not up to the task. The IP addresses of
112 central Internet infrastructure would typically be placed near the
113 controlling companies main office, and not where the router is really
114 located, as you can see from
<a href=
"www.stortinget.no-geoip.kml">the
115 KML file I created
</a> using the GeoLite City dataset from MaxMind.
117 <p align=
"center"><a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg"><img
118 src=
"http://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>
120 <p>I also had a look at the visual traceroute graph created by
121 <a href=
"http://www.secdev.org/projects/scapy/">the scrapy project
</a>,
122 showing IP network ownership (aka AS owner) for the IP address in
124 <a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-scapy.svg">The
125 graph display a lot of useful information about the traceroute in SVG
126 format
</a>, and give a good indication on who control the network
127 equipment involved, but it do not include geolocation. This graph
128 make it possible to see the information is made available at least for
129 UNINETT, Catchcom, Stortinget, Nordunet, Google, Amazon, Telia, Level
130 3 Communications and NetDNA.
</p>
132 <p align=
"center"><a href=
"https://geotraceroute.com/index.php?node=4&host=www.stortinget.no"><img
133 src=
"http://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>
135 <p>In the process, I came across the
136 <a href=
"https://geotraceroute.com/">web service GeoTraceroute
</a> by
137 Salim Gasmi. Its methology of combining guesses based on DNS names,
138 various location databases and finally use latecy times to rule out
139 candidate locations seemed to do a very good job of guessing correct
140 geolocation. But it could only do one trace at the time, did not have
141 a sensor in Norway and did not make the geolocations easily available
142 for postprocessing. So I contacted the developer and asked if he
143 would be willing to share the code (he refused until he had time to
144 clean it up), but he was interested in providing the geolocations in a
145 machine readable format, and willing to set up a sensor in Norway. So
146 since yesterday, it is possible to run traces from Norway in this
147 service thanks to a sensor node set up by
148 <a href=
"https://www.nuug.no/">the NUUG assosiation
</a>, and get the
149 trace in KML format for further processing.
</p>
151 <p align=
"center"><a href=
"http://people.skolelinux.org/pere/blog/images/2017-01-09-www.stortinget.no-geotraceroute-kml-join.kml"><img
152 src=
"http://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>
154 <p>Here we can see a lot of trafic passes Sweden on its way to
155 Denmark, Germany, Holland and Ireland. Plenty of places where the
156 Snowden confirmations verified the traffic is read by various actors
157 without your best interest as their top priority.
</p>
159 <p>Combining KML files is trivial using a text editor, so I could loop
160 over all the hosts behind the urls imported by www.stortinget.no and
161 ask for the KML file from GeoTraceroute, and create a combined KML
162 file with all the traces (unfortunately only one of the IP addresses
163 behind the DNS name is traced this time. To get them all, one would
164 have to request traces using IP number instead of DNS names from
165 GeoTraceroute). That might be the next step in this project.
</p>
167 <p>Armed with these tools, I find it a lot easier to figure out where
168 the IP traffic moves and who control the boxes involved in moving it.
169 And every time the link crosses for example the Swedish border, we can
170 be sure Swedish Signal Intelligence (FRA) is listening, as GCHQ do in
171 Britain and NSA in USA and cables around the globe. (Hm, what should
172 we tell them? :) Keep that in mind if you ever send anything
173 unencrypted over the Internet.
</p>
175 <p>PS: KML files are drawn using
176 <a href=
"http://ivanrublev.me/kml/">the KML viewer from Ivan
177 Rublev
<a/>, as it was less cluttered than the local Linux application
178 Marble. There are heaps of other options too.
</p>
180 <p>As usual, if you use Bitcoin and want to show your support of my
181 activities, please send Bitcoin donations to my address
182 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
188 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/web">web
</a>.
193 <div class=
"padding"></div>
197 <a href=
"http://people.skolelinux.org/pere/blog/Introducing_ical_archiver_to_split_out_old_iCalendar_entries.html">Introducing ical-archiver to split out old iCalendar entries
</a>
203 <p>Do you have a large
<a href=
"https://icalendar.org/">iCalendar
</a>
204 file with lots of old entries, and would like to archive them to save
205 space and resources? At least those of us using KOrganizer know that
206 turning on and off an event set become slower and slower the more
207 entries are in the set. While working on migrating our calendars to a
208 <a href=
"http://radicale.org/">Radicale CalDAV server
</a> on our
209 <a href=
"https://freedomboxfoundation.org/">Freedombox server
</a/>, my
210 loved one wondered if I could find a way to split up the calendar file
211 she had in KOrganizer, and I set out to write a tool. I spent a few
212 days writing and polishing the system, and it is now ready for general
214 <a href=
"https://github.com/petterreinholdtsen/ical-archiver">code for
215 ical-archiver
</a> is publicly available from a git repository on
216 github. The system is written in Python and depend on
217 <a href=
"http://eventable.github.io/vobject/">the vobject Python
220 <p>To use it, locate the iCalendar file you want to operate on and
221 give it as an argument to the ical-archiver script. This will
222 generate a set of new files, one file per component type per year for
223 all components expiring more than two years in the past. The vevent,
224 vtodo and vjournal entries are handled by the script. The remaining
225 entries are stored in a 'remaining' file.
</p>
227 <p>This is what a test run can look like:
230 % ical-archiver t/
2004-
2016.ics
234 Writing t/
2004-
2016.ics-subset-vevent-
2004.ics
235 Writing t/
2004-
2016.ics-subset-vevent-
2005.ics
236 Writing t/
2004-
2016.ics-subset-vevent-
2006.ics
237 Writing t/
2004-
2016.ics-subset-vevent-
2007.ics
238 Writing t/
2004-
2016.ics-subset-vevent-
2008.ics
239 Writing t/
2004-
2016.ics-subset-vevent-
2009.ics
240 Writing t/
2004-
2016.ics-subset-vevent-
2010.ics
241 Writing t/
2004-
2016.ics-subset-vevent-
2011.ics
242 Writing t/
2004-
2016.ics-subset-vevent-
2012.ics
243 Writing t/
2004-
2016.ics-subset-vevent-
2013.ics
244 Writing t/
2004-
2016.ics-subset-vevent-
2014.ics
245 Writing t/
2004-
2016.ics-subset-vjournal-
2007.ics
246 Writing t/
2004-
2016.ics-subset-vjournal-
2011.ics
247 Writing t/
2004-
2016.ics-subset-vtodo-
2012.ics
248 Writing t/
2004-
2016.ics-remaining.ics
252 <p>As you can see, the original file is untouched and new files are
253 written with names derived from the original file. If you are happy
254 with their content, the *-remaining.ics file can replace the original
255 the the others can be archived or imported as historical calendar
258 <p>The script should probably be improved a bit. The error handling
259 when discovering broken entries is not good, and I am not sure yet if
260 it make sense to split different entry types into separate files or
261 not. The program is thus likely to change. If you find it
262 interesting, please get in touch. :)
</p>
264 <p>As usual, if you use Bitcoin and want to show your support of my
265 activities, please send Bitcoin donations to my address
266 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
272 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
277 <div class=
"padding"></div>
279 <p style=
"text-align: right;"><a href=
"01.rss"><img src=
"http://people.skolelinux.org/pere/blog/xml.gif" alt=
"RSS Feed" width=
"36" height=
"14" /></a></p>
290 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/01/">January (
2)
</a></li>
297 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
299 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
301 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
303 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
305 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
307 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
309 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
311 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
313 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
315 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
317 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
319 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
326 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
328 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
330 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
332 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
334 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
336 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
338 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
340 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
342 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
344 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
346 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
348 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
355 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
357 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
359 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
361 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
363 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
365 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
367 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
369 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
371 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
373 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
375 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
377 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
384 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
386 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
388 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
390 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
392 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
394 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
396 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
398 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
400 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
402 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
404 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
406 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
413 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
415 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
417 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
419 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
421 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
423 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
425 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
427 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
429 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
431 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
433 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
435 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
442 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
444 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
446 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
448 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
450 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
452 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
454 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
456 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
458 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
460 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
462 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
464 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
471 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
473 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
475 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
477 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
479 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
481 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
483 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
485 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
487 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
489 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
491 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
493 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
500 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
502 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
504 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
506 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
508 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
510 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
512 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
514 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
516 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
518 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
520 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
522 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
529 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
531 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
542 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
13)
</a></li>
544 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
546 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
548 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
550 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
9)
</a></li>
552 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
16)
</a></li>
554 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
556 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
558 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
145)
</a></li>
560 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
158)
</a></li>
562 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
10)
</a></li>
564 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/dld">dld (
16)
</a></li>
566 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook (
23)
</a></li>
568 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
570 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
338)
</a></li>
572 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
574 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
12)
</a></li>
576 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
29)
</a></li>
578 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
580 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
18)
</a></li>
582 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
584 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
42)
</a></li>
586 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
15)
</a></li>
588 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
20)
</a></li>
590 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
592 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
594 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
596 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
598 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
600 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
39)
</a></li>
602 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
9)
</a></li>
604 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
285)
</a></li>
606 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
183)
</a></li>
608 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
26)
</a></li>
610 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
612 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
62)
</a></li>
614 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
97)
</a></li>
616 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/raid">raid (
1)
</a></li>
618 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
620 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
622 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
624 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
10)
</a></li>
626 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
628 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter (
5)
</a></li>
630 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
632 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
52)
</a></li>
634 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
636 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
638 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
50)
</a></li>
640 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
5)
</a></li>
642 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
11)
</a></li>
644 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
45)
</a></li>
646 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
2)
</a></li>
648 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
650 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
8)
</a></li>
652 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
59)
</a></li>
654 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
656 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
39)
</a></li>
662 <p style=
"text-align: right">
663 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>