<?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>jmanteau &#187; Système</title>
	<atom:link href="http://www.jmanteau.fr/category/informatique/systeme/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jmanteau.fr</link>
	<description>Photos, blog, CV &#38; Co : le "coin de Toile" de Julien Manteau</description>
	<lastBuildDate>Wed, 08 Feb 2012 13:49:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Merge de fichiers KeepassX ou Keepass 1.x (.kdb)</title>
		<link>http://www.jmanteau.fr/informatique/systeme/merge-de-fichiers-keepassx-ou-keepass-1-x-kdb/</link>
		<comments>http://www.jmanteau.fr/informatique/systeme/merge-de-fichiers-keepassx-ou-keepass-1-x-kdb/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 13:49:41 +0000</pubDate>
		<dc:creator>jmanteau</dc:creator>
				<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://www.jmanteau.fr/?p=687</guid>
		<description><![CDATA[J&#8217;ai eu le besoin de merger plusieurs fichiers base de données de Keepass. Si vous ne connaissez pas cet excellent gestionnaire de mot de passe allez faire un tour ici ! Son pendant Linux/Mac OS X est KeepassX compatible avec la branche 1.x de Keepass. Ce script (rapidement fait) prend plusieurs fichiers d&#8217;export XML Keepass [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai eu le besoin de merger plusieurs fichiers base de données de Keepass. Si vous ne connaissez pas cet excellent gestionnaire de mot de passe allez faire un tour <a href="http://keepass.info/">ici</a> ! Son pendant Linux/Mac OS X est <a title="KeepassX" href="http://www.keepassx.org/">KeepassX</a> compatible avec la branche 1.x de Keepass.</p>
<p>Ce script (rapidement fait) prend plusieurs fichiers d&#8217;export XML Keepass (Menu -> Exporter sous -> XML)<br />
et les regroupent sous un fichier. Il prend l&#8217;entrée la plus récente en cas de conflit. Il affichera les conflits en sortie console.</p>
<p>La source est disponible ici pour ceux qui veulent la regarder et je l&#8217;ai également compilé ici pour ceux qui veulent faire un merge rapide.</p>
<p>Télécharger <a href='http://www.jmanteau.fr/wp-content/uploads/2011/12/KeeMerge.exe'>KeeMerge</a></p>
<p>Pour l’exécutable, le mettre dans le même dossier que les exports xml puis le lancer.</p>
<p>Il faut ensuite importer le merge.xml dans Keepass. Créer une nouvelle base puis Menu-> Importer -> XML Keepass 1.x.</p>
<div class="codecolorer-container python mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">from</span> lxml <span style="color: #ff7700;font-weight:bold;">import</span> etree<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">datetime</span><span style="color: #66cc66;">,</span> <span style="color: #dc143c;">glob</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">class</span> Password<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span> node<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; date<span style="color: #66cc66;">=</span> node.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;lastmodtime&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">text</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">lastmodtime</span><span style="color: #66cc66;">=</span> <span style="color: #dc143c;">datetime</span>.<span style="color: #dc143c;">datetime</span>.<span style="color: black;">strptime</span><span style="color: black;">&#40;</span>date<span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;%Y-%m-%dT%H:%M:%S&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">uuid</span><span style="color: #66cc66;">=</span> node.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;uuid&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">text</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">username</span><span style="color: #66cc66;">=</span> node.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;username&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">text</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">password</span><span style="color: #66cc66;">=</span> node.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;password&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">text</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">title</span><span style="color: #66cc66;">=</span> node.<span style="color: black;">find</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;title&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">text</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">self</span>.<span style="color: black;">node</span><span style="color: #66cc66;">=</span> node<br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__hash__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">hash</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">title</span><span style="color: black;">&#41;</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">lastmodtime</span><span style="color: black;">&#41;</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">uuid</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__eq__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span>other<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">uuid</span><span style="color: #66cc66;">==</span>other.<span style="color: black;">uuid</span> <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #008000;">self</span>.<span style="color: black;">username</span><span style="color: #66cc66;">==</span>other.<span style="color: black;">username</span> <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #008000;">self</span>.<span style="color: black;">password</span><span style="color: #66cc66;">==</span>other.<span style="color: black;">password</span> <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #008000;">self</span>.<span style="color: black;">title</span><span style="color: #66cc66;">==</span><span style="color: #008000;">self</span>.<span style="color: black;">title</span><br />
<br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__str__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; s <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;%s (%s): [%s|%s] - %s&quot;</span> % <span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">title</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">uuid</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">username</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">password</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">lastmodtime</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> s<br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__repr__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; s <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;%s (%s): [%s|%s] - %s&quot;</span> % <span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">title</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">uuid</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">username</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">password</span><span style="color: #66cc66;">,</span><span style="color: #008000;">self</span>.<span style="color: black;">lastmodtime</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> s<br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getTree<span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #483d8b;">&quot;&quot;&quot;<br />
&nbsp; &nbsp; Give the root and tree of the XML file<br />
&nbsp; &nbsp; &quot;&quot;&quot;</span><br />
&nbsp; &nbsp; <span style="color: #dc143c;">parser</span> <span style="color: #66cc66;">=</span> etree.<span style="color: black;">XMLParser</span><span style="color: black;">&#40;</span>strip_cdata<span style="color: #66cc66;">=</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; tree <span style="color: #66cc66;">=</span> etree.<span style="color: black;">parse</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: #66cc66;">,</span> <span style="color: #dc143c;">parser</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; root<span style="color: #66cc66;">=</span> tree.<span style="color: black;">getroot</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> tree <span style="color: #66cc66;">,</span>root<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getpasswords<span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #483d8b;">&quot;&quot;&quot;<br />
&nbsp; &nbsp; Parse and return all the password of an xml exported by Keepass<br />
&nbsp; &nbsp; &quot;&quot;&quot;</span><br />
&nbsp; &nbsp; tree<span style="color: #66cc66;">,</span> root <span style="color: #66cc66;">=</span> getTree<span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; elements<span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> e <span style="color: #ff7700;font-weight:bold;">in</span> root:<br />
&nbsp; &nbsp; &nbsp; &nbsp; elements.<span style="color: black;">append</span><span style="color: black;">&#40;</span>Password<span style="color: black;">&#40;</span>e<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> elements<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># give me your xmls</span><br />
&nbsp; &nbsp; xmls<span style="color: #66cc66;">=</span> <span style="color: #dc143c;">glob</span>.<span style="color: #dc143c;">glob</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;*.xml&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># a dict uniq by the uuid of the node</span><br />
&nbsp; &nbsp; uniquepasswords<span style="color: #66cc66;">=</span> <span style="color: #008000;">dict</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># all your passwords are belong to us</span><br />
&nbsp; &nbsp; passwords<span style="color: #66cc66;">=</span><span style="color: black;">&#91;</span><span style="color: #dc143c;">pwd</span> <span style="color: #ff7700;font-weight:bold;">for</span> f <span style="color: #ff7700;font-weight:bold;">in</span> xmls <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #dc143c;">pwd</span> <span style="color: #ff7700;font-weight:bold;">in</span> getpasswords<span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># let's go marco</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #dc143c;">pwd</span> <span style="color: #ff7700;font-weight:bold;">in</span> passwords:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># do I know you ?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">pwd</span>.<span style="color: black;">uuid</span> <span style="color: #ff7700;font-weight:bold;">in</span> uniquepasswords:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; challenger<span style="color: #66cc66;">=</span> <span style="color: #dc143c;">pwd</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; champion<span style="color: #66cc66;">=</span> uniquepasswords<span style="color: black;">&#91;</span><span style="color: #dc143c;">pwd</span>.<span style="color: black;">uuid</span><span style="color: black;">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># If exact match, skips</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> challenger <span style="color: #66cc66;">!=</span> champion:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># challenger modified recently ?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> challenger.<span style="color: black;">lastmodtime</span> <span style="color: #66cc66;">&gt;</span> champion.<span style="color: black;">lastmodtime</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;####&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s&quot;</span> % <span style="color: black;">&#40;</span>challenger<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;more recent than&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s&quot;</span> % <span style="color: black;">&#40;</span>champion<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Challenger wins&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uniquepasswords<span style="color: black;">&#91;</span><span style="color: #dc143c;">pwd</span>.<span style="color: black;">uuid</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">=</span> challenger<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> challenger.<span style="color: black;">lastmodtime</span> <span style="color: #66cc66;">&lt;</span> champion.<span style="color: black;">lastmodtime</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;####&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s&quot;</span> % <span style="color: black;">&#40;</span>challenger<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;older than&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s&quot;</span> % <span style="color: black;">&#40;</span>champion<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Garbage&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># hello you</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uniquepasswords<span style="color: black;">&#91;</span><span style="color: #dc143c;">pwd</span>.<span style="color: black;">uuid</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">=</span> <span style="color: #dc143c;">pwd</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Append xml nodes to root</span><br />
&nbsp; &nbsp; root<span style="color: #66cc66;">=</span> etree.<span style="color: black;">Element</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;pwlist&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #dc143c;">pwd</span> <span style="color: #ff7700;font-weight:bold;">in</span> uniquepasswords.<span style="color: black;">values</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; root.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">pwd</span>.<span style="color: black;">node</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Write to file</span><br />
&nbsp; &nbsp; et <span style="color: #66cc66;">=</span> etree.<span style="color: black;">ElementTree</span><span style="color: black;">&#40;</span>root<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; et.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;merge.xml&quot;</span><span style="color: #66cc66;">,</span> pretty_print<span style="color: #66cc66;">=</span><span style="color: #008000;">True</span><span style="color: #66cc66;">,</span> xml_declaration<span style="color: #66cc66;">=</span><span style="color: #008000;">True</span><span style="color: #66cc66;">,</span> encoding<span style="color: #66cc66;">=</span><span style="color: #483d8b;">'utf-8'</span><span style="color: #66cc66;">,</span> standalone<span style="color: #66cc66;">=</span><span style="color: #483d8b;">'yes'</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;__main__&quot;</span>:<br />
&nbsp; &nbsp; main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jmanteau.fr/informatique/systeme/merge-de-fichiers-keepassx-ou-keepass-1-x-kdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NCSI ou &#171;&#160;connectivité limitée&#160;&#187; sous Windows</title>
		<link>http://www.jmanteau.fr/informatique/securite/ncsi-ou-connectivite-limitee-sous-windows/</link>
		<comments>http://www.jmanteau.fr/informatique/securite/ncsi-ou-connectivite-limitee-sous-windows/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 15:13:31 +0000</pubDate>
		<dc:creator>jmanteau</dc:creator>
				<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://www.jmanteau.fr/?p=662</guid>
		<description><![CDATA[Depuis Windows Vista et Seven lorsque vous connectez un ordinateur à un réseau filaire ou wifi l&#8217;icône vous indique l&#8217;état de la connexion: non connecté, connectivité limitée ou accès internet. Cette information est obtenue avec NCSI ( Network Connectivity Status Indicator ). Cette fonctionnalité fonctionne de la manière suivante: NCSI effectue une requête DNS sur [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis Windows Vista et Seven lorsque vous connectez un ordinateur à un réseau filaire ou wifi l&#8217;icône vous indique l&#8217;état de la connexion: non connecté, connectivité limitée ou accès internet.</p>
<p>Cette information est obtenue avec NCSI ( Network Connectivity Status Indicator ). Cette fonctionnalité fonctionne de la manière suivante:</p>
<ol>
<li>NCSI effectue une requête DNS sur www.msftncsi.com, puis demande la page http://www.msftncsi.com/ncsi.txt. C&#8217;est un fichier texte contenant Microsoft NCSI.</li>
<li>NCSI effectue une requête DNS sur dns.msftncsi.com. Cela résout normalement en 131.107.255.255. Si cette vérification échoue on a un problème de connectivité voire un DNS menteur. Mais cette vérification est le plus souvent utilisée lors d&#8217;une authentification requise par une page web (type FreeWifi, NeufWifi ou tout autre hotspot).</li>
</ol>
<p>La fonction part d&#8217;une bonne intention mais on envoie quand même une requête à Microsoft avec son IP &#8230; et les logs sont gardés:</p>
<blockquote><p>IIS logs are stored on the server at www.msftncsi.com. These logs contain the time of each access and the IP address recorded for that access. These IP addresses are not used to identify users, and in many cases, they are the address of a network address translation (NAT) computer or proxy server, not a specific client behind that NAT computer or proxy server.</p>
<p><a href="http://technet.microsoft.com/fr-fr/library/cc766017%28WS.10%29.aspx">Source</a></p></blockquote>
<p>Si on souhaite désactiver cette fonction on peut le faire dans la base de registre:</p>
<blockquote><p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet<br />
Under the Internet key, double-click EnableActiveProbing, and then in Value data, type: 0. The default for this value is 1. Setting the value to 0 prevents NCSI from connecting to a site on the Internet during checks for connectivity.</p></blockquote>
<p>On peut également créer son propre serveur pour utiliser cette fonction en modifiant les entrées du registre correspondantes.</p>
<p>Après recherche on tombe sur des articles plus détaillées comme <a href="http://blog.superuser.com/2011/05/16/windows-7-network-awareness/">Super User.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jmanteau.fr/informatique/securite/ncsi-ou-connectivite-limitee-sous-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UDP over SSH port forwarding</title>
		<link>http://www.jmanteau.fr/informatique/systeme/652/</link>
		<comments>http://www.jmanteau.fr/informatique/systeme/652/#comments</comments>
		<pubDate>Sun, 10 Jul 2011 19:42:31 +0000</pubDate>
		<dc:creator>jmanteau</dc:creator>
				<category><![CDATA[Système]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunneling]]></category>

		<guid isPermaLink="false">http://www.jmanteau.fr/?p=652</guid>
		<description><![CDATA[Il est courant d&#8217;utliser les tunnels SSH pour faire transiter divers flux TCP. Cependant on ne peut utiliser le port forwarding directement avec du TCP (exemple du DNS ou SNMP). Ce billet vous montre les étapes à effectuer pour atteindre ce but. Etapes par étapes Ouvrir un tunnel SSH avec TCP forward port Depuis votre [...]]]></description>
			<content:encoded><![CDATA[<p>Il est courant d&#8217;utliser les tunnels SSH pour faire transiter divers flux TCP. Cependant on ne peut utiliser le port forwarding directement avec du TCP (exemple du DNS ou SNMP). Ce billet vous montre les étapes à effectuer pour atteindre ce but.</p>
<p><strong>Etapes par étapes</strong></p>
<p><em>Ouvrir un tunnel SSH avec TCP forward port </em></p>
<p>Depuis votre machine, se connecter au serveur SSH distant avec l&#8217;option -L pour utiliser le port forwarding :</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">local# </span><span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-L</span> PORT_TCP_LOCAL:localhost:PORT_TCP_DISTANT IP_SERVEUR_SSH</div></td></tr></tbody></table></div>
<p>La commande précédente transfère depuis le port_tcp_local de localhost vers le port_tcp_distant de server.</p>
<p><em>Mise en place de TCP to UDP sur le serveur</em></p>
<p>Sur le serveur SSH on ouvre un listener sur le port PORT_TCP_DISTANT qui transfèrera les données vers le port UDP du serveur voulu (par exemple dans le cas d&#8217;un DNS forwarding l&#8217;IP du resolveur DNS).<br />
Avant tout il faut créer un FIFO qui fait office de transfert en local. Une fifo est une communication bidirectionnel entre deux processus. La fifo est à distinguer du pipe qui est unidirectionnel (gauche output vers droit input).</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">server# </span><span style="color: #c20cb9; font-weight: bold;">mkfifo</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>fifo</div></td></tr></tbody></table></div>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">server# </span>nc <span style="color: #660033;">-l</span> <span style="color: #660033;">-p</span> PORT_TCP_DISTANT <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>fifo <span style="color: #000000; font-weight: bold;">|</span> nc <span style="color: #660033;">-u</span> IP_SERVEUR_UDP PORT_UDP_DISTANT <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>fifo</div></td></tr></tbody></table></div>
<p>Cela permet au trafic TCP du serveur SSH d&#8217;être transmis vers le le port du serveur distant portant le service UDP nous intéressant et de transmettre également le retour.</p>
<p><em>Mise en place du UDP sur TCP sur votre machine</em></p>
<p>Maintenant nous devons effectuer la manoeuvre opposée sur notre machine.</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">local# </span><span style="color: #c20cb9; font-weight: bold;">mkfifo</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>fifo</div></td></tr></tbody></table></div>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">local# </span><span style="color: #c20cb9; font-weight: bold;">sudo</span> nc <span style="color: #660033;">-l</span> <span style="color: #660033;">-u</span> <span style="color: #660033;">-p</span> PORT_UDP_LOCAL <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>fifo <span style="color: #000000; font-weight: bold;">|</span> nc localhost PORT_TCP_LOCAL <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>fifo</div></td></tr></tbody></table></div>
<p>Cela permet au trafic UDP provenant du PORT_UDP_LOCAL d&#8217;être transféré dans le tunnel SSH écoutant sur le PORT_TCP_LOCAL</p>
<p><a href="http://www.jmanteau.fr/wp-content/uploads/2011/07/udptunneling.jpg" rel="lightbox[652]"><img class="aligncenter size-full wp-image-653" title="UDP tunneling over SSH" src="http://www.jmanteau.fr/wp-content/uploads/2011/07/udptunneling.jpg" alt="" width="504" height="575" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jmanteau.fr/informatique/systeme/652/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un script pour les lier tous</title>
		<link>http://www.jmanteau.fr/informatique/systeme/un-script-pour-les-lier-tous/</link>
		<comments>http://www.jmanteau.fr/informatique/systeme/un-script-pour-les-lier-tous/#comments</comments>
		<pubDate>Tue, 18 May 2010 12:49:16 +0000</pubDate>
		<dc:creator>jmanteau</dc:creator>
				<category><![CDATA[Système]]></category>
		<category><![CDATA[livecd]]></category>
		<category><![CDATA[rescue]]></category>

		<guid isPermaLink="false">http://www.jmanteau.fr/?p=510</guid>
		<description><![CDATA[MultiCD. Ce petit script est juste superbe. Il permet de regrouper en une seule iso plusieurs isos distinctes. Le site vous l&#8217;expliquera mieux que moi : http://multicd.tuxfamily.org/ Ainsi en gravant une seule ISO vous retrouvez toutes vos distributions facilement. Pour ma part je vais me faire une ISO avec: Backtrack Tiny Core Linux GeeXboX SystemRescueCd [...]]]></description>
			<content:encoded><![CDATA[<p>MultiCD. Ce petit script est juste superbe.</p>
<p>Il permet de regrouper en une seule iso plusieurs isos distinctes. Le site vous l&#8217;expliquera mieux que moi : <a href="http://multicd.tuxfamily.org/">http://multicd.tuxfamily.org/</a></p>
<p>Ainsi en gravant une seule ISO vous retrouvez toutes vos distributions facilement.</p>
<p>Pour ma part je vais me faire une ISO avec:</p>
<ul>
<li>Backtrack</li>
<li><a href="http://www.tinycorelinux.com/">Tiny Core Linux</a></li>
<li><a href="http://geexbox.org/en/index.html/">GeeXboX</a></li>
<li><a href="http://www.sysresccd.org/">SystemRescueCd</a></li>
<li><a href="http://gparted.sourceforge.net/">GParted Live</a></li>
<li><a href="http://home.eunet.no/pnordahl/ntpasswd/">Offline NT Password  &amp; Registry Editor</a></li>
<li><a href="http://www.clonezilla.org/">Clonezilla</a></li>
<li><a href="http://www.ubuntu.com/">Ubuntu</a></li>
<li><a href="http://www.ultimatebootcd.com/">Ultimate Boot CD</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jmanteau.fr/informatique/systeme/un-script-pour-les-lier-tous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Petites astuces VMware</title>
		<link>http://www.jmanteau.fr/informatique/systeme/petites-astuces-vmware/</link>
		<comments>http://www.jmanteau.fr/informatique/systeme/petites-astuces-vmware/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 14:06:46 +0000</pubDate>
		<dc:creator>jmanteau</dc:creator>
				<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://www.jmanteau.fr/?p=495</guid>
		<description><![CDATA[Accéder au TTYs d&#8217;une machine virtuelle Linux/BSD sous VMware Player ou dans une console VMware ESX Presser CTRL+ALT+ESPACE relacher ESPACE en maintenant CTRL+ALT presser F(1-7) pour accéder au tty désiré Activer le SSH sous ESXi 4 Server Entrer dans la console ESX avec ALT+F1 Tapez unsupported (rien ne s&#8217;affiche, c&#8217;est normal) puis Entrée Entrez ensuite [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Accéder au TTYs d&#8217;une machine virtuelle Linux/BSD sous VMware Player ou dans une console VMware ESX</strong></p>
<ul>
<li>Presser CTRL+ALT+ESPACE</li>
</ul>
<ul>
<li>relacher ESPACE en maintenant CTRL+ALT</li>
</ul>
<ul>
<li>presser F(1-7) pour accéder au tty désiré</li>
</ul>
<p><strong>Activer le SSH sous ESXi 4 Server</strong></p>
<ul>
<li>Entrer dans la console ESX avec ALT+F1</li>
</ul>
<ul>
<li>Tapez unsupported (rien ne s&#8217;affiche, c&#8217;est normal) puis Entrée</li>
</ul>
<ul>
<li>Entrez ensuite le mot de passe root (attention clavier en qwerty)</li>
</ul>
<ul>
<li>Editez avec vi le fichier /etc/inetd.conf:
<pre>vi /etc/inetd.conf</pre>
</li>
</ul>
<ul>
<li>Décommentez le # devant ssh (la ligne avec tcp)</li>
</ul>
<ul>
<li>Entrez la commande suivante pour redémarrez les services:
<pre>services.sh restart</pre>
</li>
</ul>
<ul>
<li>Redémarrez également inet avec
<pre>ps aux |grep inetd</pre>
<p>pour obtenir le PID puis</p>
<pre>kill -HUP PID</pre>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jmanteau.fr/informatique/systeme/petites-astuces-vmware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

