<?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>Linux Attitude&#187; Commande</title>
	<atom:link href="http://linux-attitude.fr/tag/commande/feed" rel="self" type="application/rss+xml" />
	<link>http://linux-attitude.fr</link>
	<description>Le libre est un état d&#039;esprit</description>
	<lastBuildDate>Fri, 17 Feb 2012 08:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Verrou virtuel</title>
		<link>http://linux-attitude.fr/post/verrou-virtuel?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=verrou-virtuel</link>
		<comments>http://linux-attitude.fr/post/verrou-virtuel#comments</comments>
		<pubDate>Mon, 06 Feb 2012 08:01:04 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Commande]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[planete-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1465</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: vlock; vlock -ns Vous avez vu apparaître dans l'article sur tmux, un petit outil pour verrouiller le terminal, il s'appelle vlock. Son unique fonctionnalité est le locker un terminal et de demander un mot de passe pour être débloqué. Mine de rien ça lui fait quand même deux cas d'usage&#160;: bloquer l'accès [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: vlock; vlock -ns</p>


<p>Vous avez vu apparaître dans l'article sur <a href="http://linux-attitude.fr/post/configuration-de-tmux">tmux</a>, un petit outil pour verrouiller le terminal, il s'appelle <a href="http://cthulhu.c3d2.de/~toidinamai/vlock/vlock.html" hreflang="en">vlock</a>.</p>


<p>Son unique fonctionnalité est le locker un terminal et de demander un mot de passe pour être débloqué.</p>


<p>Mine de rien ça lui fait quand même deux cas d'usage&nbsp;:</p>
<ul>
<li>bloquer l'accès physique à une machine</li>
<li>bloquer l'accès virtuel à un shell</li>
</ul>

<h3>Virtuel</h3>

<p>Avec la commande suivante&nbsp;:</p>
<pre>
$ vlock
</pre>


<p>Vous bloquez votre terminal en cours, et seul un mot de passe peut le débloquer. C'est utile essentiellement lorsque vous êtes connecté en ssh à distance sur une machine.</p>


<h3>Physique</h3>


<p>L'option -a permet de locker toutes les consoles locales (ctrl-alt-Fx, ou alt-Fx), en pratique il locke la console en cours et empêche d'en changer. Il faut donc déjà être sur une console locale.</p>


<p>Si vous êtes sur X, vous êtes aussi sur une console locale (remarquez le ctrl-F7 pour y aller). Mais le shell qui va lancer votre commande ne l'est pas, il est dans le terminal virtuel de xterm, rxvt, konsole et consorts. Pour locker toutes les consoles, il faut donc utiliser l'option -n qui ouvre une nouvelle console (<a href="http://linux-attitude.fr/post/terminal-linux">avec openvt</a>) avant de continuer avec l'option -a.</p>


<p>Enfin notez que l'utilisateur local a en général accès aux <a href="http://linux-attitude.fr/post/les-mains-dans-la-noyau">magic keys</a>, et une de ces magic keys sert justement à tuer le processus en avant plan (alt-sysrq-k), par exemple pour garantir qu'il n'y a pas de keylogger. Si vous ne voulez pas vous faire tuer votre session par cette combinaison de touche vous pouvez utiliser l'option -s. C'est là qu'on voit que cette combinaison nommé SAK n'est pas si sécurisée que ça puisqu'elle peut être désactivée...</p>


<p>Donc je résume&nbsp;:</p>
<pre>
# en tant qu'utilisateur normal et seulement depuis une console texte
$ vlock -a
# en tant que root
$ vlock -sn
</pre>


<h3>Quand le lancer</h3>


<p>Et c'est là qu'est la difficulté, en toute logique le lancement doit se faire par le processus qui dispose du terminal à un instant donné, surtout dans le cas de blocage du terminal virtuel. La bonne solution est de le lancer après un certain temps d'inactivité, et seule l'application peut savoir quand le lancer. C'est donc à vous de trouver les settings spécifiques à l'application pour le faire.</p>


<p>Mon article précédent indique comment faire pour <a href="http://linux-attitude.fr/post/screen-killer">tmux</a>, malheureusement je n'ai pas trouvé de solution pour bash qui ne propose que la variable TMOUT qui termine complètement le shell.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/login-dans-un-chroot' rel='bookmark' title='Permanent Link: Login dans un chroot'>Login dans un chroot</a></li>
<li><a href='http://linux-attitude.fr/post/poisson-de-janvier' rel='bookmark' title='Permanent Link: Poisson de janvier'>Poisson de janvier</a></li>
<li><a href='http://linux-attitude.fr/post/clavier-virtuel' rel='bookmark' title='Permanent Link: Clavier virtuel'>Clavier virtuel</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/commande" title="Commande" rel="tag">Commande</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/planete-libre" title="planete-libre" rel="tag">planete-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/verrou-virtuel/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Configuration de tmux</title>
		<link>http://linux-attitude.fr/post/configuration-de-tmux?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configuration-de-tmux</link>
		<comments>http://linux-attitude.fr/post/configuration-de-tmux#comments</comments>
		<pubDate>Wed, 01 Feb 2012 15:32:23 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Commande]]></category>
		<category><![CDATA[planete-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1429</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: tmux Comme disait un illustre au grand cœur, "Compromis, chose due !" (orthographe approximative). Voici donc mon fichier de configuration détaillé de tmux, à mettre dans ~/.tmux.conf ou /etc/tmux.conf au choix. Je n'ai pas changé beaucoup de raccourcis car je tiens à m'habituer autant que possible aux valeurs par défaut qui vont [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: tmux</p>


<p>Comme disait un illustre au grand cœur, "Compromis, chose due !" (orthographe approximative).
Voici donc mon fichier de configuration détaillé de tmux, à mettre dans ~/.tmux.conf ou /etc/tmux.conf au choix. Je n'ai pas changé beaucoup de raccourcis car je tiens à m'habituer autant que possible aux valeurs par défaut qui vont se retrouver sur mes nouveaux serveurs.</p>


<p>J'en profite pour ajouter un raccourci que j'ai oublié la dernière fois&nbsp;:</p>
<ul>
<li>ctrl-b D&nbsp;: pour détacher un tmux resté ouvert à distance</li>
</ul>
<pre>
# Pour les nostalgiques de screen
# comme les raccourcis ne sont pas les mêmes, j'évite
#set -g prefix C-a
#unbind-key C-b
#bind-key a send-prefix

# même hack que sur screen lorsqu'on veut profiter du scroll du terminal (xterm ...)
set -g terminal-overrides 'xterm*:smcup@:rmcup@'

# c'est un minimum (defaut 2000)
set-option -g history-limit 100000

# lorsque j'ai encore un tmux ailleurs seule
# sa fenetre active réduit la taille de ma fenetre locale
setw -g aggressive-resize on

# locker la session après inactivité (en s)
set -g lock-after-time 3600
# pour que le lock marche sous linux (apt-get install vlock)
set -g lock-command vlock

# il faut choisir un derivé de screen, 256 couleurs c'est bien !
set -g default-terminal &quot;screen-256color&quot;

# pour ceux qui n'ont pas laché la souris
set -g mouse-select-pane on
setw -g mode-mouse on

# ca peut etre utile ...
set -g status-utf8 on
setw -g utf8 on

# Pour etre alerté sur un changement dans une autre fenêtre
setw -g monitor-activity on
#set -g visual-activity on
#set -g visual-bell on

# numéroter a partir de 1, pratique pour l'accès direct
set -g base-index 1

# repercuter le contenu de la fenetre dans la barre de titre
# reference des string : man tmux (status-left)
set -g set-titles on
set -g set-titles-string '#H #W #T' # host window command


#########
# theme #
#########
# exprimez votre créativité ici !
# pour les string : man tmux (status-left)

# barre un peu plus discrete
set -g status-bg default
set -g status-fg green
setw -g window-status-current-bg default
setw -g window-status-current-fg white
setw -g window-status-alert-attr default
setw -g window-status-alert-fg yellow

set -g pane-active-border-fg green
set -g pane-active-border-bg black
set -g pane-border-fg white
set -g pane-border-bg black

set -g message-fg black
set -g message-bg green

# exemples de barre d'état 
#set -g status-left '#[fg=red]#H#[fg=green]:#[fg=white]#S #[fg=green]][#[default]'
#set -g status-right '#[fg=green]][#[fg=white] #T #[fg=green]][ #[fg=blue]%Y-%m-%d #[fg=white]%H:%M#[default]'

#set -g status-left '#[fg=red]#H#[fg=green]:#[fg=white]#S #[fg=green]][#[default]'
#set -g status-right '#[fg=green]][ #[fg=blue]%Y-%m-%d #[fg=white]%H:%M#[default]'

#set -g status-left '#[fg=green](#S) #(whoami)@#H#[default]'
#set -g status-right '#[fg=yellow]#(cut -d &quot; &quot; -f 1-3 /proc/loadavg)#[default] #[fg=blue]%H:%M#[default]'

#set -g status-right &quot;#[fg=yellow]#(uptime | cut -d ',' -f 2-)&quot;
</pre>


<p>Comme pour le <a href="http://linux-attitude.fr/post/Bashrc-collaboratif">bashrc collaboratif</a>, je vous propose de poster en commentaires vos personnalisations, je les ajouterai.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/screen-killer' rel='bookmark' title='Permanent Link: Screen killer'>Screen killer</a></li>
<li><a href='http://linux-attitude.fr/post/geek-et-partage' rel='bookmark' title='Permanent Link: Geek et partage'>Geek et partage</a></li>
<li><a href='http://linux-attitude.fr/post/prompt-string' rel='bookmark' title='Permanent Link: Prompt String'>Prompt String</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/commande" title="Commande" rel="tag">Commande</a>, <a href="http://linux-attitude.fr/tag/planete-libre" title="planete-libre" rel="tag">planete-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/configuration-de-tmux/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Screen killer</title>
		<link>http://linux-attitude.fr/post/screen-killer?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=screen-killer</link>
		<comments>http://linux-attitude.fr/post/screen-killer#comments</comments>
		<pubDate>Mon, 23 Jan 2012 08:00:52 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Commande]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1320</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: tmux Aujourd'hui tout le monde connaît et utilise screen. Miracle de la technologie, il permet de survivre aux déconnexions, de lancer des commandes longues sans avoir peur, de faire passer tous ses shells dans une seule connexion et on le trouve souvent associé à l'indémodable irssi. Comme vous le savez peut-être screen [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: tmux</p>


<p>Aujourd'hui tout le monde connaît et utilise screen. Miracle de la technologie, il permet de survivre aux déconnexions, de lancer des commandes longues sans avoir peur, de faire passer tous ses shells dans une seule connexion et on le trouve souvent associé à l'indémodable irssi.</p>


<p>Comme vous le savez peut-être screen n'est plus maintenu. Ayant un code un difficile à lire et à maintenir, des développeurs ont choisi lui faire un concurrent plutôt que de le reprendre.</p>


<p>Ce concurrent se nomme tmux. Il dispose de la plupart des fonctionnalités de screen et d'autres en plus. Comme vous le verrez, votre problème sera essentiellement de vous adapter aux nouveaux raccourcis. Pour le reste c'est tout bon.</p>


<p>Tmux dispose de presque toutes les fonctionnalités de screen sauf la communication par port série (rapport choucroute, toussa).</p>


<p>Commençons par le lancement&nbsp;:</p>
<pre>
# lancer un nouveau multiplexeur
$ screen 
$ tmux
# s'attacher à un multiplexeur existant 
$ screen -d -r
$ tmux attach
</pre>


<p>Les raccourcis&nbsp;:</p>
<ul>
<li>Nouvelle fenêtre
<ul>
<li>screen&nbsp;: ctrl-a ctrl-c</li>
<li>tmux&nbsp;: ctrl-b c</li>
</ul></li>
<li>Se détacher&nbsp;:
<ul>
<li>screen&nbsp;: ctrl-a d</li>
<li>tmux&nbsp;: ctrl-b d</li>
</ul></li>
<li>Passer à la fenêtre suivante
<ul>
<li>screen&nbsp;: ctrl-a &lt;espace&gt;</li>
<li>tmux&nbsp;: ctrl-b n</li>
</ul></li>
</ul>

<p>Je dois dire que ça y est je suis passé entièrement à tmux, le mélange ctrl-a ctrl-b entre screen et tmux commençait à être difficile. A propos d'adaptation, j'ai eu une seule difficulté c'est de m'habituer au nouveau scrollback. Il n'est pas possible de le faire à la souris, comme dans screen avec l'astuce du termcapinfo. Remarquez, c'est plus propre car du coup il n'y a pas de mélange des bufffer de scrollback entre les différents terminaux. Donc la méthode propre dans tmux c'est <strong>ctrl-b</strong> suivi de <strong>pgUp</strong> et là vous êtes en mode copy (qui permet entre autre le scrollback), vous pouvez alors naviguer avec <strong>pgUp</strong>, <strong>pgDown</strong> ou les touches directionnelles. Et pour Revenir au mode normal, <strong>Esc</strong> tout simplement.</p>



<p>Dans un prochain article nous verrons comment changer la <a href="http://linux-attitude.fr/post/configuration-de-tmux">configuration de tmux</a>, même si les valeurs par défaut sont plutôt bonnes.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/screen-et-irssi' rel='bookmark' title='Permanent Link: Screen et irssi'>Screen et irssi</a></li>
<li><a href='http://linux-attitude.fr/post/configuration-de-tmux' rel='bookmark' title='Permanent Link: Configuration de tmux'>Configuration de tmux</a></li>
<li><a href='http://linux-attitude.fr/post/geek-et-partage' rel='bookmark' title='Permanent Link: Geek et partage'>Geek et partage</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/commande" title="Commande" rel="tag">Commande</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/screen-killer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Root d&#8217;android</title>
		<link>http://linux-attitude.fr/post/root-android?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=root-android</link>
		<comments>http://linux-attitude.fr/post/root-android#comments</comments>
		<pubDate>Mon, 02 May 2011 16:14:05 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Commande]]></category>
		<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1335</guid>
		<description><![CDATA[Correction &#160;: j'ai modifié cet article car le système pour rendre le rootage permanent ne fonctionnait pas&#160;! Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: adb shell Il y a peu je me suis offert un téléphone android. Devinez quoi ... c'est un linux (pas GNU pour une fois, plutôt un dalvik/linux). Seule ombre au programme, je ne suis pas [...]]]></description>
			<content:encoded><![CDATA[<p><strong> Correction </strong>&nbsp;: j'ai modifié cet article car le système pour rendre le rootage permanent ne fonctionnait pas&nbsp;!</p>


<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: adb shell</p>



<p>Il y a peu je me suis offert un téléphone android.
Devinez quoi ... c'est un linux (pas GNU pour une fois, plutôt un dalvik/linux).</p>


<p>Seule ombre au programme, je ne suis pas root dessus. C'est pas très fair play de la part du vendeur sachant que le téléphone m'appartient. Comment faire pour supprimer les applications installées par le fabriquant et qui me cassent les *** à se lancer sans me demander mon avis&nbsp;?</p>


<p>Ma première mission est donc de devenir root.</p>


<p>Les habitués des OS de bureau auront l'idée de toucher au bootloader pendant qu'il boote. Bonne idée, mais sur une telle machine le bootloader est assez sobre, et plutôt protégé, ne parlons pas du bios. J'ai donc ignoré cette technique pour passer à une méthode plus courantes pour les bidouilleurs de tout poil&nbsp;: exploiter une faille de sécurité.</p>


<p>C'est donc grâce aux failles de sécurité que je vais avoir le droit d'accéder au système de ma propre machine&nbsp;! Autrement dit, c'est parce que le fabriquant protège mal le système qu'il m'a vendu que mes droits de consommateur sont respectés ...</p>


<p><span id="more-1335"></span></p>


<h3>Les bases</h3>

<p>Passons aux bases du téléphone, c'est un linux, mais il ne faut pas s'attendre à avoir tous les outils en ligne de commande
auxquels vous êtes habitués. Pour obtenir un shell utilisateur simple (ça vous avez le droit)&nbsp;:</p>
<ul>
<li>installer le <a href="http://developer.android.com/sdk/index.html" hreflang="en">sdk android</a> (une simple extraction)</li>
<li>aller dans les paramètres / application / développement et activer le débogage USB</li>
<li>branchez le câble</li>
<li>sur le pc dans sdk/platform-tools lancez ./adb devices, votre téléphone doit être listé sinon il y a un problème</li>
<li>tapez ./adb shell et hop vous êtes sur votre téléphone</li>
</ul>

<p>Là on est sur un terrain presque connu&nbsp;: un shell, qui tourne avec l'utilisateur shell.
Il est limité, mais on s'y fait. Par contre l'arborescence est inhabituelle. Je vous laisse explorer ... Pour mémoire, voici les répertoires à la racine&nbsp;:</p>
<pre>
/acct        # accounting
/bin         # comme unix
/cache       # contenu temporaire
/config      # vide chez moi
/d           # debug
/data        # /var d'unix
/dev         # comme unix
/etc         # comme unix
/init        # comme unix
/init.rc     # comme unix
/misc        # vide chez moi
/mnt         # comme unix
/proc        # comme unix
/root        # comme unix
/sbin        # comme unix
/sdcard      # partition fat visible aux utilisateurs
/sys         # comme unix
/system      # partition readonly contenant le système android
/usbdisk     # vide chez moi
</pre>


<p>Les android étant personnalisés par le constructeur, votre version variera nécessairement.</p>


<h3>Les failles (pour passer root)</h3>

<p>Maintenant on veut passer de shell à root. Il est temps de passer du côté hacking de la force. Ceux qui se sentent l'âme d'un hacker expérimenté peuvent chercher eux-même les failles dans le système. Les autres vont tenter les 2 ou 3 failles connues avec les exploits associés&nbsp;:</p>
<ul>
<li>dépôt d'un fichier suid root exécutable, nommé su (il parait que ça marche sur certaines machines, je ne vois pas comment ...)</li>
<li>exploid</li>
<li>rageagainstthecage</li>
<li>psneuter</li>
</ul>

<p>Le binaire et les source de ces exploits sont <a href="http://linux-attitude.fr/public/Code/rootkit.tgz">disponibles ici</a>.</p>


<p>En général il s'agit de le mettre dans un répertoire inscriptible et permettant les exécutables puis de le lancer. Il semblerait que /data/local/tmp soit disponible un peu partout pour ça.</p>


<p>Dans mon cas (optimus 2X) c'est psneuter qui fonctionne. Pour les autres, dites moi ce qui marche chez vous, je n'ai pas assez d'argent pour tester tous les android :)</p>
<pre>
$ ./adb push psneuter /data/local/tmp
$ ./adb shell
$ chmod 555 /data/local/tmp/psneuter 
$ /data/local/tmp/psneuter 
</pre>


<p>On attend, on relance un adb shell et miracle on est root&nbsp;!</p>


<h3>Busybox</h3>


<p>Maintenant installons un environnement un peu plus user-friendly&nbsp;:</p>
<ul>
<li>télécharger <a href="http://benno.id.au/blog/2007/11/14/android-busybox" hreflang="en">busybox</a></li>
<li>installer busybox&nbsp;:</li>
</ul>
<pre>
$ ./adb push busybox /data/local/tmp
$ ./adb shell
$ chmod 555 /data/local/tmp/busybox
$ mkdir /data/busybox
$ /data/local/tmp/busybox --install
$ export PATH=/data/busybox:$PATH 
</pre>


<p>Et voila&nbsp;! Une vraie ligne de commande sur notre petite machine.
On peut maintenant découvrir l'os et faire joujou comme on veut.</p>



<h3>Rendons tout ça permanent</h3>


<p>N'ayant pas trouvé de su compilé qui marche sur mon android et ayant la flemme de compiler moi-même, j'ai fait avec les moyens du bord.
Ma méthode d'origine était de mettre en place un shell setuid. Malheureusement, le shell vérifie
que sont uid correspond à son euid et si ce n'est pas le cas il revient en arrière. J'ai été abusé
par le fait qu'il affiche tout de même un #. Ce comportement, naturel pour un script ne l'est pas nécessairement
pour un shell interactif mais c'est un fait.</p>


<p>J'ai donc fait avec les moyens fournis par busybox&nbsp;:</p>

<pre>
$ mount -o remount,rw /system
$ mkdir /system/bb       # /system/bin/su existe déjà
$ cp /data/busybox/su /system/bb
$ chmod 4550 /system/bb/su
$ echo 'root::0:' &gt; /etc/group # /etc est dans /system
$ echo 'root::0:0:root:/root:/system/bin/sh' &gt; /etc/passwd
$ passwd # si vous voulez un vrai mot de passe
$ mount -o remount,ro  //system # retour à la normale
</pre>


<p>Après le prochain reboot, pour devenir root (avec un mot de passe)&nbsp;:</p>
<pre>
$ ./adb shell
$ /system/bin/su
</pre>


<p><strong>Note</strong>&nbsp;: Revenir en arrière est l'affaire de quelques suppression (/data/busybox, /system/bin/su, /etc/passwd et /etc/group).
Vous n'avez donc rien fait de violent à votre téléphone, vous avez maitrisé ce que vous avez fait et c'est presque invisible.</p>


<p><strong>Sécurité</strong>&nbsp;: A tous ceux qui rootent leur android en passant par une application toute faite, savez-vous ce que fait cette
application dans votre dos&nbsp;? Ne fait-elle pas autre chose que vous faire passer root&nbsp;? Savez-vous qu'elle installe un binaire su
permettant à n'importe quelle application (et pas seulement SuperUser.apk) de passer root si elle connait l'existence de ce binaire ...</p>


<p>On me dit que lors de son premier lancement SuperUser.apk se met lui-même en setuid et enlève le setuid du binaire su.
Ce qui du coup vous retire le root avec adb.</p>


<p><strong>PS</strong>&nbsp;: Message personnel à Bob Morane, j'ai rien compris à ta suggestion, dans quelle situation y a-t-il des liens qui se chevauchent&nbsp;?</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/une-distribution-gnu-sur-android' rel='bookmark' title='Permanent Link: Une distribution GNU sur android'>Une distribution GNU sur android</a></li>
<li><a href='http://linux-attitude.fr/post/personnalisez-votre-android' rel='bookmark' title='Permanent Link: Personnalisez votre android'>Personnalisez votre android</a></li>
<li><a href='http://linux-attitude.fr/post/espionner-son-android' rel='bookmark' title='Permanent Link: Espionner son android'>Espionner son android</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/android-2" title="android" rel="tag">android</a>, <a href="http://linux-attitude.fr/tag/commande" title="Commande" rel="tag">Commande</a>, <a href="http://linux-attitude.fr/tag/systeme" title="Système" rel="tag">Système</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/root-android/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Exécution capitale</title>
		<link>http://linux-attitude.fr/post/execution-capitale?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=execution-capitale</link>
		<comments>http://linux-attitude.fr/post/execution-capitale#comments</comments>
		<pubDate>Mon, 28 Mar 2011 16:52:02 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Commande]]></category>
		<category><![CDATA[Curiosité]]></category>
		<category><![CDATA[Noyau]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1314</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: /proc/sys/fs/binfmt_misc/register Exécution Savez-vous qu'on peut rendre n'importe quel fichier exécutable sous linux&#160;? Bien sûr il suffit de faire un chmod +x, mais le noyau risque de vous envoyer balader si le fichier n'est pas réellement exécutable. Mais je parle ici de rendre exécutable n'importe quel fichier, un jar, un source en C, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: /proc/sys/fs/binfmt_misc/register</p>



<h3>Exécution</h3>


<p>Savez-vous qu'on peut rendre n'importe quel fichier exécutable sous linux&nbsp;? Bien sûr il suffit de faire un chmod +x, mais le noyau risque de vous envoyer balader si le fichier n'est pas réellement exécutable.</p>


<p>Mais je parle ici de rendre exécutable n'importe quel fichier, un jar, un source en C, un MP3 ...</p>


<p>Mais comment quoi que donc !?</p>


<p>Pour exécuter un fichier, le noyau lit les premiers octets du fichier et vérifie qu'ils correspondent à un format binaire (binfmt) connu.
Il existe un système pour ajouter des formats binaires à ceux déjà supportés dans le noyau (en gros les <a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format" hreflang="en">elf</a> et les scripts). Il s'agit du format misc.</p>


<p>Pour savoir si ce format est supporté chez vous, ce qui est très probable, lancez la commande&nbsp;:</p>
<pre>
$ cat /proc/sys/fs/binfmt_misc/status
</pre>


<p>S'il n'est pas supporté, il faut charger le module et monter le répertoire&nbsp;:</p>
<pre>
$ modprobe binfmt_misc
$ mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc 
</pre>


<p><span id="more-1314"></span></p>


<h3>C capital</h3>


<p>Maintenant supposons vous vouliez rendre les fichiers .c exécutables. Vous pouvez soit utiliser un de mes <a href="http://linux-attitude.fr/post/usrbingcc-bis">anciens</a> <a href="http://linux-attitude.fr/post/ecrire-un-script-en-c">articles</a> ... soit créer un petit script qui sera appelé à chaque exécution d'un .c&nbsp;:</p>
<pre>
#!/bin/sh
# /usr/local/bin/ccexec
gcc -Wall -o /tmp/cscript.$$ &quot;$1&quot; &amp;&amp; shift &amp;&amp; /tmp/cscript.$$ &quot;$@&quot;
ret=$? ; rm -f /tmp/cscript.$$ ; exit $ret
</pre>


<p>Et de faire en sorte qu'il soit réellement appelé&nbsp;:</p>
<pre>
$ echo ':cfile:E::c::/usr/local/bin/ccexec:' &gt; /proc/sys/fs/binfmt_misc/register
</pre>


<p>Hop un test&nbsp;:</p>
<pre>
#include &lt;stdio.h&gt;
// test.c
int main() {
  printf(&quot;Coucou\n&quot;);
  return 0;
}
</pre>


<p>Et on lance&nbsp;:</p>
<pre>
$ chmod +x test.c
$ ./test.c
&gt; Coucou
</pre>


<p>Yeah !!!</p>


<h3>G tout compris</h3>

<p>Maintenant, passons à l'exécution d'un gzip. Plutôt que de reconnaître le fichier à son extension, ce qui est franchement faible comme méthode nous allons vraiment détecter le type de fichier.</p>


<p>Allons voir la spécification, un fichier gzip se reconnait à ses 2 premiers octets qui doivent valoir 0x1f et 0x8b&nbsp;:</p>
<pre>
$ echo ':gzip:M::\x1f\x8b::/bin/gunzip:' &gt; /proc/sys/fs/binfmt_misc/register
</pre>


<p>Même méthode et ça marche. Notez qu'il est possible d'utiliser n'importe quel champs de bits grâce à une masque et une position de départ, mais seulement dans les 128 premiers octets du fichier.</p>


<p>Enfin, certaines distributions vont vous installer des choses un peu plus utiles comme l'exécution des jar avec java ou celle d'exécutable windows avec wine.</p>


<p>Et pour une spécification plus détaillée de ce qu'il lest possible de mettre dans la ligne d'enregistrement, direction <a href="http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/binfmt_misc.txt;hb=HEAD" hreflang="en">la documentation</a></p>


<p><strong>PS</strong>&nbsp;: pour supprimer l'entrée&nbsp;: echo -1 &gt; /proc/sys/fs/binfmt_misc/cfile</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/usrbingcc-bis' rel='bookmark' title='Permanent Link: #!/usr/bin/gcc (bis)'>#!/usr/bin/gcc (bis)</a></li>
<li><a href='http://linux-attitude.fr/post/changer-la-priorite-d-execution-des-processus' rel='bookmark' title='Permanent Link: Changer la priorité d&#8217;exécution des processus'>Changer la priorité d&#8217;exécution des processus</a></li>
<li><a href='http://linux-attitude.fr/post/trucs-et-astuces-5' rel='bookmark' title='Permanent Link: Trucs et astuces (5)'>Trucs et astuces (5)</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/commande" title="Commande" rel="tag">Commande</a>, <a href="http://linux-attitude.fr/tag/curiosite" title="Curiosité" rel="tag">Curiosité</a>, <a href="http://linux-attitude.fr/tag/noyau" title="Noyau" rel="tag">Noyau</a>, <a href="http://linux-attitude.fr/tag/planete-libre" title="planete-libre" rel="tag">planete-libre</a>, <a href="http://linux-attitude.fr/tag/systeme" title="Système" rel="tag">Système</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/execution-capitale/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>En vrac (28)</title>
		<link>http://linux-attitude.fr/post/en-vrac-28?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=en-vrac-28</link>
		<comments>http://linux-attitude.fr/post/en-vrac-28#comments</comments>
		<pubDate>Mon, 21 Mar 2011 09:00:46 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Commande]]></category>
		<category><![CDATA[planete-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1304</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: arecord &#38;&#38; aplay&#160;; ctrl-x ctrl-e&#160;; vim :sudo save&#160;; mount&#160;; table ASCII Lire en local le son enregistré sur un micro distant avec alsa (merci buntu35)&#160;: $ ssh USER@REMOTESYSTEM arecord - &#124; aplay - Sous bash, éditer une longue ligne de commande en cours (avec $EDITOR)&#160;: ctrl-x ctrl-e Sous vim, faire un "sudo [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: arecord &amp;&amp; aplay&nbsp;; ctrl-x ctrl-e&nbsp;; vim :sudo save&nbsp;; mount&nbsp;; table ASCII</p>


<p>Lire en local le son enregistré sur un micro distant avec alsa (merci buntu35)&nbsp;:</p>
<pre>
$ ssh USER@REMOTESYSTEM arecord - | aplay -
</pre>



<p>Sous bash, éditer une longue ligne de commande en cours (avec $EDITOR)&nbsp;:</p>
<pre>
ctrl-x ctrl-e
</pre>


<p>Sous vim, faire un "sudo save"&nbsp;:</p>
<pre>
:w !sudo tee %
</pre>


<p>Enfin afficher proprement le résultat de mount (faites en carrément un alias)&nbsp;:</p>
<pre>
$ mount | column -t
</pre>


<p>Si comme moi il vous arrive de chercher la table ascii sur google, ne cherchez plus&nbsp;:</p>
<pre>
$ man ascii
</pre>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/en-vrac16' rel='bookmark' title='Permanent Link: En vrac(16)'>En vrac(16)</a></li>
<li><a href='http://linux-attitude.fr/post/en-vrac-11' rel='bookmark' title='Permanent Link: En vrac (11)'>En vrac (11)</a></li>
<li><a href='http://linux-attitude.fr/post/en-vrac-12' rel='bookmark' title='Permanent Link: En vrac (12)'>En vrac (12)</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/commande" title="Commande" rel="tag">Commande</a>, <a href="http://linux-attitude.fr/tag/planete-libre" title="planete-libre" rel="tag">planete-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/en-vrac-28/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>La magie de l&#8217;ascii art</title>
		<link>http://linux-attitude.fr/post/la-magie-de-lascii-art?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=la-magie-de-lascii-art</link>
		<comments>http://linux-attitude.fr/post/la-magie-de-lascii-art#comments</comments>
		<pubDate>Mon, 24 Jan 2011 18:01:59 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Commande]]></category>
		<category><![CDATA[graphisme]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1267</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: ditaa Aujourd'hui je voudrais partager avec vous un petit soft que je viens de découvrir&#160;: ditaa. Qu'est-ce que ça fait&#160;? C'est un outil très simple qui vous permet de faire des diagrammes en ascii art. Non pas de les dessiner comme le ferait emacs artist-mode mais de les transformer en un vrai [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: ditaa</p>


<p>Aujourd'hui je voudrais partager avec vous un petit soft que je viens de découvrir&nbsp;: <a href="http://ditaa.sourceforge.net/" hreflang="en">ditaa</a>.</p>


<h3>Qu'est-ce que ça fait&nbsp;?</h3>

<p>C'est un outil très simple qui vous permet de faire des diagrammes en ascii art. Non pas de les dessiner comme le ferait emacs <a href="http://www.cinsk.org/emacs/emacs-artist.html" hreflang="en">artist-mode</a> mais de les transformer en un vrai png propre et beau.</p>


<p>Exemple&nbsp;: Je dessine ceci (par exemple avec <a href="http://search.cpan.org/dist/App-Asciio/" hreflang="en">asciio</a>)</p>
<pre>
    +--------+   +-------+    +-------+
    |        | --+ ditaa +--&gt; |       |
    |  Text  |   +-------+    |diagram|
    |Document|   |!magic!|    |       |
    |cRED {d}|   |cBLU   |    |cRED   |
    +---+----+   +-------+    +-------+
        :                         ^
        |       Lots of work      |
        +-------------------------+
</pre>


<p>Cela devient automatiquement ceci&nbsp;:</p>
<img src='/public/ditaa/e423f2cd38009afcee9e10a290cf25ff.png'>


<h3>Intégration</h3>

<p>C'est tellement magique que je n'ai pas hésité et je l'ai intégré à mon site directement. En effet avant à chaque fois que je devais faire un diagramme il fallait que je sorte inkscape, que fasse attention à caler correctement les cases et les flèches et que je pense à sauvegarder l'image et l'uploader sur le serveur.</p>


<p>Maintenant j'intègre tout simplement le code dans le texte de mon article et ca marche&nbsp;!</p>


<p>Je n'ai pas trouvé de code qui faisait cela, je l'ai donc fait moi-même. Un peu rapidement il est vrai, il n'y a pas de gestion des différents cas d'erreur. Mais je vous laisse le code au cas où vous voudriez faire de même chez vous.</p>

<pre>
    function __macroDITAA($s)
    {
        $base=$_SERVER['DOCUMENT_ROOT'].&quot;/public/ditaa&quot;;
        $tmp=&quot;/tmp/ditaa&quot;;

        # first line of code is for ditaa parameters
        $p = strpos($s, &quot;\n&quot;);
        $args = substr($s, 0, $p-2);
        $data = substr($s, $p+1 );

        # md5sum to generate a unique id
        $id = md5($data);

        # file test
        if(!file_exists(&quot;$base/$id.png&quot;)) {
            # create tmp
            $f = fopen(&quot;$tmp&quot;, &quot;w&quot;);
            fwrite($f, $data);
            fclose($f);

            # call ditaa (beware of safe mode)
            system(&quot;ditaa $args $tmp &gt; /dev/null&quot;);

            # move file
            rename(&quot;$tmp.png&quot;, &quot;$base/$id.png&quot;);
        }

        return &quot;&lt;img src='/public/ditaa/$id.png'&gt;&quot;;
    }
</pre>


<p>Puisque ditaa est malgré tout un peu lourd, on crée un identifiant d'image avec le md5 de la ligne de commande et le contenu. Et on ne fait l'appel qu'une fois (attention je n'ai pas de safe_mode ici), lorsque le fichier n'existe pas encore. Ensuite le serveur web l'utilise le fichier directement comme n'importe quel autre.</p>


<p>Sur mon site, j'ai une syntaxe <a href="http://fr.dotclear.org/" hreflang="fr">dotclear2</a>, j'ai donc dû enregistrer un nouveau mot clé pour la syntaxe ditaaa "///ditaa"&nbsp;:</p>
<pre>
# dans class.wiki2xhtml.php / class wiki2xhtml / function __construct()
$this-&gt;registerFunction('macro:ditaa','__macroDITAA');
</pre>


<p>A vous de faire de même pour la syntaxe wordpress&nbsp;!</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/prompt-string' rel='bookmark' title='Permanent Link: Prompt String'>Prompt String</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/commande" title="Commande" rel="tag">Commande</a>, <a href="http://linux-attitude.fr/tag/graphisme" title="graphisme" rel="tag">graphisme</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/la-magie-de-lascii-art/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 24/67 queries in 0.214 seconds using apc
Object Caching 1837/1857 objects using apc
Content Delivery Network via N/A

Served from: linux-attitude.fr @ 2012-05-23 19:47:28 -->
