Petter Reinholdtsen

Where did that package go? — geolocated IP traceroute
9th January 2017

Did you ever wonder where the web trafic really flow to reach the web servers, and who own the network equipment it is flowing through? It is possible to get a glimpse of this from using traceroute, but it is hard to find all the details. Many years ago, I wrote a system to map the Norwegian Internet (trying to figure out if our plans for a network game service would get low enough latency, and who we needed to talk to about setting up game servers close to the users. Back then I used traceroute output from many locations (I asked my friends to run a script and send me their traceroute output) to create the graph and the map. The output from traceroute typically look like this:

traceroute to www.stortinget.no (85.88.67.10), 30 hops max, 60 byte packets
 1  uio-gw10.uio.no (129.240.202.1)  0.447 ms  0.486 ms  0.621 ms
 2  uio-gw8.uio.no (129.240.24.229)  0.467 ms  0.578 ms  0.675 ms
 3  oslo-gw1.uninett.no (128.39.65.17)  0.385 ms  0.373 ms  0.358 ms
 4  te3-1-2.br1.fn3.as2116.net (193.156.90.3)  1.174 ms  1.172 ms  1.153 ms
 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
 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
 7  89.191.10.146 (89.191.10.146)  0.931 ms  0.917 ms  0.955 ms
 8  * * *
 9  * * *
[...]

This show the DNS names and IP addresses of (at least some of the) network equipment involved in getting the data traffic from me to the www.stortinget.no server, and how long it took in milliseconds for a package to reach the equipment and return to me. Three packages are sent, and some times the packages do not follow the same path. This is shown for hop 5, where three different IP addresses replied to the traceroute request.

There are many ways to measure trace routes. Other good traceroute implementations I use are traceroute (using ICMP packages) mtr (can do both ICMP, UDP and TCP) and scapy (python library with ICMP, UDP, TCP traceroute and a lot of other capabilities). All of them are easily available in Debian.

This time around, I wanted to know the geographic location of different route points, to visualize how visiting a web page spread information about the visit to a lot of servers around the globe. The background is that a web site today often will ask the browser to get from many servers the parts (for example HTML, JSON, fonts, JavaScript, CSS, video) required to display the content. This will leak information about the visit to those controlling these servers and anyone able to peek at the data traffic passing by (like your ISP, the ISPs backbone provider, FRA, GCHQ, NSA and others).

Lets pick an example, the Norwegian parliament web site www.stortinget.no. It is read daily by all members of parliament and their staff, as well as political journalists, activits and many other citizens of Norway. A visit to the www.stortinget.no web site will ask your browser to contact 8 other servers: ajax.googleapis.com, insights.hotjar.com, script.hotjar.com, static.hotjar.com, stats.g.doubleclick.net, www.google-analytics.com, www.googletagmanager.com and www.netigate.se. I extracted this by asking PhantomJS to visit the Stortinget web page and tell me all the URLs PhantomJS downloaded to render the page (in HAR format using their netsniff example. I am very grateful to Gorm for showing me how to do this). My goal is to visualize network traces to all IP addresses behind these DNS names, do show where visitors personal information is spread when visiting the page.

map of combined traces for URLs used by www.stortinget.no using GeoIP

When I had a look around for options, I could not find any good free software tools to do this, and decided I needed my own traceroute wrapper outputting KML based on locations looked up using GeoIP. KML is easy to work with and easy to generate, and understood by several of the GIS tools I have available. I got good help from by NUUG colleague Anders Einar with this, and the result can be seen in my kmltraceroute git repository. Unfortunately, the quality of the free GeoIP databases I could find (and the for-pay databases my friends had access to) is not up to the task. The IP addresses of central Internet infrastructure would typically be placed near the controlling companies main office, and not where the router is really located, as you can see from the KML file I created using the GeoLite City dataset from MaxMind.

scapy traceroute graph for URLs used by www.stortinget.no

I also had a look at the visual traceroute graph created by the scrapy project, showing IP network ownership (aka AS owner) for the IP address in question. The graph display a lot of useful information about the traceroute in SVG format, and give a good indication on who control the network equipment involved, but it do not include geolocation. This graph make it possible to see the information is made available at least for UNINETT, Catchcom, Stortinget, Nordunet, Google, Amazon, Telia, Level 3 Communications and NetDNA.

example geotraceroute view for www.stortinget.no

In the process, I came across the web service GeoTraceroute by Salim Gasmi. Its methology of combining guesses based on DNS names, various location databases and finally use latecy times to rule out candidate locations seemed to do a very good job of guessing correct geolocation. But it could only do one trace at the time, did not have a sensor in Norway and did not make the geolocations easily available for postprocessing. So I contacted the developer and asked if he would be willing to share the code (he refused until he had time to clean it up), but he was interested in providing the geolocations in a machine readable format, and willing to set up a sensor in Norway. So since yesterday, it is possible to run traces from Norway in this service thanks to a sensor node set up by the NUUG assosiation, and get the trace in KML format for further processing.

map of combined traces for URLs used by www.stortinget.no using geotraceroute

Here we can see a lot of trafic passes Sweden on its way to Denmark, Germany, Holland and Ireland. Plenty of places where the Snowden confirmations verified the traffic is read by various actors without your best interest as their top priority.

Combining KML files is trivial using a text editor, so I could loop over all the hosts behind the urls imported by www.stortinget.no and ask for the KML file from GeoTraceroute, and create a combined KML file with all the traces (unfortunately only one of the IP addresses behind the DNS name is traced this time. To get them all, one would have to request traces using IP number instead of DNS names from GeoTraceroute). That might be the next step in this project.

Armed with these tools, I find it a lot easier to figure out where the IP traffic moves and who control the boxes involved in moving it. And every time the link crosses for example the Swedish border, we can be sure Swedish Signal Intelligence (FRA) is listening, as GCHQ do in Britain and NSA in USA and cables around the globe. (Hm, what should we tell them? :) Keep that in mind if you ever send anything unencrypted over the Internet.

PS: KML files are drawn using the KML viewer from Ivan Rublev, as it was less cluttered than the local Linux application Marble. There are heaps of other options too.

As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

Tags: debian, english, kart, nuug, personvern, stortinget, surveillance, web.
Introducing ical-archiver to split out old iCalendar entries
4th January 2017

Do you have a large iCalendar file with lots of old entries, and would like to archive them to save space and resources? At least those of us using KOrganizer know that turning on and off an event set become slower and slower the more entries are in the set. While working on migrating our calendars to a Radicale CalDAV server on our Freedombox server, my loved one wondered if I could find a way to split up the calendar file she had in KOrganizer, and I set out to write a tool. I spent a few days writing and polishing the system, and it is now ready for general consumption. The code for ical-archiver is publicly available from a git repository on github. The system is written in Python and depend on the vobject Python module.

To use it, locate the iCalendar file you want to operate on and give it as an argument to the ical-archiver script. This will generate a set of new files, one file per component type per year for all components expiring more than two years in the past. The vevent, vtodo and vjournal entries are handled by the script. The remaining entries are stored in a 'remaining' file.

This is what a test run can look like:

% ical-archiver t/2004-2016.ics 
Found 3612 vevents
Found 6 vtodos
Found 2 vjournals
Writing t/2004-2016.ics-subset-vevent-2004.ics
Writing t/2004-2016.ics-subset-vevent-2005.ics
Writing t/2004-2016.ics-subset-vevent-2006.ics
Writing t/2004-2016.ics-subset-vevent-2007.ics
Writing t/2004-2016.ics-subset-vevent-2008.ics
Writing t/2004-2016.ics-subset-vevent-2009.ics
Writing t/2004-2016.ics-subset-vevent-2010.ics
Writing t/2004-2016.ics-subset-vevent-2011.ics
Writing t/2004-2016.ics-subset-vevent-2012.ics
Writing t/2004-2016.ics-subset-vevent-2013.ics
Writing t/2004-2016.ics-subset-vevent-2014.ics
Writing t/2004-2016.ics-subset-vjournal-2007.ics
Writing t/2004-2016.ics-subset-vjournal-2011.ics
Writing t/2004-2016.ics-subset-vtodo-2012.ics
Writing t/2004-2016.ics-remaining.ics
%

As you can see, the original file is untouched and new files are written with names derived from the original file. If you are happy with their content, the *-remaining.ics file can replace the original the the others can be archived or imported as historical calendar collections.

The script should probably be improved a bit. The error handling when discovering broken entries is not good, and I am not sure yet if it make sense to split different entry types into separate files or not. The program is thus likely to change. If you find it interesting, please get in touch. :)

As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

Tags: english, standard.
Appstream just learned how to map hardware to packages too!
23rd December 2016

I received a very nice Christmas present today. As my regular readers probably know, I have been working on the the Isenkram system for many years. The goal of the Isenkram system is to make it easier for users to figure out what to install to get a given piece of hardware to work in Debian, and a key part of this system is a way to map hardware to packages. Isenkram have its own mapping database, and also uses data provided by each package using the AppStream metadata format. And today, AppStream in Debian learned to look up hardware the same way Isenkram is doing it, ie using fnmatch():

% appstreamcli what-provides modalias \
  usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
Identifier: pymissile [generic]
Name: pymissile
Summary: Control original Striker USB Missile Launcher
Package: pymissile
% appstreamcli what-provides modalias usb:v0694p0002d0000
Identifier: libnxt [generic]
Name: libnxt
Summary: utility library for talking to the LEGO Mindstorms NXT brick
Package: libnxt
---
Identifier: t2n [generic]
Name: t2n
Summary: Simple command-line tool for Lego NXT
Package: t2n
---
Identifier: python-nxt [generic]
Name: python-nxt
Summary: Python driver/interface/wrapper for the Lego Mindstorms NXT robot
Package: python-nxt
---
Identifier: nbc [generic]
Name: nbc
Summary: C compiler for LEGO Mindstorms NXT bricks
Package: nbc
%

A similar query can be done using the combined AppStream and Isenkram databases using the isenkram-lookup tool:

% isenkram-lookup usb:v1130p0202d0100dc00dsc00dp00ic03isc00ip00in00
pymissile
% isenkram-lookup usb:v0694p0002d0000
libnxt
nbc
python-nxt
t2n
%

You can find modalias values relevant for your machine using cat $(find /sys/devices/ -name modalias).

If you want to make this system a success and help Debian users make the most of the hardware they have, please helpadd AppStream metadata for your package following the guidelines documented in the wiki. So far only 11 packages provide such information, among the several hundred hardware specific packages in Debian. The Isenkram database on the other hand contain 101 packages, mostly related to USB dongles. Most of the packages with hardware mapping in AppStream are LEGO Mindstorms related, because I have, as part of my involvement in the Debian LEGO team given priority to making sure LEGO users get proposed the complete set of packages in Debian for that particular hardware. The team also got a nice Christmas present today. The nxt-firmware package made it into Debian. With this package in place, it is now possible to use the LEGO Mindstorms NXT unit with only free software, as the nxt-firmware package contain the source and firmware binaries for the NXT brick.

As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

Tags: debian, english, isenkram.
Isenkram updated with a lot more hardware-package mappings
20th December 2016

The Isenkram system I wrote two years ago to make it easier in Debian to find and install packages to get your hardware dongles to work, is still going strong. It is a system to look up the hardware present on or connected to the current system, and map the hardware to Debian packages. It can either be done using the tools in isenkram-cli or using the user space daemon in the isenkram package. The latter will notify you, when inserting new hardware, about what packages to install to get the dongle working. It will even provide a button to click on to ask packagekit to install the packages.

Here is an command line example from my Thinkpad laptop:

% isenkram-lookup  
bluez
cheese
ethtool
fprintd
fprintd-demo
gkrellm-thinkbat
hdapsd
libpam-fprintd
pidgin-blinklight
thinkfan
tlp
tp-smapi-dkms
tp-smapi-source
tpb
%

It can also list the firware package providing firmware requested by the load kernel modules, which in my case is an empty list because I have all the firmware my machine need:

% /usr/sbin/isenkram-autoinstall-firmware -l
info: did not find any firmware files requested by loaded kernel modules.  exiting
%

The last few days I had a look at several of the around 250 packages in Debian with udev rules. These seem like good candidates to install when a given hardware dongle is inserted, and I found several that should be proposed by isenkram. I have not had time to check all of them, but am happy to report that now there are 97 packages packages mapped to hardware by Isenkram. 11 of these packages provide hardware mapping using AppStream, while the rest are listed in the modaliases file provided in isenkram.

These are the packages with hardware mappings at the moment. The marked packages are also announcing their hardware support using AppStream, for everyone to use:

air-quality-sensor, alsa-firmware-loaders, argyll, array-info, avarice, avrdude, b43-fwcutter, bit-babbler, bluez, bluez-firmware, brltty, broadcom-sta-dkms, calibre, cgminer, cheese, colord, colorhug-client, dahdi-firmware-nonfree, dahdi-linux, dfu-util, dolphin-emu, ekeyd, ethtool, firmware-ipw2x00, fprintd, fprintd-demo, galileo, gkrellm-thinkbat, gphoto2, gpsbabel, gpsbabel-gui, gpsman, gpstrans, gqrx-sdr, gr-fcdproplus, gr-osmosdr, gtkpod, hackrf, hdapsd, hdmi2usb-udev, hpijs-ppds, hplip, ipw3945-source, ipw3945d, kde-config-tablet, kinect-audio-setup, libnxt, libpam-fprintd, lomoco, madwimax, minidisc-utils, mkgmap, msi-keyboard, mtkbabel, nbc, nqc, nut-hal-drivers, ola, open-vm-toolbox, open-vm-tools, openambit, pcgminer, pcmciautils, pcscd, pidgin-blinklight, printer-driver-splix, pymissile, python-nxt, qlandkartegt, qlandkartegt-garmin, rosegarden, rt2x00-source, sispmctl, soapysdr-module-hackrf, solaar, squeak-plugins-scratch, sunxi-tools, t2n, thinkfan, thinkfinger-tools, tlp, tp-smapi-dkms, tp-smapi-source, tpb, tucnak, uhd-host, usbmuxd, viking, virtualbox-ose-guest-x11, w1retap, xawtv, xserver-xorg-input-vmmouse, xserver-xorg-input-wacom, xserver-xorg-video-qxl, xserver-xorg-video-vmware, yubikey-personalization and zd1211-firmware

If you know of other packages, please let me know with a wishlist bug report against the isenkram-cli package, and ask the package maintainer to add AppStream metadata according to the guidelines to provide the information for everyone. In time, I hope to get rid of the isenkram specific hardware mapping and depend exclusively on AppStream.

Note, the AppStream metadata for broadcom-sta-dkms is matching too much hardware, and suggest that the package with with any ethernet card. See bug #838735 for the details. I hope the maintainer find time to address it soon. In the mean time I provide an override in isenkram.

Tags: debian, english, isenkram.
Oolite, a life in space as vagabond and mercenary - nice free software
11th December 2016

In my early years, I played the epic game Elite on my PC. I spent many months trading and fighting in space, and reached the 'elite' fighting status before I moved on. The original Elite game was available on Commodore 64 and the IBM PC edition I played had a 64 KB executable. I am still impressed today that the authors managed to squeeze both a 3D engine and details about more than 2000 planet systems across 7 galaxies into a binary so small.

I have known about the free software game Oolite inspired by Elite for a while, but did not really have time to test it properly until a few days ago. It was great to discover that my old knowledge about trading routes were still valid. But my fighting and flying abilities were gone, so I had to retrain to be able to dock on a space station. And I am still not able to make much resistance when I am attacked by pirates, so I bougth and mounted the most powerful laser in the rear to be able to put up at least some resistance while fleeing for my life. :)

When playing Elite in the late eighties, I had to discover everything on my own, and I had long lists of prices seen on different planets to be able to decide where to trade what. This time I had the advantages of the Elite wiki, where information about each planet is easily available with common price ranges and suggested trading routes. This improved my ability to earn money and I have been able to earn enough to buy a lot of useful equipent in a few days. I believe I originally played for months before I could get a docking computer, while now I could get it after less then a week.

If you like science fiction and dreamed of a life as a vagabond in space, you should try out Oolite. It is available for Linux, MacOSX and Windows, and is included in Debian and derivatives since 2011.

As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

Tags: debian, english, nice free software.
Er lover brutt når personvernpolicy ikke stemmer med praksis?
9th December 2016

Når jeg bruker Ghostery, uBlock, uMatrix, ScriptSafe og andre nettleserverktøy (de passer på hverandre) for å holde styr på hvordan nettsteder sprer informasjon om hvilke nettsider jeg leser blir det veldig synlig hvilke nettsteder som er satt opp til å utveksle informasjon med utlandet og tredjeparter. For en stund siden la jeg merke til at det virker å være avvik mellom personvernpolicy og praksis endel steder, og tok tak i et par konkrete eksempler og sendte spørsmål til Datatilsynets kontaktpunkt for veiledning:

«Jeg har et spørsmål når det gjelder bruken av Google Analytics og personvernpolicy. Er det lovlig for et nettsted å si en ting i personvernpolicy og gjøre noe annet i virkeligheten? Spesifikt lurer jeg på hvilket lov som er brutt hvis nettstedet i HTML-koden til nettsidene ber lesernes nettleser om å kontakte Google Analytics og slik overleverer sitt IP-nummer til Google, samtidig som personvernpolicien hevder at Google Analytics kun får anonymiserte data. Google får jo i slike tilfeller alltid overført fullt IP-nummer, og nettstedet kan i URL-en som brukes be Google om å ikke lagre deler av IP-adressen (omtalt som anonymisering av Google Analytics)

Et eksempel er Nettavisen digi.no. Deres personvernpolicy sier følgende:

«Tredjeparter (som Google Analytics, Cxense, TNS Gallup) får kun anonymiserte data.»

Men når en leser artikler der så blir maskiner i Norge, USA, Tyskland, Danmark, Storbritannia, Irland og Nederland varslet om besøket og får dermed overlevert full IP-adresse, som datatilsynet har uttalt er en personopplysning. Nettsidene er satt opp til be nettleseren å kontakte 29 ulike maskiner rundt om i verden. Fire av dem er er under DNS-domenene digi.no og tek.no som tilhører samme eier. I tillegg ber nettsidene ikke Google Analytics om å fjerne siste oktett i IP-adressen ved lagring, dvs. flagget «aip=1» er ikke satt i URL-en som brukes for å kontakte Google Analytics.

Tilsvarende er også tilfelle for andre nettsteder, så digi.no er ikke spesiell i så måte (dagbladet.no er et annet eksempel, det gjelder flere).»

Etter noen dager kunne juridisk rådgiver Elisabeth Krauss Amundsen hos Datatilsynet fortelle det følgende:

«Hei, og takk for din e-post.

Vår svartjeneste gir deg kortfattet rådgivning. Vi vil derfor ikke konkludere i saken din, men gi deg råd og veiledning.

Ut ifra det du skriver er det antakelig flere bestemmelser i personopplysingsloven som brytes dersom virksomhetens personvernpolicy sier noe annet om behandlingen av personopplysninger enn det som faktisk skjer. Antakelig vil det være et brudd på informasjonsplikten i personopplysingsloven §§ 18 og 19<https://lovdata.no/dokument/NL/lov/2000-04-14-31/KAPITTEL_2#§18> dersom det gis feilinformasjon om at opplysningene utleveres. Det kan også stilles spørsmål om grunnkravene for behandling av personopplysninger vil være oppfylt ved en utlevering av personopplysninger til en tredjepart, dersom dette ikke er inkludert behandlingsgrunnlaget og formålet med behandlingen, se personopplysingsloven § 11, jf. 8.<https://lovdata.no/dokument/NL/lov/2000-04-14-31/KAPITTEL_2#§11

Oppdatert med kunnskap om lover og regler tok jeg så kontakt med Dagbladet på epostadressen de annonserer på sine personvernpolicysider:

«Jeg lurte litt i forbindelse med en bloggpost jeg skriver på, og lurer på om dere hjelpe meg med å finne ut av følgende. Først litt bakgrunnsinformasjon. Dagbladets personvernpolicy forteller følgende:

«3. Automatisk innhentet informasjon

For eksempel IP-adressen din (ikke synlig for andre) samt statistisk, automatisk produsert informasjon, som når du sist var innlogget på tjenesten. Dette er informasjon vi samler for å gjøre tjenesten best mulig.»

Men når en besøker nettsidene til Dagbladet, f.eks. forsiden, så er nettsidene satt opp til å kontakte mange tredjeparter som slik får tilgang til både fullt IP-nummer og i de fleste tilfeller nøyaktig hvilken artikkel en leser hos Dagbladet ved at Referer-feltet fylles og legges ved. Dette gjelder Google Analytics, Cxense, INS Gallup, Doubleclick med flere. Totalt ber forsiden nettleseren om å koble seg opp til 60 nettsteder med 149 separate oppkoblinger. I hver av disse oppkoblingene oversendes IP-adressen til leseren, og i følge Datatilsynet er «en IP-adresse definert som en personopplysning fordi den kan spores tilbake til en bestemt maskinvare og dermed til en enkeltperson».

Datatilsynet har fortalt meg at i følge personopplysingsloven §§ 18 og 19 skal informasjonen som gis om bruk og utlevering av personopplysninger være korrekt. De forteller videre at det er endel grunnkrav som må være oppfylt ved utlevering av personopplysninger til tredjeparter, nærmere forklart i personopplysingsloven § 11 som henviser til § 8.

Mitt spørsmål er dermed som følger:

Hva mener dere i personpolicyen når dere skriver at IP-adressen ikke er synlig for andre?»

Etter en uke har jeg fortsatt ikke fått svar fra Dagbladet på mitt spørsmål, så neste steg er antagelig å høre om Datatilsynet er interessert i å se på saken.

Men Dagbladet er ikke det eneste nettstedet som forteller at de ikke deler personopplysninger med andre mens observerbar praksis dokumenterer noe annet. Jeg sendte derfor også et spørsmål til kontaktadressen til nettavisen Digi.no, og der var responsen mye bedre:

«Jeg lurte på en ting i forbindelse med en bloggpost jeg skriver på, og lurer på om dere hjelpe meg. Først litt bakgrunnsinformasjon. Digi.nos personvernpolicy forteller følgende:

«All personlig informasjon blir lagret i våre systemer, disse er ikke tilgjengelig for tredjeparter, og blir ikke lagret i informasjonskapsler. Tredjeparter (som Google Analytics, Cxense, TNS Gallup) får kun anonymiserte data.»

Men når en besøker nettsidene til nettavisen, f.eks. forsiden, så er nettsidene satt opp til å kontakte mange tredjeparter som slik får tilgang til både fullt IP-nummer og i de fleste tilfeller nøyaktig hvilken artikkel en leser hos Digi.no ved at Referer-feltet fylles og legges ved. Dette gjelder både Google Analytics, Cxense blant og INS Gallum. Totalt ber forsiden nettleseren om å koble seg opp til 29 nettsteder med 44 separate oppkoblinger. I hver av disse oppkoblingene sendes IP-adressen til leseren over, og i følge Datatilsynet er «en IP-adresse definert som en personopplysning fordi den kan spores tilbake til en bestemt maskinvare og dermed til en enkeltperson». Det jeg ser virker ikke å være i tråd med personvernpolicyen.

Når en besøker Digi.nos nettsider gjøres det to oppkoblinger til Google Analytics, en for å hente ned programkoden som samler informasjon fra nettleseren og sender over til Google (analytics.js), og en for å overføre det som ble samlet inn. I den siste oppkoblingen er det mulig å be Google om å ikke ta vare på hele IP-adressen, men i stedet fjerne siste oktett i IP-adressen. Dette omtales ofte litt misvisende for «anonymisert» bruk av Google Analytics, i og med at fullt IP-nummer blir sendt til Google og det er opp til Google om de vil bry seg om ønsket fra de som har laget nettsiden. Ut fra det som står i personvernpolicyen ville jeg tro at Digi.no ba google om å ikke ta vare på hele IP-nummeret, men når en ser på den andre oppkoblingen kan en se at flagget «aio=1» ikke er satt, og at Digi.no ikke ber Google om å la være å lagre hele IP-adressen. Dette virker heller ikke å være i tråd med personvernpolicyen.

Datatilsynet har fortalt meg at i følge personopplysingsloven §§ 18 og 19 skal informasjonen som gis om bruk og utlevering av personopplysninger være korrekt. De forteller videre at det er endel grunnkrav som må være oppfylt ved utlevering av personopplysninger til tredjeparter, nærmere forklart i personopplysingsloven § 11 som henviser til § 8. Det er uklart for meg om disse kravene er oppfylt når IP-adresse og informasjon om hvilke websider som besøkes til tredjeparter.

Mitt spørsmål er dermed som følger:

Hva mener dere i personpolicyen når dere skriver at «Tredjeparter får kun anonymiserte data»?»

Redaksjonssjef Kurt Lekanger svarte samme dag og forklarte at han måtte komme tilbake til meg når han hadde med utviklingsavdelingen. Seks dager senere lurte jeg på hva han fant ut, og etter noen timer fikk jeg så følgende svar fra direktøren for teknologi og forretningsutvikling Øystein W. Høie i Teknisk Ukeblad Media:

«Takk for godt tips! Det er helt riktig at IP og referrer-adresse potensielt kan leses ut av tredjepart.

Retningslinjene våre har vært uklare på dette tidspunktet, og vi oppdaterer nå disse så dette kommer tydeligere frem. Ny tekst blir som følger:


3. Dette bruker vi ikke informasjonen til Informasjon du oppgir til oss blir lagret i våre systemer, er ikke tilgjengelig for tredjeparter, og blir ikke lagret i informasjonskapsler. Informasjonen vil kun benyttes til å gi deg som bruker mer relevant informasjon og bedre tjenester.

Tredjeparter (som Google Analytics, Cxense, TNS Gallup) vil kunne hente ut IP-adresse og data basert på dine surfemønstre. TU Media AS er pliktig å påse at disse tredjepartene behandler data i tråd med norsk regelverk.


Ellers har vi nå aktivert anonymisering i Google Analytics (aip=1). Kan også nevne at Tek.no-brukere som har kjøpt Tek Ekstra har mulighet til å skru av all tracking i kontrollpanelet sitt. Dette er noe vi vurderer å rulle ut på alle sidene i vårt nettverk.»

Det var nyttig å vite at vi er enige om at formuleringen i personvernpolicyen er misvisende. Derimot var det nedslående at i stedet for å endre praksis for å følge det personvernpolicyen sier om å ikke dele personinformasjon med tredjeparter, så velger Digi.no å fortsette praksis og i stedet endre personvernpolicyen slik at den å dokumentere dagens praksis med spredning av personopplysninger.

Med bakgrunn i at Digi.no ikke har fulgt sin egen personvernpolicy spurte jeg hvordan Digi.no kom til å håndtere endringen:

«Tusen takk for beskjed om endring av personvernpolicy for digi.no. Gjelder endringen også andre nettsteder?

Vil tidligere håndteringen av IP-adresser og lesemønster i strid med dokumentert personvernpolicy bli varslet til Datatilsynet i tråd med personopplysningsforskriften § 2-6? Vil leserne bli varslet på en prominent og synlig måte om at lesernes IP-adresser og lesemønster har vært utlevert til tredjeparter i stid med tidligere formulering om at tredjeparter kun får anonymiserte data, og at utleveringen fortsetter etter at personvernpolicy er endret for å dokumentere praksis?

Appropos ekstra tilbud til betalende lesere, tilbyr dere en mulighet for å betale for å lese som ikke innebærer at en må gjøre det mulig å la sine lesevaner blir registeret av tek.no? Betaler gjerne for å lese nyheter, men ikke med en bit av privatlivet mitt. :)»

Jeg fikk raskt svar tilbake fra direktøren Høie:

«Tydeliggjøringen i personvernpolicy gjelder alle våre nettsteder.

Vi kommer til å ta en runde og gå over vår policy i forbindelse med dette, og vil i de tilfeller det er påkrevd selvsagt være tydelig overfor brukere og tilsyn. Vil samtidig understreke at vår bruk av tredjeparts analyseverktøy og annonsetracking er helt på linje med det som er normalt for norske kommersielle nettsteder.

Angående spørsmålet ditt:
Du vil fortsatt vises i våre interne systemer om du blir Ekstra-bruker, vi skrur bare av tredjeparts tracking.»

Det høres jo ikke bra ut at det er normalt for norske kommersielle nettsteder å utlevere lesernes personopplysninger til utlandet. Men som en kan lese fra gårdagens oppslag fra NRK gjelder det også norske kommuner og andre offentlige aktører, og jeg skrev om omfanget av problemet i fjor. Det er uansett ikke en praksis jeg tror er i tråd med kravene i personopplysningsloven, og heller ikke en praksis jeg som leser synes er greit. Jeg manglet dog fortsatt svar på om Digi.no kom til å varsle lesere og Datatilsynet om avviket mellom praksis og policy, så jeg forsøkte meg med en ny epost i går kveld:

«Kan du fortelle meg om dere anser det å være påkrevd å varsle tilsyn og brukere nå, når dere har oppdaget at praksis ikke har vært i tråd med personvernpolicy?»

Det spørsmålet vet jeg så langt ikke svaret på, men antagelig kan Datatilsynet svare på om det er påkrevd å varsle tilsyn og lesere om dette. Jeg planlegger å oppdatere denne bloggposten med svaret når det kommer.

Jeg synes jo det er spesielt ille når barn får sine personopplysninger spredt til utlandet, noe jeg tok opp med NRK i fjor. De to eksemplene jeg nevner er som dere forstår ikke unike, men jeg har ikke full oversikt over hvor mange nettsteder dette gjelder. Jeg har ikke kapasitet til eller glede av å lese alle personvernpolicyer i landet. Kanskje mine lesere kan sende meg tips på epost om andre nettsteder med avvik mellom policy og praksis? Hvis vi alle går sammen og kontakter de ansvarlige, kanskje noen til slutt endrer praksis og slutter å dele lesernes personopplysninger med tredjeparter?

Apropos bruken av Google Analytics kan jeg forresten nevne at Universitetet i Oslo også har tatt i bruk Google Analytics, men der lagres programkoden som overføres til nettleserne lokalt og deler av IP-adressen fjernes lokalt på universitetet via en mellomtjener/proxy (tilgjengelig via github) før informasjon sendes over til Google Analytics. Dermed er det mulig for ansvarlige for nettstedet å vite at Google ikke har tilgang til komplett IP-adresse. Årsaken til at denne metoden brukes er at juristene ved universitetet har konkludert med at det er eneste måten en kunne vurdere å bruke Google Analytics uten å bryte loven. Risikoen for gjenidentifisering og identifisering ved hjelp av nettleserinformasjon er fortsatt tilstede, så det er ingen optimal løsning, men det er bedre enn å håpe at f.eks. Google og alle som lytter på veien skal prioritere norsk lov over sin lokale lovgivning.

Oppdatering 2016-12-09: Fikk svar fra direktøren Høie på mitt spørsmål litt etter at jeg hadde publisert denne artikkelen:

Vi kommer til å annonsere en oppdatert policy, og skal undersøke om vi er pliktig å varsle Datatilsynet.

Det vi uansett ønsker å gjøre først, er å gå gjennom hele policy sammen med utviklerne og advokat, så vi er sikre på at vi går frem riktig og at det ikke er flere tvetydigheter som skjuler seg i teksten.

Har du andre idéer eller konkrete innspill til hva som kan gjøre policy tydeligere, tar vi gjerne imot det. Dette er et felt vi ønsker å være ryddige på.

Vi får se om de liker mine innspill, som i grunnen er å ikke pusse på personvernpolicyen men i stedet slutte å spre lesernes personopplysninger til eksterne aktører.

Tags: norsk, personvern, surveillance.
Fri programvare-tilbakeblikk for 2015 og 2016
1st December 2016

Jeg er mer en gjennomsnittlig interessert i fri programvare og fri kultur, og nå når et nytt år nærmer seg slutten tenkte jeg det var på tide med et lite tilbakeblikk på årene som var. Jeg har vært involvert i flere prosjekter og løsninger, og her er en liten gjennomgang av de jeg kom på i farten.

Den største nyheten for meg fra 2015 var at jeg endelig, etter 2.5 år med flekkvis innsats, fikk gitt ut en bokmålsutgave av den klassiske boken Free Culture av Lawrence Lessig. Boken forteller om bakgrunnen for fri kultur-bevegelsen, beskriver problemer med dagens opphavsrett og skisserer hvordan vi kan bøte på problemene både individuelt og som samfunn. Jeg anbefaler alle å lese denne boken, som jeg med god hjelp har gitt ut på engelsk, bokmål og fransk. Papirboken kan bestilles i nettbokhandler i USA som Lulu (Norsk, Fransk, Engelsk), Amazon og Barnes & Noble takket være selvpubliseringsløsningen lulu.com og ebokutgave samt alt som trengs for å oppdatere boken er tilgjengelig fra github.

Et annet prosjekt jeg er veldig fornøyd med å ha deltatt i lanseringen av, er Mimes brønn, NUUG-tjenesten for å gjøre det enklere å be om innsyn i offentlig forvaltning, og spare offentlig forvaltning for å måtte besvare de samme innsynshenvendelsene gang på gang. Etter bare noen måneders drift førte en henvendelse via tjenesten til spørsmål fra Stortinget til regjeringen. I dette og andre tilfeller har NUUG finansiert utvidet klagesak for henvendelser som vi som står bak tjenesten synes fortjener ekstra oppmerksomhet. Så langt har en liten håndfull slike klagesaker blitt sendt til Sivilombudsmannen, der vi fikk medhold i en saken (om .bv omtalt over) og avslag i en annen (oppsummering fra møte i Pentagon om Internet-styring og nasjonal sikkerhet).

Etter at jeg i lengre tid har manglet GPG-nøkkel registrert i Debian (den opprinnelige ble fjernet på grunn av for kort nøkkellengde) fikk jeg endelig fikset ny nøkkel og Debiantilgang i slutten av 2015. Aktiviteten i Debian har ikke vært spesielt skadelidende mens jeg manglet nøkkel (kjenner flere som er villig til å laste opp på mine vegne), men da nøkkelen var på plass steg motivasjonen og jeg har blant anne brukt tiden på å bidra til at pakker relatert til lyd- og videokodekene fra Xiph.org-stiftelsen (dvs. Ogg, Vorbis, Theora, Opus, etc) er i bedre stand i Debian, og har bidratt til å få liv i gruppen som vedlikeholder Xiph-relaterte slik at dette forhåpentligvis skal fungere bedre også i fremtiden. Jeg har jobbet litt mer systemene Isenkram og appstream, som gjør det enklere å håndtere ulike dongler i Debian ved at systemet selv vet og foreslår hvilke pakker som bør installeres for å få dongler til å fungere. Har også fått inn eller hjulpet til å få inn endel nye programpakker, spesielt fornøyd med Sonic Pi, OpenALPR og Coz.

Et Debian-relatert prosjekt jeg følger er FreedomBox, som tar sikte på å tilby en løsning (både programvare og maskinvare) der hvem som helst kan beholde sin private informasjon hjemme hos seg selv i stedet for å dele den med skytjenesteleverandører som Google, Facebook, Twitter, Appear.in med flere. I tillegg til generell deltagelse i utvikling av prosjektet har jeg jobbet med å få alle Debian-pakkene som brukes av Freedombox "reproduserbare" i Debian, dvs. gjøre det mulig å sjekke at pakken som brukes i Freedombox ikke inneholder annet enn det som kommer fra kildekodepakken i Debian og gir et forutsigbart resultat ved bygging. Har også fulgt opp endel feilrapporter relatert til Freedombox-spesifikke pakker (som Plinth og freedombox-setup) og pakker som utgjør tjenestene i en Freedombox.

I samarbeid med Skolelinuxprosjektet og foreningen NUUG har jeg vært med å arrangere flere utviklersamlinger både i 2015 og 2016. Der har oversettere og utviklere blitt lært opp og arbeidet med blant annet dokumentasjon, feilfiksing og utvikling av Skolelinux og Frikanalen. Relatert til dette arbeidet har jeg koordinert norsk oversettelse av Håndbok for Debian-administratorer til bokmål, og flyttet oversetterarbeidet av Skolelinux-håndboken fra Transifex til Weblate. Begge bøkene er snart klare for første gangs korrekturlesing og vi drømmer om å gjøre dem tilgjengelig på papir.

Gjennom hele perioden har jeg holdt et lite øye med NUUG-prosjektet FiksGataMi, som stort sett går av seg selv uten manuelt vedlikehold, men av og til er det problemer med enkelte mottakere (eposter i retur). NUUG-drift oppgraderte tjenesten i løpet av 2016, og jeg bisto Marius Halden litt i forbindelse med dette. Tjenesten får stadig flere brukere, og flere kommuner har tatt kontakt for å lære mer om hvordan FiksGataMi fungerer.

Den åpne TV-kanalen Frikanalen har fått en god del av min oppmerksomhet. Den var i starten av 2015 tilgjengelig på RiksTV kanal 50, web. Kanalen har fått et REST-basert API, og dette har jeg tatt i bruk for å fylle sendeplanen med NUUG-, TED- og Debian-foredrag samt andre tekniske presentasjoner. Har lastet opp mye nytt der og strømlinjeformet prosessen slik at både nye TED- og NUUG-foredrag går veldig greit. På høsten tok jeg en titt på multikast-spredning av kanalen til Uninett, og dette er nå kommet på plass, slik at alle TV-er som bruker Uninetts TV-løsning nå kan se på Frikanalen. Det jobbes for tiden med å få distribusjon på Altibox, og dette håper vi skal være klart i starten av 2017.

Relatert til Frikanalen har jeg i lengre tid forsøkt å få klarhet i hva som er juridisk status for H.264 i Norge. Det er fortsatt uklart for meg om Frikanalen må betale for retten til å kringkaste eller ikke, og om vi risikerer å bryte opphavsrettsvilkår ved å kringkaste på web med H.264. Har spurt ulike aktører for å forsøke å finne ut hvordan de har vurdert situasjonen, uten å bli klok.

Et prosjekt som var morsomt å se ta form var Ole Aamots dokumentarprosjekt om fri programvare i Norge. Han fikk intervjuet en god del av de mest aktive folkene i Norge, og resultatet ble interessant og severdig. Et nærmere prosjekt er NUUGs samarbeide med Oslo dokumentarfilmfestival om visningen av Citizenfour, der NUUG tok opp samtalen i forbindelse med visningen og publiserte opptaket på Frikanalen. Jeg er veldig fornøyd med å ha lyktes med å få dette på plass, selv om jeg ikke rakk å være med på visningen selv. Et annet NUUG-foredrag jeg er spesielt fornøyd med å ha fått på plass er besøket fra Bradley Kuhn fra Software Freedom Conservancy. Det tok mange måneder å organisere i samarbeid med BLUG, men til slutt klarte vi å finne et tidspunkt som passet alle, slik at han kunne besøke Oslo og Bergen. Opptaket fra dette er også publisert på Frikanalen. Generelt har jeg veldig fornøyd med at Frikanalen nå i praksis er Tekno-TV med interessante faktaprogram og presentasjoner nesten hele døgnet, hele uka.

Vi har i lengre tid forsøkt å få opp et Mesh-nett i Oslo, under navnet dugnadsnett.no, uten at vi så langt har klart å nå kritisk masse. Tanken er å gjøre det mulig å kommunisere direkte mellom likeverdige parter uten sentrale knutepunkt som enkelt kan avlyttes. Prosjektet er ikke dødt, men interessen blant oss som er med har ikke vært stor nok til å kunne prioritere dette over alt annet.

En ting som har tatt prioritet for min del er NUUG og EFNs forsøk på å få domstolvurdering av om det er greit for politiet å overta et DNS-domene uten domstolvurdering. Bakgrunnen er at Økokrim tok beslag i popcorn-time.no i mars 2016, med påstand om at nettstedet bidro til opphavsrettsbrudd ved å omtale fri programvareløsningen Popcorn Time og lenke til nettsteder der det var lenker til nettsteder der en kunne laste ned Popcorn Time. For det første mener vi at domstolene bør involveres før DNS-domener tas fra sine eiere, og for det andre mener vi begrunnelsen er så søkt at domenet ikke burde beslaglegges i første omgang. NUUG og EFN forsøkte først å protestere på egne vegne men ble avvist av domstolene med at vi ikke hadde rettslig interesse. Mens dette pågikk lyktes vi å få kontakt med registrar og regnskapsfører som fikk ble raidet av seks stykker fra Økokrim, og i gjeldende runde er det registrar og regnskapsfører som protesterer med støtte fra NUUG og EFN. Advokattimene renner ut og vi håper vi holder ut til saken har fått prøvd saken.

Et annet prosjekt, relatert til fri kultur og åndsverksvern, som jeg har brukt endel tid på er å maskinelt kunne identifisere verk som er falt i det fri i Norge. Jeg ønsker å vite hvor mange kunstuttrykk som blir røvet fra fellesskapet hver gang vernetiden i åndsverksloven blir utvidet, f.eks. nå sist når vernetiden for musikk ble utvidet med 20 år fra 50 til 70 år med tilbakevirkende kraft, som om de som laget musikk for 60 år siden skulle bli mer motivert til å lage musikk av utvidet vernetid. Har sett på å kombinere informasjon fra Nasjonalbiblioteket, Deichmanske bibliotek, Wikipedia, Store Norske Leksikon og WorldCat, og gleder meg til Nasjonalbibliotekets initiativ for autorativ database over verk tar form.

Dårlig konkurranse på drivstoffmarkedet har irritert meg en stund, og jeg laget for flere år siden en skraper som samlet inn prisdata fra ulike kilder. Jeg ble derfor veldig glad da en økonomistudent tok kontakt i starten av 2015 og lurte på om jeg kunne bidra med data til hans masteroppgave om konkurransevilkårene i drivstoffmarkedet. Jeg bidro med glede, og resultatet er publisert i fulltekst som "Hemmeligheten bak bensinprisen : en empirisk analyse av pumpeprisens drivkrefter" på BIBSYS Brage.

I tilegg til det jeg har gjort her har jeg rapportert og fikset en rekke små og store feil i fri programvare, og hjulpet Debian-bidragsytere og upstream-utviklerne med å forbedre forskjellig fri programvare og få det inn i Debian.

Mye av det jeg har fått gjort rundt fri programvare og fri kultur har vært mulig takket være at jeg får dekket 20% av arbeidstiden min på Universitetet i Oslo fra NUUG Foundation for å jobbe med og koordinere fri programvareaktiviteter. Jeg er svært takknemlig til dem og min arbeidsgiver USIT for at jeg har fått muligheten. Uten dette hadde jeg ikke rukket over like mye etter hvert som ungene ble større.

Tags: norsk.
Fortsatt ingen sikkerhetsoppdateringer for billettautomatene til kollektivtrafikken i Oslo?
29th November 2016

For fire og et halvt år siden lot jeg meg overraske over at Ruters billettautomater for kollektivtrafikken i Oslo kjørte Windows 2000 Professional, et og et halvt år etter at Microsoft hadde gitt beskjed om at det ikke lenger kom sikkerhetsoppdateringer til systemet. Støtten fra Microsoft tok slutt 2010-07-13 i følge Wikipedia og Microsoft selv.

For fem dager siden passerte jeg på nytt en slik billettautomat som hadde brutt sammen, og den annonserte fortsatt at den kjører Windows 2000 Professional, nå mer enn seks år siden Microsoft sluttet å komme med sikkerhetspatcher til produktet. Sikret meg et bilde av krasjmeldingen på skjermen.

[foto av billettautomat]

Mon tro om de mangler kildekoden til systemet som kjører på automaten, og dermed ikke uten videre kan oppgradere?

Jeg ser jo fra en innsynshenvendelse om kildekoden til billett-Appen til Ruter på Mimes brønn at Ruter tilsynelatende ikke legger sikkerheten i sertifikater, nøkler og passord, men i stedet baserer seg på at logikken i programvaren holdes hemmelig. Det borger ikke godt for sikkerheten i Ruters datasystemer.

Det er nå tre og et halvt år siden Ruter fortalte Aftenposten at nye automater ble minst seks måneder forsinket, da leverandøren ikke hadde god nok kontroll. Det kan virke som om leverandøren ikke er alene om å ikke ha god nok kontroll.

Bildet er tilgjengelig for bruk med bruksvilkårene til Creative Commons Navngivelse 3.0 Norge (CC BY 3.0).

Oppdatering 2016-12-01: Saken har fått omtale på digi.no og NRK Beta.

Tags: norsk, ruter.
Quicker Debian installations using eatmydata
25th November 2016

Two years ago, I did some experiments with eatmydata and the Debian installation system, observing how using eatmydata could speed up the installation quite a bit. My testing measured speedup around 20-40 percent for Debian Edu, where we install around 1000 packages from within the installer. The eatmydata package provide a way to disable/delay file system flushing. This is a bit risky in the general case, as files that should be stored on disk will stay only in memory a bit longer than expected, causing problems if a machine crashes at an inconvenient time. But for an installation, if the machine crashes during installation the process is normally restarted, and avoiding disk operations as much as possible to speed up the process make perfect sense.

I added code in the Debian Edu specific installation code to enable eatmydata, but did not have time to push it any further. But a few months ago I picked it up again and worked with the libeatmydata package maintainer Mattia Rizzolo to make it easier for everyone to get this installation speedup in Debian. Thanks to our cooperation There is now an eatmydata-udeb package in Debian testing and unstable, and simply enabling/installing it in debian-installer (d-i) is enough to get the quicker installations. It can be enabled using preseeding. The following untested kernel argument should do the trick:

preseed/early_command="anna-install eatmydata-udeb"

This should ask d-i to install the package inside the d-i environment early in the installation sequence. Having it installed in d-i in turn will make sure the relevant scripts are called just after debootstrap filled /target/ with the freshly installed Debian system to configure apt to run dpkg with eatmydata. This is enough to speed up the installation process. There is a proposal to extend the idea a bit further by using /etc/ld.so.preload instead of apt.conf, but I have not tested its impact.

Tags: debian, debian edu, english.
Oversette bokmål til nynorsk, enklere enn du tror takket være Apertium
24th November 2016

I Norge er det mange som trenger å skrive både bokmål og nynorsk. Eksamensoppgaver, offentlige brev og nyheter er eksempler på tekster der det er krav om skriftspråk. I tillegg til alle skoleoppgavene som elever over det ganske land skal levere inn hvert år. Det mange ikke vet er at selv om de kommersielle alternativene Google Translate og Bing Translator ikke kan bidra med å oversette mellom bokmål og nynorsk, så finnes det et utmerket fri programvarealternativ som kan. Oversetterverktøyet Apertium har støtte for en rekke språkkombinasjoner, og takket være den utrettelige innsatsen til blant annet Kevin Brubeck Unhammer, kan en bruke webtjenesten til å fylle inn en tekst på bokmål eller nynorsk, og få den automatoversatt til det andre skriftspråket. Resultatet er ikke perfekt, men et svært godt utgangspunkt. Av og til er resultatet så bra at det kan benyttes uten endringer. Jeg vet f.eks. at store deler av Joomla ble oversatt til nynorsk ved hjelp Apertium. Høres det ut som noe du kan ha bruk for? Besøk i så fall Apertium.org og fyll inn teksten din i webskjemaet der.

Hvis du trenger maskinell tilgang til den bakenforliggende teknologien kan du enten installere pakken apertium-nno-nob på en Debian-maskin eller bruke web-API-et tilgjengelig fra api.apertium.org. Se API-dokumentasjonen for detaljer om web-API-et. Her kan du se hvordan resultatet blir for denne teksten som ble skrevet på bokmål over maskinoversatt til nynorsk.


I Noreg er det mange som treng å skriva både bokmål og nynorsk. Eksamensoppgåver, offentlege brev og nyhende er døme på tekster der det er krav om skriftspråk. I tillegg til alle skuleoppgåvene som elevar over det ganske land skal levera inn kvart år. Det mange ikkje veit er at sjølv om dei kommersielle alternativa Google *Translate og Bing *Translator ikkje kan bidra med å omsetja mellom bokmål og nynorsk, så finst det eit utmerka fri programvarealternativ som kan. Omsetjarverktøyet *Apertium har støtte for ei rekkje språkkombinasjonar, og takka vera den utrøyttelege innsatsen til blant anna Kevin Brubeck Unhammer, kan ein bruka *webtjenesten til å fylla inn ei tekst på bokmål eller nynorsk, og få den *automatoversatt til det andre skriftspråket. Resultatet er ikkje perfekt, men eit svært godt utgangspunkt. Av og til er resultatet så bra at det kan nyttast utan endringar. Eg veit t.d. at store delar av *Joomla vart omsett til nynorsk ved hjelp *Apertium. Høyrast det ut som noko du kan ha bruk for? Besøk i så fall *Apertium.org og fyll inn teksta di i *webskjemaet der.

Viss du treng *maskinell tilgjenge til den *bakenforliggende teknologien kan du anten installera pakken *apertium-*nno-*nob på ein *Debian-maskin eller bruka *web-*API-eit tilgjengeleg frå *api.*apertium.org. Sjå *API-dokumentasjonen for detaljar om *web-*API-eit. Her kan du sjå korleis resultatet vert for denne teksta som vart skreva på bokmål over *maskinoversatt til nynorsk.

Tags: debian, norsk, stavekontroll.

RSS feed

Created by Chronicle v4.6