<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
	
		<title>philpep's blog - tag soft</title>
		<atom:link href="http://blog.philpep.org/feed/tag/soft/rss2" rel="self" type="application/rss+xml" />
		<description>philpep&#39;s blog - tag soft rss</description>
	<link>http://blog.philpep.org</link>
	<language>fr</language>
		<lastBuildDate>Wed, 17 Nov 2010 18:31:30 GMT</lastBuildDate>
	<generator>Pblog</generator>
		<item>
			<title>NSD pour remplacer BIND</title>
			<link>http://blog.philpep.org/post/nsd-pour-remplacer-bind</link>
			<guid>http://blog.philpep.org/post/nsd-pour-remplacer-bind</guid>
			<pubDate>Wed, 17 Nov 2010 18:31:30 GMT</pubDate>
			<description>&lt;p&gt;Je loue une machine virtuelle chez lost-oasis à (12€ par mois, 256Mo de RAM) pour faire du monitoring nagios, du mx/dns secondaire et du mirror http pour mes autres machines dans mon appart. Elle tourne sur Debian (en paravirtualisation kvm, virtio etc), avec de l&#39;openvz par dessus. 256Mo ça fait pas beaucoup, et en browsant sur mon &lt;code&gt;top&lt;/code&gt;, j&#39;ai remarqué que c&#39;était &lt;code&gt;bind&lt;/code&gt; qui prenait le plus de mémoire (loin devant postgresql et php-cgi).&lt;/p&gt;
&lt;p&gt;Je me met donc à la recherche d&#39;un serveur dns qui serait plus léger que bind et qui fasse aussi bien dns primaire et secondaire pour mes 5 petites zones et je me souviens avoir vu passer &lt;a href=&#34;http://www.gcu-squad.org/2010/10/je-voudrais-le-22-a-asnieres/&#34;&gt;une news&lt;/a&gt; à propos de l&#39;intégration récente de &lt;a href=&#34;http://www.nlnetlabs.nl/projects/nsd/&#34;&gt;nsd&lt;/a&gt; dans OpenBSD-Current. Ni une ni deux je dégaine mon &lt;code&gt;apt-get install nsd3&lt;/code&gt; et après quelques jours d&#39;utilisation j&#39;en suis très content.&lt;/p&gt;
&lt;p&gt;Ce qu&#39;il faut savoir à propos de &lt;code&gt;nsd&lt;/code&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C&#39;est un serveur authoritative only (contrairement à bind qui fait aussi cache et récursion)&lt;/li&gt;
&lt;li&gt;Il est utilisé par quelques uns des root dns servers (on peut donc lui louer une certaine robustesse)&lt;/li&gt;
&lt;li&gt;Il sait lire les même fichiers de zones que bind&lt;/li&gt;
&lt;li&gt;La configuration est extrêmement simple&lt;/li&gt;
&lt;li&gt;Il est bien plus léger en RAM que bind même configuré pour faire la même chose.&lt;/li&gt;
&lt;li&gt;Il fonctionne très bien avec bind en master (j&#39;ai pas testé dans l&#39;autre sens)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Que du bon donc, laisser moi vous montrer un bout de config comme c&#39;est simple :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;server:
    hide-version: yes

# Une config master avec deux slaves 
zone:
    name: &amp;quot;philpep.org&amp;quot;
    zonefile: &amp;quot;master/philpep.org&amp;quot;

    notify: 217.70.177.40 NOKEY
    provide-xfr: 217.70.177.40 NOKEY

    notify: 212.85.155.53 NOKEY
    provide-xfr: 212.85.155.53 NOKEY

# Une config slave avec un master
zone:
    name: &amp;quot;philpep.org&amp;quot;
    zonefile: &amp;quot;slave/philpep.org&amp;quot;

    allow-notify: 82.229.137.130 NOKEY
    request-xfr: AXFR 82.229.137.130 NOKEY

# Apparemment nsd master ne gère que les transferts de zone AXFR (et pas IXFR)
# Ça n&amp;#39;a pas d&amp;#39;incidence l&amp;#39;un est testé puis l&amp;#39;autre si ça marche pas. Mais vous pouvez éviter
# un message de log en mettant AXFR dans request-xfr dans le cas d&amp;#39;un nsd master et slave.
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Les zones sont strictement les mêmes que celles de bind.&lt;/p&gt;
&lt;p&gt;Bien sûr il est possible de faire des config bien plus velues avec des clés pour faire des zones dynamiques, du chroot etc, voyez  &lt;a href=&#34;http://linux.die.net/man/5/nsd.conf&#34;&gt;nsd.conf(5)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il y a aussi un utilitaire bien convi pour controler le serveur : &lt;a href=&#34;http://linux.die.net/man/8/nsdc&#34;&gt;nsdc(8)&lt;/a&gt;. Avant de démarrer le serveur pour la première fois, il faut compiler les zones avec &lt;code&gt;nsdc rebuild&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;J&#39;ai trouvé nsd tellement pratique que je l&#39;ai aussi installé en master sur mon serveur FreeBSD  (&lt;code&gt;dns/nsd&lt;/code&gt;), bind sert toujours pour le cache,récursion et mes zones en local, mais je vais certainement le remplacer par un &lt;a href=&#34;http://cr.yp.to/djbdns.html&#34;&gt;djbdns&lt;/a&gt; ou un &lt;a href=&#34;http://www.thekelleys.org.uk/dnsmasq/doc.html&#34;&gt;dnsmasq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le script rc de nsd sur FreeBSD &lt;code&gt;/usr/local/etc/rc.d/nsd&lt;/code&gt; est pas terrible, utilisez plutôt &lt;code&gt;nsdc&lt;/code&gt; ou attendez que &lt;a href=&#34;http://www.freebsd.org/cgi/query-pr.cgi?pr=152331&#34;&gt;mon patch&lt;/a&gt; soit accepté :-)&lt;/p&gt;</description>
		</item>
		<item>
			<title>Ssmtp pour remplacer sendmail</title>
			<link>http://blog.philpep.org/post/Ssmtp-pour-remplacer-sendmail</link>
			<guid>http://blog.philpep.org/post/Ssmtp-pour-remplacer-sendmail</guid>
			<pubDate>Mon, 04 Jan 2010 23:10:53 GMT</pubDate>
			<description>&lt;p&gt;Sur mon serveur FreeBSD j&#39;ai 4 &lt;a href=&#34;http://en.wikipedia.org/wiki/FreeBSD_jail&#34;&gt;jails&lt;/a&gt; et par défaut le système envoie régulièrement des &lt;code&gt;security run output&lt;/code&gt; à &lt;code&gt;root@localhost&lt;/code&gt; pour l&#39;informer de ce qu&#39;il se passe sur le système (nouveau fichiers etc). Tout ça c&#39;est très bien sauf que un hote et 4 jails ça fait 5 compte mail à visiter, c&#39;est pas trop convi et en plus on a pas envie de faire tourner sendmail juste pour ça.&lt;/p&gt;
&lt;p&gt;J&#39;ai donc décidé d&#39;utiliser un MTA très simple appelé (devinez comment) : &lt;code&gt;Simple smtp agent&lt;/code&gt;. Chaque mail envoyé depuis la machine (en appelant sendmail) partira vers un serveur smtp de mon choix, ainsi je récupère tous les mails sur mon compte mail usuel.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;# cd /usr/ports/mail/ssmtp
# make install
Information for ssmtp-2.62.3:
Install notice:
sSMTP has been installed successfully.
To replace sendmail with ssmtp type &amp;quot;make replace&amp;quot;
# make replace
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ensuite j&#39;ai crée mon &lt;code&gt;/usr/local/etc/ssmtp/ssmtp.conf&lt;/code&gt; : &lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;c1&#34;&gt;# Serveur de mail à contacter pour l&amp;#39;envoi + le port&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# par defaut c&amp;#39;est le port 25&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;mailhub&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mail&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;philpep&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org:578&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# Domaine d&amp;#39;où semble venir le mail&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;rewriteDomain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;philpep&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# Domaine à donner pendant le HELO&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# À accorder avec le reverse DNS de votre machine&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# vu depuis le serveur de mail.&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shen&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;philpep&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Arrangez vous pour que le serveur de mail accepte de vous relayer, moi c&#39;est le cas parce que je suis en local et mon postfix relaie ce qui vient du réseau local. Mais si ce n&#39;est pas le cas (genre vous utilisez le serveur mail de votre fournisseur de mail), on peut configurer l&#39;authentification SMTP, SSL/TLS et tout le reste.&lt;/p&gt;
&lt;p&gt;Ensuite désactivez sendmail dans &lt;code&gt;/etc/rc.conf&lt;/code&gt; puisqu&#39;il ne sert plus :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;sendmail_submit_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;quot;NO&amp;quot;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;sendmail_outbound_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;quot;NO&amp;quot;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;sendmail_msp_queue_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;quot;NO&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Pour tester l&#39;envoi :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;nv&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dmesg&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mail&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;quot;works ?&amp;quot;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lapin&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;@barreenfer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;vg&#34;&gt;$?&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;ne&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;]];&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;man&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ssmtp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fi&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;EDIT 5/01/10 17:15 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;client smtp -&amp;gt; MTA&lt;/li&gt;
&lt;/ul&gt;</description>
		</item>
		<item>
			<title>fail2ban sshd et pf</title>
			<link>http://blog.philpep.org/post/fail2ban-sshd-et-pf</link>
			<guid>http://blog.philpep.org/post/fail2ban-sshd-et-pf</guid>
			<pubDate>Wed, 18 Nov 2009 18:28:10 GMT</pubDate>
			<description>&lt;p&gt;Mon &lt;code&gt;/var/log/auth.log&lt;/code&gt; est blindé de choses du genre :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;Nov 18 17:56:27 lenine sshd[49297]: Invalid user marcio from 24.17.93.35
Nov 18 17:56:27 lenine sshd[49297]: error: PAM: authentication error for illegal user marcio from 24.17.93.35
Nov 18 17:56:27 lenine sshd[49297]: Failed keyboard-interactive/pam for invalid user marcio from 24.17.93.35 port 63330 ssh2
Nov 18 17:58:05 lenine sshd[49312]: Address 92.126.194.108 maps to alfa.navsystem.ru, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Nov 18 17:58:05 lenine sshd[49312]: Invalid user marcio from 92.126.194.108
Nov 18 17:58:05 lenine sshd[49312]: error: PAM: authentication error for illegal user marcio from 92.126.194.108
Nov 18 17:58:05 lenine sshd[49312]: Failed keyboard-interactive/pam for invalid user marcio from 92.126.194.108 port 38920 ssh2
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;C&#39;est une attaque classique par dictionnaire mais distribuée. Ma seule défense pour l&#39;instant c&#39;est mon parre feu qui &lt;a href=&#34;http://blog.philpep.org/post/Regles-pf-pour-bloquer-le-ssh-bruteforcing-et-le-deni-de-service&#34;&gt;bloquait les bruteforces un peu trop rapides&lt;/a&gt;. Alors même si pf en filtre quand même pas mal, les petits malins tournent sur plusieurs IPs pour faire un bruteforce moins visible.&lt;/p&gt;
&lt;p&gt;J&#39;ai donc décidé de bloquer le reste avec &lt;a href=&#34;http://www.fail2ban.org&#34;&gt;fail2ban&lt;/a&gt;, la conf par défaut n&#39;est pas adapté à ma config, j&#39;ai des besoin précis sur le filtre sshd et il faut que ça marche avec &lt;a href=&#34;http://blog.philpep.org/tag/Packet%20Filter&#34;&gt;pf&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;L&#39;install est toujours aussi simple :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;# make -C /usr/ports/security/py-fail2ban install
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;La conf est dans &lt;code&gt;/usr/local/etc/fail2ban&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En premier lieu, créer l&#39;action pour pf : &lt;/p&gt;
&lt;p&gt;&lt;code&gt;action.d/pf.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;[Definition]
actionstart = 
actionstop = 
actioncheck = 
actionban = pfctl -t flood -T add &amp;lt;ip&amp;gt;
actionunban = pfctl -t flood -T del &amp;lt;ip&amp;gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Comme vous voyez on va largement utiliser les tables pf, il y a donc quelques modifs à faire dans votre &lt;code&gt;/etc/pf.conf&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;c&#34;&gt;# La table&lt;/span&gt;
table &amp;lt;flood&amp;gt; persist
&lt;span class=&#34;c&#34;&gt;# On laisse passer tout sauf les IP de &amp;lt;flood&amp;gt;&lt;/span&gt;
pass in inet proto tcp from ! &amp;lt;flood&amp;gt; to &lt;span class=&#34;nv&#34;&gt;$ext_if&lt;/span&gt; port ssh
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ensuite on modifie le filtre &lt;code&gt;filter.d/sshd.conf&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;[INCLUDES]

before = common.conf

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from &amp;lt;HOST&amp;gt;\s*$
               ^%(__prefix_line)sAddress &amp;lt;HOST&amp;gt; .* POSSIBLE BREAK-IN ATTEMPT\s*$

ignoreregex =
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Et on active le filtre dans &lt;code&gt;jail.conf&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;[ssh-pf]
enabled  = true
filter   = sshd
action   = pf
          sendmail-whois[name=SSH, dest=root@localhost, sender=noreply@localhost]
logpath  = /var/log/auth.log
maxretry = 1
bantime  = 86400
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ils sont bannis pour 1 jours (de quoi leur faire perdre beaucoup de temps). En prime pour chaque ban vous recevez le &lt;code&gt;whois&lt;/code&gt; de l&#39;IP concernée par mail.&lt;/p&gt;
&lt;p&gt;Finalement on oublie pas de lancer fail2ban :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;# echo fail2ban_enable=\&amp;quot;YES\&amp;quot; &amp;gt;&amp;gt; /etc/rc.conf
# /usr/local/etc/rc.d/fail2ban start
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ce qui pourrait être intéressant c&#39;est de choper automatiquement les adresses mail &lt;code&gt;Abuse&lt;/code&gt; du whois pour envoyer un mail au FAI du méchant pour lui dire tout ce qu&#39;on pense de son client. Mais bon, on ne va pas non plus faire de délation à la HADOPI.&lt;/p&gt;</description>
		</item>
		<item>
			<title>Spamd</title>
			<link>http://blog.philpep.org/post/Spamd</link>
			<guid>http://blog.philpep.org/post/Spamd</guid>
			<pubDate>Sat, 31 Oct 2009 13:50:31 GMT</pubDate>
			<description>&lt;p&gt;Spamd ou comment bloquer les spams sans discriminer à priori des adresses IPs et sans remettre en cause la neutralité du réseau.&lt;/p&gt;
&lt;p&gt;J&#39;ai écrit une &lt;a href=&#34;http://wiki.bender-labs.org/bsd/spamd&#34;&gt;page sur spamd&lt;/a&gt; sur le principe de fonctionnement et sa mise en place sur OpenBSD.&lt;/p&gt;
&lt;p&gt;Ce tout nouveau wiki cogéré par &lt;a href=&#34;http://www.philpep.org&#34;&gt;philpep.org&lt;/a&gt; et &lt;a href=&#34;http://www.bender-labs.org&#34;&gt;bender-labs.org&lt;/a&gt; est plus adapté que mon blog pour ce genre de choses car vous pouvez aussi apporter votre contribution pour faire part de votre expérience (ne serait-ce que pour corriger d&#39;éventuelles fautes d&#39;orthographes et de grammaires :-) ).&lt;/p&gt;</description>
		</item>
		<item>
			<title>NAS, un serveur audio</title>
			<link>http://blog.philpep.org/post/NAS,-un-serveur-audio</link>
			<guid>http://blog.philpep.org/post/NAS,-un-serveur-audio</guid>
			<pubDate>Fri, 11 Sep 2009 16:56:42 GMT</pubDate>
			<description>&lt;p&gt;Je viens de réaliser une petit prouesse qui vaut bien un billet.&lt;/p&gt;
&lt;p&gt;La situation : j&#39;ai une super sono qui ne marche malheureusement qu&#39;avec une entrée optique. Et la seule machine qui a une sortie optique chez moi c&#39;est la machine qui sur laquelle vous êtes connectée en ce moment, mon serveur. Je n&#39;ai pas d&#39;écrans sur ce serveur et je n&#39;ai pas envie d&#39;installer X.org et tout ce qui vient avec. Par contre j&#39;ai un portable avec une belle interface graphique, seulement j&#39;ai un son tout pourri là dessus.&lt;/p&gt;
&lt;p&gt;L&#39;idée est donc de faire jouer le son par le serveur et d&#39;afficher l&#39;image sur le portable. Ce que X.org permet par son architecture client/serveur le serveur X (mon portable) pourrait afficher l&#39;image que lui envoie le client (mplayer sur mon serveur) et le son serait joué par le client (donc sur le serveur ici). Sauf qu&#39;une image, et à plus forte raison une serie d&#39;image comme un film, ça représente beaucoup de donnée à transmettre sur le réseau, et même sur le reseau local il y a des latences qui ne sont pas négligeables.&lt;/p&gt;
&lt;p&gt;Donc je me suis dit que faire l&#39;inverse doit être plus rapide. C&#39;est à dire mplayer sur mon portable qui envoie les données audio par le réseau au serveur. Et c&#39;est possible avec NAS (Network Audio System). Voilà comment faire :&lt;/p&gt;
&lt;p&gt;Installer NAS sur le serveur (ici sur FreeBSD)&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;make -C /usr/ports/audio/nas install clean
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;La configuration par defaut marche très bien. On peut ensuite lancer NAS en tand qu&#39;utilisateur normal :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;err&#34;&gt;nasd&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;:0&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;-aa&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;-b&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;-config&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;/usr/local/etc/nasd.conf.eg&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;L&#39;option :X dis à nasd d&#39;écouter sur le port 8000+X (je sais c&#39;est vraiment pas convi mais bon c&#39;est comme ça).&lt;/p&gt;
&lt;p&gt;Et voilà pour nous (8000 + 0) c&#39;est sur le port 8000 filtrez le comme vous voulez avec votre parre-feu.&lt;/p&gt;
&lt;p&gt;Ensuite sur le client (mon portable) il suffit d&#39;indiquer à mplayer l&#39;host et le port du serveur nas comme expliqué dans la page de man. Puis lancez votre film/musique. L&#39;host peut être une IP ou un nom de domaine peu importe.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AUDIOSERVER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tcp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;host:8000&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;mplayer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ao&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nas&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fichier&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;avi&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description>
		</item>
		<item>
			<title>Un petit lecteur audio bien pratique</title>
			<link>http://blog.philpep.org/post/Un-petit-lecteur-audio-bien-pratique</link>
			<guid>http://blog.philpep.org/post/Un-petit-lecteur-audio-bien-pratique</guid>
			<pubDate>Sat, 05 Sep 2009 21:41:39 GMT</pubDate>
			<description>&lt;p&gt;Marre des lecteurs audio qui mettent 4h a charger une interface graphique peu intuitive qui offre pleins de fonctionnalités toute les plus inutiles les une des autres. Revenez donc aux principes d&#39;UNIX et installez ce petit logiciel qui ne fait que ce qu&#39;on lui demande : &lt;a href=&#34;http://moc.daper.net/&#34;&gt;http://moc.daper.net/&lt;/a&gt; (Music On Console). Installez le comme a votre habitude puis lancez le avec cette commande :
    mocp&lt;/p&gt;
&lt;p&gt;Le raccourcis pour avoir l&#39;aide (donc les autres raccourcis claviers) est ?&lt;/p&gt;
&lt;p&gt;Je vous laisse découvrir ce soft bien pratique qui gère aussi les playlist. De plus une fois qu&#39;il est lancé vous pouvez le quitter avec q , quittez votre session shell et la musique continue o/ (Le processus est détaché de la session shell courante). Pour vraiment quitter moc il faut faire Q.&lt;/p&gt;</description>
		</item>
		<item>
			<title>Que font vos processus ? La commande strace</title>
			<link>http://blog.philpep.org/post/Que-font-vos-processus---La-commande-strace</link>
			<guid>http://blog.philpep.org/post/Que-font-vos-processus---La-commande-strace</guid>
			<pubDate>Sat, 05 Sep 2009 20:27:35 GMT</pubDate>
			<description>&lt;p&gt;J&#39;ai découvert une commande ulta utile, que ce soit pour la sécurité ou pour débuger : la commande strace.&lt;/p&gt;
&lt;p&gt;Comme vous le savez, lorsque vous codez en C ou en tout autre langage le code est traduit en langage machine mais il peut aussi faire appel aux fameux &#34;appels systèmes&#34; gérés par l&#39;OS (comme par exemple cloner des processus, accéder à un fichier, afficher quelque chose à l&#39;écran...). Mais comment avoir la trace de toutes ces informations ? La commande strace fait tout cela.&lt;/p&gt;
&lt;p&gt;Sur *BSD, vous pouvez utiliser de manière analogue &lt;a href=&#34;http://www.freebsd.org/cgi/man.cgi?query=truss&#34;&gt;truss(1)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans la pratique, strace permet de voir ce que fait un processus, on y accède en lui donnant le PID du processus (qu&#39;on peut avoir avec la commande ps). Par exemple si je veux savoir ce que fait mon shell :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;% ps
3982 pts/3    00:00:00 zsh
&lt;span class=&#34;c&#34;&gt;# Une fois qu&amp;#39;on a le pid on lance strace (dans un autre shell)&lt;/span&gt;
% strace -p3982
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Regardons un peu ce qu&#39;il se passe pour un simple &lt;em&gt;ls&lt;/em&gt; :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;c&#34;&gt;# Lecture d&amp;#39;un l au clavier&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;l&amp;quot;&lt;/span&gt;..., 1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1
&lt;span class=&#34;c&#34;&gt;# écriture du l a l&amp;#39;écran (celui qu&amp;#39;il vient de lire&lt;/span&gt;
write&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;l&amp;quot;&lt;/span&gt;..., 1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                    &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1
&lt;span class=&#34;c&#34;&gt;# Lecture du s&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;s&amp;quot;&lt;/span&gt;..., 1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1
&lt;span class=&#34;c&#34;&gt;# ecriture du s&lt;/span&gt;
write&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;\10ls&amp;quot;&lt;/span&gt;..., 3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 3
&lt;span class=&#34;c&#34;&gt;# lecture de la touche enter (en C)&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&#34;s2&#34;&gt;&amp;quot;&lt;/span&gt;..., 1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                    &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1
write&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&#34;s2&#34;&gt;&amp;quot;&lt;/span&gt;..., 2&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                 &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 2
alarm&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;0&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                                &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, SNDCTL_TMR_STOP or TCSETSW, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;B38400 opost isig icanon &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; ...&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
&lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;NULL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                              &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1229629587
pipe&lt;span class=&#34;o&#34;&gt;([&lt;/span&gt;3, 4&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt;                            &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
gettimeofday&lt;span class=&#34;o&#34;&gt;({&lt;/span&gt;1229629587, 864550&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;0, 0&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
&lt;span class=&#34;c&#34;&gt;# clone ----&amp;gt; un nouveau processus est crée en fait fork() execute l&amp;#39;appel système clone, le nouveau pid est 4024&lt;/span&gt;
clone&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;child_stack&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0, &lt;span class=&#34;nv&#34;&gt;flags&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, &lt;span class=&#34;nv&#34;&gt;child_tidptr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0xb7ddd998&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 4024
close&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;4&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                                &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3, &lt;span class=&#34;s2&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;..., 1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                       &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
close&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                                &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
rt_sigprocmask&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;SIG_BLOCK, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;CHLD&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;CHLD&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, 8&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
rt_sigsuspend&lt;span class=&#34;o&#34;&gt;([])&lt;/span&gt;                       &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; ? ERESTARTNOHAND &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;To be restarted&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
--- SIGCHLD &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;Child exited&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; @ 0 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;0&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; ---
rt_sigprocmask&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;SIG_BLOCK, ~&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;RTMIN RT_1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;CHLD&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, 8&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
rt_sigprocmask&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;SIG_SETMASK, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;CHLD&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, ~&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;KILL STOP RTMIN RT_1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, 8&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
&lt;span class=&#34;c&#34;&gt;# La fin du processus fils (4024)&lt;/span&gt;
wait4&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;-1, &lt;span class=&#34;o&#34;&gt;[{&lt;/span&gt;WIFEXITED&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;s&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; WEXITSTATUS&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;s&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; 0&lt;span class=&#34;o&#34;&gt;}]&lt;/span&gt;, WNOHANG|WSTOPPED, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ru_utime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;={&lt;/span&gt;0, 0&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;, &lt;span class=&#34;nv&#34;&gt;ru_stime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;={&lt;/span&gt;0, 0&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;, ...&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 4024
gettimeofday&lt;span class=&#34;o&#34;&gt;({&lt;/span&gt;1229629587, 867012&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;0, 0&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, SNDCTL_TMR_TIMEBASE or TCGETS, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;B38400 opost isig icanon &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; ...&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, TIOCGPGRP, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;4024&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt;            &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, TIOCSPGRP, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;3982&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt;            &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, TIOCGWINSZ, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ws_row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;38, &lt;span class=&#34;nv&#34;&gt;ws_col&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;127, &lt;span class=&#34;nv&#34;&gt;ws_xpixel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1270, &lt;span class=&#34;nv&#34;&gt;ws_ypixel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;758&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
wait4&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;-1, 0xbfe3f48c, WNOHANG|WSTOPPED, 0xbfe3f434&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; -1 ECHILD &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;No child processes&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# Il se demande quelle heure est il :-)&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;NULL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                              &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1229629587
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, TIOCSPGRP, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;3982&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt;            &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
fstat64&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;0, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;st_mode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;S_IFCHR|0620, &lt;span class=&#34;nv&#34;&gt;st_rdev&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;makedev&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;136, 3&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;, ...&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
fcntl64&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;0, F_GETFL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0x2 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;flags O_RDWR&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# Il se demande sous quel UID il tourne&lt;/span&gt;
getuid32&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt;                              &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1000
&lt;span class=&#34;c&#34;&gt;# Il reécris le prompt&lt;/span&gt;
write&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1, &lt;span class=&#34;s2&#34;&gt;&amp;quot;\33]0;phil@philpep.ath.cx ~\7&amp;quot;&lt;/span&gt;..., 26&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 26
rt_sigprocmask&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;SIG_BLOCK, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;CHLD&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;CHLD&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, 8&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
&lt;span class=&#34;c&#34;&gt;# Il se redemande quelle heure il est&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;NULL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                              &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1229629587
rt_sigaction&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;SIGINT, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;0x80a8fd0, &lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;, SA_INTERRUPT&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;, NULL, 8&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
write&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;\33[1m\33[3m%\33[23m\33[1m\33[0m           &amp;quot;&lt;/span&gt;..., 149&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 149
&lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;NULL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;                              &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1229629587
&lt;span class=&#34;c&#34;&gt;# Il ouvre le fichier /etc/localtime&lt;/span&gt;
stat64&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;/etc/localtime&amp;quot;&lt;/span&gt;, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;st_mode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;S_IFREG|0644, &lt;span class=&#34;nv&#34;&gt;st_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2945, ...&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, FIONREAD, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;0&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt;                &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, TIOCSPGRP, &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;3982&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt;            &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
ioctl&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, SNDCTL_TMR_STOP or TCSETSW, &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;B38400 opost isig -icanon -echo ...&lt;span class=&#34;o&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0
write&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&#34;s2&#34;&gt;\33[0m\33[23m\33[24m\33[J\33[01;30m[\33[01;3&amp;quot;&lt;/span&gt;..., 105&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 105
write&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, &lt;span class=&#34;s2&#34;&gt;&amp;quot;\33[K\33[81C  \33[01;30m18/12/08 20:46:&amp;quot;&lt;/span&gt;..., 46&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 46
&lt;span class=&#34;c&#34;&gt;# Il attend une nouvelle saisie&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;10, 
Process 3982 detached
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;(Là j&#39;ai viré pas mal de lignes répétitives sur les signaux reçus par le processus)&lt;/p&gt;
&lt;p&gt;Bon, vous voyez qu&#39;il y a un tas d&#39;appel système, et encore il a fait un fork(), c&#39;est à dire qu&#39;un nouveau processus a été crée... Pour suivre aussi les nouveaux processus il suffit d&#39;un :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;% strace -f -pPID
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Attention, le log peut être très long, donc je vous conseille d&#39;envoyer tout ça dans un fichier, pour donner un ordre d&#39;idée, un simple chargement d&#39;une page dans firefox donne plus de 59000 appels systèmes.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;% strace -f -pPID &amp;gt; strace.log 2&amp;gt;&amp;amp;1
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Avec ces informations vous pouvez faire du debugage (je me suis rendu compte que mon shell ne fermais pas ses fichiers quand il ne trouvais pas de complétion possible. C&#39;est aussi grâce a ce genres de vérification qu&#39;on s&#39;est rendu compte que le charmant logiciel propriétaire skype ouvrait le fichier bookmaks.html (les favoris de firefox) et les envoyais à la maison mère... C&#39;est une façon rapide de prouver qu&#39;un logiciel propriétaire est malveillant.&lt;/p&gt;</description>
		</item>
	</channel>
</rss>

