begin process at 2012 02 09 04:27:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > LISTER VOS DROITS CONCERNANT LES REPERTOIRES DE VOTRE ORDINATEUR OU CEUX DU RÉSEAU

LISTER VOS DROITS CONCERNANT LES REPERTOIRES DE VOTRE ORDINATEUR OU CEUX DU RÉSEAU


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité Classé sous :Active Directory, Droits, Répertoire, Liste Niveau :Initié Date de création :02/10/2007 Date de mise à jour :08/01/2008 10:38:33 Vu / téléchargé :9 288 / 627

Auteur : BefaDuDesert

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

/!\ Ne fonctionne qu'avec des MS en Anglais

But de ce programme:
Le but de ce programme est de lister les droits d'un répertoire (de façon récursive).

Finalité : le fichier final généré se nomme traitement.txt. Vous pouvez facilement
l'exporter vers un tableur pour ensuite l'exploiter rapidement et localiser les failles de sécurité.

Comment utiliser ces programmes ?
Tout d'abord tous les programmes fournis à savoir : analyze.vbs, listPerm.bat et showACLS.vbs doivent être situés dans le même répertoire.

Vous avez juste à lancer listPerm.bat et à choisir le répertoire source. Le fichier final est perms.txt.

Il vous suffit ensuite de l'intégrer soit dans une base de données soit dans un tableur afin de l'exploiter de manière efficace et rapide.

Source

  • '____________________________________________________________________________________________
  • '______________________________________listPerm.bat__________________________________________
  • '____________________________________________________________________________________________
  • showacls.vbs
  • showacls.bat
  • analyze.bat
  • del showacls.txt
  • del showacls.bat
  • '____________________________________________________________________________________________
  • '____________________________________showACLS.vbs____________________________________________
  • '____________________________________________________________________________________________
  • Dim ShellO
  • Set ShellO = CreateObject("WScript.Shell")
  • Dim FSO
  • Set FSO = CreateObject("Scripting.FileSystemObject")
  • Dim SListe
  • Dim Schemin
  • 'permettant de mettre en place la fenetre parcourir pour choisir le repertoire source
  • ReturnOnlyFSDirs = &H0001
  • Set oShell = WScript.CreateObject("Shell.Application" )
  • Title = "Veuillez sélectionner un dossier"
  • Flags=ReturnOnlyFSDirs
  • 'InitDir = "C:\" '<-- Adapter selon les besoins
  • Set Item = oShell.BrowseForFolder(0, Title, Flags, InitDir)
  • If Not Item Is Nothing Then
  • Result=Item.Title
  • If InStr(1, Result, ":" ) = 0 Then
  • Result=Item.ParentFolder.ParseName(Item.Title).Path
  • End If
  • Schemin = Result
  • Else
  • WScript.echo "Aucun dossier n'a été sélectionné !", vbExclamation, Title
  • End If
  • 'Schemin = var 'Dossier à modifier
  • 'Ouverture du fichier contenant l'arborescence du répertoire à traiter vers le Bureau
  • Dim Fichier
  • Set Fichier = FSO.CreateTextFile("showacls.bat")
  • 'Lister l'arborescence du dossier
  • ListerDossier Schemin, Fichier
  • 'Fermeture du fichier contenant l'arborescence du répertoire à traiter
  • Fichier.WriteLine "analyze.vbs"
  • Fichier.Close
  • Function ListerDossier(Schemin, Fichier) 'Lister l'arborescence du dossier
  • On Error Resume Next
  • Dim FSO
  • Set FSO = CreateObject("Scripting.FileSystemObject")
  • Dim ObjRep
  • Set ObjRep = FSO.GetFolder(Schemin) 'dossier
  • Dim ObjSubRep
  • Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
  • Dim ObjSubRepItem
  • For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossier
  • 'WScript.echo ObjSubRepItem.Path
  • 'chaine = "cacls " & vbclrf & ObjSubRepItem.Path & vbclrf & " >> showACLS.txt"
  • Fichier.WriteLine ("cacls " & chr(34) & ObjSubRepItem.Path & chr(34) & " >> showacls.txt") 'Ecrire le path dans la liste
  • ListerDossier ObjSubRepItem.Path, Fichier 'traiter les sous-dossiers
  • Next
  • End Function
  • '_____________________________________________________________________________________________
  • '_________________________________________analyze.vbs_________________________________________
  • '_____________________________________________________________________________________________
  • On error resume next
  • 'Variables globales à prévoir : nomPC
  • 'connaitre le nom de l'ordi
  • cheminFichier="showACLS.txt" 'fichier source
  • Dim FSO 'déclaration file system object
  • Dim cheminCourant, utilisateurCourant, tableau, chaineTotale, chaineLigne 'variables globales
  • Dim boolOK 'booléen stockant la nature de l'autorisation (Autoriser ou Refuser)
  • Redim tableau(6) 'tableau contenant 6 colonnes (de 0 à 5)
  • Set FSO = CreateObject("Scripting.FileSystemObject")'instanciation
  • Set lecture = FSO.OpenTextFile(cheminFichier)'on instancie le fichier texte
  • Dim cpt 'compteur permettant d'éviter de fermer le tableau à la première ligne
  • cpt=0
  • enteteFichier
  • Do While Not lecture.AtEndOfStream 'on parcourt chaque ligne du fichier texte
  • boolOK = True 'remise à zéro
  • ligne = lecture.Readline
  • ligne = trim(ligne) 'on supprime les espaces entourant la ligne
  • If NOT(Instr(ligne, "<Account Domain not found>") <> 0) Then
  • If (reconnaissanceLigne(ligne) = 0) Then 'on ouvre un tableau temporaire
  • 'WScript.echo "type 0"
  • If (cpt <> 0) Then 'la première ligne est de type 0
  • fermetureTableau
  • End If
  • ligneM=cas0(ligne) 'ligne de la forme chemin|utilisateur|droits
  • tab=Split(ligneM, "|") 'split permet de traiter la ligne comme un tableau
  • 'WScript.echo tab(0)
  • ouvertureCas0 'on initialise le tableau
  • cheminCourant=tab(0)
  • utilisateurCourant=tab(1)
  • If (Instr(tab(2), "(DENY)") <> 0 Or Instr(tab(2), "R") <> 0) Then
  • boolOK = true
  • Else
  • boolOK = false
  • End If
  • tableau(0)=cheminCourant
  • tableau(1)=utilisateurCourant
  • 'WScript.echo "cellule 2 " & tab(2)
  • gererDroits(tab(2))
  • Else
  • If (reconnaissanceLigne(ligne) = 1) Then 'on ouvre un tableau temporaire
  • fermetureTableau
  • ligneM=cas1(ligne)
  • tab=Split(ligneM, "|")
  • ouvertureCas1 'on initialise le tableau en gardant la premiere cellule (le chemin)
  • tableau(1)=tab(0) 'on remplit le champ utilisateur
  • If (Instr(tab(1), "(DENY)") <> 0 Or Instr(tab(1), "R") <> 0) Then
  • boolOK = true
  • Else
  • boolOK = false
  • End If
  • gererDroits(tab(1))
  • Else
  • If (reconnaissanceLigne(ligne) = 2) Then 'on poursuit l'écriture du tableau
  • 'WScript.echo "type2"
  • affectationDroitsCas2 ligne, boolOK
  • End If
  • End If
  • End If
  • End If
  • Loop
  • fermetureTableau 'ferme la dernière ligne
  • ecritureSortie chaineLigne
  • 'WScript.echo chaineLigne
  • lecture.Close
  • 'fonction permettant de faire la distinction entre les différents types de lignes
  • Function reconnaissanceLigne(ligne)
  • If (mid(ligne, 2,2) = ":\") Then
  • reconnaissanceLigne=0
  • Else
  • If (Instr(ligne,"\") <> 0 Or Instr(ligne, "Everyone") <> 0 ) Then
  • reconnaissanceLigne=1
  • Else
  • If (left(ligne, 12) = "FILE_GENERIC" Or left(ligne, 6) = "DELETE" Or left(ligne, 5) = "READ_" Or _
  • left(ligne, 11) = "SYNCHRONIZE" Or left(ligne, 9) = "FILE_READ" Or left(ligne, 10) = "FILE_WRITE" Or _
  • left(ligne, 12) = "FILE_EXECUTE" Or left(ligne, 11) = "FILE_DELETE" Or left(ligne, 11) = "FILE_APPEND" Or _
  • left(ligne, 12) = "GENERIC_READ" Or left(ligne, 15) = "GENERIC_EXECUTE" Or left(ligne, 13) = "GENERIC_WRITE") Then
  • reconnaissanceLigne=2
  • 'WScript.echo "type de ligne : 2 " & ligne
  • Else
  • reconnaissanceLigne=-1
  • End If
  • End If
  • End If
  • End Function
  • 'fonction traitant le cas 0
  • Function cas0(chaine)
  • 'If (Instr(chaine, "hiberfil.sys") <> 0) Then 'on ne veut pas traiter le fichier hiberfil.sys
  • ' cas0=""
  • 'Else
  • chaine=trim(chaine)
  • Dim sep1, sep2
  • 'gestion du cas de Everyone
  • If (Instr(chaine, "Everyone") <> 0) Then
  • sep1=Instr(chaine, "Everyone") - 1
  • cas0=left(chaine, sep1-2) & "|" & mid(chaine, sep1+1, 8) & "|" & right(chaine, len(chaine) - (sep1+9))
  • 'WScript.echo "cas 0 pour Everyone " & cas0
  • Else
  • If (Instr(chaine, "COSMOS\") <> 0) Then
  • sep1=Instr(chaine, "COSMOS\") - 1
  • Else
  • If (Instr(chaine, "NT AUTHORITY\") <> 0) Then
  • sep1=Instr(chaine, "NT AUTHORITY\") - 1
  • Else
  • If (Instr(chaine, "BUILTIN\") <> 0 ) Then
  • sep1=Instr(chaine, "BUILTIN\") - 1
  • End If
  • End If
  • End If
  • chemin=left(chaine, sep1-1)
  • 'on regarde si on est dans un cas de special access
  • If (compteur2Points(chaine) = 2) Then
  • sep2 = InStrRev(chaine, ":")
  • Else
  • If (compteur2Points(chaine) = 3) Then 'cas de special access
  • sep2 = InStrRev(chaine, ":(")
  • End If
  • End If
  • utilisateur = right(left(chaine, sep2-1),sep2-sep1-1)
  • droits=right(chaine, len(chaine)-sep2)
  • cas0=chemin & "|" & utilisateur & "|" & droits
  • End If
  • 'End If
  • End Function
  • Function cas1(chaine)
  • chaine=trim(chaine)
  • If (Instr(chaine, "Everyone") <> 0) Then
  • sepT=Instr(chaine, "Everyone")
  • chaine = right(chaine, len(chaine)-sepT+1)
  • 'WScript.echo "chaine " & chaine
  • cas1=left(chaine, 8) & "|" & right(chaine, len(chaine) - (septT+9))
  • 'WScript.echo "cas1 pour Everyone : " & cas1
  • Else
  • Dim i
  • i=Instr(chaine, ":") 'prend le premier ":" rencontré donc pas de problème pour le special access
  • cas1=left(chaine, i-1) & "|" & right(chaine, len(chaine)-i)
  • cas1=trim(cas1)
  • 'WScript.echo "cas1 : " & cas1
  • End If
  • End Function
  • 'forme du tableau final : chemin|utilisateur|Hérité|Lecture|Ecriture|Execution
  • Sub affectationDroitsCas2(ligne, P) 'P:permissions de départ Autoriser ou Refuser
  • If (Instr(ligne, "FILE_READ") <> 0 OR Instr(ligne, "GENERIC_READ") <> 0) Then
  • tableau(4)="-"
  • If (P=True) Then
  • tableau(3)="O"
  • Else
  • If (P=False) Then
  • tableau(3)="N"
  • End If
  • End If
  • Else
  • If (Instr(ligne, "FILE_WRITE") <> 0 OR Instr(ligne, "GENERIC_WRITE") <> 0) Then
  • tableau(4)="-"
  • If (P=True) Then
  • tableau(4)="O"
  • Else
  • If (boolOk=False) Then
  • tableau(4)="N"
  • End If
  • End If
  • Else
  • If (Instr(ligne,"FILE_EXECUTE") <> 0 OR Instr(ligne, "GENERIC_EXECUTE") <> 0) Then
  • tableau(4)="-"
  • If (P=True) Then
  • tableau(5)="O"
  • 'WScript.echo "executer"
  • Else
  • If (P=False) Then
  • tableau(5)="N"
  • End If
  • End If
  • End If
  • End If
  • End If
  • End Sub
  • Sub gererDroits(droits)
  • If (Instr(droits, "F") <> 0) Then 'l'utilisateur a tous les droits
  • tableau(3)="O"
  • tableau(4)="O"
  • tableau(5)="O"
  • Else
  • If (Instr(droits, "C") <> 0) Then
  • tableau(3)="O"
  • tableau(4)="O"
  • tableau(5)="O"
  • Else
  • If (Instr(droits, "R") <> 0) Then
  • tableau(3)="N"
  • tableau(4)="N"
  • tableau(5)="N"
  • End If
  • End If
  • End If
  • 'héritage
  • If (Instr(droits, "(CI)") <> 0 Or Instr(droits, "(OI)") <> 0 Or Instr(droits, "(IO)") <> 0 ) Then
  • tableau(2)="O"
  • End If
  • End sub
  • 'permet de déterminer si on est sur une ligne contenant (special access:)
  • Function compteur2Points(chaine)
  • Dim cpt, chaineTmp, i 'indice
  • cpt = 0
  • i=Instr(chaine, ":") 'on est sûr qu'il y en a au moins un sur la ligne et au maximum il y en a 2
  • cpt = 1
  • chaineTmp=right(chaine, len(chaine)-i)
  • Do While (Instr(chaineTmp, ":") <> 0)
  • i=Instr(chaineTmp, ":")
  • cpt = cpt + 1
  • chaineTmp=right(chaineTmp, len(chaineTmp)-i)
  • Loop
  • compteur2Points=cpt
  • End Function
  • Sub ouvertureCas0()
  • For i=0 to Ubound(tableau)-1
  • tableau(i)="-"
  • Next
  • chaineTotale = ""
  • For i=0 to Ubound(tableau)-1
  • chaineTotale=chaineTotale & tableau(i) & ";"
  • Next
  • End Sub
  • Sub ouvertureCas1() 'fonction gardant le chemin précédent
  • For i=1 to Ubound(tableau)-1
  • tableau(i)="-"
  • Next
  • chaineTotale = ""
  • For i=0 to Ubound(tableau)-1
  • chaineTotale=chaineTotale & tableau(i) & ";"
  • Next
  • End Sub
  • Sub fermetureTableau() 'fonction fermant le tableau càd le copiant dans le fichier
  • For i = 0 to Ubound(tableau)-1
  • chaineLigne=chaineLigne & tableau(i) & ";"
  • Next
  • chaineLigne=chaineLigne & vbcrlf
  • For i = 2 to Ubound(tableau)-1
  • tableau(i) = "-"
  • Next
  • 'WScript.echo chaineLigne
  • 'chaineTotale=chaineLigne & vbcrlf & chaineTotale 'chaine finale contenant tous les droits
  • End Sub
  • Sub ecritureSortie(chaineF)
  • Set sortie = FSO.CreateTextFile("perms.txt")
  • With sortie
  • .writeLine chaineF
  • End With
  • End Sub
'____________________________________________________________________________________________
'______________________________________listPerm.bat__________________________________________
'____________________________________________________________________________________________
showacls.vbs
showacls.bat
analyze.bat
del showacls.txt
del showacls.bat

'____________________________________________________________________________________________
'____________________________________showACLS.vbs____________________________________________
'____________________________________________________________________________________________
Dim ShellO
Set ShellO = CreateObject("WScript.Shell")
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim SListe
Dim Schemin

'permettant de mettre en place la fenetre parcourir pour choisir le repertoire source
ReturnOnlyFSDirs = &H0001
Set oShell = WScript.CreateObject("Shell.Application" )
Title = "Veuillez sélectionner un dossier"
Flags=ReturnOnlyFSDirs
'InitDir = "C:\" '<-- Adapter selon les besoins
Set Item = oShell.BrowseForFolder(0, Title, Flags, InitDir)
If Not Item Is Nothing Then
	Result=Item.Title
	If InStr(1, Result, ":" ) = 0 Then
		Result=Item.ParentFolder.ParseName(Item.Title).Path
	End If
	Schemin = Result
	Else
	WScript.echo "Aucun dossier n'a été sélectionné !", vbExclamation, Title
End If

'Schemin = var 'Dossier à modifier

'Ouverture du fichier contenant l'arborescence du répertoire à traiter vers le Bureau
Dim Fichier
Set Fichier = FSO.CreateTextFile("showacls.bat")
'Lister l'arborescence du dossier
ListerDossier Schemin, Fichier
'Fermeture du fichier contenant l'arborescence du répertoire à traiter
Fichier.WriteLine "analyze.vbs"
Fichier.Close

Function ListerDossier(Schemin, Fichier) 'Lister l'arborescence du dossier
	On Error Resume Next
	Dim FSO
	Set FSO = CreateObject("Scripting.FileSystemObject")
	Dim ObjRep
	Set ObjRep = FSO.GetFolder(Schemin) 'dossier
	Dim ObjSubRep
	Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
	Dim ObjSubRepItem
	For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossier
		'WScript.echo ObjSubRepItem.Path
		'chaine = "cacls " & vbclrf & ObjSubRepItem.Path & vbclrf & " >> showACLS.txt"
		Fichier.WriteLine ("cacls " & chr(34) & ObjSubRepItem.Path & chr(34) & " >> showacls.txt") 'Ecrire le path dans la liste
		ListerDossier ObjSubRepItem.Path, Fichier 'traiter les sous-dossiers
	Next
End Function


'_____________________________________________________________________________________________
'_________________________________________analyze.vbs_________________________________________
'_____________________________________________________________________________________________
On error resume next
'Variables globales à prévoir : nomPC
'connaitre le nom de l'ordi
cheminFichier="showACLS.txt" 'fichier source
Dim FSO 'déclaration file system object
Dim cheminCourant, utilisateurCourant, tableau, chaineTotale, chaineLigne 'variables globales
Dim boolOK 'booléen stockant la nature de l'autorisation (Autoriser ou Refuser)
Redim tableau(6) 'tableau contenant 6 colonnes (de 0 à 5)
Set FSO = CreateObject("Scripting.FileSystemObject")'instanciation
Set lecture = FSO.OpenTextFile(cheminFichier)'on instancie le fichier texte
Dim cpt 'compteur permettant d'éviter de fermer le tableau à la première ligne
cpt=0
enteteFichier
Do While Not lecture.AtEndOfStream 'on parcourt chaque ligne du fichier texte
    boolOK = True 'remise à zéro
	ligne = lecture.Readline
	ligne = trim(ligne) 'on supprime les espaces entourant la ligne
	If NOT(Instr(ligne, "<Account Domain not found>") <> 0) Then
		If (reconnaissanceLigne(ligne) = 0) Then 'on ouvre un tableau temporaire
			'WScript.echo "type 0"
			If (cpt <> 0) Then 'la première ligne est de type 0
				fermetureTableau
			End If
			ligneM=cas0(ligne) 'ligne de la forme chemin|utilisateur|droits
			tab=Split(ligneM, "|") 'split permet de traiter la ligne comme un tableau
			'WScript.echo tab(0)
			ouvertureCas0 'on initialise le tableau
			cheminCourant=tab(0) 
			utilisateurCourant=tab(1)
			If (Instr(tab(2), "(DENY)") <> 0 Or Instr(tab(2), "R") <> 0) Then
				boolOK = true
			Else 
				boolOK = false
			End If
			tableau(0)=cheminCourant
			tableau(1)=utilisateurCourant
			'WScript.echo "cellule 2 " & tab(2)
			gererDroits(tab(2))
		Else
			If (reconnaissanceLigne(ligne) = 1) Then 'on ouvre un tableau temporaire
				fermetureTableau
				ligneM=cas1(ligne)
				tab=Split(ligneM, "|")
				ouvertureCas1 'on initialise le tableau en gardant la premiere cellule (le chemin)
				tableau(1)=tab(0) 'on remplit le champ utilisateur
				If (Instr(tab(1), "(DENY)") <> 0 Or Instr(tab(1), "R") <> 0) Then
					boolOK = true
				Else 
					boolOK = false
				End If
				gererDroits(tab(1))
			Else
				If (reconnaissanceLigne(ligne) = 2) Then 'on poursuit l'écriture du tableau
					'WScript.echo "type2"
					affectationDroitsCas2 ligne, boolOK
				End If
			End If
		End If
	End If
Loop
fermetureTableau 'ferme la dernière ligne
ecritureSortie chaineLigne
'WScript.echo chaineLigne
lecture.Close

'fonction permettant de faire la distinction entre les différents types de lignes
Function reconnaissanceLigne(ligne)
	If (mid(ligne, 2,2) = ":\") Then
		reconnaissanceLigne=0
	Else 
		If (Instr(ligne,"\") <> 0 Or Instr(ligne, "Everyone") <> 0 ) Then
			reconnaissanceLigne=1
		Else
			If (left(ligne, 12) = "FILE_GENERIC" Or left(ligne, 6) = "DELETE" Or left(ligne, 5) = "READ_" Or _
			left(ligne, 11) = "SYNCHRONIZE" Or left(ligne, 9) = "FILE_READ" Or left(ligne, 10) = "FILE_WRITE" Or _
			left(ligne, 12) = "FILE_EXECUTE" Or left(ligne, 11) = "FILE_DELETE" Or left(ligne, 11) = "FILE_APPEND" Or _
			left(ligne, 12) = "GENERIC_READ" Or left(ligne, 15) = "GENERIC_EXECUTE" Or left(ligne, 13) = "GENERIC_WRITE") Then
				reconnaissanceLigne=2
				'WScript.echo "type de ligne : 2 " & ligne
			Else 
				reconnaissanceLigne=-1
			End If
		End If
	End If
End Function

'fonction traitant le cas 0

Function cas0(chaine)
	'If (Instr(chaine, "hiberfil.sys") <> 0) Then 'on ne veut pas traiter le fichier hiberfil.sys
	'	cas0=""
	'Else
		chaine=trim(chaine)
		Dim sep1, sep2
		'gestion du cas de Everyone
		If (Instr(chaine, "Everyone") <> 0) Then
			sep1=Instr(chaine, "Everyone") - 1
			cas0=left(chaine, sep1-2) & "|" & mid(chaine, sep1+1, 8) & "|" & right(chaine, len(chaine) - (sep1+9))
			'WScript.echo "cas 0 pour Everyone " & cas0
		Else
			If (Instr(chaine, "COSMOS\") <> 0) Then
				sep1=Instr(chaine, "COSMOS\") - 1
			Else
				If (Instr(chaine, "NT AUTHORITY\") <> 0) Then
					sep1=Instr(chaine, "NT AUTHORITY\") - 1
				Else
					If (Instr(chaine, "BUILTIN\") <> 0 ) Then
						sep1=Instr(chaine, "BUILTIN\") - 1
					End If
				End If
			End If
			chemin=left(chaine, sep1-1)
			'on regarde si on est dans un cas de special access
			If (compteur2Points(chaine) = 2) Then
				sep2 = InStrRev(chaine, ":")
			Else 
				If (compteur2Points(chaine) = 3) Then 'cas de special access
					sep2 = InStrRev(chaine, ":(")
				End If
			End If
			utilisateur = right(left(chaine, sep2-1),sep2-sep1-1)
			droits=right(chaine, len(chaine)-sep2)
			cas0=chemin & "|" & utilisateur & "|" & droits
		End If
	'End If
End Function

Function cas1(chaine)
	chaine=trim(chaine)
	If (Instr(chaine, "Everyone") <> 0) Then
		sepT=Instr(chaine, "Everyone")
		chaine = right(chaine, len(chaine)-sepT+1)
		'WScript.echo "chaine " & chaine
		cas1=left(chaine, 8) & "|" & right(chaine, len(chaine) - (septT+9))
		'WScript.echo "cas1 pour Everyone : " & cas1
	Else
		Dim i
		i=Instr(chaine, ":") 'prend le premier ":" rencontré donc pas de problème pour le special access
		cas1=left(chaine, i-1) & "|" & right(chaine, len(chaine)-i)
		cas1=trim(cas1)
		'WScript.echo "cas1 : " & cas1
	End If
End Function

'forme du tableau final : chemin|utilisateur|Hérité|Lecture|Ecriture|Execution
Sub affectationDroitsCas2(ligne, P) 'P:permissions de départ Autoriser ou Refuser
	If (Instr(ligne, "FILE_READ") <> 0 OR Instr(ligne, "GENERIC_READ") <> 0) Then
		tableau(4)="-"
		If (P=True) Then
			tableau(3)="O"
		Else
			If (P=False) Then
				tableau(3)="N"
			End If
		End If
	Else 
		If (Instr(ligne, "FILE_WRITE") <> 0 OR Instr(ligne, "GENERIC_WRITE") <> 0) Then
			tableau(4)="-"
			If (P=True) Then
				tableau(4)="O"
			Else
				If (boolOk=False) Then
					tableau(4)="N"
				End If
			End If	
		Else			
			If (Instr(ligne,"FILE_EXECUTE") <> 0 OR Instr(ligne, "GENERIC_EXECUTE") <> 0) Then
				tableau(4)="-"
				If (P=True) Then
					tableau(5)="O"
					'WScript.echo "executer"
				Else
					If (P=False) Then
						tableau(5)="N"
					End If
				End If
			End If
		End If
	End If
End Sub

Sub gererDroits(droits)
	If (Instr(droits, "F") <> 0) Then 'l'utilisateur a tous les droits
		tableau(3)="O"
		tableau(4)="O"
		tableau(5)="O"
	Else
		If (Instr(droits, "C") <> 0) Then
			tableau(3)="O"
			tableau(4)="O"
			tableau(5)="O"
		Else
			If (Instr(droits, "R") <> 0) Then
				tableau(3)="N"
				tableau(4)="N"
				tableau(5)="N"
			End If
		End If
	End If
	'héritage
	If (Instr(droits, "(CI)") <> 0 Or Instr(droits, "(OI)") <> 0 Or Instr(droits, "(IO)") <> 0 ) Then
		tableau(2)="O"
	End If
End sub

'permet de déterminer si on est sur une ligne contenant (special access:)
Function compteur2Points(chaine)
	Dim cpt, chaineTmp, i 'indice
	cpt = 0
	i=Instr(chaine, ":") 'on est sûr qu'il y en a au moins un sur la ligne et au maximum il y en a 2
	cpt = 1
	chaineTmp=right(chaine, len(chaine)-i)
	Do While (Instr(chaineTmp, ":") <> 0)
		i=Instr(chaineTmp, ":")
		cpt = cpt + 1
		chaineTmp=right(chaineTmp, len(chaineTmp)-i)
	Loop
	compteur2Points=cpt
End Function

Sub ouvertureCas0()
	For i=0 to Ubound(tableau)-1
		tableau(i)="-"
	Next
	chaineTotale = ""
	For i=0 to Ubound(tableau)-1
		chaineTotale=chaineTotale & tableau(i) & ";"
	Next
End Sub

Sub ouvertureCas1() 'fonction gardant le chemin précédent
	For i=1 to Ubound(tableau)-1
		tableau(i)="-"
	Next
	chaineTotale = ""
	For i=0 to Ubound(tableau)-1
		chaineTotale=chaineTotale & tableau(i) & ";"
	Next
End Sub

Sub fermetureTableau() 'fonction fermant le tableau càd le copiant dans le fichier
	For i = 0 to Ubound(tableau)-1
	   chaineLigne=chaineLigne & tableau(i) & ";"
	Next
	chaineLigne=chaineLigne & vbcrlf
	For i = 2 to Ubound(tableau)-1
		tableau(i) = "-"
	Next
	'WScript.echo chaineLigne
	'chaineTotale=chaineLigne & vbcrlf & chaineTotale 'chaine finale contenant tous les droits
End Sub

Sub ecritureSortie(chaineF)
	Set sortie = FSO.CreateTextFile("perms.txt")
	With sortie
	.writeLine chaineF
	End With
End Sub

 Conclusion

J'espère que ces programmes vont aider du monde car j'en ai vu pas mal qui galérait pour ce type de demande.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

08 janvier 2008 10:38:33 :
Réécriture du code

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CHIFFREMENT XOR PLUS ROBUSTE par dheroux
Source avec Zip CRYPTAGE MARANT par alpha5
Source avec Zip ACCÈS PAR MOT DE PASSE À FEUILLE EXCEL par mimiZanzan
Source avec Zip CRYPTER-DÉCRYPTER UN TEXTE - TEXTE CRYPTÉ UNIQUEMENT EN MAJ... par Saintache
Source avec Zip Source avec une capture FOLDER PROTECTION par hackoo

 Sources en rapport avec celle ci

ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
[OOBASIC] DIRLIST - FONCTION LISTE DES FICHIERS / RÉPERTOIRE... par pifou25
LISTER DOSSIER + SOUS DOSSIER + "PUBLICATION" TABLEAU HTML par Alexis28130
Source avec Zip Source .NET (Dotnet) CLASSE LISTE DE FICHIER RÉCURSIVE par elwingil
Source avec Zip RÉPÉRTOIRE TÉLÉPHONIQUE MODIFIABLE À PARTIR DE L'EXECUTABLE par Antitrust

Commentaires et avis

Commentaire de Chrysostome le 08/10/2007 10:00:23

Je l'ai lancé, et j'attends qu'il se termine. D'autres part, il manque le fichier showACLS.exe. Je pars à sa recherche sur le net ou dans mon disque.

Commentaire de Chrysostome le 08/10/2007 10:08:38

Vu le temps qu'il met, un vbs d'arrêt serait bienvenu. Après recherche, showACLS.exe appartient au:
Microsoft Windows NT Workstation 4.0 Édition Développeur
Microsoft Windows NT Server 4.0 Standard Edition
c'est à dire pas au commun des utilisateurs.
Dommage parcequ'il m'aurait fait gagné beaucoup de temps en clientèle.

Commentaire de BefaDuDesert le 08/10/2007 12:13:16

Il fait également parti de Windows Server 2003 Resource Kit Tools.

Commentaire de linnell le 28/01/2008 15:57:42

faut il changer quelque chose dans le script pour le faire fonctionner ?

Commentaire de BefaDuDesert le 28/01/2008 17:18:35

Je viens de finaliser la seconde version qui fonctionne sans le showACLS.exe. Un peu de patience je l'uploade demain. Je suis en train de faire le manuel utilisateur.

Commentaire de yco44 le 19/11/2008 15:59:13

Bonjour,

A quoi correspond OI CI IO :F :R (right je présume) mais les autres ...?

MErci

C:\Program Files\Internet Explorer\fr-fr BUILTIN\Utilisateurs:R
                                         BUILTIN\Utilisateurs:(OI)(CI)(IO)(acc¦s sp,cialÿ:)

                                                                          GENERIC_READ
                                                                          GENERIC_EXECUTE

                                         BUILTIN\Utilisateurs avec pouvoir:C
                                         BUILTIN\Utilisateurs avec pouvoir:(OI)(CI)(IO)C
                                         BUILTIN\Administrateurs:F
                                         BUILTIN\Administrateurs:(OI)(CI)(IO)F
                                         AUTORITE NT\SYSTEM:F
                                         AUTORITE NT\SYSTEM:(OI)(CI)(IO)F
                                         POSTEJST2\adminst:F
                                         CREATEUR PROPRIETAIRE:(OI)(CI)(IO)F

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Récupérer la liste des fichiers .gif dans un répertoire [ par hub ] Salut à tous,Comment récupérer la liste des fichiers d'un répertoire (en les filtrant).En effet, je souhaiterais récupérer dans un tableau tous les no liste des répertoire avec FTP [ par djof22 ] Salut à tous,je suis en stage et j'ai un problème assez urgentJe fais un logiciel de FTP(pour AS400). Tout va très bien sauf que pour lister tous les Fichiers en PDF [ par zebre ] je voudrai mettre dans un répertoire la liste des fichiers que je récupère au format pdf.je vous explique:je récupère la liste des fichiers contenus d .net lister les droits d'accès d'un répertoire et sous répertoire [ par aaymon888 ] Bonjour,Je désire lister les droits d'accès d'un répertoire et sous répertroires.Mais je ne sais pas comment lire les les droits d'accès.c'est impossi changer les droits sur un répertoire [ par Thanos_the_yopper ] voila mon probleme :j'ai une appli qui doit ecrire un fichier ... le probleme c'est que si on se connecte sur Win2000 ou XP et que la personne n'a pas Enumération des droits et groupes sur un répertoire [ par didierlaroche ] Bonjour à tous,Je cherche à faire un état récapitulatif des droits par rapport aux groupes et/ou utilisateurs de Windows NT sur un répertoire.Le but é Récuperer la liste des fichiers d'un répertoire internet [ par oxboz ] Salut ... Je suis d&#233;butant en C# ,(2 semaines de pratique) et j'aimerai r&#233;cup&#233;rer la liste des fichiers d'un r&#233;pertoire sur le net Liste de fichiers et sous-répertoire dans feuille Excel [ par jr10 ] Bonjour, Pour faire cette liste, Je dois plutôt utiliser - DIR - Ou FileSearch et compagnie Merci de tout coup de main car j'ai du mal à démarre Liste de fichiers et sous-répertoire dans feuille Excel [ par jr10 ] Bonjour, Pour faire cette liste, Je dois plutôt utiliser - DIR - Ou FileSearch et compagnie Merci de tout coup de main car j'ai du mal à démarre droits sur un répertoire [ par pricrot ] Bonjour J'souhaite créer des répertoire au nom ( de connexion) de chaque utilisateur. Mais j'ai un gros problème. J'ai bien fait le script qui me pe


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,806 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales