Changeset 116


Ignore:
Timestamp:
Feb 2, 2008, 7:30:01 AM (17 years ago)
Author:
Paul Smedley
Message:

Encrypt samba password in Netdrive control files

Location:
branches/samba-3.0/source/ndpsmb
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified branches/samba-3.0/source/ndpsmb/ndpsmb.c

    r111 r116  
    150150        {ND_PROP_STRING, 0, "USER", "guest"},
    151151        {ND_PROP_STRING, 0, "PASSWORD", ""},
     152        {ND_PROP_STRING, 0, "SPASSWORD",  ""},
    152153        {ND_PROP_STRING, 0, "MASTER", "WORKGROUP"},
    153154        { ND_PROP_ULONG, 0, "MASTERTYPE", "1"},
     
    376377}
    377378
     379static unsigned char fromhex (char c)
     380{
     381    if ('0' <= c && c <= '9')
     382    {
     383         return c - '0';
     384    }
     385   
     386    if ('A' <= c && c <= 'F')
     387    {
     388         return c - 'A';
     389    }
     390   
     391    if ('a' <= c && c <= 'f')
     392    {
     393         return c - 'a';
     394    }
     395   
     396    return 0;
     397}
     398
     399static char tohex (unsigned char b)
     400{
     401    b &= 0xF;
     402   
     403    if (b <= 9)
     404    {
     405        return b + '0';
     406    }
     407   
     408    return 'A' + (b - 0xA);
     409}
     410
     411static void decryptPassword (const char *pszCrypt, char *pszPlain)
     412{
     413    /* A simple "decryption", character from the hex value. */
     414    const char *s = pszCrypt;
     415    char *d = pszPlain;
     416   
     417    while (*s)
     418    {
     419        *d++ = (char)((fromhex (*s++) << 4) + fromhex (*s++));
     420    }
     421   
     422    *d++ = 0;
     423}
     424
     425static void encryptPassword (const char *pszPlain, char *pszCrypt)
     426{
     427    /* A simple "encryption" encode each character as hex value. */
     428    const char *s = pszPlain;
     429    char *d = pszCrypt;
     430   
     431    while (*s)
     432    {
     433        *d++ = tohex ((*s) >> 4);
     434        *d++ = tohex (*s);
     435        s++;
     436    }
     437   
     438    *d++ = 0;
     439}
    378440
    379441/* accept parameters in form
     
    386448        const unsigned char * q = NULL;
    387449        HPIPE pipe;
     450        int defaultPassword = 1;
    388451
    389452        pRes->memlen = 1 << 18;
     
    429492        {
    430493                StrNCpy(pRes->srv.password, q, sizeof(pRes->srv.password) - 1);
    431         }
     494                defaultPassword = 0;
     495        }
     496
     497        t = 0, q = NULL;
     498        rc = ph->fsphQueryStringProperty (pRes->properties, "SPASSWORD", &q, &t);
     499        if (   rc == NO_ERROR
     500            && *q != '\0'
     501            && defaultPassword)
     502        {
     503            char p[1024];
     504            p[0] = 0;
     505       
     506            decryptPassword (q, p);
     507       
     508            if (*p)
     509            {
     510                StrNCpy(pRes->srv.password, p, sizeof(pRes->srv.password) - 1);
     511       
     512                /* clear the plain password */
     513                ph->fsphSetProperty (pRes->properties, "PASSWORD", "");
     514            }
     515        }
     516        else
     517        {
     518            char c[1024];
     519            encryptPassword (pRes->srv.password, c);
     520       
     521            ph->fsphSetProperty (pRes->properties, "SPASSWORD", c);
     522       
     523            // clear the plain password
     524            ph->fsphSetProperty (pRes->properties, "PASSWORD", "");
     525        }
    432526
    433527        t = 0, q = NULL;
  • TabularUnified branches/samba-3.0/source/ndpsmb/rc/rc.dlg

    r110 r116  
    3131                        DT_BOTTOM
    3232        ENTRYFIELD      "", ENT_PASS, 67, 70, 100, 8, ES_MARGIN | ES_UNREADABLE
     33        ENTRYFIELD      "", ENT_SPASS, 0, 0, 0, 0, ES_MARGIN |
     34                        ES_UNREADABLE | NOT WS_TABSTOP | NOT WS_VISIBLE
    3335
    3436        RTEXT           "Master", LBL_MASTER, 5, 57, 30, 10,
  • TabularUnified branches/samba-3.0/source/ndpsmb/rc/rc.h

    r110 r116  
    2424#define LBL_EASUPPORT               1021
    2525#define CHK_EASUPPORT               1022
     26#define ENT_SPASS                   1023
  • TabularUnified branches/samba-3.0/source/ndpsmb/rc/rc.rc

    r110 r116  
    145145RCDATA (DLG_ID + 11)
    146146{
     147    ENT_SPASS, PARMTYPE_STRING, 1L, 255L, "spassword", "%s", ""
     148}
     149
     150RCDATA (DLG_ID + 12)
     151{
    147152    0
    148153}
Note: See TracChangeset for help on using the changeset viewer.