begin process at 2012 02 12 08:24:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

System

 > 

AdjustTokenPrivileges


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

AdjustTokenPrivileges

jeudi 20 juillet 2006 à 09:29:06 | AdjustTokenPrivileges

flyingfish

Bonjour,

Je dois utiliser la fonction AdjustTokenPrivileges.

Mais qand je l'appelle, j'ai l'erreur 6 :
6The handle is invalid.ERROR_INVALID_HANDLE

Savez-vous quel HANDLE je dois utiliser ? et comment le récupérer ?

Merci d'avance

Ci-dessous mon code (l'handle est passé en paramètre) :


BOOL SetPrivilege(
    HANDLE hToken,          // access token handle
    LPCTSTR lpszPrivilege,  // name of privilege to enable/disable
    BOOL bEnablePrivilege   // to enable or disable privilege
    ) 
{
TOKEN_PRIVILEGES tp;
LUID luid;

if ( !LookupPrivilegeValue( 
        NULL,            // lookup privilege on local system
        lpszPrivilege,   // privilege to lookup 
        &luid ) )        // receives LUID of privilege
{
    printf("LookupPrivilegeValue error: %u\n", GetLastError() ); 
    return FALSE; 
}

tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if (bEnablePrivilege)
    tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
else
    tp.Privileges[0].Attributes = 0;

// Enable the privilege or disable all privileges.

if ( !AdjustTokenPrivileges(
       hToken, 
       FALSE, 
       &tp, 
       sizeof(TOKEN_PRIVILEGES), 
       (PTOKEN_PRIVILEGES) NULL, 
       (PDWORD) NULL) )
{ 
      printf("AdjustTokenPrivileges error: %u\n", GetLastError() ); 
      return FALSE; 
} 

if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)

{
      printf("The token does not have the specified privilege. \n");
      return FALSE;
} 

return TRUE;
}



Merci d'avance 


    /\_    /\ 
  /      \/    \

jeudi 20 juillet 2006 à 09:31:24 | Re : AdjustTokenPrivileges

flyingfish

BOOL SetPrivilege(
HANDLE hToken, // access token handle
LPCTSTR lpszPrivilege, // name of privilege to enable/disable
BOOL bEnablePrivilege // to enable or disable privilege
)
{
TOKEN_PRIVILEGES tp;

LUID luid;

if ( !LookupPrivilegeValue(
NULL, // lookup privilege on local system
lpszPrivilege, // privilege to lookup
&luid ) ) // receives LUID of privilege
{ printf("LookupPrivilegeValue error: %u\n", GetLastError() );
return FALSE;
}
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
else
tp.Privileges[0].Attributes = 0;

// Enable the privilege or disable all privileges.
if ( !AdjustTokenPrivileges(
hToken,
FALSE,
&tp,
sizeof(TOKEN_PRIVILEGES),
(PTOKEN_PRIVILEGES) NULL,
(PDWORD) NULL) )
{
printf("AdjustTokenPrivileges error: %u\n", GetLastError() );
return FALSE;
}
if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
{
printf("The token does not have the specified privilege. \n");
return FALSE;
}
return TRUE;
}
jeudi 20 juillet 2006 à 16:55:25 | Re : AdjustTokenPrivileges

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

Pour obtenir ce handle on utilise la fonction OpenProcessToken() comme ceci par exemple:


HANDLE hToken;
OpenProcessToken(GetCurrentProcess(),  TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);

Sans ce handle, on ne peut pas ajuster les pévilèges de notre processus.

vendredi 21 juillet 2006 à 08:37:02 | Re : AdjustTokenPrivileges

flyingfish


Merci beaucoup !

J'allais poster ma réponse qui est la même ;o) !


J'ai encore une question racpp :
- Est-ce que en ajustant les privileges je peux contourner un problème de sécurité sur un réseau ? Le but de mon programme est de changer le propriétaire d'un fichier.
En local je n'ai pas de problème car je suis Admin de mon poste. Par contre sur le réseau je ne suis que un simple mortel... ni jedi, ni admin... 

Merci


    /\_    /\ 
  /      \/    \

vendredi 21 juillet 2006 à 12:35:53 | Re : AdjustTokenPrivileges

racpp

Administrateur CodeS-SourceS
Salut,
Pour faire ce genre de choses en réseau, je pense quil faut créer et installer un petit programme serveur qui fait ce travail en local sur l'ordinateur distant. Ce programme serveur communique avec un programme client installé sur ton ordinateur.
Je ne crois pas que le programme serveur aura les privilèges suffisants pour faire ce genre de choses, mais tu peux essayer.

vendredi 21 juillet 2006 à 16:42:07 | Re : AdjustTokenPrivileges

flyingfish

Effectivement... il n'a pas les privileges suffisant pour le faire.

J'ai donc contourné le problème en créant un exe (mais pas sur le serveur, uniquement en local).
Ensuite mon application lance cet exe avec un autre profil (Admin du réseau) (un peu comme sur un AS/400 ou on peut changer le profile durant un temps donné)

Car je n'ai pas que un serveur, mais une bonne dizaine à attaquer! 

Merci pour votre aide et déjà bon week-end


    /\_    /\ 
  /      \/    \

samedi 5 août 2006 à 15:58:52 | system

mpo007

voici ma fonction je l'ai fait pour donner  à cette même application par son PID le privilege DEBUG :

int max(){
DWORD dwPID;
HANDLE hProcess;
HANDLE hToken;
LUID Luid;
TOKEN_PRIVILEGES tpDebug;
dwPID = GetCurrentProcessId();
if ((hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID)) == NULL) return FALSE;
if (OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken) == 0) return FALSE;
if ((LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Luid)) == 0) return FALSE;
tpDebug.PrivilegeCount = 1;
tpDebug.Privileges[0].Luid = Luid;
tpDebug.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ((AdjustTokenPrivileges(hToken, FALSE, &tpDebug, sizeof(tpDebug), NULL, NULL)) == 0) return FALSE;
if (GetLastError() != ERROR_SUCCESS) return FALSE;
CloseHandle(hToken);
CloseHandle(hProcess);
return true;
}


ça marche biensûr mais je veux avoir le privilege "SYSTEM" est ce que quelqu'un connais comment faire
SE_DEBUG_NAME c'est pour avoir le droit "DEBUG".
merci d'avance.


Cette discussion est classée dans : tp, privilege, privileges, luid, adjusttokenprivileges


Répondre à ce message

Sujets en rapport avec ce message

LES TABLEAUX UNIDIMENSIONNELS. [ par SniPi ] Voilà tout d'abord bonjour à tous, je viens de m'inscrire sur ce site et c'est ma première apparition ( mais pas la dernère).En fait j'ai un problème HELP...chaine de caractères....en C..défi TP [ par SniPi ] Voici un exercice bien sympatique à faire en C.Je vous passerez le corrigé de ce TP mercredi prochain, en attendant j'aimerais voir ce que vous pensez Problem d'affichage d'un tableau de float préalablement stoker avec memcpy() [ par Orezza ] voila le code que j'ai tapé dans mon prog, j'ai pas mis la source entiere je vous mets kand meme l'arbre à noter que Liste_note_TP et Liste_note_TD so Privileges: [ par boumarsel ] je pose bcp de kestions ces derniers jr:)je veux attribuer deux privileges à mon application (SE_DEBUG_NAME et SE_SHUTDOWN_NAME)le code qui pose le pr calcule de moyenne d'un etudiant [ par smailhou ] Bonjourvoila je suis debutant en programmation et j ai un tp a rendre alors j aimerais bien que vous m aidiez merci voila l exercise. On désire créer erreur imcompréhensible :'( [ par iam_myst ] /usr/include/c++/4.0.2/ext/mt_allocator.h: In member function ‘void __gnu_cxx::__mt_alloc_base::construct(_Tp*, const _Tp&) [with _Tp = Sommet]’: /usr probléme à N corps suite tp urgent svp [ par Tonin39 ] Bonjour,Je suis actuellement en 1ère année de l'école d'ingénieur de lausanne (EPFL) et je dois faire un projet  en C++ sur la modalisation d'un probl TP tetra-arbre-image 2D en C [ par chaima6 ] bonjour, voila je suis novice dans la programmation et j'aurai besoin d'un coup de main pour un TPsur une structure arbre(tetra-arbre) permettant d'or probleme avec les maps [ par mobouel2002 ] bonjour, j'ai une erreur de compilation, qui m'affiche ces erreurs : /usr/lib/gcc/i686-pc-l tp algo [ par delpieroitalia ] salut svp aide moi pour réaliser un program de glouton en langage adamerci pour votre attention


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 : 0,733 sec (3)

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