[C] Interdire en parametre interferrant avec bash

Résolu/Fermé
BaGamman - Modifié par BaGamman le 31/12/2015 à 15:46
 BaGamman - 31 déc. 2015 à 18:25
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.


1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
31 déc. 2015 à 16:26
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
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
31 déc. 2015 à 17:24
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
31 déc. 2015 à 18:25
D'accord,
j'ai fais une procédure interdisant ce type de caractères si passé entre guillemets.


Merci beaucoup
0