Aller au contenu

Site En Php Utilisant Les Comptes Utilisateurs Du Syno


nla

Messages recommandés

mots de passe dans /etc/shadow, cryptage md5 probablement (regarde si le mot de passe commence par $1$)

Merci cricx pour ta réponse car c'est effectivement bien ce que je cherchais :-)

Par contre les mdp commencent bien par $1$, c'est donc du md5 avec un SALT car on retrouve le formalise : $1$XX$yyyyyyyyyyyyyyyy

J'ai donc tout essayé du coté php pour comprendre comment été généré le "yyyyyyyyyyyyyy" mais je ne trouve pas.

ça ne correspond pas à la fonction crypt, md5, ...

J'ai bien peur que sans le "SALT", je ne pourrais jamais réutiliser ces données ... une idée ?

A part si bien sur, on peut retrouver le contenu du SALT quelque part dans un fichier ;-)

Merci encore

Lien vers le commentaire
Partager sur d’autres sites

Merci ... je pensais que "passwd" était pour changer un mot de passe existant.

oui.

c'est openssl passwd (openssl passwd -1 -salt les8caractèresquisuiventledeuxième$)

le hash est les X qui suivent le 2ème $ ($XXXXXXXX) après le $1

makepasswd ou makepasswd2 peuvent peut-être aussi faire l'affaire

Mais l'idée d'appeler un fonction linux me parait intéressante ... je ne connais pas bien linux mais je vais bien pouvoir trouver une fonction qui permet de dire si un pwd est bon

le principe est d'appliquer la même fonction de cryptage au mot de passe saisi que celle qui a servi pour le mot de passe système.

Lien vers le commentaire
Partager sur d’autres sites

Merci bien cricx ... j'y suis arrivé :-)

Donc pour ceux que ça intéresse, voici le petit bout de code qui permet de vérifier que le couple login/mdp existe bien sur le syno.


if ( isset($_POST['nom']) && isset($_POST['mdp']) && !empty($_POST['nom']) && !empty($_POST['mdp']) ){ 

	$shadow = popen('cat /etc/shadow | grep \''.$_POST['nom'].'\' 2>&1', 'r');

	$utilisateur = fread($shadow, 2096);

	pclose($shadow);

	if( !empty($utilisateur) ) {

		//Récupérer les infos de l'utilisateur depuis shadow

		infos_utilisateur_depuis_shadow = split(':', $utilisateur, 3);

		//Extraire le SALT

		$salt=substr($infos_utilisateur_depuis_shadow[1], 0, 12);

		//Crypter le mot de passe fourni

		$pass_crypt=crypt($_POST['mdp'], $salt);

		//Comparer le mdp fourni avec celui du shadow

		if($pass_crypt == $infos_utilisateur_depuis_shadow[1]) {

			#Mdp correct

			#Mettre votre traitement

		}else{

			#Mdp faux

			#Mettre votre traitement

		}

	}

}

ça peut se mettre sans probleme dans une fonction. Dans mon cas, c'est une vérification en ajax qui est faite d'ou les POST nom et mdp

Voila ... merci encore pour le coup de main ;-)

NLA

Lien vers le commentaire
Partager sur d’autres sites

  • 9 mois après...

Bonjour,

je me permets de relancer le topic car je recherche à peu près la même chose que le posteur.

J'ai essayé sa méthode. Je ne sais pas si cela vient du firmware 3.0 mais le fichier shadow n'est pas visible par l'utilisateur apache, au pire il faut changer les droits de lecture pour permettre la lecture à apache, mais à chaque changement de mot de passe ou nouvel utilisateur, la sécurité du syno remet le fichier shadow à 700.

J'ai également essayé d'obtenir une connexion en passant par php et curl, mais j'ai beau imiter le referer, envoyer les données post appropriées et les cookie le renvoie de message est toujours le même: error_cantlogin.

Je désespère de trouver une solution car j'apprécierai vraiment de pouvoir utiliser ces informations de connexion, plutot que de devoir coder un second programme de login, non pas que ça soit difficile mais c'est juste pas très ergo.

En vous remerciant d'avance pour vos réponses,

Deihnyx

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 1 an après...

Je cherche la même fonction (identification des users sur le WebStation), mais le script proposé plus haut ne marche plus ...(DSM 4.0 béta) sad.png

Autre solution trouvée sur le forum synology.com : utiliser la commande exec() en PHP, mais celle-ci est désactivée par défaut (l'activer peut engendrer des pb de sécurité)... sad.png

Dernière idée : s'inspirer du SPK de VideoStation qui permet de s'authentifier en utilisant login et mdp du syno ... à creuser ! wink.png

Lien vers le commentaire
Partager sur d’autres sites

effectivement, c'est la solution qui est utilisée dans VideoStation.


session_start();

function login($user,$pass,$cookie,$port){

if($port=='5001') $http = 'https://';

else $http = 'http://';

$urlSyno=$http."localhost".':'.$port.'/webman/login.cgi?username='.$user.'&passwd='.$pass;

$reponseLogin = file_get_contents($urlSyno);

if (json_decode($reponseLogin)->{'success'}){

$_SESSION['user'] = $user;

  if($cookie == 'on'){

  $expire = 365*24*3600;

  setcookie('user',$user,time()+$expire);

  }

return 1;

}

else return 0;

}

function logout(){

  session_unset();

  session_destroy();

  setcookie('user');

}

wink.png

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.