Начал глядеть.
аналог clntrust.exe это компиленый SourceSquidTrust.ahk
запускаем на станции и он слушает на порту 6399 (TCP)
мона телнетом дергать , в ответ на агрументы отдаюццо
на 3: Windows User Name
на 2: Computer Name
на 1: NW UserName (как пишут должно быть клиент)
по 1 отдается имя без контекста
смотрим исходнег
- Код: Выделить всё
;;;;;;;;;;;;;;; 1 sends netware username ;;;;;;;;;;;;;;;;;;;;;;;;;;;
if ShowReceived = 1
{
; Open NetWare utility DLL
hModule := DllCall("LoadLibrary", "str", "calwin32.Dll")
if !hModule
{
MsgBox Error: Can't load calwin32 DLL. are you SURE the Novell client is on this machine?
Exit
}
; initializes NWCallsInit
nwrc :=DllCall("calwin32\NWCallsInit", UInt, 0, UInt, 0 )
If nwrc <> 0
{
MsgBox Error: NWCallsInit was not successful. That's all I know.
Exit
}
; Get primary connection ID
DllCall("calwin32\NWGetPrimaryConnectionID", "*UShort", ConnID, "Int")
; Get Connection Number
DllCall("calwin32.dll\NWGetConnectionNumber", "UShort", ConnID, "*UShort", ConnNum, "Int")
; Get Connection Information
VarSetCapacity(UserName, 48)
DllCall("calwin32.dll\NWGetConnectionInformation", "UShort", ConnID, "UShort", ConnNum, "Str", UserName)
SendText = %UserName%`n
SentOK := SendData(socket, SendText)
CloseSocket(socket)
;Clear ShowReceived
ShowReceived =
}
Все ничего но как быть если юзвери одноименные в разных OU ?
На раз допиливается на отдачу fdn. например заюзать полученный ранее ConnID так (имхо коннекшен стейт биндери можно не обрабатывать хотя для любителей можно и оставить
NWLlocaleconv(&lconvInfo);
NWInitUnicodeTables(lconvInfo.country_id, lconvInfo.code_page);
NWDSCreateContextHandle(&contextHandle);
NWDSGetContext(
flags |= DCV_TYPELESS_NAMES;
flags &= ~DCV_CANONICALIZE_NAMES;
NWDSSetContext(
/* Context Handle */ contextHandle,
/* Key */ DCK_FLAGS,
/* Set Flag Value */ &flags);
NWDSMapIDToName(
/* context handle */ contextHandle,
/* connection habdle */ connHandle,
/* object ID*/ objectId,
/* object name */ buffer);
Как я смотрел, далее используется на стороне сквида некий хелпер который рыщет в LDAP и проверяет на принадлежность юзера группе и все такое.
На перле. Пилится все что душе угодно. Я бы сделал выдачу fdn и добавил бы тупейшее шифрование от сильно продвинутых юзверей. Ибо в текстовом редакторе поправить SourceSquidTrust.ahk и собрать своего демона с помощью SourceSquidTrust.ahk
это раз плюнуть. который допустим всегда отдает username админа
)))
В общем предлагается довести этот конструктор до ума.