Guest User

Untitled

a guest
Oct 29th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <Windows.h>
  4. #include <Winldap.h>
  5. #include <plog/Log.h>
  6. #include <string>
  7.  
  8. #ifdef UNICODE
  9. typedef std::wstring string_type;
  10. #define CONSOLE_OUT std::wcout
  11. #define CONSOLE_IN std::wcin
  12. #define CONSOLE_ERR std::wcerr
  13. #else
  14. typedef std::string string_type;
  15. #define CONSOLE_OUT std::cout
  16. #define CONSOLE_IN std::cin
  17. #define CONSOLE_ERR std::cerr
  18. #endif
  19.  
  20. int main()
  21. {
  22. SEC_WINNT_AUTH_IDENTITY sec;
  23. string_type hostName = TEXT("192.168.1.49");
  24. string_type domain = TEXT("WIN-49MT1TDDGOC.darksorrow.com");
  25. string_type userName = TEXT("darksorrow\ds");
  26. string_type password = TEXT("darksorrow@1234567890");
  27. PLDAP ld = nullptr;
  28. int ldapReturnCode;
  29. CONSOLE_OUT << TEXT("Hello World!n");
  30. plog::init(plog::error, "error.dat", 1048576, 3); //1 M.B.
  31. ld = ldap_init(const_cast<PWSTR>(hostName.c_str()), LDAP_PORT);
  32.  
  33. if (ld == nullptr)
  34. {
  35. LOG_ERROR << ldap_err2string(LdapGetLastError());
  36. CONSOLE_OUT << ldap_err2string(LdapGetLastError());
  37. }
  38. const int version = LDAP_VERSION3;
  39. ldapReturnCode = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, std::addressof(version));
  40. if (ldapReturnCode not_eq LDAP_SUCCESS)
  41. {
  42. LOG_ERROR << ldap_err2string(ldapReturnCode);
  43. CONSOLE_OUT << ldap_err2string(ldapReturnCode);
  44. }
  45. ldapReturnCode = ldap_connect(ld, NULL);
  46. if (ldapReturnCode not_eq LDAP_SUCCESS)
  47. {
  48. LOG_ERROR << ldap_err2string(ldapReturnCode);
  49. CONSOLE_OUT << ldap_err2string(ldapReturnCode);
  50. }
  51. PWSTR dn = nullptr;
  52.  
  53. sec.Domain = (unsigned short *) domain.data();
  54. sec.DomainLength = domain.length();
  55. sec.User = (unsigned short *) userName.data();
  56. sec.UserLength = userName.length();
  57. sec.Password = (unsigned short *) password.data();
  58. sec.PasswordLength = password.length();
  59. sec.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
  60.  
  61. CONSOLE_OUT << domain << std::endl;
  62. CONSOLE_OUT << userName << std::endl;
  63. CONSOLE_OUT << password << std::endl;
  64.  
  65. ldapReturnCode = ldap_bind_s(ld, dn, (PWCHAR)std::addressof(sec), LDAP_AUTH_NEGOTIATE);
  66. if (ldapReturnCode not_eq LDAP_SUCCESS)
  67. {
  68. LOG_ERROR << ldap_err2string(ldapReturnCode);
  69. CONSOLE_OUT << ldap_err2string(ldapReturnCode);
  70. }
  71. else
  72. CONSOLE_OUT << "Authentication Successn";
  73. ldap_unbind(ld);
  74. return EXIT_SUCCESS;
  75. }
Add Comment
Please, Sign In to add comment