any way to remove password from a dwg

any way to remove password from a dwg

Anonymous
Not applicable
7,463 Views
8 Replies
Message 1 of 9

any way to remove password from a dwg

Anonymous
Not applicable

I want to remove password from dwgs whose password is know.  I can open these dwgs by known pasword, but I can't find a way to save them without password.

 

        SecurityParams secParams;
        {
            secParams.cbSize = 48;
            secParams.ulFlags = 1;
            secParams.ulProvType = 1;
            secParams.ulAlgId = 26625;
            secParams.ulKeyLength = 40;
            secParams.wszPassword = szPassword;//if I give NULL to this param, the "saveAs" method crushes.
            secParams.wszProvName = _T("Microsoft Base Cryptographic Provider v1.0");
        }

     es = pDb->saveAs(szFileName,&secParams);// I want to remove their passsword

 

0 Likes
Accepted solutions (1)
7,464 Views
8 Replies
Replies (8)
Message 2 of 9

owenwengerd
Advisor
Advisor

Pass NULL for the second argument to saveAs().

--
Owen Wengerd
ManuSoft
0 Likes
Message 3 of 9

Anonymous
Not applicable

thanks, but are you sure? I tried the following code,  it dosen't work. The password of the dwg still exists.

          

             AcDbDatabase* pDb = new AcDbDatabase(false);
            Acad::ErrorStatus es = pDb->readDwgFile(iterS->c_str(),_SH_DENYWR,false,szOldPassword);
            if (Acad::eOk == es)
            {
                if (_tcscmp(szPassword,_T("")) == 0)
                {
                    es = pDb->saveAs(iterS->c_str(),NULL);
                }
                else
                {
                    es = pDb->saveAs(iterS->c_str(),&secParams);
                }
                
                if (Acad::eOk == es ) ++nCount;
            }

0 Likes
Message 4 of 9

Alexander.Rivilis
Mentor
Mentor

Try:

secParams.wszPassword =_T("");

 

 

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 5 of 9

Anonymous
Not applicable

CAD enters dead loop, If I pass an empty string(not null) .

0 Likes
Message 6 of 9

Alexander.Rivilis
Mentor
Mentor

What about save dwg with other filename without password?

There is a method AcDbDatabase::setSecurityParams. Try pass NULL to it.

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 7 of 9

Anonymous
Not applicable

I tried, "save as" with a new file name, but the new dwg still has the same password from the old dwg.

0 Likes
Message 8 of 9

Alexander.Rivilis
Mentor
Mentor
Accepted solution

OK. Working code:

static bool RemovePasswordProtection(AcDbDatabase *pDb)
{
    const SecurityParams *parSecOld = pDb->cloneSecurityParams();
    SecurityParams parSecNew = *parSecOld;
    parSecNew.ulFlags = 0; // Clear all security flags
    return (pDb->setSecurityParams(&parSecNew));
}
// Main function remove password from current drawing
static void PWDRemovePwd(void)
{
    AcDbDatabase *pCurDb  = acdbCurDwg();
    AcApDocument *pCurDoc = curDoc();
    RemovePasswordProtection(pCurDb);
    pCurDb->saveAs(pCurDoc->fileName(),NULL);
}

 

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes
Message 9 of 9

Anonymous
Not applicable

thanks so much. It did work.  I noticed that cad  automatically remembers password , but found no way to remove this mechanism.

0 Likes