<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Valentijn Sessink</title>
	<atom:link href="http://valentijn.sessink.nl/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://valentijn.sessink.nl</link>
	<description>ʇıɐɐɹpɯo pɿǝɹǝʍ ǝp ɹɐɐʍ</description>
	<lastBuildDate>Fri, 12 Apr 2013 10:21:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>(Not) rooting RK3066 systems</title>
		<link>http://valentijn.sessink.nl/?p=446</link>
		<comments>http://valentijn.sessink.nl/?p=446#comments</comments>
		<pubDate>Fri, 12 Apr 2013 10:05:01 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Happy Hacking]]></category>
		<category><![CDATA[bricking]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flash memory]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nand]]></category>
		<category><![CDATA[rk3066]]></category>
		<category><![CDATA[rooting]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=446</guid>
		<description><![CDATA[Please note that I received some reports from people that tried to flash their RK3066 stuff &#8211; but it would not boot afterwards. And in fact, that&#8217;s what I experienced when I tried to flash my Minix Neo X5. Using the procedure as described here, all seemed to work well: I could read the flash [...]]]></description>
			<content:encoded><![CDATA[<p>Please note that I received some reports from people that tried to flash their RK3066 stuff &#8211; but it would not boot afterwards. And in fact, that&#8217;s what I experienced when I tried to flash my <a href="http://www.minix.com.hk/Products/NEOX5.html" title="Minix Neo X5" target="_blank">Minix Neo X5</a>.<span id="more-446"></span></p>
<p>Using the procedure as described <a href="http://valentijn.sessink.nl/?p=382" title="Rooting your RK3066 tablet" target="_blank">here</a>, all seemed to work well: I could read the flash memory, dump it to a file, mount the file, replace some stuff, write it back, but then &#8211; nothing.</p>
<p>Re-reading the file that I just wrote gave me a different file. So in fact, there might be something in the newer RK3066 firmware that prevents rkflashtool from working. It <em>seems</em> to work &#8211; but it does not.</p>
<p><em>Reading</em> the same blocks of memory always gave me the same results (and the first time, the block seemed a correct Linux filesystem), so I don&#8217;t think the problem is in the reading. <em>Writing back</em> the flash memory however was problematic: writing a block and reading it back would not give me the same information. Unfortunately, I don&#8217;t have the time to find out what&#8217;s wrong &#8211; I don&#8217;t own Windows machines and subsequently gave away my X5 to a RK3066-Linux-developer (that was never heard of afterwards, but that&#8217;s another story).</p>
<p>Luckily for some, there&#8217;s always the original RK3066 firmware flasher: from within Windows, you can easily flash a firmware &#8211; even if you completely bricked your tablet. But for those working with free software, the possibilities are fewer: you might need to turn to a friend who does run Windows to unbrick your RK3066.</p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=446</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rooting the Cube U30GT rk3066 android tablet</title>
		<link>http://valentijn.sessink.nl/?p=382</link>
		<comments>http://valentijn.sessink.nl/?p=382#comments</comments>
		<pubDate>Fri, 28 Sep 2012 09:04:53 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Happy Hacking]]></category>
		<category><![CDATA[flashing]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rk3066]]></category>
		<category><![CDATA[rooting]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=382</guid>
		<description><![CDATA[I just bought a Cube U30GT Android tablet, based on the Rockchip RK3066 ARM chipset. Here are the instructions to root it under Linux. The U30GT is a nice tablet. It only cost me about 180 euros (€150 tablet + shipping, €30 VAT or &#8220;BTW&#8221; as it&#8217;s called in the Netherlands). Value for money! Now [...]]]></description>
			<content:encoded><![CDATA[<p>I just bought a Cube U30GT Android tablet, based on the Rockchip RK3066 ARM chipset. Here are the instructions to <em>root</em> it under Linux.<span id="more-382"></span></p>
<p>The U30GT is a nice tablet. It only cost me about 180 euros (€150 tablet + shipping, €30 VAT or &#8220;BTW&#8221; as it&#8217;s called in the Netherlands). Value for money!<br />
Now the reason I bought this very tablet is that it&#8217;s specs are nearing older Intel &#8220;Atom&#8221; chips, which could mean that this €180 tablet is actually a €350 laptop &#8211; minus keyboard. So the first thing to do here was to root the thing.<br />
Here is the step-by-step instructions for rooting this tablet under Linux. Usual disclaimers apply: do not try this at home; if you break your tablet, it&#8217;s broken; no guarantees. It worked for me, quite easily, but it may not work for you.</p>
<p><strong>2012-04-12 I received some reports of non-bootable machines, please read the <a href="http://valentijn.sessink.nl/?p=446" title="(not) rooting your RK3066 tablet">update</a>.</strong></p>
<ol>
<li>get the <em>rkflashtool</em> source code from <a title="SourceForge" href="http://sourceforge.net/projects/rkflashtool">sourceforge.net/projects/rkflashtool</a>.</li>
<li>Add USB identification for the RK3066 chip,<em> 0&#215;2207, 0x300a</em>. Your code will now look like:<br />
<code>if (!(h = libusb_open_device_with_vid_pid(c, 0x2207, 0x290a)))<br />
 if (!(h = libusb_open_device_with_vid_pid(c, 0x2207, 0x281a)))<br />
  if (!(h = libusb_open_device_with_vid_pid(c, 0x2207, 0x300a)))<br />
   fatal("cannot open device\n");</code>
</li>
<li>Install libusb-1.0-0-dev and compile:<code><br />
sudo apt-get install libusb-1.0-0-dev<br />
gcc -o rkflashtool rkflashtool.c -lusb-1.0 -O2 -W -Wall -s</code>
</li>
<li>Turn off your U30GT. Insert the USB cable. Hold the &#8220;volume +&#8221; button, then push the &#8220;power&#8221; button for about 5 seconds. Afterwards, &#8220;lsusb&#8221; should show the U30GT identification, something like <em>Bus 001 Device 007: ID 2207:300a</em></li>
<li>Read the partition information for your U30GT:<br />
<code>sudo ./rkflashtool r 0x0000 0x2000 &gt; /tmp/parm</code>
</li>
<li>in /tmp/parm you will find something like:<br />
<code>CMDLINE: console=ttyFIQ0 androidboot.console=ttyFIQ0 init=/init initrd=0x62000000<br />
,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(misc),0x00004000@0x00004000<br />
(kernel),0x00008000@0x00008000(boot),0x00008000@0x00010000(recovery),0x00100000@0<br />
x00018000(backup),0x0003a000@0x00118000(cache),0x00200000@0x00152000(userdata),0x<br />
00002000@0x00352000(kpanic),0x00100000@0x00354000(system),-@0x00454000(user)</code><br />
It&#8217;s the &#8220;(system)&#8221; partition that we&#8217;re after. In this case: 0&#215;00100000@0&#215;00354000</li>
<li>Use rkflashtool again, with our newly found parameters:<br />
<code>sudo ./rkflashtool r 0x00354000 0x00100000 &gt; /tmp/system.loop</code>
</li>
<li><strong>Save this file in a safe place, it is your original!</strong></li>
<li>From hereon, it&#8217;s rather trivial. Mount the image, change whatever you like and write it back. Something like:<br />
<code>sudo mount -o loop /tmp/system.loop /mnt<br />
cd /mnt/app<br />
cp ~/Download/Superuser.apk /mnt/app<br />
cp ~/Download/su.arm /mnt/bin/su</code><br />
There are lots of other things that you may want to do, like removing <em>buyu.apk CCCCACDE.apk com.chaozh.iReaderFree_145459.apk cube.0.3.0_v2963.apk es.apk Galaxy4.apk hd.apk HoloSpiralWallpaper.apk MagicSmokeWallpapers.apk qq_hd_1.7.0.apk uc.apk</em>, change the bootanimation.zip and mess around freely. You did copy your image in step 8, didn&#8217;t you?</li>
<li>Write back and reboot: <code>sudo umount /mnt<br />
sudo ./rkflashtool w 0x00354000 0x00100000 < /tmp/system.loop<br />
sudo ./rkflashtool b</code></li>
</ol>
<p>That's all, folks!</p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=382</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Oude GPS-tracks</title>
		<link>http://valentijn.sessink.nl/?p=369</link>
		<comments>http://valentijn.sessink.nl/?p=369#comments</comments>
		<pubDate>Mon, 25 Jun 2012 10:36:50 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=369</guid>
		<description><![CDATA[Oeps, opeens zie ik dat mijn GPS-tracks Kopenhagen &#8211; Amsterdam helemaal niet gelinkt staan. Hierbij alsnog (2 jaar oud). track 735607 Kopenhagen track 735809 Kopenhagen naar Præstø track 735812 Præstø to Rødby track 735910 Rødby to Puttgarden e.v. track 735912 Fehmarn (Puttgarden &#8211; Großenbrode) track 735913 Großenbrode &#8211; Bad Malente track 735935 Bad Malente &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Oeps, opeens zie ik dat mijn GPS-tracks Kopenhagen &#8211; Amsterdam helemaal niet gelinkt staan. Hierbij alsnog (2 jaar oud).</p>
<p><span id="more-369"></span></p>
<ul>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735607">track 735607</a> Kopenhagen</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735809">track 735809 </a>Kopenhagen naar Præstø</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735812">track 735812</a> Præstø to Rødby</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735910">track 735910</a> Rødby to Puttgarden e.v.</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735912">track 735912</a> Fehmarn (Puttgarden &#8211; Großenbrode)</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735913">track 735913</a> Großenbrode &#8211; Bad Malente</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735935">track 735935</a> Bad Malente &#8211; Bad Bramstedt</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735937">track 735937</a> Bad Bramstedt &#8211; Hemmoor</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1270739">track 735938</a> Hemmoor &#8211; Jade (*)</li>
<li><a href="http://ojw.dev.openstreetmap.org/gpx/?gpx=735939">track 735939</a> Jade &#8211; Bourtange</li>
</ul>
<p>(*) track opnieuw geüpload wegens problemen met afbeelden van 735938</p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=369</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wat is waar?</title>
		<link>http://valentijn.sessink.nl/?p=365</link>
		<comments>http://valentijn.sessink.nl/?p=365#comments</comments>
		<pubDate>Thu, 05 Apr 2012 22:17:19 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Diversen]]></category>
		<category><![CDATA[Opinie]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=365</guid>
		<description><![CDATA[Vanochtend las ik een nieuwtje op Retecool: Neil Young komt met een vervanger voor MP3. Het bericht klonk zo mistig, dat ik eens op zoek ging naar de werkelijkheid achter het bericht en die bleek treurig. De kern van het  bericht luidde ongeveer als volgt: Rolling Stone Magazine heeft ontdekt dat Neil Young werkt aan [...]]]></description>
			<content:encoded><![CDATA[<p>Vanochtend las ik een nieuwtje op Retecool: <a title="retecool.com" href="http://retecool.com/post/neil-young-komt-met-eigen-muziekstandaard" target="_blank">Neil Young komt met een vervanger voor MP3</a>. Het bericht klonk zo mistig, dat ik eens op zoek ging naar de werkelijkheid achter het bericht en die bleek treurig.<span id="more-365"></span></p>
<p>De kern van het  bericht luidde ongeveer als volgt:</p>
<blockquote><p><em><a href="http://www.rollingstone.com/music/news/neil-young-trademarks-new-audio-format-20120403" target="_blank">Rolling Stone Magazine</a> heeft ontdekt dat Neil Young werkt aan een <a href="http://www.fwdmagazine.be/fwd/138071/neil-young-ontwikkelt-eigen-digitale-audio-standaard/" target="_blank">nieuwe standaard</a> genaamd &#8220;Pono&#8221;, want hij heeft zo&#8217;n hekel aan Mp3. Het wachten is enkel nog op de goedkeuring van de patenten maar dan kunnen we dus muziekbestanden in studio-kwaliteit van de interwebs trekken.</em></p></blockquote>
<p>U vindt dit bericht misschien niet zo gek klinken, ik wel. Want als je schele hoofdpijn en tinnitus krijgt van Mp3-bestanden (en voor mijn part ook alle alternatieven, zoals Ogg, Flac, AAC, WMV en wat al niet meer), dan is er geen enkele reden om te &#8220;wachten op goedkeuring van de patenten&#8221;. Sterker nog: die goedkeuring, dat kan wel een paar jaar duren; maar je patent is dan met terugwerkende kracht geldig vanaf de aanvraag.</p>
<p>Gelukkig, u ziet het, stonden de brondocumenten vermeld: Rolling Stone Magazine (niet de minste) en een mij verder onbekende FWD Magazine, die zich (en dat is ietwat verdacht) baseert op datzelfde Rolling Stone Magazine. In de Rolling Stone las ik niks over patenten, maar wel iets over — wat in Nederland heet — merkenbescherming. <em>Young applied for six trademarks </em>(merknamen), om precies te zijn.</p>
<p>Dat maakte het nog vreemder. Je hebt een nieuw, revolutionair muziekformaat ontwikkeld, maar je wacht even tot de <em>merknaam</em> goedgekeurd is? In, nota bene, de USA, waar ze de softwarepatenten hebben uitgevonden?</p>
<p>Er zijn vele alternatieven voor MP3, sommige fabrikant-gebonden (WMV, AAC), sommige vrij beschikbaar (OGG, FLAC). Er zijn vast ook heel wat hobbyisten die NOG betere geluidsformaten ontwikkeld hebben. Maar registratie van de merknaam aanhalen als eerste wapenfeit bij je studio-kwaliteit-glimmend-nieuwe geluidsformaat, dat klinkt als een verlate 1-aprilgrap.</p>
<p title="De Standaard">Het werd pas echt schokkend toen ik een beetje ging rondneuzen naar de achtergronden bij dit nieuws. Allerlei serieuze nieuwsmedia hadden de kolder klakkeloos overgenomen, soms zelfs met bronvermelding, er werd hier en daar een eigen draai aan het &#8220;nieuws&#8221; gegeven maar in de basis was het gewoon het artikel Rolling Stone Magazine, waarbij de vertalers allemaal dezelfde fout gemaakt hadden met het U.S. Patent <em>and Trademark</em> Office.</p>
<p title="De Standaard"><a href="http://www.radio2.nl/nieuwspagina/2921/neil-young-patenteert-pono.html" target="_blank">Radio2: Neil Young patenteert pono</a>,  <a title="De Standaard" href="http://www.standaard.be/artikel/detail.aspx?artikelid=DMF20120405_012" target="_blank">De Standaard: Neil Young gaat de strijd aan met Mp3</a>, <a title="De Telegraaf" href="http://www.telegraaf.nl/digitaal/11848012/__Neil_Young_patenteert_nieuw_audioformaat__.html" target="_blank">De Telegraaf: Neil Young patenteert nieuw audioformaat</a>, Neil Young wil <a href="http://www.hifi.nl/nieuws/44651/Neil-Young-wil-MP3-vervangen.html" target="_blank">Mp3 vervangen</a>, hij <a title="PCM" href="http://www.pcmweb.nl/nieuws/rollatorrocker-neil-young-patenteert-nieuw-audioformaat.html" target="_blank">patenteert nieuw audioformaat</a>, <a href="http://www.zdnet.be/news/138055/neil-young-ontwikkelt-eigen-digitale-audio-standaard/" target="_blank">ontwikkelt eigen digitale audio-standaard</a>,  <a href="http://www.ad.nl/ad/nl/5602/Muziek/article/detail/3235818/2012/04/04/Neil-Young-patenteert-nieuw-revolutionair-audioformaat.dhtml" target="_blank">patenteert nieuw <em>revolutionair</em> audioformaat</a> en dat laatste nog een paar keer, bij andere bij de Persgroep aangesloten kranten (Parool, Volkskrant). Met als bron HLN.be, ook van de Persgroep.</p>
<p title="De Standaard">De Persgroep citeert dan ook nog eens de bron der bronnen, het persbericht van Blue Rider Press over de aankomende autobiografie van Young, maar maakt daarin een forse vertaalfout: &#8220;Young is also personally spearheading the development of Pono, <em>a revolutionary new audio music [sic!] system</em> presenting the highest digital resolution possible&#8221; wordt vertaald met &#8220;<em>een revolutionair nieuw muziekformaat</em>&#8220;. Dat doet zelfs Google Translate beter, met <a title="Google Translate" href="http://translate.google.com/translate?sl=en&amp;tl=nl&amp;js=n&amp;prev=_t&amp;hl=nl&amp;ie=UTF-8&amp;layout=2&amp;eotf=1&amp;u=http%3A%2F%2Fus.penguingroup.com%2Fstatic%2Fpages%2Faboutus%2Fpressrelease%2Fneil_young_memoir_to_be_published_by_blue_rider_press_092011.html" target="_blank"><em>een revolutionaire nieuwe audio-muzieksysteem</em></a>. Het <a href="http://www.rollingstone.com/music/news/neil-young-trademarks-new-audio-format-20120403" target="_blank">artikel in Rolling Stone</a> sprak inderdaad van <em>a revolutionary new audio music system</em> en <em>a modern-day iPod for the 21st Century</em>. Een muzieksysteem dus. Een high-end muzieksysteem.</p>
<p title="De Standaard">Het ergst van dit alles vind ik niet het non-nieuws over Neil Young. Het ergst vind ik, dat zulk non-nieuws met een kwartiertje <em>fact-checken</em> tot non-nieuws verwordt, maar dat die vijftien minuten blijkbaar bij De Volkskrant, Het Parool, De Morgen en NOS radio 2 en vele anderen niet meer aanwezig zijn.</p>
<p title="De Standaard">Want hoe kan ik voortaan weten welke berichten wèl gecontroleerd zijn?</p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=365</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>North Sea Cycle Route &#8211; Harwich to Newcastle</title>
		<link>http://valentijn.sessink.nl/?p=362</link>
		<comments>http://valentijn.sessink.nl/?p=362#comments</comments>
		<pubDate>Wed, 29 Jun 2011 13:08:40 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[north sea cycle route]]></category>
		<category><![CDATA[nscr]]></category>
		<category><![CDATA[openstreetmap]]></category>
		<category><![CDATA[osm]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=362</guid>
		<description><![CDATA[These are the Openstreetmap projected GPS tracks from our Harwich to Newcastle cycle trip. Day 6 is missing because I forgot to turn on my GPS tracker. Please note that there are some deviations from the &#8220;official&#8221; North Sea Cycle Route in the tracks below. Most notably, we skipped the North York Moors regional route [...]]]></description>
			<content:encoded><![CDATA[<p>These are the Openstreetmap projected GPS tracks from our Harwich to Newcastle cycle trip. <span id="more-362"></span>Day 6 is missing because I forgot to turn on my GPS tracker. Please note that there are some deviations from the &#8220;official&#8221; North Sea Cycle Route in the tracks below. Most notably, we skipped the North York Moors regional route 52 and went straight from Whitby to Staithes. I would not recommend this, though; Sustrans has this track on their to-do list and it&#8217;s for a reason.</p>
<p>Have fun!</p>
<ul>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043314" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043314 (Day 1)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043316" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043316 (Day 2)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043317" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043317 (Day 3)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043321" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043321 (Day 4)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043324" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043324 (Day 5)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043328" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043328 (Day 7)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043333" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043333 (Day <img src='http://valentijn.sessink.nl/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043334" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043334 (Day 9)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043335" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043335 (Day 9)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043336" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043336 (Day 10)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043339" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043339 (Day 11)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043340" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043340 (Day 11)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043341" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043341 (Day 11)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043342" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043342 (Day 12)</a></li>
<li><a title="day 1" href="http://ojw.dev.openstreetmap.org/gpx/?gpx=1043344" target="_blank">http://ojw.dev.openstreetmap.org/gpx/?gpx=1043344 (Day 13)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=362</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social spam</title>
		<link>http://valentijn.sessink.nl/?p=342</link>
		<comments>http://valentijn.sessink.nl/?p=342#comments</comments>
		<pubDate>Thu, 28 Apr 2011 12:34:40 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Abuse]]></category>
		<category><![CDATA[abuse]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[spam reporting]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=342</guid>
		<description><![CDATA[I have mentioned this before: social media are a growing target for spammers. Unfortunately, there is no way to report mass abuse. All you can do is report individual spammers, while what we do need is a mass spammer reporting tool. A fine example of social media spam this is the Facebook account of Mrs. [...]]]></description>
			<content:encoded><![CDATA[<p>I have mentioned this before: social media are a growing target for spammers. Unfortunately, there is no way to report mass abuse. All you can do is report individual spammers, while what we do need is a mass spammer reporting tool.<span id="more-342"></span></p>
<p>A fine example of social media spam this is the Facebook account of Mrs. Laura Augustine. Judging from her <a title="Laura Augustine is at Facebook" href="http://www.facebook.com/people/Laura-Augustine/100001897567109">Facebook profile picture</a>, she has barely enough money to dress properly, but she does have a web site. Her only Facebook action so far is to encourage you to go view it (<em>View my sexy photos and videos on my site!!</em>): <a href="https://twitter.com/mcarabi">http://twitter.com/mcarabi</a>. And, in turn, Mrs. Augustine, who is now suddenly called Anna Bond, directs you to <a href="http://tinyurl.com/2uzlvu9">http://tinyurl.com/2uzlvu9</a> with an equally inviting message (<em>view my sexy photos and videos</em>). Tinyurl.com isn&#8217;t all that innocent, by the way, as it specifically mentions <em>Are you posting something that you don&#8217;t want people to know what the URL is because it might give  away that it&#8217;s an affiliate link? Then you can enter a URL into TinyURL.</em> Anyway, Mrs. <span style="text-decoration: line-through;">Augustine</span>, <span style="text-decoration: line-through;">Carabi</span>, Bond wants you to see http://meganovosti.com/kav.php?gola=nega which, luckily, doesn&#8217;t work anymore.</p>
<p>If you are spammer aware, the first time you are invited to become &#8220;friends&#8221; with a young lady with no money for clothes, you may think that turning her in is a good thing. You may think that clicking on the &#8220;report for abuse&#8221; or &#8220;report for spam&#8221; button helps. Unfortunately, it&#8217;s not that easy. Reporting Mrs. Augustine will help, but not much. If you simply <a title="Search with Google" href="http://www.google.com/search?safe=off&amp;q=http%3A%2F%2Ftwitter.com%2Fmcarabi+site%3Afacebook.com">search Google for http://twitter.com/mcarabi site:facebook.com</a>, you&#8217;ll notice that there&#8217;s 27 results (most of them not safe for work). Even worse is the fact that I first digitally met Mrs. Carabi/Bond/Augustine in November 2010 &#8211; that&#8217;s six months ago. And if you search with Google for <a href="http://www.google.com/search?safe=off&amp;q=%22view+my+sexy+photos+and+videos%22+site%3Atwitter.com">&#8220;view my sexy photos and videos&#8221; site:twitter.com</a>, you&#8217;ll get even more accounts that probably direct you to the same rubbish.</p>
<p>Another example is random followers that you may have on Twitter. Who is EmmaGamble87 and why is she following me?  Judging from her <a href="http://twitter.com/EmmaGamble87">Twitter account</a>, Emma Gamble is a spam bot, who sends out a new spam link once a day. Use Google to search for that very spam link &#8211; minus the random number &#8211; and we found another <a href="http://google.com/search?safe=off&amp;q=http%3A%2F%2Fbit.ly%2FhY053q">84 possible Twitter spammers</a>. That is, for every new spam link we find new possible Twitter spam accounts: <a href="http://google.com/search?safe=off&amp;q=http%3A%2F%2Fbit.ly%2FhKLg8x">93 results</a>, <a href="http://ipv6.google.com/search?safe=off&amp;q=http%3A%2F%2Fbit.ly%2FhNi2UJ">99 results</a>.</p>
<p>Now should I try to turn in all these <a href="http://twitter.com/LiamDonaldson88">Professional coffee enthusiasts</a>, <a href="http://twitter.com/kaitlynCV">Passionate bacon geeks</a>, hipster-friendly travel lovers, alcohol gurus, hardcore food fanatics, beer scholars and wannabe zombie mavens? Give me a break. If Twitter wants to get rid of spam bots, it should do so by having a<em> mass</em> spam bot reporting tool. (Same goes for Facebook. By the way: ironically enough they now report my mass spammer finding link as abusive, see <a href="http://www.facebook.com/valentijn.sessink/posts/146445345408040">here</a>).</p>
<p>Social spam will not go away. If you just look at the number of idiots that are <em>following</em> these spam bots on Twitter, you&#8217;ll know that automated junk mail has it&#8217;s very own audience. But a mass spam reporting tool could improve spam reduction rate twentyfold.</p>
<p>Oh, by the way: please don&#8217;t report my examples. I&#8217;d have to find new ones, which isn&#8217;t hard, but reporting them would defeat the whole purpose of this posting.</p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=342</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Securing your server with Syslog-ng</title>
		<link>http://valentijn.sessink.nl/?p=322</link>
		<comments>http://valentijn.sessink.nl/?p=322#comments</comments>
		<pubDate>Sun, 20 Feb 2011 16:50:03 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Happy Hacking]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[intrusion prevention]]></category>
		<category><![CDATA[ip6tables]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[syslog-ng]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=322</guid>
		<description><![CDATA[There are many programs that help you secure your servers. There are simple firewalling programs and there are complex network intrusion detection systems. Depending on your demands, there seems to be a solution for everyone. Unless you&#8217;re picky and you think you can do better &#8211; like I did, when I wrote my own combination [...]]]></description>
			<content:encoded><![CDATA[<p>There are many programs that help you secure your servers. There are simple firewalling programs and there are complex network intrusion detection systems. Depending on your demands, there seems to be a solution for everyone. Unless you&#8217;re picky and you think you can do better &#8211; like I did, when I wrote my own combination of syslog-ng and Linux iptables, skipping the middle man.</p>
<p><span id="more-322"></span></p>
<p>Lately, we had a two similar security breaches. One had to do with a problem in the Ubuntu pam settings, where <a title="Launchpad bug #711770" href="https://bugs.launchpad.net/ubuntu/+source/pam/+bug/711770" target="_blank">pam will ignore everything</a>, including wrong passwords, bad configurations, account expired and the kitchen sink, the other was a — rather stupid — default password that we left in a testing machine that got upgraded to production. Luckily, no animals were harmed; but we decided it to be time to fence off attackers by searching the log files for attacks.</p>
<p>There are many solutions for this. In the past, we had used<a href="http://logcheck.org"> logcheck</a>, which had a lot of patterns but was not very good at dissecting them (i.e. you could either have or have not something mailed, but no chance of doing something special with the IP address of the attacker). For easy analysis and security there are <a href="http://fail2ban.org">fail2ban</a> (written in Python), <a href="http://sagan.softwink.com">Sagan</a> (written in C), <a href="http://sshguard.net">SSHguard</a> (written in Yacc and C). (If you are looking for a complete (and maybe separate) intrusion detection system you may want to use something like <a href="http://snort.org">Snort</a>).</p>
<p>The problem I had with these solutions is, that they all have a quite complicated scanning path. If, for example, sshd logs an error message, this message will go to 1) your system log; from there to 2) the analysis program; which will, most likely, 3) spawn a script that, in turn, 4) will execute IPtables.  Eek. There are faster ways: SSHguard will call IPtables right away, but at a cost: it&#8217;s written in C, with (as far as I could see) the patterns written in Yacc; so getting a new pattern to work would mean a) writing a Yacc pattern, then b) recompile SSHguard. And while I understand the value of recompiling, I normally rather leave that to BSD users.</p>
<p>Luckily, there is an alternative. <a href="http://www.balabit.com/network-security/syslog-ng/">Syslog-ng</a> has got its own on board pattern recognition logic. That simplifies the path enormously: from sshd to the system logger; and, with a bit of trickery as outlined below, straight to the IPtables firewalling, without calling an external command. Here is what I built.</p>
<h3>Step 0. Install syslog-ng</h3>
<p>Easy enough.  On our Ubuntu Lucid servers, I added the &#8220;backports&#8221; repository and installed syslog-ng 3.1 from there. Please note that you do need version 3.1 or newer for the patterndb logic to work.</p>
<h3>Step 1.  Get a pattern.</h3>
<p>To get started, get the sshd pattern from the Balabit git web frontend:</p>
<pre>wget -O sshd.pdb <a href="http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=access/sshd.pdb;hb=HEAD">http://git.balabit.hu/?p=bazsi/syslog-ng-patterndb.git;a=blob;f=access/sshd.pdb;hb=HEAD</a></pre>
<p>Put it in /etc/syslog-ng/patterndb.d/, then run</p>
<pre>pdbtool merge -D /etc/syslog-ng/patterndb.d/ -p /var/lib/syslog-ng/patterndb.xml</pre>
<h3>Step 2: setup syslog-ng</h3>
<p>Add, in the appropriate sections of your /etc/syslog-ng/syslog-ng.conf file:</p>
<pre># a destination; we have a dual destination here, a file to see the
# blocked hosts, and an iptables-destination in /proc to block them.
destination d_syslogblock { file("/proc/net/xt_recent/syslogblock"
    template("+${usracct.device}\n")); file("/var/log/syslogblock"); };
# a parser for the pattern-DB we made in step 1
parser pattern_db {
    db_parser( file("/var/lib/syslog-ng/patterndb.xml")); };
# a filter to filter the parser results
filter f_syslogblock { tags("secevt") and match("REJECT"
    value("secevt.verdict")); };
# and finally, the log itself:
log { source(s_src); parser(pattern_db); filter(f_syslogblock);
destination(d_syslogblock); };</pre>
<h3>Step 3. Setup firewalling.</h3>
<p>A minimalistic firewall could look like:</p>
<pre>ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -m state --state INVALID -j DROP
ip6tables -A INPUT -m recent --rcheck --name block \
    --seconds 3600 -j DROP   # see note (1) below
ip6tables -A INPUT -m recent --rcheck --name syslogblock \
    --seconds 900 --hitcount 15 -m recent --name block --set \
    -j LOG --log-prefix "syslogblocked: "</pre>
<h3>Step 4. Repeat for IPv4</h3>
<p>Now repeat step 3, but use &#8220;iptables&#8221; instead of &#8220;ip6tables&#8221;. (I used ip6tables on purpose, because it&#8217;s time you get ready for IPv6 if you aren&#8217;t).</p>
<h3>Ready.</h3>
<p>Not too hard, isn&#8217;t it? It works as follows. Syslog-ng will put the IP-address of any wrong password or username into the /proc/net/xt_recent/syslogblock file, with a &#8220;+&#8221; in front of the address. This is the iptables way of telling the <em>recent</em> module it should add a certain address. Now the IPtables rules tell, that if someone is seen in this &#8220;syslogblock&#8221; list more that 15 times within 15 minutes, then (s)he will be added to the &#8220;block&#8221; list.</p>
<p>The double &#8220;-m recent &#8230;. -m recent&#8221; logic works because iptables does so called &#8220;short circuit&#8221; evaluation, If someone is <em>not</em> 15 times in the &#8220;syslogblock&#8221; list, then iptables won&#8217;t even bother to evaluate the rest of the line, i.e. it won&#8217;t call the &#8220;-m recent &#8211;name block&#8221; test. However, if someone <em>is</em> 15 times there (and it all happened within the last 15 minutes), only then it will see if &#8220;-m recent &#8211;name block &#8211;set&#8221; evaluates to &#8220;true&#8221; as well. And, by definition, it does, because an xt_recent &#8220;set&#8221; command is always true.</p>
<p>Once you&#8217;re in the &#8220;block&#8221; list, you will be blocked for an hour.<strong> Note (1)</strong>: if you replace the &#8220;&#8211;rcheck&#8221; here with an &#8220;&#8211;update&#8221; statement, the block will last even longer. The &#8220;&#8211;rcheck&#8221; option says: we will block you the next hour. While &#8220;&#8211;update&#8221; says: we <em>don&#8217;t want to see you</em> for an hour, but if we see you again during this time, we&#8217;ll block you again. So the latter means that you actually need to be quiet for 60 minutes to be able to log in again.</p>
<p>There is only one potential problem in this whole setup: if  syslog-ng inadvertedly sends garbage to the /proc/net/xt_recent/syslogblock file, then this file will be closed. Syslog-ng will reopen it after the &#8220;reopen&#8221; timeout, so your message will probably come through; but should something change in the working of syslog-ng, like should syslog-ng try to re-send potentially broken messages, then this will, effectively, block the rest of the blocking messages. (I don&#8217;t think this will happen, because &#8220;fprintf&#8221; is not a reliable transport, so to say, but you&#8217;ll never know).</p>
<p>I&#8217;ll implemented this solution successfully for a couple of servers; I also added a profile for <a href="http://asterisk.org">asterisk</a> SIP scanning and I&#8217;ll be adding more servers and more profiles in the coming weeks.</p>
<p>Some final remarks: xt_recent has a default tables size of 100 IP addresses, so it won&#8217;t eat up all your computer memory. However, this means that having IPv6 addresses in syslogblock may or may not be an advantage. As most of these IPv6 netblocks are /48 or /64, an attacker can easily change source addresses for every connection, thus slowly flushing your syslogblock file. I haven&#8217;t seen any IPv6 scans so far, but you might want to keep an eye on the /var/log/syslogblock file. Also, this file is not <em>rotated</em> by default and you may want to change that, too.</p>
<p>Happy blocking!</p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=322</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Knoeien met de cijfers van het CBS</title>
		<link>http://valentijn.sessink.nl/?p=53</link>
		<comments>http://valentijn.sessink.nl/?p=53#comments</comments>
		<pubDate>Wed, 22 Dec 2010 15:46:33 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Happy Hacking]]></category>
		<category><![CDATA[Overheid]]></category>
		<category><![CDATA[lek]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=53</guid>
		<description><![CDATA[Het Centraal Bureau voor de Statistiek doet zijn onderzoekjes anno 2010 nog steeds met een Windows-programma: u moet Microsoft Windows gebruiken om de door het CBS gevraagde gegevens te verzenden. Dat levert een statistische vertekening in de cijfers op (&#8220;gebruik van open source software&#8221;); erger is het, dat het dataverzamelingsprogramma zo lek is als een [...]]]></description>
			<content:encoded><![CDATA[<p>Het Centraal Bureau voor de Statistiek doet zijn onderzoekjes anno 2010 nog steeds met een Windows-programma: u moet Microsoft Windows gebruiken om de door het CBS gevraagde gegevens te verzenden. Dat levert een statistische vertekening in de cijfers op (&#8220;gebruik van open source software&#8221;); erger is het, dat het dataverzamelingsprogramma zo lek is als een mandje.<span id="more-53"></span></p>
<p>Het Centraal Bureau voor de Statistiek, CBS, heeft als missie het <em><a title="Missie van het CBS" href="http://www.cbs.nl/nl-NL/menu/organisatie/kwaliteitsverklaring/default.htm" target="_blank">samenstellen en publiceren van onbetwiste,  samenhangende, actuele statistische informatie</a> die relevant is voor  praktijk, beleid en wetenschap. Deze missie vereist dat de kwaliteit van de statistische informatie gegarandeerd is.</em></p>
<p>Sinds ongeveer vier jaar wordt de statistische dataverzameling afgehandeld met een door of voor het CBS ontwikkeld softwarepakket, genaamd &#8220;CBSquest.exe&#8221;. Om dat pakket te kunnen gebruiken, moet je het installeren op Microsoft Windows. (De fans van statistische methodenleer beginnen nu te gniffelen, want zij begrijpen het probleem, maar voor de geïnteresseerde leek zal ik de zaak nog even grondig uitleggen).</p>
<p>Een van de mooiste voorbeelden van foutieve statistische dataverzamelingen vind ik nog altijd de anekdote over de eerste telefonische enquete, in de Verenigde Staten, over de uitkomst van de presidentsverkiezingen. De uitslag zat er falikant naast. Waarom? Alleen de zeer rijken hadden destijds een telefoontoestel! De voorspelling had dan ook een overweldigende afwijking in de richting van de Republikeinen. (Anekdote trachten te verifiëren; niet gelukt, mogelijk een verdraaiïng van het <a title="Opinion Polls, Wikipedia (Engels)" href="http://en.wikipedia.org/wiki/Opinion_polls#History" target="_blank">verhaal over de peilingen van Literary Digest</a>).</p>
<p>Zo geldt ook het aanleveren van statistische gegevens met behulp van een Windows-programma als een wat onhandige manoevre. Niet zozeer omdat verstandige mensen een Mac of Linux-computer hebben, maar simpelweg omdat het CBS ook de vraag beantwoordt of er in de organisatie open source software gebruikt wordt. In de publicatie <a href="http://www.cbs.nl/nl-NL/menu/themas/bedrijven/publicaties/digitale-economie/publicaties/2009-de-digitale-economie-pub.htm">De Digitale Economie 2009</a> staat letterlijk: &#8220;Kleine bedrijven maakten zoals gezegd veel minder gebruik van open source software dan grote bedrijven en dit geldt vooral voor de open source besturingssoftware.&#8221;</p>
<p>Of bovenstaand waar is, weet ik niet. Maar het CBS weet het denk ik ook niet. Want wat doet een Linux- of een Apple-specialist wanneer een vragenlijst begint met: &#8220;Open Internet Explorer. Werkt u daar niet mee? Bel ons dan even&#8221;? Ik gooide de enquete weg, stiekem hopend op een boete, die ik dan in gezelschap van een paar ICT-journalisten zou gaan aanvechten bij de rechtbank.</p>
<p>De boete kwam niet, en andere mensen hadden al een leuke column geschreven, de statistische blunder kon me niet zoveel schelen, dus toen liet ik het maar zo.</p>
<p>Tot ik bij toeval ontdekte dat de dataverzameling van het CBS lek is: je kunt de vragen van iemand anders beantwoorden; je kunt zelfs je eigen enquete op de site van het CBS hosten!</p>
<p>Eerst maar eens even uitleggen hoe het CBS het bedoeld heeft. De eigenlijke handleiding is een <a title="Handleiding (let op, een Word-document)" href="https://formulieren.cbs.nl/downloads/Downloadinstructie.doc" target="_blank">Microsoft-Word-document</a>, maar het kan gelukkig ook simpel op een webpagina:</p>
<ol>
<li>U gaat naar https://formulieren.cbs.nl/downloads, gaapt naar de website, en downloadt vervolgens http://formulieren.cbs.nl/downloads/CBSquest_setup.exe.</li>
<li>Eenmaal gedownload, installeert u het. (Linux-gebruikers: <em>wine</em> is het codewoord).</li>
<li>Daarna gaat u naar <a title="download het vragenformulier" href="https://formulieren.cbs.nl/vlviewer/Login.aspx" target="_blank">https://formulieren.cbs.nl/vlviewer/Login.aspx</a> en daar moet u uw gebruikersnummer en uw toegangscode invullen. (De toegangscode staat in de uitnodigingsbrief). U kunt nu (met een tussenstap, als ik het me goed herinner) de vragenlijst downloaden. Terzijde: omdat je alleen je eigen toegangscode kent, kun je alleen je eigen vragenlijst ophalen.</li>
<li>Je start het (onder punt 2 geïnstalleerde) programma CBSQuest en je opent daarmee de (onder punt 3 opgehaalde) vragenlijst.</li>
<li>Je beantwoordt alle vragen en kiest voor &#8220;verzenden&#8221;.</li>
</ol>
<p>Het programma maakt nu, lokaal op je eigen computer, een HTML-document aan met de naam &#8220;CBSquest.htm&#8221;. Het staat in een tijdelijke map, bijvoorbeeld in <code>C:\windows\temp\~CBSquest\QNR97229\$Temp\CBSquest.htm</code>. Dat document wordt geopend met Internet Explorer en dan ziet het er ongeveer zo uit:</p>
<p><span style="font-family: arial,helvetica; color: #003366; font-size: x-small;">Jaarstatistiek Computerservice bureaus</span></p>
<p><span style="font-family: arial,helvetica; color: #003366; font-size: small;"><strong>Verzenden vragenlijst via het internet</strong></span></p>
<p><span style="font-family: arial,helvetica; color: black; font-size: x-small;"><strong>Let op:</strong></span></p>
<p><span style="font-family: arial,helvetica; color: black; font-size: x-small;">Als u op dit moment geen internetverbinding heeft, breng dan eerst deze verbinding tot stand.</span></p>
<p><span style="font-family: arial,helvetica; color: black; font-size: x-small;">Het is niet van belang welke internetpagina u opent / open heeft staan.</span><br />
<span style="font-family: arial,helvetica; color: black; font-size: x-small;">Klik nu op de knop &#8216;Verzenden&#8217; om de vragenlijst naar het CBS te versturen.</span></p>
<p>In de &#8220;broncode&#8221; van dit document staan de antwoorden op alle vragen, klaar om verzonden te worden. Ook je gebruikersnummer staat erin. De toegangscode ontbreekt. Oftewel: het CBS accepteert je antwoorden zonder dat je je hoeft te legitimeren. Daar mailde ik het CBS over; de afdeling persvoorlichting antwoordde het volgende:</p>
<p style="padding-left: 30px;"><em>Wij achten de kans klein dat een berichtgever/respondent daarbij een (ander) valide gebruikersnummer invult als zeer klein</em><em>. Dit nummer is random gegenereerd en toegewezen aan een respondent/berichtgever. Het gebruiksnummer is enkel bekend bij de bijbehorende persoon/bedrijf bekent </em><em>en het CBS controleert binnenkomende berichten op het valide zijn van dit nummer. Wanneer dit nummer niet overeenkomt dan wordt de data vernietigd en bovendien krijgt de berichtgever een rappel op het nog niet inzenden van zijn informatie.</em></p>
<p>Nou moet ik zeggen: ik acht de kans dat <em>een respondent</em> een ander nummer invult, ook uiterst klein en bovendien geheel irrelevant. Het gaat er hierbij om, dat een <em>willekeurige derde</em> een of ander nummer invult. Een weblog-lezer, bijvoorbeeld. (Nee, <em>u</em> niet natuurlijk). Bovendien is het lariekoek, dat &#8220;random nummer&#8221;. Mijn enquetenummer was zoiets als 1447859. Ik heb heel wat willekeurige nummers gezien in mijn leven — bijvoorbeeld 42 of 12 — en ik kan u verzekeren dat 1447859 absoluut niet erg random is. Anders gezegd: er  is ook een respondent met gebruikersnummer 1447857, 144758 en 1447860 en 1447861.</p>
<p>Maar het wordt nog onnozeler. Want niet alleen controleert de server van het CBS het wachtwoord niet, &#8220;CBSQuest.htm&#8221; formuleert ook, vooraf, het bedankje dat het CBS je straks gaat geven. Op je <em>eigen</em> computer staat dus de volgende tekst te wachten:</p>
<p style="padding-left: 30px;">&#8220;Dank u wel&lt;b&gt; &lt;/b&gt;voor het invullen van de vragenlijst.&lt;br&gt;&lt;br&gt;Uw antwoorden zijn op @@datum om @@tijd door het CBS ontvangen;&lt;br&gt;Ingevulde vragenlijst: Jaarstatistiek Computerservice bureaus Jaar 2011&lt;br&gt;&lt;br&gt;Uw correspondentienummer is: 12345678&lt;br&gt;Uw inzendkenmerk is: @@kenmerk&lt;br&gt;&lt;br&gt;Maak een afdruk van deze ontvangstbevestiging voor uw eigen administratie.&lt;br&gt;&lt;br&gt;&lt;b&gt;Afsluiten&lt;br&gt;&lt;/b&gt;U kunt nu dit scherm en ook het volgende scherm sluiten met het kruisje rechts bovenin.&lt;br&gt;&lt;br&gt;&lt;b&gt;Heeft u nog vragen? &lt;br&gt;&lt;/b&gt;Neem dan contact op met onze medewerkers van het CBS Contact Center:&lt;br&gt;via onze website (www.cbs.nl/contactcenter) of via de telefoon: &lt;br&gt;(045) 570 64 00 voor inhoudelijke vragen (op werkdagen van 9-17 uur)&#8221;</p>
<p>Ook die tekst kun je zelf aanpassen. Je kunt de CBS-server bijvoorbeeld laten zeggen:</p>
<p>&lt;script type=&#8217;text/javascript&#8217; /&gt;<br />
&lt;!&#8211;<br />
document.write(&#8216;Hallo Wereld&#8217;);<br />
//&#8211;&gt;<br />
&lt;/script&gt;&#8221;</p>
<p>En dan is, werkelijk, het eind zoek. Het betekent namelijk, dat iedereen die dat wil, willekeurige content op de CBS-site kan publiceren. Enfin, over <a title="Cross site scripting (Wikipedia)" href="http://nl.wikipedia.org/wiki/Cross-site_scripting" target="_blank">cross-site-scripting</a> (XSS) zijn hele boekwerken geschreven, dus dat ga ik u niet voorkauwen.</p>
<p>Wel nog dit. De CBS-server controleert wèl of u een formulier meestuurt. Dat formulier mag helemaal leeg zijn, maar het moet wel aanwezig zijn. Wilt u dus uw eigen enquete publiceren op de site van het CBS, wacht u dan even op de uitnodiging om met CBSquest.exe aan de slag te gaan.</p>
<p><em><strong>Naschrift.</strong> Het CBS is begin november 2010 van dit probleem op de hoogte gesteld &#8211; met het verzoek om te reageren. Het XSS-probleem lijkt opgelost: door alle de client-PC aangeleverde HTML-tags, behalve &lt;b&gt; en &lt;i&gt;, worden nu keurig met &#8220;&amp;gt;&#8221; gecodeerd in de HTML-broncode. Of hun Windows-probleem ook uit de wereld is, weet ik niet. </em><em>Reageren, daar doen ze namelijk niet aan.<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=53</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>De misdaad wordt virtueel</title>
		<link>http://valentijn.sessink.nl/?p=271</link>
		<comments>http://valentijn.sessink.nl/?p=271#comments</comments>
		<pubDate>Fri, 10 Dec 2010 19:14:25 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Opinie]]></category>
		<category><![CDATA[consumentenbond]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[medicijnen]]></category>
		<category><![CDATA[virus]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=271</guid>
		<description><![CDATA[Gisteren stond in NRC Handelsblad een opiniestuk van Ido Weijers, bijzonder hoogleraar jeugdrechtspleging, waarin hij pleit voor het aanpakken van &#8220;echte misdaad&#8221; en de kruimeldiefjes en onrustveroorzakers wat minder hoog op de prioriteitenlijst te zetten. Graag voeg ik daar aan toe: zullen we voortaan alleen echte misdaad aanpakken, en virtuele misdaad laten voor wat het [...]]]></description>
			<content:encoded><![CDATA[<p>Gisteren stond in NRC Handelsblad een opiniestuk van Ido Weijers, bijzonder hoogleraar jeugdrechtspleging, waarin hij pleit voor het aanpakken van &#8220;echte misdaad&#8221; en de kruimeldiefjes en onrustveroorzakers wat minder hoog op de prioriteitenlijst te zetten. Graag voeg ik daar aan toe: zullen we voortaan alleen echte misdaad aanpakken, en virtuele misdaad laten voor wat het is?<span id="more-271"></span></p>
<p>Begin december las ik in een nieuwsbericht, dat het ministerie van Justitie zou overwegen om internet permanent te &#8220;tappen&#8221;. Als reden daarvoor werd &#8211; volgens het <a href="http://webwereld.nl/nieuws/67999/justitie-overweegt-internet-permanent-te-tappen.html">nieuwsbericht op Webwereld</a> &#8211; opgegeven dat de overheid zo kinderporno een halt kan toeroepen. Nou wordt er in Nederland wel meer permanent getapt &#8211; we hebben in absolute aantallen meer getapte telefoons dan de gehele Verenigde Staten bij elkaar &#8211; dus heel bijzonder vond ik het allemaal niet.</p>
<p>De afgelopen weken was ik bovendien druk op zoek naar computervirussen, voor een presentatie voor de Bondsraad van de <a href="http://consumentenbond.nl">Consumentenbond</a>. Daar wilde ik laten zien, hoe sites met nep-virusscanners soms bedriegelijk echt lijken. Als je als goedwillende gebruiker op een dergelijke site klikt, moet je van goeden huize komen om niet, geheel per ongeluk en voor je het weet, een <a href="http://nl.wikipedia.org/wiki/Malware">kwaadaardig programma</a> te installeren.</p>
<p>Hoe kom je aan een nep-virusscanner? Meer algemeen: hoe kom je aan kwaadaardige programmatuur? Ik zocht op <a href="http://google.com">Google</a> en op <a href="http://bing.com">Bing</a>, maar zonder resultaat. Niet eens opmerkelijk, gegeven het feit dat ze bij Google (en bij Microsoft heus ook) een heuse <a href="http://threatpost.com/en_us/blogs/inside-googles-anti-malware-operation-102610">afdeling Anti-Malware</a> hebben.</p>
<p>Ik klikte al mijn spam aan (toch zeker 40 per dag, ondanks greylisting, ik heb er nog zo&#8217;n 2300 ongelezen staan) en ik probeerde alle als spam geklassificeerde verwijzingen in de commentaren op mijn blog. Helaas: zonder resultaat. Of beter gezegd: met een onverwacht resultaat. Wat ik vond, was op te delen in drie categorieën.</p>
<ul>
<li> De eerste: nagemaakte merkartikelen. Vermeldenswaardig is, dat de meeste namakers op hun site trots vermelden dat ze replica&#8217;s verkochten. Rolex, Gucci: vooral het duurdere proletenwerk.</li>
<li>De tweede categorie: verwijzingen-om-de-verwijzingen. Zoekmachines zoals Google en Bing hechten meer waarde aan een site naarmate er vaker naar verwezen wordt. Die verwijzingen worden tegenwoordig vaak geautomatiseerd aangelegd, opdate de waarde van de doel-site stijgt. Zo valt ook mijn blog ten prooi aan geautomatiseerd aangemaakte onzin-berichten, die als enig doel hebben het plaatsen van een verwijzing naar een andere site.</li>
<li>En de derde categorie: medicijnen van dubieuze herkomst. Voornamelijk Viagra trouwens, maar ook allerlei andere spullen voor &#8220;Energy for romantic affairs&#8221;. De Klisjeemannetjes zouden nog wat kunnen leren van de vele metaforen voor een grote stijve piemel — in de hoop om ongemerkt door de spamfilters te komen: &#8220;dude piston&#8221;, &#8220;your zipper knight&#8221;, &#8220;big package&#8221;, &#8220;switch up to 20 positions per night&#8221;, &#8220;concrete firmness&#8221;, &#8220;huge tool for everyone&#8221; of gewoon en een beetje saai &#8220;get rid of bad health&#8221;, wat op internet nooit gaat over verkoudheid of droge hoest.</li>
</ul>
<p>Maar waar het om begonnen was, een virussite vinden, dat lukte niet.</p>
<p>Toen begon er toch wat te knagen. De overheid gaat kinderporno stoppen — op internet. Laat ik nu altijd gedacht hebben dat het probleem van kinderporno was, dat er kinderen voor misbruikt worden, maar nee, het ministerie van Justitie stopt kinderporno &#8220;op internet&#8221;. <em>Daartoe heeft het Openbaar Ministerie een account aangemaakt op Second Life</em> is de gelukkig nog net ontbrekende mededeling. Maar het is wel de bedoeling dat we geen smerige plaatjes kunnen bekijken. Justitie zal het zo wel niet bedoelen, en misschien dat het woord &#8220;stoppen&#8221; door de journalist van Webwereld in het artikel geplaatst is. Ook besef ik dat je niet geestelijk gezond bent als je kiddieporn wilt zien, maar merkwaardig is het wel, dat internet afgeluisterd moet worden om kinder<em>porno</em>, vieze plaatjes dus, op internet te stoppen. Doe je best om kinder<em>seks</em> te stoppen, dat lijkt me heel wat zinniger.</p>
<p>Zo ook die anti-malware-flauwekul. Miljoenen worden er gepompt in campagnes die ons vertellen dat we onze computer van een virusscanner en een firewall moeten voorzien. Wat niet waar is (ik heb al tien jaar geen virusscanner), maar veel merkwaardiger is het feit, dat illegale medicijnensites bij het gros toegankelijk zijn. Is gewone gezondheid tegenwoordig ondergeschikt aan computergezondheid?</p>
<p>Als je de berichtgeving de laatste dagen volgt, is die conclusie bijna onontkoombaar. Het ene na het andere feit over de handel en wandel van de Verenigde Staten ziet het licht, maar waarover gaat de discussie? Of Wikileaks wel legaal bezig is. Of je die informatie wel mag publiceren.</p>
<p>Wat u in de echte wereld doet, moet u zelf weten, maar op internet, daar dient u zich te gedragen. Justitie ziet u!</p>
<blockquote><p>Zelf proberen? Dat kan. Dankzij een klant van <a title="Linux Office Solutions" href="http://openoffice.nl">Open Office</a>, die de melding op haar scherm kreeg, lukte het me toch nog om een valse antiviruswaarschuwing te verkrijgen. De website met de merkwaardige naam &#8220;<a href="http://alolipololi.osa.pl">alolipololi.osa.pl</a>&#8221; wordt — zo lang als het nog duurt — gebruikt als doorstuur-knooppunt door de makers van nep-virusscanners. Klik en huiver: het ziet er fantastisch gelikt uit, je zou zweren dat je met je Windows Vista en Internet Explorer 7 aan tientallen virusbesmettingen lijdt.</p>
<p>Let op: de site stuurt je niet altijd door, het kan ook zijn dat je op een geheel onschuldige zoekmachine-achtige website belandt, dat betekent dat de virusmakers je even geen virus willen toezenden. <span style="color: #ff0000;">Computers met Microsoft Windows zijn vatbaar voor de griep die deze lieden verspreiden. Als je toch klikt, kom dan niet klagen als je besmet bent. </span>Eigen schuld, er is keuze genoeg, had je maar Apple, Ubuntu, Android, BSD, Red Hat of SuSE moeten gebruiken.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=271</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MFOC improved</title>
		<link>http://valentijn.sessink.nl/?p=259</link>
		<comments>http://valentijn.sessink.nl/?p=259#comments</comments>
		<pubDate>Sat, 27 Nov 2010 13:05:17 +0000</pubDate>
		<dc:creator>Valentijn</dc:creator>
				<category><![CDATA[Happy Hacking]]></category>
		<category><![CDATA[ov-chipkaart]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://valentijn.sessink.nl/?p=259</guid>
		<description><![CDATA[When I started using MFOC, from a the description (in Dutch) at ov-chipkaart.org, I immediately ran into the problem described here. A bit strange seemed, that reading the card sector after sector with 10 different predefined keys did not crash the reader, while immediately after starting to try to calculate new keys, the reader would [...]]]></description>
			<content:encoded><![CDATA[<p>When I started using <a href="http://code.google.com/p/nfc-tools/downloads/list" target="_blank">MFOC</a>, from a  the description (in Dutch) at <a title="ov-chipkaart.org: doe het zelf (Dutch)" href="http://www.ov-chipkaart.org/?page_id=24" target="_blank">ov-chipkaart.org</a>, I immediately ran into the problem described <a title="libnfc page: troubles with MFOC" href="http://www.libnfc.org/community/topic/240/troubles-when-using-mfoc/" target="_blank">here</a>. A bit strange seemed, that reading the card sector after sector with 10 different predefined keys did not crash the reader, while immediately after starting to try to calculate new keys, the reader would crash.<span id="more-259"></span></p>
<p>Ov-chipkaart.nl only mentioned that MFOC &#8220;is not very stable&#8221; and suggested decreasing the &#8220;distance&#8221; (-T option in MFOC).</p>
<p>I decided to dig further. Strangely, adding various &#8220;sleep&#8221; calls did seem to improve the stability of the reader &#8211; but only for a very short time. Also, the source code was full of reconfiguration calls, it would even turn the &#8220;field&#8221; (meaning the wireless signal meant to communicate with the card) off, reconfigure the reader, turn the field on again, then try to re-establish communication with the card again:</p>
<pre>void mf_configure(nfc_device_t* pdi) {
 nfc_initiator_init(pdi);
 // Drop the field for a while, so can be reset
 nfc_configure(pdi,NDO_ACTIVATE_FIELD,false);
 // Let the reader only try once to find a tag
 nfc_configure(pdi,NDO_INFINITE_SELECT,false);
 // Configure the CRC and Parity settings
 nfc_configure(pdi,NDO_HANDLE_CRC,true);
 nfc_configure(pdi,NDO_HANDLE_PARITY,true);
 // Enable the field so more power consuming cards can power themselves up
 nfc_configure(pdi,NDO_ACTIVATE_FIELD,true);
}
</pre>
<p>followed by a call to</p>
<pre>void mf_anticollision(mftag t, mfreader r) {
 const nfc_modulation_t nm = {
 .nmt = NMT_ISO14443A,
 .nbr = NBR_106,
 };
 if (!nfc_initiator_select_passive_target(r.pdi, nm, NULL, 0, &amp;t.nt)) {
 fprintf(stderr, "\n\n!Error: tag has been removed\n");
 exit(1);
 }
}</pre>
<p>This all seemed a bit unnecessary, so I started weeding out calls to mf_configure() and mf_anticollision(). That did not seem to harm MFOC reading the signal &#8211; although stability did, at first, not improve.</p>
<p>Then I noticed a call to mf_enhanced_auth that was followed by &#8220;fprint(); fflush(); mf_configure(); mf_anticollision()&#8221;, and afterwards, the reader would crash; but if I turned things around (mf_authenticate; mf_configure; mf_anticollision; fprint), it would be much more stable.</p>
<pre>
// Try to authenticate to exploit sector and determine distances (filling denonce.distances)
mf_enhanced_auth(e_sector, 0, t, r, &amp;d, pk, 'd', dumpKeysA); // AUTH + Get Distances mode
printf("Sector: %d, type %c, probe %d, distance %d ", j, (dumpKeysA ? 'A' : 'B'), k, d.median);
// Configure device to the previous state
mf_configure(r.pdi);
mf_anticollision(t, r);
</pre>
<p>Aha. A timing issue.</p>
<p>Then I figured: if these calls to mf_configure are unnecessary (apart from the ones that enable key calculation), I might as well put them inside mf_enhanced_auth:</p>
<pre>crypto1_destroy(pcs);
// Let reader handle parity &amp; CRC again.
for (i=0;!nfc_configure(r.pdi, NDO_HANDLE_PARITY, true) &amp;&amp; i &lt; 10; i++)  {
  zsleep (100);
  printf("Parity");
}
if (i==10) { fprintf(stderr,"10 config errors, aborting now.\n"); exit (EXIT_FAILURE); }
for (i=0;!nfc_configure(r.pdi, NDO_HANDLE_CRC, true) &amp;&amp; i &lt; 10; i++) {
  zsleep (100);
  printf("CRC");
}
if (i==10) { fprintf(stderr,"10 config errors, aborting now.\n"); exit (EXIT_FAILURE); }
return 0;</pre>
<p>This greatly improved stability: the reader wouldn&#8217;t crash anymore after the &#8220;d&#8221; part of mf_authenticate. However, it would after the &#8220;m&#8221; part. Now what?</p>
<p>Ironically, during a train ride, it struck me. The &#8220;m&#8221; part of mf_authenticate is heavily influenced by the &#8220;T&#8221; option: a higher value for &#8220;T&#8221; will increase the time until MFOC reconfigures the reader to it&#8217;s default settings (CRC and parity calculation done by the reader):</p>
<pre>if (!nfc_initiator_transceive_bits(r.pdi, AuthEnc, 32, AuthEncPar,Rx, &amp;RxLen, RxPar)) {
 fprintf(stdout, "Error requesting encrypted tag-nonce\n");
 exit(1);
 }
// followed by the calculation done by the computer:
for (m = d-&gt;median-d-&gt;tolerance; m &lt;= d-&gt;median+d-&gt;tolerance; m +=2) {
// there is no more communication with the reader here!
}</pre>
<p>The suggestion of having a low value for &#8220;tolerance&#8221; would help getting the reader being reconfigured in time, which would help the reader not crash. This also means that the faster your processor, the higher your &#8220;T&#8221; value can be. My MFOC tuning was done on a rather low-end machine with an Intel Atom processor, which is probably why even 1 or 2 for &#8220;T&#8221; would not finish calculations.</p>
<p>Anyway, <a href="http://valentijn.sessink.nl/wp-content/uploads/2010/11/mfoc.c">here is the revised mfoc.c</a>. It&#8217;s still a bit rough; you&#8217;ll need to tune mfoc.h a bit (remove mf_configure), but hey, your card reader will not crash anymore!</p>
<p>It&#8217;s not perfect. MFOC will, sometimes, still crash. Reconfiguring the parity/CRC at the end of mf_enhanced_auth will sometimes still stop the calculations. But so far, I haven&#8217;t seen my reader stop communicating anymore. Those of you who don&#8217;t have a crashing ACR122U are most welcome to test this source, too, to see if it doesn&#8217;t pose new problems. Please let me know your findings.</p>
]]></content:encoded>
			<wfw:commentRss>http://valentijn.sessink.nl/?feed=rss2&#038;p=259</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
