Re: [HS] Modifier/recompiler la commande ping
Le poulpe qui bloppe !, jeudi 14 décembre 2006, 18:56:14 CET
>
> Bonsoir la liste.
> J'ai une envie bete, inutile et futile (donc indispensable) mais qui
> me tiens à coeur.
> En effet, un ping répond avec des textes préconfigurés, comme par
> exemple:
>
> #ping localhost
> PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
> 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64
> time= 0.072 ms
>
> Moi j'aimerais juste pour le fun qu'il réponde PONG au lieu de PING,
> comme cela par exemple:
>
> #ping localhost
> PONG localhost.localdomain (127.0.0.1) 56(84) bytes of data.
> PONG OK for 64 bytes from localhost.localdomain (127.0.0.1):
> icmp_seq=1 ttl=64 time=0.072 ms
>
> Je me doute qu'il va falloir recompiler quelques trucs, mais mon
> probleme c'est que j'ai jamais compilé. J'ai déja lu plein de tuto
> sur le net, je pense arriver à compiler, et à retoucher le code. Mais
> j'ai aucune idée d'où se trouvent les sources, et dans quel paquage.
>
> Si une bonne âme à une idée....
>
> Merci, et bonne soirée.
$ dpkg -S /bin/ping
iputils-ping: /bin/ping
$ apt-get source iputils-ping
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Nécessité de prendre 132ko dans les sources.
Réception de : 1 http://ftp.fr.debian.org sid/main iputils 3:20020927-3.1 (dsc) [673B]
Réception de : 2 http://ftp.fr.debian.org sid/main iputils 3:20020927-3.1 (tar) [121kB]
Réception de : 3 http://ftp.fr.debian.org sid/main iputils 3:20020927-3.1 (diff) [10,4kB]
132ko réceptionnés en 1s (107ko/s)
gpg: Signature made dim 15 oct 2006 06:01:49 CEST using DSA key ID 788A3F4C
gpg: Can't check signature: public key not found
dpkg-source : extraction de iputils dans iputils-20020927
dpkg-source : extraction de iputils_20020927.orig.tar.gz
dpkg-source : ./iputils_20020927-3.1.diff.gz
$ cd iputils-20020927/
$ grep PING *
arping.c: printf("ARPING %s ", inet_ntoa(dst));
ping6.c: printf("PING %s(%s) ", hostname, pr_addr(&whereto.sin6_addr));
ping.c: printf("PING %s (%s) ", hostname, inet_ntoa(whereto.sin_addr));
ping_common.c: options |= F_PINGFILLED;
ping_common.c: if (!(options & F_PINGFILLED)) {
ping_common.h:#define F_PINGFILLED 0x008
$ sed -ie s/PING/PONG/ ping.c ping6.c
$ make ping ping6
[...]
$ cp ping ping6 ~/bin
$ cd ~/bin
$ su -c 'chown root.root ping* ; chmod u+s ping*'
$ ping localhost
PONG localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.067 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.049 ms
Au lieu du make, tu peux faire un debuild qui :
– te dira quels paquets sont nécessaires ;
– te construira des paquets de remplacement (iputils fournit aussi
tracepath et arping).
--
Sylvain Sauvage
Reply to: