user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 12-05-2015 00:37:01

WarLocG
#! modo de compet

[python] Récupérer le résultat d'un pipe dans la console

Encore un petit mumuse avec python de ma part

Et si on utilisait python sous bash à la manière d'un sed, d'un grep ou d'un awk smile

testé sous kali 1.1.0

Pour récupérer le résultat dans du pipe avec python ca peut se faire très facilement avec un raw_input()
Quelques exemples bêtes:

warlocg@linux:~$ echo "hello le monde" | python -c 'print(raw_input())'
hello le monde

Un autre exemple qui va un peu plus loin tongue

warlocg@linux:~$ echo "hello le monde" | python -c 'try:print(raw_input())^Mexcept:print("bad command")'
hello le monde
warlocg@linux:~$ blabla | python -c 'try:print(raw_input())^Mexcept:print("bad command")'
bash: blabla : commande introuvable
bad command

La même chose sans l'erreur de bash dérangeante

warlocg@linux:~$ blabla 2> /dev/null | python -c 'try:print(raw_input())^Mexcept(EOFError):print("bad command")'
bad command

Et avec logging:

warlocg@linux:~$ blabla 2> /dev/null | python -c 'import logging^Mtry:print(raw_input())^Mexcept(EOFError):logging.basicConfig(format="%(asctime)s [%(levelname)s] > %(message)s")^Mlogging.warning("bad command")'
2015-05-12 01:09:15,090 [WARNING] > bad command

PS: Le ^M est un caractère <Enter> fait en console depuis <Ctrl+V> suivi de <Enter>

Bon hack de bash via python tongue


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#2 12-05-2015 14:10:28

Yzeew
Membre d'or

Re : [python] Récupérer le résultat d'un pipe dans la console

Oulah tout ça à taper dans un shell ça fait beaucoup , ta pas stone par hasard ?  tongue

Dernière modification par Yzeew (12-05-2015 14:13:06)


>> Good things come to those who, Wait.. <<

>> sip:yzeew@ekiga.net << and >> #Pouni3 <<

Hors ligne

#3 12-05-2015 23:16:26

WarLocG
#! modo de compet

Re : [python] Récupérer le résultat d'un pipe dans la console

Non non je n'ai pas fumé ^^ Depuis que le message est traité par python qui est un langage complet avec ses modules, un peu à la manière de perl ou ruby (dont ce n'est pas la section ici) les possibilités sont nombreuses voir infinies.

Imagine plutot l'utilité dans un challenge ou tu dois traiter une chaine, par exemple:

warlocg@linux:~$ echo "57 61 72 4c 6f 63 47 20 77 61 73 20 68 65 72 65" | python -c 'a,b=raw_input().split(" "),""^Mfor i in a:^M b+="%c" % int(i.rstrip(" "),16)^Mprint (b)'
WarLocG was here

ou par exemple:

warlocg@linux:~$ echo "5761724c6f6347207761732068657265" | python -c 'a,b,i=raw_input(),"",0^Mwhile i<len(a):^M b+="%c" % int(a[i:i+2],16);i+=2;^Mprint(b)'
WarLocG was here

ou dans l'autre sens pourquoi pas. Tout de suite ca devient plus intéressant wink

Maintenant j'utilise un bète echo dans cet exemple mais tu pourrais utiliser curl ou wget pour choper le message sur un site de challenge où tu dois valider le message dans un temps imparti wink


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#4 12-05-2015 23:29:03

ZeR0-@bSoLu
Membre

Re : [python] Récupérer le résultat d'un pipe dans la console

je n'aurais qu'une seule chose à dire.... +1  check  dyp


Mess With The Bests
Die Like The Rest

Hors ligne

#5 12-05-2015 23:48:51

WarLocG
#! modo de compet

Re : [python] Récupérer le résultat d'un pipe dans la console

Sinon petite parenthèse, ceci fonctionne aussi... mais ce n'est plus du pipe

warlocg@linux:~$ a="blabla";python -c "print('$a')"
blabla

on peut récupérer les "variables en bash" pour les utiliser dans le python -c smile Par contre ca ne fonctionnera qu'avec la commande encapsulé entre guillemets, autrement vous aurez ca

warlocg@linux:~$ a="blabla";python -c 'print("$a")'
$a

Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#6 13-05-2015 07:19:43

IceF0x
#! Gourou Linux

Re : [python] Récupérer le résultat d'un pipe dans la console

WarLocG a écrit :

Non non je n'ai pas fumé ^^ Depuis que le message est traité par python qui est un langage complet avec ses modules, un peu à la manière de perl ou ruby (dont ce n'est pas la section ici) les possibilités sont nombreuses voir infinies.

Imagine plutot l'utilité dans un challenge ou tu dois traiter une chaine, par exemple:

warlocg@linux:~$ echo "57 61 72 4c 6f 63 47 20 77 61 73 20 68 65 72 65" | python -c 'a,b=raw_input().split(" "),""^Mfor i in a:^M b+="%c" % int(i.rstrip(" "),16)^Mprint (b)'
WarLocG was here

ou par exemple:

warlocg@linux:~$ echo "5761724c6f6347207761732068657265" | python -c 'a,b,i=raw_input(),"",0^Mwhile i<len(a):^M b+="%c" % int(a[i:i+2],16);i+=2;^Mprint(b)'
WarLocG was here

ou dans l'autre sens pourquoi pas. Tout de suite ca devient plus intéressant wink

Maintenant j'utilise un bète echo dans cet exemple mais tu pourrais utiliser curl ou wget pour choper le message sur un site de challenge où tu dois valider le message dans un temps imparti wink

Génial, j'ai toujours tendence à faire tout en bash perso

echo "5761724c6f6347207761732068657265" | xxd -r -p

Mais dans un script python c'est génial  merci


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

Pied de page des forums