[C] Interdire en parametre interferrant avec bash

Résolu
BaGamman -  
 BaGamman -
Bonjour,

pour un devoir de programmation ( codeur en Xor Cipher ) on me demande dans le cahier des charges une interdiction des caractères interférant avec le bash de linux (par exemple le point virgule d'ASCII 59 ou bien les parenthèses) pour la clé qui doit passer en paramètre de la ligne de commande tel que:

./xorcipher -k [key]
où ./xorcipher est l'executable
key est la clé de chiffrement.

Problème, je n'ai jamais appris en programmation à refuser un paramètre directement en ligne de commande.
Avez vous une solution à ce problème ?

Merci d'avance.


A voir également:

1 réponse

fiddy Messages postés 11653 Statut Contributeur 1 847
 
Bonjour,
Le plus simple (et portable) :
1/ l'utilisateur saisit la clé
2/ tu vérifies chacun des caractères de la clé
3/ s'il y en a un qui appartient à la liste des caractères interdits, retour à l'étape 1.
Cdlt,
0
BaGamman
 
Merci pour cette réponse.
Cependant, tout mon problème viens du fait que la clée doit directement être saisie dans le terminal après la balise -k
Or, impossible de vérifier s'il y a des caracteres interférant avec le bash car justement, en entrant ces caracteres dans le terminal, le bash les interprettent.

Ainsi, si :
input: ./xorcipher -k hel;o
output: erreur: commande o inconnue

Et c'est la tout mon probleme: impossible de faire passer dans un programme de vérification.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Pas possible. C'est le bash qui pilote ça ; le programme xorcipher n'a pas son mot à dire et ne peut rien faire.
Ce qu'il faut faire dans ces cas et d'utiliser les guillemets :
input : ./xorcipher -k "hel;o"
Dans ce cas hel;o sera passé en argument à xorcipher et là tu pourras la parser comme dit dans mon 1er post.
0
BaGamman > fiddy Messages postés 11653 Statut Contributeur
 
D'accord,
j'ai fais une procédure interdisant ce type de caractères si passé entre guillemets.


Merci beaucoup
0